summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/anim_mon_front_pics.c832
-rw-r--r--src/apprentice.c135
-rw-r--r--src/battle_ai_script_commands.c17
-rw-r--r--src/battle_ai_switch_items.c8
-rw-r--r--src/battle_anim.c1340
-rw-r--r--src/battle_anim_80A5C6C.c58
-rw-r--r--src/battle_anim_80A9C70.c18
-rw-r--r--src/battle_anim_80D51AC.c97
-rw-r--r--src/battle_anim_sound_tasks.c26
-rw-r--r--src/battle_anim_utility_funcs.c1060
-rw-r--r--src/battle_arena.c926
-rw-r--r--src/battle_bg.c121
-rw-r--r--src/battle_controller_link_opponent.c65
-rw-r--r--src/battle_controller_link_partner.c50
-rw-r--r--src/battle_controller_opponent.c64
-rw-r--r--src/battle_controller_player.c79
-rw-r--r--src/battle_controller_player_partner.c53
-rw-r--r--src/battle_controller_recorded_opponent.c56
-rw-r--r--src/battle_controller_recorded_player.c48
-rw-r--r--src/battle_controller_safari.c35
-rw-r--r--src/battle_controller_wally.c53
-rw-r--r--src/battle_controllers.c78
-rw-r--r--src/battle_dome.c406
-rw-r--r--src/battle_factory.c4397
-rw-r--r--src/battle_factory_screen.c4113
-rw-r--r--src/battle_frontier_1.c118
-rw-r--r--src/battle_gfx_sfx_util.c17
-rw-r--r--src/battle_interface.c119
-rw-r--r--src/battle_intro.c21
-rw-r--r--src/battle_main.c147
-rw-r--r--src/battle_message.c118
-rw-r--r--src/battle_palace.c188
-rw-r--r--src/battle_pike.c1642
-rw-r--r--src/battle_pyramid.c1940
-rw-r--r--src/battle_pyramid_bag.c61
-rw-r--r--src/battle_records.c4
-rw-r--r--src/battle_script_commands.c211
-rw-r--r--src/battle_setup.c32
-rw-r--r--src/battle_tent.c279
-rw-r--r--src/battle_tower.c2739
-rw-r--r--src/battle_transition.c30
-rw-r--r--src/battle_util.c10
-rw-r--r--src/berry.c93
-rw-r--r--src/berry_blender.c57
-rw-r--r--src/berry_fix_program.c22
-rw-r--r--src/berry_tag_screen.c8
-rw-r--r--src/bg.c1195
-rw-r--r--src/bike.c12
-rw-r--r--src/braille_puzzles.c9
-rw-r--r--src/bug.c484
-rw-r--r--src/cable_club.c18
-rw-r--r--src/clear_save_data_screen.c156
-rw-r--r--src/contest.c29
-rw-r--r--src/contest_ai.c2
-rw-r--r--src/contest_painting.c8
-rw-r--r--src/credits.c22
-rw-r--r--src/dark.c169
-rw-r--r--src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h1063
-rw-r--r--src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h1063
-rw-r--r--src/data/battle_moves.h8524
-rw-r--r--src/data/decoration/description.h8
-rw-r--r--src/data/decoration/header.h9
-rw-r--r--src/data/decoration/icon.h11
-rw-r--r--src/data/decoration/tilemaps.h9
-rw-r--r--src/data/decoration/tiles.h5
-rwxr-xr-xsrc/data/field_event_obj/base_oam.h5
-rwxr-xr-xsrc/data/field_event_obj/berry_tree_graphics_tables.h6
-rwxr-xr-xsrc/data/field_event_obj/event_object_anims.h5
-rwxr-xr-xsrc/data/field_event_obj/event_object_graphics.h7
-rwxr-xr-xsrc/data/field_event_obj/event_object_graphics_info.h5
-rwxr-xr-xsrc/data/field_event_obj/event_object_graphics_info_pointers.h5
-rwxr-xr-xsrc/data/field_event_obj/event_object_pic_tables.h5
-rwxr-xr-xsrc/data/field_event_obj/event_object_subsprites.h5
-rwxr-xr-xsrc/data/field_event_obj/field_effect_object_template_pointers.h5
-rwxr-xr-xsrc/data/field_event_obj/field_effect_objects.h33
-rwxr-xr-xsrc/data/field_event_obj/movement_action_func_tables.h5
-rwxr-xr-xsrc/data/field_event_obj/movement_type_func_tables.h5
-rw-r--r--src/data/graphics/battle_terrain.h130
-rw-r--r--src/data/graphics/berries.h182
-rw-r--r--src/data/graphics/berry_fix.h24
-rw-r--r--src/data/graphics/decorations.h168
-rw-r--r--src/data/graphics/interface_pokeballs.h50
-rw-r--r--src/data/graphics/intro_scene.h54
-rw-r--r--src/data/graphics/items.h942
-rw-r--r--src/data/graphics/mail.h48
-rw-r--r--src/data/graphics/pokemon.h3208
-rw-r--r--src/data/graphics/rayquaza_scene.h102
-rw-r--r--src/data/graphics/slot_machine.h4
-rw-r--r--src/data/graphics/trainers.h376
-rw-r--r--src/data/item_icon_table.h817
-rw-r--r--src/data/items.h782
-rw-r--r--src/data/pokedex_orders.h1199
-rw-r--r--src/data/pokemon/base_stats.h5
-rw-r--r--src/data/pokemon/cry_ids.h5
-rw-r--r--src/data/pokemon/egg_moves.h5
-rw-r--r--src/data/pokemon/evolution.h5
-rw-r--r--src/data/pokemon/experience_tables.h5
-rw-r--r--src/data/pokemon/item_effects.h5
-rw-r--r--src/data/pokemon/level_up_learnset_pointers.h5
-rw-r--r--src/data/pokemon/level_up_learnsets.h5
-rw-r--r--src/data/pokemon/pokedex_entries.h4646
-rw-r--r--src/data/pokemon/pokedex_orders.h1195
-rw-r--r--src/data/pokemon/pokedex_text.h2321
-rw-r--r--src/data/pokemon/tmhm_learnsets.h5
-rw-r--r--src/data/pokemon/trainer_class_lookups.h332
-rw-r--r--src/data/pokemon_graphics/back_pic_coordinates.h881
-rw-r--r--src/data/pokemon_graphics/back_pic_table.h881
-rw-r--r--src/data/pokemon_graphics/footprint_table.h416
-rw-r--r--src/data/pokemon_graphics/front_pic_coordinates.h716
-rw-r--r--src/data/pokemon_graphics/front_pic_table.h887
-rw-r--r--src/data/pokemon_graphics/palette_table.h880
-rw-r--r--src/data/pokemon_graphics/shiny_palette_table.h880
-rw-r--r--src/data/text/item_descriptions.h33
-rw-r--r--src/data/text/trainer_class_names.h137
-rw-r--r--src/data/trainer_graphics/back_pic_tables.h19
-rw-r--r--src/data/trainer_graphics/front_pic_anims.h192
-rw-r--r--src/data/trainer_graphics/front_pic_tables.h8
-rw-r--r--src/data/trainer_parties.h1
-rw-r--r--src/data/trainers.h296
-rw-r--r--src/data2b.c5
-rw-r--r--src/daycare.c10
-rw-r--r--src/decompress.c9
-rw-r--r--src/decoration.c46
-rw-r--r--src/dewford_trend.c3
-rw-r--r--src/diploma.c25
-rw-r--r--src/dragon.c437
-rw-r--r--src/easy_chat.c1
-rw-r--r--src/effects_1.c2093
-rw-r--r--src/effects_2.c1197
-rw-r--r--src/egg_hatch.c24
-rw-r--r--src/electric.c438
-rw-r--r--src/event_object_movement.c423
-rw-r--r--src/evolution_graphics.c2
-rw-r--r--src/evolution_scene.c21
-rw-r--r--src/field_camera.c376
-rw-r--r--src/field_control_avatar.c60
-rw-r--r--src/field_door.c6
-rw-r--r--src/field_effect.c1066
-rwxr-xr-xsrc/field_effect_helpers.c327
-rwxr-xr-xsrc/field_message_box.c8
-rw-r--r--src/field_player_avatar.c1794
-rw-r--r--src/field_poison.c64
-rw-r--r--src/field_region_map.c22
-rw-r--r--src/field_specials.c352
-rw-r--r--src/field_tasks.c28
-rw-r--r--src/fieldmap.c8
-rw-r--r--src/fight.c1035
-rw-r--r--src/fire.c438
-rw-r--r--src/fldeff_cut.c1
-rw-r--r--src/fldeff_escalator.c132
-rw-r--r--src/fldeff_flash.c11
-rw-r--r--src/fldeff_groundshake.c7
-rw-r--r--src/fldeff_softboiled.c2
-rw-r--r--src/fldeff_strength.c2
-rw-r--r--src/fldeff_sweetscent.c31
-rw-r--r--src/fldeff_teleport.c19
-rw-r--r--src/flying.c328
-rw-r--r--src/fossil_specials.c803
-rw-r--r--src/frontier_util.c2847
-rw-r--r--src/ghost.c186
-rw-r--r--src/graphics.c1814
-rw-r--r--src/ground.c748
-rw-r--r--src/hall_of_fame.c44
-rw-r--r--src/hof_pc.c2
-rw-r--r--src/ice.c491
-rw-r--r--src/international_string_util.c208
-rw-r--r--src/intro.c28
-rw-r--r--src/intro_credits_graphics.c68
-rw-r--r--src/item.c11
-rw-r--r--src/item_icon.c5
-rwxr-xr-xsrc/item_menu.c40
-rw-r--r--src/item_menu_icons.c72
-rwxr-xr-xsrc/item_use.c6
-rw-r--r--src/learn_move.c8
-rw-r--r--src/librfu_stwi.c34
-rw-r--r--src/link.c4
-rw-r--r--src/link_rfu.c1748
-rw-r--r--src/list_menu.c6
-rw-r--r--src/load_save.c11
-rw-r--r--src/lottery_corner.c22
-rw-r--r--src/mail.c2
-rw-r--r--src/main.c2
-rw-r--r--src/main_menu.c64
-rw-r--r--src/map_name_popup.c236
-rw-r--r--src/match_call.c8
-rw-r--r--src/mauville_old_man.c4
-rw-r--r--src/menu.c150
-rw-r--r--src/menu_helpers.c8
-rw-r--r--src/metatile_behavior.c2
-rw-r--r--src/mon_markings.c10
-rw-r--r--src/money.c4
-rw-r--r--src/mossdeep_gym.c313
-rw-r--r--src/multiboot.c2
-rw-r--r--src/mystery_event_menu.c4
-rw-r--r--src/mystery_event_script.c1
-rw-r--r--src/naming_screen.c29
-rw-r--r--src/new_game.c29
-rw-r--r--src/normal.c970
-rw-r--r--src/option_menu.c4
-rw-r--r--src/overworld.c126
-rwxr-xr-xsrc/party_menu.c13
-rw-r--r--src/player_pc.c128
-rw-r--r--src/poison.c323
-rw-r--r--src/pokeball.c24
-rw-r--r--src/pokeblock.c78
-rw-r--r--src/pokeblock_feed.c43
-rw-r--r--src/pokedex.c1626
-rwxr-xr-xsrc/pokedex_area_screen.c720
-rwxr-xr-xsrc/pokedex_cry_screen.c511
-rw-r--r--src/pokemon.c2563
-rw-r--r--src/pokemon_animation.c804
-rw-r--r--src/pokemon_icon.c8
-rw-r--r--src/pokemon_size_record.c14
-rw-r--r--src/pokemon_storage_system.c32
-rw-r--r--src/pokemon_summary_screen.c80
-rw-r--r--src/post_battle_event_funcs.c93
-rw-r--r--src/psychic.c405
-rw-r--r--src/record_mixing.c707
-rw-r--r--src/recorded_battle.c1063
-rw-r--r--src/region_map.c23
-rw-r--r--src/reshow_battle_screen.c9
-rw-r--r--src/roamer.c59
-rw-r--r--src/rock.c878
-rw-r--r--src/rom6.c22
-rw-r--r--src/rom_8011DC0.c331
-rw-r--r--src/rom_8034C54.c5
-rw-r--r--src/rotating_gate.c219
-rw-r--r--src/rtc.c1
-rw-r--r--src/safari_zone.c36
-rw-r--r--src/save.c159
-rw-r--r--src/save_failed_screen.c165
-rw-r--r--src/save_location.c19
-rw-r--r--src/scanline_effect.c10
-rw-r--r--src/scrcmd.c24
-rw-r--r--src/script_menu.c1762
-rwxr-xr-xsrc/script_pokemon_util_80F87D8.c707
-rw-r--r--src/secret_base.c7
-rwxr-xr-xsrc/shop.c1043
-rw-r--r--src/slot_machine.c15
-rw-r--r--src/sprite.c100
-rw-r--r--src/start_menu.c33
-rw-r--r--src/starter_choose.c30
-rw-r--r--src/string_util.c8
-rw-r--r--src/strings.c547
-rw-r--r--src/text.c2828
-rw-r--r--src/text_window.c10
-rw-r--r--src/time_events.c2
-rw-r--r--src/title_screen.c21
-rw-r--r--src/trader.c2
-rw-r--r--src/trainer_pokemon_sprites.c4
-rw-r--r--src/trainer_see.c19
-rw-r--r--src/tv.c36
-rw-r--r--src/unk_81BAD84.c4
-rw-r--r--src/unk_pokedex_area_screen_helper.c19
-rw-r--r--src/unk_text_util_2.c102
-rw-r--r--src/unk_transition.c6
-rw-r--r--src/walda_phrase.c2
-rw-r--r--src/wallclock.c199
-rw-r--r--src/water.c442
-rw-r--r--src/wild_encounter.c12
-rw-r--r--src/window.c70
261 files changed, 68423 insertions, 30557 deletions
diff --git a/src/anim_mon_front_pics.c b/src/anim_mon_front_pics.c
index b30889a35..ba53ba193 100644
--- a/src/anim_mon_front_pics.c
+++ b/src/anim_mon_front_pics.c
@@ -1,424 +1,424 @@
#include "global.h"
-const u8 gMonFrontPic_CircledQuestionMark[] = INCBIN_U8("graphics/pokemon/anim_front_pics/circled_question_mark_front_pic.4bpp.lz");
+const u32 gMonFrontPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/anim_front_pics/circled_question_mark_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Bulbasaur[] = INCBIN_U8("graphics/pokemon/anim_front_pics/bulbasaur_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ivysaur[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ivysaur_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Venusaur[] = INCBIN_U8("graphics/pokemon/anim_front_pics/venusaur_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Charmander[] = INCBIN_U8("graphics/pokemon/anim_front_pics/charmander_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Charmeleon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/charmeleon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Charizard[] = INCBIN_U8("graphics/pokemon/anim_front_pics/charizard_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Squirtle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/squirtle_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Wartortle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wartortle_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Blastoise[] = INCBIN_U8("graphics/pokemon/anim_front_pics/blastoise_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Caterpie[] = INCBIN_U8("graphics/pokemon/anim_front_pics/caterpie_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Metapod[] = INCBIN_U8("graphics/pokemon/anim_front_pics/metapod_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Butterfree[] = INCBIN_U8("graphics/pokemon/anim_front_pics/butterfree_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Weedle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/weedle_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Kakuna[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kakuna_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Beedrill[] = INCBIN_U8("graphics/pokemon/anim_front_pics/beedrill_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Pidgey[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pidgey_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Pidgeotto[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pidgeotto_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Pidgeot[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pidgeot_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Rattata[] = INCBIN_U8("graphics/pokemon/anim_front_pics/rattata_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Raticate[] = INCBIN_U8("graphics/pokemon/anim_front_pics/raticate_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Spearow[] = INCBIN_U8("graphics/pokemon/anim_front_pics/spearow_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Fearow[] = INCBIN_U8("graphics/pokemon/anim_front_pics/fearow_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ekans[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ekans_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Arbok[] = INCBIN_U8("graphics/pokemon/anim_front_pics/arbok_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Pikachu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pikachu_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Raichu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/raichu_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Sandshrew[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sandshrew_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Sandslash[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sandslash_front_pic.4bpp.lz");
-const u8 gMonFrontPic_NidoranF[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nidoran_f_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Nidorina[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nidorina_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Nidoqueen[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nidoqueen_front_pic.4bpp.lz");
-const u8 gMonFrontPic_NidoranM[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nidoran_m_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Nidorino[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nidorino_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Nidoking[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nidoking_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Clefairy[] = INCBIN_U8("graphics/pokemon/anim_front_pics/clefairy_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Clefable[] = INCBIN_U8("graphics/pokemon/anim_front_pics/clefable_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Vulpix[] = INCBIN_U8("graphics/pokemon/anim_front_pics/vulpix_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ninetales[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ninetales_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Jigglypuff[] = INCBIN_U8("graphics/pokemon/anim_front_pics/jigglypuff_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Wigglytuff[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wigglytuff_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Zubat[] = INCBIN_U8("graphics/pokemon/anim_front_pics/zubat_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Golbat[] = INCBIN_U8("graphics/pokemon/anim_front_pics/golbat_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Oddish[] = INCBIN_U8("graphics/pokemon/anim_front_pics/oddish_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Gloom[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gloom_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Vileplume[] = INCBIN_U8("graphics/pokemon/anim_front_pics/vileplume_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Paras[] = INCBIN_U8("graphics/pokemon/anim_front_pics/paras_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Parasect[] = INCBIN_U8("graphics/pokemon/anim_front_pics/parasect_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Venonat[] = INCBIN_U8("graphics/pokemon/anim_front_pics/venonat_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Venomoth[] = INCBIN_U8("graphics/pokemon/anim_front_pics/venomoth_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Diglett[] = INCBIN_U8("graphics/pokemon/anim_front_pics/diglett_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Dugtrio[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dugtrio_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Meowth[] = INCBIN_U8("graphics/pokemon/anim_front_pics/meowth_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Persian[] = INCBIN_U8("graphics/pokemon/anim_front_pics/persian_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Psyduck[] = INCBIN_U8("graphics/pokemon/anim_front_pics/psyduck_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Golduck[] = INCBIN_U8("graphics/pokemon/anim_front_pics/golduck_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Mankey[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mankey_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Primeape[] = INCBIN_U8("graphics/pokemon/anim_front_pics/primeape_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Growlithe[] = INCBIN_U8("graphics/pokemon/anim_front_pics/growlithe_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Arcanine[] = INCBIN_U8("graphics/pokemon/anim_front_pics/arcanine_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Poliwag[] = INCBIN_U8("graphics/pokemon/anim_front_pics/poliwag_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Poliwhirl[] = INCBIN_U8("graphics/pokemon/anim_front_pics/poliwhirl_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Poliwrath[] = INCBIN_U8("graphics/pokemon/anim_front_pics/poliwrath_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Abra[] = INCBIN_U8("graphics/pokemon/anim_front_pics/abra_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Kadabra[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kadabra_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Alakazam[] = INCBIN_U8("graphics/pokemon/anim_front_pics/alakazam_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Machop[] = INCBIN_U8("graphics/pokemon/anim_front_pics/machop_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Machoke[] = INCBIN_U8("graphics/pokemon/anim_front_pics/machoke_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Machamp[] = INCBIN_U8("graphics/pokemon/anim_front_pics/machamp_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Bellsprout[] = INCBIN_U8("graphics/pokemon/anim_front_pics/bellsprout_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Weepinbell[] = INCBIN_U8("graphics/pokemon/anim_front_pics/weepinbell_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Victreebel[] = INCBIN_U8("graphics/pokemon/anim_front_pics/victreebel_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Tentacool[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tentacool_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Tentacruel[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tentacruel_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Geodude[] = INCBIN_U8("graphics/pokemon/anim_front_pics/geodude_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Graveler[] = INCBIN_U8("graphics/pokemon/anim_front_pics/graveler_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Golem[] = INCBIN_U8("graphics/pokemon/anim_front_pics/golem_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ponyta[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ponyta_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Rapidash[] = INCBIN_U8("graphics/pokemon/anim_front_pics/rapidash_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Slowpoke[] = INCBIN_U8("graphics/pokemon/anim_front_pics/slowpoke_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Slowbro[] = INCBIN_U8("graphics/pokemon/anim_front_pics/slowbro_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Magnemite[] = INCBIN_U8("graphics/pokemon/anim_front_pics/magnemite_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Magneton[] = INCBIN_U8("graphics/pokemon/anim_front_pics/magneton_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Farfetchd[] = INCBIN_U8("graphics/pokemon/anim_front_pics/farfetch_d_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Doduo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/doduo_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Dodrio[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dodrio_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Seel[] = INCBIN_U8("graphics/pokemon/anim_front_pics/seel_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Dewgong[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dewgong_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Grimer[] = INCBIN_U8("graphics/pokemon/anim_front_pics/grimer_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Muk[] = INCBIN_U8("graphics/pokemon/anim_front_pics/muk_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Shellder[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shellder_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Cloyster[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cloyster_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Gastly[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gastly_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Haunter[] = INCBIN_U8("graphics/pokemon/anim_front_pics/haunter_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Gengar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gengar_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Onix[] = INCBIN_U8("graphics/pokemon/anim_front_pics/onix_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Drowzee[] = INCBIN_U8("graphics/pokemon/anim_front_pics/drowzee_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Hypno[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hypno_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Krabby[] = INCBIN_U8("graphics/pokemon/anim_front_pics/krabby_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Kingler[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kingler_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Voltorb[] = INCBIN_U8("graphics/pokemon/anim_front_pics/voltorb_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Electrode[] = INCBIN_U8("graphics/pokemon/anim_front_pics/electrode_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Exeggcute[] = INCBIN_U8("graphics/pokemon/anim_front_pics/exeggcute_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Exeggutor[] = INCBIN_U8("graphics/pokemon/anim_front_pics/exeggutor_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Cubone[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cubone_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Marowak[] = INCBIN_U8("graphics/pokemon/anim_front_pics/marowak_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Hitmonlee[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hitmonlee_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Hitmonchan[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hitmonchan_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Lickitung[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lickitung_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Koffing[] = INCBIN_U8("graphics/pokemon/anim_front_pics/koffing_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Weezing[] = INCBIN_U8("graphics/pokemon/anim_front_pics/weezing_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Rhyhorn[] = INCBIN_U8("graphics/pokemon/anim_front_pics/rhyhorn_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Rhydon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/rhydon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Chansey[] = INCBIN_U8("graphics/pokemon/anim_front_pics/chansey_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Tangela[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tangela_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Kangaskhan[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kangaskhan_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Horsea[] = INCBIN_U8("graphics/pokemon/anim_front_pics/horsea_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Seadra[] = INCBIN_U8("graphics/pokemon/anim_front_pics/seadra_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Goldeen[] = INCBIN_U8("graphics/pokemon/anim_front_pics/goldeen_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Seaking[] = INCBIN_U8("graphics/pokemon/anim_front_pics/seaking_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Staryu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/staryu_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Starmie[] = INCBIN_U8("graphics/pokemon/anim_front_pics/starmie_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Mrmime[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mr_mime_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Scyther[] = INCBIN_U8("graphics/pokemon/anim_front_pics/scyther_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Jynx[] = INCBIN_U8("graphics/pokemon/anim_front_pics/jynx_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Electabuzz[] = INCBIN_U8("graphics/pokemon/anim_front_pics/electabuzz_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Magmar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/magmar_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Pinsir[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pinsir_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Tauros[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tauros_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Magikarp[] = INCBIN_U8("graphics/pokemon/anim_front_pics/magikarp_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Gyarados[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gyarados_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Lapras[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lapras_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ditto[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ditto_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Eevee[] = INCBIN_U8("graphics/pokemon/anim_front_pics/eevee_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Vaporeon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/vaporeon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Jolteon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/jolteon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Flareon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/flareon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Porygon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/porygon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Omanyte[] = INCBIN_U8("graphics/pokemon/anim_front_pics/omanyte_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Omastar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/omastar_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Kabuto[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kabuto_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Kabutops[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kabutops_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Aerodactyl[] = INCBIN_U8("graphics/pokemon/anim_front_pics/aerodactyl_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Snorlax[] = INCBIN_U8("graphics/pokemon/anim_front_pics/snorlax_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Articuno[] = INCBIN_U8("graphics/pokemon/anim_front_pics/articuno_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Zapdos[] = INCBIN_U8("graphics/pokemon/anim_front_pics/zapdos_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Moltres[] = INCBIN_U8("graphics/pokemon/anim_front_pics/moltres_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Dratini[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dratini_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Dragonair[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dragonair_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Dragonite[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dragonite_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Mewtwo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mewtwo_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Mew[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mew_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/anim_front_pics/bulbasaur_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ivysaur_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Venusaur[] = INCBIN_U32("graphics/pokemon/anim_front_pics/venusaur_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Charmander[] = INCBIN_U32("graphics/pokemon/anim_front_pics/charmander_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/charmeleon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Charizard[] = INCBIN_U32("graphics/pokemon/anim_front_pics/charizard_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Squirtle[] = INCBIN_U32("graphics/pokemon/anim_front_pics/squirtle_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Wartortle[] = INCBIN_U32("graphics/pokemon/anim_front_pics/wartortle_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Blastoise[] = INCBIN_U32("graphics/pokemon/anim_front_pics/blastoise_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Caterpie[] = INCBIN_U32("graphics/pokemon/anim_front_pics/caterpie_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Metapod[] = INCBIN_U32("graphics/pokemon/anim_front_pics/metapod_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Butterfree[] = INCBIN_U32("graphics/pokemon/anim_front_pics/butterfree_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Weedle[] = INCBIN_U32("graphics/pokemon/anim_front_pics/weedle_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Kakuna[] = INCBIN_U32("graphics/pokemon/anim_front_pics/kakuna_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Beedrill[] = INCBIN_U32("graphics/pokemon/anim_front_pics/beedrill_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Pidgey[] = INCBIN_U32("graphics/pokemon/anim_front_pics/pidgey_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/anim_front_pics/pidgeotto_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/anim_front_pics/pidgeot_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Rattata[] = INCBIN_U32("graphics/pokemon/anim_front_pics/rattata_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Raticate[] = INCBIN_U32("graphics/pokemon/anim_front_pics/raticate_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Spearow[] = INCBIN_U32("graphics/pokemon/anim_front_pics/spearow_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Fearow[] = INCBIN_U32("graphics/pokemon/anim_front_pics/fearow_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ekans[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ekans_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Arbok[] = INCBIN_U32("graphics/pokemon/anim_front_pics/arbok_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Pikachu[] = INCBIN_U32("graphics/pokemon/anim_front_pics/pikachu_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Raichu[] = INCBIN_U32("graphics/pokemon/anim_front_pics/raichu_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/anim_front_pics/sandshrew_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Sandslash[] = INCBIN_U32("graphics/pokemon/anim_front_pics/sandslash_front_pic.4bpp.lz");
+const u32 gMonFrontPic_NidoranF[] = INCBIN_U32("graphics/pokemon/anim_front_pics/nidoran_f_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Nidorina[] = INCBIN_U32("graphics/pokemon/anim_front_pics/nidorina_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/anim_front_pics/nidoqueen_front_pic.4bpp.lz");
+const u32 gMonFrontPic_NidoranM[] = INCBIN_U32("graphics/pokemon/anim_front_pics/nidoran_m_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Nidorino[] = INCBIN_U32("graphics/pokemon/anim_front_pics/nidorino_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Nidoking[] = INCBIN_U32("graphics/pokemon/anim_front_pics/nidoking_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Clefairy[] = INCBIN_U32("graphics/pokemon/anim_front_pics/clefairy_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Clefable[] = INCBIN_U32("graphics/pokemon/anim_front_pics/clefable_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Vulpix[] = INCBIN_U32("graphics/pokemon/anim_front_pics/vulpix_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ninetales[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ninetales_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/anim_front_pics/jigglypuff_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/anim_front_pics/wigglytuff_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Zubat[] = INCBIN_U32("graphics/pokemon/anim_front_pics/zubat_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Golbat[] = INCBIN_U32("graphics/pokemon/anim_front_pics/golbat_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Oddish[] = INCBIN_U32("graphics/pokemon/anim_front_pics/oddish_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Gloom[] = INCBIN_U32("graphics/pokemon/anim_front_pics/gloom_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Vileplume[] = INCBIN_U32("graphics/pokemon/anim_front_pics/vileplume_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Paras[] = INCBIN_U32("graphics/pokemon/anim_front_pics/paras_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Parasect[] = INCBIN_U32("graphics/pokemon/anim_front_pics/parasect_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Venonat[] = INCBIN_U32("graphics/pokemon/anim_front_pics/venonat_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Venomoth[] = INCBIN_U32("graphics/pokemon/anim_front_pics/venomoth_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Diglett[] = INCBIN_U32("graphics/pokemon/anim_front_pics/diglett_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/anim_front_pics/dugtrio_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Meowth[] = INCBIN_U32("graphics/pokemon/anim_front_pics/meowth_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Persian[] = INCBIN_U32("graphics/pokemon/anim_front_pics/persian_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Psyduck[] = INCBIN_U32("graphics/pokemon/anim_front_pics/psyduck_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Golduck[] = INCBIN_U32("graphics/pokemon/anim_front_pics/golduck_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Mankey[] = INCBIN_U32("graphics/pokemon/anim_front_pics/mankey_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Primeape[] = INCBIN_U32("graphics/pokemon/anim_front_pics/primeape_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Growlithe[] = INCBIN_U32("graphics/pokemon/anim_front_pics/growlithe_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Arcanine[] = INCBIN_U32("graphics/pokemon/anim_front_pics/arcanine_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Poliwag[] = INCBIN_U32("graphics/pokemon/anim_front_pics/poliwag_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/anim_front_pics/poliwhirl_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/anim_front_pics/poliwrath_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Abra[] = INCBIN_U32("graphics/pokemon/anim_front_pics/abra_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Kadabra[] = INCBIN_U32("graphics/pokemon/anim_front_pics/kadabra_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Alakazam[] = INCBIN_U32("graphics/pokemon/anim_front_pics/alakazam_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Machop[] = INCBIN_U32("graphics/pokemon/anim_front_pics/machop_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Machoke[] = INCBIN_U32("graphics/pokemon/anim_front_pics/machoke_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Machamp[] = INCBIN_U32("graphics/pokemon/anim_front_pics/machamp_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/anim_front_pics/bellsprout_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/anim_front_pics/weepinbell_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Victreebel[] = INCBIN_U32("graphics/pokemon/anim_front_pics/victreebel_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Tentacool[] = INCBIN_U32("graphics/pokemon/anim_front_pics/tentacool_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/anim_front_pics/tentacruel_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Geodude[] = INCBIN_U32("graphics/pokemon/anim_front_pics/geodude_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Graveler[] = INCBIN_U32("graphics/pokemon/anim_front_pics/graveler_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Golem[] = INCBIN_U32("graphics/pokemon/anim_front_pics/golem_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ponyta[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ponyta_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Rapidash[] = INCBIN_U32("graphics/pokemon/anim_front_pics/rapidash_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/anim_front_pics/slowpoke_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Slowbro[] = INCBIN_U32("graphics/pokemon/anim_front_pics/slowbro_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Magnemite[] = INCBIN_U32("graphics/pokemon/anim_front_pics/magnemite_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Magneton[] = INCBIN_U32("graphics/pokemon/anim_front_pics/magneton_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/anim_front_pics/farfetch_d_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Doduo[] = INCBIN_U32("graphics/pokemon/anim_front_pics/doduo_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Dodrio[] = INCBIN_U32("graphics/pokemon/anim_front_pics/dodrio_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Seel[] = INCBIN_U32("graphics/pokemon/anim_front_pics/seel_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Dewgong[] = INCBIN_U32("graphics/pokemon/anim_front_pics/dewgong_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Grimer[] = INCBIN_U32("graphics/pokemon/anim_front_pics/grimer_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Muk[] = INCBIN_U32("graphics/pokemon/anim_front_pics/muk_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Shellder[] = INCBIN_U32("graphics/pokemon/anim_front_pics/shellder_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Cloyster[] = INCBIN_U32("graphics/pokemon/anim_front_pics/cloyster_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Gastly[] = INCBIN_U32("graphics/pokemon/anim_front_pics/gastly_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Haunter[] = INCBIN_U32("graphics/pokemon/anim_front_pics/haunter_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Gengar[] = INCBIN_U32("graphics/pokemon/anim_front_pics/gengar_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Onix[] = INCBIN_U32("graphics/pokemon/anim_front_pics/onix_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Drowzee[] = INCBIN_U32("graphics/pokemon/anim_front_pics/drowzee_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Hypno[] = INCBIN_U32("graphics/pokemon/anim_front_pics/hypno_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Krabby[] = INCBIN_U32("graphics/pokemon/anim_front_pics/krabby_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Kingler[] = INCBIN_U32("graphics/pokemon/anim_front_pics/kingler_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Voltorb[] = INCBIN_U32("graphics/pokemon/anim_front_pics/voltorb_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Electrode[] = INCBIN_U32("graphics/pokemon/anim_front_pics/electrode_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/anim_front_pics/exeggcute_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/anim_front_pics/exeggutor_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Cubone[] = INCBIN_U32("graphics/pokemon/anim_front_pics/cubone_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Marowak[] = INCBIN_U32("graphics/pokemon/anim_front_pics/marowak_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/anim_front_pics/hitmonlee_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/anim_front_pics/hitmonchan_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Lickitung[] = INCBIN_U32("graphics/pokemon/anim_front_pics/lickitung_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Koffing[] = INCBIN_U32("graphics/pokemon/anim_front_pics/koffing_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Weezing[] = INCBIN_U32("graphics/pokemon/anim_front_pics/weezing_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/anim_front_pics/rhyhorn_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Rhydon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/rhydon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Chansey[] = INCBIN_U32("graphics/pokemon/anim_front_pics/chansey_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Tangela[] = INCBIN_U32("graphics/pokemon/anim_front_pics/tangela_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/anim_front_pics/kangaskhan_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Horsea[] = INCBIN_U32("graphics/pokemon/anim_front_pics/horsea_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Seadra[] = INCBIN_U32("graphics/pokemon/anim_front_pics/seadra_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Goldeen[] = INCBIN_U32("graphics/pokemon/anim_front_pics/goldeen_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Seaking[] = INCBIN_U32("graphics/pokemon/anim_front_pics/seaking_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Staryu[] = INCBIN_U32("graphics/pokemon/anim_front_pics/staryu_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Starmie[] = INCBIN_U32("graphics/pokemon/anim_front_pics/starmie_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Mrmime[] = INCBIN_U32("graphics/pokemon/anim_front_pics/mr_mime_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Scyther[] = INCBIN_U32("graphics/pokemon/anim_front_pics/scyther_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Jynx[] = INCBIN_U32("graphics/pokemon/anim_front_pics/jynx_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/anim_front_pics/electabuzz_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Magmar[] = INCBIN_U32("graphics/pokemon/anim_front_pics/magmar_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Pinsir[] = INCBIN_U32("graphics/pokemon/anim_front_pics/pinsir_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Tauros[] = INCBIN_U32("graphics/pokemon/anim_front_pics/tauros_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Magikarp[] = INCBIN_U32("graphics/pokemon/anim_front_pics/magikarp_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Gyarados[] = INCBIN_U32("graphics/pokemon/anim_front_pics/gyarados_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Lapras[] = INCBIN_U32("graphics/pokemon/anim_front_pics/lapras_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ditto[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ditto_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Eevee[] = INCBIN_U32("graphics/pokemon/anim_front_pics/eevee_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/vaporeon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Jolteon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/jolteon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Flareon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/flareon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Porygon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/porygon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Omanyte[] = INCBIN_U32("graphics/pokemon/anim_front_pics/omanyte_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Omastar[] = INCBIN_U32("graphics/pokemon/anim_front_pics/omastar_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Kabuto[] = INCBIN_U32("graphics/pokemon/anim_front_pics/kabuto_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Kabutops[] = INCBIN_U32("graphics/pokemon/anim_front_pics/kabutops_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/anim_front_pics/aerodactyl_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Snorlax[] = INCBIN_U32("graphics/pokemon/anim_front_pics/snorlax_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Articuno[] = INCBIN_U32("graphics/pokemon/anim_front_pics/articuno_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Zapdos[] = INCBIN_U32("graphics/pokemon/anim_front_pics/zapdos_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Moltres[] = INCBIN_U32("graphics/pokemon/anim_front_pics/moltres_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Dratini[] = INCBIN_U32("graphics/pokemon/anim_front_pics/dratini_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Dragonair[] = INCBIN_U32("graphics/pokemon/anim_front_pics/dragonair_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Dragonite[] = INCBIN_U32("graphics/pokemon/anim_front_pics/dragonite_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/anim_front_pics/mewtwo_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Mew[] = INCBIN_U32("graphics/pokemon/anim_front_pics/mew_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Chikorita[] = INCBIN_U8("graphics/pokemon/anim_front_pics/chikorita_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Bayleef[] = INCBIN_U8("graphics/pokemon/anim_front_pics/bayleef_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Meganium[] = INCBIN_U8("graphics/pokemon/anim_front_pics/meganium_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Cyndaquil[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cyndaquil_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Quilava[] = INCBIN_U8("graphics/pokemon/anim_front_pics/quilava_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Typhlosion[] = INCBIN_U8("graphics/pokemon/anim_front_pics/typhlosion_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Totodile[] = INCBIN_U8("graphics/pokemon/anim_front_pics/totodile_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Croconaw[] = INCBIN_U8("graphics/pokemon/anim_front_pics/croconaw_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Feraligatr[] = INCBIN_U8("graphics/pokemon/anim_front_pics/feraligatr_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Sentret[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sentret_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Furret[] = INCBIN_U8("graphics/pokemon/anim_front_pics/furret_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Hoothoot[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hoothoot_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Noctowl[] = INCBIN_U8("graphics/pokemon/anim_front_pics/noctowl_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ledyba[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ledyba_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ledian[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ledian_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Spinarak[] = INCBIN_U8("graphics/pokemon/anim_front_pics/spinarak_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ariados[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ariados_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Crobat[] = INCBIN_U8("graphics/pokemon/anim_front_pics/crobat_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Chinchou[] = INCBIN_U8("graphics/pokemon/anim_front_pics/chinchou_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Lanturn[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lanturn_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Pichu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pichu_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Cleffa[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cleffa_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Igglybuff[] = INCBIN_U8("graphics/pokemon/anim_front_pics/igglybuff_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Togepi[] = INCBIN_U8("graphics/pokemon/anim_front_pics/togepi_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Togetic[] = INCBIN_U8("graphics/pokemon/anim_front_pics/togetic_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Natu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/natu_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Xatu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/xatu_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Mareep[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mareep_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Flaaffy[] = INCBIN_U8("graphics/pokemon/anim_front_pics/flaaffy_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ampharos[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ampharos_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Bellossom[] = INCBIN_U8("graphics/pokemon/anim_front_pics/bellossom_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Marill[] = INCBIN_U8("graphics/pokemon/anim_front_pics/marill_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Azumarill[] = INCBIN_U8("graphics/pokemon/anim_front_pics/azumarill_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Sudowoodo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sudowoodo_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Politoed[] = INCBIN_U8("graphics/pokemon/anim_front_pics/politoed_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Hoppip[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hoppip_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Skiploom[] = INCBIN_U8("graphics/pokemon/anim_front_pics/skiploom_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Jumpluff[] = INCBIN_U8("graphics/pokemon/anim_front_pics/jumpluff_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Aipom[] = INCBIN_U8("graphics/pokemon/anim_front_pics/aipom_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Sunkern[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sunkern_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Sunflora[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sunflora_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Yanma[] = INCBIN_U8("graphics/pokemon/anim_front_pics/yanma_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Wooper[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wooper_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Quagsire[] = INCBIN_U8("graphics/pokemon/anim_front_pics/quagsire_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Espeon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/espeon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Umbreon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/umbreon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Murkrow[] = INCBIN_U8("graphics/pokemon/anim_front_pics/murkrow_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Slowking[] = INCBIN_U8("graphics/pokemon/anim_front_pics/slowking_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Misdreavus[] = INCBIN_U8("graphics/pokemon/anim_front_pics/misdreavus_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownA[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_a_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Wobbuffet[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wobbuffet_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Girafarig[] = INCBIN_U8("graphics/pokemon/anim_front_pics/girafarig_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Pineco[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pineco_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Forretress[] = INCBIN_U8("graphics/pokemon/anim_front_pics/forretress_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Dunsparce[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dunsparce_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Gligar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gligar_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Steelix[] = INCBIN_U8("graphics/pokemon/anim_front_pics/steelix_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Snubbull[] = INCBIN_U8("graphics/pokemon/anim_front_pics/snubbull_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Granbull[] = INCBIN_U8("graphics/pokemon/anim_front_pics/granbull_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Qwilfish[] = INCBIN_U8("graphics/pokemon/anim_front_pics/qwilfish_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Scizor[] = INCBIN_U8("graphics/pokemon/anim_front_pics/scizor_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Shuckle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shuckle_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Heracross[] = INCBIN_U8("graphics/pokemon/anim_front_pics/heracross_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Sneasel[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sneasel_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Teddiursa[] = INCBIN_U8("graphics/pokemon/anim_front_pics/teddiursa_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ursaring[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ursaring_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Slugma[] = INCBIN_U8("graphics/pokemon/anim_front_pics/slugma_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Magcargo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/magcargo_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Swinub[] = INCBIN_U8("graphics/pokemon/anim_front_pics/swinub_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Piloswine[] = INCBIN_U8("graphics/pokemon/anim_front_pics/piloswine_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Corsola[] = INCBIN_U8("graphics/pokemon/anim_front_pics/corsola_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Remoraid[] = INCBIN_U8("graphics/pokemon/anim_front_pics/remoraid_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Octillery[] = INCBIN_U8("graphics/pokemon/anim_front_pics/octillery_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Delibird[] = INCBIN_U8("graphics/pokemon/anim_front_pics/delibird_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Mantine[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mantine_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Skarmory[] = INCBIN_U8("graphics/pokemon/anim_front_pics/skarmory_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Houndour[] = INCBIN_U8("graphics/pokemon/anim_front_pics/houndour_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Houndoom[] = INCBIN_U8("graphics/pokemon/anim_front_pics/houndoom_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Kingdra[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kingdra_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Phanpy[] = INCBIN_U8("graphics/pokemon/anim_front_pics/phanpy_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Donphan[] = INCBIN_U8("graphics/pokemon/anim_front_pics/donphan_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Porygon2[] = INCBIN_U8("graphics/pokemon/anim_front_pics/porygon2_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Stantler[] = INCBIN_U8("graphics/pokemon/anim_front_pics/stantler_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Smeargle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/smeargle_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Tyrogue[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tyrogue_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Hitmontop[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hitmontop_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Smoochum[] = INCBIN_U8("graphics/pokemon/anim_front_pics/smoochum_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Elekid[] = INCBIN_U8("graphics/pokemon/anim_front_pics/elekid_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Magby[] = INCBIN_U8("graphics/pokemon/anim_front_pics/magby_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Miltank[] = INCBIN_U8("graphics/pokemon/anim_front_pics/miltank_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Blissey[] = INCBIN_U8("graphics/pokemon/anim_front_pics/blissey_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Raikou[] = INCBIN_U8("graphics/pokemon/anim_front_pics/raikou_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Entei[] = INCBIN_U8("graphics/pokemon/anim_front_pics/entei_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Suicune[] = INCBIN_U8("graphics/pokemon/anim_front_pics/suicune_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Larvitar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/larvitar_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Pupitar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pupitar_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Tyranitar[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tyranitar_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Lugia[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lugia_front_pic.4bpp.lz");
-const u8 gMonFrontPic_HoOh[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ho_oh_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Celebi[] = INCBIN_U8("graphics/pokemon/anim_front_pics/celebi_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Chikorita[] = INCBIN_U32("graphics/pokemon/anim_front_pics/chikorita_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Bayleef[] = INCBIN_U32("graphics/pokemon/anim_front_pics/bayleef_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Meganium[] = INCBIN_U32("graphics/pokemon/anim_front_pics/meganium_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/anim_front_pics/cyndaquil_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Quilava[] = INCBIN_U32("graphics/pokemon/anim_front_pics/quilava_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/anim_front_pics/typhlosion_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Totodile[] = INCBIN_U32("graphics/pokemon/anim_front_pics/totodile_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Croconaw[] = INCBIN_U32("graphics/pokemon/anim_front_pics/croconaw_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/anim_front_pics/feraligatr_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Sentret[] = INCBIN_U32("graphics/pokemon/anim_front_pics/sentret_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Furret[] = INCBIN_U32("graphics/pokemon/anim_front_pics/furret_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/anim_front_pics/hoothoot_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Noctowl[] = INCBIN_U32("graphics/pokemon/anim_front_pics/noctowl_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ledyba[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ledyba_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ledian[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ledian_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Spinarak[] = INCBIN_U32("graphics/pokemon/anim_front_pics/spinarak_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ariados[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ariados_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Crobat[] = INCBIN_U32("graphics/pokemon/anim_front_pics/crobat_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Chinchou[] = INCBIN_U32("graphics/pokemon/anim_front_pics/chinchou_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Lanturn[] = INCBIN_U32("graphics/pokemon/anim_front_pics/lanturn_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Pichu[] = INCBIN_U32("graphics/pokemon/anim_front_pics/pichu_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Cleffa[] = INCBIN_U32("graphics/pokemon/anim_front_pics/cleffa_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/anim_front_pics/igglybuff_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Togepi[] = INCBIN_U32("graphics/pokemon/anim_front_pics/togepi_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Togetic[] = INCBIN_U32("graphics/pokemon/anim_front_pics/togetic_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Natu[] = INCBIN_U32("graphics/pokemon/anim_front_pics/natu_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Xatu[] = INCBIN_U32("graphics/pokemon/anim_front_pics/xatu_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Mareep[] = INCBIN_U32("graphics/pokemon/anim_front_pics/mareep_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/anim_front_pics/flaaffy_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ampharos[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ampharos_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Bellossom[] = INCBIN_U32("graphics/pokemon/anim_front_pics/bellossom_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Marill[] = INCBIN_U32("graphics/pokemon/anim_front_pics/marill_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Azumarill[] = INCBIN_U32("graphics/pokemon/anim_front_pics/azumarill_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/anim_front_pics/sudowoodo_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Politoed[] = INCBIN_U32("graphics/pokemon/anim_front_pics/politoed_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Hoppip[] = INCBIN_U32("graphics/pokemon/anim_front_pics/hoppip_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Skiploom[] = INCBIN_U32("graphics/pokemon/anim_front_pics/skiploom_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/anim_front_pics/jumpluff_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Aipom[] = INCBIN_U32("graphics/pokemon/anim_front_pics/aipom_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Sunkern[] = INCBIN_U32("graphics/pokemon/anim_front_pics/sunkern_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Sunflora[] = INCBIN_U32("graphics/pokemon/anim_front_pics/sunflora_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Yanma[] = INCBIN_U32("graphics/pokemon/anim_front_pics/yanma_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Wooper[] = INCBIN_U32("graphics/pokemon/anim_front_pics/wooper_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Quagsire[] = INCBIN_U32("graphics/pokemon/anim_front_pics/quagsire_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Espeon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/espeon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Umbreon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/umbreon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Murkrow[] = INCBIN_U32("graphics/pokemon/anim_front_pics/murkrow_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Slowking[] = INCBIN_U32("graphics/pokemon/anim_front_pics/slowking_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/anim_front_pics/misdreavus_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownA[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_a_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/anim_front_pics/wobbuffet_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Girafarig[] = INCBIN_U32("graphics/pokemon/anim_front_pics/girafarig_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Pineco[] = INCBIN_U32("graphics/pokemon/anim_front_pics/pineco_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Forretress[] = INCBIN_U32("graphics/pokemon/anim_front_pics/forretress_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/anim_front_pics/dunsparce_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Gligar[] = INCBIN_U32("graphics/pokemon/anim_front_pics/gligar_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Steelix[] = INCBIN_U32("graphics/pokemon/anim_front_pics/steelix_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Snubbull[] = INCBIN_U32("graphics/pokemon/anim_front_pics/snubbull_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Granbull[] = INCBIN_U32("graphics/pokemon/anim_front_pics/granbull_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/anim_front_pics/qwilfish_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Scizor[] = INCBIN_U32("graphics/pokemon/anim_front_pics/scizor_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Shuckle[] = INCBIN_U32("graphics/pokemon/anim_front_pics/shuckle_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Heracross[] = INCBIN_U32("graphics/pokemon/anim_front_pics/heracross_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Sneasel[] = INCBIN_U32("graphics/pokemon/anim_front_pics/sneasel_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/anim_front_pics/teddiursa_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ursaring[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ursaring_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Slugma[] = INCBIN_U32("graphics/pokemon/anim_front_pics/slugma_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Magcargo[] = INCBIN_U32("graphics/pokemon/anim_front_pics/magcargo_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Swinub[] = INCBIN_U32("graphics/pokemon/anim_front_pics/swinub_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Piloswine[] = INCBIN_U32("graphics/pokemon/anim_front_pics/piloswine_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Corsola[] = INCBIN_U32("graphics/pokemon/anim_front_pics/corsola_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Remoraid[] = INCBIN_U32("graphics/pokemon/anim_front_pics/remoraid_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Octillery[] = INCBIN_U32("graphics/pokemon/anim_front_pics/octillery_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Delibird[] = INCBIN_U32("graphics/pokemon/anim_front_pics/delibird_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Mantine[] = INCBIN_U32("graphics/pokemon/anim_front_pics/mantine_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Skarmory[] = INCBIN_U32("graphics/pokemon/anim_front_pics/skarmory_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Houndour[] = INCBIN_U32("graphics/pokemon/anim_front_pics/houndour_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Houndoom[] = INCBIN_U32("graphics/pokemon/anim_front_pics/houndoom_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Kingdra[] = INCBIN_U32("graphics/pokemon/anim_front_pics/kingdra_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Phanpy[] = INCBIN_U32("graphics/pokemon/anim_front_pics/phanpy_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Donphan[] = INCBIN_U32("graphics/pokemon/anim_front_pics/donphan_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Porygon2[] = INCBIN_U32("graphics/pokemon/anim_front_pics/porygon2_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Stantler[] = INCBIN_U32("graphics/pokemon/anim_front_pics/stantler_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Smeargle[] = INCBIN_U32("graphics/pokemon/anim_front_pics/smeargle_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/anim_front_pics/tyrogue_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/anim_front_pics/hitmontop_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Smoochum[] = INCBIN_U32("graphics/pokemon/anim_front_pics/smoochum_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Elekid[] = INCBIN_U32("graphics/pokemon/anim_front_pics/elekid_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Magby[] = INCBIN_U32("graphics/pokemon/anim_front_pics/magby_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Miltank[] = INCBIN_U32("graphics/pokemon/anim_front_pics/miltank_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Blissey[] = INCBIN_U32("graphics/pokemon/anim_front_pics/blissey_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Raikou[] = INCBIN_U32("graphics/pokemon/anim_front_pics/raikou_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Entei[] = INCBIN_U32("graphics/pokemon/anim_front_pics/entei_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Suicune[] = INCBIN_U32("graphics/pokemon/anim_front_pics/suicune_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Larvitar[] = INCBIN_U32("graphics/pokemon/anim_front_pics/larvitar_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Pupitar[] = INCBIN_U32("graphics/pokemon/anim_front_pics/pupitar_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/anim_front_pics/tyranitar_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Lugia[] = INCBIN_U32("graphics/pokemon/anim_front_pics/lugia_front_pic.4bpp.lz");
+const u32 gMonFrontPic_HoOh[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ho_oh_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Celebi[] = INCBIN_U32("graphics/pokemon/anim_front_pics/celebi_front_pic.4bpp.lz");
-const u8 gMonFrontPic_DoubleQuestionMark[] = INCBIN_U8("graphics/pokemon/anim_front_pics/double_question_mark_front_pic.4bpp.lz");
+const u32 gMonFrontPic_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/anim_front_pics/double_question_mark_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Treecko[] = INCBIN_U8("graphics/pokemon/anim_front_pics/treecko_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Grovyle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/grovyle_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Sceptile[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sceptile_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Torchic[] = INCBIN_U8("graphics/pokemon/anim_front_pics/torchic_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Combusken[] = INCBIN_U8("graphics/pokemon/anim_front_pics/combusken_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Blaziken[] = INCBIN_U8("graphics/pokemon/anim_front_pics/blaziken_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Mudkip[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mudkip_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Marshtomp[] = INCBIN_U8("graphics/pokemon/anim_front_pics/marshtomp_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Swampert[] = INCBIN_U8("graphics/pokemon/anim_front_pics/swampert_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Poochyena[] = INCBIN_U8("graphics/pokemon/anim_front_pics/poochyena_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Mightyena[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mightyena_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Zigzagoon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/zigzagoon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Linoone[] = INCBIN_U8("graphics/pokemon/anim_front_pics/linoone_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Wurmple[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wurmple_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Silcoon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/silcoon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Beautifly[] = INCBIN_U8("graphics/pokemon/anim_front_pics/beautifly_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Cascoon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cascoon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Dustox[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dustox_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Lotad[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lotad_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Lombre[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lombre_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ludicolo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ludicolo_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Seedot[] = INCBIN_U8("graphics/pokemon/anim_front_pics/seedot_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Nuzleaf[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nuzleaf_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Shiftry[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shiftry_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Nincada[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nincada_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ninjask[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ninjask_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Shedinja[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shedinja_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Taillow[] = INCBIN_U8("graphics/pokemon/anim_front_pics/taillow_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Swellow[] = INCBIN_U8("graphics/pokemon/anim_front_pics/swellow_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Shroomish[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shroomish_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Breloom[] = INCBIN_U8("graphics/pokemon/anim_front_pics/breloom_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Spinda[] = INCBIN_U8("graphics/pokemon/anim_front_pics/spinda_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Wingull[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wingull_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Pelipper[] = INCBIN_U8("graphics/pokemon/anim_front_pics/pelipper_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Surskit[] = INCBIN_U8("graphics/pokemon/anim_front_pics/surskit_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Masquerain[] = INCBIN_U8("graphics/pokemon/anim_front_pics/masquerain_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Wailmer[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wailmer_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Wailord[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wailord_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Skitty[] = INCBIN_U8("graphics/pokemon/anim_front_pics/skitty_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Delcatty[] = INCBIN_U8("graphics/pokemon/anim_front_pics/delcatty_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Kecleon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kecleon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Baltoy[] = INCBIN_U8("graphics/pokemon/anim_front_pics/baltoy_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Claydol[] = INCBIN_U8("graphics/pokemon/anim_front_pics/claydol_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Nosepass[] = INCBIN_U8("graphics/pokemon/anim_front_pics/nosepass_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Torkoal[] = INCBIN_U8("graphics/pokemon/anim_front_pics/torkoal_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Sableye[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sableye_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Barboach[] = INCBIN_U8("graphics/pokemon/anim_front_pics/barboach_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Whiscash[] = INCBIN_U8("graphics/pokemon/anim_front_pics/whiscash_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Luvdisc[] = INCBIN_U8("graphics/pokemon/anim_front_pics/luvdisc_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Corphish[] = INCBIN_U8("graphics/pokemon/anim_front_pics/corphish_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Crawdaunt[] = INCBIN_U8("graphics/pokemon/anim_front_pics/crawdaunt_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Feebas[] = INCBIN_U8("graphics/pokemon/anim_front_pics/feebas_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Milotic[] = INCBIN_U8("graphics/pokemon/anim_front_pics/milotic_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Carvanha[] = INCBIN_U8("graphics/pokemon/anim_front_pics/carvanha_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Sharpedo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sharpedo_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Trapinch[] = INCBIN_U8("graphics/pokemon/anim_front_pics/trapinch_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Vibrava[] = INCBIN_U8("graphics/pokemon/anim_front_pics/vibrava_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Flygon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/flygon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Makuhita[] = INCBIN_U8("graphics/pokemon/anim_front_pics/makuhita_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Hariyama[] = INCBIN_U8("graphics/pokemon/anim_front_pics/hariyama_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Electrike[] = INCBIN_U8("graphics/pokemon/anim_front_pics/electrike_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Manectric[] = INCBIN_U8("graphics/pokemon/anim_front_pics/manectric_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Numel[] = INCBIN_U8("graphics/pokemon/anim_front_pics/numel_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Camerupt[] = INCBIN_U8("graphics/pokemon/anim_front_pics/camerupt_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Spheal[] = INCBIN_U8("graphics/pokemon/anim_front_pics/spheal_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Sealeo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/sealeo_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Walrein[] = INCBIN_U8("graphics/pokemon/anim_front_pics/walrein_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Cacnea[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cacnea_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Cacturne[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cacturne_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Snorunt[] = INCBIN_U8("graphics/pokemon/anim_front_pics/snorunt_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Glalie[] = INCBIN_U8("graphics/pokemon/anim_front_pics/glalie_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Lunatone[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lunatone_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Solrock[] = INCBIN_U8("graphics/pokemon/anim_front_pics/solrock_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Azurill[] = INCBIN_U8("graphics/pokemon/anim_front_pics/azurill_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Spoink[] = INCBIN_U8("graphics/pokemon/anim_front_pics/spoink_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Grumpig[] = INCBIN_U8("graphics/pokemon/anim_front_pics/grumpig_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Plusle[] = INCBIN_U8("graphics/pokemon/anim_front_pics/plusle_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Minun[] = INCBIN_U8("graphics/pokemon/anim_front_pics/minun_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Mawile[] = INCBIN_U8("graphics/pokemon/anim_front_pics/mawile_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Meditite[] = INCBIN_U8("graphics/pokemon/anim_front_pics/meditite_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Medicham[] = INCBIN_U8("graphics/pokemon/anim_front_pics/medicham_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Swablu[] = INCBIN_U8("graphics/pokemon/anim_front_pics/swablu_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Altaria[] = INCBIN_U8("graphics/pokemon/anim_front_pics/altaria_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Wynaut[] = INCBIN_U8("graphics/pokemon/anim_front_pics/wynaut_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Duskull[] = INCBIN_U8("graphics/pokemon/anim_front_pics/duskull_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Dusclops[] = INCBIN_U8("graphics/pokemon/anim_front_pics/dusclops_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Roselia[] = INCBIN_U8("graphics/pokemon/anim_front_pics/roselia_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Slakoth[] = INCBIN_U8("graphics/pokemon/anim_front_pics/slakoth_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Vigoroth[] = INCBIN_U8("graphics/pokemon/anim_front_pics/vigoroth_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Slaking[] = INCBIN_U8("graphics/pokemon/anim_front_pics/slaking_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Gulpin[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gulpin_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Swalot[] = INCBIN_U8("graphics/pokemon/anim_front_pics/swalot_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Tropius[] = INCBIN_U8("graphics/pokemon/anim_front_pics/tropius_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Whismur[] = INCBIN_U8("graphics/pokemon/anim_front_pics/whismur_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Loudred[] = INCBIN_U8("graphics/pokemon/anim_front_pics/loudred_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Exploud[] = INCBIN_U8("graphics/pokemon/anim_front_pics/exploud_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Clamperl[] = INCBIN_U8("graphics/pokemon/anim_front_pics/clamperl_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Huntail[] = INCBIN_U8("graphics/pokemon/anim_front_pics/huntail_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Gorebyss[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gorebyss_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Absol[] = INCBIN_U8("graphics/pokemon/anim_front_pics/absol_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Shuppet[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shuppet_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Banette[] = INCBIN_U8("graphics/pokemon/anim_front_pics/banette_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Seviper[] = INCBIN_U8("graphics/pokemon/anim_front_pics/seviper_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Zangoose[] = INCBIN_U8("graphics/pokemon/anim_front_pics/zangoose_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Relicanth[] = INCBIN_U8("graphics/pokemon/anim_front_pics/relicanth_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Aron[] = INCBIN_U8("graphics/pokemon/anim_front_pics/aron_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Lairon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lairon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Aggron[] = INCBIN_U8("graphics/pokemon/anim_front_pics/aggron_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Castform[] = INCBIN_U8("graphics/pokemon/anim_front_pics/castform_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Volbeat[] = INCBIN_U8("graphics/pokemon/anim_front_pics/volbeat_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Illumise[] = INCBIN_U8("graphics/pokemon/anim_front_pics/illumise_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Lileep[] = INCBIN_U8("graphics/pokemon/anim_front_pics/lileep_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Cradily[] = INCBIN_U8("graphics/pokemon/anim_front_pics/cradily_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Anorith[] = INCBIN_U8("graphics/pokemon/anim_front_pics/anorith_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Armaldo[] = INCBIN_U8("graphics/pokemon/anim_front_pics/armaldo_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Ralts[] = INCBIN_U8("graphics/pokemon/anim_front_pics/ralts_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Kirlia[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kirlia_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Gardevoir[] = INCBIN_U8("graphics/pokemon/anim_front_pics/gardevoir_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Bagon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/bagon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Shelgon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/shelgon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Salamence[] = INCBIN_U8("graphics/pokemon/anim_front_pics/salamence_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Beldum[] = INCBIN_U8("graphics/pokemon/anim_front_pics/beldum_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Metang[] = INCBIN_U8("graphics/pokemon/anim_front_pics/metang_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Metagross[] = INCBIN_U8("graphics/pokemon/anim_front_pics/metagross_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Regirock[] = INCBIN_U8("graphics/pokemon/anim_front_pics/regirock_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Regice[] = INCBIN_U8("graphics/pokemon/anim_front_pics/regice_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Registeel[] = INCBIN_U8("graphics/pokemon/anim_front_pics/registeel_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Kyogre[] = INCBIN_U8("graphics/pokemon/anim_front_pics/kyogre_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Groudon[] = INCBIN_U8("graphics/pokemon/anim_front_pics/groudon_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Rayquaza[] = INCBIN_U8("graphics/pokemon/anim_front_pics/rayquaza_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Latias[] = INCBIN_U8("graphics/pokemon/anim_front_pics/latias_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Latios[] = INCBIN_U8("graphics/pokemon/anim_front_pics/latios_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Jirachi[] = INCBIN_U8("graphics/pokemon/anim_front_pics/jirachi_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Deoxys[] = INCBIN_U8("graphics/pokemon/anim_front_pics/deoxys_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Chimecho[] = INCBIN_U8("graphics/pokemon/anim_front_pics/chimecho_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Treecko[] = INCBIN_U32("graphics/pokemon/anim_front_pics/treecko_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Grovyle[] = INCBIN_U32("graphics/pokemon/anim_front_pics/grovyle_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Sceptile[] = INCBIN_U32("graphics/pokemon/anim_front_pics/sceptile_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Torchic[] = INCBIN_U32("graphics/pokemon/anim_front_pics/torchic_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Combusken[] = INCBIN_U32("graphics/pokemon/anim_front_pics/combusken_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Blaziken[] = INCBIN_U32("graphics/pokemon/anim_front_pics/blaziken_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Mudkip[] = INCBIN_U32("graphics/pokemon/anim_front_pics/mudkip_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/anim_front_pics/marshtomp_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Swampert[] = INCBIN_U32("graphics/pokemon/anim_front_pics/swampert_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Poochyena[] = INCBIN_U32("graphics/pokemon/anim_front_pics/poochyena_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Mightyena[] = INCBIN_U32("graphics/pokemon/anim_front_pics/mightyena_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/zigzagoon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Linoone[] = INCBIN_U32("graphics/pokemon/anim_front_pics/linoone_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Wurmple[] = INCBIN_U32("graphics/pokemon/anim_front_pics/wurmple_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Silcoon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/silcoon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Beautifly[] = INCBIN_U32("graphics/pokemon/anim_front_pics/beautifly_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Cascoon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/cascoon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Dustox[] = INCBIN_U32("graphics/pokemon/anim_front_pics/dustox_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Lotad[] = INCBIN_U32("graphics/pokemon/anim_front_pics/lotad_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Lombre[] = INCBIN_U32("graphics/pokemon/anim_front_pics/lombre_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ludicolo_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Seedot[] = INCBIN_U32("graphics/pokemon/anim_front_pics/seedot_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/anim_front_pics/nuzleaf_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Shiftry[] = INCBIN_U32("graphics/pokemon/anim_front_pics/shiftry_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Nincada[] = INCBIN_U32("graphics/pokemon/anim_front_pics/nincada_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ninjask[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ninjask_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Shedinja[] = INCBIN_U32("graphics/pokemon/anim_front_pics/shedinja_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Taillow[] = INCBIN_U32("graphics/pokemon/anim_front_pics/taillow_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Swellow[] = INCBIN_U32("graphics/pokemon/anim_front_pics/swellow_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Shroomish[] = INCBIN_U32("graphics/pokemon/anim_front_pics/shroomish_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Breloom[] = INCBIN_U32("graphics/pokemon/anim_front_pics/breloom_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Spinda[] = INCBIN_U32("graphics/pokemon/anim_front_pics/spinda_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Wingull[] = INCBIN_U32("graphics/pokemon/anim_front_pics/wingull_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Pelipper[] = INCBIN_U32("graphics/pokemon/anim_front_pics/pelipper_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Surskit[] = INCBIN_U32("graphics/pokemon/anim_front_pics/surskit_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Masquerain[] = INCBIN_U32("graphics/pokemon/anim_front_pics/masquerain_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Wailmer[] = INCBIN_U32("graphics/pokemon/anim_front_pics/wailmer_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Wailord[] = INCBIN_U32("graphics/pokemon/anim_front_pics/wailord_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Skitty[] = INCBIN_U32("graphics/pokemon/anim_front_pics/skitty_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Delcatty[] = INCBIN_U32("graphics/pokemon/anim_front_pics/delcatty_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Kecleon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/kecleon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Baltoy[] = INCBIN_U32("graphics/pokemon/anim_front_pics/baltoy_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Claydol[] = INCBIN_U32("graphics/pokemon/anim_front_pics/claydol_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Nosepass[] = INCBIN_U32("graphics/pokemon/anim_front_pics/nosepass_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Torkoal[] = INCBIN_U32("graphics/pokemon/anim_front_pics/torkoal_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Sableye[] = INCBIN_U32("graphics/pokemon/anim_front_pics/sableye_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Barboach[] = INCBIN_U32("graphics/pokemon/anim_front_pics/barboach_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Whiscash[] = INCBIN_U32("graphics/pokemon/anim_front_pics/whiscash_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/anim_front_pics/luvdisc_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Corphish[] = INCBIN_U32("graphics/pokemon/anim_front_pics/corphish_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/anim_front_pics/crawdaunt_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Feebas[] = INCBIN_U32("graphics/pokemon/anim_front_pics/feebas_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Milotic[] = INCBIN_U32("graphics/pokemon/anim_front_pics/milotic_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Carvanha[] = INCBIN_U32("graphics/pokemon/anim_front_pics/carvanha_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/anim_front_pics/sharpedo_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Trapinch[] = INCBIN_U32("graphics/pokemon/anim_front_pics/trapinch_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Vibrava[] = INCBIN_U32("graphics/pokemon/anim_front_pics/vibrava_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Flygon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/flygon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Makuhita[] = INCBIN_U32("graphics/pokemon/anim_front_pics/makuhita_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Hariyama[] = INCBIN_U32("graphics/pokemon/anim_front_pics/hariyama_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Electrike[] = INCBIN_U32("graphics/pokemon/anim_front_pics/electrike_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Manectric[] = INCBIN_U32("graphics/pokemon/anim_front_pics/manectric_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Numel[] = INCBIN_U32("graphics/pokemon/anim_front_pics/numel_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Camerupt[] = INCBIN_U32("graphics/pokemon/anim_front_pics/camerupt_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Spheal[] = INCBIN_U32("graphics/pokemon/anim_front_pics/spheal_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Sealeo[] = INCBIN_U32("graphics/pokemon/anim_front_pics/sealeo_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Walrein[] = INCBIN_U32("graphics/pokemon/anim_front_pics/walrein_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Cacnea[] = INCBIN_U32("graphics/pokemon/anim_front_pics/cacnea_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Cacturne[] = INCBIN_U32("graphics/pokemon/anim_front_pics/cacturne_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Snorunt[] = INCBIN_U32("graphics/pokemon/anim_front_pics/snorunt_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Glalie[] = INCBIN_U32("graphics/pokemon/anim_front_pics/glalie_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Lunatone[] = INCBIN_U32("graphics/pokemon/anim_front_pics/lunatone_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Solrock[] = INCBIN_U32("graphics/pokemon/anim_front_pics/solrock_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Azurill[] = INCBIN_U32("graphics/pokemon/anim_front_pics/azurill_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Spoink[] = INCBIN_U32("graphics/pokemon/anim_front_pics/spoink_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Grumpig[] = INCBIN_U32("graphics/pokemon/anim_front_pics/grumpig_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Plusle[] = INCBIN_U32("graphics/pokemon/anim_front_pics/plusle_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Minun[] = INCBIN_U32("graphics/pokemon/anim_front_pics/minun_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Mawile[] = INCBIN_U32("graphics/pokemon/anim_front_pics/mawile_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Meditite[] = INCBIN_U32("graphics/pokemon/anim_front_pics/meditite_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Medicham[] = INCBIN_U32("graphics/pokemon/anim_front_pics/medicham_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Swablu[] = INCBIN_U32("graphics/pokemon/anim_front_pics/swablu_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Altaria[] = INCBIN_U32("graphics/pokemon/anim_front_pics/altaria_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Wynaut[] = INCBIN_U32("graphics/pokemon/anim_front_pics/wynaut_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Duskull[] = INCBIN_U32("graphics/pokemon/anim_front_pics/duskull_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Dusclops[] = INCBIN_U32("graphics/pokemon/anim_front_pics/dusclops_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Roselia[] = INCBIN_U32("graphics/pokemon/anim_front_pics/roselia_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Slakoth[] = INCBIN_U32("graphics/pokemon/anim_front_pics/slakoth_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/anim_front_pics/vigoroth_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Slaking[] = INCBIN_U32("graphics/pokemon/anim_front_pics/slaking_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Gulpin[] = INCBIN_U32("graphics/pokemon/anim_front_pics/gulpin_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Swalot[] = INCBIN_U32("graphics/pokemon/anim_front_pics/swalot_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Tropius[] = INCBIN_U32("graphics/pokemon/anim_front_pics/tropius_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Whismur[] = INCBIN_U32("graphics/pokemon/anim_front_pics/whismur_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Loudred[] = INCBIN_U32("graphics/pokemon/anim_front_pics/loudred_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Exploud[] = INCBIN_U32("graphics/pokemon/anim_front_pics/exploud_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Clamperl[] = INCBIN_U32("graphics/pokemon/anim_front_pics/clamperl_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Huntail[] = INCBIN_U32("graphics/pokemon/anim_front_pics/huntail_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/anim_front_pics/gorebyss_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Absol[] = INCBIN_U32("graphics/pokemon/anim_front_pics/absol_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Shuppet[] = INCBIN_U32("graphics/pokemon/anim_front_pics/shuppet_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Banette[] = INCBIN_U32("graphics/pokemon/anim_front_pics/banette_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Seviper[] = INCBIN_U32("graphics/pokemon/anim_front_pics/seviper_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Zangoose[] = INCBIN_U32("graphics/pokemon/anim_front_pics/zangoose_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Relicanth[] = INCBIN_U32("graphics/pokemon/anim_front_pics/relicanth_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Aron[] = INCBIN_U32("graphics/pokemon/anim_front_pics/aron_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Lairon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/lairon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Aggron[] = INCBIN_U32("graphics/pokemon/anim_front_pics/aggron_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Castform[] = INCBIN_U32("graphics/pokemon/anim_front_pics/castform_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Volbeat[] = INCBIN_U32("graphics/pokemon/anim_front_pics/volbeat_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Illumise[] = INCBIN_U32("graphics/pokemon/anim_front_pics/illumise_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Lileep[] = INCBIN_U32("graphics/pokemon/anim_front_pics/lileep_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Cradily[] = INCBIN_U32("graphics/pokemon/anim_front_pics/cradily_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Anorith[] = INCBIN_U32("graphics/pokemon/anim_front_pics/anorith_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Armaldo[] = INCBIN_U32("graphics/pokemon/anim_front_pics/armaldo_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Ralts[] = INCBIN_U32("graphics/pokemon/anim_front_pics/ralts_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Kirlia[] = INCBIN_U32("graphics/pokemon/anim_front_pics/kirlia_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/anim_front_pics/gardevoir_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Bagon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/bagon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Shelgon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/shelgon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Salamence[] = INCBIN_U32("graphics/pokemon/anim_front_pics/salamence_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Beldum[] = INCBIN_U32("graphics/pokemon/anim_front_pics/beldum_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Metang[] = INCBIN_U32("graphics/pokemon/anim_front_pics/metang_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Metagross[] = INCBIN_U32("graphics/pokemon/anim_front_pics/metagross_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Regirock[] = INCBIN_U32("graphics/pokemon/anim_front_pics/regirock_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Regice[] = INCBIN_U32("graphics/pokemon/anim_front_pics/regice_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Registeel[] = INCBIN_U32("graphics/pokemon/anim_front_pics/registeel_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Kyogre[] = INCBIN_U32("graphics/pokemon/anim_front_pics/kyogre_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Groudon[] = INCBIN_U32("graphics/pokemon/anim_front_pics/groudon_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/anim_front_pics/rayquaza_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Latias[] = INCBIN_U32("graphics/pokemon/anim_front_pics/latias_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Latios[] = INCBIN_U32("graphics/pokemon/anim_front_pics/latios_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Jirachi[] = INCBIN_U32("graphics/pokemon/anim_front_pics/jirachi_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Deoxys[] = INCBIN_U32("graphics/pokemon/anim_front_pics/deoxys_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Chimecho[] = INCBIN_U32("graphics/pokemon/anim_front_pics/chimecho_front_pic.4bpp.lz");
-const u8 gMonFrontPic_Egg[] = INCBIN_U8("graphics/pokemon/anim_front_pics/egg_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/anim_front_pics/egg_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownB[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_b_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownC[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_c_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownD[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_d_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownE[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_e_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownF[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_f_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownG[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_g_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownH[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_h_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownI[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_i_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownJ[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_j_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownK[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_k_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownL[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_l_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownM[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_m_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownN[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_n_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownO[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_o_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownP[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_p_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownQ[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_q_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownR[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_r_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownS[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_s_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownT[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_t_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownU[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_u_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownV[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_v_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownW[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_w_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownX[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_x_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownY[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_y_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownZ[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_z_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownExclamationMark[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_exclamation_mark_front_pic.4bpp.lz");
-const u8 gMonFrontPic_UnownQuestionMark[] = INCBIN_U8("graphics/pokemon/anim_front_pics/unown_question_mark_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownB[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_b_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownC[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_c_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownD[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_d_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownE[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_e_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownF[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_f_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownG[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_g_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownH[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_h_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownI[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_i_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownJ[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_j_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownK[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_k_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownL[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_l_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownM[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_m_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownN[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_n_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownO[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_o_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownP[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_p_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownQ[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_q_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownR[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_r_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownS[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_s_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownT[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_t_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownU[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_u_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownV[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_v_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownW[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_w_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownX[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_x_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownY[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_y_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownZ[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_z_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownExclamationMark[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_exclamation_mark_front_pic.4bpp.lz");
+const u32 gMonFrontPic_UnownQuestionMark[] = INCBIN_U32("graphics/pokemon/anim_front_pics/unown_question_mark_front_pic.4bpp.lz");
diff --git a/src/apprentice.c b/src/apprentice.c
index f2a8aa9c0..499f85094 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -340,16 +340,10 @@ extern const u8 gText_082B7185[];
extern const u8 gText_082B71C1[];
extern const u8 gText_082B71F9[];
-extern struct Unk030062ECStruct *gUnknown_030062EC;
-extern struct Unk030062F0Struct *gUnknown_030062F0;
-extern void (*gUnknown_030062F4)(void);
-
-extern void sub_8165AE8(struct Apprentice *);
-
-extern const u8 gUnknown_085DCEDC[];
-extern const u8 gUnknown_085DCF0E[];
-extern const u8 gUnknown_085DCEFA[];
-extern const u8 gUnknown_085DCF2C[];
+// IWRAM common
+struct Unk030062ECStruct *gUnknown_030062EC;
+struct Unk030062F0Struct *gUnknown_030062F0;
+void (*gUnknown_030062F4)(void);
// This file's functions.
static u16 sub_819FF98(u8 arg0);
@@ -382,7 +376,7 @@ static void sub_81A1218(void);
static void sub_81A1224(void);
static void sub_81A1438(void);
static void sub_81A150C(void);
-static void sub_81A15A4(void);
+static void Script_SetPlayerApprenticeTrainerGfxId(void);
static void sub_81A1644(void);
static void sub_81A1370(void);
@@ -395,112 +389,128 @@ const struct ApprenticeTrainer gApprentices[] =
.otId = 0xBDC9,
.facilityClass = 0x43,
.species = {SPECIES_BEAUTIFLY, SPECIES_DUSTOX, SPECIES_ILLUMISE, SPECIES_SHIFTRY, SPECIES_BRELOOM, SPECIES_NINJASK, SPECIES_SHEDINJA, SPECIES_PINSIR, SPECIES_HERACROSS, SPECIES_VOLBEAT},
- .rest = {0, 0, 0x1D, 8, 0x3e, 20, 0, 12, 1, 10, 0x30, 6, 0x44, 20},
+ .id = 0,
+ .easyChatWords = {0x81D, 0x143E, 0xC00, 0xA01, 0x630, 0x1444},
},
{
.name = {_("ヒロオ"), _("LIONEL"), _("LIONEL"), _("CAIO"), _("LUDWIG"), _("LEO")},
.otId = 0xCF09,
.facilityClass = 0x2B,
.species = {SPECIES_SWELLOW, SPECIES_SWALOT, SPECIES_SHUCKLE, SPECIES_MANECTRIC, SPECIES_TORKOAL, SPECIES_HARIYAMA, SPECIES_MIGHTYENA, SPECIES_LUDICOLO, SPECIES_CRAWDAUNT, SPECIES_WHISCASH},
- .rest = {1, 0, 0x38, 12, 1, 10, 0x30, 6, 6, 10, 0x20, 0x10, 0x13, 0x22},
+ .id = 1,
+ .easyChatWords = {0xC38, 0xA01, 0x630, 0xA06, 0x1020, 0x2213},
},
{
.name = {_("ケイジ"), _("SONNY"), _("HERVE"), _("FEDRO"), _("WENZEL"), _("SANTI")},
.otId = 0x2E34,
.facilityClass = 0x26,
.species = {SPECIES_LINOONE, SPECIES_MIGHTYENA, SPECIES_WHISCASH, SPECIES_ZANGOOSE, SPECIES_SEVIPER, SPECIES_NINETALES, SPECIES_KECLEON, SPECIES_SHUCKLE, SPECIES_MANECTRIC, SPECIES_MACHAMP},
- .rest = {2, 0, 1, 10, 10, 0x16, 0x15, 14, 0x30, 6, 0x3b, 12, 0x4, 12},
+ .id = 2,
+ .easyChatWords = {0xA01, 0x160A, 0xE15, 0x630, 0xC3B, 0xC04},
},
{
.name = {_("ユラ"), _("LAYLA"), _("LAYLA"), _("ASTRID"), _("SONJA"), _("LOLA")},
.otId = 0x84EF,
.facilityClass = 0x47,
.species = {SPECIES_SWALOT, SPECIES_XATU, SPECIES_ALTARIA, SPECIES_GOLDUCK, SPECIES_FLYGON, SPECIES_ALAKAZAM, SPECIES_GARDEVOIR, SPECIES_WAILORD, SPECIES_GRUMPIG, SPECIES_MIGHTYENA},
- .rest = {3, 0, 11, 16, 15, 0x1e, 0x39, 16, 0x21, 0x14, 0x3, 12, 0xff, 0xff},
+ .id = 3,
+ .easyChatWords = {0x100B, 0x1E0F, 0x1039, 0x1421, 0xC03, 0xFFFF},
},
{
.name = {_("ヨウカ"), _("MACY"), _("AMELIE"), _("CLEO"), _("MARIA"), _("ELISA")},
.otId = 0x1E43,
.facilityClass = 0x27,
.species = {SPECIES_WIGGLYTUFF, SPECIES_LINOONE, SPECIES_KINGDRA, SPECIES_DELCATTY, SPECIES_RAICHU, SPECIES_FEAROW, SPECIES_STARMIE, SPECIES_MEDICHAM, SPECIES_SHIFTRY, SPECIES_BEAUTIFLY},
- .rest = {4, 0, 15, 0x1e, 0x14, 16, 6, 16, 15, 0x28, 0x1c, 0x1c, 0x13, 0x1c},
+ .id = 4,
+ .easyChatWords = {0x1E0F, 0x1014, 0x1006, 0x280F, 0x1C1C, 0x1C13},
},
{
.name = {_("ヤスシ"), _("DONTE"), _("BRAHIM"), _("GLAUCO"), _("JOSEF"), _("ROQUE")},
.otId = 0x379F,
.facilityClass = 0x30,
.species = {SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_AGGRON, SPECIES_MAGNETON, SPECIES_MACHAMP, SPECIES_ARMALDO, SPECIES_HERACROSS, SPECIES_NOSEPASS, SPECIES_EXPLOUD, SPECIES_MIGHTYENA},
- .rest = {5, 0, 0x29, 0x0A, 0x08, 0x14, 0x2F, 0x10, 0x38, 0x16, 0x20, 0x08, 0x00, 0x0C},
+ .id = 5,
+ .easyChatWords = {0xA29, 0x1408, 0x102F, 0x1638, 0x820, 0xC00},
},
{
.name = {_("ミサオ"), _("AMIRA"), _("LAURE"), _("DAFNE"), _("AMELIE"), _("LARA")},
.otId = 0xF555,
.facilityClass = 0x31,
.species = {SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_MAGNETON, SPECIES_MEDICHAM, SPECIES_MIGHTYENA, SPECIES_GLALIE, SPECIES_GOLEM, SPECIES_ELECTRODE, SPECIES_PELIPPER, SPECIES_SHARPEDO},
- .rest = {6, 0, 0x0B, 0x0C, 0x3E, 0x12, 0x00, 0x0C, 0x31, 0x0A, 0x30, 0x14, 0x00, 0x0C},
+ .id = 6,
+ .easyChatWords = {0xC0B, 0x123E, 0xC00, 0xA31, 0x1430, 0xC00},
},
{
.name = {_("カズサ"), _("KALI"), _("JODIE"), _("ILENIA"), _("KARO"), _("ELSA")},
.otId = 0x8D26,
.facilityClass = 0x14,
.species = {SPECIES_NINETALES, SPECIES_ALAKAZAM, SPECIES_SCEPTILE, SPECIES_SALAMENCE, SPECIES_GOLDUCK, SPECIES_MAWILE, SPECIES_WEEZING, SPECIES_LANTURN, SPECIES_GARDEVOIR, SPECIES_MILOTIC},
- .rest = {7, 0, 0x06, 0x0A, 0x20, 0x06, 0x1F, 0x0A, 0x02, 0x0A, 0x03, 0x0C, 0xFF, 0xFF},
+ .id = 7,
+ .easyChatWords = {0xA06, 0x620, 0xA1F, 0xA02, 0xC03, 0xFFFF},
},
{
.name = {_("スミレ"), _("ANNIE"), _("ANNIE"), _("IMELDA"), _("INES"), _("ROSA")},
.otId = 0x800C,
.facilityClass = 0xD,
.species = {SPECIES_SCEPTILE, SPECIES_VILEPLUME, SPECIES_BELLOSSOM, SPECIES_ROSELIA, SPECIES_CORSOLA, SPECIES_FLYGON, SPECIES_BRELOOM, SPECIES_MILOTIC, SPECIES_ALTARIA, SPECIES_CRADILY},
- .rest = {8, 0, 0x22, 0x1E, 0x33, 0x04, 0x0E, 0x02, 0x02, 0x0A, 0x1E, 0x10, 0x00, 0x0C},
+ .id = 8,
+ .easyChatWords = {0x1E22, 0x433, 0x20E, 0xA02, 0x101E, 0xC00},
},
{
.name = {_("アキノリ"), _("DILLEN"), _("RENE"), _("INDRO"), _("DETLEF"), _("PEDRO")},
.otId = 0x469f,
.facilityClass = 0,
.species = {SPECIES_SKARMORY, SPECIES_GOLEM, SPECIES_BLAZIKEN, SPECIES_CAMERUPT, SPECIES_DONPHAN, SPECIES_MUK, SPECIES_SALAMENCE, SPECIES_TROPIUS, SPECIES_SOLROCK, SPECIES_RHYDON},
- .rest = {9, 0, 0x3D, 0x0A, 0x11, 0x10, 0x1E, 0x0E, 0x1C, 0x20, 0x04, 0x0C, 0xFF, 0xFF},
+ .id = 9,
+ .easyChatWords = {0xA3D, 0x1011, 0xE1E, 0x201C, 0xC04, 0xFFFF},
},
{
.name = {_("トウゾウ"), _("DALLAS"), _("BRUNO"), _("LEARCO"), _("ANSGAR"), _("MANOLO")},
.otId = 0x71FC,
.facilityClass = 0x2D,
.species = {SPECIES_SEAKING, SPECIES_STARMIE, SPECIES_GOLDUCK, SPECIES_TENTACRUEL, SPECIES_OCTILLERY, SPECIES_GOREBYSS, SPECIES_GLALIE, SPECIES_WAILORD, SPECIES_SHARPEDO, SPECIES_KINGDRA},
- .rest = {10, 0, 0x05, 0x0A, 0x06, 0x06, 0x0E, 0x16, 0x14, 0x0A, 0x00, 0x0C, 0xFF, 0xFF},
+ .id = 10,
+ .easyChatWords = {0xA05, 0x606, 0x160E, 0xA14, 0xC00, 0xFFFF},
},
{
.name = {_("セイヤ"), _("FRANK"), _("FRANK"), _("OLINDO"), _("FRANK"), _("MAURO")},
.otId = 0xA39E,
.facilityClass = 0x3A,
.species = {SPECIES_QUAGSIRE, SPECIES_STARMIE, SPECIES_PELIPPER, SPECIES_CRAWDAUNT, SPECIES_WAILORD, SPECIES_GYARADOS, SPECIES_SWAMPERT, SPECIES_LANTURN, SPECIES_WHISCASH, SPECIES_SHUCKLE},
- .rest = {11, 0, 0x0E, 0x28, 0x3D, 0x10, 0x0F, 0x24, 0x14, 0x0A, 0x23, 0x1E, 0x24, 0x10},
+ .id = 11,
+ .easyChatWords = {0x280E, 0x103D, 0x240F, 0xA14, 0x1E23, 0x1024},
},
{
.name = {_("リュウジ"), _("LAMONT"), _("XAV"), _("ORFEO"), _("JÜRGEN"), _("JORGE")},
.otId = 0xE590,
.facilityClass = 0x19,
.species = {SPECIES_ABSOL, SPECIES_CROBAT, SPECIES_EXPLOUD, SPECIES_MAGNETON, SPECIES_SHARPEDO, SPECIES_MANECTRIC, SPECIES_METAGROSS, SPECIES_ELECTRODE, SPECIES_NOSEPASS, SPECIES_WEEZING},
- .rest = {12, 0, 0x20, 0x10, 0x2E, 0x06, 0x0B, 0x10, 0x22, 0x1E, 0x0F, 0x1E, 0x0B, 0x10},
+ .id = 12,
+ .easyChatWords = {0x1020, 0x62E, 0x100B, 0x1E22, 0x1E0F, 0x100B},
},
{
.name = {_("カツアキ"), _("TYRESE"), _("ANDY"), _("PARIDE"), _("DAVID"), _("CHICHO")},
.otId = 0xD018,
.facilityClass = 10,
.species = {SPECIES_BLAZIKEN, SPECIES_GOLEM, SPECIES_MACHAMP, SPECIES_RHYDON, SPECIES_HARIYAMA, SPECIES_AGGRON, SPECIES_MEDICHAM, SPECIES_ZANGOOSE, SPECIES_VIGOROTH, SPECIES_SLAKING},
- .rest = {13, 0, 0x29, 0x0A, 0x3A, 0x06, 0x15, 0x0E, 0x35, 0x14, 0x34, 0x10, 0x1E, 0x06},
+ .id = 13,
+ .easyChatWords = {0xA29, 0x63A, 0xE15, 0x1435, 0x1034, 0x61E},
},
{
.name = {_("トシミツ"), _("DANTE"), _("DANTE"), _("RAOUL"), _("LOTHAR"), _("PABLO")},
.otId = 0xBC75,
.facilityClass = 14,
.species = {SPECIES_SCEPTILE, SPECIES_SANDSLASH, SPECIES_FLYGON, SPECIES_CLAYDOL, SPECIES_ARMALDO, SPECIES_CROBAT, SPECIES_CRADILY, SPECIES_SOLROCK, SPECIES_LUNATONE, SPECIES_GOLEM},
- .rest = {14, 0, 0x01, 0x0A, 0x17, 0x10, 0x43, 0x12, 0x22, 0x1E, 0x0B, 0x10, 0x0F, 0x28},
+ .id = 14,
+ .easyChatWords = {0xA01, 0x1017, 0x1243, 0x1E22, 0x100B, 0x280F},
},
{
.name = {_("ローウェン"), _("ARTURO"), _("ARTURO"), _("ROMOLO"), _("BRIAN"), _("ARTURO")},
.otId = 0xFA02,
.facilityClass = 0x20,
.species = {SPECIES_ABSOL, SPECIES_MIGHTYENA, SPECIES_ALAKAZAM, SPECIES_BANETTE, SPECIES_NINETALES, SPECIES_CLAYDOL, SPECIES_MUK, SPECIES_SALAMENCE, SPECIES_WALREIN, SPECIES_DUSCLOPS},
- .rest = {15, 0, 0x0F, 0x1E, 0x04, 0x14, 0x2F, 0x10, 0x06, 0x10, 0x20, 0x10, 0x03, 0x0E},
+ .id = 15,
+ .easyChatWords = {0x1E0F, 0x1404, 0x102F, 0x1006, 0x1020, 0xE03},
},
};
@@ -1030,7 +1040,7 @@ static void (* const sApprenticeFunctions[])(void) =
sub_81A1224,
sub_81A1438,
sub_81A150C,
- sub_81A15A4,
+ Script_SetPlayerApprenticeTrainerGfxId,
sub_81A1644,
sub_81A1370,
};
@@ -1092,7 +1102,7 @@ void ResetAllApprenticeData(void)
for (j = 0; j < 4; j++)
gSaveBlock2Ptr->apprentices[i].playerId[j] = 0;
gSaveBlock2Ptr->apprentices[i].language = gGameLanguage;
- gSaveBlock2Ptr->apprentices[i].unk40 = 0;
+ gSaveBlock2Ptr->apprentices[i].checksum = 0;
}
Script_ResetPlayerApprentice();
@@ -1435,16 +1445,16 @@ static void sub_81A0390(u8 arg0)
for (i = 0; i < 3; i++)
{
- gSaveBlock2Ptr->apprentices[0].monData[i].species = 0;
- gSaveBlock2Ptr->apprentices[0].monData[i].item = 0;
+ gSaveBlock2Ptr->apprentices[0].party[i].species = 0;
+ gSaveBlock2Ptr->apprentices[0].party[i].item = 0;
for (j = 0; j < 4; j++)
- gSaveBlock2Ptr->apprentices[0].monData[i].moves[j] = 0;
+ gSaveBlock2Ptr->apprentices[0].party[i].moves[j] = 0;
}
j = PLAYER_APPRENTICE.field_B1_2;
for (i = 0; i < 3; i++)
{
- apprenticeMons[j] = &gSaveBlock2Ptr->apprentices[0].monData[i];
+ apprenticeMons[j] = &gSaveBlock2Ptr->apprentices[0].party[i];
j = (j + 1) % 3;
}
@@ -1570,9 +1580,9 @@ static void Task_ChooseAnswer(u8 taskId)
s16 *data = gTasks[taskId].data;
if (!tWrapAround)
- input = Menu_ProcessInputNoWrapAround();
+ input = Menu_ProcessInputNoWrap();
else
- input = ProcessMenuInput();
+ input = Menu_ProcessInput();
switch (input)
{
@@ -1975,7 +1985,7 @@ static void sub_81A0FFC(void)
StringCopy(stringDst, gText_OpenLevel);
break;
case APPRENTICE_BUFF_EASY_CHAT:
- ConvertBattleFrontierTrainerSpeechToString(gSaveBlock2Ptr->apprentices[0].easyChatWords);
+ FrontierSpeechToString(gSaveBlock2Ptr->apprentices[0].easyChatWords);
StringCopy(stringDst, gStringVar4);
break;
case APPRENTICE_BUFF_SPECIES4:
@@ -2229,7 +2239,7 @@ static void sub_81A1370(void)
r9 = -1;
for (i = 1; i < 4; i++)
{
- if (ReadUnalignedWord(gSaveBlock2Ptr->apprentices[i].playerId) == ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId)
+ if (GetTrainerId(gSaveBlock2Ptr->apprentices[i].playerId) == GetTrainerId(gSaveBlock2Ptr->playerTrainerId)
&& gSaveBlock2Ptr->apprentices[i].number < r10)
{
r10 = gSaveBlock2Ptr->apprentices[i].number;
@@ -2261,7 +2271,7 @@ static void sub_81A1438(void)
StringCopy(gSaveBlock2Ptr->apprentices[0].playerName, gSaveBlock2Ptr->playerName);
gSaveBlock2Ptr->apprentices[0].language = gGameLanguage;
- sub_8165AE8(&gSaveBlock2Ptr->apprentices[0]);
+ CalcApprenticeChecksum(&gSaveBlock2Ptr->apprentices[0]);
}
static void sub_81A150C(void)
@@ -2270,51 +2280,46 @@ static void sub_81A150C(void)
u8 mapObjectGfxId;
u8 class = gApprentices[gSaveBlock2Ptr->apprentices[0].id].facilityClass;
- for (i = 0; i < 30 && gUnknown_085DCEDC[i] != class; i++)
+ // Search male classes.
+ for (i = 0; i < ARRAY_COUNT(gTowerMaleFacilityClasses) && gTowerMaleFacilityClasses[i] != class; i++)
;
-
- if (i != 30)
+ if (i != ARRAY_COUNT(gTowerMaleFacilityClasses))
{
- mapObjectGfxId = gUnknown_085DCF0E[i];
+ mapObjectGfxId = gTowerMaleTrainerGfxIds[i];
VarSet(VAR_OBJ_GFX_ID_0, mapObjectGfxId);
+ return;
}
- else
- {
- for (i = 0; i < 20 && gUnknown_085DCEFA[i] != class; i++)
- ;
- if (i != 20)
- {
- mapObjectGfxId = gUnknown_085DCF2C[i];
- VarSet(VAR_OBJ_GFX_ID_0, mapObjectGfxId);
- }
+ for (i = 0; i < ARRAY_COUNT(gTowerFemaleFacilityClasses) && gTowerFemaleFacilityClasses[i] != class; i++)
+ ;
+ if (i != ARRAY_COUNT(gTowerFemaleFacilityClasses))
+ {
+ mapObjectGfxId = gTowerFemaleTrainerGfxIds[i];
+ VarSet(VAR_OBJ_GFX_ID_0, mapObjectGfxId);
}
}
-static void sub_81A15A4(void)
+static void Script_SetPlayerApprenticeTrainerGfxId(void)
{
u8 i;
u8 mapObjectGfxId;
u8 class = gApprentices[PLAYER_APPRENTICE.id].facilityClass;
- for (i = 0; i < 30 && gUnknown_085DCEDC[i] != class; i++)
+ for (i = 0; i < ARRAY_COUNT(gTowerMaleFacilityClasses) && gTowerMaleFacilityClasses[i] != class; i++)
;
-
- if (i != 30)
+ if (i != ARRAY_COUNT(gTowerMaleFacilityClasses))
{
- mapObjectGfxId = gUnknown_085DCF0E[i];
+ mapObjectGfxId = gTowerMaleTrainerGfxIds[i];
VarSet(VAR_OBJ_GFX_ID_0, mapObjectGfxId);
+ return;
}
- else
- {
- for (i = 0; i < 20 && gUnknown_085DCEFA[i] != class; i++)
- ;
- if (i != 20)
- {
- mapObjectGfxId = gUnknown_085DCF2C[i];
- VarSet(VAR_OBJ_GFX_ID_0, mapObjectGfxId);
- }
+ for (i = 0; i < ARRAY_COUNT(gTowerFemaleFacilityClasses) && gTowerFemaleFacilityClasses[i] != class; i++)
+ ;
+ if (i != ARRAY_COUNT(gTowerFemaleFacilityClasses))
+ {
+ mapObjectGfxId = gTowerFemaleTrainerGfxIds[i];
+ VarSet(VAR_OBJ_GFX_ID_0, mapObjectGfxId);
}
}
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index e89d308f5..3e7064eb5 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -1,17 +1,18 @@
#include "global.h"
-#include "battle_ai_script_commands.h"
-#include "pokemon.h"
#include "battle.h"
+#include "battle_ai_script_commands.h"
+#include "battle_factory.h"
#include "battle_setup.h"
+#include "item.h"
+#include "pokemon.h"
+#include "random.h"
#include "recorded_battle.h"
-#include "constants/species.h"
+#include "util.h"
#include "constants/abilities.h"
-#include "random.h"
-#include "item.h"
+#include "constants/battle_ai.h"
#include "constants/battle_move_effects.h"
#include "constants/moves.h"
-#include "util.h"
-#include "constants/battle_ai.h"
+#include "constants/species.h"
#define AI_ACTION_DONE 0x0001
#define AI_ACTION_FLEE 0x0002
@@ -44,8 +45,6 @@ AI scripts.
extern const u8 *const gBattleAI_ScriptsTable[];
-extern u32 GetAiScriptsInBattleFactory();
-
static u8 ChooseMoveOrAction_Singles(void);
static u8 ChooseMoveOrAction_Doubles(void);
static void RecordLastUsedMoveByTarget(void);
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index 40fffd6e5..ad25b483c 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -1,13 +1,13 @@
#include "global.h"
#include "battle.h"
#include "battle_controllers.h"
-#include "constants/abilities.h"
-#include "constants/moves.h"
#include "pokemon.h"
-#include "constants/species.h"
#include "random.h"
#include "util.h"
+#include "constants/abilities.h"
#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/species.h"
// this file's functions
static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng);
@@ -310,7 +310,7 @@ static bool8 AreStatsRaised(void)
u8 buffedStatsValue = 0;
s32 i;
- for (i = 0; i < BATTLE_STATS_NO; i++)
+ for (i = 0; i < NUM_BATTLE_STATS; i++)
{
if (gBattleMons[gActiveBattler].statStages[i] > 6)
buffedStatsValue += gBattleMons[gActiveBattler].statStages[i] - 6;
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 0a5395b02..e8720fcfb 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -1,31 +1,25 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
-#include "constants/battle_anim.h"
-#include "sprite.h"
-#include "contest.h"
-#include "m4a.h"
-#include "pokemon.h"
+#include "battle_controllers.h"
#include "battle_interface.h"
-#include "task.h"
+#include "bg.h"
+#include "contest.h"
#include "decompress.h"
-#include "sound.h"
#include "dma3.h"
-#include "bg.h"
#include "gpu_regs.h"
-#include "palette.h"
+#include "graphics.h"
#include "main.h"
+#include "m4a.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "constants/battle_anim.h"
#define ANIM_SPRITE_INDEX_COUNT 8
-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 struct MusicPlayerInfo gMPlayInfo_BGM;
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
@@ -123,7 +117,1273 @@ EWRAM_DATA u8 gBattleAnimTarget = 0;
EWRAM_DATA u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA u8 gUnknown_02038440 = 0;
-// const rom data
+const struct OamData gUnknown_08524904 =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 0,
+ .priority = 2,
+};
+
+
+const struct OamData gUnknown_0852490C =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524914 =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_0852491C =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524924 =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_0852492C =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524934 =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_0852493C =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524944 =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_0852494C =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524954 =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_0852495C =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524964 =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_0852496C =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524974 =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_0852497C =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524984 =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_0852498C =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524994 =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_0852499C =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_085249A4 =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_085249AC =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_085249B4 =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_085249BC =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_085249C4 =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_085249CC =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_085249D4 =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_085249DC =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_SQUARE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_085249E4 =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_085249EC =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_085249F4 =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_085249FC =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A04 =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A0C =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A14 =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A1C =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A24 =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_SQUARE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A2C =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_SQUARE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A34 =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_SQUARE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A3C =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_SQUARE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A44 =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A4C =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A54 =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A5C =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A64 =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A6C =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A74 =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A7C =
+{
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A84 =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_SQUARE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A8C =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_SQUARE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A94 =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_SQUARE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524A9C =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_SQUARE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524AA4 =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524AAC =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524AB4 =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524ABC =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524AC4 =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524ACC =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524AD4 =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524ADC =
+{
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524AE4 =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_SQUARE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524AEC =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_SQUARE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524AF4 =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_SQUARE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524AFC =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_SQUARE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524B04 =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524B0C =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524B14 =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524B1C =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524B24 =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524B2C =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524B34 =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gUnknown_08524B3C =
+{
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct CompressedSpriteSheet gBattleAnimPicTable[] =
+{
+ {gBattleAnimSpriteSheet_000, 0x0200, ANIM_TAG_BONE},
+ {gBattleAnimSpriteSheet_001, 0x0300, ANIM_TAG_SPARK},
+ {gBattleAnimSpriteSheet_002, 0x0200, ANIM_TAG_PENCIL},
+ {gBattleAnimSpriteSheet_003, 0x0100, ANIM_TAG_AIR_WAVE},
+ {gBattleAnimSpriteSheet_004, 0x0200, ANIM_TAG_UNUSED_ORB},
+ {gBattleAnimSpriteSheet_005, 0x0400, ANIM_TAG_SWORD},
+ {gBattleAnimSpriteSheet_006, 0x0180, ANIM_TAG_SEED},
+ {gBattleAnimSpriteSheet_007, 0x0800, ANIM_TAG_UNUSED_EXPLOSION},
+ {gBattleAnimSpriteSheet_008, 0x0020, ANIM_TAG_UNUSED_PINK_ORB},
+ {gBattleAnimSpriteSheet_009, 0x0400, ANIM_TAG_GUST},
+ {gBattleAnimSpriteSheet_010, 0x1200, ANIM_TAG_ICE_CUBE},
+ {gBattleAnimSpriteSheet_011, 0x0180, ANIM_TAG_SPARK_2},
+ {gBattleAnimSpriteSheet_012, 0x0080, ANIM_TAG_UNUSED_ORANGE},
+ {gBattleAnimSpriteSheet_013, 0x0080, ANIM_TAG_YELLOW_BALL},
+ {gBattleAnimSpriteSheet_014, 0x0280, ANIM_TAG_LOCK_ON},
+ {gBattleAnimSpriteSheet_015, 0x0080, ANIM_TAG_TIED_BAG},
+ {gBattleAnimSpriteSheet_016, 0x0100, ANIM_TAG_BLACK_SMOKE},
+ {gBattleAnimSpriteSheet_017, 0x0020, ANIM_TAG_BLACK_BALL},
+ {gBattleAnimSpriteSheet_018, 0x0080, ANIM_TAG_CONVERSION},
+ {gBattleAnimSpriteSheet_019, 0x0400, ANIM_TAG_UNUSED_GLASS},
+ {gBattleAnimSpriteSheet_020, 0x0200, ANIM_TAG_HORN_HIT},
+ {gBattleAnimSpriteSheet_021, 0x0A00, ANIM_TAG_UNUSED_HIT},
+ {gBattleAnimSpriteSheet_021, 0x0A00, ANIM_TAG_UNUSED_HIT_2},
+ {gBattleAnimSpriteSheet_023, 0x0380, ANIM_TAG_UNUSED_BLUE_SHARDS},
+ {gBattleAnimSpriteSheet_024, 0x0300, ANIM_TAG_UNUSED_CLOSING_EYE},
+ {gBattleAnimSpriteSheet_025, 0x0A00, ANIM_TAG_UNUSED_WAVING_HAND},
+ {gBattleAnimSpriteSheet_026, 0x0A00, ANIM_TAG_UNUSED_HIT_DUPLICATE},
+ {gBattleAnimSpriteSheet_027, 0x0A00, ANIM_TAG_LEER},
+ {gBattleAnimSpriteSheet_028, 0x0A00, ANIM_TAG_UNUSED_BLUE_BURST},
+ {gBattleAnimSpriteSheet_029, 0x0A00, ANIM_TAG_SMALL_EMBER},
+ {gBattleAnimSpriteSheet_030, 0x0A00, ANIM_TAG_GRAY_SMOKE},
+ {gBattleAnimSpriteSheet_031, 0x0E00, ANIM_TAG_BLUE_STAR},
+ {gBattleAnimSpriteSheet_032, 0x0380, ANIM_TAG_UNUSED_BUBBLE_BURST},
+ {gBattleAnimSpriteSheet_033, 0x1000, ANIM_TAG_FIRE},
+ {gBattleAnimSpriteSheet_034, 0x0800, ANIM_TAG_UNUSED_SPINNING_FIRE},
+ {gBattleAnimSpriteSheet_035, 0x0A00, ANIM_TAG_FIRE_PLUME},
+ {gBattleAnimSpriteSheet_036, 0x0800, ANIM_TAG_UNUSED_LIGHTNING},
+ {gBattleAnimSpriteSheet_037, 0x0A00, ANIM_TAG_LIGHTNING},
+ {gBattleAnimSpriteSheet_038, 0x0A00, ANIM_TAG_UNUSED_CLAW_SLASH},
+ {gBattleAnimSpriteSheet_039, 0x0A00, ANIM_TAG_CLAW_SLASH},
+ {gBattleAnimSpriteSheet_040, 0x0A00, ANIM_TAG_UNUSED_SCRATCH},
+ {gBattleAnimSpriteSheet_041, 0x0A00, ANIM_TAG_UNUSED_SCRATCH_2},
+ {gBattleAnimSpriteSheet_042, 0x0A00, ANIM_TAG_UNUSED_BUBBLE_BURST_2},
+ {gBattleAnimSpriteSheet_043, 0x0A00, ANIM_TAG_ICE_CHUNK},
+ {gBattleAnimSpriteSheet_044, 0x0A00, ANIM_TAG_UNUSED_GLASS_2},
+ {gBattleAnimSpriteSheet_045, 0x0A00, ANIM_TAG_UNUSED_PINK_HEART},
+ {gBattleAnimSpriteSheet_046, 0x1000, ANIM_TAG_UNUSED_SAP_DRIP},
+ {gBattleAnimSpriteSheet_046, 0x1000, ANIM_TAG_UNUSED_SAP_DRIP_2},
+ {gBattleAnimSpriteSheet_048, 0x1000, ANIM_TAG_SPARKLE_1},
+ {gBattleAnimSpriteSheet_048, 0x1000, ANIM_TAG_SPARKLE_2},
+ {gBattleAnimSpriteSheet_050, 0x0200, ANIM_TAG_HUMANOID_FOOT},
+ {gBattleAnimSpriteSheet_051, 0x0200, ANIM_TAG_UNUSED_MONSTER_FOOT},
+ {gBattleAnimSpriteSheet_052, 0x0200, ANIM_TAG_UNUSED_HUMANOID_HAND},
+ {gBattleAnimSpriteSheet_053, 0x0800, ANIM_TAG_NOISE_LINE},
+ {gBattleAnimSpriteSheet_054, 0x0080, ANIM_TAG_UNUSED_YELLOW_UNK},
+ {gBattleAnimSpriteSheet_055, 0x0200, ANIM_TAG_UNUSED_RED_FIST},
+ {gBattleAnimSpriteSheet_056, 0x1000, ANIM_TAG_SLAM_HIT},
+ {gBattleAnimSpriteSheet_057, 0x0180, ANIM_TAG_UNUSED_RING},
+ {gBattleAnimSpriteSheet_058, 0x0C00, ANIM_TAG_ROCKS},
+ {gBattleAnimSpriteSheet_059, 0x0100, ANIM_TAG_UNUSED_Z},
+ {gBattleAnimSpriteSheet_060, 0x0040, ANIM_TAG_UNUSED_YELLOW_UNK_2},
+ {gBattleAnimSpriteSheet_061, 0x0180, ANIM_TAG_UNUSED_AIR_SLASH},
+ {gBattleAnimSpriteSheet_062, 0x0800, ANIM_TAG_UNUSED_SPINNING_GREEN_ORBS},
+ {gBattleAnimSpriteSheet_063, 0x0480, ANIM_TAG_LEAF},
+ {gBattleAnimSpriteSheet_064, 0x0200, ANIM_TAG_FINGER},
+ {gBattleAnimSpriteSheet_065, 0x0200, ANIM_TAG_POISON_POWDER},
+ {gBattleAnimSpriteSheet_066, 0x0100, ANIM_TAG_UNUSED_BROWN_TRIANGLE},
+ {gBattleAnimSpriteSheet_065, 0x0200, ANIM_TAG_SLEEP_POWDER},
+ {gBattleAnimSpriteSheet_065, 0x0200, ANIM_TAG_STUN_SPORE},
+ {gBattleAnimSpriteSheet_065, 0x0200, ANIM_TAG_UNUSED_POWDER},
+ {gBattleAnimSpriteSheet_070, 0x0200, ANIM_TAG_SPARKLE_3},
+ {gBattleAnimSpriteSheet_071, 0x0A00, ANIM_TAG_SPARKLE_4},
+ {gBattleAnimSpriteSheet_072, 0x0300, ANIM_TAG_MUSIC_NOTES},
+ {gBattleAnimSpriteSheet_073, 0x0180, ANIM_TAG_DUCK},
+ {gBattleAnimSpriteSheet_074, 0x00A0, ANIM_TAG_MUD_SAND},
+ {gBattleAnimSpriteSheet_075, 0x0700, ANIM_TAG_ALERT},
+ {gBattleAnimSpriteSheet_076, 0x0400, ANIM_TAG_UNUSED_BLUE_FLAMES},
+ {gBattleAnimSpriteSheet_077, 0x0200, ANIM_TAG_UNUSED_BLUE_FLAMES_2},
+ {gBattleAnimSpriteSheet_078, 0x0300, ANIM_TAG_UNUSED_SHOCK},
+ {gBattleAnimSpriteSheet_079, 0x0C00, ANIM_TAG_SHOCK},
+ {gBattleAnimSpriteSheet_080, 0x0A00, ANIM_TAG_UNUSED_BELL},
+ {gBattleAnimSpriteSheet_081, 0x0080, ANIM_TAG_UNUSED_PINK_GLOVE},
+ {gBattleAnimSpriteSheet_082, 0x0040, ANIM_TAG_UNUSED_BLUE_LINES},
+ {gBattleAnimSpriteSheet_083, 0x0E00, ANIM_TAG_UNUSED_IMPACT},
+ {gBattleAnimSpriteSheet_084, 0x0E00, ANIM_TAG_UNUSED_IMPACT_2},
+ {gBattleAnimSpriteSheet_085, 0x0280, ANIM_TAG_UNUSED_RETICLE},
+ {gBattleAnimSpriteSheet_086, 0x0200, ANIM_TAG_BREATH},
+ {gBattleAnimSpriteSheet_087, 0x0080, ANIM_TAG_ANGER},
+ {gBattleAnimSpriteSheet_088, 0x00C0, ANIM_TAG_UNUSED_SNOWBALL},
+ {gBattleAnimSpriteSheet_089, 0x0A00, ANIM_TAG_UNUSED_VINE},
+ {gBattleAnimSpriteSheet_090, 0x0200, ANIM_TAG_UNUSED_SWORD},
+ {gBattleAnimSpriteSheet_091, 0x0180, ANIM_TAG_UNUSED_CLAPPING},
+ {gBattleAnimSpriteSheet_092, 0x0080, ANIM_TAG_UNUSED_RED_TUBE},
+ {gBattleAnimSpriteSheet_093, 0x1000, ANIM_TAG_AMNESIA},
+ {gBattleAnimSpriteSheet_094, 0x0A00, ANIM_TAG_UNUSED_STRING},
+ {gBattleAnimSpriteSheet_095, 0x0180, ANIM_TAG_UNUSED_PENCIL},
+ {gBattleAnimSpriteSheet_096, 0x0380, ANIM_TAG_UNUSED_PETAL},
+ {gBattleAnimSpriteSheet_097, 0x0C00, ANIM_TAG_BENT_SPOON},
+ {gBattleAnimSpriteSheet_098, 0x0200, ANIM_TAG_UNUSED_WEB},
+ {gBattleAnimSpriteSheet_099, 0x0200, ANIM_TAG_MILK_BOTTLE},
+ {gBattleAnimSpriteSheet_100, 0x0200, ANIM_TAG_COIN},
+ {gBattleAnimSpriteSheet_101, 0x0200, ANIM_TAG_UNUSED_CRACKED_EGG},
+ {gBattleAnimSpriteSheet_102, 0x0400, ANIM_TAG_UNUSED_HATCHED_EGG},
+ {gBattleAnimSpriteSheet_103, 0x0080, ANIM_TAG_UNUSED_FRESH_EGG},
+ {gBattleAnimSpriteSheet_104, 0x0400, ANIM_TAG_UNUSED_FANGS},
+ {gBattleAnimSpriteSheet_105, 0x0c00, ANIM_TAG_UNUSED_EXPLOSION_2},
+ {gBattleAnimSpriteSheet_106, 0x0200, ANIM_TAG_UNUSED_EXPLOSION_3},
+ {gBattleAnimSpriteSheet_107, 0x1000, ANIM_TAG_UNUSED_WATER_DROPLET},
+ {gBattleAnimSpriteSheet_108, 0x0a00, ANIM_TAG_UNUSED_WATER_DROPLET_2},
+ {gBattleAnimSpriteSheet_109, 0x0020, ANIM_TAG_UNUSED_SEED},
+ {gBattleAnimSpriteSheet_110, 0x0e00, ANIM_TAG_UNUSED_SPROUT},
+ {gBattleAnimSpriteSheet_111, 0x0080, ANIM_TAG_UNUSED_RED_WAND},
+ {gBattleAnimSpriteSheet_112, 0x0a00, ANIM_TAG_UNUSED_PURPLE_GREEN_UNK},
+ {gBattleAnimSpriteSheet_113, 0x0400, ANIM_TAG_UNUSED_WATER_COLUMN},
+ {gBattleAnimSpriteSheet_114, 0x0200, ANIM_TAG_UNUSED_MUD_UNK},
+ {gBattleAnimSpriteSheet_115, 0x0700, ANIM_TAG_RAIN_DROPS},
+ {gBattleAnimSpriteSheet_116, 0x0800, ANIM_TAG_UNUSED_FURY_SWIPES},
+ {gBattleAnimSpriteSheet_117, 0x0a00, ANIM_TAG_UNUSED_VINE_2},
+ {gBattleAnimSpriteSheet_118, 0x0600, ANIM_TAG_UNUSED_TEETH},
+ {gBattleAnimSpriteSheet_119, 0x0800, ANIM_TAG_UNUSED_BONE},
+ {gBattleAnimSpriteSheet_120, 0x0200, ANIM_TAG_UNUSED_WHITE_BAG},
+ {gBattleAnimSpriteSheet_121, 0x0040, ANIM_TAG_UNUSED_UNKNOWN},
+ {gBattleAnimSpriteSheet_122, 0x0180, ANIM_TAG_UNUSED_PURPLE_CORAL},
+ {gBattleAnimSpriteSheet_123, 0x0600, ANIM_TAG_UNUSED_PURPLE_DROPLET},
+ {gBattleAnimSpriteSheet_124, 0x0600, ANIM_TAG_UNUSED_SHOCK_2},
+ {gBattleAnimSpriteSheet_125, 0x0200, ANIM_TAG_UNUSED_CLOSING_EYE_2},
+ {gBattleAnimSpriteSheet_126, 0x0080, ANIM_TAG_UNUSED_METAL_BALL},
+ {gBattleAnimSpriteSheet_127, 0x0200, ANIM_TAG_UNUSED_MONSTER_DOLL},
+ {gBattleAnimSpriteSheet_128, 0x0800, ANIM_TAG_UNUSED_WHIRLWIND},
+ {gBattleAnimSpriteSheet_129, 0x0080, ANIM_TAG_UNUSED_WHIRLWIND_2},
+ {gBattleAnimSpriteSheet_130, 0x0a00, ANIM_TAG_UNUSED_EXPLOSION_4},
+ {gBattleAnimSpriteSheet_131, 0x0280, ANIM_TAG_UNUSED_EXPLOSION_5},
+ {gBattleAnimSpriteSheet_132, 0x0280, ANIM_TAG_UNUSED_TONGUE},
+ {gBattleAnimSpriteSheet_133, 0x0100, ANIM_TAG_UNUSED_SMOKE},
+ {gBattleAnimSpriteSheet_134, 0x0200, ANIM_TAG_UNUSED_SMOKE_2},
+ {gBattleAnimSpriteSheet_135, 0x0200, ANIM_TAG_IMPACT},
+ {gBattleAnimSpriteSheet_136, 0x0020, ANIM_TAG_CIRCLE_IMPACT},
+ {gBattleAnimSpriteSheet_137, 0x0a00, ANIM_TAG_SCRATCH},
+ {gBattleAnimSpriteSheet_138, 0x0800, ANIM_TAG_CUT},
+ {gBattleAnimSpriteSheet_139, 0x0800, ANIM_TAG_SHARP_TEETH},
+ {gBattleAnimSpriteSheet_140, 0x00c0, ANIM_TAG_RAINBOW_RINGS},
+ {gBattleAnimSpriteSheet_141, 0x01c0, ANIM_TAG_ICE_CRYSTALS},
+ {gBattleAnimSpriteSheet_142, 0x0100, ANIM_TAG_ICE_SPIKES},
+ {gBattleAnimSpriteSheet_143, 0x0800, ANIM_TAG_HANDS_AND_FEET},
+ {gBattleAnimSpriteSheet_144, 0x0200, ANIM_TAG_MIST_CLOUD},
+ {gBattleAnimSpriteSheet_145, 0x0800, ANIM_TAG_CLAMP},
+ {gBattleAnimSpriteSheet_146, 0x0180, ANIM_TAG_BUBBLE},
+ {gBattleAnimSpriteSheet_147, 0x0180, ANIM_TAG_ORBS},
+ {gBattleAnimSpriteSheet_148, 0x0200, ANIM_TAG_WATER_IMPACT},
+ {gBattleAnimSpriteSheet_149, 0x0200, ANIM_TAG_WATER_ORB},
+ {gBattleAnimSpriteSheet_150, 0x0180, ANIM_TAG_POISON_BUBBLE},
+ {gBattleAnimSpriteSheet_151, 0x0400, ANIM_TAG_TOXIC_BUBBLE},
+ {gBattleAnimSpriteSheet_152, 0x0080, ANIM_TAG_SPIKES},
+ {gBattleAnimSpriteSheet_153, 0x0100, ANIM_TAG_HORN_HIT_2},
+ {gBattleAnimSpriteSheet_154, 0x0100, ANIM_TAG_AIR_WAVE_2},
+ {gBattleAnimSpriteSheet_155, 0x0140, ANIM_TAG_SMALL_BUBBLES},
+ {gBattleAnimSpriteSheet_156, 0x0800, ANIM_TAG_ROUND_SHADOW},
+ {gBattleAnimSpriteSheet_157, 0x0200, ANIM_TAG_SUNLIGHT},
+ {gBattleAnimSpriteSheet_158, 0x0100, ANIM_TAG_SPORE},
+ {gBattleAnimSpriteSheet_159, 0x00a0, ANIM_TAG_FLOWER},
+ {gBattleAnimSpriteSheet_160, 0x0100, ANIM_TAG_RAZOR_LEAF},
+ {gBattleAnimSpriteSheet_161, 0x0080, ANIM_TAG_NEEDLE},
+ {gBattleAnimSpriteSheet_162, 0x0300, ANIM_TAG_WHIRLWIND_LINES},
+ {gBattleAnimSpriteSheet_163, 0x0100, ANIM_TAG_GOLD_RING},
+ {gBattleAnimSpriteSheet_163, 0x0100, ANIM_TAG_PURPLE_RING},
+ {gBattleAnimSpriteSheet_163, 0x0100, ANIM_TAG_BLUE_RING},
+ {gBattleAnimSpriteSheet_166, 0x0800, ANIM_TAG_GREEN_LIGHT_WALL},
+ {gBattleAnimSpriteSheet_166, 0x0800, ANIM_TAG_BLUE_LIGHT_WALL},
+ {gBattleAnimSpriteSheet_166, 0x0800, ANIM_TAG_RED_LIGHT_WALL},
+ {gBattleAnimSpriteSheet_166, 0x0800, ANIM_TAG_GRAY_LIGHT_WALL},
+ {gBattleAnimSpriteSheet_166, 0x0800, ANIM_TAG_ORANGE_LIGHT_WALL},
+ {gBattleAnimSpriteSheet_171, 0x0080, ANIM_TAG_BLACK_BALL_2},
+ {gBattleAnimSpriteSheet_144, 0x0200, ANIM_TAG_PURPLE_GAS_CLOUD},
+ {gBattleAnimSpriteSheet_173, 0x0200, ANIM_TAG_SPARK_H},
+ {gBattleAnimSpriteSheet_174, 0x0200, ANIM_TAG_YELLOW_STAR},
+ {gBattleAnimSpriteSheet_175, 0x0080, ANIM_TAG_LARGE_FRESH_EGG},
+ {gBattleAnimSpriteSheet_176, 0x0200, ANIM_TAG_SHADOW_BALL},
+ {gBattleAnimSpriteSheet_177, 0x0500, ANIM_TAG_LICK},
+ {gBattleAnimSpriteSheet_178, 0x0800, ANIM_TAG_UNUSED_VOID_LINES},
+ {gBattleAnimSpriteSheet_179, 0x0400, ANIM_TAG_STRING},
+ {gBattleAnimSpriteSheet_180, 0x0020, ANIM_TAG_WEB_THREAD},
+ {gBattleAnimSpriteSheet_181, 0x0800, ANIM_TAG_SPIDER_WEB},
+ {gBattleAnimSpriteSheet_182, 0x0100, ANIM_TAG_UNUSED_LIGHTBULB},
+ {gBattleAnimSpriteSheet_183, 0x0800, ANIM_TAG_SLASH},
+ {gBattleAnimSpriteSheet_184, 0x0400, ANIM_TAG_FOCUS_ENERGY},
+ {gBattleAnimSpriteSheet_185, 0x0a00, ANIM_TAG_SPHERE_TO_CUBE},
+ {gBattleAnimSpriteSheet_186, 0x1000, ANIM_TAG_TENDRILS},
+ {gBattleAnimSpriteSheet_187, 0x0800, ANIM_TAG_EYE},
+ {gBattleAnimSpriteSheet_188, 0x0400, ANIM_TAG_WHITE_SHADOW},
+ {gBattleAnimSpriteSheet_189, 0x0200, ANIM_TAG_TEAL_ALERT},
+ {gBattleAnimSpriteSheet_190, 0x0800, ANIM_TAG_OPENING_EYE},
+ {gBattleAnimSpriteSheet_191, 0x0800, ANIM_TAG_ROUND_WHITE_HALO},
+ {gBattleAnimSpriteSheet_192, 0x0800, ANIM_TAG_FANG_ATTACK},
+ {gBattleAnimSpriteSheet_193, 0x0200, ANIM_TAG_PURPLE_HAND_OUTLINE},
+ {gBattleAnimSpriteSheet_194, 0x0800, ANIM_TAG_MOON},
+ {gBattleAnimSpriteSheet_195, 0x0200, ANIM_TAG_GREEN_SPARKLE},
+ {gBattleAnimSpriteSheet_196, 0x0800, ANIM_TAG_SPIRAL},
+ {gBattleAnimSpriteSheet_197, 0x0200, ANIM_TAG_SNORE_Z},
+ {gBattleAnimSpriteSheet_198, 0x0800, ANIM_TAG_EXPLOSION},
+ {gBattleAnimSpriteSheet_199, 0x0400, ANIM_TAG_NAIL},
+ {gBattleAnimSpriteSheet_200, 0x0200, ANIM_TAG_GHOSTLY_SPIRIT},
+ {gBattleAnimSpriteSheet_201, 0x0a80, ANIM_TAG_WARM_ROCK},
+ {gBattleAnimSpriteSheet_202, 0x0600, ANIM_TAG_BREAKING_EGG},
+ {gBattleAnimSpriteSheet_203, 0x0800, ANIM_TAG_THIN_RING},
+ {gBattleAnimSpriteSheet_204, 0x0200, ANIM_TAG_UNUSED_PUNCH_IMPACT},
+ {gBattleAnimSpriteSheet_205, 0x0600, ANIM_TAG_BELL},
+ {gBattleAnimSpriteSheet_206, 0x0800, ANIM_TAG_MUSIC_NOTES_2},
+ {gBattleAnimSpriteSheet_207, 0x0180, ANIM_TAG_SPEED_DUST},
+ {gBattleAnimSpriteSheet_208, 0x0800, ANIM_TAG_TORN_METAL},
+ {gBattleAnimSpriteSheet_209, 0x0800, ANIM_TAG_THOUGHT_BUBBLE},
+ {gBattleAnimSpriteSheet_210, 0x0080, ANIM_TAG_MAGENTA_HEART},
+ {gBattleAnimSpriteSheet_211, 0x0080, ANIM_TAG_ELECTRIC_ORBS},
+ {gBattleAnimSpriteSheet_212, 0x0800, ANIM_TAG_CIRCLE_OF_LIGHT},
+ {gBattleAnimSpriteSheet_213, 0x0800, ANIM_TAG_ELECTRICITY},
+ {gBattleAnimSpriteSheet_214, 0x0600, ANIM_TAG_FINGER_2},
+ {gBattleAnimSpriteSheet_215, 0x0600, ANIM_TAG_MOVEMENT_WAVES},
+ {gBattleAnimSpriteSheet_210, 0x0080, ANIM_TAG_RED_HEART},
+ {gBattleAnimSpriteSheet_217, 0x0080, ANIM_TAG_RED_ORB},
+ {gBattleAnimSpriteSheet_218, 0x0180, ANIM_TAG_EYE_SPARKLE},
+ {gBattleAnimSpriteSheet_210, 0x0080, ANIM_TAG_PINK_HEART},
+ {gBattleAnimSpriteSheet_220, 0x0200, ANIM_TAG_ANGEL},
+ {gBattleAnimSpriteSheet_221, 0x0400, ANIM_TAG_DEVIL},
+ {gBattleAnimSpriteSheet_222, 0x0a00, ANIM_TAG_SWIPE},
+ {gBattleAnimSpriteSheet_223, 0x0800, ANIM_TAG_ROOTS},
+ {gBattleAnimSpriteSheet_224, 0x0200, ANIM_TAG_ITEM_BAG},
+ {gBattleAnimSpriteSheet_225, 0x0400, ANIM_TAG_JAGGED_MUSIC_NOTE},
+ {gBattleAnimSpriteSheet_226, 0x0080, ANIM_TAG_POKEBALL},
+ {gBattleAnimSpriteSheet_227, 0x0800, ANIM_TAG_SPOTLIGHT},
+ {gBattleAnimSpriteSheet_228, 0x0200, ANIM_TAG_LETTER_Z},
+ {gBattleAnimSpriteSheet_229, 0x0300, ANIM_TAG_RAPID_SPIN},
+ {gBattleAnimSpriteSheet_230, 0x0800, ANIM_TAG_TRI_FORCE_TRIANGLE},
+ {gBattleAnimSpriteSheet_231, 0x0380, ANIM_TAG_WISP_ORB},
+ {gBattleAnimSpriteSheet_232, 0x0800, ANIM_TAG_WISP_FIRE},
+ {gBattleAnimSpriteSheet_233, 0x00c0, ANIM_TAG_GOLD_STARS},
+ {gBattleAnimSpriteSheet_234, 0x0800, ANIM_TAG_ECLIPSING_ORB},
+ {gBattleAnimSpriteSheet_235, 0x0060, ANIM_TAG_GRAY_ORB},
+ {gBattleAnimSpriteSheet_235, 0x0060, ANIM_TAG_BLUE_ORB},
+ {gBattleAnimSpriteSheet_235, 0x0060, ANIM_TAG_RED_ORB_2},
+ {gBattleAnimSpriteSheet_238, 0x0080, ANIM_TAG_PINK_PETAL},
+ {gBattleAnimSpriteSheet_239, 0x0180, ANIM_TAG_PAIN_SPLIT},
+ {gBattleAnimSpriteSheet_240, 0x0180, ANIM_TAG_CONFETTI},
+ {gBattleAnimSpriteSheet_241, 0x0200, ANIM_TAG_GREEN_STAR},
+ {gBattleAnimSpriteSheet_242, 0x0200, ANIM_TAG_PINK_CLOUD},
+ {gBattleAnimSpriteSheet_243, 0x0020, ANIM_TAG_SWEAT_DROP},
+ {gBattleAnimSpriteSheet_244, 0x0400, ANIM_TAG_GUARD_RING},
+ {gBattleAnimSpriteSheet_245, 0x0600, ANIM_TAG_PURPLE_SCRATCH},
+ {gBattleAnimSpriteSheet_246, 0x1000, ANIM_TAG_PURPLE_SWIPE},
+ {gBattleAnimSpriteSheet_247, 0x0400, ANIM_TAG_TAG_HAND},
+ {gBattleAnimSpriteSheet_248, 0x0020, ANIM_TAG_SMALL_RED_EYE},
+ {gBattleAnimSpriteSheet_249, 0x0080, ANIM_TAG_HOLLOW_ORB},
+ {gBattleAnimSpriteSheet_250, 0x0800, ANIM_TAG_X_SIGN},
+ {gBattleAnimSpriteSheet_251, 0x0080, ANIM_TAG_BLUEGREEN_ORB},
+ {gBattleAnimSpriteSheet_252, 0x0200, ANIM_TAG_PAW_PRINT},
+ {gBattleAnimSpriteSheet_253, 0x0400, ANIM_TAG_PURPLE_FLAME},
+ {gBattleAnimSpriteSheet_254, 0x0200, ANIM_TAG_RED_BALL},
+ {gBattleAnimSpriteSheet_255, 0x0200, ANIM_TAG_SMELLINGSALT_EFFECT},
+ {gBattleAnimSpriteSheet_256, 0x0800, ANIM_TAG_METEOR},
+ {gBattleAnimSpriteSheet_257, 0x0280, ANIM_TAG_FLAT_ROCK},
+ {gBattleAnimSpriteSheet_258, 0x0200, ANIM_TAG_MAGNIFYING_GLASS},
+ {gBattleAnimSpriteSheet_149, 0x0200, ANIM_TAG_BROWN_ORB},
+ {gBattleAnimSpriteSheet_260, 0x0400, ANIM_TAG_METAL_SOUND_WAVES},
+ {gBattleAnimSpriteSheet_261, 0x0200, ANIM_TAG_FLYING_DIRT},
+ {gBattleAnimSpriteSheet_262, 0x0200, ANIM_TAG_ICICLE_SPEAR},
+ {gBattleAnimSpriteSheet_263, 0x0080, ANIM_TAG_HAIL},
+ {gBattleAnimSpriteSheet_264, 0x0020, ANIM_TAG_GLOWY_RED_ORB},
+ {gBattleAnimSpriteSheet_264, 0x0020, ANIM_TAG_GLOWY_GREEN_ORB},
+ {gBattleAnimSpriteSheet_266, 0x0080, ANIM_TAG_GREEN_SPIKE},
+ {gBattleAnimSpriteSheet_212, 0x0800, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT},
+ {gBattleAnimSpriteSheet_264, 0x0020, ANIM_TAG_GLOWY_BLUE_ORB},
+ {gBattleAnimSpriteSheet_269, 0x0080, ANIM_TAG_UNUSED_RED_BRICK},
+ {gBattleAnimSpriteSheet_270, 0x0400, ANIM_TAG_WHITE_FEATHER},
+ {gBattleAnimSpriteSheet_271, 0x0080, ANIM_TAG_SPARKLE_6},
+ {gBattleAnimSpriteSheet_272, 0x0800, ANIM_TAG_SPLASH},
+ {gBattleAnimSpriteSheet_273, 0x0020, ANIM_TAG_SWEAT_BEAD},
+ {gBattleAnimSpriteSheet_274, 0x0800, ANIM_TAG_UNUSED_GEM_1},
+ {gBattleAnimSpriteSheet_275, 0x0800, ANIM_TAG_UNUSED_GEM_2},
+ {gBattleAnimSpriteSheet_276, 0x0800, ANIM_TAG_UNUSED_GEM_3},
+ {gBattleAnimSpriteSheet_277, 0x1000, ANIM_TAG_SLAM_HIT_2},
+ {gBattleAnimSpriteSheet_278, 0x0800, ANIM_TAG_RECYCLE},
+ {gBattleAnimSpriteSheet_279, 0x00a0, ANIM_TAG_UNUSED_RED_PARTICLES},
+ {gBattleAnimSpriteSheet_280, 0x0800, ANIM_TAG_PROTECT},
+ {gBattleAnimSpriteSheet_281, 0x0200, ANIM_TAG_DIRT_MOUND},
+ {gBattleAnimSpriteSheet_282, 0x0600, ANIM_TAG_SHOCK_3},
+ {gBattleAnimSpriteSheet_283, 0x0200, ANIM_TAG_WEATHER_BALL},
+ {gBattleAnimSpriteSheet_284, 0x0800, ANIM_TAG_BIRD},
+ {gBattleAnimSpriteSheet_285, 0x0200, ANIM_TAG_CROSS_IMPACT},
+ {gBattleAnimSpriteSheet_183, 0x0800, ANIM_TAG_SLASH_2},
+ {gBattleAnimSpriteSheet_056, 0x1000, ANIM_TAG_WHIP_HIT},
+ {gBattleAnimSpriteSheet_163, 0x0100, ANIM_TAG_BLUE_RING_2},
+};
+
+
+const struct CompressedSpritePalette gBattleAnimPaletteTable[] =
+{
+ {gBattleAnimSpritePalette_000, ANIM_TAG_BONE},
+ {gBattleAnimSpritePalette_001, ANIM_TAG_SPARK},
+ {gBattleAnimSpritePalette_002, ANIM_TAG_PENCIL},
+ {gBattleAnimSpritePalette_003, ANIM_TAG_AIR_WAVE},
+ {gBattleAnimSpritePalette_004, ANIM_TAG_UNUSED_ORB},
+ {gBattleAnimSpritePalette_005, ANIM_TAG_SWORD},
+ {gBattleAnimSpritePalette_006, ANIM_TAG_SEED},
+ {gBattleAnimSpritePalette_007, ANIM_TAG_UNUSED_EXPLOSION},
+ {gBattleAnimSpritePalette_008, ANIM_TAG_UNUSED_PINK_ORB},
+ {gBattleAnimSpritePalette_009, ANIM_TAG_GUST},
+ {gBattleAnimSpritePalette_010, ANIM_TAG_ICE_CUBE},
+ {gBattleAnimSpritePalette_011, ANIM_TAG_SPARK_2},
+ {gBattleAnimSpritePalette_012, ANIM_TAG_UNUSED_ORANGE},
+ {gBattleAnimSpritePalette_013, ANIM_TAG_YELLOW_BALL},
+ {gBattleAnimSpritePalette_014, ANIM_TAG_LOCK_ON},
+ {gBattleAnimSpritePalette_015, ANIM_TAG_TIED_BAG},
+ {gBattleAnimSpritePalette_016, ANIM_TAG_BLACK_SMOKE},
+ {gBattleAnimSpritePalette_016, ANIM_TAG_BLACK_BALL},
+ {gBattleAnimSpritePalette_018, ANIM_TAG_CONVERSION},
+ {gBattleAnimSpritePalette_019, ANIM_TAG_UNUSED_GLASS},
+ {gBattleAnimSpritePalette_020, ANIM_TAG_HORN_HIT},
+ {gBattleAnimSpritePalette_021, ANIM_TAG_UNUSED_HIT},
+ {gBattleAnimSpritePalette_022, ANIM_TAG_UNUSED_HIT_2},
+ {gBattleAnimSpritePalette_023, ANIM_TAG_UNUSED_BLUE_SHARDS},
+ {gBattleAnimSpritePalette_024, ANIM_TAG_UNUSED_CLOSING_EYE},
+ {gBattleAnimSpritePalette_025, ANIM_TAG_UNUSED_WAVING_HAND},
+ {gBattleAnimSpritePalette_026, ANIM_TAG_UNUSED_HIT_DUPLICATE},
+ {gBattleAnimSpritePalette_027, ANIM_TAG_LEER},
+ {gBattleAnimSpritePalette_028, ANIM_TAG_UNUSED_BLUE_BURST},
+ {gBattleAnimSpritePalette_029, ANIM_TAG_SMALL_EMBER},
+ {gBattleAnimSpritePalette_030, ANIM_TAG_GRAY_SMOKE},
+ {gBattleAnimSpritePalette_031, ANIM_TAG_BLUE_STAR},
+ {gBattleAnimSpritePalette_032, ANIM_TAG_UNUSED_BUBBLE_BURST},
+ {gBattleAnimSpritePalette_033, ANIM_TAG_FIRE},
+ {gBattleAnimSpritePalette_033, ANIM_TAG_UNUSED_SPINNING_FIRE},
+ {gBattleAnimSpritePalette_033, ANIM_TAG_FIRE_PLUME},
+ {gBattleAnimSpritePalette_036, ANIM_TAG_UNUSED_LIGHTNING},
+ {gBattleAnimSpritePalette_036, ANIM_TAG_LIGHTNING},
+ {gBattleAnimSpritePalette_038, ANIM_TAG_UNUSED_CLAW_SLASH},
+ {gBattleAnimSpritePalette_039, ANIM_TAG_CLAW_SLASH},
+ {gBattleAnimSpritePalette_038, ANIM_TAG_UNUSED_SCRATCH},
+ {gBattleAnimSpritePalette_038, ANIM_TAG_UNUSED_SCRATCH_2},
+ {gBattleAnimSpritePalette_042, ANIM_TAG_UNUSED_BUBBLE_BURST_2},
+ {gBattleAnimSpritePalette_043, ANIM_TAG_ICE_CHUNK},
+ {gBattleAnimSpritePalette_044, ANIM_TAG_UNUSED_GLASS_2},
+ {gBattleAnimSpritePalette_045, ANIM_TAG_UNUSED_PINK_HEART},
+ {gBattleAnimSpritePalette_046, ANIM_TAG_UNUSED_SAP_DRIP},
+ {gBattleAnimSpritePalette_047, ANIM_TAG_UNUSED_SAP_DRIP},
+ {gBattleAnimSpritePalette_048, ANIM_TAG_SPARKLE_1},
+ {gBattleAnimSpritePalette_049, ANIM_TAG_SPARKLE_2},
+ {gBattleAnimSpritePalette_050, ANIM_TAG_HUMANOID_FOOT},
+ {gBattleAnimSpritePalette_050, ANIM_TAG_UNUSED_MONSTER_FOOT},
+ {gBattleAnimSpritePalette_050, ANIM_TAG_UNUSED_HUMANOID_HAND},
+ {gBattleAnimSpritePalette_026, ANIM_TAG_NOISE_LINE},
+ {gBattleAnimSpritePalette_054, ANIM_TAG_UNUSED_YELLOW_UNK},
+ {gBattleAnimSpritePalette_050, ANIM_TAG_UNUSED_RED_FIST},
+ {gBattleAnimSpritePalette_056, ANIM_TAG_SLAM_HIT},
+ {gBattleAnimSpritePalette_057, ANIM_TAG_UNUSED_RING},
+ {gBattleAnimSpritePalette_058, ANIM_TAG_ROCKS},
+ {gBattleAnimSpritePalette_059, ANIM_TAG_UNUSED_Z},
+ {gBattleAnimSpritePalette_060, ANIM_TAG_UNUSED_YELLOW_UNK_2},
+ {gBattleAnimSpritePalette_061, ANIM_TAG_UNUSED_AIR_SLASH},
+ {gBattleAnimSpritePalette_062, ANIM_TAG_UNUSED_SPINNING_GREEN_ORBS},
+ {gBattleAnimSpritePalette_063, ANIM_TAG_LEAF},
+ {gBattleAnimSpritePalette_064, ANIM_TAG_FINGER},
+ {gBattleAnimSpritePalette_065, ANIM_TAG_POISON_POWDER},
+ {gBattleAnimSpritePalette_066, ANIM_TAG_UNUSED_BROWN_TRIANGLE},
+ {gBattleAnimSpritePalette_067, ANIM_TAG_SLEEP_POWDER},
+ {gBattleAnimSpritePalette_068, ANIM_TAG_STUN_SPORE},
+ {gBattleAnimSpritePalette_065, ANIM_TAG_UNUSED_POWDER},
+ {gBattleAnimSpritePalette_070, ANIM_TAG_SPARKLE_3},
+ {gBattleAnimSpritePalette_070, ANIM_TAG_SPARKLE_4},
+ {gBattleAnimSpritePalette_072, ANIM_TAG_MUSIC_NOTES},
+ {gBattleAnimSpritePalette_073, ANIM_TAG_DUCK},
+ {gBattleAnimSpritePalette_074, ANIM_TAG_MUD_SAND},
+ {gBattleAnimSpritePalette_075, ANIM_TAG_ALERT},
+ {gBattleAnimSpritePalette_076, ANIM_TAG_UNUSED_BLUE_FLAMES},
+ {gBattleAnimSpritePalette_076, ANIM_TAG_UNUSED_BLUE_FLAMES_2},
+ {gBattleAnimSpritePalette_078, ANIM_TAG_UNUSED_SHOCK},
+ {gBattleAnimSpritePalette_078, ANIM_TAG_SHOCK},
+ {gBattleAnimSpritePalette_080, ANIM_TAG_UNUSED_BELL},
+ {gBattleAnimSpritePalette_081, ANIM_TAG_UNUSED_PINK_GLOVE},
+ {gBattleAnimSpritePalette_082, ANIM_TAG_UNUSED_BLUE_LINES},
+ {gBattleAnimSpritePalette_083, ANIM_TAG_UNUSED_IMPACT},
+ {gBattleAnimSpritePalette_084, ANIM_TAG_UNUSED_IMPACT_2},
+ {gBattleAnimSpritePalette_085, ANIM_TAG_UNUSED_RETICLE},
+ {gBattleAnimSpritePalette_086, ANIM_TAG_BREATH},
+ {gBattleAnimSpritePalette_087, ANIM_TAG_ANGER},
+ {gBattleAnimSpritePalette_088, ANIM_TAG_UNUSED_SNOWBALL},
+ {gBattleAnimSpritePalette_089, ANIM_TAG_UNUSED_VINE},
+ {gBattleAnimSpritePalette_090, ANIM_TAG_UNUSED_SWORD},
+ {gBattleAnimSpritePalette_091, ANIM_TAG_UNUSED_CLAPPING},
+ {gBattleAnimSpritePalette_092, ANIM_TAG_UNUSED_RED_TUBE},
+ {gBattleAnimSpritePalette_093, ANIM_TAG_AMNESIA},
+ {gBattleAnimSpritePalette_094, ANIM_TAG_UNUSED_STRING},
+ {gBattleAnimSpritePalette_095, ANIM_TAG_UNUSED_PENCIL},
+ {gBattleAnimSpritePalette_096, ANIM_TAG_UNUSED_PETAL},
+ {gBattleAnimSpritePalette_097, ANIM_TAG_BENT_SPOON},
+ {gBattleAnimSpritePalette_094, ANIM_TAG_UNUSED_WEB},
+ {gBattleAnimSpritePalette_099, ANIM_TAG_MILK_BOTTLE},
+ {gBattleAnimSpritePalette_100, ANIM_TAG_COIN},
+ {gBattleAnimSpritePalette_101, ANIM_TAG_UNUSED_CRACKED_EGG},
+ {gBattleAnimSpritePalette_101, ANIM_TAG_UNUSED_HATCHED_EGG},
+ {gBattleAnimSpritePalette_103, ANIM_TAG_UNUSED_FRESH_EGG},
+ {gBattleAnimSpritePalette_104, ANIM_TAG_UNUSED_FANGS},
+ {gBattleAnimSpritePalette_105, ANIM_TAG_UNUSED_EXPLOSION_2},
+ {gBattleAnimSpritePalette_105, ANIM_TAG_UNUSED_EXPLOSION_3},
+ {gBattleAnimSpritePalette_107, ANIM_TAG_UNUSED_WATER_DROPLET},
+ {gBattleAnimSpritePalette_107, ANIM_TAG_UNUSED_WATER_DROPLET_2},
+ {gBattleAnimSpritePalette_109, ANIM_TAG_UNUSED_SEED},
+ {gBattleAnimSpritePalette_109, ANIM_TAG_UNUSED_SPROUT},
+ {gBattleAnimSpritePalette_111, ANIM_TAG_UNUSED_RED_WAND},
+ {gBattleAnimSpritePalette_112, ANIM_TAG_UNUSED_PURPLE_GREEN_UNK},
+ {gBattleAnimSpritePalette_113, ANIM_TAG_UNUSED_WATER_COLUMN},
+ {gBattleAnimSpritePalette_114, ANIM_TAG_UNUSED_MUD_UNK},
+ {gBattleAnimSpritePalette_115, ANIM_TAG_RAIN_DROPS},
+ {gBattleAnimSpritePalette_116, ANIM_TAG_UNUSED_FURY_SWIPES},
+ {gBattleAnimSpritePalette_117, ANIM_TAG_UNUSED_VINE_2},
+ {gBattleAnimSpritePalette_118, ANIM_TAG_UNUSED_TEETH},
+ {gBattleAnimSpritePalette_119, ANIM_TAG_UNUSED_BONE},
+ {gBattleAnimSpritePalette_120, ANIM_TAG_UNUSED_WHITE_BAG},
+ {gBattleAnimSpritePalette_121, ANIM_TAG_UNUSED_UNKNOWN},
+ {gBattleAnimSpritePalette_122, ANIM_TAG_UNUSED_PURPLE_CORAL},
+ {gBattleAnimSpritePalette_122, ANIM_TAG_UNUSED_PURPLE_DROPLET},
+ {gBattleAnimSpritePalette_124, ANIM_TAG_UNUSED_SHOCK_2},
+ {gBattleAnimSpritePalette_125, ANIM_TAG_UNUSED_CLOSING_EYE_2},
+ {gBattleAnimSpritePalette_126, ANIM_TAG_UNUSED_METAL_BALL},
+ {gBattleAnimSpritePalette_127, ANIM_TAG_UNUSED_MONSTER_DOLL},
+ {gBattleAnimSpritePalette_128, ANIM_TAG_UNUSED_WHIRLWIND},
+ {gBattleAnimSpritePalette_128, ANIM_TAG_UNUSED_WHIRLWIND_2},
+ {gBattleAnimSpritePalette_130, ANIM_TAG_UNUSED_EXPLOSION_4},
+ {gBattleAnimSpritePalette_130, ANIM_TAG_UNUSED_EXPLOSION_5},
+ {gBattleAnimSpritePalette_132, ANIM_TAG_UNUSED_TONGUE},
+ {gBattleAnimSpritePalette_133, ANIM_TAG_UNUSED_SMOKE},
+ {gBattleAnimSpritePalette_133, ANIM_TAG_UNUSED_SMOKE_2},
+ {gBattleAnimSpritePalette_135, ANIM_TAG_IMPACT},
+ {gBattleAnimSpritePalette_136, ANIM_TAG_CIRCLE_IMPACT},
+ {gBattleAnimSpritePalette_135, ANIM_TAG_SCRATCH},
+ {gBattleAnimSpritePalette_135, ANIM_TAG_CUT},
+ {gBattleAnimSpritePalette_139, ANIM_TAG_SHARP_TEETH},
+ {gBattleAnimSpritePalette_140, ANIM_TAG_RAINBOW_RINGS},
+ {gBattleAnimSpritePalette_141, ANIM_TAG_ICE_CRYSTALS},
+ {gBattleAnimSpritePalette_141, ANIM_TAG_ICE_SPIKES},
+ {gBattleAnimSpritePalette_143, ANIM_TAG_HANDS_AND_FEET},
+ {gBattleAnimSpritePalette_144, ANIM_TAG_MIST_CLOUD},
+ {gBattleAnimSpritePalette_139, ANIM_TAG_CLAMP},
+ {gBattleAnimSpritePalette_115, ANIM_TAG_BUBBLE},
+ {gBattleAnimSpritePalette_147, ANIM_TAG_ORBS},
+ {gBattleAnimSpritePalette_148, ANIM_TAG_WATER_IMPACT},
+ {gBattleAnimSpritePalette_148, ANIM_TAG_WATER_ORB},
+ {gBattleAnimSpritePalette_150, ANIM_TAG_POISON_BUBBLE},
+ {gBattleAnimSpritePalette_150, ANIM_TAG_TOXIC_BUBBLE},
+ {gBattleAnimSpritePalette_152, ANIM_TAG_SPIKES},
+ {gBattleAnimSpritePalette_153, ANIM_TAG_HORN_HIT_2},
+ {gBattleAnimSpritePalette_154, ANIM_TAG_AIR_WAVE_2},
+ {gBattleAnimSpritePalette_155, ANIM_TAG_SMALL_BUBBLES},
+ {gBattleAnimSpritePalette_156, ANIM_TAG_ROUND_SHADOW},
+ {gBattleAnimSpritePalette_157, ANIM_TAG_SUNLIGHT},
+ {gBattleAnimSpritePalette_158, ANIM_TAG_SPORE},
+ {gBattleAnimSpritePalette_159, ANIM_TAG_FLOWER},
+ {gBattleAnimSpritePalette_160, ANIM_TAG_RAZOR_LEAF},
+ {gBattleAnimSpritePalette_161, ANIM_TAG_NEEDLE},
+ {gBattleAnimSpritePalette_162, ANIM_TAG_WHIRLWIND_LINES},
+ {gBattleAnimSpritePalette_163, ANIM_TAG_GOLD_RING},
+ {gBattleAnimSpritePalette_164, ANIM_TAG_PURPLE_RING},
+ {gBattleAnimSpritePalette_165, ANIM_TAG_BLUE_RING},
+ {gBattleAnimSpritePalette_166, ANIM_TAG_GREEN_LIGHT_WALL},
+ {gBattleAnimSpritePalette_167, ANIM_TAG_BLUE_LIGHT_WALL},
+ {gBattleAnimSpritePalette_168, ANIM_TAG_RED_LIGHT_WALL},
+ {gBattleAnimSpritePalette_169, ANIM_TAG_GRAY_LIGHT_WALL},
+ {gBattleAnimSpritePalette_170, ANIM_TAG_ORANGE_LIGHT_WALL},
+ {gBattleAnimSpritePalette_171, ANIM_TAG_BLACK_BALL_2},
+ {gBattleAnimSpritePalette_172, ANIM_TAG_PURPLE_GAS_CLOUD},
+ {gBattleAnimSpritePalette_001, ANIM_TAG_SPARK_H},
+ {gBattleAnimSpritePalette_174, ANIM_TAG_YELLOW_STAR},
+ {gBattleAnimSpritePalette_175, ANIM_TAG_LARGE_FRESH_EGG},
+ {gBattleAnimSpritePalette_176, ANIM_TAG_SHADOW_BALL},
+ {gBattleAnimSpritePalette_177, ANIM_TAG_LICK},
+ {gBattleAnimSpritePalette_178, ANIM_TAG_UNUSED_VOID_LINES},
+ {gBattleAnimSpritePalette_179, ANIM_TAG_STRING},
+ {gBattleAnimSpritePalette_179, ANIM_TAG_WEB_THREAD},
+ {gBattleAnimSpritePalette_179, ANIM_TAG_SPIDER_WEB},
+ {gBattleAnimSpritePalette_182, ANIM_TAG_UNUSED_LIGHTBULB},
+ {gBattleAnimSpritePalette_183, ANIM_TAG_SLASH},
+ {gBattleAnimSpritePalette_184, ANIM_TAG_FOCUS_ENERGY},
+ {gBattleAnimSpritePalette_185, ANIM_TAG_SPHERE_TO_CUBE},
+ {gBattleAnimSpritePalette_186, ANIM_TAG_TENDRILS},
+ {gBattleAnimSpritePalette_187, ANIM_TAG_EYE},
+ {gBattleAnimSpritePalette_188, ANIM_TAG_WHITE_SHADOW},
+ {gBattleAnimSpritePalette_189, ANIM_TAG_TEAL_ALERT},
+ {gBattleAnimSpritePalette_190, ANIM_TAG_OPENING_EYE},
+ {gBattleAnimSpritePalette_191, ANIM_TAG_ROUND_WHITE_HALO},
+ {gBattleAnimSpritePalette_192, ANIM_TAG_FANG_ATTACK},
+ {gBattleAnimSpritePalette_193, ANIM_TAG_PURPLE_HAND_OUTLINE},
+ {gBattleAnimSpritePalette_194, ANIM_TAG_MOON},
+ {gBattleAnimSpritePalette_195, ANIM_TAG_GREEN_SPARKLE},
+ {gBattleAnimSpritePalette_196, ANIM_TAG_SPIRAL},
+ {gBattleAnimSpritePalette_197, ANIM_TAG_SNORE_Z},
+ {gBattleAnimSpritePalette_198, ANIM_TAG_EXPLOSION},
+ {gBattleAnimSpritePalette_199, ANIM_TAG_NAIL},
+ {gBattleAnimSpritePalette_200, ANIM_TAG_GHOSTLY_SPIRIT},
+ {gBattleAnimSpritePalette_201, ANIM_TAG_WARM_ROCK},
+ {gBattleAnimSpritePalette_202, ANIM_TAG_BREAKING_EGG},
+ {gBattleAnimSpritePalette_203, ANIM_TAG_THIN_RING},
+ {gBattleAnimSpritePalette_204, ANIM_TAG_UNUSED_PUNCH_IMPACT},
+ {gBattleAnimSpritePalette_205, ANIM_TAG_BELL},
+ {gBattleAnimSpritePalette_206, ANIM_TAG_MUSIC_NOTES_2},
+ {gBattleAnimSpritePalette_207, ANIM_TAG_SPEED_DUST},
+ {gBattleAnimSpritePalette_167, ANIM_TAG_TORN_METAL},
+ {gBattleAnimSpritePalette_209, ANIM_TAG_THOUGHT_BUBBLE},
+ {gBattleAnimSpritePalette_210, ANIM_TAG_MAGENTA_HEART},
+ {gBattleAnimSpritePalette_211, ANIM_TAG_ELECTRIC_ORBS},
+ {gBattleAnimSpritePalette_211, ANIM_TAG_CIRCLE_OF_LIGHT},
+ {gBattleAnimSpritePalette_211, ANIM_TAG_ELECTRICITY},
+ {gBattleAnimSpritePalette_064, ANIM_TAG_FINGER_2},
+ {gBattleAnimSpritePalette_215, ANIM_TAG_MOVEMENT_WAVES},
+ {gBattleAnimSpritePalette_216, ANIM_TAG_RED_HEART},
+ {gBattleAnimSpritePalette_217, ANIM_TAG_RED_ORB},
+ {gBattleAnimSpritePalette_218, ANIM_TAG_EYE_SPARKLE},
+ {gBattleAnimSpritePalette_219, ANIM_TAG_PINK_HEART},
+ {gBattleAnimSpritePalette_220, ANIM_TAG_ANGEL},
+ {gBattleAnimSpritePalette_221, ANIM_TAG_DEVIL},
+ {gBattleAnimSpritePalette_222, ANIM_TAG_SWIPE},
+ {gBattleAnimSpritePalette_223, ANIM_TAG_ROOTS},
+ {gBattleAnimSpritePalette_224, ANIM_TAG_ITEM_BAG},
+ {gBattleAnimSpritePalette_225, ANIM_TAG_JAGGED_MUSIC_NOTE},
+ {gBattleAnimSpritePalette_226, ANIM_TAG_POKEBALL},
+ {gBattleAnimSpritePalette_226, ANIM_TAG_SPOTLIGHT},
+ {gBattleAnimSpritePalette_228, ANIM_TAG_LETTER_Z},
+ {gBattleAnimSpritePalette_229, ANIM_TAG_RAPID_SPIN},
+ {gBattleAnimSpritePalette_230, ANIM_TAG_TRI_FORCE_TRIANGLE},
+ {gBattleAnimSpritePalette_231, ANIM_TAG_WISP_ORB},
+ {gBattleAnimSpritePalette_231, ANIM_TAG_WISP_FIRE},
+ {gBattleAnimSpritePalette_233, ANIM_TAG_GOLD_STARS},
+ {gBattleAnimSpritePalette_234, ANIM_TAG_ECLIPSING_ORB},
+ {gBattleAnimSpritePalette_235, ANIM_TAG_GRAY_ORB},
+ {gBattleAnimSpritePalette_236, ANIM_TAG_BLUE_ORB},
+ {gBattleAnimSpritePalette_237, ANIM_TAG_RED_ORB_2},
+ {gBattleAnimSpritePalette_238, ANIM_TAG_PINK_PETAL},
+ {gBattleAnimSpritePalette_239, ANIM_TAG_PAIN_SPLIT},
+ {gBattleAnimSpritePalette_240, ANIM_TAG_CONFETTI},
+ {gBattleAnimSpritePalette_241, ANIM_TAG_GREEN_STAR},
+ {gBattleAnimSpritePalette_242, ANIM_TAG_PINK_CLOUD},
+ {gBattleAnimSpritePalette_243, ANIM_TAG_SWEAT_DROP},
+ {gBattleAnimSpritePalette_244, ANIM_TAG_GUARD_RING},
+ {gBattleAnimSpritePalette_245, ANIM_TAG_PURPLE_SCRATCH},
+ {gBattleAnimSpritePalette_245, ANIM_TAG_PURPLE_SWIPE},
+ {gBattleAnimSpritePalette_064, ANIM_TAG_TAG_HAND},
+ {gBattleAnimSpritePalette_248, ANIM_TAG_SMALL_RED_EYE},
+ {gBattleAnimSpritePalette_249, ANIM_TAG_HOLLOW_ORB},
+ {gBattleAnimSpritePalette_249, ANIM_TAG_X_SIGN},
+ {gBattleAnimSpritePalette_251, ANIM_TAG_BLUEGREEN_ORB},
+ {gBattleAnimSpritePalette_252, ANIM_TAG_PAW_PRINT},
+ {gBattleAnimSpritePalette_253, ANIM_TAG_PURPLE_FLAME},
+ {gBattleAnimSpritePalette_254, ANIM_TAG_RED_BALL},
+ {gBattleAnimSpritePalette_255, ANIM_TAG_SMELLINGSALT_EFFECT},
+ {gBattleAnimSpritePalette_256, ANIM_TAG_METEOR},
+ {gBattleAnimSpritePalette_257, ANIM_TAG_FLAT_ROCK},
+ {gBattleAnimSpritePalette_258, ANIM_TAG_MAGNIFYING_GLASS},
+ {gBattleAnimSpritePalette_259, ANIM_TAG_BROWN_ORB},
+ {gBattleAnimSpritePalette_260, ANIM_TAG_METAL_SOUND_WAVES},
+ {gBattleAnimSpritePalette_261, ANIM_TAG_FLYING_DIRT},
+ {gBattleAnimSpritePalette_262, ANIM_TAG_ICICLE_SPEAR},
+ {gBattleAnimSpritePalette_263, ANIM_TAG_HAIL},
+ {gBattleAnimSpritePalette_264, ANIM_TAG_GLOWY_RED_ORB},
+ {gBattleAnimSpritePalette_265, ANIM_TAG_GLOWY_GREEN_ORB},
+ {gBattleAnimSpritePalette_266, ANIM_TAG_GREEN_SPIKE},
+ {gBattleAnimSpritePalette_267, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT},
+ {gBattleAnimSpritePalette_268, ANIM_TAG_GLOWY_BLUE_ORB},
+ {gBattleAnimSpritePalette_269, ANIM_TAG_UNUSED_RED_BRICK},
+ {gBattleAnimSpritePalette_270, ANIM_TAG_WHITE_FEATHER},
+ {gBattleAnimSpritePalette_271, ANIM_TAG_SPARKLE_6},
+ {gBattleAnimSpritePalette_272, ANIM_TAG_SPLASH},
+ {gBattleAnimSpritePalette_272, ANIM_TAG_SWEAT_BEAD},
+ {gBattleAnimSpritePalette_274, ANIM_TAG_UNUSED_GEM_1},
+ {gBattleAnimSpritePalette_274, ANIM_TAG_UNUSED_GEM_2},
+ {gBattleAnimSpritePalette_274, ANIM_TAG_UNUSED_GEM_3},
+ {gBattleAnimSpritePalette_277, ANIM_TAG_SLAM_HIT_2},
+ {gBattleAnimSpritePalette_278, ANIM_TAG_RECYCLE},
+ {gBattleAnimSpritePalette_279, ANIM_TAG_UNUSED_RED_PARTICLES},
+ {gBattleAnimSpritePalette_280, ANIM_TAG_PROTECT},
+ {gBattleAnimSpritePalette_281, ANIM_TAG_DIRT_MOUND},
+ {gBattleAnimSpritePalette_282, ANIM_TAG_SHOCK_3},
+ {gBattleAnimSpritePalette_283, ANIM_TAG_WEATHER_BALL},
+ {gBattleAnimSpritePalette_284, ANIM_TAG_BIRD},
+ {gBattleAnimSpritePalette_285, ANIM_TAG_CROSS_IMPACT},
+ {gBattleAnimSpritePalette_286, ANIM_TAG_SLASH_2},
+ {gBattleAnimSpritePalette_287, ANIM_TAG_WHIP_HIT},
+ {gBattleAnimSpritePalette_288, ANIM_TAG_BLUE_RING_2},
+};
+
+const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
+{
+ {gBattleAnimBackgroundImage_00, gBattleAnimBackgroundPalette_00, gBattleAnimBackgroundTilemap_00},
+ {gBattleAnimBackgroundImage_00, gBattleAnimBackgroundPalette_00, gBattleAnimBackgroundTilemap_00},
+ {gBattleAnimBackgroundImage_02, gBattleAnimBackgroundPalette_02, gBattleAnimBackgroundTilemap_02},
+ {gBattleAnimBackgroundImage_03, gBattleAnimBackgroundPalette_03, gBattleAnimBackgroundTilemap_03},
+ {gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_04, gBattleAnimBackgroundTilemap_04},
+ {gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_04, gBattleAnimBackgroundTilemap_05},
+ {gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_04, gBattleAnimBackgroundTilemap_06},
+ {gBattleAnimBackgroundImage_07, gBattleAnimBackgroundPalette_07, gBattleAnimBackgroundTilemap_07},
+ {gBattleAnimBackgroundImage_07, gBattleAnimBackgroundPalette_07, gBattleAnimBackgroundTilemap_08},
+ {gBattleAnimBackgroundImage_09, gBattleAnimBackgroundPalette_09, gBattleAnimBackgroundTilemap_09},
+ {gBattleAnimBackgroundImage_09, gBattleAnimBackgroundPalette_09, gBattleAnimBackgroundTilemap_10},
+ {gBattleAnimBackgroundImage_11, gBattleAnimBackgroundPalette_11, gBattleAnimBackgroundTilemap_11},
+ {gBattleAnimBackgroundImage_12, gBattleAnimBackgroundPalette_12, gBattleAnimBackgroundTilemap_12},
+ {gBattleAnimBackgroundImage_12, gBattleAnimBackgroundPalette_12, gBattleAnimBackgroundTilemap_13},
+ {gBattleAnimBackgroundImage_12, gBattleAnimBackgroundPalette_12, gBattleAnimBackgroundTilemap_14},
+ {gBattleAnimBackgroundImage_15, gBattleAnimBackgroundPalette_15, gBattleAnimBackgroundTilemap_15},
+ {gBattleAnimBackgroundImage_16, gBattleAnimBackgroundPalette_16, gBattleAnimBackgroundTilemap_16},
+ {gBattleAnimBackgroundImage_17, gBattleAnimBackgroundPalette_17, gBattleAnimBackgroundTilemap_17},
+ {gBattleAnimBackgroundImage_07, gBattleAnimBackgroundPalette_18, gBattleAnimBackgroundTilemap_07},
+ {gBattleAnimBackgroundImage_07, gBattleAnimBackgroundPalette_18, gBattleAnimBackgroundTilemap_08},
+ {gBattleAnimBackgroundImage_20, gBattleAnimBackgroundPalette_20, gBattleAnimBackgroundTilemap_20},
+ {gBattleAnimBackgroundImage_21, gBattleAnimBackgroundPalette_21, gBattleAnimBackgroundTilemap_21},
+ {gBattleAnimBackgroundImage_09, gBattleAnimBackgroundPalette_22, gBattleAnimBackgroundTilemap_09},
+ {gBattleAnimBackgroundImage_09, gBattleAnimBackgroundPalette_22, gBattleAnimBackgroundTilemap_10},
+ {gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_24, gBattleAnimBackgroundTilemap_04},
+ {gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_24, gBattleAnimBackgroundTilemap_05},
+ {gBattleAnimBackgroundImage_04, gBattleAnimBackgroundPalette_24, gBattleAnimBackgroundTilemap_06},
+};
+
static void (* const sScriptCmdTable[])(void) =
{
ScriptCmd_loadspritegfx,
@@ -234,7 +1494,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
else
{
for (i = 0; i < 4; i++)
- gAnimBattlerSpecies[i] = gContestResources->field_18->unk0;
+ gAnimBattlerSpecies[i] = gContestResources->field_18->species;
}
if (!isMoveAnim)
@@ -691,7 +1951,7 @@ void sub_80A438C(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
battlerSpriteId = gBattlerSpriteIds[battlerId];
gBattle_BG1_X = -(gSprites[battlerSpriteId].pos1.x + gSprites[battlerSpriteId].pos2.x) + 0x20;
- if (IsContest() && IsSpeciesNotUnown(gContestResources->field_18->unk0))
+ if (IsContest() && IsSpeciesNotUnown(gContestResources->field_18->species))
gBattle_BG1_X--;
gBattle_BG1_Y = -(gSprites[battlerSpriteId].pos1.y + gSprites[battlerSpriteId].pos2.y) + 0x20;
@@ -749,7 +2009,7 @@ static void sub_80A46A0(void)
struct UnknownAnimStruct2 unknownStruct;
u16 *ptr;
- if (IsSpeciesNotUnown(gContestResources->field_18->unk0))
+ if (IsSpeciesNotUnown(gContestResources->field_18->species))
{
sub_80A6B30(&unknownStruct);
ptr = unknownStruct.unk4;
@@ -1183,7 +2443,7 @@ static void LoadMoveBg(u16 bgId)
{
if (IsContest())
{
- const void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap;
+ const u32 *tilemap = gBattleAnimBackgroundTable[bgId].tilemap;
void *dmaSrc;
void *dmaDest;
@@ -1262,39 +2522,39 @@ s8 BattleAnimAdjustPanning(s8 pan)
if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gBattleAnimAttacker].statusAnimActive)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- pan = PAN_SIDE_OPPONENT;
+ pan = SOUND_PAN_TARGET;
else
- pan = PAN_SIDE_PLAYER;
+ pan = SOUND_PAN_ATTACKER;
}
else if (IsContest())
{
- if (gBattleAnimAttacker != gBattleAnimTarget || gBattleAnimAttacker != 2 || pan != PAN_SIDE_OPPONENT)
+ if (gBattleAnimAttacker != gBattleAnimTarget || gBattleAnimAttacker != 2 || pan != SOUND_PAN_TARGET)
pan *= -1;
}
else if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
{
- if (pan == PAN_SIDE_OPPONENT)
- pan = PAN_SIDE_PLAYER;
- else if (pan != PAN_SIDE_PLAYER)
+ if (pan == SOUND_PAN_TARGET)
+ pan = SOUND_PAN_ATTACKER;
+ else if (pan != SOUND_PAN_ATTACKER)
pan *= -1;
}
}
else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
{
- if (pan == PAN_SIDE_PLAYER)
- pan = PAN_SIDE_OPPONENT;
+ if (pan == SOUND_PAN_ATTACKER)
+ pan = SOUND_PAN_TARGET;
}
else
{
pan *= -1;
}
- if (pan > PAN_SIDE_OPPONENT)
- pan = PAN_SIDE_OPPONENT;
- else if (pan < PAN_SIDE_PLAYER)
- pan = PAN_SIDE_PLAYER;
+ if (pan > SOUND_PAN_TARGET)
+ pan = SOUND_PAN_TARGET;
+ else if (pan < SOUND_PAN_ATTACKER)
+ pan = SOUND_PAN_ATTACKER;
return pan;
}
@@ -1304,9 +2564,9 @@ s8 BattleAnimAdjustPanning2(s8 pan)
if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gBattleAnimAttacker].statusAnimActive)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- pan = PAN_SIDE_OPPONENT;
+ pan = SOUND_PAN_TARGET;
else
- pan = PAN_SIDE_PLAYER;
+ pan = SOUND_PAN_ATTACKER;
}
else
{
@@ -1320,10 +2580,10 @@ s16 KeepPanInRange(s16 panArg)
{
s16 pan = panArg;
- if (pan > PAN_SIDE_OPPONENT)
- pan = PAN_SIDE_OPPONENT;
- else if (pan < PAN_SIDE_PLAYER)
- pan = PAN_SIDE_PLAYER;
+ if (pan > SOUND_PAN_TARGET)
+ pan = SOUND_PAN_TARGET;
+ else if (pan < SOUND_PAN_ATTACKER)
+ pan = SOUND_PAN_ATTACKER;
return pan;
}
diff --git a/src/battle_anim_80A5C6C.c b/src/battle_anim_80A5C6C.c
index ebe1718b7..2ac6cca90 100644
--- a/src/battle_anim_80A5C6C.c
+++ b/src/battle_anim_80A5C6C.c
@@ -1,21 +1,21 @@
#include "global.h"
-#include "constants/battle_anim.h"
-#include "constants/species.h"
#include "battle.h"
#include "battle_anim.h"
+#include "bg.h"
#include "contest.h"
#include "data2.h"
#include "decompress.h"
+#include "dma3.h"
+#include "gpu_regs.h"
+#include "malloc.h"
#include "palette.h"
#include "pokemon_icon.h"
#include "sprite.h"
#include "task.h"
#include "trig.h"
#include "util.h"
-#include "gpu_regs.h"
-#include "bg.h"
-#include "malloc.h"
-#include "dma3.h"
+#include "constants/battle_anim.h"
+#include "constants/species.h"
#define GET_UNOWN_LETTER(personality) (( \
(((personality & 0x03000000) >> 24) << 6) \
@@ -36,9 +36,7 @@ extern const union AffineAnimCmd *gUnknown_082FF6C0[];
// This file's functions.
void sub_80A64EC(struct Sprite *sprite);
void sub_80A653C(struct Sprite *sprite);
-void InitAnimLinearTranslation(struct Sprite *sprite);
void sub_80A6FB4(struct Sprite *sprite);
-void sub_80A6F98(struct Sprite *sprite);
void sub_80A7144(struct Sprite *sprite);
void sub_80A791C(struct Sprite *sprite);
void sub_80A8DFC(struct Sprite *sprite);
@@ -50,8 +48,6 @@ void sub_80A7AFC(u8 taskId);
void sub_80A8CAC(u8 taskId);
void AnimTask_BlendMonInAndOutStep(u8 taskId);
bool8 sub_80A7238(void);
-void sub_80A8048(s16 *bottom, s16 *top, const void *ptr);
-void *sub_80A8050(s16 bottom, s16 top);
u8 sub_80A82E4(u8 battlerId);
void sub_80A8D78(struct Task *task, u8 taskId);
@@ -159,7 +155,7 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId)
if (shared19348.unk4_0)
species = shared19348.unk2;
else
- species = shared19348.unk0;
+ species = shared19348.species;
}
else
{
@@ -324,7 +320,7 @@ u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId)
if (shared19348.unk4_0)
species = shared19348.unk2;
else
- species = shared19348.unk0;
+ species = shared19348.species;
}
else
{
@@ -532,7 +528,7 @@ void sub_80A6450(struct Sprite *sprite)
// Simply waits until the sprite's data[0] hits zero.
// This is used to let sprite anims or affine anims to run for a designated
// duration.
-void sub_80A64B0(struct Sprite *sprite)
+void WaitAnimForDuration(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
sprite->data[0]--;
@@ -745,7 +741,7 @@ void sub_80A6864(struct Sprite *sprite, s16 a2)
}
}
-void sub_80A68D4(struct Sprite *sprite)
+void InitAnimArcTranslation(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
@@ -791,7 +787,7 @@ void sub_80A6980(struct Sprite *sprite, bool8 a2)
sprite->pos1.y += gBattleAnimArgs[1];
}
-void sub_80A69CC(struct Sprite *sprite, u8 a2)
+void InitAnimSpritePos(struct Sprite *sprite, u8 a2)
{
if (!a2)
{
@@ -940,18 +936,18 @@ void sub_80A6BFC(struct UnknownAnimStruct2 *unk)
}
}
-void sub_80A6C68(u32 arg0)
+void sub_80A6C68(u32 bgId)
{
struct UnknownAnimStruct2 unkStruct;
- sub_80A6B90(&unkStruct, arg0);
+ sub_80A6B90(&unkStruct, bgId);
CpuFill32(0, unkStruct.bgTiles, 0x2000);
LoadBgTiles(unkStruct.bgId, unkStruct.bgTiles, 0x2000, unkStruct.tilesOffset);
FillBgTilemapBufferRect(unkStruct.bgId, 0, 0, 0, 0x20, 0x40, 0x11);
CopyBgTilemapBufferToVram(unkStruct.bgId);
}
-void sub_80A6CC0(u32 bgId, void *src, u32 tilesOffset)
+void sub_80A6CC0(u32 bgId, const void *src, u32 tilesOffset)
{
CpuFill32(0, gUnknown_0202305C, 0x2000);
LZDecompressWram(src, gUnknown_0202305C);
@@ -1004,12 +1000,12 @@ void sub_80A6DEC(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
- sub_80A6E14(sprite);
+ InitSpriteDataForLinearTranslation(sprite);
sprite->callback = sub_80A65A8;
sprite->callback(sprite);
}
-void sub_80A6E14(struct Sprite *sprite)
+void InitSpriteDataForLinearTranslation(struct Sprite *sprite)
{
s16 x = (sprite->data[2] - sprite->data[1]) << 8;
s16 y = (sprite->data[4] - sprite->data[3]) << 8;
@@ -1047,7 +1043,7 @@ void InitAnimLinearTranslation(struct Sprite *sprite)
sprite->data[3] = 0;
}
-void sub_80A6EEC(struct Sprite *sprite)
+void StartAnimLinearTranslation(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
@@ -1476,7 +1472,7 @@ void sub_80A77C8(struct Sprite *sprite)
else
var = FALSE;
if (!gBattleAnimArgs[2])
- sub_80A69CC(sprite, var);
+ InitAnimSpritePos(sprite, var);
else
sub_80A6980(sprite, var);
sprite->data[0]++;
@@ -1511,27 +1507,27 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
else
attributeId = BATTLER_COORD_Y;
- sub_80A69CC(sprite, v1);
+ InitAnimSpritePos(sprite, v1);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, attributeId) + gBattleAnimArgs[3];
- sprite->callback = sub_80A6EEC;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
void sub_80A78AC(struct Sprite *sprite)
{
- sub_80A69CC(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
if (GetBattlerSide(gBattleAnimAttacker))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
- sub_80A68D4(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = sub_80A791C;
}
@@ -1558,7 +1554,7 @@ void sub_80A7938(struct Sprite *sprite)
}
if (!gBattleAnimArgs[5])
{
- sub_80A69CC(sprite, r4);
+ InitAnimSpritePos(sprite, r4);
battlerId = gBattleAnimAttacker;
}
else
@@ -1572,7 +1568,7 @@ void sub_80A7938(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(battlerId, attributeId) + gBattleAnimArgs[3];
- sprite->callback = sub_80A6EEC;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -1854,7 +1850,7 @@ u16 sub_80A7F18(u8 spriteId)
{
if (IsContest())
{
- species = shared19348.unk0;
+ species = shared19348.species;
return gMonBackPicCoords[species].y_offset;
}
else
@@ -2112,7 +2108,7 @@ s16 sub_80A861C(u8 battlerId, u8 a2)
}
else
{
- species = shared19348.unk0;
+ species = shared19348.species;
personality = shared19348.unk8;
}
if (species == SPECIES_UNOWN)
@@ -2454,6 +2450,6 @@ void sub_80A8EE4(struct Sprite *sprite)
sprite->pos1.x += x;
sprite->pos1.y = gBattleAnimArgs[5] - 80;
}
- sprite->callback = sub_80A6EEC;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
diff --git a/src/battle_anim_80A9C70.c b/src/battle_anim_80A9C70.c
index 9b9218b1c..f1245a032 100644
--- a/src/battle_anim_80A9C70.c
+++ b/src/battle_anim_80A9C70.c
@@ -1,15 +1,15 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
-#include "constants/battle_anim.h"
-#include "constants/rgb.h"
-#include "util.h"
#include "decompress.h"
+#include "gpu_regs.h"
#include "palette.h"
#include "sprite.h"
#include "task.h"
#include "trig.h"
-#include "gpu_regs.h"
+#include "util.h"
+#include "constants/battle_anim.h"
+#include "constants/rgb.h"
extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
@@ -17,8 +17,6 @@ extern const u8 *const gBattleAnims_StatusConditions[];
extern const struct OamData gUnknown_08524904;
extern const struct OamData gUnknown_08524A3C;
-extern void sub_8116EB4(u8 taskId);
-
// This file's functions.
static void sub_80A9DB4(u8 taskId);
static void sub_80A9FD0(u8 taskId);
@@ -56,8 +54,8 @@ static const struct SpriteTemplate gUnknown_0853EF48 =
static const struct SpriteTemplate gUnknown_0853EF60 =
{
- .tileTag = ANIM_TAG_136,
- .paletteTag = ANIM_TAG_136,
+ .tileTag = ANIM_TAG_CIRCLE_IMPACT,
+ .paletteTag = ANIM_TAG_CIRCLE_IMPACT,
.oam = &gUnknown_08524904,
.anims = gDummySpriteAnimTable,
.images = NULL,
@@ -73,8 +71,8 @@ u8 sub_80A9C70(u8 battlerId, bool8 b)
u8 spriteId2;
u8 i;
- LoadCompressedObjectPicUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_136)]);
- LoadCompressedObjectPaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_136)]);
+ LoadCompressedObjectPicUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]);
+ LoadCompressedObjectPaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]);
gTasks[taskId].data[0] = battlerId;
if (b)
{
diff --git a/src/battle_anim_80D51AC.c b/src/battle_anim_80D51AC.c
index 1864a1a7a..bfd0635f6 100644
--- a/src/battle_anim_80D51AC.c
+++ b/src/battle_anim_80D51AC.c
@@ -11,15 +11,15 @@ void AnimTask_ShakeMon2Step(u8 taskId);
void AnimTask_ShakeMonInPlaceStep(u8 taskId);
void AnimTask_ShakeAndSinkMonStep(u8 taskId);
void sub_80D57B8(u8 taskId);
-void DoHorizontalLunge(struct Sprite *sprite);
-void ReverseHorizontalLungeDirection(struct Sprite *sprite);
-void DoVerticalDip(struct Sprite *sprite);
-void ReverseVerticalDipDirection(struct Sprite* sprite);
-void SlideMonToOriginalPos(struct Sprite *sprite);
-void SlideMonToOriginalPosStep(struct Sprite *sprite);
-void SlideMonToOffset(struct Sprite *sprite);
-void sub_80D5B48(struct Sprite *sprite);
-void sub_80D5C20(struct Sprite *sprite);
+static void DoHorizontalLunge(struct Sprite *sprite);
+static void ReverseHorizontalLungeDirection(struct Sprite *sprite);
+static void DoVerticalDip(struct Sprite *sprite);
+static void ReverseVerticalDipDirection(struct Sprite* sprite);
+static void SlideMonToOriginalPos(struct Sprite *sprite);
+static void SlideMonToOriginalPosStep(struct Sprite *sprite);
+static void SlideMonToOffset(struct Sprite *sprite);
+static void sub_80D5B48(struct Sprite *sprite);
+static void sub_80D5C20(struct Sprite *sprite);
void AnimTask_WindUpLungePart1(u8 taskId);
void AnimTask_WindUpLungePart2(u8 taskId);
void AnimTask_SwayMonStep(u8 taskId);
@@ -28,6 +28,61 @@ void sub_80D6308(u8 taskId);
void sub_80D646C(u8 taskId);
void sub_80A8B3C(u8 taskId);
+const struct SpriteTemplate gHorizontalLungeSpriteTemplate =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = DoHorizontalLunge,
+};
+
+const struct SpriteTemplate gVerticalDipSpriteTemplate =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = DoVerticalDip,
+};
+
+const struct SpriteTemplate gSlideMonToOriginalPosSpriteTemplate =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SlideMonToOriginalPos,
+};
+
+const struct SpriteTemplate gSlideMonToOffsetSpriteTemplate =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SlideMonToOffset,
+};
+
+const struct SpriteTemplate gUnknown_0857FE88 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80D5B48,
+};
+
// Task to facilitate simple shaking of a pokemon's picture in battle.
// The shaking alternates between the original position and the target position.
// arg 0: anim battler
@@ -373,7 +428,7 @@ void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId)
// horizontally, and then moves back in the opposite direction.
// arg 0: duration of single lunge direction
// arg 1: x pixel delta that is applied each frame
-void DoHorizontalLunge(struct Sprite *sprite)
+static void DoHorizontalLunge(struct Sprite *sprite)
{
sprite->invisible = TRUE;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
@@ -389,7 +444,7 @@ void DoHorizontalLunge(struct Sprite *sprite)
sprite->callback = sub_80A6630;
}
-void ReverseHorizontalLungeDirection(struct Sprite *sprite)
+static void ReverseHorizontalLungeDirection(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[4];
sprite->data[1] = -sprite->data[1];
@@ -402,7 +457,7 @@ void ReverseHorizontalLungeDirection(struct Sprite *sprite)
// arg 0: duration of single dip direction
// arg 1: y pixel delta that is applied each frame
// arg 2: battler
-void DoVerticalDip(struct Sprite *sprite)
+static void DoVerticalDip(struct Sprite *sprite)
{
u8 spriteId;
sprite->invisible = TRUE;
@@ -416,7 +471,7 @@ void DoVerticalDip(struct Sprite *sprite)
sprite->callback = sub_80A6630;
}
-void ReverseVerticalDipDirection(struct Sprite *sprite)
+static void ReverseVerticalDipDirection(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[4];
sprite->data[2] = -sprite->data[2];
@@ -429,7 +484,7 @@ void ReverseVerticalDipDirection(struct Sprite *sprite)
// arg 0: 1 = target or 0 = attacker
// arg 1: direction (0 = horizontal and vertical, 1 = horizontal only, 2 = vertical only)
// arg 2: duration
-void SlideMonToOriginalPos(struct Sprite *sprite)
+static void SlideMonToOriginalPos(struct Sprite *sprite)
{
u32 monSpriteId;
if (!gBattleAnimArgs[0])
@@ -442,7 +497,7 @@ void SlideMonToOriginalPos(struct Sprite *sprite)
sprite->data[2] = gSprites[monSpriteId].pos1.x;
sprite->data[3] = gSprites[monSpriteId].pos1.y + gSprites[monSpriteId].pos2.y;
sprite->data[4] = gSprites[monSpriteId].pos1.y;
- sub_80A6E14(sprite);
+ InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = 0;
sprite->data[4] = 0;
sprite->data[5] = gSprites[monSpriteId].pos2.x;
@@ -459,7 +514,7 @@ void SlideMonToOriginalPos(struct Sprite *sprite)
sprite->callback = SlideMonToOriginalPosStep;
}
-void SlideMonToOriginalPosStep(struct Sprite *sprite)
+static void SlideMonToOriginalPosStep(struct Sprite *sprite)
{
s8 monSpriteId;
u8 lo;
@@ -496,7 +551,7 @@ void SlideMonToOriginalPosStep(struct Sprite *sprite)
// arg 2: target y pixel offset
// arg 3: mirror vertical translation for opposite battle side
// arg 4: duration
-void SlideMonToOffset(struct Sprite *sprite)
+static void SlideMonToOffset(struct Sprite *sprite)
{
u8 battler;
u8 monSpriteId;
@@ -520,7 +575,7 @@ void SlideMonToOffset(struct Sprite *sprite)
sprite->data[2] = gSprites[monSpriteId].pos1.x + gBattleAnimArgs[1];
sprite->data[3] = gSprites[monSpriteId].pos1.y;
sprite->data[4] = gSprites[monSpriteId].pos1.y + gBattleAnimArgs[2];
- sub_80A6E14(sprite);
+ InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = 0;
sprite->data[4] = 0;
sprite->data[5] = monSpriteId;
@@ -529,7 +584,7 @@ void SlideMonToOffset(struct Sprite *sprite)
sprite->callback = sub_80A6680;
}
-void sub_80D5B48(struct Sprite *sprite)
+static void sub_80D5B48(struct Sprite *sprite)
{
u8 spriteId;
u8 battlerId;
@@ -556,7 +611,7 @@ void sub_80D5B48(struct Sprite *sprite)
sprite->data[2] = sprite->data[1] + gBattleAnimArgs[1];
sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
sprite->data[4] = sprite->data[3] + gBattleAnimArgs[2];
- sub_80A6E14(sprite);
+ InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = gSprites[spriteId].pos2.x << 8;
sprite->data[4] = gSprites[spriteId].pos2.y << 8;
sprite->data[5] = spriteId;
@@ -573,7 +628,7 @@ void sub_80D5B48(struct Sprite *sprite)
}
-void sub_80D5C20(struct Sprite *sprite)
+static void sub_80D5C20(struct Sprite *sprite)
{
gSprites[sprite->data[5]].pos2.x = 0;
gSprites[sprite->data[5]].pos2.y = 0;
diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c
index 6993bd2ee..07fb604b8 100644
--- a/src/battle_anim_sound_tasks.c
+++ b/src/battle_anim_sound_tasks.c
@@ -1,11 +1,11 @@
#include "global.h"
#include "battle.h"
-#include "constants/battle_anim.h"
-#include "constants/species.h"
#include "battle_anim.h"
-#include "task.h"
-#include "sound.h"
#include "contest.h"
+#include "sound.h"
+#include "task.h"
+#include "constants/battle_anim.h"
+#include "constants/species.h"
// this file's functions
static void sub_8158B98(u8 taskId);
@@ -23,8 +23,8 @@ void sub_8158B30(u8 taskId)
gTasks[taskId].data[0] = gBattleAnimArgs[0];
gTasks[taskId].data[1] = gBattleAnimArgs[1];
- pan1 = BattleAnimAdjustPanning(PAN_SIDE_PLAYER);
- pan2 = BattleAnimAdjustPanning(PAN_SIDE_OPPONENT);
+ pan1 = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
+ pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
panIncrement = CalculatePanIncrement(pan1, pan2, 2);
gTasks[taskId].data[2] = pan1;
@@ -64,7 +64,7 @@ static void sub_8158C04(u8 taskId)
s8 pan;
gTasks[taskId].data[10] = 0;
- pan = BattleAnimAdjustPanning(PAN_SIDE_OPPONENT);
+ pan = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
PlaySE12WithPanning(gTasks[taskId].data[1], pan);
if (++gTasks[taskId].data[11] == 2)
DestroyAnimSoundTask(taskId);
@@ -127,11 +127,11 @@ static void sub_8158D08(u8 taskId)
void sub_8158D8C(u8 taskId)
{
u16 species = 0;
- s8 pan = BattleAnimAdjustPanning(PAN_SIDE_PLAYER);
+ s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
if (IsContest())
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
- species = gContestResources->field_18->unk0;
+ species = gContestResources->field_18->species;
else
DestroyAnimVisualTask(taskId); // UB: function should return upon destroying task.
}
@@ -173,11 +173,11 @@ void sub_8158D8C(u8 taskId)
void sub_8158E9C(u8 taskId)
{
u16 species = 0;
- s8 pan = BattleAnimAdjustPanning(PAN_SIDE_PLAYER);
+ s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
if (IsContest())
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
- species = gContestResources->field_18->unk0;
+ species = gContestResources->field_18->species;
else
DestroyAnimVisualTask(taskId); // UB: function should return upon destroying task.
}
@@ -278,10 +278,10 @@ void sub_81590B8(u8 taskId)
s8 pan;
gTasks[taskId].data[10] = gBattleAnimArgs[0];
- pan = BattleAnimAdjustPanning(PAN_SIDE_PLAYER);
+ pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
if (IsContest())
- species = gContestResources->field_18->unk0;
+ species = gContestResources->field_18->species;
else
species = gAnimBattlerSpecies[gBattleAnimAttacker];
diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c
new file mode 100644
index 000000000..6dfebe77f
--- /dev/null
+++ b/src/battle_anim_utility_funcs.c
@@ -0,0 +1,1060 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "contest.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "malloc.h"
+#include "palette.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "util.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+
+struct AnimStatsChangeData
+{
+ u8 battler1;
+ u8 battler2;
+ u8 higherPriority;
+ s16 data[8];
+ u16 species;
+};
+
+static EWRAM_DATA struct AnimStatsChangeData *sAnimStatsChangeData = {0};
+
+static void StartBlendAnimSpriteColor(u8, u32);
+static void AnimTask_BlendSpriteColor_Step2(u8);
+static void sub_81169A0(u8);
+static void sub_81169F8(u8);
+static void sub_8116AD0(struct Sprite*);
+static void sub_8116D64(u8);
+static void sub_8116F04(u8);
+static void sub_81170EC(u8);
+static void sub_81172EC(u8);
+static void sub_8117500(u8);
+static void sub_81175C4(u32, u16);
+static void sub_81176D8(u8);
+static void sub_8117A60(u8);
+static void sub_8117FD0(u8);
+
+const u16 gUnknown_08597418 = RGB(31, 31, 31);
+
+// no clue what these are...
+// possibly some register offsets
+const u8 gUnknown_0859741A[] = {0x08, 0x0a, 0x0c, 0x0e};
+const u8 gUnknown_0859741E[] = {0x08, 0x0a, 0x0c, 0x0e};
+
+void sub_8116620(u8 taskId)
+{
+ u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
+ selectedPalettes |= sub_80A76C4((gBattleAnimArgs[0] >> 7) & 1,
+ (gBattleAnimArgs[0] >> 8) & 1,
+ (gBattleAnimArgs[0] >> 9) & 1,
+ (gBattleAnimArgs[0] >> 10) & 1);
+ StartBlendAnimSpriteColor(taskId, selectedPalettes);
+}
+
+void sub_8116664(u8 taskId)
+{
+ u8 battler;
+ u32 selectedPalettes;
+ u8 animBattlers[2];
+
+ animBattlers[1] = 0xFF;
+ selectedPalettes = UnpackSelectedBattleAnimPalettes(1);
+ switch (gBattleAnimArgs[0])
+ {
+ case 2:
+ selectedPalettes = 0;
+ // fall through
+ case 0:
+ animBattlers[0] = gBattleAnimAttacker;
+ break;
+ case 3:
+ selectedPalettes = 0;
+ // fall through
+ case 1:
+ animBattlers[0] = gBattleAnimTarget;
+ break;
+ case 4:
+ animBattlers[0] = gBattleAnimAttacker;
+ animBattlers[1] = gBattleAnimTarget;
+ break;
+ case 5:
+ animBattlers[0] = 0xFF;
+ break;
+ case 6:
+ selectedPalettes = 0;
+ animBattlers[0] = BATTLE_PARTNER(gBattleAnimAttacker);
+ break;
+ case 7:
+ selectedPalettes = 0;
+ animBattlers[0] = BATTLE_PARTNER(gBattleAnimTarget);
+ break;
+ }
+
+ for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++)
+ {
+ if (battler != animBattlers[0] && battler != animBattlers[1] && IsBattlerSpriteVisible(battler))
+ selectedPalettes |= 0x10000 << sub_80A77AC(battler);
+ }
+
+ StartBlendAnimSpriteColor(taskId, selectedPalettes);
+}
+
+void AnimTask_SetCamouflageBlend(u8 taskId)
+{
+ u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
+ switch (gBattleTerrain)
+ {
+ case BATTLE_TERRAIN_GRASS:
+ gBattleAnimArgs[4] = RGB(12, 24, 2);
+ break;
+ case BATTLE_TERRAIN_LONG_GRASS:
+ gBattleAnimArgs[4] = RGB(0, 15, 2);
+ break;
+ case BATTLE_TERRAIN_SAND:
+ gBattleAnimArgs[4] = RGB(30, 24, 11);
+ break;
+ case BATTLE_TERRAIN_UNDERWATER:
+ gBattleAnimArgs[4] = RGB(0, 0, 18);
+ break;
+ case BATTLE_TERRAIN_WATER:
+ gBattleAnimArgs[4] = RGB(11, 22, 31);
+ break;
+ case BATTLE_TERRAIN_POND:
+ gBattleAnimArgs[4] = RGB(11, 22, 31);
+ break;
+ case BATTLE_TERRAIN_MOUNTAIN:
+ gBattleAnimArgs[4] = RGB(22, 16, 10);
+ break;
+ case BATTLE_TERRAIN_CAVE:
+ gBattleAnimArgs[4] = RGB(14, 9, 3);
+ break;
+ case BATTLE_TERRAIN_BUILDING:
+ gBattleAnimArgs[4] = RGB(31, 31, 31);
+ break;
+ case BATTLE_TERRAIN_PLAIN:
+ gBattleAnimArgs[4] = RGB(31, 31, 31);
+ break;
+ }
+
+ StartBlendAnimSpriteColor(taskId, selectedPalettes);
+}
+
+void AnimTask_BlendParticle(u8 taskId)
+{
+ u8 paletteIndex = IndexOfSpritePaletteTag(gBattleAnimArgs[0]);
+ u32 selectedPalettes = 1 << (paletteIndex + 16);
+ StartBlendAnimSpriteColor(taskId, selectedPalettes);
+}
+
+void StartBlendAnimSpriteColor(u8 taskId, u32 selectedPalettes)
+{
+ gTasks[taskId].data[0] = selectedPalettes;
+ gTasks[taskId].data[1] = selectedPalettes >> 16;
+ gTasks[taskId].data[2] = gBattleAnimArgs[1];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ gTasks[taskId].data[4] = gBattleAnimArgs[3];
+ gTasks[taskId].data[5] = gBattleAnimArgs[4];
+ gTasks[taskId].data[10] = gBattleAnimArgs[2];
+ gTasks[taskId].func = AnimTask_BlendSpriteColor_Step2;
+ gTasks[taskId].func(taskId);
+}
+
+static void AnimTask_BlendSpriteColor_Step2(u8 taskId)
+{
+ u32 selectedPalettes;
+ u16 singlePaletteMask = 0;
+
+ if (gTasks[taskId].data[9] == gTasks[taskId].data[2])
+ {
+ gTasks[taskId].data[9] = 0;
+ selectedPalettes = gTasks[taskId].data[0] | (gTasks[taskId].data[1] << 16);
+ while (selectedPalettes != 0)
+ {
+ if (selectedPalettes & 1)
+ BlendPalette(singlePaletteMask, 16, gTasks[taskId].data[10], gTasks[taskId].data[5]);
+ singlePaletteMask += 0x10;
+ selectedPalettes >>= 1;
+ }
+
+ if (gTasks[taskId].data[10] < gTasks[taskId].data[4])
+ gTasks[taskId].data[10]++;
+ else if (gTasks[taskId].data[10] > gTasks[taskId].data[4])
+ gTasks[taskId].data[10]--;
+ else
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].data[9]++;
+ }
+}
+
+void sub_8116960(u8 taskId)
+{
+ BeginHardwarePaletteFade(
+ gBattleAnimArgs[0],
+ gBattleAnimArgs[1],
+ gBattleAnimArgs[2],
+ gBattleAnimArgs[3],
+ gBattleAnimArgs[4]);
+
+ gTasks[taskId].func = sub_81169A0;
+}
+
+static void sub_81169A0(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_81169C0(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0] = gBattleAnimArgs[0];
+ task->data[1] = 0;
+ task->data[2] = gBattleAnimArgs[1];
+ task->data[3] = gBattleAnimArgs[2];
+ task->data[4] = gBattleAnimArgs[3];
+ task->data[5] = 0;
+ task->func = sub_81169F8;
+}
+
+static void sub_81169F8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (task->data[4])
+ {
+ if (task->data[1])
+ {
+ task->data[1]--;
+ }
+ else
+ {
+ task->data[6] = duplicate_obj_of_side_rel2move_in_transparent_mode(task->data[0]);
+ if (task->data[6] >= 0)
+ {
+ gSprites[task->data[6]].oam.priority = task->data[0] ? 1 : 2;
+ gSprites[task->data[6]].data[0] = task->data[3];
+ gSprites[task->data[6]].data[1] = taskId;
+ gSprites[task->data[6]].data[2] = 5;
+ gSprites[task->data[6]].callback = sub_8116AD0;
+ task->data[5]++;
+ }
+
+ task->data[4]--;
+ task->data[1] = task->data[2];
+ }
+ }
+ else if (task->data[5] == 0)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_8116AD0(struct Sprite *sprite)
+{
+ if (sprite->data[0])
+ {
+ sprite->data[0]--;
+ }
+ else
+ {
+ gTasks[sprite->data[1]].data[sprite->data[2]]--;
+ obj_delete_but_dont_free_vram(sprite);
+ }
+}
+
+void sub_8116B14(u8 taskId)
+{
+ u16 species;
+ int spriteId, newSpriteId;
+ u16 var0;
+ u16 bg1Cnt;
+ struct UnknownAnimStruct2 unknownStruct;
+
+ var0 = 0;
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR
+ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR
+ | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 12));
+ bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
+ ((struct BgCnt *)&bg1Cnt)->priority = 0;
+ ((struct BgCnt *)&bg1Cnt)->screenSize = 0;
+ SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
+
+ if (!IsContest())
+ {
+ ((struct BgCnt *)&bg1Cnt)->charBaseBlock = 1;
+ SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
+ }
+
+ if (IsDoubleBattle() && !IsContest())
+ {
+ if (GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_OPPONENT_RIGHT
+ || GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_PLAYER_LEFT)
+ {
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)) == TRUE)
+ {
+ gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority -= 1;
+ ((struct BgCnt *)&bg1Cnt)->priority = 1;
+ SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
+ var0 = 1;
+ }
+ }
+ }
+
+ if (IsContest())
+ {
+ species = gContestResources->field_18->species;
+ }
+ else
+ {
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
+ }
+
+ spriteId = GetAnimBattlerSpriteId(0);
+ newSpriteId = sub_80A89C8(gBattleAnimAttacker, spriteId, species);
+ sub_80A6B30(&unknownStruct);
+ sub_80A6D60(&unknownStruct, gUnknown_08C20684, 0);
+ sub_80A6CC0(unknownStruct.bgId, gUnknown_08C20668, unknownStruct.tilesOffset);
+ LoadPalette(&gUnknown_08597418, unknownStruct.unk8 * 16 + 1, 2);
+
+ gBattle_BG1_X = -gSprites[spriteId].pos1.x + 32;
+ gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
+ gTasks[taskId].data[0] = newSpriteId;
+ gTasks[taskId].data[6] = var0;
+ gTasks[taskId].func = sub_8116D64;
+}
+
+static void sub_8116D64(u8 taskId)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+ struct Sprite *sprite;
+ u16 bg1Cnt;
+
+ gTasks[taskId].data[10] += 4;
+ gBattle_BG1_Y -= 4;
+ if (gTasks[taskId].data[10] == 64)
+ {
+ gTasks[taskId].data[10] = 0;
+ gBattle_BG1_Y += 64;
+ if (++gTasks[taskId].data[11] == 4)
+ {
+ sub_80A477C(0);
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR
+ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR
+ | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ if (!IsContest())
+ {
+ bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
+ ((struct BgCnt *)&bg1Cnt)->charBaseBlock = 0;
+ SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
+ }
+
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ sprite = &gSprites[GetAnimBattlerSpriteId(0)]; // unused
+ sprite = &gSprites[gTasks[taskId].data[0]];
+ DestroySprite(sprite);
+
+ sub_80A6B30(&unknownStruct);
+ sub_80A6C68(unknownStruct.bgId);
+ if (gTasks[taskId].data[6] == 1)
+ gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority++;
+
+ gBattle_BG1_Y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_8116EB4(u8 taskId)
+{
+ u8 i;
+
+ sAnimStatsChangeData = AllocZeroed(sizeof(struct AnimStatsChangeData));
+ for (i = 0; i < 8; i++)
+ sAnimStatsChangeData->data[i] = gBattleAnimArgs[i];
+
+ gTasks[taskId].func = sub_8116F04;
+}
+
+static void sub_8116F04(u8 taskId)
+{
+ if (sAnimStatsChangeData->data[2] == 0)
+ sAnimStatsChangeData->battler1 = gBattleAnimAttacker;
+ else
+ sAnimStatsChangeData->battler1 = gBattleAnimTarget;
+
+ sAnimStatsChangeData->battler2 = BATTLE_PARTNER(sAnimStatsChangeData->battler1);
+ if (IsContest() || (sAnimStatsChangeData->data[3] && !IsBattlerSpriteVisible(sAnimStatsChangeData->battler2)))
+ sAnimStatsChangeData->data[3] = 0;
+
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR
+ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR
+ | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 0);
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
+
+ if (IsDoubleBattle() && sAnimStatsChangeData->data[3] == 0)
+ {
+ if (GetBattlerPosition(sAnimStatsChangeData->battler1) == B_POSITION_OPPONENT_RIGHT
+ || GetBattlerPosition(sAnimStatsChangeData->battler1) == B_POSITION_PLAYER_LEFT)
+ {
+ if (IsBattlerSpriteVisible(sAnimStatsChangeData->battler2) == TRUE)
+ {
+ gSprites[gBattlerSpriteIds[sAnimStatsChangeData->battler2]].oam.priority -= 1;
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ sAnimStatsChangeData->higherPriority = 1;
+ }
+ }
+ }
+
+ if (IsContest())
+ {
+ sAnimStatsChangeData->species = gContestResources->field_18->species;
+ }
+ else
+ {
+ if (GetBattlerSide(sAnimStatsChangeData->battler1) != B_SIDE_PLAYER)
+ sAnimStatsChangeData->species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[sAnimStatsChangeData->battler1]], MON_DATA_SPECIES);
+ else
+ sAnimStatsChangeData->species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[sAnimStatsChangeData->battler1]], MON_DATA_SPECIES);
+ }
+
+ gTasks[taskId].func = sub_81170EC;
+}
+
+static void sub_81170EC(u8 taskId)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+ u8 spriteId, spriteId2;
+ u8 battlerSpriteId;
+
+ spriteId2 = 0;
+ battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler1];
+ spriteId = sub_80A89C8(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species);
+ if (sAnimStatsChangeData->data[3])
+ {
+ battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler2];
+ spriteId2 = sub_80A89C8(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species);
+ }
+
+ sub_80A6B30(&unknownStruct);
+ if (sAnimStatsChangeData->data[0] == 0)
+ sub_80A6D60(&unknownStruct, gBattleStatMask1_Tilemap, 0);
+ else
+ sub_80A6D60(&unknownStruct, gBattleStatMask2_Tilemap, 0);
+
+ sub_80A6CC0(unknownStruct.bgId, gBattleStatMask_Gfx, unknownStruct.tilesOffset);
+ switch (sAnimStatsChangeData->data[1])
+ {
+ case 0:
+ LoadCompressedPalette(gBattleStatMask2_Pal, unknownStruct.unk8 << 4, 32);
+ break;
+ case 1:
+ LoadCompressedPalette(gBattleStatMask1_Pal, unknownStruct.unk8 << 4, 32);
+ break;
+ case 2:
+ LoadCompressedPalette(gBattleStatMask3_Pal, unknownStruct.unk8 << 4, 32);
+ break;
+ case 3:
+ LoadCompressedPalette(gBattleStatMask4_Pal, unknownStruct.unk8 << 4, 32);
+ break;
+ case 4:
+ LoadCompressedPalette(gBattleStatMask6_Pal, unknownStruct.unk8 << 4, 32);
+ break;
+ case 5:
+ LoadCompressedPalette(gBattleStatMask7_Pal, unknownStruct.unk8 << 4, 32);
+ break;
+ case 6:
+ LoadCompressedPalette(gBattleStatMask8_Pal, unknownStruct.unk8 << 4, 32);
+ break;
+ default:
+ LoadCompressedPalette(gBattleStatMask5_Pal, unknownStruct.unk8 << 4, 32);
+ break;
+ }
+
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+
+ if (sAnimStatsChangeData->data[0] == 1)
+ {
+ gBattle_BG1_X = 64;
+ gTasks[taskId].data[1] = -3;
+ }
+ else
+ {
+ gTasks[taskId].data[1] = 3;
+ }
+
+ if (sAnimStatsChangeData->data[4] == 0)
+ {
+ gTasks[taskId].data[4] = 10;
+ gTasks[taskId].data[5] = 20;
+ }
+ else
+ {
+ gTasks[taskId].data[4] = 13;
+ gTasks[taskId].data[5] = 30;
+ }
+
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[2] = sAnimStatsChangeData->data[3];
+ gTasks[taskId].data[3] = spriteId2;
+ gTasks[taskId].data[6] = sAnimStatsChangeData->higherPriority;
+ gTasks[taskId].data[7] = gBattlerSpriteIds[sAnimStatsChangeData->battler2];
+ gTasks[taskId].func = sub_81172EC;
+
+ if (sAnimStatsChangeData->data[0] == 0)
+ PlaySE12WithPanning(SE_W287, BattleAnimAdjustPanning2(-64));
+ else
+ PlaySE12WithPanning(SE_W287B, BattleAnimAdjustPanning2(-64));
+}
+
+static void sub_81172EC(u8 taskId)
+{
+ gBattle_BG1_Y += gTasks[taskId].data[1];
+
+ switch (gTasks[taskId].data[15])
+ {
+ case 0:
+ if (gTasks[taskId].data[11]++ > 0)
+ {
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[12]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
+ if (gTasks[taskId].data[12] == gTasks[taskId].data[4])
+ gTasks[taskId].data[15]++;
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[10] == gTasks[taskId].data[5])
+ gTasks[taskId].data[15]++;
+ break;
+ case 2:
+ if (gTasks[taskId].data[11]++ > 0)
+ {
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[12]--;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
+ if (gTasks[taskId].data[12] == 0)
+ {
+ sub_80A477C(0);
+ gTasks[taskId].data[15]++;;
+ }
+ }
+ break;
+ case 3:
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR
+ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR
+ | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
+
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroySprite(&gSprites[gTasks[taskId].data[0]]);
+ if (gTasks[taskId].data[2])
+ DestroySprite(&gSprites[gTasks[taskId].data[3]]);
+
+ if (gTasks[taskId].data[6] == 1)
+ gSprites[gTasks[taskId].data[7]].oam.priority++;
+
+ Free(sAnimStatsChangeData);
+ sAnimStatsChangeData = NULL;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_8117494(u8 taskId)
+{
+ u32 selectedPalettes = sub_80A76C4(1, 1, 1, 1);
+ sub_81175C4(selectedPalettes, 0);
+ gTasks[taskId].data[14] = selectedPalettes >> 16;
+
+ selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0) & 0xFFFF;
+ sub_81175C4(selectedPalettes, 0xFFFF);
+ gTasks[taskId].data[15] = selectedPalettes;
+
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].func = sub_8117500;
+}
+
+static void sub_8117500(u8 taskId)
+{
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 6)
+ {
+ task->data[1] = 0;
+ task->data[2] = 16;
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ task->data[2]--;
+
+ for (i = 0; i < 16; i++)
+ {
+ if ((task->data[15] >> i) & 1)
+ {
+ u16 paletteOffset = i * 16;
+ BlendPalette(paletteOffset, 16, task->data[2], 0xFFFF);
+ }
+
+ if ((task->data[14] >> i) & 1)
+ {
+ u16 paletteOffset = i * 16 + 0x100;
+ BlendPalette(paletteOffset, 16, task->data[2], 0);
+ }
+ }
+
+ if (task->data[2] == 0)
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_81175C4(u32 selectedPalettes, u16 color)
+{
+ u16 i;
+
+ for (i = 0; i < 32; i++)
+ {
+ if (selectedPalettes & 1)
+ {
+ u16 curOffset = i * 16;
+ u16 paletteOffset = curOffset;
+ while (curOffset < paletteOffset + 16)
+ {
+ gPlttBufferFaded[curOffset] = color;
+ curOffset++;
+ }
+ }
+
+ selectedPalettes >>= 1;
+ }
+}
+
+void sub_8117610(u8 taskId)
+{
+ u32 battler;
+ int j;
+ u32 selectedPalettes = 0;
+
+ for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++)
+ {
+ if (gBattleAnimAttacker != battler)
+ selectedPalettes |= 1 << (battler + 16);
+ }
+
+ for (j = 5; j != 0; j--)
+ gBattleAnimArgs[j] = gBattleAnimArgs[j - 1];
+
+ StartBlendAnimSpriteColor(taskId, selectedPalettes);
+}
+
+void sub_8117660(u8 taskId)
+{
+ u8 newTaskId;
+
+ sub_80A6DAC(0);
+ newTaskId = CreateTask(sub_81176D8, 5);
+ if (gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ }
+
+ gTasks[newTaskId].data[1] = gBattleAnimArgs[0];
+ gTasks[newTaskId].data[2] = gBattleAnimArgs[1];
+ gTasks[newTaskId].data[3] = gBattleAnimArgs[3];
+ gTasks[newTaskId].data[0]++;
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_81176D8(u8 taskId)
+{
+ gTasks[taskId].data[10] += gTasks[taskId].data[1];
+ gTasks[taskId].data[11] += gTasks[taskId].data[2];
+ gBattle_BG3_X += gTasks[taskId].data[10] >> 8;
+ gBattle_BG3_Y += gTasks[taskId].data[11] >> 8;
+ gTasks[taskId].data[10] &= 0xFF;
+ gTasks[taskId].data[11] &= 0xFF;
+
+ if (gBattleAnimArgs[7] == gTasks[taskId].data[3])
+ {
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ sub_80A6DAC(1);
+ DestroyTask(taskId);
+ }
+}
+
+void AnimTask_GetAttackerSide(u8 taskId)
+{
+ gBattleAnimArgs[7] = GetBattlerSide(gBattleAnimAttacker);
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_GetTargetSide(u8 taskId)
+{
+ gBattleAnimArgs[7] = GetBattlerSide(gBattleAnimTarget);
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_GetTargetIsAttackerPartner(u8 taskId)
+{
+ gBattleAnimArgs[7] = BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_81177E4(u8 taskId)
+{
+ u16 battler;
+
+ for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++)
+ {
+ if (battler != gBattleAnimAttacker && IsBattlerSpriteVisible(battler))
+ gSprites[gBattlerSpriteIds[battler]].invisible = gBattleAnimArgs[0];
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u8 *arg8, const u8 *arg9, const u16 *palette)
+{
+ u16 species;
+ u8 spriteId, spriteId2;
+ u16 bg1Cnt;
+ struct UnknownAnimStruct2 unknownStruct;
+ u8 battler2;
+
+ spriteId2 = 0;
+ battler2 = BATTLE_PARTNER(battler1);
+
+ if (IsContest() || (arg4 && !IsBattlerSpriteVisible(battler2)))
+ arg4 = 0;
+
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR
+ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR
+ | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
+ ((vBgCnt *)&bg1Cnt)->priority = 0;
+ ((vBgCnt *)&bg1Cnt)->screenSize = 0;
+ ((vBgCnt *)&bg1Cnt)->areaOverflowMode = 1;
+ if (!IsContest())
+ {
+ ((vBgCnt *)&bg1Cnt)->charBaseBlock = 1;
+ }
+
+ SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
+
+ if (IsContest())
+ {
+ species = gContestResources->field_18->species;
+ }
+ else
+ {
+ if (GetBattlerSide(battler1) != B_SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES);
+ }
+
+ spriteId = sub_80A89C8(battler1, gBattlerSpriteIds[battler1], species);
+ if (arg4)
+ spriteId2 = sub_80A89C8(battler2, gBattlerSpriteIds[battler2], species);
+
+ sub_80A6B30(&unknownStruct);
+ sub_80A6D60(&unknownStruct, arg9, 0);
+ sub_80A6CC0(unknownStruct.bgId, arg8, unknownStruct.tilesOffset);
+ LoadCompressedPalette(palette, unknownStruct.unk8 << 4, 32);
+
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gTasks[taskId].data[1] = arg2;
+ gTasks[taskId].data[4] = arg5;
+ gTasks[taskId].data[5] = arg7;
+ gTasks[taskId].data[6] = arg6;
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[2] = arg4;
+ gTasks[taskId].data[3] = spriteId2;
+ gTasks[taskId].func = sub_8117A60;
+}
+
+static void sub_8117A60(u8 taskId)
+{
+ gTasks[taskId].data[13] += gTasks[taskId].data[1] < 0 ? -gTasks[taskId].data[1] : gTasks[taskId].data[1];
+ if (gTasks[taskId].data[1] < 0)
+ gBattle_BG1_Y -= gTasks[taskId].data[13] >> 8;
+ else
+ gBattle_BG1_Y += gTasks[taskId].data[13] >> 8;
+
+ gTasks[taskId].data[13] &= 0xFF;
+ switch (gTasks[taskId].data[15])
+ {
+ case 0:
+ if (gTasks[taskId].data[11]++ >= gTasks[taskId].data[6])
+ {
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[12]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
+ if (gTasks[taskId].data[12] == gTasks[taskId].data[4])
+ gTasks[taskId].data[15]++;
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[10] == gTasks[taskId].data[5])
+ gTasks[taskId].data[15]++;
+ break;
+ case 2:
+ if (gTasks[taskId].data[11]++ >= gTasks[taskId].data[6])
+ {
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[12]--;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[12], 16 - gTasks[taskId].data[12]));
+ if (gTasks[taskId].data[12] == 0)
+ {
+ sub_80A477C(0);
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR
+ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR
+ | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ if (!IsContest())
+ {
+ u16 bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
+ ((vBgCnt *)&bg1Cnt)->charBaseBlock = 0;
+ SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt);
+ }
+
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) ^ DISPCNT_OBJWIN_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroySprite(&gSprites[gTasks[taskId].data[0]]);
+ if (gTasks[taskId].data[2])
+ DestroySprite(&gSprites[gTasks[taskId].data[3]]);
+
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ break;
+ }
+}
+
+void AnimTask_GetBattleTerrain(u8 taskId)
+{
+ gBattleAnimArgs[0] = gBattleTerrain;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8117C44(u8 taskId)
+{
+ gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8117C70(u8 taskId)
+{
+ Free(gMonSpritesGfxPtr->field_17C);
+ gMonSpritesGfxPtr->field_17C = NULL;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8117CA0(u8 taskId)
+{
+ u32 selectedPalettes;
+ int paletteIndex = 0;
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0);
+ while ((selectedPalettes & 1) == 0)
+ {
+ selectedPalettes >>= 1;
+ paletteIndex++;
+ }
+ }
+ else if (gBattleAnimArgs[0] == 1)
+ {
+ paletteIndex = gBattleAnimAttacker + 16;
+ }
+ else if (gBattleAnimArgs[0] == 2)
+ {
+ paletteIndex = gBattleAnimTarget + 16;
+ }
+
+ memcpy(&gMonSpritesGfxPtr->field_17C[gBattleAnimArgs[1] * 16], &gPlttBufferUnfaded[paletteIndex * 16], 32);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8117D3C(u8 taskId)
+{
+ u32 selectedPalettes;
+ int paletteIndex = 0;
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0);
+ while ((selectedPalettes & 1) == 0)
+ {
+ selectedPalettes >>= 1;
+ paletteIndex++;
+ }
+ }
+ else if (gBattleAnimArgs[0] == 1)
+ {
+ paletteIndex = gBattleAnimAttacker + 16;
+ }
+ else if (gBattleAnimArgs[0] == 2)
+ {
+ paletteIndex = gBattleAnimTarget + 16;
+ }
+
+ memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gMonSpritesGfxPtr->field_17C[gBattleAnimArgs[1] * 16], 32);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8117DD8(u8 taskId)
+{
+ u32 selectedPalettes;
+ int paletteIndex = 0;
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0);
+ while ((selectedPalettes & 1) == 0)
+ {
+ selectedPalettes >>= 1;
+ paletteIndex++;
+ }
+ }
+ else if (gBattleAnimArgs[0] == 1)
+ {
+ paletteIndex = gBattleAnimAttacker + 16;
+ }
+ else if (gBattleAnimArgs[0] == 2)
+ {
+ paletteIndex = gBattleAnimTarget + 16;
+ }
+
+ memcpy(&gPlttBufferUnfaded[paletteIndex * 16], &gPlttBufferFaded[paletteIndex * 16], 32);
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_IsContest(u8 taskId)
+{
+ if (IsContest())
+ gBattleAnimArgs[7] = 1;
+ else
+ gBattleAnimArgs[7] = 0;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8117E94(u8 taskId)
+{
+ gBattleAnimAttacker = gBattlerTarget;
+ gBattleAnimTarget = gEffectBattler;
+ DestroyAnimVisualTask(taskId);
+}
+
+void AnimTask_IsTargetSameSide(u8 taskId)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
+ gBattleAnimArgs[7] = 1;
+ else
+ gBattleAnimArgs[7] = 0;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8117F10(u8 taskId)
+{
+ gBattleAnimTarget = gBattlerTarget;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8117F30(u8 taskId)
+{
+ gBattleAnimAttacker = gBattlerAttacker;
+ gBattleAnimTarget = gEffectBattler;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8117F60(u8 taskId)
+{
+ if (IsContest())
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].data[0] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible;
+ gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = 1;
+ gTasks[taskId].func = sub_8117FD0;
+ gAnimVisualTaskCount--;
+ }
+}
+
+static void sub_8117FD0(u8 taskId)
+{
+ if (gBattleAnimArgs[7] == 0x1000)
+ {
+ gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = (u8)gTasks[taskId].data[0] & 1;
+ DestroyTask(taskId);
+ }
+}
diff --git a/src/battle_arena.c b/src/battle_arena.c
new file mode 100644
index 000000000..cd2c976da
--- /dev/null
+++ b/src/battle_arena.c
@@ -0,0 +1,926 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_arena.h"
+#include "battle_message.h"
+#include "battle_setup.h"
+#include "battle_tower.h"
+#include "bg.h"
+#include "decompress.h"
+#include "event_data.h"
+#include "frontier_util.h"
+#include "gpu_regs.h"
+#include "item.h"
+#include "m4a.h"
+#include "overworld.h"
+#include "palette.h"
+#include "random.h"
+#include "sound.h"
+#include "string_util.h"
+#include "text.h"
+#include "util.h"
+#include "constants/songs.h"
+#include "constants/battle_string_ids.h"
+#include "constants/battle_frontier.h"
+#include "constants/moves.h"
+
+extern const u32 gUnknown_08D854E8[];
+extern const u16 gUnknown_08D855E8[];
+
+// This file's functions.
+static void sub_81A58B4(void);
+static void sub_81A5964(void);
+static void sub_81A59FC(void);
+static void sub_81A5AC4(void);
+static void sub_81A5B08(void);
+static void sub_81A5B88(void);
+static void sub_81A5BE0(void);
+static void SpriteCb_JudgmentIcon(struct Sprite *sprite);
+static void ShowJudgmentSprite(u8 x, u8 y, u8 arg2, u8 battler);
+
+// Const rom data.
+static const s8 sMindRatings[] =
+{
+ [MOVE_NONE] = 0,
+ [MOVE_POUND] = 1,
+ [MOVE_KARATE_CHOP] = 1,
+ [MOVE_DOUBLE_SLAP] = 1,
+ [MOVE_COMET_PUNCH] = 1,
+ [MOVE_MEGA_PUNCH] = 1,
+ [MOVE_PAY_DAY] = 1,
+ [MOVE_FIRE_PUNCH] = 1,
+ [MOVE_ICE_PUNCH] = 1,
+ [MOVE_THUNDER_PUNCH] = 1,
+ [MOVE_SCRATCH] = 1,
+ [MOVE_VICE_GRIP] = 1,
+ [MOVE_GUILLOTINE] = 1,
+ [MOVE_RAZOR_WIND] = 1,
+ [MOVE_SWORDS_DANCE] = 0,
+ [MOVE_CUT] = 1,
+ [MOVE_GUST] = 1,
+ [MOVE_WING_ATTACK] = 1,
+ [MOVE_WHIRLWIND] = 0,
+ [MOVE_FLY] = 1,
+ [MOVE_BIND] = 1,
+ [MOVE_SLAM] = 1,
+ [MOVE_VINE_WHIP] = 1,
+ [MOVE_STOMP] = 1,
+ [MOVE_DOUBLE_KICK] = 1,
+ [MOVE_MEGA_KICK] = 1,
+ [MOVE_JUMP_KICK] = 1,
+ [MOVE_ROLLING_KICK] = 1,
+ [MOVE_SAND_ATTACK] = 0,
+ [MOVE_HEADBUTT] = 1,
+ [MOVE_HORN_ATTACK] = 1,
+ [MOVE_FURY_ATTACK] = 1,
+ [MOVE_HORN_DRILL] = 1,
+ [MOVE_TACKLE] = 1,
+ [MOVE_BODY_SLAM] = 1,
+ [MOVE_WRAP] = 1,
+ [MOVE_TAKE_DOWN] = 1,
+ [MOVE_THRASH] = 1,
+ [MOVE_DOUBLE_EDGE] = 1,
+ [MOVE_TAIL_WHIP] = 0,
+ [MOVE_POISON_STING] = 1,
+ [MOVE_TWINEEDLE] = 1,
+ [MOVE_PIN_MISSILE] = 1,
+ [MOVE_LEER] = 0,
+ [MOVE_BITE] = 1,
+ [MOVE_GROWL] = 0,
+ [MOVE_ROAR] = 0,
+ [MOVE_SING] = 0,
+ [MOVE_SUPERSONIC] = 0,
+ [MOVE_SONIC_BOOM] = 1,
+ [MOVE_DISABLE] = 0,
+ [MOVE_ACID] = 1,
+ [MOVE_EMBER] = 1,
+ [MOVE_FLAMETHROWER] = 1,
+ [MOVE_MIST] = 0,
+ [MOVE_WATER_GUN] = 1,
+ [MOVE_HYDRO_PUMP] = 1,
+ [MOVE_SURF] = 1,
+ [MOVE_ICE_BEAM] = 1,
+ [MOVE_BLIZZARD] = 1,
+ [MOVE_PSYBEAM] = 1,
+ [MOVE_BUBBLE_BEAM] = 1,
+ [MOVE_AURORA_BEAM] = 1,
+ [MOVE_HYPER_BEAM] = 1,
+ [MOVE_PECK] = 1,
+ [MOVE_DRILL_PECK] = 1,
+ [MOVE_SUBMISSION] = 1,
+ [MOVE_LOW_KICK] = 1,
+ [MOVE_COUNTER] = 0,
+ [MOVE_SEISMIC_TOSS] = 1,
+ [MOVE_STRENGTH] = 1,
+ [MOVE_ABSORB] = 1,
+ [MOVE_MEGA_DRAIN] = 1,
+ [MOVE_LEECH_SEED] = 0,
+ [MOVE_GROWTH] = 0,
+ [MOVE_RAZOR_LEAF] = 1,
+ [MOVE_SOLAR_BEAM] = 1,
+ [MOVE_POISON_POWDER] = 0,
+ [MOVE_STUN_SPORE] = 0,
+ [MOVE_SLEEP_POWDER] = 0,
+ [MOVE_PETAL_DANCE] = 1,
+ [MOVE_STRING_SHOT] = 0,
+ [MOVE_DRAGON_RAGE] = 1,
+ [MOVE_FIRE_SPIN] = 1,
+ [MOVE_THUNDER_SHOCK] = 1,
+ [MOVE_THUNDERBOLT] = 1,
+ [MOVE_THUNDER_WAVE] = 0,
+ [MOVE_THUNDER] = 1,
+ [MOVE_ROCK_THROW] = 1,
+ [MOVE_EARTHQUAKE] = 1,
+ [MOVE_FISSURE] = 1,
+ [MOVE_DIG] = 1,
+ [MOVE_TOXIC] = 0,
+ [MOVE_CONFUSION] = 1,
+ [MOVE_PSYCHIC] = 1,
+ [MOVE_HYPNOSIS] = 0,
+ [MOVE_MEDITATE] = 0,
+ [MOVE_AGILITY] = 0,
+ [MOVE_QUICK_ATTACK] = 1,
+ [MOVE_RAGE] = 1,
+ [MOVE_TELEPORT] = 0,
+ [MOVE_NIGHT_SHADE] = 1,
+ [MOVE_MIMIC] = 0,
+ [MOVE_SCREECH] = 0,
+ [MOVE_DOUBLE_TEAM] = 0,
+ [MOVE_RECOVER] = 0,
+ [MOVE_HARDEN] = 0,
+ [MOVE_MINIMIZE] = 0,
+ [MOVE_SMOKESCREEN] = 0,
+ [MOVE_CONFUSE_RAY] = 0,
+ [MOVE_WITHDRAW] = 0,
+ [MOVE_DEFENSE_CURL] = 0,
+ [MOVE_BARRIER] = 0,
+ [MOVE_LIGHT_SCREEN] = 0,
+ [MOVE_HAZE] = 0,
+ [MOVE_REFLECT] = 0,
+ [MOVE_FOCUS_ENERGY] = 0,
+ [MOVE_BIDE] = 0,
+ [MOVE_METRONOME] = 0,
+ [MOVE_MIRROR_MOVE] = 0,
+ [MOVE_SELF_DESTRUCT] = 1,
+ [MOVE_EGG_BOMB] = 1,
+ [MOVE_LICK] = 1,
+ [MOVE_SMOG] = 1,
+ [MOVE_SLUDGE] = 1,
+ [MOVE_BONE_CLUB] = 1,
+ [MOVE_FIRE_BLAST] = 1,
+ [MOVE_WATERFALL] = 1,
+ [MOVE_CLAMP] = 1,
+ [MOVE_SWIFT] = 1,
+ [MOVE_SKULL_BASH] = 1,
+ [MOVE_SPIKE_CANNON] = 1,
+ [MOVE_CONSTRICT] = 1,
+ [MOVE_AMNESIA] = 0,
+ [MOVE_KINESIS] = 0,
+ [MOVE_SOFT_BOILED] = 0,
+ [MOVE_HI_JUMP_KICK] = 1,
+ [MOVE_GLARE] = 0,
+ [MOVE_DREAM_EATER] = 1,
+ [MOVE_POISON_GAS] = 0,
+ [MOVE_BARRAGE] = 1,
+ [MOVE_LEECH_LIFE] = 1,
+ [MOVE_LOVELY_KISS] = 0,
+ [MOVE_SKY_ATTACK] = 1,
+ [MOVE_TRANSFORM] = 0,
+ [MOVE_BUBBLE] = 1,
+ [MOVE_DIZZY_PUNCH] = 1,
+ [MOVE_SPORE] = 0,
+ [MOVE_FLASH] = 0,
+ [MOVE_PSYWAVE] = 1,
+ [MOVE_SPLASH] = 0,
+ [MOVE_ACID_ARMOR] = 0,
+ [MOVE_CRABHAMMER] = 1,
+ [MOVE_EXPLOSION] = 1,
+ [MOVE_FURY_SWIPES] = 1,
+ [MOVE_BONEMERANG] = 1,
+ [MOVE_REST] = 0,
+ [MOVE_ROCK_SLIDE] = 1,
+ [MOVE_HYPER_FANG] = 1,
+ [MOVE_SHARPEN] = 0,
+ [MOVE_CONVERSION] = 0,
+ [MOVE_TRI_ATTACK] = 1,
+ [MOVE_SUPER_FANG] = 1,
+ [MOVE_SLASH] = 1,
+ [MOVE_SUBSTITUTE] = 0,
+ [MOVE_STRUGGLE] = 1,
+ [MOVE_SKETCH] = 0,
+ [MOVE_TRIPLE_KICK] = 1,
+ [MOVE_THIEF] = 1,
+ [MOVE_SPIDER_WEB] = 0,
+ [MOVE_MIND_READER] = 0,
+ [MOVE_NIGHTMARE] = 0,
+ [MOVE_FLAME_WHEEL] = 1,
+ [MOVE_SNORE] = 1,
+ [MOVE_CURSE] = 0,
+ [MOVE_FLAIL] = 1,
+ [MOVE_CONVERSION_2] = 0,
+ [MOVE_AEROBLAST] = 1,
+ [MOVE_COTTON_SPORE] = 0,
+ [MOVE_REVERSAL] = 1,
+ [MOVE_SPITE] = 0,
+ [MOVE_POWDER_SNOW] = 1,
+ [MOVE_PROTECT] = -1,
+ [MOVE_MACH_PUNCH] = 1,
+ [MOVE_SCARY_FACE] = 0,
+ [MOVE_FAINT_ATTACK] = 1,
+ [MOVE_SWEET_KISS] = 0,
+ [MOVE_BELLY_DRUM] = 0,
+ [MOVE_SLUDGE_BOMB] = 1,
+ [MOVE_MUD_SLAP] = 1,
+ [MOVE_OCTAZOOKA] = 1,
+ [MOVE_SPIKES] = 0,
+ [MOVE_ZAP_CANNON] = 1,
+ [MOVE_FORESIGHT] = 0,
+ [MOVE_DESTINY_BOND] = 0,
+ [MOVE_PERISH_SONG] = 0,
+ [MOVE_ICY_WIND] = 1,
+ [MOVE_DETECT] = -1,
+ [MOVE_BONE_RUSH] = 1,
+ [MOVE_LOCK_ON] = 0,
+ [MOVE_OUTRAGE] = 1,
+ [MOVE_SANDSTORM] = 0,
+ [MOVE_GIGA_DRAIN] = 1,
+ [MOVE_ENDURE] = -1,
+ [MOVE_CHARM] = 0,
+ [MOVE_ROLLOUT] = 1,
+ [MOVE_FALSE_SWIPE] = 1,
+ [MOVE_SWAGGER] = 0,
+ [MOVE_MILK_DRINK] = 0,
+ [MOVE_SPARK] = 1,
+ [MOVE_FURY_CUTTER] = 1,
+ [MOVE_STEEL_WING] = 1,
+ [MOVE_MEAN_LOOK] = 0,
+ [MOVE_ATTRACT] = 0,
+ [MOVE_SLEEP_TALK] = 0,
+ [MOVE_HEAL_BELL] = 0,
+ [MOVE_RETURN] = 1,
+ [MOVE_PRESENT] = 1,
+ [MOVE_FRUSTRATION] = 1,
+ [MOVE_SAFEGUARD] = 0,
+ [MOVE_PAIN_SPLIT] = 0,
+ [MOVE_SACRED_FIRE] = 1,
+ [MOVE_MAGNITUDE] = 1,
+ [MOVE_DYNAMIC_PUNCH] = 1,
+ [MOVE_MEGAHORN] = 1,
+ [MOVE_DRAGON_BREATH] = 1,
+ [MOVE_BATON_PASS] = 0,
+ [MOVE_ENCORE] = 0,
+ [MOVE_PURSUIT] = 1,
+ [MOVE_RAPID_SPIN] = 1,
+ [MOVE_SWEET_SCENT] = 0,
+ [MOVE_IRON_TAIL] = 1,
+ [MOVE_METAL_CLAW] = 1,
+ [MOVE_VITAL_THROW] = 1,
+ [MOVE_MORNING_SUN] = 0,
+ [MOVE_SYNTHESIS] = 0,
+ [MOVE_MOONLIGHT] = 0,
+ [MOVE_HIDDEN_POWER] = 1,
+ [MOVE_CROSS_CHOP] = 1,
+ [MOVE_TWISTER] = 1,
+ [MOVE_RAIN_DANCE] = 0,
+ [MOVE_SUNNY_DAY] = 0,
+ [MOVE_CRUNCH] = 1,
+ [MOVE_MIRROR_COAT] = 0,
+ [MOVE_PSYCH_UP] = 0,
+ [MOVE_EXTREME_SPEED] = 1,
+ [MOVE_ANCIENT_POWER] = 1,
+ [MOVE_SHADOW_BALL] = 1,
+ [MOVE_FUTURE_SIGHT] = 1,
+ [MOVE_ROCK_SMASH] = 1,
+ [MOVE_WHIRLPOOL] = 1,
+ [MOVE_BEAT_UP] = 1,
+ [MOVE_FAKE_OUT] = -1,
+ [MOVE_UPROAR] = 1,
+ [MOVE_STOCKPILE] = 0,
+ [MOVE_SPIT_UP] = 1,
+ [MOVE_SWALLOW] = 0,
+ [MOVE_HEAT_WAVE] = 1,
+ [MOVE_HAIL] = 0,
+ [MOVE_TORMENT] = 0,
+ [MOVE_FLATTER] = 0,
+ [MOVE_WILL_O_WISP] = 0,
+ [MOVE_MEMENTO] = 0,
+ [MOVE_FACADE] = 1,
+ [MOVE_FOCUS_PUNCH] = 1,
+ [MOVE_SMELLING_SALT] = 1,
+ [MOVE_FOLLOW_ME] = 0,
+ [MOVE_NATURE_POWER] = 0,
+ [MOVE_CHARGE] = 0,
+ [MOVE_TAUNT] = 0,
+ [MOVE_HELPING_HAND] = 0,
+ [MOVE_TRICK] = 0,
+ [MOVE_ROLE_PLAY] = 0,
+ [MOVE_WISH] = 0,
+ [MOVE_ASSIST] = 0,
+ [MOVE_INGRAIN] = 0,
+ [MOVE_SUPERPOWER] = 1,
+ [MOVE_MAGIC_COAT] = 0,
+ [MOVE_RECYCLE] = 0,
+ [MOVE_REVENGE] = 1,
+ [MOVE_BRICK_BREAK] = 1,
+ [MOVE_YAWN] = 0,
+ [MOVE_KNOCK_OFF] = 1,
+ [MOVE_ENDEAVOR] = 1,
+ [MOVE_ERUPTION] = 1,
+ [MOVE_SKILL_SWAP] = 0,
+ [MOVE_IMPRISON] = 0,
+ [MOVE_REFRESH] = 0,
+ [MOVE_GRUDGE] = 0,
+ [MOVE_SNATCH] = 0,
+ [MOVE_SECRET_POWER] = 1,
+ [MOVE_DIVE] = 1,
+ [MOVE_ARM_THRUST] = 1,
+ [MOVE_CAMOUFLAGE] = 0,
+ [MOVE_TAIL_GLOW] = 0,
+ [MOVE_LUSTER_PURGE] = 1,
+ [MOVE_MIST_BALL] = 1,
+ [MOVE_FEATHER_DANCE] = 0,
+ [MOVE_TEETER_DANCE] = 0,
+ [MOVE_BLAZE_KICK] = 1,
+ [MOVE_MUD_SPORT] = 0,
+ [MOVE_ICE_BALL] = 1,
+ [MOVE_NEEDLE_ARM] = 1,
+ [MOVE_SLACK_OFF] = 0,
+ [MOVE_HYPER_VOICE] = 1,
+ [MOVE_POISON_FANG] = 1,
+ [MOVE_CRUSH_CLAW] = 1,
+ [MOVE_BLAST_BURN] = 1,
+ [MOVE_HYDRO_CANNON] = 1,
+ [MOVE_METEOR_MASH] = 1,
+ [MOVE_ASTONISH] = 1,
+ [MOVE_WEATHER_BALL] = 1,
+ [MOVE_AROMATHERAPY] = 0,
+ [MOVE_FAKE_TEARS] = 0,
+ [MOVE_AIR_CUTTER] = 1,
+ [MOVE_OVERHEAT] = 1,
+ [MOVE_ODOR_SLEUTH] = 0,
+ [MOVE_ROCK_TOMB] = 1,
+ [MOVE_SILVER_WIND] = 1,
+ [MOVE_METAL_SOUND] = 0,
+ [MOVE_GRASS_WHISTLE] = 0,
+ [MOVE_TICKLE] = 0,
+ [MOVE_COSMIC_POWER] = 0,
+ [MOVE_WATER_SPOUT] = 1,
+ [MOVE_SIGNAL_BEAM] = 1,
+ [MOVE_SHADOW_PUNCH] = 1,
+ [MOVE_EXTRASENSORY] = 1,
+ [MOVE_SKY_UPPERCUT] = 1,
+ [MOVE_SAND_TOMB] = 1,
+ [MOVE_SHEER_COLD] = 1,
+ [MOVE_MUDDY_WATER] = 1,
+ [MOVE_BULLET_SEED] = 1,
+ [MOVE_AERIAL_ACE] = 1,
+ [MOVE_ICICLE_SPEAR] = 1,
+ [MOVE_IRON_DEFENSE] = 0,
+ [MOVE_BLOCK] = 0,
+ [MOVE_HOWL] = 0,
+ [MOVE_DRAGON_CLAW] = 1,
+ [MOVE_FRENZY_PLANT] = 1,
+ [MOVE_BULK_UP] = 0,
+ [MOVE_BOUNCE] = 1,
+ [MOVE_MUD_SHOT] = 1,
+ [MOVE_POISON_TAIL] = 1,
+ [MOVE_COVET] = 1,
+ [MOVE_VOLT_TACKLE] = 1,
+ [MOVE_MAGICAL_LEAF] = 1,
+ [MOVE_WATER_SPORT] = 0,
+ [MOVE_CALM_MIND] = 0,
+ [MOVE_LEAF_BLADE] = 1,
+ [MOVE_DRAGON_DANCE] = 0,
+ [MOVE_ROCK_BLAST] = 1,
+ [MOVE_SHOCK_WAVE] = 1,
+ [MOVE_WATER_PULSE] = 1,
+ [MOVE_DOOM_DESIRE] = 1,
+ [MOVE_PSYCHO_BOOST] = 1,
+};
+
+static const struct OamData sOamData_8611F24 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 15,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_8611F2C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8611F34[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8611F3C[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8611F44[] =
+{
+ ANIMCMD_FRAME(12, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_8611F4C[] =
+{
+ sSpriteAnim_8611F2C,
+ sSpriteAnim_8611F34,
+ sSpriteAnim_8611F3C,
+ sSpriteAnim_8611F44
+};
+
+static const struct SpriteTemplate sSpriteTemplate_JudgmentIcon =
+{
+ .tileTag = 0x3E8,
+ .paletteTag = 0xFFFF,
+ .oam = &sOamData_8611F24,
+ .anims = sSpriteAnimTable_8611F4C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCb_JudgmentIcon,
+};
+
+static const struct CompressedSpriteSheet gUnknown_08611F74[] =
+{
+ {gUnknown_08D854E8, 0x200, 0x3E8},
+ {0}
+};
+
+static void (* const sArenaFunctions[])(void) =
+{
+ sub_81A58B4,
+ sub_81A5964,
+ sub_81A59FC,
+ sub_81A5AC4,
+ sub_81A5B08,
+ sub_81A5B88,
+ sub_81A5BE0,
+};
+
+static const u16 gUnknown_08611FA0[6] =
+{
+ 0x003f, 0x0040, 0x0041, 0x0043, 0x0042, 0x0046
+};
+
+static const u16 gUnknown_08611FAC[9] =
+{
+ 0x00b3, 0x00b4, 0x00b7, 0x00c8, 0x00b9, 0x00bb, 0x00c4, 0x00c6, 0x00ba
+};
+
+// code
+void CallBattleArenaFunction(void)
+{
+ sArenaFunctions[gSpecialVar_0x8004]();
+}
+
+u8 BattleArena_ShowJudgmentWindow(u8 *state)
+{
+ s32 i;
+ u8 ret = 0;
+ switch (*state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0x7FFFFF1C, 4, 0, 8, 0);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ LoadCompressedObjectPic(gUnknown_08611F74);
+ LoadCompressedPalette(gUnknown_08D855E8, 0x1F0, 0x20);
+ gBattle_WIN0H = 0xFF;
+ gBattle_WIN0V = 0x70;
+ (*state)++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ HandleBattleWindow(5, 0, 24, 13, 0);
+ (*state)++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ gBattleTextBuff1[0] = CHAR_0;
+ gBattleTextBuff1[1] = EOS;
+ gBattleTextBuff2[0] = CHAR_0;
+ gBattleTextBuff2[1] = EOS;
+ BattleStringExpandPlaceholdersToDisplayedString(gText_PlayerMon1Name);
+ BattlePutTextOnWindow(gDisplayedStringBattle, 15);
+ BattlePutTextOnWindow(gText_Vs, 16);
+ BattleStringExpandPlaceholdersToDisplayedString(gText_OpponentMon1Name);
+ BattlePutTextOnWindow(gDisplayedStringBattle, 17);
+ BattlePutTextOnWindow(gText_Mind, 18);
+ BattlePutTextOnWindow(gText_Skill, 19);
+ BattlePutTextOnWindow(gText_Body, 20);
+ BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
+ BattlePutTextOnWindow(gDisplayedStringBattle, 21);
+ (*state)++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ for (i = 0; i < 8; i++)
+ {
+ u8 spriteId = CreateSprite(&sSpriteTemplate_JudgmentIcon, 0x40 + (i * 0x10), 84, 0);
+ StartSpriteAnim(&gSprites[spriteId], 3);
+ }
+ ret = 1;
+ (*state)++;
+ }
+ break;
+ case 4:
+ PlaySE(SE_HANTEI1);
+ ShowJudgmentSprite(80, 40, 0, 0);
+ ShowJudgmentSprite(160, 40, 0, 1);
+ BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
+ BattlePutTextOnWindow(gDisplayedStringBattle, 21);
+ (*state)++;
+ ret = 1;
+ break;
+ case 5:
+ PlaySE(SE_HANTEI1);
+ ShowJudgmentSprite(80, 56, 1, 0);
+ ShowJudgmentSprite(160, 56, 1, 1);
+ BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
+ BattlePutTextOnWindow(gDisplayedStringBattle, 21);
+ (*state)++;
+ ret = 1;
+ break;
+ case 6:
+ PlaySE(SE_HANTEI1);
+ ShowJudgmentSprite(80, 72, 2, 0);
+ ShowJudgmentSprite(160, 72, 2, 1);
+ BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
+ BattlePutTextOnWindow(gDisplayedStringBattle, 21);
+ (*state)++;
+ ret = 1;
+ break;
+ case 7:
+ PlaySE(SE_HANTEI2);
+ if (gBattleTextBuff1[0] > gBattleTextBuff2[0])
+ {
+ ret = 2;
+ gBattleScripting.battler = 0;
+ }
+ else if (gBattleTextBuff1[0] < gBattleTextBuff2[0])
+ {
+ ret = 3;
+ gBattleScripting.battler = 1;
+ }
+ else
+ {
+ ret = 4;
+ }
+ (*state)++;
+ break;
+ case 8:
+ (*state)++;
+ break;
+ case 9:
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ HandleBattleWindow(5, 0, 24, 13, WINDOW_CLEAR);
+ CopyBgTilemapBufferToVram(0);
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
+ BeginNormalPaletteFade(0x7FFFFF1C, 4, 8, 0, 0);
+ (*state)++;
+ break;
+ case 10:
+ if (!gPaletteFade.active)
+ {
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ FreeSpriteTilesByTag(0x3E8);
+ ret = 1;
+ (*state)++;
+ }
+ break;
+ }
+
+ return ret;
+}
+
+static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
+{
+ s32 animNum = 0;
+ s32 pointsPlayer = 0;
+ s32 pointsOpponent = 0;
+ s8 *mindPoints = gBattleStruct->arenaMindPoints;
+ s8 *skillPoints = gBattleStruct->arenaSkillPoints;
+ u16 *hpAtStart = gBattleStruct->arenaStartHp;
+
+ switch (category)
+ {
+ case 0:
+ pointsPlayer = mindPoints[battler];
+ pointsOpponent = mindPoints[BATTLE_OPPOSITE(battler)];
+ break;
+ case 1:
+ pointsPlayer = skillPoints[battler];
+ pointsOpponent = skillPoints[BATTLE_OPPOSITE(battler)];
+ break;
+ case 2:
+ pointsPlayer = (gBattleMons[battler].hp * 100) / hpAtStart[battler];
+ pointsOpponent = (gBattleMons[BATTLE_OPPOSITE(battler)].hp * 100) / hpAtStart[BATTLE_OPPOSITE(battler)];
+ break;
+ }
+
+ if (pointsPlayer > pointsOpponent)
+ {
+ animNum = 2;
+ if (battler != 0)
+ gBattleTextBuff2[0] += 2;
+ else
+ gBattleTextBuff1[0] += 2;
+ }
+ else if (pointsPlayer == pointsOpponent)
+ {
+ animNum = 1;
+ if (battler != 0)
+ gBattleTextBuff2[0] += 1;
+ else
+ gBattleTextBuff1[0] += 1;
+ }
+ else
+ {
+ animNum = 0;
+ }
+
+ pointsPlayer = CreateSprite(&sSpriteTemplate_JudgmentIcon, x, y, 0);
+ StartSpriteAnim(&gSprites[pointsPlayer], animNum);
+}
+
+static void SpriteCb_JudgmentIcon(struct Sprite *sprite)
+{
+ if (gBattleCommunication[0] > 8)
+ DestroySprite(sprite);
+}
+
+void BattleArena_InitPoints(void)
+{
+ s8 *mindPoints = gBattleStruct->arenaMindPoints;
+ s8 *skillPoints = gBattleStruct->arenaSkillPoints;
+ u16 *hpAtStart = gBattleStruct->arenaStartHp;
+
+ mindPoints[0] = 0;
+ mindPoints[1] = 0;
+ skillPoints[0] = 0;
+ skillPoints[1] = 0;
+ hpAtStart[0] = gBattleMons[0].hp;
+ hpAtStart[1] = gBattleMons[1].hp;
+}
+
+void BattleArena_AddMindPoints(u8 battler)
+{
+ s8 *mindPoints = gBattleStruct->arenaMindPoints;
+
+ mindPoints[battler] += sMindRatings[gCurrentMove];
+}
+
+void BattleArena_AddSkillPoints(u8 battler)
+{
+ s8 *skillPoints = gBattleStruct->arenaSkillPoints;
+
+ if (gHitMarker & HITMARKER_OBEYS)
+ {
+ u8 *failedMoveBits = &gBattleStruct->alreadyStatusedMoveAttempt;
+ if (*failedMoveBits & gBitTable[battler])
+ {
+ *failedMoveBits &= ~(gBitTable[battler]);
+ skillPoints[battler] -= 2;
+ }
+ else if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
+ {
+ if (!(gMoveResultFlags & MOVE_RESULT_MISSED) || gBattleCommunication[6] != 1)
+ skillPoints[battler] -= 2;
+ }
+ else if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE && gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE)
+ {
+ skillPoints[battler] += 1;
+ }
+ else if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE)
+ {
+ skillPoints[battler] += 2;
+ }
+ else if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE)
+ {
+ skillPoints[battler] -= 1;
+ }
+ else if (!gProtectStructs[battler].protected)
+ {
+ skillPoints[battler] += 1;
+ }
+ }
+}
+
+void BattleArena_DeductMindPoints(u8 battler, u16 stringId)
+{
+ s8 *skillPoints = gBattleStruct->arenaSkillPoints;
+
+ switch (stringId)
+ {
+ case STRINGID_PKMNSXMADEYUSELESS:
+ case STRINGID_PKMNSXMADEITINEFFECTIVE:
+ case STRINGID_PKMNSXPREVENTSFLINCHING:
+ case STRINGID_PKMNSXBLOCKSY2:
+ case STRINGID_PKMNSXPREVENTSYLOSS:
+ case STRINGID_PKMNSXMADEYINEFFECTIVE:
+ case STRINGID_PKMNSXPREVENTSBURNS:
+ case STRINGID_PKMNSXBLOCKSY:
+ case STRINGID_PKMNPROTECTEDBY:
+ case STRINGID_PKMNPREVENTSUSAGE:
+ case STRINGID_PKMNRESTOREDHPUSING:
+ case STRINGID_PKMNPREVENTSPARALYSISWITH:
+ case STRINGID_PKMNPREVENTSROMANCEWITH:
+ case STRINGID_PKMNPREVENTSPOISONINGWITH:
+ case STRINGID_PKMNPREVENTSCONFUSIONWITH:
+ case STRINGID_PKMNRAISEDFIREPOWERWITH:
+ case STRINGID_PKMNANCHORSITSELFWITH:
+ case STRINGID_PKMNPREVENTSSTATLOSSWITH:
+ case STRINGID_PKMNSTAYEDAWAKEUSING:
+ skillPoints[battler] -= 3;
+ break;
+ }
+}
+
+void sub_81A586C(u8 battler) // Unused.
+{
+ u16 *hpAtStart = gBattleStruct->arenaStartHp;
+
+ hpAtStart[battler] = gBattleMons[battler].hp;
+ if (hpAtStart[BATTLE_OPPOSITE(battler)] > gBattleMons[BATTLE_OPPOSITE(battler)].hp)
+ hpAtStart[BATTLE_OPPOSITE(battler)] = gBattleMons[BATTLE_OPPOSITE(battler)].hp;
+}
+
+static void sub_81A58B4(void)
+{
+ bool32 isCurrent;
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ gSaveBlock2Ptr->frontier.field_CA8 = 0;
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
+ gSaveBlock2Ptr->frontier.field_CA9_a = 0;
+ gSaveBlock2Ptr->frontier.field_CA9_b = 0;
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = gSaveBlock2Ptr->frontier.field_CDC & 0x80;
+ else
+ isCurrent = gSaveBlock2Ptr->frontier.field_CDC & 0x40;
+
+ if (!isCurrent)
+ gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] = 0;
+
+ saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
+ gTrainerBattleOpponent_A = 0;
+}
+
+static void sub_81A5964(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DD8;
+ break;
+ case 1:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode];
+ break;
+ case 2:
+ if (lvlMode != FRONTIER_LVL_50)
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CDC & 0x80;
+ else
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CDC & 0x40;
+ break;
+ }
+}
+
+static void sub_81A59FC(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ gSaveBlock2Ptr->frontier.field_DD8 = gSpecialVar_0x8006;
+ break;
+ case 1:
+ gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] = gSpecialVar_0x8006;
+ break;
+ case 2:
+ if (lvlMode != FRONTIER_LVL_50)
+ {
+ if (gSpecialVar_0x8006)
+ gSaveBlock2Ptr->frontier.field_CDC |= 0x80;
+ else
+ gSaveBlock2Ptr->frontier.field_CDC &= ~(0x80);
+ }
+ else
+ {
+ if (gSpecialVar_0x8006)
+ gSaveBlock2Ptr->frontier.field_CDC |= 0x40;
+ else
+ gSaveBlock2Ptr->frontier.field_CDC &= ~(0x40);
+ }
+ break;
+ }
+}
+
+static void sub_81A5AC4(void)
+{
+ gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
+ VarSet(VAR_TEMP_0, 0);
+ gSaveBlock2Ptr->frontier.field_CA9_a = 1;
+ sub_81A4C30();
+}
+
+static void sub_81A5B08(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ if (gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] > 41)
+ gSaveBlock2Ptr->frontier.field_DD8 = gUnknown_08611FAC[Random() % ARRAY_COUNT(gUnknown_08611FAC)];
+ else
+ gSaveBlock2Ptr->frontier.field_DD8 = gUnknown_08611FA0[Random() % ARRAY_COUNT(gUnknown_08611FA0)];
+}
+
+static void sub_81A5B88(void)
+{
+ if (AddBagItem(gSaveBlock2Ptr->frontier.field_DD8, 1) == TRUE)
+ {
+ CopyItemName(gSaveBlock2Ptr->frontier.field_DD8, gStringVar1);
+ gSaveBlock2Ptr->frontier.field_DD8 = 0;
+ gSpecialVar_Result = TRUE;
+ }
+ else
+ {
+ gSpecialVar_Result = FALSE;
+ }
+}
+
+static void sub_81A5BE0(void)
+{
+ GetFrontierTrainerName(gStringVar1, gTrainerBattleOpponent_A);
+}
+
+void sub_81A5BF8(void)
+{
+ u8 width = 27;
+ u8 palNum = 7;
+
+ FillBgTilemapBufferRect(0, 0, 254, 14, 1, 6, palNum);
+ FillBgTilemapBufferRect(0, 0, 32, 14, 1, 6, palNum);
+ FillBgTilemapBufferRect(0, 0x31, 0, 14, 1, 1, palNum);
+ FillBgTilemapBufferRect(0, 0x33, 1, 14, 1, 1, palNum);
+ FillBgTilemapBufferRect(0, 0x34, 2, 14, width, 1, palNum);
+ width++;
+ FillBgTilemapBufferRect(0, 0x35, 28, 14, 1, 1, palNum);
+ FillBgTilemapBufferRect(0, 0x36, 29, 14, 1, 1, palNum);
+ FillBgTilemapBufferRect(0, 0x37, 0, 15, 1, 5, palNum);
+ FillBgTilemapBufferRect(0, 0x39, 1, 15, width, 5, palNum);
+ FillBgTilemapBufferRect(0, 0x3A, 29, 15, 1, 5, palNum);
+ FillBgTilemapBufferRect(0, 0x831, 0, 19, 1, 1, palNum);
+ FillBgTilemapBufferRect(0, 0x833, 1, 19, 1, 1, palNum);
+ FillBgTilemapBufferRect(0, 0x834, 2, 19, width - 2, 1, palNum);
+ FillBgTilemapBufferRect(0, 0x835, 28, 19, 1, 1, palNum);
+ FillBgTilemapBufferRect(0, 0x836, 29, 19, 1, 1, palNum);
+}
+
+void sub_81A5D44(void)
+{
+ u8 width;
+ u8 height;
+ u8 palNum = 0;
+
+ FillBgTilemapBufferRect(0, 3, 0, 14, 1, 1, palNum);
+ height = 4;
+ FillBgTilemapBufferRect(0, 4, 1, 14, 1, 1, palNum);
+ width = 27;
+ FillBgTilemapBufferRect(0, 5, 2, 14, width, 1, palNum);
+ FillBgTilemapBufferRect(0, 6, 28, 14, 1, 1, palNum);
+ FillBgTilemapBufferRect(0, 7, 29, 14, 1, 1, palNum);
+ FillBgTilemapBufferRect(0, 8, 0, 15, 1, height, palNum);
+ FillBgTilemapBufferRect(0, 9, 1, 15, 1, height, palNum);
+ FillBgTilemapBufferRect(0, 0xA, 2, 15, width, height, palNum);
+ FillBgTilemapBufferRect(0, 0xB, 28, 15, 1, height, palNum);
+ FillBgTilemapBufferRect(0, 0xC, 29, 15, 1, height, palNum);
+ FillBgTilemapBufferRect(0, 0xD, 0, 19, 1, 1, palNum);
+ FillBgTilemapBufferRect(0, 0xE, 1, 19, 1, 1, palNum);
+ FillBgTilemapBufferRect(0, 0xF, 2, 19, width, 1, palNum);
+ FillBgTilemapBufferRect(0, 0x10, 28, 19, 1, 1, palNum);
+ FillBgTilemapBufferRect(0, 0x11, 29, 19, 1, 1, palNum);
+}
diff --git a/src/battle_bg.c b/src/battle_bg.c
index a6c66b3c4..bb66a41fd 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -31,11 +31,6 @@ struct BattleBackground
const void *palette;
};
-extern u16 gBattle_BG1_X;
-extern u16 gBattle_BG1_Y;
-extern u16 gBattle_BG2_X;
-extern u16 gBattle_BG2_Y;
-
extern u8 GetCurrentMapBattleScene(void);
// .rodata
@@ -162,10 +157,10 @@ const struct BgTemplate gBattleBgTemplates[] =
},
};
-static const struct WindowTemplate gUnknown_0831AA18[] =
+static const struct WindowTemplate gStandardBattleWindowTemplates[] =
{
- {
- .priority = 0,
+ { // 0 Standard battle message
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 26,
@@ -173,8 +168,8 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.paletteNum = 0,
.baseBlock = 0x0090,
},
- {
- .priority = 0,
+ { // 1 "What will (pokemon) do?"
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 35,
.width = 14,
@@ -182,8 +177,8 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.paletteNum = 0,
.baseBlock = 0x01c0,
},
- {
- .priority = 0,
+ { // 2 "Fight/Pokemon/Bag/Run"
+ .bg = 0,
.tilemapLeft = 17,
.tilemapTop = 35,
.width = 12,
@@ -191,8 +186,8 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.paletteNum = 5,
.baseBlock = 0x0190,
},
- {
- .priority = 0,
+ { // 3 Top left move
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 55,
.width = 8,
@@ -200,8 +195,8 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.paletteNum = 5,
.baseBlock = 0x0300,
},
- {
- .priority = 0,
+ { // 4 Top right move
+ .bg = 0,
.tilemapLeft = 11,
.tilemapTop = 55,
.width = 8,
@@ -209,8 +204,8 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.paletteNum = 5,
.baseBlock = 0x0310,
},
- {
- .priority = 0,
+ { // 5 Bottom left move
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 57,
.width = 8,
@@ -218,8 +213,8 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.paletteNum = 5,
.baseBlock = 0x0320,
},
- {
- .priority = 0,
+ { // 6 Bottom right move
+ .bg = 0,
.tilemapLeft = 11,
.tilemapTop = 57,
.width = 8,
@@ -228,7 +223,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x0330,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 21,
.tilemapTop = 55,
.width = 4,
@@ -237,7 +232,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x0290,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 21,
.tilemapTop = 57,
.width = 0,
@@ -246,7 +241,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x0298,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 25,
.tilemapTop = 55,
.width = 4,
@@ -255,7 +250,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x0298,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 21,
.tilemapTop = 57,
.width = 8,
@@ -264,7 +259,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x02a0,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 21,
.tilemapTop = 55,
.width = 8,
@@ -273,7 +268,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x02b0,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 26,
.tilemapTop = 9,
.width = 3,
@@ -282,7 +277,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x0100,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 19,
.tilemapTop = 8,
.width = 10,
@@ -291,7 +286,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x0100,
},
{
- .priority = 2,
+ .bg = 2,
.tilemapLeft = 18,
.tilemapTop = 0,
.width = 12,
@@ -300,7 +295,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x016e,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 2,
.tilemapTop = 3,
.width = 6,
@@ -309,7 +304,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x0020,
},
{
- .priority = 2,
+ .bg = 2,
.tilemapLeft = 2,
.tilemapTop = 3,
.width = 6,
@@ -318,7 +313,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x0040,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 2,
.tilemapTop = 2,
.width = 6,
@@ -327,7 +322,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x0020,
},
{
- .priority = 2,
+ .bg = 2,
.tilemapLeft = 2,
.tilemapTop = 2,
.width = 6,
@@ -336,7 +331,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x0040,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 2,
.tilemapTop = 6,
.width = 6,
@@ -345,7 +340,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x0060,
},
{
- .priority = 2,
+ .bg = 2,
.tilemapLeft = 2,
.tilemapTop = 6,
.width = 6,
@@ -354,7 +349,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x0080,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 12,
.tilemapTop = 2,
.width = 6,
@@ -363,7 +358,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x00a0,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 4,
.tilemapTop = 2,
.width = 7,
@@ -372,7 +367,7 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
.baseBlock = 0x00a0,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 19,
.tilemapTop = 2,
.width = 7,
@@ -383,10 +378,10 @@ static const struct WindowTemplate gUnknown_0831AA18[] =
DUMMY_WIN_TEMPLATE
};
-static const struct WindowTemplate gUnknown_0831AAE0[] =
+static const struct WindowTemplate gBattleArenaWindowTemplates[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 26,
@@ -395,7 +390,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0090,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 35,
.width = 14,
@@ -404,7 +399,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x01c0,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 17,
.tilemapTop = 35,
.width = 12,
@@ -413,7 +408,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0190,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 55,
.width = 8,
@@ -422,7 +417,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0300,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 11,
.tilemapTop = 55,
.width = 8,
@@ -431,7 +426,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0310,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 57,
.width = 8,
@@ -440,7 +435,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0320,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 11,
.tilemapTop = 57,
.width = 8,
@@ -449,7 +444,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0330,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 21,
.tilemapTop = 55,
.width = 4,
@@ -458,7 +453,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0290,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 21,
.tilemapTop = 57,
.width = 0,
@@ -467,7 +462,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0298,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 25,
.tilemapTop = 55,
.width = 4,
@@ -476,7 +471,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0298,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 21,
.tilemapTop = 57,
.width = 8,
@@ -485,7 +480,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x02a0,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 21,
.tilemapTop = 55,
.width = 8,
@@ -494,7 +489,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x02b0,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 26,
.tilemapTop = 9,
.width = 3,
@@ -503,7 +498,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0100,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 19,
.tilemapTop = 8,
.width = 10,
@@ -512,7 +507,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0100,
},
{
- .priority = 2,
+ .bg = 2,
.tilemapLeft = 18,
.tilemapTop = 0,
.width = 12,
@@ -521,7 +516,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x016e,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 6,
.tilemapTop = 1,
.width = 8,
@@ -530,7 +525,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0100,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 14,
.tilemapTop = 1,
.width = 2,
@@ -539,7 +534,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0110,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 16,
.tilemapTop = 1,
.width = 8,
@@ -548,7 +543,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0114,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 12,
.tilemapTop = 4,
.width = 6,
@@ -557,7 +552,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0124,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 12,
.tilemapTop = 6,
.width = 6,
@@ -566,7 +561,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0130,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 12,
.tilemapTop = 8,
.width = 6,
@@ -575,7 +570,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x013c,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 8,
.tilemapTop = 11,
.width = 14,
@@ -584,7 +579,7 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
.baseBlock = 0x0148,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 26,
@@ -597,8 +592,8 @@ static const struct WindowTemplate gUnknown_0831AAE0[] =
const struct WindowTemplate * const gBattleWindowTemplates[] =
{
- gUnknown_0831AA18,
- gUnknown_0831AAE0,
+ gStandardBattleWindowTemplates,
+ gBattleArenaWindowTemplates,
};
static const struct BattleBackground gBattleTerrainTable[] =
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 637b8c702..8cbc62aab 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -1,35 +1,32 @@
#include "global.h"
#include "battle.h"
+#include "battle_ai_script_commands.h"
+#include "battle_anim.h"
#include "battle_controllers.h"
-#include "battle_message.h"
#include "battle_interface.h"
-#include "battle_anim.h"
-#include "constants/battle_anim.h"
-#include "battle_ai_script_commands.h"
+#include "battle_message.h"
+#include "battle_setup.h"
#include "battle_tv.h"
-#include "pokemon.h"
+#include "bg.h"
+#include "data2.h"
#include "link.h"
-#include "util.h"
#include "main.h"
-#include "constants/songs.h"
-#include "constants/trainers.h"
-#include "sound.h"
-#include "window.h"
#include "m4a.h"
#include "palette.h"
+#include "pokeball.h"
+#include "pokemon.h"
+#include "reshow_battle_screen.h"
+#include "sound.h"
+#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "string_util.h"
-#include "bg.h"
-#include "reshow_battle_screen.h"
-#include "pokeball.h"
-#include "data2.h"
-#include "battle_setup.h"
+#include "util.h"
+#include "window.h"
+#include "constants/battle_anim.h"
+#include "constants/songs.h"
+#include "constants/trainers.h"
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern struct UnusedControllerStruct gUnknown_02022D0C;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
@@ -558,7 +555,7 @@ static void LinkOpponentHandleGetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
size += CopyLinkOpponentMonData(i, monData + size);
@@ -892,7 +889,7 @@ static void LinkOpponentHandleSetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
SetLinkOpponentMonData(i);
@@ -1253,17 +1250,17 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_LEAF_GREEN)
{
if (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender != MALE)
- trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_LEAF];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_LEAF];
else
- trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_RED];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_RED];
}
else if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE)
{
if (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender != MALE)
- trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_RS_MAY];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_RS_MAY];
else
- trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_RS_BRENDAN];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_RS_BRENDAN];
}
else
{
@@ -1282,17 +1279,17 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|| (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_LEAF_GREEN)
{
if (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].gender != 0)
- trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_LEAF];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_LEAF];
else
- trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_RED];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_RED];
}
else if ((gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_RUBY
|| (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_SAPPHIRE)
{
if (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].gender != 0)
- trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_RS_MAY];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_RS_MAY];
else
- trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_RS_BRENDAN];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_RS_BRENDAN];
}
else
{
@@ -1346,7 +1343,7 @@ static void LinkOpponentHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = sub_8064470;
}
@@ -1364,7 +1361,7 @@ static void LinkOpponentHandleFaintAnimation(void)
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
- PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_OPPONENT);
+ PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_TARGET);
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon;
gBattlerControllerFuncs[gActiveBattler] = sub_8064C14;
}
@@ -1660,9 +1657,9 @@ static void LinkOpponentHandlePlaySE(void)
s8 pan;
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
- pan = PAN_SIDE_PLAYER;
+ pan = SOUND_PAN_ATTACKER;
else
- pan = PAN_SIDE_OPPONENT;
+ pan = SOUND_PAN_TARGET;
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
LinkOpponentBufferExecCompleted();
@@ -1708,7 +1705,7 @@ static void LinkOpponentHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_80676FC);
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index bfaaf9e82..0cd15f39e 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -1,34 +1,30 @@
#include "global.h"
#include "battle.h"
+#include "battle_ai_script_commands.h"
+#include "battle_anim.h"
#include "battle_controllers.h"
-#include "battle_message.h"
#include "battle_interface.h"
-#include "battle_anim.h"
-#include "constants/battle_anim.h"
-#include "battle_ai_script_commands.h"
+#include "battle_message.h"
+#include "battle_setup.h"
#include "battle_tv.h"
-#include "pokemon.h"
+#include "bg.h"
+#include "data2.h"
#include "link.h"
-#include "util.h"
#include "main.h"
-#include "constants/songs.h"
-#include "constants/trainers.h"
-#include "sound.h"
-#include "window.h"
#include "m4a.h"
#include "palette.h"
+#include "pokeball.h"
+#include "pokemon.h"
+#include "reshow_battle_screen.h"
+#include "sound.h"
+#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "string_util.h"
-#include "bg.h"
-#include "reshow_battle_screen.h"
-#include "pokeball.h"
-#include "data2.h"
-#include "battle_setup.h"
-
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
-extern struct UnusedControllerStruct gUnknown_02022D0C;
+#include "util.h"
+#include "window.h"
+#include "constants/battle_anim.h"
+#include "constants/songs.h"
+#include "constants/trainers.h"
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
@@ -444,7 +440,7 @@ static void LinkPartnerHandleGetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
size += CopyLinkPartnerMonData(i, monData + size);
@@ -778,7 +774,7 @@ static void LinkPartnerHandleSetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
SetLinkPartnerMonData(i);
@@ -1168,7 +1164,7 @@ static void LinkPartnerHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = sub_814AF54;
}
@@ -1187,7 +1183,7 @@ static void LinkPartnerHandleFaintAnimation(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_PLAYER);
+ PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_ATTACKER);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039C00;
@@ -1485,9 +1481,9 @@ static void LinkPartnerHandlePlaySE(void)
s8 pan;
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
- pan = PAN_SIDE_PLAYER;
+ pan = SOUND_PAN_ATTACKER;
else
- pan = PAN_SIDE_OPPONENT;
+ pan = SOUND_PAN_TARGET;
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
LinkPartnerBufferExecCompleted();
@@ -1534,7 +1530,7 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index c490ad314..c057e8575 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -1,48 +1,44 @@
#include "global.h"
#include "battle.h"
+#include "battle_ai_script_commands.h"
+#include "battle_anim.h"
+#include "battle_arena.h"
#include "battle_controllers.h"
#include "battle_message.h"
#include "battle_interface.h"
-#include "battle_anim.h"
-#include "constants/battle_anim.h"
+#include "battle_setup.h"
+#include "battle_tower.h"
#include "battle_tv.h"
-#include "battle_ai_script_commands.h"
-#include "pokemon.h"
+#include "bg.h"
+#include "data2.h"
+#include "frontier_util.h"
+#include "item.h"
#include "link.h"
-#include "util.h"
#include "main.h"
-#include "item.h"
-#include "constants/items.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "constants/moves.h"
-#include "constants/trainers.h"
-#include "window.h"
#include "m4a.h"
#include "palette.h"
+#include "pokeball.h"
+#include "pokemon.h"
+#include "random.h"
+#include "reshow_battle_screen.h"
+#include "sound.h"
+#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "string_util.h"
-#include "bg.h"
-#include "reshow_battle_screen.h"
-#include "random.h"
-#include "pokeball.h"
-#include "data2.h"
-#include "battle_setup.h"
+#include "util.h"
+#include "window.h"
+#include "constants/battle_anim.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/trainers.h"
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern struct UnusedControllerStruct gUnknown_02022D0C;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern void sub_81A57E4(u8 battlerId, u16 stringId);
-extern u8 GetFrontierBrainTrainerPicIndex(void);
extern u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId);
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
-extern u8 GetEreaderTrainerFrontSpriteId(void);
// this file's functions
static void OpponentHandleGetMonData(void);
@@ -542,7 +538,7 @@ static void OpponentHandleGetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
size += GetOpponentMonData(i, monData + size);
@@ -885,7 +881,7 @@ static void OpponentHandleSetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
SetOpponentMonData(i);
@@ -1384,7 +1380,7 @@ static void OpponentHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = sub_805F240;
}
@@ -1402,7 +1398,7 @@ static void OpponentHandleFaintAnimation(void)
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
- PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_OPPONENT);
+ PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_TARGET);
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon;
gBattlerControllerFuncs[gActiveBattler] = sub_805FAC4;
}
@@ -1513,7 +1509,7 @@ static void OpponentHandlePrintString(void)
BufferStringBattle(*stringId);
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
- sub_81A57E4(gActiveBattler, *stringId);
+ BattleArena_DeductMindPoints(gActiveBattler, *stringId);
}
static void OpponentHandlePrintSelectionString(void)
@@ -1810,9 +1806,9 @@ static void OpponentHandlePlaySE(void)
s8 pan;
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
- pan = PAN_SIDE_PLAYER;
+ pan = SOUND_PAN_ATTACKER;
else
- pan = PAN_SIDE_OPPONENT;
+ pan = SOUND_PAN_TARGET;
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
OpponentBufferExecCompleted();
@@ -1858,7 +1854,7 @@ static void OpponentHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_806280C);
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 02479a1be..2bd5ef365 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -1,44 +1,42 @@
#include "global.h"
#include "battle.h"
+#include "battle_anim.h"
+#include "battle_arena.h"
#include "battle_controllers.h"
-#include "battle_message.h"
+#include "battle_dome.h"
#include "battle_interface.h"
-#include "battle_anim.h"
-#include "constants/battle_anim.h"
+#include "battle_message.h"
+#include "battle_setup.h"
#include "battle_tv.h"
-#include "pokemon.h"
+#include "bg.h"
+#include "data2.h"
+#include "item.h"
+#include "item_menu.h"
#include "link.h"
-#include "util.h"
#include "main.h"
-#include "item.h"
-#include "constants/items.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "constants/moves.h"
-#include "constants/trainers.h"
-#include "window.h"
#include "m4a.h"
#include "palette.h"
-#include "task.h"
-#include "text.h"
-#include "string_util.h"
-#include "bg.h"
-#include "reshow_battle_screen.h"
-#include "random.h"
+#include "party_menu.h"
#include "pokeball.h"
-#include "data2.h"
-#include "battle_setup.h"
-#include "item_menu.h"
+#include "pokemon.h"
+#include "random.h"
#include "recorded_battle.h"
-#include "party_menu.h"
-#include "battle_dome.h"
+#include "reshow_battle_screen.h"
+#include "sound.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "util.h"
+#include "window.h"
+#include "constants/battle_anim.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/trainers.h"
extern u8 gUnknown_0203CEE8;
extern u8 gUnknown_0203CEE9;
extern u8 gUnknown_0203CF00[];
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
-extern struct UnusedControllerStruct gUnknown_02022D0C;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
@@ -46,7 +44,6 @@ extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
extern void sub_81AABB0(void);
-extern void sub_81A57E4(u8 battlerId, u16 stringId);
extern void sub_81851A8(u8 *);
// this file's functions
@@ -116,7 +113,7 @@ static void MoveSelectionDisplayPpNumber(void);
static void MoveSelectionDisplayPpString(void);
static void MoveSelectionDisplayMoveType(void);
static void MoveSelectionDisplayMoveNames(void);
-static void HandleMoveSwitchting(void);
+static void HandleMoveSwitching(void);
static void sub_8058FC0(void);
static void WaitForMonSelection(void);
static void CompleteWhenChoseItem(void);
@@ -619,7 +616,7 @@ static void HandleInputChooseMove(void)
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
BattlePutTextOnWindow(gText_BattleSwitchWhich, 0xB);
- gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitchting;
+ gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitching;
}
}
}
@@ -674,7 +671,7 @@ u32 sub_8057FBC(void) // unused
return var;
}
-static void HandleMoveSwitchting(void)
+static void HandleMoveSwitching(void)
{
u8 perMovePPBonuses[4];
struct ChooseMoveStruct moveStruct;
@@ -1589,7 +1586,7 @@ static void PlayerHandleGetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
size += CopyPlayerMonData(i, monData + size);
@@ -1932,7 +1929,7 @@ static void PlayerHandleSetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
SetPlayerMonData(i);
@@ -2387,7 +2384,7 @@ static void PlayerHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
gBattlerControllerFuncs[gActiveBattler] = sub_80588B4;
@@ -2407,7 +2404,7 @@ static void PlayerHandleFaintAnimation(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_PLAYER);
+ PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_ATTACKER);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039C00;
@@ -2537,7 +2534,7 @@ static void PlayerHandlePrintString(void)
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
BattleTv_SetDataBasedOnString(*stringId);
- sub_81A57E4(gActiveBattler, *stringId);
+ BattleArena_DeductMindPoints(gActiveBattler, *stringId);
}
static void PlayerHandlePrintSelectionString(void)
@@ -2600,9 +2597,11 @@ static void HandleChooseMoveAfterDma3(void)
}
}
+// arenaMindPoints is used here as a placeholder for a timer.
+
static void PlayerChooseMoveInBattlePalace(void)
{
- if (--*(gBattleStruct->field_298 + gActiveBattler) == 0)
+ if (--*(gBattleStruct->arenaMindPoints + gActiveBattler) == 0)
{
gBattlePalaceMoveSelectionRngValue = gRngValue;
BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
@@ -2614,7 +2613,7 @@ static void PlayerHandleChooseMove(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- *(gBattleStruct->field_298 + gActiveBattler) = 8;
+ *(gBattleStruct->arenaMindPoints + gActiveBattler) = 8;
gBattlerControllerFuncs[gActiveBattler] = PlayerChooseMoveInBattlePalace;
}
else
@@ -2882,9 +2881,9 @@ static void PlayerHandlePlaySE(void)
s8 pan;
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
- pan = PAN_SIDE_PLAYER;
+ pan = SOUND_PAN_ATTACKER;
else
- pan = PAN_SIDE_OPPONENT;
+ pan = SOUND_PAN_TARGET;
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
PlayerBufferExecCompleted();
@@ -2930,7 +2929,7 @@ static void PlayerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index c72847bd2..02dd1383b 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -1,42 +1,37 @@
#include "global.h"
#include "battle.h"
+#include "battle_ai_script_commands.h"
+#include "battle_anim.h"
#include "battle_controllers.h"
#include "battle_message.h"
#include "battle_interface.h"
-#include "battle_anim.h"
-#include "constants/battle_anim.h"
-#include "battle_ai_script_commands.h"
-#include "pokemon.h"
+#include "battle_setup.h"
+#include "battle_tower.h"
+#include "bg.h"
+#include "data2.h"
+#include "item_use.h"
#include "link.h"
-#include "util.h"
#include "main.h"
-#include "constants/songs.h"
-#include "constants/trainers.h"
-#include "sound.h"
-#include "window.h"
#include "m4a.h"
#include "palette.h"
+#include "pokeball.h"
+#include "pokemon.h"
+#include "reshow_battle_screen.h"
+#include "sound.h"
+#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "string_util.h"
-#include "bg.h"
-#include "reshow_battle_screen.h"
-#include "pokeball.h"
-#include "data2.h"
-#include "battle_setup.h"
-#include "item_use.h"
-
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
-extern struct UnusedControllerStruct gUnknown_02022D0C;
+#include "util.h"
+#include "window.h"
+#include "constants/battle_anim.h"
+#include "constants/songs.h"
+#include "constants/trainers.h"
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
extern void sub_81358F4(void);
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern void SetMultiuseSpriteTemplateToPokemon(u16, u8);
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void PlayerPartnerHandleGetMonData(void);
@@ -632,7 +627,7 @@ static void PlayerPartnerHandleGetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
size += CopyPlayerPartnerMonData(i, monData + size);
@@ -966,7 +961,7 @@ static void PlayerPartnerHandleSetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
SetPlayerPartnerMonData(i);
@@ -1363,7 +1358,7 @@ static void PlayerPartnerHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = sub_81BAE98;
}
@@ -1382,7 +1377,7 @@ static void PlayerPartnerHandleFaintAnimation(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_PLAYER);
+ PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_ATTACKER);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039C00;
@@ -1739,9 +1734,9 @@ static void PlayerPartnerHandlePlaySE(void)
s8 pan;
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
- pan = PAN_SIDE_PLAYER;
+ pan = SOUND_PAN_ATTACKER;
else
- pan = PAN_SIDE_OPPONENT;
+ pan = SOUND_PAN_TARGET;
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
PlayerPartnerBufferExecCompleted();
@@ -1787,7 +1782,7 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 963c535db..0cf3634dc 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -1,44 +1,40 @@
#include "global.h"
#include "battle.h"
+#include "battle_ai_script_commands.h"
+#include "battle_anim.h"
#include "battle_controllers.h"
-#include "battle_message.h"
#include "battle_interface.h"
-#include "battle_anim.h"
-#include "constants/battle_anim.h"
-#include "battle_ai_script_commands.h"
+#include "battle_message.h"
+#include "battle_setup.h"
+#include "battle_tower.h"
#include "battle_tv.h"
-#include "recorded_battle.h"
-#include "pokemon.h"
+#include "bg.h"
+#include "data2.h"
+#include "item_use.h"
#include "link.h"
-#include "util.h"
#include "main.h"
-#include "constants/songs.h"
-#include "constants/trainers.h"
-#include "sound.h"
-#include "window.h"
#include "m4a.h"
#include "palette.h"
+#include "pokeball.h"
+#include "pokemon.h"
+#include "recorded_battle.h"
+#include "reshow_battle_screen.h"
+#include "sound.h"
+#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "string_util.h"
-#include "bg.h"
-#include "reshow_battle_screen.h"
-#include "pokeball.h"
-#include "data2.h"
-#include "item_use.h"
-#include "battle_setup.h"
+#include "util.h"
+#include "window.h"
+#include "constants/battle_anim.h"
+#include "constants/songs.h"
+#include "constants/trainers.h"
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern struct UnusedControllerStruct gUnknown_02022D0C;
-extern u8 gUnknown_0203C7B4;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
extern u16 sub_8068B48(void);
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void RecordedOpponentHandleGetMonData(void);
@@ -542,7 +538,7 @@ static void RecordedOpponentHandleGetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
size += CopyRecordedOpponentMonData(i, monData + size);
@@ -876,7 +872,7 @@ static void RecordedOpponentHandleSetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
SetRecordedOpponentMonData(i);
@@ -1277,7 +1273,7 @@ static void RecordedOpponentHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = sub_81865C8;
}
@@ -1295,7 +1291,7 @@ static void RecordedOpponentHandleFaintAnimation(void)
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
- PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_OPPONENT);
+ PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_TARGET);
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon;
gBattlerControllerFuncs[gActiveBattler] = sub_8186D58;
}
@@ -1603,9 +1599,9 @@ static void RecordedOpponentHandlePlaySE(void)
s8 pan;
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
- pan = PAN_SIDE_PLAYER;
+ pan = SOUND_PAN_ATTACKER;
else
- pan = PAN_SIDE_OPPONENT;
+ pan = SOUND_PAN_TARGET;
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
RecordedOpponentBufferExecCompleted();
@@ -1651,7 +1647,7 @@ static void RecordedOpponentHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_818962C);
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index 1a043573f..4d7fdc01e 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -1,42 +1,36 @@
#include "global.h"
#include "battle.h"
+#include "battle_ai_script_commands.h"
+#include "battle_anim.h"
#include "battle_controllers.h"
#include "battle_message.h"
#include "battle_interface.h"
-#include "battle_anim.h"
-#include "constants/battle_anim.h"
-#include "battle_ai_script_commands.h"
-#include "recorded_battle.h"
-#include "pokemon.h"
+#include "bg.h"
+#include "data2.h"
+#include "item_use.h"
#include "link.h"
-#include "util.h"
#include "main.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "window.h"
#include "m4a.h"
#include "palette.h"
+#include "pokeball.h"
+#include "pokemon.h"
+#include "recorded_battle.h"
+#include "reshow_battle_screen.h"
+#include "sound.h"
+#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "string_util.h"
-#include "bg.h"
-#include "reshow_battle_screen.h"
-#include "pokeball.h"
-#include "data2.h"
-#include "item_use.h"
+#include "util.h"
+#include "window.h"
+#include "constants/battle_anim.h"
+#include "constants/songs.h"
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
-extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
-extern u8 gUnknown_0203C7B4;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern struct UnusedControllerStruct gUnknown_02022D0C;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void RecordedPlayerHandleGetMonData(void);
@@ -527,7 +521,7 @@ static void RecordedPlayerHandleGetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
size += CopyRecordedPlayerMonData(i, monData + size);
@@ -861,7 +855,7 @@ static void RecordedPlayerHandleSetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
SetRecordedPlayerMonData(i);
@@ -1278,7 +1272,7 @@ static void RecordedPlayerHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = sub_81899F0;
}
@@ -1624,9 +1618,9 @@ static void RecordedPlayerHandlePlaySE(void)
s8 pan;
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
- pan = PAN_SIDE_PLAYER;
+ pan = SOUND_PAN_ATTACKER;
else
- pan = PAN_SIDE_OPPONENT;
+ pan = SOUND_PAN_TARGET;
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
RecordedPlayerBufferExecCompleted();
@@ -1673,7 +1667,7 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index 898e18294..3f1542edb 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -1,30 +1,27 @@
#include "global.h"
#include "battle.h"
+#include "battle_anim.h"
#include "battle_controllers.h"
-#include "battle_message.h"
#include "battle_interface.h"
-#include "battle_anim.h"
-#include "constants/battle_anim.h"
-#include "pokemon.h"
+#include "battle_message.h"
+#include "bg.h"
+#include "data2.h"
+#include "item_menu.h"
#include "link.h"
-#include "util.h"
#include "main.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "window.h"
#include "m4a.h"
#include "palette.h"
-#include "task.h"
-#include "text.h"
-#include "bg.h"
-#include "reshow_battle_screen.h"
#include "pokeball.h"
-#include "data2.h"
#include "pokeblock.h"
-#include "item_menu.h"
-
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
+#include "pokemon.h"
+#include "reshow_battle_screen.h"
+#include "sound.h"
+#include "task.h"
+#include "text.h"
+#include "util.h"
+#include "window.h"
+#include "constants/battle_anim.h"
+#include "constants/songs.h"
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
@@ -594,9 +591,9 @@ static void SafariHandlePlaySE(void)
s8 pan;
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
- pan = PAN_SIDE_PLAYER;
+ pan = SOUND_PAN_ATTACKER;
else
- pan = PAN_SIDE_OPPONENT;
+ pan = SOUND_PAN_TARGET;
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
SafariBufferExecCompleted();
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index 80dd6d3bb..5d87c4f90 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -1,40 +1,35 @@
#include "global.h"
#include "battle.h"
+#include "battle_anim.h"
#include "battle_controllers.h"
-#include "battle_message.h"
#include "battle_interface.h"
-#include "battle_anim.h"
-#include "constants/battle_anim.h"
+#include "battle_message.h"
+#include "battle_setup.h"
#include "battle_tv.h"
-#include "pokemon.h"
+#include "bg.h"
+#include "data2.h"
+#include "item.h"
+#include "item_menu.h"
#include "link.h"
-#include "util.h"
#include "main.h"
-#include "item.h"
-#include "constants/items.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "constants/moves.h"
-#include "constants/trainers.h"
-#include "window.h"
#include "m4a.h"
#include "palette.h"
+#include "party_menu.h"
+#include "pokeball.h"
+#include "pokemon.h"
+#include "random.h"
+#include "reshow_battle_screen.h"
+#include "sound.h"
+#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "string_util.h"
-#include "bg.h"
-#include "reshow_battle_screen.h"
-#include "random.h"
-#include "pokeball.h"
-#include "data2.h"
-#include "party_menu.h"
-#include "battle_setup.h"
-#include "item_menu.h"
-
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
-extern s32 gUnknown_0203CD70;
-extern struct UnusedControllerStruct gUnknown_02022D0C;
+#include "util.h"
+#include "window.h"
+#include "constants/battle_anim.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/trainers.h"
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
@@ -442,7 +437,7 @@ static void WallyHandleGetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
size += CopyWallyMonData(i, monData + size);
@@ -776,7 +771,7 @@ static void WallyHandleSetMonData(void)
else
{
monToCheck = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (monToCheck & 1)
SetWallyMonData(i);
@@ -1437,7 +1432,7 @@ static void WallyHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 56ff34528..a6d6e9294 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -1,22 +1,22 @@
#include "global.h"
#include "battle.h"
+#include "battle_ai_script_commands.h"
+#include "battle_anim.h"
#include "battle_controllers.h"
+#include "battle_message.h"
#include "cable_club.h"
#include "link.h"
-#include "task.h"
-#include "battle_ai_script_commands.h"
-#include "battle_anim.h"
#include "pokemon.h"
-#include "constants/species.h"
#include "recorded_battle.h"
+#include "task.h"
#include "util.h"
#include "constants/abilities.h"
-#include "battle_message.h"
-
-extern u8 gUnknown_02022D08;
-extern u8 gUnknown_02022D09;
-extern u8 gUnknown_02022D0A;
+#include "constants/species.h"
+static EWRAM_DATA u8 sLinkSendTaskId = 0;
+static EWRAM_DATA u8 sLinkReceiveTaskId = 0;
+static EWRAM_DATA u8 sUnknown_02022D0A = 0;
+EWRAM_DATA struct UnusedControllerStruct gUnknown_02022D0C = {};
static EWRAM_DATA u8 sBattleBuffersTransferData[0x100] = {};
extern void sub_81B8D64(u8 battlerId, u8 arg1); // party_menu
@@ -681,20 +681,20 @@ static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size)
static void CreateTasksForSendRecvLinkBuffers(void)
{
- gUnknown_02022D08 = CreateTask(Task_HandleSendLinkBuffersData, 0);
- gTasks[gUnknown_02022D08].data[11] = 0;
- gTasks[gUnknown_02022D08].data[12] = 0;
- gTasks[gUnknown_02022D08].data[13] = 0;
- gTasks[gUnknown_02022D08].data[14] = 0;
- gTasks[gUnknown_02022D08].data[15] = 0;
+ sLinkSendTaskId = CreateTask(Task_HandleSendLinkBuffersData, 0);
+ gTasks[sLinkSendTaskId].data[11] = 0;
+ gTasks[sLinkSendTaskId].data[12] = 0;
+ gTasks[sLinkSendTaskId].data[13] = 0;
+ gTasks[sLinkSendTaskId].data[14] = 0;
+ gTasks[sLinkSendTaskId].data[15] = 0;
- gUnknown_02022D09 = CreateTask(Task_HandleCopyReceivedLinkBuffersData, 0);
- gTasks[gUnknown_02022D09].data[12] = 0;
- gTasks[gUnknown_02022D09].data[13] = 0;
- gTasks[gUnknown_02022D09].data[14] = 0;
- gTasks[gUnknown_02022D09].data[15] = 0;
+ sLinkReceiveTaskId = CreateTask(Task_HandleCopyReceivedLinkBuffersData, 0);
+ gTasks[sLinkReceiveTaskId].data[12] = 0;
+ gTasks[sLinkReceiveTaskId].data[13] = 0;
+ gTasks[sLinkReceiveTaskId].data[14] = 0;
+ gTasks[sLinkReceiveTaskId].data[15] = 0;
- gUnknown_02022D0A = 0;
+ sUnknown_02022D0A = 0;
}
enum
@@ -716,24 +716,24 @@ void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
s32 i;
alignedSize = size - size % 4 + 4;
- if (gTasks[gUnknown_02022D08].data[14] + alignedSize + LINK_BUFF_DATA + 1 > BATTLE_BUFFER_LINK_SIZE)
+ if (gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA + 1 > BATTLE_BUFFER_LINK_SIZE)
{
- gTasks[gUnknown_02022D08].data[12] = gTasks[gUnknown_02022D08].data[14];
- gTasks[gUnknown_02022D08].data[14] = 0;
+ gTasks[sLinkSendTaskId].data[12] = gTasks[sLinkSendTaskId].data[14];
+ gTasks[sLinkSendTaskId].data[14] = 0;
}
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_BUFFER_ID] = bufferId;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ACTIVE_BATTLER] = gActiveBattler;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ATTACKER] = gBattlerAttacker;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_TARGET] = gBattlerTarget;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_SIZE_LO] = alignedSize;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ABSENT_BATTLER_FLAGS] = gAbsentBattlerFlags;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_EFFECT_BATTLER] = gEffectBattler;
+ gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_BUFFER_ID] = bufferId;
+ gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ACTIVE_BATTLER] = gActiveBattler;
+ gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ATTACKER] = gBattlerAttacker;
+ gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_TARGET] = gBattlerTarget;
+ gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_SIZE_LO] = alignedSize;
+ gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8;
+ gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ABSENT_BATTLER_FLAGS] = gAbsentBattlerFlags;
+ gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_EFFECT_BATTLER] = gEffectBattler;
for (i = 0; i < size; i++)
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_DATA + i] = data[i];
+ gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_DATA + i] = data[i];
- gTasks[gUnknown_02022D08].data[14] = gTasks[gUnknown_02022D08].data[14] + alignedSize + LINK_BUFF_DATA;
+ gTasks[sLinkSendTaskId].data[14] = gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA;
}
static void Task_HandleSendLinkBuffersData(u8 taskId)
@@ -845,19 +845,19 @@ void sub_8033648(void)
#endif
r6 = gBlockRecvBuffer[i][2];
- if (gTasks[gUnknown_02022D09].data[14] + 9 + r6 > 0x1000)
+ if (gTasks[sLinkReceiveTaskId].data[14] + 9 + r6 > 0x1000)
{
- gTasks[gUnknown_02022D09].data[12] = gTasks[gUnknown_02022D09].data[14];
- gTasks[gUnknown_02022D09].data[14] = 0;
+ gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14];
+ gTasks[sLinkReceiveTaskId].data[14] = 0;
}
- dest = &gLinkBattleRecvBuffer[gTasks[gUnknown_02022D09].data[14]];
+ dest = &gLinkBattleRecvBuffer[gTasks[sLinkReceiveTaskId].data[14]];
src = recvBuffer;
for (j = 0; j < r6 + 8; j++)
dest[j] = src[j];
- gTasks[gUnknown_02022D09].data[14] = gTasks[gUnknown_02022D09].data[14] + r6 + 8;
+ gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8;
}
}
}
diff --git a/src/battle_dome.c b/src/battle_dome.c
index 8de1c058c..0f5721fb9 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -3,6 +3,7 @@
#include "battle.h"
#include "battle_setup.h"
#include "battle_tower.h"
+#include "frontier_util.h"
#include "battle_message.h"
#include "event_data.h"
#include "overworld.h"
@@ -25,6 +26,7 @@
#include "international_string_util.h"
#include "trainer_pokemon_sprites.h"
#include "scanline_effect.h"
+#include "graphics.h"
#include "constants/species.h"
#include "constants/moves.h"
#include "constants/trainers.h"
@@ -55,51 +57,21 @@ struct UnkStruct_860DD10
};
extern void sub_81B8558(void);
-extern u32 sub_81A39C4(void);
-extern u16 sub_8162548(u8, u8);
-extern u16 RandomizeFacilityTrainerMonId(u16);
-extern u8 GetFacilityEnemyMonLevel(void);
-extern u16 sub_81A5060(u8 monId, u8 moveSlotId);
-extern u8 sub_81A50F0(u8, u8);
-extern u8 sub_81A50B0(u8);
-extern void sub_8162614(u16, u8);
+extern u16 GetFrontierBrainMonMove(u8 monId, u8 moveSlotId);
+extern u8 GetFrontierBrainMonEvs(u8, u8);
+extern u8 GetFrontierBrainMonNature(u8);
extern void sub_81A4C30(void);
-extern bool8 sub_81A3610(void);
-extern u16 sub_81A4FF0(u8);
-extern u8 GetFrontierTrainerFrontSpriteId(u16);
-extern u8 GetFrontierOpponentClass(u16);
-extern void ReducePlayerPartyToThree(void);
-
-extern u8 gUnknown_0203CEF8[];
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
-extern u16 gBattle_BG1_X;
-extern u16 gBattle_BG1_Y;
-extern u16 gBattle_BG2_X;
-extern u16 gBattle_BG2_Y;
-extern u16 gBattle_BG3_X;
-extern u16 gBattle_BG3_Y;
+extern u8 sub_81A3610(void);
+extern u16 GetFrontierBrainMonSpecies(u8);
+extern void ReducePlayerPartyToSelectedMons(void);
+
+extern u8 gSelectedOrderFromParty[];
extern const u16 gBattleFrontierHeldItems[];
extern const struct FacilityMon gBattleFrontierMons[];
extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
extern const struct SpriteTemplate gUnknown_0860CFA8;
-// gfx
-extern const u8 gUnknown_08D83D50[];
-extern const u8 gUnknown_08D84970[];
-extern const u8 gUnknown_08D84F00[];
-extern const u8 gUnknown_08D85444[];
-extern const u8 gUnknown_08D85358[];
-extern const u8 gUnknown_08D85600[];
-extern const u8 gUnknown_08D854C8[];
-extern const u8 gUnknown_08D82F10[];
-extern const u8 gUnknown_08D834FC[];
-extern const u8 gUnknown_08D83B2C[];
-extern const u8 gUnknown_08D83C3C[];
-extern const u8 gUnknown_08D83900[];
-extern const u8 gBattleFrontierGfx_DomeOptions[];
-
// text
extern const u8 gTrainerClassNames[][0xD];
@@ -806,7 +778,7 @@ static const struct BgTemplate gUnknown_0860CE84[4] =
static const struct WindowTemplate gUnknown_0860CE94[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 0,
.tilemapTop = 3,
.width = 8,
@@ -815,7 +787,7 @@ static const struct WindowTemplate gUnknown_0860CE94[] =
.baseBlock = 16,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 22,
.tilemapTop = 3,
.width = 8,
@@ -824,7 +796,7 @@ static const struct WindowTemplate gUnknown_0860CE94[] =
.baseBlock = 144,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 8,
.tilemapTop = 1,
.width = 14,
@@ -838,7 +810,7 @@ static const struct WindowTemplate gUnknown_0860CE94[] =
static const struct WindowTemplate gUnknown_0860CEB4[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 2,
.width = 26,
@@ -847,7 +819,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 1,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 16,
.tilemapTop = 5,
.width = 8,
@@ -856,7 +828,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 53,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 19,
.tilemapTop = 7,
.width = 9,
@@ -865,7 +837,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 69,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 16,
.tilemapTop = 10,
.width = 8,
@@ -874,7 +846,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 96,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 12,
.width = 26,
@@ -883,7 +855,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 112,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 5,
.tilemapTop = 2,
.width = 23,
@@ -892,7 +864,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 294,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 5,
.width = 8,
@@ -901,7 +873,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 340,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 20,
.tilemapTop = 5,
.width = 8,
@@ -910,7 +882,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 356,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 16,
.width = 26,
@@ -919,7 +891,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 372,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 2,
.tilemapTop = 2,
.width = 26,
@@ -928,7 +900,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 1,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 16,
.tilemapTop = 5,
.width = 8,
@@ -937,7 +909,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 53,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 19,
.tilemapTop = 7,
.width = 9,
@@ -946,7 +918,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 69,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 16,
.tilemapTop = 10,
.width = 8,
@@ -955,7 +927,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 96,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 2,
.tilemapTop = 12,
.width = 26,
@@ -964,7 +936,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 112,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 5,
.tilemapTop = 2,
.width = 23,
@@ -973,7 +945,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 294,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 2,
.tilemapTop = 5,
.width = 8,
@@ -982,7 +954,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 340,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 20,
.tilemapTop = 5,
.width = 8,
@@ -991,7 +963,7 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
.baseBlock = 356,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 2,
.tilemapTop = 16,
.width = 26,
@@ -2424,11 +2396,11 @@ static void sub_818E9CC(void)
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
gSaveBlock2Ptr->frontier.field_CA8 = 0;
- gSaveBlock2Ptr->frontier.field_CB2 = 0;
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
gSaveBlock2Ptr->frontier.field_CA9_a = 0;
gSaveBlock2Ptr->frontier.field_CA9_b = 0;
if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860D0EC[battleMode][lvlMode]))
- gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode] = 0;
+ gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] = 0;
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
gTrainerBattleOpponent_A = 0;
@@ -2442,7 +2414,7 @@ static void sub_818EA84(void)
switch (gSpecialVar_0x8005)
{
case 0:
- gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode];
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode];
break;
case 1:
gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860D0EC[battleMode][lvlMode]) != 0);
@@ -2493,8 +2465,8 @@ static void sub_818EA84(void)
break;
case 8:
sub_81B8558();
- gUnknown_0203CEF8[0] = gSaveBlock2Ptr->frontier.field_CB0;
- gUnknown_0203CEF8[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8;
+ gSelectedOrderFromParty[0] = gSaveBlock2Ptr->frontier.field_CB0;
+ gSelectedOrderFromParty[1] = gSaveBlock2Ptr->frontier.field_CB0 >> 8;
break;
case 9:
gSpecialVar_Result = (gSaveBlock2Ptr->frontier.field_D0A * 2) - 3 + gSaveBlock2Ptr->frontier.field_D0B;
@@ -2510,7 +2482,7 @@ static void sub_818ED28(void)
switch (gSpecialVar_0x8005)
{
case 0:
- gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode] = gSpecialVar_0x8006;
+ gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
break;
case 1:
if (gSpecialVar_0x8006)
@@ -2563,7 +2535,7 @@ static void sub_818ED28(void)
}
break;
case 8:
- gSaveBlock2Ptr->frontier.field_CB0 = T1_READ_16(gUnknown_0203CEF8);
+ gSaveBlock2Ptr->frontier.field_CB0 = T1_READ_16(gSelectedOrderFromParty);
break;
}
}
@@ -2575,7 +2547,7 @@ static void InitDomeTrainers(void)
s32 species[3];
s32 monTypesBits, monTypesCount;
s32 trainerId;
- s32 monTournamentId;
+ s32 monSetId;
u16 *statSums;
s32 *statValues;
u8 ivs = 0;
@@ -2595,13 +2567,13 @@ static void InitDomeTrainers(void)
for (i = 0; i < 3; i++)
{
- gSaveBlock2Ptr->frontier.domeMonId[0][i] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.field_CAA[i] - 1], MON_DATA_SPECIES, NULL);
+ gSaveBlock2Ptr->frontier.domeMonIds[0][i] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_SPECIES, NULL);
for (j = 0; j < 4; j++)
- gSaveBlock2Ptr->frontier.field_EFC[i].moves[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.field_CAA[i] - 1], MON_DATA_MOVE1 + j, NULL);
+ gSaveBlock2Ptr->frontier.field_EFC[i].moves[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_MOVE1 + j, NULL);
for (j = 0; j < 6; j++)
- gSaveBlock2Ptr->frontier.field_EFC[i].evs[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.field_CAA[i] - 1], MON_DATA_HP_EV + j, NULL);
+ gSaveBlock2Ptr->frontier.field_EFC[i].evs[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_HP_EV + j, NULL);
- gSaveBlock2Ptr->frontier.field_EFC[i].nature = GetNature(&gPlayerParty[gSaveBlock2Ptr->frontier.field_CAA[i] - 1]);
+ gSaveBlock2Ptr->frontier.field_EFC[i].nature = GetNature(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1]);
}
for (i = 1; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++)
@@ -2610,7 +2582,7 @@ static void InitDomeTrainers(void)
{
do
{
- trainerId = sub_8162548(sub_81A39C4(), 0);
+ trainerId = sub_8162548(GetCurrentFacilityWinStreak(), 0);
for (j = 1; j < i; j++)
{
if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId)
@@ -2623,7 +2595,7 @@ static void InitDomeTrainers(void)
{
do
{
- trainerId = sub_8162548(sub_81A39C4() + 1, 0);
+ trainerId = sub_8162548(GetCurrentFacilityWinStreak() + 1, 0);
for (j = 1; j < i; j++)
{
if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId)
@@ -2638,20 +2610,20 @@ static void InitDomeTrainers(void)
// Make sure the mon is valid.
do
{
- monTournamentId = RandomizeFacilityTrainerMonId(trainerId);
+ monSetId = RandomizeFacilityTrainerMonSet(trainerId);
for (k = 0; k < j; k++)
{
- s32 checkingMonId = gSaveBlock2Ptr->frontier.domeMonId[i][k];
- if (checkingMonId == monTournamentId
- || species[0] == gFacilityTrainerMons[monTournamentId].species
- || species[1] == gFacilityTrainerMons[monTournamentId].species
- || gFacilityTrainerMons[checkingMonId].itemTableId == gFacilityTrainerMons[monTournamentId].itemTableId)
+ s32 checkingMonSetId = gSaveBlock2Ptr->frontier.domeMonIds[i][k];
+ if (checkingMonSetId == monSetId
+ || species[0] == gFacilityTrainerMons[monSetId].species
+ || species[1] == gFacilityTrainerMons[monSetId].species
+ || gFacilityTrainerMons[checkingMonSetId].itemTableId == gFacilityTrainerMons[monSetId].itemTableId)
break;
}
} while (k != j);
- gSaveBlock2Ptr->frontier.domeMonId[i][j] = monTournamentId;
- species[j] = gFacilityTrainerMons[monTournamentId].species;
+ gSaveBlock2Ptr->frontier.domeMonIds[i][j] = monSetId;
+ species[j] = gFacilityTrainerMons[monSetId].species;
}
gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated = 0;
@@ -2663,7 +2635,7 @@ static void InitDomeTrainers(void)
statSums[0] = 0;
for (i = 0; i < 3; i++)
{
- trainerId = gSaveBlock2Ptr->frontier.field_CAA[i] - 1; // Great variable choice, gamefreak.
+ trainerId = gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1; // Great variable choice, gamefreak.
statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_ATK, NULL);
statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_DEF, NULL);
statSums[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPATK, NULL);
@@ -2681,7 +2653,7 @@ static void InitDomeTrainers(void)
monTypesBits >>= 1;
}
- monLevel = GetFacilityEnemyMonLevel();
+ monLevel = SetFacilityPtrsGetLevel();
statSums[0] += (monTypesCount * monLevel) / 20;
for (i = 1; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++)
@@ -2691,10 +2663,10 @@ static void InitDomeTrainers(void)
ivs = GetDomeTrainerMonIvs(gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId);
for (j = 0; j < 3; j++)
{
- CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species,
+ CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species,
monLevel, ivs,
- gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].evSpread,
- gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].nature,
+ gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].evSpread,
+ gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].nature,
statValues);
statSums[i] += statValues[STAT_ATK];
@@ -2703,8 +2675,8 @@ static void InitDomeTrainers(void)
statSums[i] += statValues[STAT_SPDEF];
statSums[i] += statValues[STAT_SPEED];
statSums[i] += statValues[STAT_HP];
- monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species].type1];
- monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species].type2];
+ monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type1];
+ monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type2];
}
for (monTypesCount = 0, j = 0; j < 32; j++)
@@ -2757,7 +2729,7 @@ static void InitDomeTrainers(void)
}
for (i = 0; i < 3; i++)
- gSaveBlock2Ptr->frontier.domeMonId[j][i] = sub_81A4FF0(i);
+ gSaveBlock2Ptr->frontier.domeMonIds[j][i] = GetFrontierBrainMonSpecies(i);
}
Free(statSums);
@@ -2776,17 +2748,17 @@ static void CalcDomeMonStats(u16 species, s32 level, s32 ivs, u8 evBits, u8 natu
s32 i, count;
u8 bits;
u16 resultingEvs;
- s32 evs[6];
+ s32 evs[NUM_STATS];
count = 0, bits = evBits;
- for (i = 0; i < 6; bits >>= 1, i++)
+ for (i = 0; i < NUM_STATS; bits >>= 1, i++)
{
if (bits & 1)
count++;
}
resultingEvs = MAX_TOTAL_EVS / count;
- for (i = 0; i < 6; bits <<= 1, i++)
+ for (i = 0; i < NUM_STATS; bits <<= 1, i++)
{
evs[i] = 0;
if (evBits & bits)
@@ -2819,17 +2791,17 @@ static void SwapDomeTrainers(s32 id1, s32 id2, u16 *statsArray)
SWAP(gSaveBlock2Ptr->frontier.domeTrainers[id1].trainerId, gSaveBlock2Ptr->frontier.domeTrainers[id2].trainerId, temp);
for (i = 0; i < 3; i++)
- SWAP(gSaveBlock2Ptr->frontier.domeMonId[id1][i], gSaveBlock2Ptr->frontier.domeMonId[id2][i], temp);
+ SWAP(gSaveBlock2Ptr->frontier.domeMonIds[id1][i], gSaveBlock2Ptr->frontier.domeMonIds[id2][i], temp);
}
static void sub_818F9B0(void)
{
- StringCopy(gStringVar1, gRoundsStringTable[gSaveBlock2Ptr->frontier.field_CB2]);
+ StringCopy(gStringVar1, gRoundsStringTable[gSaveBlock2Ptr->frontier.curChallengeBattleNum]);
}
static void sub_818F9E0(void)
{
- StringCopy(gStringVar1, gRoundsStringTable[gSaveBlock2Ptr->frontier.field_CB2]);
+ StringCopy(gStringVar1, gRoundsStringTable[gSaveBlock2Ptr->frontier.curChallengeBattleNum]);
CopyDomeTrainerName(gStringVar2, gTrainerBattleOpponent_A);
}
@@ -2847,26 +2819,26 @@ static void CreateDomeMon(u8 monPartyId, u16 tournamentTrainerId, u8 tournamentM
s32 i;
u8 happiness = 0xFF;
u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Should be using trainerId instead of tournamentTrainerId. As a result, all Pokemon have ivs of 3.
- u8 level = GetFacilityEnemyMonLevel();
- CreateMonWithEVSpreadPersonalityOTID(&gEnemyParty[monPartyId],
- gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].species,
+ u8 level = SetFacilityPtrsGetLevel();
+ CreateMonWithEVSpreadNatureOTID(&gEnemyParty[monPartyId],
+ gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].species,
level,
- gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].nature,
+ gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].nature,
fixedIv,
- gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].evSpread, otId);
+ gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].evSpread, otId);
happiness = 0xFF;
for (i = 0; i < 4; i++)
{
SetMonMoveSlot(&gEnemyParty[monPartyId],
- gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].moves[i], i);
- if (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].moves[i] == MOVE_FRUSTRATION)
+ gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].moves[i], i);
+ if (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].moves[i] == MOVE_FRUSTRATION)
happiness = 0;
}
SetMonData(&gEnemyParty[monPartyId], MON_DATA_FRIENDSHIP, &happiness);
SetMonData(&gEnemyParty[monPartyId], MON_DATA_HELD_ITEM,
- &gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].itemTableId]);
+ &gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].itemTableId]);
}
static void CreateDomeTrainerMons(u16 tournamentTrainerId)
@@ -2876,7 +2848,7 @@ static void CreateDomeTrainerMons(u16 tournamentTrainerId)
s32 i, bits;
ZeroEnemyPartyMons();
- bits = GetTrainerMonCountInBits(tournamentTrainerId);
+ bits = GetDomeTrainerMonCountInBits(tournamentTrainerId);
otId = Random32();
if (Random() % 10 > 5)
{
@@ -2904,7 +2876,7 @@ static void CreateDomeTrainerMons(u16 tournamentTrainerId)
}
}
-s32 GetTrainerMonCountInBits(u16 tournamentTrainerId)
+s32 GetDomeTrainerMonCountInBits(u16 tournamentTrainerId)
{
s32 bits;
if (Random() & 1)
@@ -2937,12 +2909,12 @@ static s32 sub_818FCBC(u16 tournamentTrainerId, bool8 arg1)
{
if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN)
{
- array[i] += GetTypeEffectivenessPoints(sub_81A5060(i, moveId),
+ array[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId),
GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 0);
}
else
{
- array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][i]].moves[moveId],
+ array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][i]].moves[moveId],
GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 0);
}
}
@@ -2965,12 +2937,12 @@ static s32 sub_818FDB8(u16 tournamentTrainerId, bool8 arg1)
{
if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN)
{
- array[i] += GetTypeEffectivenessPoints(sub_81A5060(i, moveId),
+ array[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId),
GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 1);
}
else
{
- array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][i]].moves[moveId],
+ array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][i]].moves[moveId],
GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 1);
}
}
@@ -3480,12 +3452,12 @@ static void sub_8190298(void)
static u16 TrainerIdOfPlayerOpponent(void)
{
- return gSaveBlock2Ptr->frontier.domeTrainers[TournamentIdOfOpponent(gSaveBlock2Ptr->frontier.field_CB2, TRAINER_PLAYER)].trainerId;
+ return gSaveBlock2Ptr->frontier.domeTrainers[TournamentIdOfOpponent(gSaveBlock2Ptr->frontier.curChallengeBattleNum, TRAINER_PLAYER)].trainerId;
}
static void sub_81902E4(void)
{
- sub_8162614(gTrainerBattleOpponent_A, 0);
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
}
static void sub_81902F8(void)
@@ -3501,13 +3473,13 @@ static void sub_819033C(void)
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
- if (gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode] < 999)
- gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode]++;
- if (gSaveBlock2Ptr->frontier.field_D1C[battleMode][lvlMode] < 999)
- gSaveBlock2Ptr->frontier.field_D1C[battleMode][lvlMode]++;
+ if (gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] < 999)
+ gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]++;
+ if (gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][lvlMode] < 999)
+ gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][lvlMode]++;
- if (gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.field_D14[battleMode][lvlMode])
- gSaveBlock2Ptr->frontier.field_D14[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode];
+ if (gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][lvlMode])
+ gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode];
}
static void ShowDomeOpponentInfo(void)
@@ -3819,7 +3791,7 @@ static void sub_8190B40(struct Sprite *sprite)
s32 taskId1 = sprite->data[0];
s32 arrId = gTasks[gTasks[taskId1].data[4]].data[1];
s32 tournmanetTrainerId = gUnknown_0860D080[arrId];
- s32 r12 = gSaveBlock2Ptr->frontier.field_CB2;
+ s32 roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
if (gTasks[taskId1].data[3] == 1)
{
@@ -3831,7 +3803,7 @@ static void sub_8190B40(struct Sprite *sprite)
sprite->invisible = FALSE;
}
else if (!gSaveBlock2Ptr->frontier.domeTrainers[tournmanetTrainerId].isEliminated
- && sBattleDomeStruct->unk_10 - 1 < r12)
+ && sBattleDomeStruct->unk_10 - 1 < roundId)
{
sprite->invisible = FALSE;
}
@@ -4635,7 +4607,7 @@ static u8 sub_819221C(u8 taskId)
s32 taskId2 = gTasks[taskId].data[4];
s32 r5 = gTasks[taskId2].data[1];
u8 r10 = gUnknown_0860D080[r5];
- u16 roundId = gSaveBlock2Ptr->frontier.field_CB2;
+ u16 roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
retVal = 9;
@@ -4740,7 +4712,7 @@ static u8 sub_819221C(u8 taskId)
static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
{
- struct TextSubPrinter textPrinter;
+ struct TextPrinterTemplate textPrinter;
s32 i, j, k;
s32 trainerId = 0;
u8 nature = 0;
@@ -4776,7 +4748,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
{
if (trainerId == TRAINER_PLAYER)
{
- sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i],
+ sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i],
SpriteCb_MonIcon,
x | sInfoTrainerMonX[i],
y + sInfoTrainerMonY[i],
@@ -4785,7 +4757,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
}
else if (trainerId == TRAINER_FRONTIER_BRAIN)
{
- sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i],
+ sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i],
SpriteCb_MonIcon,
x | sInfoTrainerMonX[i],
y + sInfoTrainerMonY[i],
@@ -4794,7 +4766,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
}
else
{
- sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].species,
+ sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].species,
SpriteCb_MonIcon,
x | sInfoTrainerMonX[i],
y + sInfoTrainerMonY[i],
@@ -4812,14 +4784,14 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
textPrinter.currentY = textPrinter.y;
textPrinter.letterSpacing = 2;
textPrinter.lineSpacing = 0;
- textPrinter.fontColor_l = 0;
+ textPrinter.unk = 0;
textPrinter.fgColor = 14;
textPrinter.bgColor = 0;
textPrinter.shadowColor = 13;
i = 0;
if (trainerId == TRAINER_PLAYER)
- j = gFacilityClassToTrainerClass[FACILITY_CLASS_PKMN_TRAINER_BRENDAN];
+ j = gFacilityClassToTrainerClass[FACILITY_CLASS_BRENDAN];
else if (trainerId == TRAINER_FRONTIER_BRAIN)
j = GetDomeBrainTrainerClass();
else
@@ -4846,7 +4818,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
}
textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, gStringVar1, 0xD0, textPrinter.letterSpacing);
- textPrinter.current_text_offset = gStringVar1;
+ textPrinter.currentChar = gStringVar1;
textPrinter.windowId = windowId;
PutWindowTilemap(windowId);
CopyWindowToVram(windowId, 3);
@@ -4857,11 +4829,11 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
{
textPrinter.currentY = gUnknown_0860D346[i];
if (trainerId == TRAINER_PLAYER)
- textPrinter.current_text_offset = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]];
+ textPrinter.currentChar = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]];
else if (trainerId == TRAINER_FRONTIER_BRAIN)
- textPrinter.current_text_offset = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]];
+ textPrinter.currentChar = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]];
else
- textPrinter.current_text_offset = gSpeciesNames[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].species];
+ textPrinter.currentChar = gSpeciesNames[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].species];
textPrinter.windowId = 1 + i + windowId;
if (i == 1)
@@ -4877,9 +4849,9 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
PutWindowTilemap(windowId + 4);
CopyWindowToVram(windowId + 4, 3);
if (trainerId == TRAINER_FRONTIER_BRAIN)
- textPrinter.current_text_offset = gBattleDomePotentialPointers[16];
+ textPrinter.currentChar = gBattleDomePotentialPointers[16];
else
- textPrinter.current_text_offset = gBattleDomePotentialPointers[trainerTournamentId];
+ textPrinter.currentChar = gBattleDomePotentialPointers[trainerTournamentId];
textPrinter.fontId = 1;
textPrinter.windowId = windowId + 4;
@@ -4895,11 +4867,11 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
for (k = 0; k < DOME_TOURNAMENT_TRAINERS_COUNT; k++)
{
if (trainerId == TRAINER_FRONTIER_BRAIN)
- allocatedArray[k] += sMovePointsForDomeTrainers[sub_81A5060(i, j)][k];
+ allocatedArray[k] += sMovePointsForDomeTrainers[GetFrontierBrainMonMove(i, j)][k];
else if (trainerId == TRAINER_PLAYER)
allocatedArray[k] += sMovePointsForDomeTrainers[gSaveBlock2Ptr->frontier.field_EFC[i].moves[j]][k];
else
- allocatedArray[k] += sMovePointsForDomeTrainers[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].moves[j]][k];
+ allocatedArray[k] += sMovePointsForDomeTrainers[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].moves[j]][k];
}
}
}
@@ -4921,7 +4893,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
break;
}
- textPrinter.current_text_offset = gBattleDomeOpponentStylePointers[i];
+ textPrinter.currentChar = gBattleDomeOpponentStylePointers[i];
textPrinter.y = 20;
textPrinter.currentY = 20;
AddTextPrinter(&textPrinter, 0, NULL);
@@ -4936,7 +4908,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
for (j = 0; j < 6; j++)
{
if (trainerId == TRAINER_FRONTIER_BRAIN)
- allocatedArray[j] = sub_81A50F0(i, j);
+ allocatedArray[j] = GetFrontierBrainMonEvs(i, j);
else
allocatedArray[j] = gSaveBlock2Ptr->frontier.field_EFC[i].evs[j];
}
@@ -4944,7 +4916,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
for (j = 0; j < 5; j++)
{
if (trainerId == TRAINER_FRONTIER_BRAIN)
- nature = sub_81A50B0(i);
+ nature = GetFrontierBrainMonNature(i);
else
nature = gSaveBlock2Ptr->frontier.field_EFC[i].nature;
@@ -4972,8 +4944,8 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
{
for (i = 0; i < 3; i++)
{
- s32 evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].evSpread;
- for (k = 0, j = 0; j < 6; j++)
+ s32 evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].evSpread;
+ for (k = 0, j = 0; j < NUM_STATS; j++)
{
allocatedArray[j] = 0;
if (evBits & 1)
@@ -4981,8 +4953,8 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
evBits >>= 1;
}
k = MAX_TOTAL_EVS / k;
- evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].evSpread;
- for (j = 0; j < 6; j++)
+ evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].evSpread;
+ for (j = 0; j < NUM_STATS; j++)
{
if (evBits & 1)
allocatedArray[j] = k;
@@ -4992,7 +4964,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
allocatedArray[6] += allocatedArray[0];
for (j = 0; j < 5; j++)
{
- nature = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].nature;
+ nature = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].nature;
if (gNatureStatTable[nature][j] > 0)
{
allocatedArray[j + 7] += (allocatedArray[j + 1] * 110) / 100;
@@ -5093,7 +5065,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
else
i = 42;
- textPrinter.current_text_offset = gBattleDomeOpponentStatsPointers[i];
+ textPrinter.currentChar = gBattleDomeOpponentStatsPointers[i];
textPrinter.y = 36;
textPrinter.currentY = 36;
AddTextPrinter(&textPrinter, 0, NULL);
@@ -5164,7 +5136,7 @@ static s32 sub_8192F08(u8 arg0, u8 *arg1)
static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
{
- struct TextSubPrinter textPrinter;
+ struct TextPrinterTemplate textPrinter;
s32 tournamentIds[2];
s32 trainerIds[2];
bool32 lost[2];
@@ -5230,7 +5202,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
{
if (trainerIds[0] == TRAINER_PLAYER)
{
- sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[0]][i],
+ sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[0]][i],
SpriteCb_MonIcon,
x | sFirstTrainerMonX[i],
y + sFirstTrainerMonY[i],
@@ -5239,7 +5211,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
}
else if (trainerIds[0] == TRAINER_FRONTIER_BRAIN)
{
- sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[0]][i],
+ sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[0]][i],
SpriteCb_MonIcon,
x | sFirstTrainerMonX[i],
y + sFirstTrainerMonY[i],
@@ -5248,7 +5220,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
}
else
{
- sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[0]][i]].species,
+ sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[0]][i]].species,
SpriteCb_MonIcon,
x | sFirstTrainerMonX[i],
y + sFirstTrainerMonY[i],
@@ -5270,7 +5242,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
{
if (trainerIds[1] == TRAINER_PLAYER)
{
- sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[1]][i],
+ sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[1]][i],
SpriteCb_MonIcon,
x | sSecondTrainerMonX[i],
y + sSecondTrainerMonY[i],
@@ -5279,7 +5251,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
}
else if (trainerIds[1] == TRAINER_FRONTIER_BRAIN)
{
- sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[1]][i],
+ sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[1]][i],
SpriteCb_MonIcon,
x | sSecondTrainerMonX[i],
y + sSecondTrainerMonY[i],
@@ -5288,7 +5260,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
}
else
{
- sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[1]][i]].species,
+ sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[1]][i]].species,
SpriteCb_MonIcon,
x | sSecondTrainerMonX[i],
y + sSecondTrainerMonY[i],
@@ -5312,12 +5284,12 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
textPrinter.currentY = textPrinter.y;
textPrinter.letterSpacing = 0;
textPrinter.lineSpacing = 0;
- textPrinter.fontColor_l = 0;
+ textPrinter.unk = 0;
textPrinter.fgColor = 14;
textPrinter.bgColor = 0;
textPrinter.shadowColor = 13;
StringExpandPlaceholders(gStringVar4, gBattleDomeWinStringsPointers[winStringId]);
- textPrinter.current_text_offset = gStringVar4;
+ textPrinter.currentChar = gStringVar4;
textPrinter.windowId = windowId + 8;
textPrinter.fontId = 1;
PutWindowTilemap(windowId + 8);
@@ -5336,9 +5308,9 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
textPrinter.fontId = 2;
textPrinter.letterSpacing = 2;
- textPrinter.current_text_offset = gStringVar1;
+ textPrinter.currentChar = gStringVar1;
textPrinter.windowId = windowId + 6;
- textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.current_text_offset, 0x40, textPrinter.letterSpacing);
+ textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.currentChar, 0x40, textPrinter.letterSpacing);
textPrinter.currentY = textPrinter.y = 2;
PutWindowTilemap(windowId + 6);
CopyWindowToVram(windowId + 6, 3);
@@ -5352,9 +5324,9 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
else
CopyDomeTrainerName(gStringVar1, trainerIds[1]);
- textPrinter.current_text_offset = gStringVar1;
+ textPrinter.currentChar = gStringVar1;
textPrinter.windowId = windowId + 7;
- textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.current_text_offset, 0x40, textPrinter.letterSpacing);
+ textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.currentChar, 0x40, textPrinter.letterSpacing);
textPrinter.currentY = textPrinter.y = 2;
PutWindowTilemap(windowId + 7);
CopyWindowToVram(windowId + 7, 3);
@@ -5362,9 +5334,9 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
// Print match number.
textPrinter.letterSpacing = 0;
- textPrinter.current_text_offset = gBattleDomeMatchNumberPointers[matchNo];
+ textPrinter.currentChar = gBattleDomeMatchNumberPointers[matchNo];
textPrinter.windowId = windowId + 5;
- textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.current_text_offset, 0xA0, textPrinter.letterSpacing);
+ textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.currentChar, 0xA0, textPrinter.letterSpacing);
textPrinter.currentY = textPrinter.y = 2;
PutWindowTilemap(windowId + 5);
CopyWindowToVram(windowId + 5, 3);
@@ -5387,7 +5359,7 @@ static void sub_81938E0(void)
sub_8194D48();
gSaveBlock2Ptr->frontier.lvlMode = gSaveBlock2Ptr->frontier.field_D0A - 1;
- gSaveBlock2Ptr->frontier.field_CB2 = 3;
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = 3;
taskId = CreateTask(sub_8194220, 0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
@@ -5489,7 +5461,7 @@ static u8 sub_8193BDC(u8 taskId)
u8 retVal = 1;
s32 arrId = 4;
s32 spriteId = gTasks[taskId].data[1];
- s32 roundId = gSaveBlock2Ptr->frontier.field_CB2;
+ s32 roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
if (gMain.newKeys == B_BUTTON || (gMain.newKeys & A_BUTTON && spriteId == 31))
{
@@ -5550,19 +5522,19 @@ static void sub_8193D7C(void)
if (gSpecialVar_0x8005 == 1)
{
gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].isEliminated = 1;
- gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].eliminatedAt = gSaveBlock2Ptr->frontier.field_CB2;
+ gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].eliminatedAt = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
gSaveBlock2Ptr->frontier.field_EC0[TrainerIdToTournamentId(gTrainerBattleOpponent_A)] = gBattleResults.lastUsedMovePlayer;
- if (gSaveBlock2Ptr->frontier.field_CB2 < DOME_FINAL)
- DecideRoundWinners(gSaveBlock2Ptr->frontier.field_CB2);
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < DOME_FINAL)
+ DecideRoundWinners(gSaveBlock2Ptr->frontier.curChallengeBattleNum);
}
else
{
gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].isEliminated = 1;
- gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].eliminatedAt = gSaveBlock2Ptr->frontier.field_CB2;
+ gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].eliminatedAt = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
gSaveBlock2Ptr->frontier.field_EC0[TrainerIdToTournamentId(TRAINER_PLAYER)] = gBattleResults.lastUsedMoveOpponent;
if (gBattleOutcome == B_OUTCOME_FORFEITED || gSpecialVar_0x8005 == 9)
gSaveBlock2Ptr->frontier.domeTrainers[TrainerIdToTournamentId(TRAINER_PLAYER)].unk3 = 1;
- for (i = gSaveBlock2Ptr->frontier.field_CB2; i < DOME_ROUNDS_COUNT; i++)
+ for (i = gSaveBlock2Ptr->frontier.curChallengeBattleNum; i < DOME_ROUNDS_COUNT; i++)
DecideRoundWinners(i);
}
}
@@ -5575,7 +5547,7 @@ static u16 GetWinningMove(s32 winnerTournamentId, s32 loserTournamentId, u8 roun
u16 bestScore = 0;
u16 bestId = 0;
s32 movePower = 0;
- GetFacilityEnemyMonLevel(); // Unused return variable.
+ SetFacilityPtrsGetLevel();
// Calc move points of all 4 moves for all 3 pokemon hitting all 3 target mons.
for (i = 0; i < 3; i++)
@@ -5584,9 +5556,9 @@ static u16 GetWinningMove(s32 winnerTournamentId, s32 loserTournamentId, u8 roun
{
moveScores[i * 4 + j] = 0;
if (gSaveBlock2Ptr->frontier.domeTrainers[winnerTournamentId].trainerId == TRAINER_FRONTIER_BRAIN)
- moveIds[i * 4 + j] = sub_81A5060(i, j);
+ moveIds[i * 4 + j] = GetFrontierBrainMonMove(i, j);
else
- moveIds[i * 4 + j] = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[winnerTournamentId][i]].moves[j];
+ moveIds[i * 4 + j] = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[winnerTournamentId][i]].moves[j];
movePower = gBattleMoves[moveIds[i * 4 + j]].power;
if (movePower == 0)
@@ -5604,9 +5576,9 @@ static u16 GetWinningMove(s32 winnerTournamentId, s32 loserTournamentId, u8 roun
do
{
var = Random32();
- } while (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[loserTournamentId][k]].nature != GetNatureFromPersonality(var));
+ } while (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[loserTournamentId][k]].nature != GetNatureFromPersonality(var));
- targetSpecies = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[loserTournamentId][k]].species;
+ targetSpecies = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[loserTournamentId][k]].species;
if (var & 1)
targetAbility = gBaseStats[targetSpecies].ability2;
else
@@ -5683,7 +5655,7 @@ static u16 GetWinningMove(s32 winnerTournamentId, s32 loserTournamentId, u8 roun
static void sub_8194220(u8 taskId)
{
s32 i;
- struct TextSubPrinter textPrinter;
+ struct TextPrinterTemplate textPrinter;
s32 r10 = gTasks[taskId].data[1];
s32 r4 = gTasks[taskId].data[2];
@@ -5760,22 +5732,22 @@ static void sub_8194220(u8 taskId)
break;
case 4:
textPrinter.fontId = 2;
- textPrinter.current_text_offset = gText_BattleTourney;
+ textPrinter.currentChar = gText_BattleTourney;
textPrinter.windowId = 2;
textPrinter.x = 0;
textPrinter.y = 0;
textPrinter.letterSpacing = 2;
textPrinter.lineSpacing = 0;
- textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.current_text_offset, 0x70, textPrinter.letterSpacing);
+ textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.currentChar, 0x70, textPrinter.letterSpacing);
textPrinter.currentY = 1;
- textPrinter.fontColor_l = 0;
+ textPrinter.unk = 0;
textPrinter.fgColor = 14;
textPrinter.bgColor = 0;
textPrinter.shadowColor = 13;
AddTextPrinter(&textPrinter, 0, NULL);
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++)
{
- s32 var, var2;
+ s32 roundId, var2;
CopyDomeTrainerName(gDisplayedStringBattle, gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId);
if (r10 == 1)
@@ -5788,9 +5760,9 @@ static void sub_8194220(u8 taskId)
sub_81948EC(i, var2);
}
}
- else if (gSaveBlock2Ptr->frontier.field_CB2 != DOME_ROUND2)
+ else if (gSaveBlock2Ptr->frontier.curChallengeBattleNum != DOME_ROUND2)
{
- sub_81948EC(i, gSaveBlock2Ptr->frontier.field_CB2 - 2);
+ sub_81948EC(i, gSaveBlock2Ptr->frontier.curChallengeBattleNum - 2);
}
}
else if (r10 == 0)
@@ -5803,23 +5775,23 @@ static void sub_8194220(u8 taskId)
sub_81948EC(i, var2);
}
}
- else if (gSaveBlock2Ptr->frontier.field_CB2 != DOME_ROUND1)
+ else if (gSaveBlock2Ptr->frontier.curChallengeBattleNum != DOME_ROUND1)
{
if (gTasks[taskId].data[4])
- var2 = gSaveBlock2Ptr->frontier.field_CB2;
+ var2 = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
else
- var2 = gSaveBlock2Ptr->frontier.field_CB2 - 1;
+ var2 = gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1;
sub_81948EC(i, var2);
}
}
if (gTasks[taskId].data[4])
- var = gSaveBlock2Ptr->frontier.field_CB2;
+ roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
else
- var = gSaveBlock2Ptr->frontier.field_CB2 - 1;
+ roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1;
- if ( ((r10 == 1 && gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt < gSaveBlock2Ptr->frontier.field_CB2 - 1)
- || (r10 == 0 && gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt <= var))
+ if ( ((r10 == 1 && gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1)
+ || (r10 == 0 && gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt <= roundId))
&& gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated)
{
if (gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId == TRAINER_PLAYER)
@@ -5851,7 +5823,7 @@ static void sub_8194220(u8 taskId)
textPrinter.currentX = GetStringWidthDifference(textPrinter.fontId, gDisplayedStringBattle, 0x3D, textPrinter.letterSpacing);
else
textPrinter.currentX = 3;
- textPrinter.current_text_offset = gDisplayedStringBattle;
+ textPrinter.currentChar = gDisplayedStringBattle;
textPrinter.windowId = gUnknown_0860D3F1[i][0];
textPrinter.currentY = gUnknown_0860D3F1[i][1];
AddTextPrinter(&textPrinter, 0, NULL);
@@ -5919,7 +5891,7 @@ static void sub_81948EC(u8 tournamentId, u8 arg1)
static void sub_8194950(u8 taskId)
{
s32 i;
- struct TextSubPrinter textPrinter;
+ struct TextPrinterTemplate textPrinter;
switch (gTasks[taskId].data[0])
{
@@ -5937,14 +5909,14 @@ static void sub_8194950(u8 taskId)
textPrinter.y = 0;
textPrinter.letterSpacing = 2;
textPrinter.lineSpacing = 0;
- textPrinter.fontColor_l = 0;
+ textPrinter.unk = 0;
textPrinter.fgColor = 11;
textPrinter.bgColor = 0;
textPrinter.shadowColor = 13;
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++)
{
CopyDomeTrainerName(gDisplayedStringBattle, gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId);
- if (gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt == gSaveBlock2Ptr->frontier.field_CB2 - 1
+ if (gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt == gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1
&& gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated)
{
if (gUnknown_0860D3F1[i][0] == 0)
@@ -5952,15 +5924,15 @@ static void sub_8194950(u8 taskId)
else
textPrinter.currentX = 3;
- textPrinter.current_text_offset = gDisplayedStringBattle;
+ textPrinter.currentChar = gDisplayedStringBattle;
textPrinter.windowId = gUnknown_0860D3F1[i][0];
textPrinter.currentY = gUnknown_0860D3F1[i][1];
AddTextPrinter(&textPrinter, 0, NULL);
}
if (!gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated)
{
- s32 var = gSaveBlock2Ptr->frontier.field_CB2 - 1;
- sub_81948EC(i, var);
+ s32 roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1;
+ sub_81948EC(i, roundId);
}
}
}
@@ -6098,7 +6070,7 @@ static void sub_8194D68(void)
for (i = 0; i < 2; i++)
{
- s32 playerMonId = gSaveBlock2Ptr->frontier.field_CAA[gUnknown_0203CEF8[i] - 1] - 1;
+ s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1;
s32 count;
for (moveSlot = 0; moveSlot < 4; moveSlot++)
@@ -6124,7 +6096,7 @@ static void sub_8194E44(void)
for (i = 0; i < 2; i++)
{
- s32 playerMonId = gSaveBlock2Ptr->frontier.field_CAA[gUnknown_0203CEF8[i] - 1] - 1;
+ s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1;
u16 item = GetMonData(&gSaveBlock1Ptr->playerParty[playerMonId], MON_DATA_HELD_ITEM, NULL);
SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &item);
}
@@ -6132,7 +6104,7 @@ static void sub_8194E44(void)
static void sub_8194EB4(void)
{
- ReducePlayerPartyToThree();
+ ReducePlayerPartyToSelectedMons();
}
static void sub_8194EC0(void)
@@ -6163,7 +6135,7 @@ static void sub_8194F58(void)
s32 species[3];
s32 monTypesBits;
s32 trainerId;
- s32 monTournamentId;
+ s32 monSetId;
u8 lvlMode;
u16 *statSums;
s32 *statValues;
@@ -6210,20 +6182,20 @@ static void sub_8194F58(void)
// Make sure the mon is valid.
do
{
- monTournamentId = RandomizeFacilityTrainerMonId(trainerId);
+ monSetId = RandomizeFacilityTrainerMonSet(trainerId);
for (k = 0; k < j; k++)
{
- s32 checkingMonId = gSaveBlock2Ptr->frontier.domeMonId[i][k];
- if (checkingMonId == monTournamentId
- || species[0] == gFacilityTrainerMons[monTournamentId].species
- || species[1] == gFacilityTrainerMons[monTournamentId].species
- || gFacilityTrainerMons[checkingMonId].itemTableId == gFacilityTrainerMons[monTournamentId].itemTableId)
+ s32 checkingMonId = gSaveBlock2Ptr->frontier.domeMonIds[i][k];
+ if (checkingMonId == monSetId
+ || species[0] == gFacilityTrainerMons[monSetId].species
+ || species[1] == gFacilityTrainerMons[monSetId].species
+ || gFacilityTrainerMons[checkingMonId].itemTableId == gFacilityTrainerMons[monSetId].itemTableId)
break;
}
} while (k != j);
- gSaveBlock2Ptr->frontier.domeMonId[i][j] = monTournamentId;
- species[j] = gFacilityTrainerMons[monTournamentId].species;
+ gSaveBlock2Ptr->frontier.domeMonIds[i][j] = monSetId;
+ species[j] = gFacilityTrainerMons[monSetId].species;
}
gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated = 0;
gSaveBlock2Ptr->frontier.domeTrainers[i].eliminatedAt = 0;
@@ -6238,10 +6210,10 @@ static void sub_8194F58(void)
ivs = GetDomeTrainerMonIvs(gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId);
for (j = 0; j < 3; j++)
{
- CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species,
+ CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species,
monLevel, ivs,
- gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].evSpread,
- gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].nature,
+ gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].evSpread,
+ gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].nature,
statValues);
statSums[i] += statValues[STAT_ATK];
@@ -6250,8 +6222,8 @@ static void sub_8194F58(void)
statSums[i] += statValues[STAT_SPDEF];
statSums[i] += statValues[STAT_SPEED];
statSums[i] += statValues[STAT_HP];
- monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species].type1];
- monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species].type2];
+ monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type1];
+ monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type2];
}
// Because GF hates temporary vars, trainerId acts like monTypesCount here.
@@ -6367,11 +6339,11 @@ static void DecideRoundWinners(u8 roundId)
{
for (monId2 = 0; monId2 < 3; monId2++)
{
- points1 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId1][monId1]].moves[moveSlot],
- gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId2][monId2]].species, 2);
+ points1 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId1][monId1]].moves[moveSlot],
+ gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId2][monId2]].species, 2);
}
}
- species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId1][monId1]].species;
+ species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId1][monId1]].species;
points1 += ( gBaseStats[species].baseHP
+ gBaseStats[species].baseAttack
+ gBaseStats[species].baseDefense
@@ -6390,11 +6362,11 @@ static void DecideRoundWinners(u8 roundId)
{
for (monId2 = 0; monId2 < 3; monId2++)
{
- points2 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId2][monId1]].moves[moveSlot],
- gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId1][monId2]].species, 2);
+ points2 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId2][monId1]].moves[moveSlot],
+ gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId1][monId2]].species, 2);
}
}
- species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId2][monId1]].species;
+ species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId2][monId1]].species;
points2 += ( gBaseStats[species].baseHP
+ gBaseStats[species].baseAttack
+ gBaseStats[species].baseDefense
@@ -6439,7 +6411,7 @@ static void DecideRoundWinners(u8 roundId)
static void CopyDomeTrainerName(u8 *dst, u16 trainerId)
{
s32 i = 0;
- GetFacilityEnemyMonLevel(); // Unused return value.
+ SetFacilityPtrsGetLevel();
if (trainerId == TRAINER_FRONTIER_BRAIN)
{
@@ -6454,7 +6426,7 @@ static void CopyDomeTrainerName(u8 *dst, u16 trainerId)
}
else if (trainerId < 300)
{
- for (i = 0; i < FRONTIER_TRAINER_NAME_LENGTH; i++)
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
dst[i] = gFacilityTrainers[trainerId].trainerName[i];
}
dst[i] = EOS;
@@ -6475,7 +6447,7 @@ static void CopyDomeBrainTrainerName(u8 *dst)
{
s32 i;
- for (i = 0; i < FRONTIER_TRAINER_NAME_LENGTH; i++)
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
dst[i] = gTrainers[TRAINER_TUCKER].trainerName[i];
dst[i] = EOS;
}
diff --git a/src/battle_factory.c b/src/battle_factory.c
index 2c8ab1052..1d7fbafc9 100644
--- a/src/battle_factory.c
+++ b/src/battle_factory.c
@@ -1,4114 +1,861 @@
#include "global.h"
#include "battle_factory.h"
-#include "sprite.h"
+#include "battle_factory_screen.h"
#include "event_data.h"
+#include "battle_setup.h"
#include "overworld.h"
-#include "random.h"
+#include "frontier_util.h"
#include "battle_tower.h"
-#include "text.h"
-#include "palette.h"
-#include "task.h"
-#include "main.h"
-#include "malloc.h"
-#include "bg.h"
-#include "gpu_regs.h"
-#include "string_util.h"
-#include "international_string_util.h"
-#include "window.h"
-#include "data2.h"
-#include "decompress.h"
-#include "pokemon_summary_screen.h"
-#include "sound.h"
-#include "pokedex.h"
-#include "util.h"
-#include "trainer_pokemon_sprites.h"
+#include "random.h"
+#include "constants/species.h"
+#include "constants/battle_ai.h"
#include "constants/battle_frontier.h"
-#include "constants/songs.h"
-#include "constants/rgb.h"
-
-// Select_ refers to the first Pokemon selection screen where you choose 3 Pokemon.
-// Swap_ refers to the consecutive selection screen where you can keep your Pokemon or swap one with beaten trainer's.
-
-#define MENU_SUMMARY 0
-#define MENU_RENT 1
-#define MENU_DESELECT 1
-#define MENU_OTHERS 2
-#define MENU_OPTIONS_COUNT 3
-
-#define SELECTABLE_MONS_COUNT 6
+#include "constants/trainers.h"
+#include "constants/moves.h"
-#define TAG_PAL_BALL_GREY 0x64
-#define TAG_PAL_BALL_SELECTED 0x65
-#define TAG_PAL_66 0x66
-#define TAG_PAL_67 0x67
-
-#define TAG_TILE_64 0x64
-#define TAG_TILE_65 0x65
-#define TAG_TILE_66 0x66
-#define TAG_TILE_67 0x67
-#define TAG_TILE_68 0x68
-#define TAG_TILE_69 0x69
-#define TAG_TILE_6A 0x6A
-#define TAG_TILE_6B 0x6B
-#define TAG_TILE_6C 0x6C
-#define TAG_TILE_6D 0x6D
-
-struct FactorySelecteableMon
-{
- u16 monSetId;
- u16 spriteId;
- u8 selectedId; // 0 - not selected, 1 - first pokemon, 2 - second pokemon, 3 - third pokemon
- struct Pokemon monData;
-};
-
-struct UnkFactoryStruct
-{
- u8 field0;
- u8 field1;
-};
-
-struct FactorySelectMonsStruct
-{
- u8 menuCursorPos;
- u8 menuCursor1SpriteId;
- u8 menuCursor2SpriteId;
- u8 cursorPos;
- u8 cursorSpriteId;
- u8 selectingMonsState;
- bool8 fromSummaryScreen;
- u8 yesNoCursorPos;
- u8 unused8;
- struct FactorySelecteableMon mons[SELECTABLE_MONS_COUNT];
- struct UnkFactoryStruct unk294[3];
- bool8 unk2A0;
- u8 fadeSpeciesNameTaskId;
- bool8 unk2A2;
- u16 unk2A4;
- bool8 unk2A6;
- u8 unk2A7;
- u8 unk2A8;
- u8 unk2A9;
-};
-
-// 'Action' refers to the 3 Selectable mons, Cancel, Pknm for swap windows.
-#define ACTIONS_PLAYER_SCREEN 0
-#define ACTIONS_ENEMY_SCREEN 1
-
-struct SwapActionIdAndFunc
-{
- u8 id;
- void (*func)(u8 taskId);
-};
-
-struct FactorySwapMonsStruct
-{
- u8 menuCursorPos;
- u8 menuCursor1SpriteId;
- u8 menuCursor2SpriteId;
- u8 cursorPos;
- u8 cursorSpriteId;
- u8 ballSpriteIds[3];
- u8 unk8[2][3];
- u8 unkE[2][2];
- u8 playerMonId;
- u8 enemyMonId;
- bool8 inEnemyScreen;
- bool8 fromSummaryScreen;
- u8 yesNoCursorPos;
- u8 actionsCount;
- const struct SwapActionIdAndFunc *actionsData;
- u8 unused1C[4];
- bool8 monSwapped;
- u8 fadeSpeciesNameTaskId;
- bool8 unk22;
- u16 unk24;
- bool8 unk26;
- u8 unk27;
- u8 unk28;
- u8 unk29;
- struct UnkFactoryStruct unk2C;
- bool8 unk30;
-};
-
-extern u8 (*gUnknown_030062E8)(void);
-extern u8 gUnknown_0203CF20;
-
-extern const u16 gBattleFrontierHeldItems[];
extern const struct FacilityMon gBattleFrontierMons[];
extern const struct FacilityMon gSlateportBattleTentMons[];
extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
-extern const u8 gUnknown_085B18AC[];
+extern const u16 gBattleFrontierHeldItems[];
-extern void SetMonMoveAvoidReturn(struct Pokemon *mon, u16 move, u8 moveSlot);
-extern u8 sub_81A6F70(u8 battleMode, u8 lvlMode);
-extern u8 sub_81A6CA8(u8 arg0, u8 arg1);
+// IWRAM bss
+static IWRAM_DATA bool8 gUnknown_03001288;
// This file's functions.
-static void sub_819A44C(struct Sprite *sprite);
-static void CB2_InitSelectScreen(void);
-static void Select_SetWinRegs(s16 mWin0H, s16 nWin0H, s16 mWin0V, s16 nWin0V);
-static void Select_InitMonsData(void);
-static void Select_InitAllSprites(void);
-static void Select_ShowSummaryMonSprite(void);
-static void Select_PrintSelectMonString(void);
-static void Select_PrintMonSpecies(void);
-static void Select_PrintMonCategory(void);
-static void Select_PrintRentalPkmnString(void);
-static void Select_CopyMonsToPlayerParty(void);
-static void sub_819C4B4(void);
-static void Select_ShowYesNoOptions(void);
-static void sub_819C568(void);
-static void Select_ShowMenuOptions(void);
-static void Select_PrintMenuOptions(void);
-static void Select_PrintYesNoOptions(void);
-static void Task_SelectFadeSpeciesName(u8 taskId);
-static void sub_819C1D0(u8 taskId);
-static void Task_HandleSelectionScreenChooseMons(u8 taskId);
-static void Task_HandleSelectionScreenMenu(u8 taskId);
-static void CreateFrontierFactorySelectableMons(u8 firstMonId);
-static void CreateTentFactorySelectableMons(u8 firstMonId);
-static void Select_SetBallSpritePaletteNum(u8 id);
-static void sub_819F444(struct UnkFactoryStruct arg0, bool8 *arg1);
-static void sub_819B958(u8 windowId);
-static void sub_819F2B4(u8 *arg0, bool8 *arg1, bool8 swapScreen);
-static void sub_819F3F8(struct UnkFactoryStruct arg0, bool8 *arg1, bool8 swapScreen);
-static u8 Select_RunMenuOptionFunc(void);
-static u8 sub_819BC9C(void);
-static u8 Select_OptionSummary(void);
-static u8 Select_OptionOthers(void);
-static u8 Select_OptionRentDeselect(void);
-static bool32 Select_AreSpeciesValid(u16 monSetId);
-static void Swap_DestroyAllSprites(void);
-static void Swap_ShowYesNoOptions(void);
-static void sub_819E8EC(void);
-static void sub_819EAC0(void);
-static void Swap_UpdateYesNoCursorPosition(s8 direction);
-static void Swap_UpdateMenuCursorPosition(s8 direction);
-static void sub_819EA64(u8 windowId);
-static void sub_819D770(u8 taskId);
-static void Task_HandleSwapScreenChooseMons(u8 taskId);
-static void sub_819D588(u8 taskId);
-static void sub_819F7B4(u8 taskId);
-static void Swap_PrintOnInfoWindow(const u8 *str);
-static void Swap_ShowMenuOptions(void);
-static void Swap_PrintMenuOptions(void);
-static void Swap_PrintYesNoOptions(void);
-static void Swap_PrintMonSpecies(void);
-static void Swap_PrintMonSpecies2(void);
-static void Swap_PrintMonSpecies3(void);
-static void Swap_PrintMonCategory(void);
-static void Swap_InitAllSprites(void);
-static void Swap_PrintPkmnSwap(void);
-static void sub_819EADC(void);
-static void sub_819EAF8(void);
-static void CB2_InitSwapScreen(void);
-static void Swap_ShowSummaryMonSprite(void);
-static void Swap_UpdateActionCursorPosition(s8 direction);
-static void Swap_UpdateBallCursorPosition(s8 direction);
-static void Swap_RunMenuOptionFunc(u8 taskId);
-static void sub_819F0CC(u8 taskId);
-static void sub_819F114(u8 taskId);
-static void sub_819F134(u8 taskId);
-static void Swap_RunActionFunc(u8 taskId);
-static void sub_819F69C(u8 taskId);
-static void Task_SwapCantHaveSameMons(u8 taskId);
-static void Swap_ShowMonSprite(void);
-static void Swap_PrintActionStrings(void);
-static void Swap_PrintActionStrings2(void);
-static void Swap_PrintOneActionString(u8 which);
-static void Swap_InitActions(u8 id);
-static void sub_819E838(u8 arg0);
-static bool8 Swap_AlreadyHasSameSpecies(u8 monId);
-static void sub_819F600(struct Sprite *sprite);
-static void Swap_ActionMon(u8 taskId);
-static void Swap_ActionCancel(u8 taskId);
-static void Swap_ActionPkmnForSwap(u8 taskId);
-
-// Ewram variables
-static EWRAM_DATA u8 *sSelectMenuTilesetBuffer = NULL;
-static EWRAM_DATA u8 *sSelectMonCardBgTilesetBuffer = NULL;
-static EWRAM_DATA u8 *sSelectMenuTilemapBuffer = NULL;
-static EWRAM_DATA u8 *sSelectMonCardBgTilemapBuffer = NULL;
-static EWRAM_DATA struct Pokemon *sFactorySelectMons = NULL;
-static EWRAM_DATA u8 *sSwapMenuTilesetBuffer = NULL;
-static EWRAM_DATA u8 *sSwapMonCardBgTilesetBuffer = NULL;
-static EWRAM_DATA u8 *sSwapMenuTilemapBuffer = NULL;
-static EWRAM_DATA u8 *sSwapMonCardBgTilemapBuffer = NULL;
-
-// IWRAM bss
-static IWRAM_DATA struct FactorySelectMonsStruct *sFactorySelectScreen;
-static IWRAM_DATA void (*sSwap_CurrentTableFunc)(u8 taskId);
-static IWRAM_DATA struct FactorySwapMonsStruct *sFactorySwapScreen;
+static void sub_81A5E94(void);
+static void sub_81A5FA8(void);
+static void sub_81A6054(void);
+static void sub_81A613C(void);
+static void nullsub_75(void);
+static void nullsub_123(void);
+static void sub_81A6188(void);
+static void sub_81A6198(void);
+static void sub_81A61A4(void);
+static void sub_81A63CC(void);
+static void sub_81A64C4(void);
+static void sub_81A63B8(void);
+static void sub_81A61B0(void);
+static void sub_81A67EC(void);
+static void sub_81A6A08(void);
+static void sub_81A6AEC(void);
+static void sub_81A6C1C(void);
+static u16 GetMonSetId(u8 lvlMode, u8 challengeNum, bool8 arg2);
+static u8 GetStyleForMove(u16 move);
// Const rom data.
-static const u16 gUnknown_0860F13C[] = INCBIN_U16("graphics/unknown/unknown_60F13C.gbapal");
-static const u16 gUnknown_0860F15C[] = INCBIN_U16("graphics/unknown/unknown_60F15C.gbapal");
-static const u16 gUnknown_0860F17C[] = INCBIN_U16("graphics/unknown/unknown_60F17C.gbapal");
-static const u8 gUnknown_0860F1BC[] = INCBIN_U8("graphics/unknown/unknown_60F1BC.4bpp");
-static const u8 gUnknown_0860F3BC[] = INCBIN_U8("graphics/unknown/unknown_60F3BC.4bpp");
-static const u8 gUnknown_0860F43C[] = INCBIN_U8("graphics/unknown/unknown_60F43C.4bpp");
-static const u8 gUnknown_0860F53C[] = INCBIN_U8("graphics/unknown/unknown_60F53C.4bpp");
-static const u8 gUnknown_0860F63C[] = INCBIN_U8("graphics/unknown/unknown_60F63C.4bpp");
-static const u8 gUnknown_0860F6BC[] = INCBIN_U8("graphics/unknown/unknown_60F6BC.4bpp");
-static const u8 gUnknown_0860F7BC[] = INCBIN_U8("graphics/unknown/unknown_60F7BC.4bpp");
-static const u8 gUnknown_0860F83C[] = INCBIN_U8("graphics/unknown/unknown_60F83C.4bpp");
-static const u8 gUnknown_0860F93C[] = INCBIN_U8("graphics/unknown/unknown_60F93C.4bpp");
-static const u8 gUnknown_0860FA3C[] = INCBIN_U8("graphics/unknown/unknown_60FA3C.4bpp");
-static const u8 gUnknown_0861023C[] = INCBIN_U8("graphics/unknown/unknown_61023C.bin");
-static const u8 gUnknown_0861033C[] = INCBIN_U8("graphics/unknown/unknown_61033C.4bpp");
-static const u16 gUnknown_0861039C[] = INCBIN_U16("graphics/unknown/unknown_61039C.gbapal");
-
-static const struct SpriteSheet gUnknown_086103BC[] =
-{
- {gUnknown_0860F3BC, sizeof(gUnknown_0860F3BC), TAG_TILE_65},
- {gUnknown_0860F43C, sizeof(gUnknown_0860F43C), TAG_TILE_66},
- {gUnknown_0860F53C, sizeof(gUnknown_0860F53C), TAG_TILE_67},
- {gUnknown_0860FA3C, sizeof(gUnknown_0860FA3C), TAG_TILE_6D},
- {},
-};
-
-static const struct CompressedSpriteSheet gUnknown_086103E4[] =
-{
- {gUnknown_085B18AC, 0x800, TAG_TILE_64},
- {},
-};
-
-static const struct SpritePalette gUnknown_086103F4[] =
-{
- {gUnknown_0860F13C, TAG_PAL_BALL_GREY},
- {gUnknown_0860F15C, TAG_PAL_BALL_SELECTED},
- {gUnknown_0860F17C, TAG_PAL_66},
- {gUnknown_0861039C, TAG_PAL_67},
- {},
-};
-
-u8 static (* const sSelect_MenuOptionFuncs[])(void) =
-{
- [MENU_SUMMARY] = Select_OptionSummary,
- [MENU_RENT] /*Or Deselect*/ = Select_OptionRentDeselect,
- [MENU_OTHERS] = Select_OptionOthers
-};
-
-static const struct BgTemplate sSelect_BgTemplates[] =
-{
- {
- .bg = 0,
- .charBaseIndex = 0,
- .mapBaseIndex = 24,
- .screenSize = 0,
- .paletteMode = 0,
- .priority = 0,
- .baseTile = 0
- },
- {
- .bg = 1,
- .charBaseIndex = 1,
- .mapBaseIndex = 25,
- .screenSize = 0,
- .paletteMode = 0,
- .priority = 3,
- .baseTile = 0
- },
- {
- .bg = 3,
- .charBaseIndex = 2,
- .mapBaseIndex = 27,
- .screenSize = 0,
- .paletteMode = 0,
- .priority = 2,
- .baseTile = 0
- },
-};
-
-static const struct WindowTemplate sSelect_WindowTemplates[] =
-{
- {
- .priority = 0,
- .tilemapLeft = 0,
- .tilemapTop = 2,
- .width = 12,
- .height = 2,
- .paletteNum = 15,
- .baseBlock = 0x0001,
- },
- {
- .priority = 0,
- .tilemapLeft = 19,
- .tilemapTop = 2,
- .width = 11,
- .height = 2,
- .paletteNum = 14,
- .baseBlock = 0x0019,
- },
- {
- .priority = 0,
- .tilemapLeft = 0,
- .tilemapTop = 15,
- .width = 20,
- .height = 3,
- .paletteNum = 15,
- .baseBlock = 0x002f,
- },
- {
- .priority = 0,
- .tilemapLeft = 22,
- .tilemapTop = 14,
- .width = 8,
- .height = 6,
- .paletteNum = 15,
- .baseBlock = 0x006b,
- },
- {
- .priority = 0,
- .tilemapLeft = 22,
- .tilemapTop = 14,
- .width = 8,
- .height = 4,
- .paletteNum = 15,
- .baseBlock = 0x009b,
- },
- {
- .priority = 0,
- .tilemapLeft = 15,
- .tilemapTop = 0,
- .width = 15,
- .height = 2,
- .paletteNum = 15,
- .baseBlock = 0x00bb,
- },
- DUMMY_WIN_TEMPLATE,
-};
-
-static const u16 gUnknown_0861046C[] = INCBIN_U16("graphics/unknown/unknown_61046C.gbapal");
-
-static const u8 gUnknown_08610476[] = {0x00, 0x02, 0x00};
-static const u8 gUnknown_08610479[] = {0x00, 0x04, 0x00};
-
-static const struct OamData gUnknown_0861047C =
-{
- .y = 0,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = 0,
- .x = 0,
- .matrixNum = 0,
- .size = 2,
- .tileNum = 0,
- .priority = 3,
- .paletteNum = 0,
- .affineParam = 0,
-};
-
-static const struct OamData gUnknown_08610484 =
-{
- .y = 0,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = 0,
- .x = 0,
- .matrixNum = 0,
- .size = 1,
- .tileNum = 0,
- .priority = 3,
- .paletteNum = 0,
- .affineParam = 0,
-};
-
-static const struct OamData gUnknown_0861048C =
-{
- .y = 0,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = 1,
- .x = 0,
- .matrixNum = 0,
- .size = 2,
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
- .affineParam = 0,
-};
-
-static const struct OamData gUnknown_08610494 =
-{
- .y = 0,
- .affineMode = 3,
- .objMode = 1,
- .mosaic = 0,
- .bpp = 0,
- .shape = 0,
- .x = 0,
- .matrixNum = 0,
- .size = 3,
- .tileNum = 0,
- .priority = 0,
- .paletteNum = 0,
- .affineParam = 1,
-};
-
-static const union AnimCmd gUnknown_0861049C[] =
-{
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_END,
-};
-
-static const union AnimCmd gUnknown_086104A4[] =
-{
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_END,
-};
-
-static const union AnimCmd gUnknown_086104AC[] =
-{
- ANIMCMD_FRAME(0, 30),
- ANIMCMD_END,
-};
-
-static const union AnimCmd gUnknown_086104B4[] =
-{
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(0, 32),
- ANIMCMD_FRAME(16, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(32, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(16, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(32, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_END,
-};
-
-static const union AnimCmd * const gUnknown_086104FC[] =
-{
- gUnknown_0861049C,
-};
-
-static const union AnimCmd * const gUnknown_08610500[] =
-{
- gUnknown_086104A4,
-};
-
-static const union AnimCmd * const gUnknown_08610504[] =
-{
- gUnknown_086104AC,
- gUnknown_086104B4,
-};
-
-static const union AffineAnimCmd gUnknown_0861050C[] =
-{
- AFFINEANIMCMD_FRAME(5, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(16, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(32, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(64, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(128, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(256, 5, 0, 0),
- AFFINEANIMCMD_END,
-};
-
-static const union AffineAnimCmd gUnknown_0861056C[] =
-{
- AFFINEANIMCMD_FRAME(128, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(64, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(32, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(16, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(5, 5, 0, 0),
- AFFINEANIMCMD_END,
-};
-
-static const union AffineAnimCmd gUnknown_086105BC[] =
-{
- AFFINEANIMCMD_FRAME(256, 256, 0, 0),
- AFFINEANIMCMD_END,
-};
-
-static const union AffineAnimCmd * const gUnknown_086105CC[] =
-{
- gUnknown_0861050C,
- gUnknown_0861056C,
- gUnknown_086105BC,
-};
-
-static const struct SpriteTemplate gUnknown_086105D8 =
-{
- .tileTag = TAG_TILE_64,
- .paletteTag = TAG_PAL_BALL_GREY,
- .oam = &gUnknown_0861047C,
- .anims = gUnknown_08610504,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_819A44C
-};
-
-static const struct SpriteTemplate gUnknown_086105F0 =
-{
- .tileTag = TAG_TILE_65,
- .paletteTag = TAG_PAL_66,
- .oam = &gUnknown_08610484,
- .anims = gUnknown_086104FC,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCallbackDummy
-};
-
-static const struct SpriteTemplate gUnknown_08610608 =
-{
- .tileTag = TAG_TILE_66,
- .paletteTag = TAG_PAL_66,
- .oam = &gUnknown_0861048C,
- .anims = gUnknown_086104FC,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCallbackDummy
-};
-
-static const struct SpriteTemplate gUnknown_08610620 =
-{
- .tileTag = TAG_TILE_67,
- .paletteTag = TAG_PAL_66,
- .oam = &gUnknown_0861048C,
- .anims = gUnknown_086104FC,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCallbackDummy
-};
-
-static const struct SpriteTemplate gUnknown_08610638 =
-{
- .tileTag = TAG_TILE_6D,
- .paletteTag = TAG_PAL_67,
- .oam = &gUnknown_08610494,
- .anims = gUnknown_08610500,
- .images = NULL,
- .affineAnims = gUnknown_086105CC,
- .callback = SpriteCallbackDummy
-};
-
-static const struct SpriteSheet gUnknown_08610650[] =
-{
- {gUnknown_0860F3BC, sizeof(gUnknown_0860F3BC), TAG_TILE_65},
- {gUnknown_0860F43C, sizeof(gUnknown_0860F43C), TAG_TILE_66},
- {gUnknown_0860F53C, sizeof(gUnknown_0860F53C), TAG_TILE_67},
- {gUnknown_0860F63C, sizeof(gUnknown_0860F63C), TAG_TILE_68},
- {gUnknown_0860F6BC, sizeof(gUnknown_0860F6BC), TAG_TILE_69},
- {gUnknown_0860F7BC, 0x100, TAG_TILE_6A},
- {gUnknown_0860F83C, sizeof(gUnknown_0860F83C), TAG_TILE_6B},
- {gUnknown_0860F93C, sizeof(gUnknown_0860F93C), TAG_TILE_6C},
- {gUnknown_0860FA3C, sizeof(gUnknown_0860FA3C), TAG_TILE_6D},
- {},
-};
-
-static const struct CompressedSpriteSheet gUnknown_086106A0[] =
-{
- {gUnknown_085B18AC, 0x800, TAG_TILE_64},
- {},
-};
-
-static const struct SpritePalette gUnknown_086106B0[] =
-{
- {gUnknown_0860F13C, TAG_PAL_BALL_GREY},
- {gUnknown_0860F15C, TAG_PAL_BALL_SELECTED},
- {gUnknown_0860F17C, TAG_PAL_66},
- {gUnknown_0861039C, TAG_PAL_67},
- {},
-};
-
-static const struct OamData gUnknown_086106D8 =
-{
- .y = 0,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = 0,
- .x = 0,
- .matrixNum = 0,
- .size = 2,
- .tileNum = 0,
- .priority = 3,
- .paletteNum = 0,
- .affineParam = 0,
-};
-
-static const struct OamData gUnknown_086106E0 =
-{
- .y = 0,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = 0,
- .x = 0,
- .matrixNum = 0,
- .size = 1,
- .tileNum = 0,
- .priority = 3,
- .paletteNum = 0,
- .affineParam = 0,
-};
-
-static const struct OamData gUnknown_086106E8 =
-{
- .y = 0,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = 1,
- .x = 0,
- .matrixNum = 0,
- .size = 2,
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
- .affineParam = 0,
-};
-
-static const struct OamData gUnknown_086106F0 =
-{
- .y = 0,
- .affineMode = 3,
- .objMode = 1,
- .mosaic = 0,
- .bpp = 0,
- .shape = 0,
- .x = 0,
- .matrixNum = 0,
- .size = 3,
- .tileNum = 0,
- .priority = 0,
- .paletteNum = 0,
- .affineParam = 1,
-};
-
-static const union AnimCmd gUnknown_086106F8[] =
-{
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_END,
-};
-
-static const union AnimCmd gUnknown_08610700[] =
-{
- ANIMCMD_FRAME(0, 1),
- ANIMCMD_END,
-};
+static const u8 sRequiredMoveCounts[] = {3, 3, 3, 2, 2, 2, 2};
-static const union AnimCmd gUnknown_08610708[] =
+static const u16 sMoves_TotalPreparation[] =
{
- ANIMCMD_FRAME(0, 30),
- ANIMCMD_END,
+ MOVE_SWORDS_DANCE, MOVE_GROWTH, MOVE_MEDITATE, MOVE_AGILITY, MOVE_DOUBLE_TEAM, MOVE_HARDEN,
+ MOVE_MINIMIZE, MOVE_WITHDRAW, MOVE_DEFENSE_CURL, MOVE_BARRIER, MOVE_FOCUS_ENERGY, MOVE_AMNESIA,
+ MOVE_ACID_ARMOR, MOVE_SHARPEN, MOVE_CONVERSION, MOVE_CONVERSION_2, MOVE_BELLY_DRUM, MOVE_PSYCH_UP,
+ MOVE_CHARGE, MOVE_SNATCH, MOVE_TAIL_GLOW, MOVE_COSMIC_POWER, MOVE_IRON_DEFENSE, MOVE_HOWL, MOVE_BULK_UP, MOVE_CALM_MIND, MOVE_DRAGON_DANCE,
+ 0
};
-static const union AnimCmd gUnknown_08610710[] =
+static const u16 sMoves_ImpossibleToPredict[] =
{
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(16, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(32, 4),
- ANIMCMD_FRAME(0, 4),
- ANIMCMD_FRAME(0, 32),
- ANIMCMD_FRAME(16, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(32, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(16, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_FRAME(32, 8),
- ANIMCMD_FRAME(0, 8),
- ANIMCMD_END,
+ MOVE_MIMIC, MOVE_METRONOME, MOVE_MIRROR_MOVE, MOVE_TRANSFORM, MOVE_SUBSTITUTE, MOVE_SKETCH, MOVE_CURSE,
+ MOVE_PRESENT, MOVE_FOLLOW_ME, MOVE_TRICK, MOVE_ROLE_PLAY, MOVE_ASSIST, MOVE_SKILL_SWAP, MOVE_CAMOUFLAGE,
+ 0
};
-static const union AnimCmd * const gUnknown_08610758[] =
+static const u16 sMoves_WeakeningTheFoe[] =
{
- gUnknown_086106F8,
+ MOVE_SAND_ATTACK, MOVE_TAIL_WHIP, MOVE_LEER, MOVE_GROWL, MOVE_STRING_SHOT, MOVE_SCREECH, MOVE_SMOKESCREEN, MOVE_KINESIS,
+ MOVE_FLASH, MOVE_COTTON_SPORE, MOVE_SPITE, MOVE_SCARY_FACE, MOVE_CHARM, MOVE_KNOCK_OFF, MOVE_SWEET_SCENT, MOVE_FEATHER_DANCE,
+ MOVE_FAKE_TEARS, MOVE_METAL_SOUND, MOVE_TICKLE,
+ 0
};
-static const union AnimCmd * const gUnknown_0861075C[] =
+static const u16 sMoves_HighRiskHighReturn[] =
{
- gUnknown_08610700,
+ MOVE_GUILLOTINE, MOVE_HORN_DRILL, MOVE_DOUBLE_EDGE, MOVE_HYPER_BEAM, MOVE_COUNTER, MOVE_FISSURE,
+ MOVE_BIDE, MOVE_SELF_DESTRUCT, MOVE_SKY_ATTACK, MOVE_EXPLOSION, MOVE_FLAIL, MOVE_REVERSAL, MOVE_DESTINY_BOND,
+ MOVE_PERISH_SONG, MOVE_PAIN_SPLIT, MOVE_MIRROR_COAT, MOVE_MEMENTO, MOVE_GRUDGE, MOVE_FACADE, MOVE_FOCUS_PUNCH,
+ MOVE_BLAST_BURN, MOVE_HYDRO_CANNON, MOVE_OVERHEAT, MOVE_FRENZY_PLANT, MOVE_PSYCHO_BOOST, MOVE_VOLT_TACKLE,
+ 0
};
-static const union AnimCmd * const gUnknown_08610760[] =
+static const u16 sMoves_Endurance[] =
{
- gUnknown_08610708,
- gUnknown_08610710,
+ MOVE_MIST, MOVE_RECOVER, MOVE_LIGHT_SCREEN, MOVE_HAZE, MOVE_REFLECT, MOVE_SOFT_BOILED, MOVE_REST, MOVE_PROTECT,
+ MOVE_DETECT, MOVE_ENDURE, MOVE_MILK_DRINK, MOVE_HEAL_BELL, MOVE_SAFEGUARD, MOVE_BATON_PASS, MOVE_MORNING_SUN,
+ MOVE_SYNTHESIS, MOVE_MOONLIGHT, MOVE_SWALLOW, MOVE_WISH, MOVE_INGRAIN, MOVE_MAGIC_COAT, MOVE_RECYCLE, MOVE_REFRESH,
+ MOVE_MUD_SPORT, MOVE_SLACK_OFF, MOVE_AROMATHERAPY, MOVE_WATER_SPORT,
+ 0
};
-static const union AffineAnimCmd gUnknown_08610768[] =
+static const u16 sMoves_SlowAndSteady[] =
{
- AFFINEANIMCMD_FRAME(5, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(16, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(32, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(64, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(128, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(256, 5, 0, 0),
- AFFINEANIMCMD_END,
+ MOVE_SING, MOVE_SUPERSONIC, MOVE_DISABLE, MOVE_LEECH_SEED, MOVE_POISON_POWDER, MOVE_STUN_SPORE, MOVE_SLEEP_POWDER,
+ MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_HYPNOSIS, MOVE_CONFUSE_RAY, MOVE_GLARE, MOVE_POISON_GAS, MOVE_LOVELY_KISS, MOVE_SPORE,
+ MOVE_SPIDER_WEB, MOVE_SWEET_KISS, MOVE_SPIKES, MOVE_SWAGGER, MOVE_MEAN_LOOK, MOVE_ATTRACT, MOVE_ENCORE, MOVE_TORMENT,
+ MOVE_FLATTER, MOVE_WILL_O_WISP, MOVE_TAUNT, MOVE_YAWN, MOVE_IMPRISON, MOVE_SNATCH, MOVE_TEETER_DANCE, MOVE_GRASS_WHISTLE, MOVE_BLOCK,
+ 0
};
-static const union AffineAnimCmd gUnknown_086107C8[] =
+static const u16 sMoves_DependsOnTheBattlesFlow[] =
{
- AFFINEANIMCMD_FRAME(128, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(64, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(32, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(16, 5, 0, 0),
- AFFINEANIMCMD_FRAME(0, 0, 0, 1),
- AFFINEANIMCMD_FRAME(5, 5, 0, 0),
- AFFINEANIMCMD_END,
+ MOVE_SANDSTORM, MOVE_RAIN_DANCE, MOVE_SUNNY_DAY, MOVE_HAIL, MOVE_WEATHER_BALL,
+ 0
};
-static const union AffineAnimCmd gUnknown_08610818[] =
+static const u16 *const sMoveStyles[] =
{
- AFFINEANIMCMD_FRAME(256, 256, 0, 0),
- AFFINEANIMCMD_END,
+ sMoves_TotalPreparation,
+ sMoves_SlowAndSteady,
+ sMoves_Endurance,
+ sMoves_HighRiskHighReturn,
+ sMoves_WeakeningTheFoe,
+ sMoves_ImpossibleToPredict,
+ sMoves_DependsOnTheBattlesFlow,
};
-static const union AffineAnimCmd * const gUnknown_08610828[] =
+static void (* const gUnknown_08612120[])(void) =
{
- gUnknown_08610768,
- gUnknown_086107C8,
- gUnknown_08610818,
+ sub_81A5E94,
+ sub_81A5FA8,
+ sub_81A6054,
+ sub_81A613C,
+ nullsub_75,
+ nullsub_123,
+ sub_81A6188,
+ sub_81A6198,
+ sub_81A61A4,
+ sub_81A63CC,
+ sub_81A64C4,
+ sub_81A63B8,
+ sub_81A61B0,
+ sub_81A67EC,
+ sub_81A6A08,
+ sub_81A6AEC,
+ sub_81A6C1C,
};
-static const struct SpriteTemplate gUnknown_08610834 =
+static const u32 gUnknown_08612164[][2] =
{
- .tileTag = TAG_TILE_64,
- .paletteTag = TAG_PAL_BALL_GREY,
- .oam = &gUnknown_086106D8,
- .anims = gUnknown_08610760,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_819A44C
+ {0x100, 0x200},
+ {0x1000000, 0x2000000},
};
-static const struct SpriteTemplate gUnknown_0861084C =
+static const u32 gUnknown_08612174[][2] =
{
- .tileTag = TAG_TILE_65,
- .paletteTag = TAG_PAL_66,
- .oam = &gUnknown_086106E0,
- .anims = gUnknown_08610758,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCallbackDummy
+ {0xfffffeff, 0xfffffdff},
+ {0xfeffffff, 0xfdffffff},
};
-static const struct SpriteTemplate gUnknown_08610864 =
+static const u8 sFixedIVTable[][2] =
{
- .tileTag = TAG_TILE_66,
- .paletteTag = TAG_PAL_66,
- .oam = &gUnknown_086106E8,
- .anims = gUnknown_08610758,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCallbackDummy
+ {3, 6},
+ {6, 9},
+ {9, 12},
+ {12, 15},
+ {15, 18},
+ {21, 31},
+ {31, 31},
+ {31, 31},
};
-static const struct SpriteTemplate gUnknown_0861087C =
+static const u16 sMonsToChooseFrom[][2] =
{
- .tileTag = TAG_TILE_67,
- .paletteTag = TAG_PAL_66,
- .oam = &gUnknown_086106E8,
- .anims = gUnknown_08610758,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCallbackDummy
+ {0x006e, 0x00c7},
+ {0x00a2, 0x010a},
+ {0x010b, 0x0173},
+ {0x0174, 0x01d3},
+ {0x01d4, 0x0233},
+ {0x0234, 0x0293},
+ {0x0294, 0x02f3},
+ {0x0174, 0x0351},
+ {0x0174, 0x01d3},
+ {0x01d4, 0x0233},
+ {0x0234, 0x0293},
+ {0x0294, 0x02f3},
+ {0x0174, 0x0371},
+ {0x0174, 0x0371},
+ {0x0174, 0x0371},
+ {0x0174, 0x0371},
};
-static const struct SpriteTemplate gUnknown_08610894 =
-{
- .tileTag = TAG_TILE_6D,
- .paletteTag = TAG_PAL_67,
- .oam = &gUnknown_086106F0,
- .anims = gUnknown_0861075C,
- .images = NULL,
- .affineAnims = gUnknown_08610828,
- .callback = SpriteCallbackDummy
-};
-
-void static (* const sSwap_MenuOptionFuncs[])(u8 taskId) =
-{
- sub_819F114,
- sub_819F0CC,
- sub_819F134,
-};
-
-static const struct BgTemplate sSwap_BgTemplates[4] =
-{
- {
- .bg = 0,
- .charBaseIndex = 0,
- .mapBaseIndex = 24,
- .screenSize = 0,
- .paletteMode = 0,
- .priority = 1,
- .baseTile = 0
- },
- {
- .bg = 1,
- .charBaseIndex = 1,
- .mapBaseIndex = 25,
- .screenSize = 0,
- .paletteMode = 0,
- .priority = 3,
- .baseTile = 0
- },
- {
- .bg = 2,
- .charBaseIndex = 2,
- .mapBaseIndex = 26,
- .screenSize = 0,
- .paletteMode = 0,
- .priority = 0,
- .baseTile = 0
- },
- {
- .bg = 3,
- .charBaseIndex = 2,
- .mapBaseIndex = 27,
- .screenSize = 0,
- .paletteMode = 0,
- .priority = 2,
- .baseTile = 0
- },
-};
-
-static const struct WindowTemplate sSwap_WindowTemplates[] =
-{
- {
- .priority = 0,
- .tilemapLeft = 0,
- .tilemapTop = 2,
- .width = 12,
- .height = 2,
- .paletteNum = 15,
- .baseBlock = 0x0001,
- },
- {
- .priority = 2,
- .tilemapLeft = 19,
- .tilemapTop = 2,
- .width = 11,
- .height = 2,
- .paletteNum = 14,
- .baseBlock = 0x0019,
- },
- {
- .priority = 0,
- .tilemapLeft = 0,
- .tilemapTop = 15,
- .width = 20,
- .height = 3,
- .paletteNum = 15,
- .baseBlock = 0x002f,
- },
- {
- .priority = 0,
- .tilemapLeft = 21,
- .tilemapTop = 14,
- .width = 9,
- .height = 6,
- .paletteNum = 15,
- .baseBlock = 0x006b,
- },
- {
- .priority = 0,
- .tilemapLeft = 22,
- .tilemapTop = 14,
- .width = 8,
- .height = 4,
- .paletteNum = 15,
- .baseBlock = 0x00a1,
- },
- {
- .priority = 2,
- .tilemapLeft = 21,
- .tilemapTop = 15,
- .width = 9,
- .height = 5,
- .paletteNum = 14,
- .baseBlock = 0x006b,
- },
- {
- .priority = 2,
- .tilemapLeft = 10,
- .tilemapTop = 2,
- .width = 4,
- .height = 2,
- .paletteNum = 14,
- .baseBlock = 0x00c1,
- },
- {
- .priority = 0,
- .tilemapLeft = 19,
- .tilemapTop = 2,
- .width = 11,
- .height = 2,
- .paletteNum = 15,
- .baseBlock = 0x00c9,
- },
- {
- .priority = 0,
- .tilemapLeft = 15,
- .tilemapTop = 0,
- .width = 15,
- .height = 2,
- .paletteNum = 15,
- .baseBlock = 0x00df,
- },
- DUMMY_WIN_TEMPLATE,
-};
-
-static const u16 gUnknown_08610918[] = {RGB_BLACK, RGB_BLACK, RGB_WHITE, RGB_BLACK, RGB_RED}; // Palette.
-static const u8 gUnknown_08610922[] = {0x0, 0x02, 0x0};
-static const u8 gUnknown_08610925[] = {0x0, 0x04, 0x0};
-
-static const struct SwapActionIdAndFunc sSwap_PlayerScreenActions[] =
+// code
+void CallBattleFactoryFunction(void)
{
- {1, Swap_ActionMon},
- {1, Swap_ActionMon},
- {1, Swap_ActionMon},
- {3, Swap_ActionCancel},
-};
+ gUnknown_08612120[gSpecialVar_0x8004]();
+}
-static const struct SwapActionIdAndFunc sSwap_EnemyScreenActions[] =
+static void sub_81A5E94(void)
{
- {1, Swap_ActionMon},
- {1, Swap_ActionMon},
- {1, Swap_ActionMon},
- {2, Swap_ActionPkmnForSwap},
- {3, Swap_ActionCancel},
-};
-
-// gfx
-extern const u8 gFrontierFactorySelectMenu_Gfx[];
-extern const u8 gFrontierFactorySelectMenu_Tilemap[];
-extern const u16 gFrontierFactorySelectMenu_Pal[];
-
-// text
-extern const u8 gText_RentalPkmn2[];
-extern const u8 gText_SelectFirstPkmn[];
-extern const u8 gText_SelectSecondPkmn[];
-extern const u8 gText_SelectThirdPkmn[];
-extern const u8 gText_TheseThreePkmnOkay[];
-extern const u8 gText_CantSelectSamePkmn[];
-extern const u8 gText_Summary[];
-extern const u8 gText_Rechoose[];
-extern const u8 gText_Deselect[];
-extern const u8 gText_Rent[];
-extern const u8 gText_Others2[];
-extern const u8 gText_Yes2[];
-extern const u8 gText_Yes3[];
-extern const u8 gText_No2[];
-extern const u8 gText_No3[];
-extern const u8 gText_QuitSwapping[];
-extern const u8 gText_AcceptThisPkmn[];
-extern const u8 gText_SelectPkmnToAccept[];
-extern const u8 gText_SelectPkmnToSwap[];
-extern const u8 gText_PkmnSwap[];
-extern const u8 gText_Swap[];
-extern const u8 gText_Summary2[];
-extern const u8 gText_PkmnForSwap[];
-extern const u8 gText_SamePkmnInPartyAlready[];
-extern const u8 gText_Cancel3[];
+ u8 i;
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
-// code
-static void sub_819A44C(struct Sprite *sprite)
-{
- if (sprite->oam.paletteNum == IndexOfSpritePaletteTag(TAG_PAL_BALL_SELECTED))
- {
- if (sprite->animEnded)
- {
- if (sprite->data[0] != 0)
- {
- sprite->data[0]--;
- }
- else if (Random() % 5 == 0)
- {
- StartSpriteAnim(sprite, 0);
- sprite->data[0] = 32;
- }
- else
- {
- StartSpriteAnim(sprite, 1);
- }
- }
- else
- {
- StartSpriteAnimIfDifferent(sprite, 1);
- }
- }
- else
+ gSaveBlock2Ptr->frontier.field_CA8 = 0;
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
+ gSaveBlock2Ptr->frontier.field_CA9_a = 0;
+ gSaveBlock2Ptr->frontier.field_CA9_b = 0;
+ if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_08612164[battleMode][lvlMode]))
{
- StartSpriteAnimIfDifferent(sprite, 0);
+ gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] = 0;
+ gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode] = 0;
}
-}
-static void Select_CB2(void)
-{
- AnimateSprites();
- BuildOamBuffer();
- RunTextPrinters();
- UpdatePaletteFade();
- RunTasks();
-}
+ gUnknown_03001288 = FALSE;
+ for (i = 0; i < 6; i++)
+ gSaveBlock2Ptr->frontier.field_E70[i].monId |= 0xFFFF;
+ for (i = 0; i < 3; i++)
+ gUnknown_03006298[i] |= 0xFFFF;
-static void Select_VblankCb(void)
-{
- LoadOam();
- ProcessSpriteCopyRequests();
- TransferPlttBuffer();
+ saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
+ gTrainerBattleOpponent_A = 0;
}
-void DoBattleFactorySelectScreen(void)
+static void sub_81A5FA8(void)
{
- sFactorySelectScreen = NULL;
- SetMainCallback2(CB2_InitSelectScreen);
-}
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
-static void CB2_InitSelectScreen(void)
-{
- u8 taskId;
-
- switch (gMain.state)
+ switch (gSpecialVar_0x8005)
{
- case 0:
- if (sFactorySelectMons != NULL)
- FREE_AND_SET_NULL(sFactorySelectMons);
- SetHBlankCallback(NULL);
- SetVBlankCallback(NULL);
- CpuFill32(0, (void *)VRAM, VRAM_SIZE);
- ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sSelect_BgTemplates, ARRAY_COUNT(sSelect_BgTemplates));
- InitWindows(sSelect_WindowTemplates);
- DeactivateAllTextPrinters();
- gMain.state++;
- break;
case 1:
- sSelectMenuTilesetBuffer = Alloc(0x440);
- sSelectMonCardBgTilesetBuffer = AllocZeroed(0x440);
- sSelectMenuTilemapBuffer = Alloc(0x800);
- sSelectMonCardBgTilemapBuffer = AllocZeroed(0x800);
- ChangeBgX(0, 0, 0);
- ChangeBgY(0, 0, 0);
- ChangeBgX(1, 0, 0);
- ChangeBgY(1, 0, 0);
- ChangeBgX(3, 0, 0);
- ChangeBgY(3, 0, 0);
- SetGpuReg(REG_OFFSET_BLDCNT, 0);
- SetGpuReg(REG_OFFSET_BLDALPHA, 0);
- SetGpuReg(REG_OFFSET_BLDY, 0);
- SetGpuReg(REG_OFFSET_MOSAIC, 0);
- SetGpuReg(REG_OFFSET_WIN0H, 0);
- SetGpuReg(REG_OFFSET_WIN0V, 0);
- SetGpuReg(REG_OFFSET_WIN1H, 0);
- SetGpuReg(REG_OFFSET_WIN1V, 0);
- SetGpuReg(REG_OFFSET_WININ, 0);
- SetGpuReg(REG_OFFSET_WINOUT, 0);
- gMain.state++;
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode];
break;
case 2:
- ResetPaletteFade();
- ResetSpriteData();
- ResetTasks();
- FreeAllSpritePalettes();
- CpuCopy16(gFrontierFactorySelectMenu_Gfx, sSelectMenuTilesetBuffer, 0x440);
- CpuCopy16(gUnknown_0861033C, sSelectMonCardBgTilesetBuffer, 0x60);
- LoadBgTiles(1, sSelectMenuTilesetBuffer, 0x440, 0);
- LoadBgTiles(3, sSelectMonCardBgTilesetBuffer, 0x60, 0);
- CpuCopy16(gFrontierFactorySelectMenu_Tilemap, sSelectMenuTilemapBuffer, 0x800);
- LoadBgTilemap(1, sSelectMenuTilemapBuffer, 0x800, 0);
- LoadPalette(gFrontierFactorySelectMenu_Pal, 0, 0x40);
- LoadPalette(gUnknown_0861046C, 0xF0, 8);
- LoadPalette(gUnknown_0861046C, 0xE0, 10);
- if (sFactorySelectScreen->fromSummaryScreen == TRUE)
- gPlttBufferUnfaded[228] = sFactorySelectScreen->unk2A4;
- LoadPalette(gUnknown_0861039C, 0x20, 4);
- gMain.state++;
+ gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_08612164[battleMode][lvlMode]) != 0);
break;
case 3:
- SetBgTilemapBuffer(3, sSelectMonCardBgTilemapBuffer);
- CopyToBgTilemapBufferRect(3, gUnknown_0861023C, 11, 4, 8, 8);
- CopyToBgTilemapBufferRect(3, gUnknown_0861023C, 2, 4, 8, 8);
- CopyToBgTilemapBufferRect(3, gUnknown_0861023C, 20, 4, 8, 8);
- CopyBgTilemapBufferToVram(3);
- gMain.state++;
- break;
- case 4:
- LoadSpritePalettes(gUnknown_086103F4);
- LoadSpriteSheets(gUnknown_086103BC);
- LoadCompressedObjectPic(gUnknown_086103E4);
- ShowBg(0);
- ShowBg(1);
- SetVBlankCallback(Select_VblankCb);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
- SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP);
- if (sFactorySelectScreen->fromSummaryScreen == TRUE)
- {
- Select_SetWinRegs(88, 152, 32, 96);
- ShowBg(3);
- SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ);
- SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
- }
- else
- {
- HideBg(3);
- }
- gMain.state++;
- break;
- case 5:
- if (sFactorySelectScreen->fromSummaryScreen == TRUE)
- sFactorySelectScreen->cursorPos = gUnknown_0203CF20;
- Select_InitMonsData();
- Select_InitAllSprites();
- if (sFactorySelectScreen->fromSummaryScreen == TRUE)
- Select_ShowSummaryMonSprite();
- gMain.state++;
- break;
- case 6:
- Select_PrintSelectMonString();
- PutWindowTilemap(2);
- gMain.state++;
- break;
- case 7:
- Select_PrintMonCategory();
- PutWindowTilemap(5);
- gMain.state++;
- break;
- case 8:
- Select_PrintMonSpecies();
- PutWindowTilemap(1);
- gMain.state++;
- break;
- case 9:
- Select_PrintRentalPkmnString();
- PutWindowTilemap(0);
- gMain.state++;
- break;
- case 10:
- sFactorySelectScreen->fadeSpeciesNameTaskId = CreateTask(Task_SelectFadeSpeciesName, 0);
- if (!sFactorySelectScreen->fromSummaryScreen)
- {
- gTasks[sFactorySelectScreen->fadeSpeciesNameTaskId].data[0] = 0;
- taskId = CreateTask(Task_HandleSelectionScreenChooseMons, 0);
- gTasks[taskId].data[0] = 0;
- }
- else
- {
- gTasks[sFactorySelectScreen->fadeSpeciesNameTaskId].data[0] = 1;
- sFactorySelectScreen->unk2A2 = FALSE;
- taskId = CreateTask(Task_HandleSelectionScreenMenu, 0);
- gTasks[taskId].data[0] = 13;
- }
- SetMainCallback2(Select_CB2);
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode];
break;
}
}
-static void Select_InitMonsData(void)
+static void sub_81A6054(void)
{
- u8 i;
-
- if (sFactorySelectScreen != NULL)
- return;
-
- sFactorySelectScreen = AllocZeroed(sizeof(*sFactorySelectScreen));
- sFactorySelectScreen->cursorPos = 0;
- sFactorySelectScreen->selectingMonsState = 1;
- sFactorySelectScreen->fromSummaryScreen = FALSE;
- for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
- sFactorySelectScreen->mons[i].selectedId = 0;
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
- if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_TENT)
- CreateFrontierFactorySelectableMons(0);
- else
- CreateTentFactorySelectableMons(0);
-}
-
-static void Select_InitAllSprites(void)
-{
- u8 i, cursorPos;
- s16 x;
-
- for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
- {
- sFactorySelectScreen->mons[i].spriteId = CreateSprite(&gUnknown_086105D8, (35 * i) + 32, 64, 1);
- gSprites[sFactorySelectScreen->mons[i].spriteId].data[0] = 0;
- Select_SetBallSpritePaletteNum(i);
- }
- cursorPos = sFactorySelectScreen->cursorPos;
- x = gSprites[sFactorySelectScreen->mons[cursorPos].spriteId].pos1.x;
- sFactorySelectScreen->cursorSpriteId = CreateSprite(&gUnknown_086105F0, x, 88, 0);
- sFactorySelectScreen->menuCursor1SpriteId = CreateSprite(&gUnknown_08610608, 176, 112, 0);
- sFactorySelectScreen->menuCursor2SpriteId = CreateSprite(&gUnknown_08610620, 176, 144, 0);
-
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = TRUE;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = TRUE;
-
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].centerToCornerVecX = 0;
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].centerToCornerVecY = 0;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].centerToCornerVecX = 0;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].centerToCornerVecY = 0;
-}
-
-static void Select_DestroyAllSprites(void)
-{
- u8 i;
-
- for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
- DestroySprite(&gSprites[sFactorySelectScreen->mons[i].spriteId]);
-
- DestroySprite(&gSprites[sFactorySelectScreen->cursorSpriteId]);
- DestroySprite(&gSprites[sFactorySelectScreen->menuCursor1SpriteId]);
- DestroySprite(&gSprites[sFactorySelectScreen->menuCursor2SpriteId]);
-}
-
-static void Select_UpdateBallCursorPosition(s8 direction)
-{
- u8 cursorPos;
- if (direction > 0) // Move cursor right.
- {
- if (sFactorySelectScreen->cursorPos != SELECTABLE_MONS_COUNT - 1)
- sFactorySelectScreen->cursorPos++;
- else
- sFactorySelectScreen->cursorPos = 0;
- }
- else // Move cursor left.
- {
- if (sFactorySelectScreen->cursorPos != 0)
- sFactorySelectScreen->cursorPos--;
- else
- sFactorySelectScreen->cursorPos = SELECTABLE_MONS_COUNT - 1;
- }
-
- cursorPos = sFactorySelectScreen->cursorPos;
- gSprites[sFactorySelectScreen->cursorSpriteId].pos1.x = gSprites[sFactorySelectScreen->mons[cursorPos].spriteId].pos1.x;
-}
-
-static void Select_UpdateMenuCursorPosition(s8 direction)
-{
- if (direction > 0) // Move cursor down.
- {
- if (sFactorySelectScreen->menuCursorPos != MENU_OPTIONS_COUNT - 1)
- sFactorySelectScreen->menuCursorPos++;
- else
- sFactorySelectScreen->menuCursorPos = 0;
- }
- else // Move cursor up.
+ switch (gSpecialVar_0x8005)
{
- if (sFactorySelectScreen->menuCursorPos != 0)
- sFactorySelectScreen->menuCursorPos--;
- else
- sFactorySelectScreen->menuCursorPos = MENU_OPTIONS_COUNT - 1;
- }
-
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
-}
-
-static void Select_UpdateYesNoCursorPosition(s8 direction)
-{
- if (direction > 0) // Move cursor down.
- {
- if (sFactorySelectScreen->yesNoCursorPos != 1)
- sFactorySelectScreen->yesNoCursorPos++;
- else
- sFactorySelectScreen->yesNoCursorPos = 0;
- }
- else // Move cursor up.
- {
- if (sFactorySelectScreen->yesNoCursorPos != 0)
- sFactorySelectScreen->yesNoCursorPos--;
- else
- sFactorySelectScreen->yesNoCursorPos = 1;
- }
-
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->yesNoCursorPos * 16) + 112;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = (sFactorySelectScreen->yesNoCursorPos * 16) + 112;
-}
-
-static void Select_HandleMonSelectionChange(void)
-{
- u8 i, paletteNum;
- u8 cursorPos = sFactorySelectScreen->cursorPos;
- if (sFactorySelectScreen->mons[cursorPos].selectedId) // Deselect a mon.
- {
- paletteNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_GREY);
- if (sFactorySelectScreen->selectingMonsState == 3 && sFactorySelectScreen->mons[cursorPos].selectedId == 1)
- {
- for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
- {
- if (sFactorySelectScreen->mons[i].selectedId == 2)
- break;
- }
- if (i == SELECTABLE_MONS_COUNT)
- return;
- else
- sFactorySelectScreen->mons[i].selectedId = 1;
- }
- sFactorySelectScreen->mons[cursorPos].selectedId = 0;
- sFactorySelectScreen->selectingMonsState--;
- }
- else // Select a mon.
- {
- paletteNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_SELECTED);
- sFactorySelectScreen->mons[cursorPos].selectedId = sFactorySelectScreen->selectingMonsState;
- sFactorySelectScreen->selectingMonsState++;
- }
-
- gSprites[sFactorySelectScreen->mons[cursorPos].spriteId].oam.paletteNum = paletteNum;
-}
-
-static void Select_SetBallSpritePaletteNum(u8 id)
-{
- u8 palNum;
-
- if (sFactorySelectScreen->mons[id].selectedId)
- palNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_SELECTED);
- else
- palNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_GREY);
-
- gSprites[sFactorySelectScreen->mons[id].spriteId].oam.paletteNum = palNum;
-}
-
-static void Task_FromSelectScreenToSummaryScreen(u8 taskId)
-{
- u8 i;
- u8 currMonId;
-
- switch (gTasks[taskId].data[0])
- {
- case 6:
- gPlttBufferUnfaded[228] = gPlttBufferFaded[228];
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
- gTasks[taskId].data[0] = 7;
- break;
- case 7:
- if (!gPaletteFade.active)
- {
- DestroyTask(sFactorySelectScreen->fadeSpeciesNameTaskId);
- sub_819F444(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0);
- Select_DestroyAllSprites();
- FREE_AND_SET_NULL(sSelectMenuTilesetBuffer);
- FREE_AND_SET_NULL(sSelectMonCardBgTilesetBuffer);
- FREE_AND_SET_NULL(sSelectMenuTilemapBuffer);
- FREE_AND_SET_NULL(sSelectMonCardBgTilemapBuffer);
- FreeAllWindowBuffers();
- gTasks[taskId].data[0] = 8;
- }
- break;
- case 8:
- sFactorySelectScreen->unk2A4 = gPlttBufferUnfaded[228];
- DestroyTask(taskId);
- sFactorySelectScreen->fromSummaryScreen = TRUE;
- currMonId = sFactorySelectScreen->cursorPos;
- sFactorySelectMons = AllocZeroed(sizeof(struct Pokemon) * SELECTABLE_MONS_COUNT);
- for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
- sFactorySelectMons[i] = sFactorySelectScreen->mons[i].monData;
- ShowPokemonSummaryScreen(1, sFactorySelectMons, currMonId, SELECTABLE_MONS_COUNT - 1, CB2_InitSelectScreen);
+ case 1:
+ gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
break;
- }
-}
-
-static void Task_CloseSelectionScreen(u8 taskId)
-{
- if (sFactorySelectScreen->unk2A0 != TRUE)
- {
- switch (gTasks[taskId].data[0])
- {
- case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
- gTasks[taskId].data[0]++;
- break;
- case 1:
- if (!UpdatePaletteFade())
- {
- Select_CopyMonsToPlayerParty();
- DestroyTask(sFactorySelectScreen->fadeSpeciesNameTaskId);
- Select_DestroyAllSprites();
- FREE_AND_SET_NULL(sSelectMenuTilesetBuffer);
- FREE_AND_SET_NULL(sSelectMenuTilemapBuffer);
- FREE_AND_SET_NULL(sSelectMonCardBgTilemapBuffer);
- FREE_AND_SET_NULL(sFactorySelectScreen);
- FreeAllWindowBuffers();
- SetMainCallback2(CB2_ReturnToFieldContinueScript);
- DestroyTask(taskId);
- }
- break;
- }
- }
-}
-
-static void Task_HandleSelectionScreenYesNo(u8 taskId)
-{
- if (sFactorySelectScreen->unk2A0 != TRUE)
- {
- switch (gTasks[taskId].data[0])
- {
- case 10:
- sub_819C4B4();
- gTasks[taskId].data[0] = 4;
- break;
- case 4:
- Select_ShowYesNoOptions();
- gTasks[taskId].data[0] = 5;
- break;
- case 5:
- if (gMain.newKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- if (sFactorySelectScreen->yesNoCursorPos == 0)
- {
- sub_819C568();
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = Task_CloseSelectionScreen;
- }
- else
- {
- sub_819B958(4);
- sub_819BC9C();
- sFactorySelectScreen->unk2A2 = TRUE;
- gTasks[taskId].data[0] = 1;
- gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
- }
- }
- else if (gMain.newKeys & B_BUTTON)
- {
- PlaySE(SE_SELECT);
- sub_819B958(4);
- sub_819BC9C();
- sFactorySelectScreen->unk2A2 = TRUE;
- gTasks[taskId].data[0] = 1;
- gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
- }
- else if (gMain.newAndRepeatedKeys & DPAD_UP)
- {
- PlaySE(SE_SELECT);
- Select_UpdateYesNoCursorPosition(-1);
- }
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
- {
- PlaySE(SE_SELECT);
- Select_UpdateYesNoCursorPosition(1);
- }
- break;
- }
- }
-}
-
-static void Task_HandleSelectionScreenMenu(u8 taskId)
-{
- switch (gTasks[taskId].data[0])
- {
case 2:
- if (!sFactorySelectScreen->fromSummaryScreen)
- sub_819F2B4(&sFactorySelectScreen->unk294[1].field1, &sFactorySelectScreen->unk2A0, FALSE);
- gTasks[taskId].data[0] = 9;
- break;
- case 9:
- if (sFactorySelectScreen->unk2A0 != TRUE)
- {
- Select_ShowMenuOptions();
- sFactorySelectScreen->fromSummaryScreen = FALSE;
- gTasks[taskId].data[0] = 3;
- }
+ if (gSpecialVar_0x8006)
+ gSaveBlock2Ptr->frontier.field_CDC |= gUnknown_08612164[battleMode][lvlMode];
+ else
+ gSaveBlock2Ptr->frontier.field_CDC &= gUnknown_08612174[battleMode][lvlMode];
break;
case 3:
- if (gMain.newKeys & A_BUTTON)
+ if (gUnknown_03001288 == TRUE)
{
- u8 retVal;
- PlaySE(SE_SELECT);
- retVal = Select_RunMenuOptionFunc();
- if (retVal == 1)
- {
- sFactorySelectScreen->unk2A2 = TRUE;
- gTasks[taskId].data[0] = 1;
- gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
- }
- else if (retVal == 2)
- {
- gTasks[taskId].data[0] = 10;
- gTasks[taskId].func = Task_HandleSelectionScreenYesNo;
- }
- else if (retVal == 3)
- {
- gTasks[taskId].data[0] = 11;
- gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
- }
- else
- {
- gTasks[taskId].data[0] = 6;
- gTasks[taskId].func = Task_FromSelectScreenToSummaryScreen;
- }
- }
- else if (gMain.newKeys & B_BUTTON)
- {
- PlaySE(SE_SELECT);
- sub_819F3F8(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0, FALSE);
- sub_819B958(3);
- sFactorySelectScreen->unk2A2 = TRUE;
- gTasks[taskId].data[0] = 1;
- gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
- }
- else if (gMain.newAndRepeatedKeys & DPAD_UP)
- {
- PlaySE(SE_SELECT);
- Select_UpdateMenuCursorPosition(-1);
- }
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
- {
- PlaySE(SE_SELECT);
- Select_UpdateMenuCursorPosition(1);
+ gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode] = gSpecialVar_0x8006;
+ gUnknown_03001288 = FALSE;
}
break;
- case 12:
- if (!gPaletteFade.active)
- {
- if (sFactorySelectScreen->fromSummaryScreen == TRUE)
- {
- gPlttBufferFaded[228] = sFactorySelectScreen->unk2A4;
- gPlttBufferUnfaded[228] = gPlttBufferUnfaded[244];
- }
- sFactorySelectScreen->fromSummaryScreen = FALSE;
- gTasks[taskId].data[0] = 3;
- }
- break;
- case 13:
- Select_ShowMenuOptions();
- gTasks[taskId].data[0] = 12;
- break;
}
}
-static void Task_HandleSelectionScreenChooseMons(u8 taskId)
+static void sub_81A613C(void)
{
- if (sFactorySelectScreen->unk2A0 != TRUE)
- {
- switch (gTasks[taskId].data[0])
- {
- case 0:
- if (!gPaletteFade.active)
- {
- gTasks[taskId].data[0] = 1;
- sFactorySelectScreen->unk2A2 = TRUE;
- }
- break;
- case 1:
- if (gMain.newKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- sFactorySelectScreen->unk2A2 = FALSE;
- gTasks[taskId].data[0] = 2;
- gTasks[taskId].func = Task_HandleSelectionScreenMenu;
- }
- else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
- {
- PlaySE(SE_SELECT);
- Select_UpdateBallCursorPosition(-1);
- Select_PrintMonCategory();
- Select_PrintMonSpecies();
- }
- else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
- {
- PlaySE(SE_SELECT);
- Select_UpdateBallCursorPosition(1);
- Select_PrintMonCategory();
- Select_PrintMonSpecies();
- }
- break;
- case 11:
- if (gMain.newKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- sub_819F3F8(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0, FALSE);
- Select_PrintSelectMonString();
- sFactorySelectScreen->unk2A2 = TRUE;
- gTasks[taskId].data[0] = 1;
- }
- break;
- }
- }
+ gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
+ VarSet(VAR_TEMP_0, 0);
+ gSaveBlock2Ptr->frontier.field_CA9_a = 1;
+ sub_81A4C30();
}
-static void CreateFrontierFactorySelectableMons(u8 firstMonId)
+static void nullsub_75(void)
{
- u8 i, j = 0;
- u8 ivs = 0;
- u8 level = 0;
- u8 happiness = 0;
- u32 otId = 0;
- u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
- u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u8 var_2C = gSaveBlock2Ptr->frontier.field_DE2[battleMode][lvlMode] / 7;
- u8 var_28 = 0;
-
- gFacilityTrainerMons = gBattleFrontierMons;
- if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50)
- level = 100;
- else
- level = 50;
- var_28 = sub_81A6F70(battleMode, lvlMode);
- otId = T1_READ_32(gSaveBlock2Ptr->playerTrainerId);
-
- for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
- {
- u16 monSetId = gSaveBlock2Ptr->frontier.field_E70[i].monId;
- sFactorySelectScreen->mons[i + firstMonId].monSetId = monSetId;
- if (i < var_28)
- ivs = sub_81A6CA8(var_2C + 1, 0);
- else
- ivs = sub_81A6CA8(var_2C, 0);
- CreateMonWithEVSpreadPersonalityOTID(&sFactorySelectScreen->mons[i + firstMonId].monData,
- gFacilityTrainerMons[monSetId].species,
- level,
- gFacilityTrainerMons[monSetId].nature,
- ivs,
- gFacilityTrainerMons[monSetId].evSpread,
- otId);
- happiness = 0;
- for (j = 0; j < 4; j++)
- SetMonMoveAvoidReturn(&sFactorySelectScreen->mons[i + firstMonId].monData, gFacilityTrainerMons[monSetId].moves[j], j);
- SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_FRIENDSHIP, &happiness);
- SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
- }
}
-static void CreateTentFactorySelectableMons(u8 firstMonId)
+static void nullsub_123(void)
{
- u8 i, j;
- u8 ivs = 0;
- u8 level = 30;
- u8 happiness = 0;
- u32 otId = 0;
- gFacilityTrainerMons = gSlateportBattleTentMons;
- otId = T1_READ_32(gSaveBlock2Ptr->playerTrainerId);
-
- for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
- {
- u16 monSetId = gSaveBlock2Ptr->frontier.field_E70[i].monId;
- sFactorySelectScreen->mons[i + firstMonId].monSetId = monSetId;
- CreateMonWithEVSpreadPersonalityOTID(&sFactorySelectScreen->mons[i + firstMonId].monData,
- gFacilityTrainerMons[monSetId].species,
- level,
- gFacilityTrainerMons[monSetId].nature,
- ivs,
- gFacilityTrainerMons[monSetId].evSpread,
- otId);
- happiness = 0;
- for (j = 0; j < 4; j++)
- SetMonMoveAvoidReturn(&sFactorySelectScreen->mons[i + firstMonId].monData, gFacilityTrainerMons[monSetId].moves[j], j);
- SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_FRIENDSHIP, &happiness);
- SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
- }
}
-static void Select_CopyMonsToPlayerParty(void)
+static void sub_81A6188(void)
{
- u8 i, j;
-
- for (i = 0; i < 3; i++)
- {
- for (j = 0; j < SELECTABLE_MONS_COUNT; j++)
- {
- if (sFactorySelectScreen->mons[j].selectedId == i + 1)
- {
- gPlayerParty[i] = sFactorySelectScreen->mons[j].monData;
- gSaveBlock2Ptr->frontier.field_E70[i].monId = sFactorySelectScreen->mons[j].monSetId;
- gSaveBlock2Ptr->frontier.field_E70[i].personality = GetMonData(&gPlayerParty[i].box, MON_DATA_PERSONALITY, NULL);
- gSaveBlock2Ptr->frontier.field_E70[i].abilityBit = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ALT_ABILITY, NULL);
- gSaveBlock2Ptr->frontier.field_E70[i].ivs = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ATK_IV, NULL);
- break;
- }
- }
- }
- CalculatePlayerPartyCount();
+ ZeroPlayerPartyMons();
+ DoBattleFactorySelectScreen();
}
-static void Select_ShowMenuOptions(void)
+static void sub_81A6198(void)
{
- if (!sFactorySelectScreen->fromSummaryScreen)
- sFactorySelectScreen->menuCursorPos = 0;
-
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.x = 176;
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.x = 208;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
-
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = FALSE;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = FALSE;
-
- Select_PrintMenuOptions();
-}
-
-static void Select_ShowYesNoOptions(void)
-{
- sFactorySelectScreen->yesNoCursorPos = 0;
-
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.x = 176;
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = 112;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.x = 208;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = 112;
-
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = FALSE;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = FALSE;
-
- Select_PrintYesNoOptions();
-}
-
-static void sub_819B958(u8 windowId)
-{
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = TRUE;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = TRUE;
- FillWindowPixelBuffer(windowId, 0);
- CopyWindowToVram(windowId, 2);
- ClearWindowTilemap(windowId);
-}
-
-static void Select_PrintRentalPkmnString(void)
-{
- FillWindowPixelBuffer(0, 0);
- AddTextPrinterParameterized(0, 1, gText_RentalPkmn2, 2, 1, 0, NULL);
- CopyWindowToVram(0, 3);
-}
-
-static void Select_PrintMonSpecies(void)
-{
- u16 species;
- u8 x;
- u8 monId = sFactorySelectScreen->cursorPos;
-
- FillWindowPixelBuffer(1, 0);
- species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL);
- StringCopy(gStringVar4, gSpeciesNames[species]);
- x = GetStringRightAlignXOffset(1, gStringVar4, 86);
- AddTextPrinterParameterized3(1, 1, x, 1, gUnknown_08610479, 0, gStringVar4);
- CopyWindowToVram(1, 2);
-}
-
-static void Select_PrintSelectMonString(void)
-{
- const u8 *str = NULL;
-
- FillWindowPixelBuffer(2, 0);
- if (sFactorySelectScreen->selectingMonsState == 1)
- str = gText_SelectFirstPkmn;
- else if (sFactorySelectScreen->selectingMonsState == 2)
- str = gText_SelectSecondPkmn;
- else if (sFactorySelectScreen->selectingMonsState == 3)
- str = gText_SelectThirdPkmn;
- else
- str = gText_TheseThreePkmnOkay;
-
- AddTextPrinterParameterized(2, 1, str, 2, 5, 0, NULL);
- CopyWindowToVram(2, 2);
-}
-
-static void Select_PrintCantSelectSameMon(void)
-{
- FillWindowPixelBuffer(2, 0);
- AddTextPrinterParameterized(2, 1, gText_CantSelectSamePkmn, 2, 5, 0, NULL);
- CopyWindowToVram(2, 2);
+ DoBattleFactorySwapScreen();
}
-static void Select_PrintMenuOptions(void)
+static void sub_81A61A4(void)
{
- u8 selectedId = sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].selectedId;
-
- PutWindowTilemap(3);
- FillWindowPixelBuffer(3, 0);
- AddTextPrinterParameterized3(3, 1, 7, 1, gUnknown_08610476, 0, gText_Summary);
- if (selectedId != 0)
- AddTextPrinterParameterized3(3, 1, 7, 17, gUnknown_08610476, 0, gText_Deselect);
- else
- AddTextPrinterParameterized3(3, 1, 7, 17, gUnknown_08610476, 0, gText_Rent);
-
- AddTextPrinterParameterized3(3, 1, 7, 33, gUnknown_08610476, 0, gText_Others2);
- CopyWindowToVram(3, 3);
+ gUnknown_03001288 = TRUE;
}
-static void Select_PrintYesNoOptions(void)
+static void sub_81A61B0(void)
{
- PutWindowTilemap(4);
- FillWindowPixelBuffer(4, 0);
- AddTextPrinterParameterized3(4, 1, 7, 1, gUnknown_08610476, 0, gText_Yes2);
- AddTextPrinterParameterized3(4, 1, 7, 17, gUnknown_08610476, 0, gText_No2);
- CopyWindowToVram(4, 3);
-}
+ s32 i, j, k;
+ u16 species[3];
+ u16 heldItems[3];
+ s32 firstMonId = 0;
+ u16 trainerId = 0;
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u32 winStreak = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode];
+ u32 challengeNum = winStreak / 7;
+ gFacilityTrainers = gBattleFrontierTrainers;
-static u8 Select_RunMenuOptionFunc(void)
-{
- gUnknown_030062E8 = sSelect_MenuOptionFuncs[sFactorySelectScreen->menuCursorPos];
- return gUnknown_030062E8();
-}
-
-static u8 Select_OptionRentDeselect(void)
-{
- u8 selectedId = sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].selectedId;
- u16 monSetId = sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].monSetId;
- if (selectedId == 0 && !Select_AreSpeciesValid(monSetId))
+ do
{
- Select_PrintCantSelectSameMon();
- sub_819B958(3);
- return 3;
- }
- else
- {
- sub_819F3F8(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0, FALSE);
- Select_HandleMonSelectionChange();
- Select_PrintSelectMonString();
- sub_819B958(3);
- if (sFactorySelectScreen->selectingMonsState > 3)
- return 2;
- else
- return 1;
- }
-}
-
-static u8 sub_819BC9C(void)
-{
- sub_819C568();
- Select_HandleMonSelectionChange();
- Select_PrintSelectMonString();
- sub_819B958(3);
- if (sFactorySelectScreen->selectingMonsState > 3)
- return 2;
- else
- return 1;
-}
-
-static u8 Select_OptionSummary(void)
-{
- return 0;
-}
-
-static u8 Select_OptionOthers(void)
-{
- sub_819F3F8(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0, FALSE);
- sub_819B958(3);
- return 1;
-}
-
-static void Select_PrintMonCategory(void)
-{
- u16 species;
- u8 text[30];
- u8 x;
- u8 monId = sFactorySelectScreen->cursorPos;
- if (monId < SELECTABLE_MONS_COUNT)
- {
- PutWindowTilemap(5);
- FillWindowPixelBuffer(5, 0);
- species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL);
- CopyMonCategoryText(SpeciesToNationalPokedexNum(species), text);
- x = GetStringRightAlignXOffset(1, text, 0x76);
- AddTextPrinterParameterized(5, 1, text, x, 1, 0, NULL);
- CopyWindowToVram(5, 2);
- }
-}
-
-static void Summary_ShowMonSprite(void)
-{
- u8 monId = sFactorySelectScreen->cursorPos;
- struct Pokemon *mon = &sFactorySelectScreen->mons[monId].monData;
- u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
- u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
- u32 otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
-
- sFactorySelectScreen->unk294[1].field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
- gSprites[sFactorySelectScreen->unk294[1].field0].centerToCornerVecX = 0;
- gSprites[sFactorySelectScreen->unk294[1].field0].centerToCornerVecY = 0;
-
- sFactorySelectScreen->unk2A0 = FALSE;
-}
-
-static void sub_819BE20(bool8 arg0)
-{
- sFactorySelectScreen->unk2A0 = arg0;
-}
-
-static void Select_ShowSummaryMonSprite(void)
-{
- struct Pokemon *mon;
- u16 species;
- u32 personality, otId;
-
- sFactorySelectScreen->unk294[1].field1 = CreateSprite(&gUnknown_08610638, 120, 64, 1);
- StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->unk294[1].field1], 2);
-
- mon = &sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].monData;
- species = GetMonData(mon, MON_DATA_SPECIES, NULL);
- personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
- otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
-
- sFactorySelectScreen->unk294[1].field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
- gSprites[sFactorySelectScreen->unk294[1].field0].centerToCornerVecX = 0;
- gSprites[sFactorySelectScreen->unk294[1].field0].centerToCornerVecY = 0;
-
- gSprites[sFactorySelectScreen->unk294[1].field1].invisible = TRUE;
-}
-
-static void Select_ShowChosenMonsSprites(void)
-{
- u8 i, j;
-
- for (i = 0; i < 3; i++)
- {
- for (j = 0; j < SELECTABLE_MONS_COUNT; j++)
+ trainerId = sub_8162548(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum);
+ for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++)
{
- if (sFactorySelectScreen->mons[j].selectedId == i + 1)
- {
- struct Pokemon *mon = &sFactorySelectScreen->mons[j].monData;
- u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
- u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
- u32 otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
-
- sFactorySelectScreen->unk294[i].field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, (i * 72) + 16, 32, i + 13, 0xFFFF);
- gSprites[sFactorySelectScreen->unk294[i].field0].centerToCornerVecX = 0;
- gSprites[sFactorySelectScreen->unk294[i].field0].centerToCornerVecY = 0;
+ if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
break;
- }
}
- }
- sFactorySelectScreen->unk2A0 = FALSE;
-}
-
-static void sub_819C040(struct Sprite *sprite)
-{
- u8 taskId;
-
- if (sprite->affineAnimEnded
- && gSprites[sFactorySelectScreen->unk294[0].field1].affineAnimEnded
- && gSprites[sFactorySelectScreen->unk294[2].field1].affineAnimEnded)
- {
- sprite->invisible = TRUE;
- gSprites[sFactorySelectScreen->unk294[0].field1].invisible = TRUE;
- gSprites[sFactorySelectScreen->unk294[2].field1].invisible = TRUE;
-
- taskId = CreateTask(sub_819C1D0, 1);
- gTasks[taskId].func(taskId);
-
- sprite->callback = SpriteCallbackDummy;
- }
-}
+ } while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum);
-static void sub_819C100(struct Sprite *sprite)
-{
- if (sprite->affineAnimEnded
- && gSprites[sFactorySelectScreen->unk294[0].field1].affineAnimEnded
- && gSprites[sFactorySelectScreen->unk294[2].field1].affineAnimEnded)
- {
- FreeOamMatrix(sprite->oam.matrixNum);
- FreeOamMatrix(gSprites[sFactorySelectScreen->unk294[0].field1].oam.matrixNum);
- FreeOamMatrix(gSprites[sFactorySelectScreen->unk294[2].field1].oam.matrixNum);
+ gTrainerBattleOpponent_A = trainerId;
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 6)
+ gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = trainerId;
- sFactorySelectScreen->unk2A0 = FALSE;
-
- DestroySprite(&gSprites[sFactorySelectScreen->unk294[0].field1]);
- DestroySprite(&gSprites[sFactorySelectScreen->unk294[2].field1]);
- DestroySprite(sprite);
- }
-}
-
-static void sub_819C1D0(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ i = 0;
+ while (i != 3)
{
- case 0:
- task->data[3] = 16;
- task->data[24] = 224; // BUG: writing outside the array's bounds.
- task->data[5] = 64;
- task->data[8] = 65;
- SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[24]));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
- SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
- SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
- break;
- case 1:
- ShowBg(3);
- SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ);
- SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
- break;
- case 2:
- task->data[5] -= 4;
- task->data[8] += 4;
- if (task->data[5] <= 32 || task->data[8] >= 96)
- {
- task->data[5] = 32;
- task->data[8] = 96;
- ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- }
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
- if (task->data[5] != 32)
- return;
- break;
- default:
- DestroyTask(taskId);
- Select_ShowChosenMonsSprites();
- return;
- }
- task->data[0]++;
-}
+ u16 monSetId = GetMonSetId(lvlMode, challengeNum, FALSE);
+ if (gFacilityTrainerMons[monSetId].species == SPECIES_UNOWN)
+ continue;
-static void sub_819C2D4(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- switch (task->data[0])
- {
- default:
- HideBg(3);
- gSprites[sFactorySelectScreen->unk294[1].field1].invisible = FALSE;
- gSprites[sFactorySelectScreen->unk294[1].field1].callback = sub_819C100;
- gSprites[sFactorySelectScreen->unk294[0].field1].invisible = FALSE;
- gSprites[sFactorySelectScreen->unk294[0].field1].callback = SpriteCallbackDummy;
- gSprites[sFactorySelectScreen->unk294[2].field1].invisible = FALSE;
- gSprites[sFactorySelectScreen->unk294[2].field1].callback = SpriteCallbackDummy;
- StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->unk294[1].field1], 1);
- StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->unk294[0].field1], 1);
- StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->unk294[2].field1], 1);
- ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- DestroyTask(taskId);
- break;
- case 0:
- task->data[3] = 16;
- task->data[24] = 224; // BUG: writing outside the array's bounds.
- task->data[5] = 32;
- task->data[8] = 96;
- SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[24]));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
- SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
- SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
- task->data[0]++;
- break;
- case 1:
- task->data[5] += 4;
- task->data[8] -= 4;
- if (task->data[5] >= 64 || task->data[8] <= 65)
+ for (j = 0; j < 6; j++)
{
- task->data[5] = 64;
- task->data[8] = 65;
+ if (gFacilityTrainerMons[monSetId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.field_E70[j].monId].species)
+ break;
}
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
- if (task->data[5] == 64)
- task->data[0]++;
- break;
- }
-}
+ if (j != 6)
+ continue;
-static void sub_819C4B4(void)
-{
- sFactorySelectScreen->unk294[1].field1 = CreateSprite(&gUnknown_08610638, 120, 64, 1);
- sFactorySelectScreen->unk294[0].field1 = CreateSprite(&gUnknown_08610638, 44, 64, 1);
- sFactorySelectScreen->unk294[2].field1 = CreateSprite(&gUnknown_08610638, 196, 64, 1);
-
- gSprites[sFactorySelectScreen->unk294[1].field1].callback = sub_819C040;
- gSprites[sFactorySelectScreen->unk294[0].field1].callback = SpriteCallbackDummy;
- gSprites[sFactorySelectScreen->unk294[2].field1].callback = SpriteCallbackDummy;
+ if (lvlMode == FRONTIER_LVL_50 && monSetId > 849)
+ continue;
- sFactorySelectScreen->unk2A0 = TRUE;
-}
-
-static void sub_819C568(void)
-{
- u8 taskId;
-
- FreeAndDestroyMonPicSprite(sFactorySelectScreen->unk294[0].field0);
- FreeAndDestroyMonPicSprite(sFactorySelectScreen->unk294[1].field0);
- FreeAndDestroyMonPicSprite(sFactorySelectScreen->unk294[2].field0);
-
- taskId = CreateTask(sub_819C2D4, 1);
- gTasks[taskId].func(taskId);
-
- sFactorySelectScreen->unk2A0 = TRUE;
-}
-
-static void Select_SetWinRegs(s16 mWin0H, s16 nWin0H, s16 mWin0V, s16 nWin0V)
-{
- SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(mWin0H, nWin0H));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(mWin0V, nWin0V));
- SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
- SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
-}
-
-static bool32 Select_AreSpeciesValid(u16 monSetId)
-{
- u8 i, j;
- u32 species = gFacilityTrainerMons[monSetId].species;
- u8 selectState = sFactorySelectScreen->selectingMonsState;
-
- for (i = 1; i < selectState; i++)
- {
- for (j = 0; j < SELECTABLE_MONS_COUNT; j++)
+ for (k = firstMonId; k < firstMonId + i; k++)
{
- if (sFactorySelectScreen->mons[j].selectedId == i)
- {
- if (gFacilityTrainerMons[sFactorySelectScreen->mons[j].monSetId].species == species)
- return FALSE;
-
+ if (species[k] == gFacilityTrainerMons[monSetId].species)
break;
- }
}
- }
-
- return TRUE;
-}
+ if (k != firstMonId + i)
+ continue;
-static void Task_SelectFadeSpeciesName(u8 taskId)
-{
- switch (gTasks[taskId].data[0])
- {
- case 0:
- sFactorySelectScreen->unk2A7 = 0;
- sFactorySelectScreen->unk2A8 = 0;
- sFactorySelectScreen->unk2A6 = TRUE;
- gTasks[taskId].data[0] = 1;
- break;
- case 1:
- if (sFactorySelectScreen->unk2A2)
- {
- if (sFactorySelectScreen->unk2A9)
- {
- gTasks[taskId].data[0] = 2;
- }
- else
- {
- sFactorySelectScreen->unk2A7++;
- if (sFactorySelectScreen->unk2A7 > 6)
- {
- sFactorySelectScreen->unk2A7 = 0;
- if (!sFactorySelectScreen->unk2A6)
- sFactorySelectScreen->unk2A8--;
- else
- sFactorySelectScreen->unk2A8++;
- }
- BlendPalettes(0x4000, sFactorySelectScreen->unk2A8, 0);
- if (sFactorySelectScreen->unk2A8 > 5)
- {
- sFactorySelectScreen->unk2A6 = FALSE;
- }
- else if (sFactorySelectScreen->unk2A8 == 0)
- {
- gTasks[taskId].data[0] = 2;
- sFactorySelectScreen->unk2A6 = TRUE;
- }
- }
- }
- break;
- case 2:
- if (sFactorySelectScreen->unk2A9 > 14)
+ for (k = firstMonId; k < firstMonId + i; k++)
{
- sFactorySelectScreen->unk2A9 = 0;
- gTasks[taskId].data[0] = 1;
- }
- else
- {
- sFactorySelectScreen->unk2A9++;
+ if (heldItems[k] != 0 && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId])
+ break;
}
- break;
- }
-}
-
-// Swap Screen's section begins here.
-
-static void Swap_CB2(void)
-{
- AnimateSprites();
- BuildOamBuffer();
- RunTextPrinters();
- UpdatePaletteFade();
- RunTasks();
-}
-
-static void Swap_VblankCb(void)
-{
- LoadOam();
- ProcessSpriteCopyRequests();
- TransferPlttBuffer();
-}
-
-static void CopySwappedMonData(void)
-{
- u8 happiness;
-
- gPlayerParty[sFactorySwapScreen->playerMonId] = gEnemyParty[sFactorySwapScreen->enemyMonId];
- happiness = 0;
- SetMonData(&gPlayerParty[sFactorySwapScreen->playerMonId], MON_DATA_FRIENDSHIP, &happiness);
- gSaveBlock2Ptr->frontier.field_E70[sFactorySwapScreen->playerMonId].monId = gSaveBlock2Ptr->frontier.field_E70[sFactorySwapScreen->enemyMonId + 3].monId;
- gSaveBlock2Ptr->frontier.field_E70[sFactorySwapScreen->playerMonId].ivs = gSaveBlock2Ptr->frontier.field_E70[sFactorySwapScreen->enemyMonId + 3].ivs;
- gSaveBlock2Ptr->frontier.field_E70[sFactorySwapScreen->playerMonId].personality = GetMonData(&gEnemyParty[sFactorySwapScreen->enemyMonId], MON_DATA_PERSONALITY, NULL);
- gSaveBlock2Ptr->frontier.field_E70[sFactorySwapScreen->playerMonId].abilityBit = GetBoxMonData(&gEnemyParty[sFactorySwapScreen->enemyMonId].box, MON_DATA_ALT_ABILITY, NULL);
-}
+ if (k != firstMonId + i)
+ continue;
-static void Task_FromSwapScreenToSummaryScreen(u8 taskId)
-{
- switch (gTasks[taskId].data[0])
- {
- case 6:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
- gTasks[taskId].data[0] = 7;
- break;
- case 7:
- if (!gPaletteFade.active)
- {
- DestroyTask(sFactorySwapScreen->fadeSpeciesNameTaskId);
- sub_819F444(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30);
- Swap_DestroyAllSprites();
- FREE_AND_SET_NULL(sSwapMenuTilesetBuffer);
- FREE_AND_SET_NULL(sSwapMonCardBgTilesetBuffer);
- FREE_AND_SET_NULL(sSwapMenuTilemapBuffer);
- FREE_AND_SET_NULL(sSwapMonCardBgTilemapBuffer);
- FreeAllWindowBuffers();
- gTasks[taskId].data[0] = 8;
- }
- break;
- case 8:
- DestroyTask(taskId);
- sFactorySwapScreen->fromSummaryScreen = TRUE;
- sFactorySwapScreen->unk24 = gPlttBufferUnfaded[244];
- ShowPokemonSummaryScreen(0, gPlayerParty, sFactorySwapScreen->cursorPos, 3 - 1, CB2_InitSwapScreen);
- break;
+ species[i] = gFacilityTrainerMons[monSetId].species;
+ heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId];
+ gUnknown_03006298[i] = monSetId;
+ i++;
}
}
-static void Task_CloseSwapScreen(u8 taskId)
+static void sub_81A63B8(void)
{
- if (sFactorySwapScreen->unk30 != TRUE)
- {
- switch (gTasks[taskId].data[0])
- {
- case 0:
- if (sFactorySwapScreen->monSwapped == TRUE)
- {
- gTasks[taskId].data[0]++;
- gSpecialVar_Result = 0;
- }
- else
- {
- gTasks[taskId].data[0] = 2;
- gSpecialVar_Result = 1;
- }
- break;
- case 1:
- if (sFactorySwapScreen->monSwapped == TRUE)
- {
- sFactorySwapScreen->enemyMonId = sFactorySwapScreen->cursorPos;
- CopySwappedMonData();
- }
- gTasks[taskId].data[0]++;
- break;
- case 2:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
- gTasks[taskId].data[0]++;
- break;
- case 3:
- if (!UpdatePaletteFade())
- {
- DestroyTask(sFactorySwapScreen->fadeSpeciesNameTaskId);
- Swap_DestroyAllSprites();
- FREE_AND_SET_NULL(sSwapMenuTilesetBuffer);
- FREE_AND_SET_NULL(sSwapMonCardBgTilesetBuffer);
- FREE_AND_SET_NULL(sSwapMenuTilemapBuffer);
- FREE_AND_SET_NULL(sSwapMonCardBgTilemapBuffer);
- FREE_AND_SET_NULL(sFactorySwapScreen);
- FreeAllWindowBuffers();
- SetMainCallback2(CB2_ReturnToFieldContinueScript);
- DestroyTask(taskId);
- }
- break;
- }
- }
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
}
-static void Task_HandleSwapScreenYesNo(u8 taskId)
+static void sub_81A63CC(void)
{
- u16 loPtr, hiPtr;
-
- if (sFactorySwapScreen->unk30 != TRUE)
- {
- switch (gTasks[taskId].data[0])
- {
- case 4:
- Swap_ShowYesNoOptions();
- gTasks[taskId].data[0] = 5;
- break;
- case 5:
- if (gMain.newKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- if (sFactorySwapScreen->yesNoCursorPos == 0)
- {
- gTasks[taskId].data[1] = 1;
- hiPtr = gTasks[taskId].data[6];
- loPtr = gTasks[taskId].data[7];
- gTasks[taskId].func = (void*)((hiPtr << 16) | loPtr);
- }
- else
- {
- gTasks[taskId].data[1] = 0;
- sub_819EA64(4);
- hiPtr = gTasks[taskId].data[6];
- loPtr = gTasks[taskId].data[7];
- gTasks[taskId].func = (void*)((hiPtr << 16) | loPtr);
- }
- }
- else if (gMain.newKeys & B_BUTTON)
- {
- PlaySE(SE_SELECT);
- gTasks[taskId].data[1] = 0;
- sub_819EA64(4);
- hiPtr = gTasks[taskId].data[6];
- loPtr = gTasks[taskId].data[7];
- gTasks[taskId].func = (void*)((hiPtr << 16) | loPtr);
- }
- else if (gMain.newAndRepeatedKeys & DPAD_UP)
- {
- PlaySE(SE_SELECT);
- Swap_UpdateYesNoCursorPosition(-1);
- }
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
- {
- PlaySE(SE_SELECT);
- Swap_UpdateYesNoCursorPosition(1);
- }
- break;
- }
- }
-}
+ u8 i;
-static void sub_819CBDC(u8 taskId)
-{
- if (gTasks[taskId].data[1] == 1)
- {
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = Task_CloseSwapScreen;
- }
+ if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_TENT)
+ gFacilityTrainerMons = gBattleFrontierMons;
else
- {
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 16;
- gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].func = sub_819D770;
- }
-}
+ gFacilityTrainerMons = gSlateportBattleTentMons;
-static void sub_819CC24(u8 taskId)
-{
- if (gTasks[taskId].data[0] == 0)
+ for (i = 0; i < 3; i++)
{
- Swap_PrintOnInfoWindow(gText_QuitSwapping);
- sFactorySwapScreen->monSwapped = FALSE;
- gTasks[taskId].data[0] = 4;
- gTasks[taskId].data[6] = (u32)(sub_819CBDC) >> 16;
- gTasks[taskId].data[7] = (u32)(sub_819CBDC);
- gTasks[taskId].func = Task_HandleSwapScreenYesNo;
+ gSaveBlock2Ptr->frontier.field_E70[i + 3].monId = gUnknown_03006298[i];
+ gSaveBlock2Ptr->frontier.field_E70[i + 3].ivs = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ATK_IV, NULL);
+ gSaveBlock2Ptr->frontier.field_E70[i + 3].personality = GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY, NULL);
+ gSaveBlock2Ptr->frontier.field_E70[i + 3].abilityBit = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ALT_ABILITY, NULL);
+ SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[gUnknown_03006298[i]].itemTableId]);
}
}
-static void sub_819CC74(u8 taskId)
+static void sub_81A64C4(void)
{
- sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
- if (gTasks[taskId].data[1] == 1)
+ s32 i, j, k;
+ s32 count = 0;
+ u8 bits = 0;
+ u8 monLevel;
+ u16 monSetId;
+ u16 evs;
+ u8 ivs;
+ u8 friendship;
+
+ if (gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_TENT)
{
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = Task_CloseSwapScreen;
+ gFacilityTrainerMons = gSlateportBattleTentMons;
+ monLevel = 30;
}
else
{
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 16;
- gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].func = sub_819D770;
- }
-}
-
-static void sub_819CCD4(u8 taskId)
-{
- if (gTasks[taskId].data[0] == 0)
- {
- sub_819F2B4(&sFactorySwapScreen->unk2C.field1, &sFactorySwapScreen->unk30, TRUE);
- Swap_PrintOnInfoWindow(gText_AcceptThisPkmn);
- sFactorySwapScreen->monSwapped = TRUE;
- gTasks[taskId].data[0] = 4;
- gTasks[taskId].data[6] = (u32)(sub_819CC74) >> 16;
- gTasks[taskId].data[7] = (u32)(sub_819CC74);
- gTasks[taskId].func = Task_HandleSwapScreenYesNo;
+ gFacilityTrainerMons = gBattleFrontierMons;
+ if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50)
+ monLevel = 100;
+ else
+ monLevel = 50;
}
-}
-static void Task_HandleSwapScreenMenu(u8 taskId)
-{
- switch (gTasks[taskId].data[0])
+ if (gSpecialVar_0x8005 < 2)
{
- case 2:
- if (!sFactorySwapScreen->fromSummaryScreen)
- sub_819F2B4(&sFactorySwapScreen->unk2C.field1, &sFactorySwapScreen->unk30, TRUE);
- gTasks[taskId].data[0] = 9;
- break;
- case 9:
- if (sFactorySwapScreen->unk30 != TRUE)
+ ZeroPlayerPartyMons();
+ for (i = 0; i < 3; i++)
{
- Swap_ShowMenuOptions();
- gTasks[taskId].data[0] = 3;
- }
- break;
- case 3:
- if (sFactorySwapScreen->unk30 != TRUE)
- {
- if (gMain.newKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- Swap_RunMenuOptionFunc(taskId);
- }
- else if (gMain.newKeys & B_BUTTON)
- {
- PlaySE(SE_SELECT);
- sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
- sub_819EA64(3);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 16;
- gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].func = sub_819D770;
- }
- else if (gMain.newAndRepeatedKeys & DPAD_UP)
- {
- Swap_UpdateMenuCursorPosition(-1);
- }
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
- {
- Swap_UpdateMenuCursorPosition(1);
- }
- }
- break;
- }
-}
+ monSetId = gSaveBlock2Ptr->frontier.field_E70[i].monId;
+ ivs = gSaveBlock2Ptr->frontier.field_E70[i].ivs;
+ CreateMon(&gPlayerParty[i],
+ gFacilityTrainerMons[monSetId].species,
+ monLevel,
+ ivs,
+ TRUE, gSaveBlock2Ptr->frontier.field_E70[i].personality,
+ 0, 0);
-static void Task_HandleSwapScreenChooseMons(u8 taskId)
-{
- switch (gTasks[taskId].data[0])
- {
- case 0:
- if (!gPaletteFade.active)
- {
- sFactorySwapScreen->unk22 = TRUE;
- gTasks[taskId].data[0] = 1;
- }
- break;
- case 1:
- if (gMain.newKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- sFactorySwapScreen->unk22 = FALSE;
- Swap_PrintMonSpecies2();
- sub_819EAC0();
- Swap_RunActionFunc(taskId);
- }
- else if (gMain.newKeys & B_BUTTON)
- {
- PlaySE(SE_SELECT);
- sFactorySwapScreen->unk22 = FALSE;
- Swap_PrintMonSpecies2();
- sub_819EAC0();
- gTasks[taskId].data[6] = (u32)(sub_819CC24) >> 16;
- gTasks[taskId].data[7] = (u32)(sub_819CC24);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[5] = 0;
- gTasks[taskId].func = sub_819D588;
- }
- else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
- {
- Swap_UpdateBallCursorPosition(-1);
- Swap_PrintMonCategory();
- Swap_PrintMonSpecies();
- }
- else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
- {
- Swap_UpdateBallCursorPosition(1);
- Swap_PrintMonCategory();
- Swap_PrintMonSpecies();
- }
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
- {
- Swap_UpdateActionCursorPosition(1);
- Swap_PrintMonCategory();
- Swap_PrintMonSpecies();
- }
- else if (gMain.newAndRepeatedKeys & DPAD_UP)
- {
- Swap_UpdateActionCursorPosition(-1);
- Swap_PrintMonCategory();
- Swap_PrintMonSpecies();
- }
- break;
- }
-}
-
-static void Task_SwapFadeSpeciesName(u8 taskId)
-{
- switch (gTasks[taskId].data[0])
- {
- case 0:
- sFactorySwapScreen->unk27 = 0;
- sFactorySwapScreen->unk28 = 0;
- sFactorySwapScreen->unk26 = TRUE;
- gTasks[taskId].data[0] = 1;
- break;
- case 1:
- if (sFactorySwapScreen->unk22)
- {
- if (sFactorySwapScreen->unk29)
+ count = 0;
+ bits = gFacilityTrainerMons[monSetId].evSpread;
+ for (j = 0; j < NUM_STATS; bits >>= 1, j++)
{
- gTasks[taskId].data[0] = 2;
+ if (bits & 1)
+ count++;
}
- else
+
+ evs = MAX_TOTAL_EVS / count;
+ bits = 1;
+ for (j = 0; j < NUM_STATS; bits <<= 1, j++)
{
- sFactorySwapScreen->unk27++;
- if (sFactorySwapScreen->unk27 > 6)
- {
- sFactorySwapScreen->unk27 = 0;
- if (!sFactorySwapScreen->unk26)
- sFactorySwapScreen->unk28--;
- else
- sFactorySwapScreen->unk28++;
- }
- BlendPalettes(0x4000, sFactorySwapScreen->unk28, 0);
- if (sFactorySwapScreen->unk28 > 5)
- {
- sFactorySwapScreen->unk26 = FALSE;
- }
- else if (sFactorySwapScreen->unk28 == 0)
- {
- gTasks[taskId].data[0] = 2;
- sFactorySwapScreen->unk26 = TRUE;
- }
+ if (gFacilityTrainerMons[monSetId].evSpread & bits)
+ SetMonData(&gPlayerParty[i], MON_DATA_HP_EV + j, &evs);
}
+
+ CalculateMonStats(&gPlayerParty[i]);
+ friendship = 0;
+ for (k = 0; k < 4; k++)
+ SetMonMoveAvoidReturn(&gPlayerParty[i], gFacilityTrainerMons[monSetId].moves[k], k);
+ SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, &friendship);
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
+ SetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY, &gSaveBlock2Ptr->frontier.field_E70[i].abilityBit);
}
- break;
- case 2:
- if (sFactorySwapScreen->unk29 > 14)
- {
- sFactorySwapScreen->unk29 = 0;
- gTasks[taskId].data[0] = 1;
- }
- else
- {
- sFactorySwapScreen->unk29++;
- }
- break;
}
-}
-static void Task_SwapFadeSpeciesName2(u8 taskId)
-{
- switch (gTasks[taskId].data[0])
+ switch (gSpecialVar_0x8005)
{
case 0:
- sFactorySwapScreen->unk27 = 0;
- gTasks[taskId].data[4] = 0;
- gTasks[taskId].data[0]++;
- break;
- case 1:
- LoadPalette(&gPlttBufferUnfaded[0xF0], 0xE0, 0xA);
- gTasks[taskId].data[0]++;
- break;
case 2:
- if (sFactorySwapScreen->unk28 > 15)
+ for (i = 0; i < 3; i++)
{
- gTasks[taskId].data[4] = 1;
- gTasks[taskId].data[0]++;
- }
- sFactorySwapScreen->unk27++;
- if (sFactorySwapScreen->unk27 > 3)
- {
- sFactorySwapScreen->unk27 = 0;
- gPlttBufferUnfaded[244] = gPlttBufferFaded[228];
- sFactorySwapScreen->unk28++;
- }
- BlendPalettes(0x4000, sFactorySwapScreen->unk28, 0);
- break;
- }
-}
+ monSetId = gSaveBlock2Ptr->frontier.field_E70[i + 3].monId;
+ ivs = gSaveBlock2Ptr->frontier.field_E70[i + 3].ivs;
+ CreateMon(&gEnemyParty[i],
+ gFacilityTrainerMons[monSetId].species,
+ monLevel,
+ ivs,
+ TRUE, gSaveBlock2Ptr->frontier.field_E70[i + 3].personality,
+ 0, 0);
-static void sub_819D12C(u8 taskId)
-{
- s8 i;
- u8 var_2C;
- bool8 destroyTask;
-
- switch (gTasks[taskId].data[0])
- {
- case 0:
- gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[0] = 1;
- break;
- case 1:
- var_2C = 0;
- for (i = 2; i >= 0; i--)
- {
- if (i != 2)
+ count = 0;
+ bits = gFacilityTrainerMons[monSetId].evSpread;
+ for (j = 0; j < NUM_STATS; bits >>= 1, j++)
{
- u8 posX = var_2C - gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
- if (posX == 16 || gTasks[taskId].data[i + 2] == 1)
- {
- var_2C = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x += 10;
- }
- else if (posX > 16)
- {
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[i + 1]].pos1.x - 48;
- }
- }
- else
- {
- var_2C = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x += 10;
+ if (bits & 1)
+ count++;
}
- if (gTasks[taskId].data[i + 1] == 1)
- {
- if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x > (i * 48) + 72)
- {
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = (i * 48) + 72;
- destroyTask = TRUE;
- }
- else if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x == (i * 48) + 72)
- {
- destroyTask = TRUE;
- }
- else
- {
- destroyTask = FALSE;
- }
- }
- else
+ evs = MAX_TOTAL_EVS / count;
+ bits = 1;
+ for (j = 0; j < NUM_STATS; bits <<= 1, j++)
{
- destroyTask = FALSE;
+ if (gFacilityTrainerMons[monSetId].evSpread & bits)
+ SetMonData(&gEnemyParty[i], MON_DATA_HP_EV + j, &evs);
}
- if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x - 16 > 240)
- {
- var_2C = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = -16;
- if (sFactorySwapScreen->inEnemyScreen == TRUE)
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].oam.paletteNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_SELECTED);
- else
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].oam.paletteNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_GREY);
-
- gTasks[taskId].data[i + 1] = 1;
- }
+ CalculateMonStats(&gEnemyParty[i]);
+ for (k = 0; k < 4; k++)
+ SetMonMoveAvoidReturn(&gEnemyParty[i], gFacilityTrainerMons[monSetId].moves[k], k);
+ SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
+ SetMonData(&gEnemyParty[i], MON_DATA_ALT_ABILITY, &gSaveBlock2Ptr->frontier.field_E70[i + 3].abilityBit);
}
- if (destroyTask == TRUE)
- DestroyTask(taskId);
break;
}
}
-static void sub_819D324(u8 taskId)
+static void sub_81A67EC(void)
{
- u8 i, j;
- s32 posX = 0;
- s8 r4 = gTasks[taskId].data[3];
- bool8 r1;
- s16 currPosX;
- u8 taskId2;
-
- if (gTasks[taskId].data[2] == 1)
- r4 *= -1;
+ s32 i, j;
+ u8 firstMonId;
+ u8 battleMode;
+ u8 lvlMode;
+ u8 challengeNum;
+ u8 factoryLvlMode;
+ u8 factoryBattleMode;
+ u8 var_40;
+ u16 monSetId;
+ u16 currSpecies;
+ u16 species[PARTY_SIZE];
+ u16 monIds[PARTY_SIZE];
+ u16 heldItems[PARTY_SIZE];
+
+ gFacilityTrainers = gBattleFrontierTrainers;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ species[i] = 0;
+ monIds[i] = 0;
+ heldItems[i] = 0;
+ }
+ lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7;
+ if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES)
+ factoryBattleMode = FRONTIER_MODE_DOUBLES;
+ else
+ factoryBattleMode = FRONTIER_MODE_SINGLES;
- switch (gTasks[taskId].data[0])
+ gFacilityTrainerMons = gBattleFrontierMons;
+ if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50)
{
- case 0:
- currPosX = gSprites[sFactorySwapScreen->unk8[0][0]].pos1.x;
- if (!gTasks[taskId].data[2])
- {
- if (currPosX + r4 < 240)
- {
- r1 = TRUE;
- }
- else
- {
- r1 = FALSE;
- posX = 240;
- }
- }
- else
- {
- if (currPosX + r4 > 160)
- {
- r1 = TRUE;
- }
- else
- {
- r1 = FALSE;
- posX = 160;
- }
- }
-
- if (r1 == TRUE)
- {
- for (i = 0; i < 3; i++)
- {
- for (j = 0; j < 2; j++)
- gSprites[sFactorySwapScreen->unk8[j][i]].pos1.x += r4;
- }
- }
- else
- {
- for (j = 0; j < 2; j++)
- {
- gSprites[sFactorySwapScreen->unk8[j][0]].pos1.x = posX;
- gSprites[sFactorySwapScreen->unk8[j][1]].pos1.x = posX + 16;
- gSprites[sFactorySwapScreen->unk8[j][2]].pos1.x = posX + 48;
- }
- taskId2 = gTasks[taskId].data[1];
- gTasks[taskId2].data[3] = 1;
- DestroyTask(taskId);
- }
- break;
- case 1:
- currPosX = gSprites[sFactorySwapScreen->unkE[0][0]].pos1.x;
- if (!gTasks[taskId].data[2])
- {
- if (currPosX + r4 < 240)
- {
- r1 = TRUE;
- }
- else
- {
- r1 = FALSE;
- posX = 240;
- }
- }
- else
- {
- if (currPosX + r4 > 192)
- {
- r1 = TRUE;
- }
- else
- {
- r1 = FALSE;
- posX = 192;
- }
- }
-
- if (r1 == TRUE)
- {
- for (i = 0; i < 2; i++)
- {
- for (j = 0; j < 2; j++)
- gSprites[sFactorySwapScreen->unkE[j][i]].pos1.x += r4;
- }
- }
- else
- {
- for (j = 0; j < 2; j++)
- {
- gSprites[sFactorySwapScreen->unkE[j][0]].pos1.x = posX;
- gSprites[sFactorySwapScreen->unkE[j][1]].pos1.x = posX + 16;
- }
- taskId2 = gTasks[taskId].data[1];
- gTasks[taskId2].data[4] = 1;
- DestroyTask(taskId);
- }
- break;
+ factoryLvlMode = FRONTIER_LVL_OPEN;
+ firstMonId = 0;
}
-}
-
-static void sub_819D588(u8 taskId)
-{
- u8 anotherTaskId;
- u16 loPtr, hiPtr;
-
- switch (gTasks[taskId].data[0])
+ else
{
- case 0:
- LoadPalette(gUnknown_08610918, 0xE0, sizeof(gUnknown_08610918));
- Swap_PrintActionStrings();
- PutWindowTilemap(5);
- gTasks[taskId].data[0]++;
- break;
- case 1:
- sub_819EA64(3);
- gTasks[taskId].data[0]++;
- break;
- case 2:
- BeginNormalPaletteFade(0x4000, 0, 0, 0x10, gUnknown_0860F13C[37]);
- gTasks[taskId].data[0]++;
- break;
- case 3:
- if (!gPaletteFade.active)
- {
- FillWindowPixelBuffer(5, 0);
- CopyWindowToVram(5, 2);
- if (sFactorySwapScreen->inEnemyScreen == TRUE)
- {
- anotherTaskId = CreateTask(sub_819D324, 0);
- gTasks[taskId].data[3] = 0;
- gTasks[anotherTaskId].data[1] = taskId;
- gTasks[anotherTaskId].data[0] = 0;
- gTasks[anotherTaskId].data[2] = 0;
- gTasks[anotherTaskId].data[3] = 6;
- gTasks[taskId].data[2] = 5;
- gTasks[taskId].data[0]++;
- }
- else
- {
- anotherTaskId = CreateTask(sub_819D324, 0);
- gTasks[taskId].data[3] = 1;
- gTasks[taskId].data[4] = 0;
- gTasks[anotherTaskId].data[1] = taskId;
- gTasks[anotherTaskId].data[0] = 1;
- gTasks[anotherTaskId].data[2] = 0;
- gTasks[anotherTaskId].data[3] = 6;
- gTasks[taskId].data[0] += 2;
- }
- }
- break;
- case 4:
- if (gTasks[taskId].data[2] == 0)
- {
- anotherTaskId = CreateTask(sub_819D324, 0);
- gTasks[taskId].data[4] = 0;
- gTasks[anotherTaskId].data[1] = taskId;
- gTasks[anotherTaskId].data[0] = 1;
- gTasks[anotherTaskId].data[2] = 0;
- gTasks[anotherTaskId].data[3] = 6;
- gTasks[taskId].data[0]++;
- }
- else
- {
- gTasks[taskId].data[2]--;
- }
- break;
- case 5:
- if (gTasks[taskId].data[3] == 1 && gTasks[taskId].data[4] == 1)
- {
- gTasks[taskId].data[0] = gTasks[taskId].data[5];
- loPtr = gTasks[taskId].data[6];
- hiPtr = gTasks[taskId].data[7];
- gTasks[taskId].func = (void *)((loPtr << 0x10) | (hiPtr));
- }
- break;
+ factoryLvlMode = FRONTIER_LVL_50;
+ firstMonId = 0;
}
-}
-
-static void sub_819D770(u8 taskId)
-{
- u8 anotherTaskId;
- u16 loPtr, hiPtr;
- if (sFactorySwapScreen->unk30 == TRUE)
- return;
+ var_40 = sub_81A6F70(factoryBattleMode, factoryLvlMode);
- switch (gTasks[taskId].data[0])
+ currSpecies = 0;
+ i = 0;
+ while (i != PARTY_SIZE)
{
- case 0:
- if (sFactorySwapScreen->inEnemyScreen == TRUE)
- {
- anotherTaskId = CreateTask(sub_819D324, 0);
- gTasks[taskId].data[3] = 0;
- gTasks[anotherTaskId].data[1] = taskId;
- gTasks[anotherTaskId].data[0] = 0;
- gTasks[anotherTaskId].data[2] = 1;
- gTasks[anotherTaskId].data[3] = 6;
- gTasks[taskId].data[2] = 10;
- gTasks[taskId].data[0]++;
- }
- else
- {
- anotherTaskId = CreateTask(sub_819D324, 0);
- gTasks[taskId].data[3] = 1;
- gTasks[taskId].data[4] = 0;
- gTasks[anotherTaskId].data[1] = taskId;
- gTasks[anotherTaskId].data[0] = 1;
- gTasks[anotherTaskId].data[2] = 1;
- gTasks[anotherTaskId].data[3] = 6;
- gTasks[taskId].data[0] += 2;
- }
- break;
- case 1:
- if (gTasks[taskId].data[2] == 0)
- {
- anotherTaskId = CreateTask(sub_819D324, 0);
- gTasks[taskId].data[4] = 0;
- gTasks[anotherTaskId].data[1] = taskId;
- gTasks[anotherTaskId].data[0] = 1;
- gTasks[anotherTaskId].data[2] = 1;
- gTasks[anotherTaskId].data[3] = 6;
- gTasks[taskId].data[0]++;
- }
+ if (i < var_40)
+ monSetId = GetMonSetId(factoryLvlMode, challengeNum, TRUE);
else
- {
- gTasks[taskId].data[2]--;
- }
- break;
- case 2:
- if (gTasks[taskId].data[3] == 1 && gTasks[taskId].data[4] == 1)
- {
- gPlttBufferFaded[226] = gUnknown_0860F13C[37];
- Swap_PrintActionStrings();
- PutWindowTilemap(5);
- gTasks[taskId].data[0]++;
- }
- break;
- case 3:
- BeginNormalPaletteFade(0x4000, 0, 0x10, 0, gUnknown_0860F13C[37]);
- gTasks[taskId].data[0]++;
- break;
- case 4:
- if (!gPaletteFade.active)
- {
- Swap_PrintOneActionString(0);
- gTasks[taskId].data[0]++;
- }
- break;
- case 5:
- Swap_PrintOneActionString(1);
- PutWindowTilemap(3);
- gTasks[taskId].data[0]++;
- break;
- case 6:
- FillWindowPixelBuffer(5, 0);
- CopyWindowToVram(5, 2);
- gTasks[taskId].data[0]++;
- break;
- case 7:
- if (!sFactorySwapScreen->inEnemyScreen)
- Swap_PrintOnInfoWindow(gText_SelectPkmnToSwap);
- else
- Swap_PrintOnInfoWindow(gText_SelectPkmnToAccept);
- if (sFactorySwapScreen->cursorPos < 3)
- gSprites[sFactorySwapScreen->cursorSpriteId].invisible = FALSE;
- Swap_PrintMonCategory();
- gTasks[taskId].data[0]++;
- break;
- case 8:
- Swap_PrintMonSpecies3();
- sub_819EADC();
- sFactorySwapScreen->unk22 = TRUE;
- gTasks[taskId].data[0] = gTasks[taskId].data[5];
- loPtr = gTasks[taskId].data[6];
- hiPtr = gTasks[taskId].data[7];
- gTasks[taskId].func = (void *)((loPtr << 0x10) | (hiPtr));
- break;
- }
-}
+ monSetId = GetMonSetId(factoryLvlMode, challengeNum, FALSE);
-static void sub_819D9EC(u8 taskId)
-{
- u8 i;
- if (sFactorySwapScreen->unk30 == TRUE)
- return;
+ if (gFacilityTrainerMons[monSetId].species == SPECIES_UNOWN)
+ continue;
- switch (gTasks[taskId].data[0])
- {
- case 0:
- Swap_PrintMonSpecies3();
- gTasks[taskId].data[0]++;
- break;
- case 1:
- sub_819EADC();
- gSprites[sFactorySwapScreen->cursorSpriteId].invisible = TRUE;
- gTasks[taskId].data[0]++;
- break;
- case 2:
- CreateTask(sub_819D12C, 0);
- gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].func = Task_SwapFadeSpeciesName2;
- gTasks[taskId].data[0]++;
- break;
- case 3:
- if (!FuncIsActiveTask(sub_819D12C) && gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].data[4] == 1)
+ // Cannot have two pokemon of the same species.
+ for (j = firstMonId; j < firstMonId + i; j++)
{
- sub_819EAC0();
- if (!sFactorySwapScreen->inEnemyScreen)
- {
- Swap_InitActions(ACTIONS_ENEMY_SCREEN);
- }
- else
+ u16 monId = monIds[j];
+ if (monId == monSetId)
+ break;
+ if (species[j] == gFacilityTrainerMons[monSetId].species)
{
- Swap_InitActions(ACTIONS_PLAYER_SCREEN);
- for (i = 0; i < 3; i++)
- gSprites[sFactorySwapScreen->unk8[1][i]].invisible = TRUE;
+ if (currSpecies == 0)
+ currSpecies = gFacilityTrainerMons[monSetId].species;
+ else
+ break;
}
- gSprites[sFactorySwapScreen->cursorSpriteId].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].pos1.x;
- gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].func = Task_SwapFadeSpeciesName;
- sFactorySwapScreen->unk27 = 0;
- sFactorySwapScreen->unk28 = 6;
- sFactorySwapScreen->unk26 = FALSE;
- gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].data[0] = 1;
- gTasks[taskId].data[0]++;
}
- break;
- case 4:
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 0x10;
- gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].func = sub_819D770;
- break;
- }
-}
-
-static void Swap_InitStruct(void)
-{
- if (sFactorySwapScreen == NULL)
- {
- sFactorySwapScreen = AllocZeroed(sizeof(*sFactorySwapScreen));
- sFactorySwapScreen->cursorPos = 0;
- sFactorySwapScreen->unk30 = FALSE;
- sFactorySwapScreen->fromSummaryScreen = FALSE;
- }
-}
+ if (j != firstMonId + i)
+ continue;
-void DoBattleFactorySwapScreen(void)
-{
- sFactorySwapScreen = NULL;
- SetMainCallback2(CB2_InitSwapScreen);
-}
-
-static void CB2_InitSwapScreen(void)
-{
- u8 taskId;
-
- switch (gMain.state)
- {
- case 0:
- SetHBlankCallback(NULL);
- SetVBlankCallback(NULL);
- CpuFill32(0, (void *)VRAM, VRAM_SIZE);
- ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sSwap_BgTemplates, ARRAY_COUNT(sSwap_BgTemplates));
- InitWindows(sSwap_WindowTemplates);
- DeactivateAllTextPrinters();
- gMain.state++;
- break;
- case 1:
- sSwapMenuTilesetBuffer = Alloc(0x440);
- sSwapMonCardBgTilesetBuffer = AllocZeroed(0x440);
- sSwapMenuTilemapBuffer = Alloc(0x800);
- sSwapMonCardBgTilemapBuffer = AllocZeroed(0x800);
- ChangeBgX(0, 0, 0);
- ChangeBgY(0, 0, 0);
- ChangeBgX(1, 0, 0);
- ChangeBgY(1, 0, 0);
- ChangeBgX(2, 0, 0);
- ChangeBgY(2, 0, 0);
- ChangeBgX(3, 0, 0);
- ChangeBgY(3, 0, 0);
- SetGpuReg(REG_OFFSET_BLDY, 0);
- SetGpuReg(REG_OFFSET_MOSAIC, 0);
- SetGpuReg(REG_OFFSET_WIN0H, 0);
- SetGpuReg(REG_OFFSET_WIN0V, 0);
- SetGpuReg(REG_OFFSET_WIN1H, 0);
- SetGpuReg(REG_OFFSET_WIN1V, 0);
- SetGpuReg(REG_OFFSET_WININ, 0);
- SetGpuReg(REG_OFFSET_WINOUT, 0);
- gMain.state++;
- break;
- case 2:
- ResetPaletteFade();
- ResetSpriteData();
- ResetTasks();
- FreeAllSpritePalettes();
- ResetAllPicSprites();
- CpuCopy16(gFrontierFactorySelectMenu_Gfx, sSwapMenuTilesetBuffer, 0x440);
- CpuCopy16(gUnknown_0861033C, sSwapMonCardBgTilesetBuffer, 0x60);
- LoadBgTiles(1, sSwapMenuTilesetBuffer, 0x440, 0);
- LoadBgTiles(3, sSwapMonCardBgTilesetBuffer, 0x60, 0);
- CpuCopy16(gFrontierFactorySelectMenu_Tilemap, sSwapMenuTilemapBuffer, 0x800);
- LoadBgTilemap(1, sSwapMenuTilemapBuffer, 0x800, 0);
- LoadPalette(gFrontierFactorySelectMenu_Pal, 0, 0x40);
- LoadPalette(gUnknown_08610918, 0xF0, sizeof(gUnknown_08610918));
- LoadPalette(gUnknown_08610918, 0xE0, sizeof(gUnknown_08610918));
- LoadPalette(gUnknown_0861039C, 0x20, 4);
- gMain.state++;
- break;
- case 3:
- SetBgTilemapBuffer(3, sSwapMonCardBgTilemapBuffer);
- CopyToBgTilemapBufferRect(3, gUnknown_0861023C, 11, 4, 8, 8);
- CopyBgTilemapBufferToVram(3);
- gMain.state++;
- break;
- case 4:
- LoadSpritePalettes(gUnknown_086106B0);
- LoadSpriteSheets(gUnknown_08610650);
- LoadCompressedObjectPic(gUnknown_086106A0);
- SetVBlankCallback(Swap_VblankCb);
- gMain.state++;
- break;
- case 5:
- if (sFactorySwapScreen->fromSummaryScreen == TRUE)
- sFactorySwapScreen->cursorPos = gUnknown_0203CF20;
- gMain.state++;
- break;
- case 6:
- Swap_InitStruct();
- Swap_InitAllSprites();
- if (sFactorySwapScreen->fromSummaryScreen == TRUE)
- Swap_ShowSummaryMonSprite();
- Swap_InitActions(ACTIONS_PLAYER_SCREEN);
- gMain.state++;
- break;
- case 7:
- Swap_PrintOnInfoWindow(gText_SelectPkmnToSwap);
- PutWindowTilemap(2);
- gMain.state++;
- break;
- case 8:
- Swap_PrintMonCategory();
- PutWindowTilemap(8);
- gMain.state++;
- break;
- case 9:
- if (!sFactorySwapScreen->fromSummaryScreen)
- Swap_PrintMonSpecies();
- PutWindowTilemap(1);
- gMain.state++;
- break;
- case 10:
- Swap_PrintPkmnSwap();
- PutWindowTilemap(0);
- gMain.state++;
- break;
- case 11:
- gMain.state++;
- break;
- case 12:
- if (sFactorySwapScreen->fromSummaryScreen)
- Swap_PrintMonSpecies2();
- gMain.state++;
- break;
- case 13:
- Swap_PrintActionStrings2();
- PutWindowTilemap(3);
- gMain.state++;
- break;
- case 14:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
- SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
- ShowBg(0);
- ShowBg(1);
- ShowBg(2);
- if (sFactorySwapScreen->fromSummaryScreen == TRUE)
+ // Cannot have two same held items.
+ for (j = firstMonId; j < firstMonId + i; j++)
{
- ShowBg(3);
- SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ);
- SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
- }
- else
- {
- HideBg(3);
- }
- gMain.state++;
- break;
- case 15:
- sFactorySwapScreen->fadeSpeciesNameTaskId = CreateTask(Task_SwapFadeSpeciesName, 0);
- if (!sFactorySwapScreen->fromSummaryScreen)
- {
- gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].data[0] = 0;
- taskId = CreateTask(Task_HandleSwapScreenChooseMons, 0);
- gTasks[taskId].data[0] = 0;
- }
- else
- {
- sub_819EAF8();
- gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].data[0] = 1;
- sFactorySwapScreen->unk22 = FALSE;
- taskId = CreateTask(Task_HandleSwapScreenMenu, 0);
- gTasks[taskId].data[0] = 2;
+ if (heldItems[j] != 0 && heldItems[j] == gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId])
+ {
+ if (gFacilityTrainerMons[monSetId].species == currSpecies)
+ currSpecies = 0;
+ break;
+ }
}
- SetMainCallback2(Swap_CB2);
- break;
+ if (j != firstMonId + i)
+ continue;
+
+ gSaveBlock2Ptr->frontier.field_E70[i].monId = monSetId;
+ species[i] = gFacilityTrainerMons[monSetId].species;
+ heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId];
+ monIds[i] = monSetId;
+ i++;
}
}
-static void Swap_InitAllSprites(void)
+static void sub_81A6A08(void)
{
u8 i;
- u8 x;
- struct SpriteTemplate spriteTemplate;
-
- spriteTemplate = gUnknown_08610834;
- spriteTemplate.paletteTag = TAG_PAL_BALL_SELECTED;
+ u8 typesCount[18];
+ u8 usedType[2];
+ gFacilityTrainerMons = gBattleFrontierMons;
+ for (i = 0; i < NUMBER_OF_MON_TYPES; i++)
+ typesCount[i] = 0;
for (i = 0; i < 3; i++)
{
- sFactorySwapScreen->ballSpriteIds[i] = CreateSprite(&spriteTemplate, (48 * i) + 72, 64, 1);
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].data[0] = 0;
- }
- sFactorySwapScreen->cursorSpriteId = CreateSprite(&gUnknown_0861084C, gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].pos1.x, 88, 0);
- sFactorySwapScreen->menuCursor1SpriteId = CreateSprite(&gUnknown_08610864, 176, 112, 0);
- sFactorySwapScreen->menuCursor2SpriteId = CreateSprite(&gUnknown_0861087C, 176, 144, 0);
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = TRUE;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = TRUE;
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].centerToCornerVecY = 0;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].centerToCornerVecY = 0;
-
- if (sFactorySwapScreen->fromSummaryScreen == TRUE)
- x = 240;
- else
- x = 192;
+ u32 species = gFacilityTrainerMons[gUnknown_03006298[i]].species;
- spriteTemplate = gUnknown_0861084C;
- spriteTemplate.tileTag = TAG_TILE_68;
- sFactorySwapScreen->unk8[0][0] = CreateSprite(&spriteTemplate, 240, 120, 10);
-
- spriteTemplate = gUnknown_08610864;
- spriteTemplate.tileTag = TAG_TILE_69;
- sFactorySwapScreen->unk8[0][1] = CreateSprite(&spriteTemplate, 256, 120, 10);
- sFactorySwapScreen->unk8[0][2] = CreateSprite(&spriteTemplate, 288, 120, 10);
-
- spriteTemplate = gUnknown_0861084C;
- spriteTemplate.tileTag = TAG_TILE_6A;
- sFactorySwapScreen->unk8[1][0] = CreateSprite(&spriteTemplate, 240, 120, 1);
-
- spriteTemplate = gUnknown_08610864;
- spriteTemplate.tileTag = TAG_TILE_6B;
- sFactorySwapScreen->unk8[1][1] = CreateSprite(&spriteTemplate, 256, 120, 1);
- spriteTemplate.tileTag = TAG_TILE_6C;
- sFactorySwapScreen->unk8[1][2] = CreateSprite(&spriteTemplate, 288, 120, 1);
-
- spriteTemplate = gUnknown_0861084C;
- spriteTemplate.tileTag = TAG_TILE_68;
- sFactorySwapScreen->unkE[0][0] = CreateSprite(&spriteTemplate, x, 144, 10);
-
- spriteTemplate = gUnknown_08610864;
- spriteTemplate.tileTag = TAG_TILE_69;
- sFactorySwapScreen->unkE[0][1] = CreateSprite(&spriteTemplate, x + 16, 144, 10);
-
- spriteTemplate = gUnknown_0861084C;
- spriteTemplate.tileTag = TAG_TILE_6A;
- sFactorySwapScreen->unkE[1][0] = CreateSprite(&spriteTemplate, x, 144, 1);
-
- spriteTemplate = gUnknown_08610864;
- spriteTemplate.tileTag = TAG_TILE_6C;
- sFactorySwapScreen->unkE[1][1] = CreateSprite(&spriteTemplate, x + 16, 144, 1);
-
- for (i = 0; i < 2; i++)
- {
- gSprites[sFactorySwapScreen->unk8[i][0]].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unk8[i][0]].centerToCornerVecY = 0;
- gSprites[sFactorySwapScreen->unk8[i][1]].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unk8[i][1]].centerToCornerVecY = 0;
- gSprites[sFactorySwapScreen->unk8[i][2]].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unk8[i][2]].centerToCornerVecY = 0;
- gSprites[sFactorySwapScreen->unkE[i][0]].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unkE[i][0]].centerToCornerVecY = 0;
- gSprites[sFactorySwapScreen->unkE[i][1]].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unkE[i][1]].centerToCornerVecY = 0;
-
- gSprites[sFactorySwapScreen->unk8[i][0]].invisible = TRUE;
- gSprites[sFactorySwapScreen->unk8[i][1]].invisible = TRUE;
- gSprites[sFactorySwapScreen->unk8[i][2]].invisible = TRUE;
- gSprites[sFactorySwapScreen->unkE[i][0]].invisible = TRUE;
- gSprites[sFactorySwapScreen->unkE[i][1]].invisible = TRUE;
+ typesCount[gBaseStats[species].type1]++;
+ if (gBaseStats[species].type1 != gBaseStats[species].type2)
+ typesCount[gBaseStats[species].type2]++;
}
- gSprites[sFactorySwapScreen->unkE[0][0]].invisible = FALSE;
- gSprites[sFactorySwapScreen->unkE[0][1]].invisible = FALSE;
- gSprites[sFactorySwapScreen->unk8[0][0]].invisible = FALSE;
- gSprites[sFactorySwapScreen->unk8[0][1]].invisible = FALSE;
- gSprites[sFactorySwapScreen->unk8[0][2]].invisible = FALSE;
-}
-
-static void Swap_DestroyAllSprites(void)
-{
- u8 i, j;
-
- for (i = 0; i < 3; i++)
- DestroySprite(&gSprites[sFactorySwapScreen->ballSpriteIds[i]]);
- DestroySprite(&gSprites[sFactorySwapScreen->cursorSpriteId]);
- DestroySprite(&gSprites[sFactorySwapScreen->menuCursor1SpriteId]);
- DestroySprite(&gSprites[sFactorySwapScreen->menuCursor2SpriteId]);
- for (i = 0; i < 2; i++)
- {
- for (j = 0; j < 3; j++)
- DestroySprite(&gSprites[sFactorySwapScreen->unk8[i][j]]);
- }
- for (i = 0; i < 2; i++)
+ usedType[0] = 0;
+ usedType[1] = 0;
+ for (i = 1; i < NUMBER_OF_MON_TYPES; i++)
{
- for (j = 0; j < 2; j++)
- DestroySprite(&gSprites[sFactorySwapScreen->unkE[i][j]]);
+ if (typesCount[usedType[0]] < typesCount[i])
+ usedType[0] = i;
+ else if (typesCount[usedType[0]] == typesCount[i])
+ usedType[1] = i;
}
-}
-static void Swap_HandleActionCursorChange(u8 cursorId)
-{
- if (cursorId < 3)
- {
- gSprites[sFactorySwapScreen->cursorSpriteId].invisible = FALSE;
- sub_819E8EC();
- gSprites[sFactorySwapScreen->cursorSpriteId].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[cursorId]].pos1.x;
- }
+ gSpecialVar_Result = gSpecialVar_Result; // Needed to match. Don't ask me why.
+ if (typesCount[usedType[0]] != 0 && (typesCount[usedType[0]] > typesCount[usedType[1]] || usedType[0] == usedType[1]))
+ gSpecialVar_Result = usedType[0];
else
- {
- gSprites[sFactorySwapScreen->cursorSpriteId].invisible = TRUE;
- sub_819E838(sFactorySwapScreen->actionsData[cursorId].id);
- }
+ gSpecialVar_Result = NUMBER_OF_MON_TYPES;
}
-static void Swap_UpdateBallCursorPosition(s8 direction)
+static void sub_81A6AEC(void)
{
- u8 cursorPos;
- PlaySE(SE_SELECT);
- if (direction > 0) // Move cursor right.
- {
- if (sFactorySwapScreen->cursorPos + 1 != sFactorySwapScreen->actionsCount)
- sFactorySwapScreen->cursorPos++;
- else
- sFactorySwapScreen->cursorPos = 0;
- }
- else // Move cursor left.
- {
- if (sFactorySwapScreen->cursorPos != 0)
- sFactorySwapScreen->cursorPos--;
- else
- sFactorySwapScreen->cursorPos = sFactorySwapScreen->actionsCount - 1;
- }
-
- cursorPos = sFactorySwapScreen->cursorPos;
- Swap_HandleActionCursorChange(cursorPos);
-}
-
-static void Swap_UpdateActionCursorPosition(s8 direction)
-{
- u8 cursorPos;
- PlaySE(SE_SELECT);
- if (direction > 0) // Move cursor down.
- {
- if (sFactorySwapScreen->cursorPos < 3)
- sFactorySwapScreen->cursorPos = 3;
- else if (sFactorySwapScreen->cursorPos + 1 != sFactorySwapScreen->actionsCount)
- sFactorySwapScreen->cursorPos++;
- else
- sFactorySwapScreen->cursorPos = 0;
- }
- else // Move cursor up.
- {
- if (sFactorySwapScreen->cursorPos < 3)
- sFactorySwapScreen->cursorPos = sFactorySwapScreen->actionsCount - 1;
- else if (sFactorySwapScreen->cursorPos != 0)
- sFactorySwapScreen->cursorPos--;
- else
- sFactorySwapScreen->cursorPos = sFactorySwapScreen->actionsCount - 1;
- }
-
- cursorPos = sFactorySwapScreen->cursorPos;
- Swap_HandleActionCursorChange(cursorPos);
-}
-
-static void Swap_UpdateYesNoCursorPosition(s8 direction)
-{
- if (direction > 0) // Move cursor down.
- {
- if (sFactorySwapScreen->yesNoCursorPos != 1)
- sFactorySwapScreen->yesNoCursorPos++;
- else
- sFactorySwapScreen->yesNoCursorPos = 0;
- }
- else // Move cursor up.
- {
- if (sFactorySwapScreen->yesNoCursorPos != 0)
- sFactorySwapScreen->yesNoCursorPos--;
- else
- sFactorySwapScreen->yesNoCursorPos = 1;
- }
-
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->yesNoCursorPos * 16) + 112;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->yesNoCursorPos * 16) + 112;
-}
-
-static void Swap_UpdateMenuCursorPosition(s8 direction)
-{
- PlaySE(SE_SELECT);
- if (direction > 0) // Move cursor down.
- {
- if (sFactorySwapScreen->menuCursorPos != MENU_OPTIONS_COUNT - 1)
- sFactorySwapScreen->menuCursorPos++;
- else
- sFactorySwapScreen->menuCursorPos = 0;
- }
- else // Move cursor up.
- {
- if (sFactorySwapScreen->menuCursorPos != 0)
- sFactorySwapScreen->menuCursorPos--;
- else
- sFactorySwapScreen->menuCursorPos = MENU_OPTIONS_COUNT - 1;
- }
-
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
-}
-
-static void sub_819E838(u8 arg0)
-{
- u8 i;
+ u8 i, j, count;
+ u8 stylePoints[8];
+ count = 0;
+ gFacilityTrainerMons = gBattleFrontierMons;
+ for (i = 0; i < 8; i++)
+ stylePoints[i] = 0;
for (i = 0; i < 3; i++)
{
- if (arg0 == 2)
- {
- gSprites[sFactorySwapScreen->unk8[1][i]].invisible = FALSE;
- if (i < 2)
- gSprites[sFactorySwapScreen->unkE[1][i]].invisible = TRUE;
- }
- else if (arg0 == 3)
+ u16 monSetId = gUnknown_03006298[i];
+ for (j = 0; j < 4; j++)
{
- if (i < 2)
- gSprites[sFactorySwapScreen->unkE[1][i]].invisible = FALSE;
- gSprites[sFactorySwapScreen->unk8[1][i]].invisible = TRUE;
+ u8 id = GetStyleForMove(gFacilityTrainerMons[monSetId].moves[j]);
+ stylePoints[id]++;
}
}
-}
-static void sub_819E8EC(void)
-{
- u8 i;
-
- for (i = 0; i < 3; i++)
+ gSpecialVar_Result = 0;
+ for (i = 1; i < 8; i++)
{
- gSprites[sFactorySwapScreen->unk8[1][i]].invisible = TRUE;
- if (i < 2)
- gSprites[sFactorySwapScreen->unkE[1][i]].invisible = TRUE;
+ if (stylePoints[i] >= sRequiredMoveCounts[i - 1])
+ {
+ gSpecialVar_Result = i;
+ count++;
+ }
}
+ if (count > 2)
+ gSpecialVar_Result = 8;
}
-static void Swap_ShowMenuOptions(void)
-{
- if (sFactorySwapScreen->fromSummaryScreen == TRUE)
- sFactorySwapScreen->fromSummaryScreen = FALSE;
- else
- sFactorySwapScreen->menuCursorPos = 0;
-
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.x = 176;
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.x = 208;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
-
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = FALSE;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = FALSE;
-
- Swap_PrintMenuOptions();
-}
-
-static void Swap_ShowYesNoOptions(void)
-{
- sFactorySwapScreen->yesNoCursorPos = 0;
-
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.x = 176;
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = 112;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.x = 208;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = 112;
-
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = FALSE;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = FALSE;
-
- Swap_PrintYesNoOptions();
-}
-
-static void sub_819EA64(u8 windowId)
-{
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = TRUE;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = TRUE;
- FillWindowPixelBuffer(windowId, 0);
- CopyWindowToVram(windowId, 2);
- ClearWindowTilemap(windowId);
-}
-
-static void sub_819EAC0(void)
+static u8 GetStyleForMove(u16 move)
{
- PutWindowTilemap(1);
- FillWindowPixelBuffer(1, 0);
- CopyWindowToVram(1, 2);
-}
-
-static void sub_819EADC(void)
-{
- PutWindowTilemap(7);
- FillWindowPixelBuffer(7, 0);
- CopyWindowToVram(7, 2);
-}
-
-static void sub_819EAF8(void)
-{
- sub_819EAC0();
- PutWindowTilemap(5);
- FillWindowPixelBuffer(5, 0);
- CopyWindowToVram(5, 2);
-}
-
-static void Swap_PrintPkmnSwap(void)
-{
- FillWindowPixelBuffer(0, 0x11);
- AddTextPrinterParameterized(0, 1, gText_PkmnSwap, 2, 1, 0, NULL);
- CopyWindowToVram(0, 3);
-}
-
-static void Swap_PrintMonSpecies(void)
-{
- u16 species;
- u8 x;
+ const u16 *moves;
+ u8 i, j;
- FillWindowPixelBuffer(1, 0);
- if (sFactorySwapScreen->cursorPos > 2)
+ for (i = 0; i < ARRAY_COUNT(sMoveStyles); i++)
{
- CopyWindowToVram(1, 2);
- }
- else
- {
- u8 monId = sFactorySwapScreen->cursorPos;
- if (!sFactorySwapScreen->inEnemyScreen)
- species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, NULL);
- else
- species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
- StringCopy(gStringVar4, gSpeciesNames[species]);
- x = GetStringRightAlignXOffset(1, gStringVar4, 86);
- AddTextPrinterParameterized3(1, 1, x, 1, gUnknown_08610925, 0, gStringVar4);
- CopyWindowToVram(1, 3);
+ for (j = 0, moves = sMoveStyles[i]; moves[j] != 0; j++)
+ {
+ if (moves[j] == move)
+ return i + 1;
+ }
}
+ return 0;
}
-static void Swap_PrintOnInfoWindow(const u8 *str)
-{
- FillWindowPixelBuffer(2, 0);
- AddTextPrinterParameterized(2, 1, str, 2, 5, 0, NULL);
- CopyWindowToVram(2, 2);
-}
-
-static void Swap_PrintMenuOptions(void)
-{
- PutWindowTilemap(3);
- FillWindowPixelBuffer(3, 0);
- AddTextPrinterParameterized3(3, 1, 15, 1, gUnknown_08610922, 0, gText_Summary2);
- AddTextPrinterParameterized3(3, 1, 15, 17, gUnknown_08610922, 0, gText_Swap);
- AddTextPrinterParameterized3(3, 1, 15, 33, gUnknown_08610922, 0, gText_Rechoose);
- CopyWindowToVram(3, 3);
-}
-
-static void Swap_PrintYesNoOptions(void)
-{
- PutWindowTilemap(4);
- FillWindowPixelBuffer(4, 0);
- AddTextPrinterParameterized3(4, 1, 7, 1, gUnknown_08610922, 0, gText_Yes3);
- AddTextPrinterParameterized3(4, 1, 7, 17, gUnknown_08610922, 0, gText_No3);
- CopyWindowToVram(4, 3);
-}
-
-static void Swap_PrintActionString(const u8 *str, u32 y, u32 windowId)
+bool8 sub_81A6BF4(void)
{
- s32 x = GetStringRightAlignXOffset(0, str, 0x46);
- AddTextPrinterParameterized3(windowId, 0, x, y, gUnknown_08610922, 0, str);
+ return (gMapHeader.mapLayoutId == 347 || gMapHeader.mapLayoutId == 348);
}
-static void Swap_PrintActionStrings(void)
+static void sub_81A6C1C(void)
{
- FillWindowPixelBuffer(5, 0);
- switch (sFactorySwapScreen->inEnemyScreen)
- {
- case TRUE:
- Swap_PrintActionString(gText_PkmnForSwap, 0, 5);
- case FALSE:
- Swap_PrintActionString(gText_Cancel3, 24, 5);
- break;
- }
- CopyWindowToVram(5, 3);
-}
+ u8 i;
-static void Swap_PrintActionStrings2(void)
-{
- FillWindowPixelBuffer(3, 0);
- switch (sFactorySwapScreen->inEnemyScreen)
- {
- case TRUE:
- Swap_PrintActionString(gText_PkmnForSwap, 8, 3);
- case FALSE:
- Swap_PrintActionString(gText_Cancel3, 32, 3);
- break;
- }
- CopyWindowToVram(3, 3);
-}
+ if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_TENT)
+ gFacilityTrainerMons = gBattleFrontierMons;
+ else
+ gFacilityTrainerMons = gSlateportBattleTentMons;
-static void Swap_PrintOneActionString(u8 which)
-{
- switch (which)
+ for (i = 0; i < 3; i++)
{
- case 0:
- if (sFactorySwapScreen->inEnemyScreen == TRUE)
- Swap_PrintActionString(gText_PkmnForSwap, 8, 3);
- break;
- case 1:
- Swap_PrintActionString(gText_Cancel3, 32, 3);
- break;
+ SetMonData(&gPlayerParty[i],
+ MON_DATA_HELD_ITEM,
+ &gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.field_E70[i].monId].itemTableId]);
}
- CopyWindowToVram(3, 3);
}
-static void Swap_PrintMonSpecies2(void)
+u8 GetFactoryMonFixedIV(u8 arg0, u8 arg1)
{
- u16 species;
- u8 x;
- u16 pal[5];
+ u8 a1;
+ u8 a2 = (arg1 != 0) ? 1 : 0;
- CpuCopy16(gUnknown_08610918, pal, 8);
- if (!sFactorySwapScreen->fromSummaryScreen)
- pal[4] = gPlttBufferFaded[228];
+ if (arg0 > 8)
+ a1 = 7;
else
- pal[4] = sFactorySwapScreen->unk24;
- LoadPalette(pal, 0xF0, 0xA);
+ a1 = arg0;
- PutWindowTilemap(7);
- FillWindowPixelBuffer(7, 0);
- if (sFactorySwapScreen->cursorPos > 2)
- {
- CopyWindowToVram(7, 3);
- }
- else
- {
- u8 monId = sFactorySwapScreen->cursorPos;
- if (!sFactorySwapScreen->inEnemyScreen)
- species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, NULL);
- else
- species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
- StringCopy(gStringVar4, gSpeciesNames[species]);
- x = GetStringRightAlignXOffset(1, gStringVar4, 86);
- AddTextPrinterParameterized3(7, 1, x, 1, gUnknown_08610925, 0, gStringVar4);
- CopyWindowToVram(7, 3);
- }
+ return sFixedIVTable[a1][a2];
}
-static void Swap_PrintMonSpecies3(void)
+void FillFactoryBrainParty(void)
{
- u16 species;
- u8 x;
+ s32 i, j, k;
+ u16 species[3];
+ u16 heldItems[3];
+ u8 friendship;
+ s32 monLevel;
+ u8 fixedIV;
+ u32 otId;
- LoadPalette(gUnknown_08610918, 0xE0, sizeof(gUnknown_08610918));
- CpuCopy16(gPlttBufferUnfaded + 240, gPlttBufferFaded + 224, 10);
+ u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u8 challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7;
+ fixedIV = GetFactoryMonFixedIV(challengeNum + 2, 0);
+ monLevel = SetFacilityPtrsGetLevel();
+ i = 0;
+ otId = T1_READ_32(gSaveBlock2Ptr->playerTrainerId);
- if (sFactorySwapScreen->cursorPos > 2)
+ while (i != 3)
{
- CopyWindowToVram(1, 2);
- }
- else
- {
- u8 monId = sFactorySwapScreen->cursorPos;
- if (!sFactorySwapScreen->inEnemyScreen)
- species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, NULL);
- else
- species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
- StringCopy(gStringVar4, gSpeciesNames[species]);
- x = GetStringRightAlignXOffset(1, gStringVar4, 86);
- AddTextPrinterParameterized3(1, 1, x, 1, gUnknown_08610925, 0, gStringVar4);
- CopyWindowToVram(1, 3);
- }
-}
-
-static void Swap_PrintMonCategory(void)
-{
- u16 species;
- u8 text[30];
- u8 x;
- u8 monId = sFactorySwapScreen->cursorPos;
+ u16 monSetId = GetMonSetId(lvlMode, challengeNum, FALSE);
- FillWindowPixelBuffer(8, 0);
- if (monId > 2)
- {
- CopyWindowToVram(8, 2);
- }
- else
- {
- PutWindowTilemap(8);
- if (!sFactorySwapScreen->inEnemyScreen)
- species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, NULL);
- else
- species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
- CopyMonCategoryText(SpeciesToNationalPokedexNum(species), text);
- x = GetStringRightAlignXOffset(1, text, 0x76);
- AddTextPrinterParameterized(8, 1, text, x, 1, 0, NULL);
- CopyWindowToVram(8, 2);
- }
-}
+ if (gFacilityTrainerMons[monSetId].species == SPECIES_UNOWN)
+ continue;
+ if (monLevel == 50 && monSetId > 849)
+ continue;
-static void Swap_InitActions(u8 id)
-{
- if (sFactorySwapScreen->fromSummaryScreen != TRUE)
- {
- switch (id)
+ for (j = 0; j < 6; j++)
{
- case ACTIONS_PLAYER_SCREEN:
- sFactorySwapScreen->inEnemyScreen = FALSE;
- sFactorySwapScreen->cursorPos = 0;
- sFactorySwapScreen->actionsCount = ARRAY_COUNT(sSwap_PlayerScreenActions);
- sFactorySwapScreen->actionsData = sSwap_PlayerScreenActions;
- break;
- case ACTIONS_ENEMY_SCREEN:
- sFactorySwapScreen->inEnemyScreen = TRUE;
- sFactorySwapScreen->cursorPos = 0;
- sFactorySwapScreen->actionsCount = ARRAY_COUNT(sSwap_EnemyScreenActions);
- sFactorySwapScreen->actionsData = sSwap_EnemyScreenActions;
- break;
+ if (monSetId == gSaveBlock2Ptr->frontier.field_E70[j].monId)
+ break;
}
- }
-}
-
-static void Swap_RunMenuOptionFunc(u8 taskId)
-{
- sSwap_CurrentTableFunc = sSwap_MenuOptionFuncs[sFactorySwapScreen->menuCursorPos];
- sSwap_CurrentTableFunc(taskId);
-}
-
-static void sub_819F0CC(u8 taskId)
-{
- sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
- sFactorySwapScreen->playerMonId = sFactorySwapScreen->cursorPos;
- sub_819EA64(3);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_819D9EC;
-}
+ if (j != 6)
+ continue;
-static void sub_819F114(u8 taskId)
-{
- gTasks[taskId].data[0] = 6;
- gTasks[taskId].func = Task_FromSwapScreenToSummaryScreen;
-}
-
-static void sub_819F134(u8 taskId)
-{
- sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
- sub_819EA64(3);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 0x10;
- gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].func = sub_819D770;
-}
-
-static void Swap_RunActionFunc(u8 taskId)
-{
- sSwap_CurrentTableFunc = sFactorySwapScreen->actionsData[sFactorySwapScreen->cursorPos].func;
- sSwap_CurrentTableFunc(taskId);
-}
+ for (k = 0; k < i; k++)
+ {
+ if (species[k] == gFacilityTrainerMons[monSetId].species)
+ break;
+ }
+ if (k != i)
+ continue;
-static void Swap_ActionCancel(u8 taskId)
-{
- gTasks[taskId].data[6] = (u32)(sub_819CC24) >> 0x10;
- gTasks[taskId].data[7] = (u32)(sub_819CC24);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[5] = 0;
- gTasks[taskId].func = sub_819D588;
-}
+ for (k = 0; k < i; k++)
+ {
+ if (heldItems[k] != 0 && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId])
+ break;
+ }
+ if (k != i)
+ continue;
-static void Swap_ActionPkmnForSwap(u8 taskId)
-{
- gTasks[taskId].data[6] = (u32)(sub_819D9EC) >> 0x10;
- gTasks[taskId].data[7] = (u32)(sub_819D9EC);
- gTasks[taskId].data[5] = 0;
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_819D588;
-}
+ species[i] = gFacilityTrainerMons[monSetId].species;
+ heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId];
+ CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i],
+ gFacilityTrainerMons[monSetId].species,
+ monLevel,
+ gFacilityTrainerMons[monSetId].nature,
+ fixedIV,
+ gFacilityTrainerMons[monSetId].evSpread,
+ otId);
-static void Swap_ActionMon(u8 taskId)
-{
- if (!sFactorySwapScreen->inEnemyScreen)
- {
- gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenMenu) >> 0x10;
- gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenMenu);
- gTasks[taskId].data[5] = 2;
- }
- else if (Swap_AlreadyHasSameSpecies(sFactorySwapScreen->cursorPos) == TRUE)
- {
- sub_819F2B4(&sFactorySwapScreen->unk2C.field1, &sFactorySwapScreen->unk30, TRUE);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].func = Task_SwapCantHaveSameMons;
- return;
- }
- else
- {
- gTasks[taskId].data[6] = (u32)(sub_819CCD4) >> 0x10;
- gTasks[taskId].data[7] = (u32)(sub_819CCD4);
- gTasks[taskId].data[5] = 0;
+ friendship = 0;
+ for (k = 0; k < 4; k++)
+ SetMonMoveAvoidReturn(&gEnemyParty[i], gFacilityTrainerMons[monSetId].moves[k], k);
+ SetMonData(&gEnemyParty[i], MON_DATA_FRIENDSHIP, &friendship);
+ SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
+ i++;
}
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_819D588;
-}
-
-static void sub_819F2B4(u8 *arg0, bool8 *arg1, bool8 swapScreen)
-{
- *arg0 = CreateSprite(&gUnknown_08610894, 120, 64, 1);
- gSprites[*arg0].callback = sub_819F600;
- gSprites[*arg0].data[7] = swapScreen;
- *arg1 = TRUE;
}
-static void Swap_ShowSummaryMonSprite(void)
+static u16 GetMonSetId(u8 lvlMode, u8 challengeNum, bool8 arg2)
{
- struct Pokemon *mon;
- u16 species;
- u32 personality, otId;
-
- sFactorySwapScreen->unk2C.field1 = CreateSprite(&gUnknown_08610894, 120, 64, 1);
- StartSpriteAffineAnim(&gSprites[sFactorySwapScreen->unk2C.field1], 2);
-
- mon = &gPlayerParty[sFactorySwapScreen->cursorPos];
- species = GetMonData(mon, MON_DATA_SPECIES, NULL);
- personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
- otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
-
- sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, personality, otId, TRUE, 88, 32, 15, 0xFFFF); // BUG: otId and personality should be switched.
- gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecY = 0;
-
- gSprites[sFactorySwapScreen->unk2C.field1].invisible = TRUE;
-}
+ u16 range, ret;
+ u16 adder;
-static void sub_819F3F8(struct UnkFactoryStruct arg0, bool8 *arg1, bool8 swapScreen)
-{
- u8 taskId;
-
- FreeAndDestroyMonPicSprite(arg0.field0);
- taskId = CreateTask(sub_819F7B4, 1);
- gTasks[taskId].data[7] = swapScreen;
- gTasks[taskId].data[6] = arg0.field1;
- gTasks[taskId].func(taskId);
- *arg1 = TRUE;
-}
-
-static void sub_819F444(struct UnkFactoryStruct arg0, bool8 *arg1)
-{
- FreeAndDestroyMonPicSprite(arg0.field0);
- FreeOamMatrix(gSprites[arg0.field1].oam.matrixNum);
- DestroySprite(&gSprites[arg0.field1]);
- *arg1 = FALSE;
-}
-
-static void Task_SwapCantHaveSameMons(u8 taskId)
-{
- if (sFactorySwapScreen->unk30 == TRUE)
- return;
+ if (lvlMode == FRONTIER_LVL_50)
+ adder = 0;
+ else
+ adder = 8;
- switch (gTasks[taskId].data[0])
+ if (challengeNum < 7)
{
- case 0:
- Swap_PrintOnInfoWindow(gText_SamePkmnInPartyAlready);
- sFactorySwapScreen->monSwapped = FALSE;
- gTasks[taskId].data[0]++;
- break;
- case 1:
- if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ if (arg2)
{
- PlaySE(SE_SELECT);
- sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
- gTasks[taskId].data[0]++;
+ range = (sMonsToChooseFrom[adder + challengeNum + 1][1] - sMonsToChooseFrom[adder + challengeNum + 1][0]) + 1;
+ ret = Random() % range;
+ ret += sMonsToChooseFrom[adder + challengeNum + 1][0];
}
- break;
- case 2:
- if (sFactorySwapScreen->unk30 != TRUE)
+ else
{
- FillWindowPixelBuffer(5, 0);
- CopyWindowToVram(5, 2);
- gTasks[taskId].data[0]++;
+ range = (sMonsToChooseFrom[adder + challengeNum][1] - sMonsToChooseFrom[adder + challengeNum][0]) + 1;
+ ret = Random() % range;
+ ret += sMonsToChooseFrom[adder + challengeNum][0];
}
- break;
- case 3:
- Swap_PrintOnInfoWindow(gText_SelectPkmnToAccept);
- gTasks[taskId].data[0]++;
- break;
- case 4:
- Swap_PrintMonSpecies3();
- sub_819EADC();
- sFactorySwapScreen->unk22 = TRUE;
- gTasks[taskId].data[0] = gTasks[taskId].data[5];
- gTasks[taskId].func = Task_HandleSwapScreenChooseMons;
- break;
}
-}
-
-static bool8 Swap_AlreadyHasSameSpecies(u8 monId)
-{
- u8 i;
- u16 species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
-
- for (i = 0; i < 3; i++)
+ else
{
- if (i != sFactorySwapScreen->playerMonId && (u16)(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL)) == species)
- return TRUE;
+ u16 num = challengeNum;
+ if (num != 7)
+ num = 7;
+ range = (sMonsToChooseFrom[adder + num][1] - sMonsToChooseFrom[adder + num][0]) + 1;
+ ret = Random() % range;
+ ret += sMonsToChooseFrom[adder + num][0];
}
- return FALSE;
+
+ return ret;
}
-static void sub_819F600(struct Sprite *sprite)
+u8 sub_81A6F70(u8 battleMode, u8 lvlMode)
{
- u8 taskId;
+ u8 ret;
+ u8 rents = gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode];
- if (sprite->affineAnimEnded)
- {
- sprite->invisible = TRUE;
- taskId = CreateTask(sub_819F69C, 1);
- gTasks[taskId].data[7] = sprite->data[7];
- gTasks[taskId].func(taskId);
- sprite->callback = SpriteCallbackDummy;
- }
-}
+ if (rents < 15)
+ ret = 0;
+ else if (rents < 22)
+ ret = 1;
+ else if (rents < 29)
+ ret = 2;
+ else if (rents < 36)
+ ret = 3;
+ else if (rents < 43)
+ ret = 4;
+ else
+ ret = 5;
-static void sub_819F654(struct Sprite *sprite)
-{
- if (sprite->affineAnimEnded)
- {
- FreeOamMatrix(sprite->oam.matrixNum);
- if (sprite->data[7] == TRUE)
- sFactorySwapScreen->unk30 = FALSE;
- else
- sub_819BE20(FALSE);
- DestroySprite(sprite);
- }
+ return ret;
}
-static void sub_819F69C(u8 taskId)
+u32 GetAiScriptsInBattleFactory(void)
{
- struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ if (lvlMode == FRONTIER_LVL_TENT)
{
- case 0:
- task->data[3] = 88;
- task->data[24] = 152; // BUG: writing outside the array's bounds.
- task->data[5] = 64;
- task->data[8] = 65;
- SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[24]));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
- SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
- SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
- break;
- case 1:
- ShowBg(3);
- SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ);
- SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
- break;
- case 2:
- task->data[5] -= 4;
- task->data[8] += 4;
- if (task->data[5] <= 32 || task->data[8] >= 96)
- {
- task->data[5] = 32;
- task->data[8] = 96;
- }
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
- if (task->data[5] != 32)
- return;
- break;
- default:
- DestroyTask(taskId);
- // UB: Should not use the task after it has been deleted.
- if (gTasks[taskId].data[7] == TRUE)
- Swap_ShowMonSprite();
- else
- Summary_ShowMonSprite();
- return;
+ return 0;
}
- task->data[0]++;
-}
-
-static void sub_819F7B4(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ else
{
- default:
- HideBg(3);
- gSprites[task->data[6]].data[7] = task->data[7];
- gSprites[task->data[6]].invisible = FALSE;
- gSprites[task->data[6]].callback = sub_819F654;
- StartSpriteAffineAnim(&gSprites[task->data[6]], 1);
- ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- DestroyTask(taskId);
- break;
- case 0:
- task->data[3] = 88;
- task->data[24] = 152; // BUG: writing outside the array's bounds.
- task->data[5] = 32;
- task->data[8] = 96;
- SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[24]));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
- SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
- SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
- task->data[0]++;
- break;
- case 1:
- task->data[5] += 4;
- task->data[8] -= 4;
- if (task->data[5] >= 64 || task->data[8] <= 65)
- {
- task->data[5] = 64;
- task->data[8] = 65;
- }
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
- if (task->data[5] == 64)
- task->data[0]++;
- break;
+ s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ s32 challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7;
+
+ if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN)
+ return AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY;
+ else if (challengeNum < 2)
+ return 0;
+ else if (challengeNum < 4)
+ return AI_SCRIPT_CHECK_BAD_MOVE;
+ else
+ return AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY;
}
}
-static void Swap_ShowMonSprite(void)
+void SetMonMoveAvoidReturn(struct Pokemon *mon, u16 moveArg, u8 moveSlot)
{
- struct Pokemon *mon;
- u16 species;
- u32 personality, otId;
-
- if (!sFactorySwapScreen->inEnemyScreen)
- mon = &gPlayerParty[sFactorySwapScreen->cursorPos];
- else
- mon = &gEnemyParty[sFactorySwapScreen->cursorPos];
-
- species = GetMonData(mon, MON_DATA_SPECIES, NULL);
- personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
- otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
-
- sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
- gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecY = 0;
-
- sFactorySwapScreen->unk30 = FALSE;
+ u16 move = moveArg;
+ if (moveArg == MOVE_RETURN)
+ move = MOVE_FRUSTRATION;
+ SetMonMoveSlot(mon, move, moveSlot);
}
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
new file mode 100644
index 000000000..42a9b579c
--- /dev/null
+++ b/src/battle_factory_screen.c
@@ -0,0 +1,4113 @@
+#include "global.h"
+#include "battle_factory_screen.h"
+#include "battle_factory.h"
+#include "sprite.h"
+#include "event_data.h"
+#include "overworld.h"
+#include "random.h"
+#include "battle_tower.h"
+#include "text.h"
+#include "palette.h"
+#include "task.h"
+#include "main.h"
+#include "malloc.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "string_util.h"
+#include "international_string_util.h"
+#include "window.h"
+#include "data2.h"
+#include "decompress.h"
+#include "pokemon_summary_screen.h"
+#include "sound.h"
+#include "pokedex.h"
+#include "util.h"
+#include "trainer_pokemon_sprites.h"
+#include "constants/battle_frontier.h"
+#include "constants/songs.h"
+#include "constants/rgb.h"
+
+// Select_ refers to the first Pokemon selection screen where you choose 3 Pokemon.
+// Swap_ refers to the consecutive selection screen where you can keep your Pokemon or swap one with beaten trainer's.
+
+#define MENU_SUMMARY 0
+#define MENU_RENT 1
+#define MENU_DESELECT 1
+#define MENU_OTHERS 2
+#define MENU_OPTIONS_COUNT 3
+
+#define SELECTABLE_MONS_COUNT 6
+
+#define TAG_PAL_BALL_GREY 0x64
+#define TAG_PAL_BALL_SELECTED 0x65
+#define TAG_PAL_66 0x66
+#define TAG_PAL_67 0x67
+
+#define TAG_TILE_64 0x64
+#define TAG_TILE_65 0x65
+#define TAG_TILE_66 0x66
+#define TAG_TILE_67 0x67
+#define TAG_TILE_68 0x68
+#define TAG_TILE_69 0x69
+#define TAG_TILE_6A 0x6A
+#define TAG_TILE_6B 0x6B
+#define TAG_TILE_6C 0x6C
+#define TAG_TILE_6D 0x6D
+
+struct FactorySelecteableMon
+{
+ u16 monSetId;
+ u16 spriteId;
+ u8 selectedId; // 0 - not selected, 1 - first pokemon, 2 - second pokemon, 3 - third pokemon
+ struct Pokemon monData;
+};
+
+struct UnkFactoryStruct
+{
+ u8 field0;
+ u8 field1;
+};
+
+struct FactorySelectMonsStruct
+{
+ u8 menuCursorPos;
+ u8 menuCursor1SpriteId;
+ u8 menuCursor2SpriteId;
+ u8 cursorPos;
+ u8 cursorSpriteId;
+ u8 selectingMonsState;
+ bool8 fromSummaryScreen;
+ u8 yesNoCursorPos;
+ u8 unused8;
+ struct FactorySelecteableMon mons[SELECTABLE_MONS_COUNT];
+ struct UnkFactoryStruct unk294[3];
+ bool8 unk2A0;
+ u8 fadeSpeciesNameTaskId;
+ bool8 unk2A2;
+ u16 unk2A4;
+ bool8 unk2A6;
+ u8 unk2A7;
+ u8 unk2A8;
+ u8 unk2A9;
+};
+
+// 'Action' refers to the 3 Selectable mons, Cancel, Pknm for swap windows.
+#define ACTIONS_PLAYER_SCREEN 0
+#define ACTIONS_ENEMY_SCREEN 1
+
+struct SwapActionIdAndFunc
+{
+ u8 id;
+ void (*func)(u8 taskId);
+};
+
+struct FactorySwapMonsStruct
+{
+ u8 menuCursorPos;
+ u8 menuCursor1SpriteId;
+ u8 menuCursor2SpriteId;
+ u8 cursorPos;
+ u8 cursorSpriteId;
+ u8 ballSpriteIds[3];
+ u8 unk8[2][3];
+ u8 unkE[2][2];
+ u8 playerMonId;
+ u8 enemyMonId;
+ bool8 inEnemyScreen;
+ bool8 fromSummaryScreen;
+ u8 yesNoCursorPos;
+ u8 actionsCount;
+ const struct SwapActionIdAndFunc *actionsData;
+ u8 unused1C[4];
+ bool8 monSwapped;
+ u8 fadeSpeciesNameTaskId;
+ bool8 unk22;
+ u16 unk24;
+ bool8 unk26;
+ u8 unk27;
+ u8 unk28;
+ u8 unk29;
+ struct UnkFactoryStruct unk2C;
+ bool8 unk30;
+};
+
+extern u8 gUnknown_0203CF20;
+
+extern const u16 gBattleFrontierHeldItems[];
+extern const struct FacilityMon gBattleFrontierMons[];
+extern const struct FacilityMon gSlateportBattleTentMons[];
+extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
+extern const u32 gUnknown_085B18AC[];
+
+// This file's functions.
+static void sub_819A44C(struct Sprite *sprite);
+static void CB2_InitSelectScreen(void);
+static void Select_SetWinRegs(s16 mWin0H, s16 nWin0H, s16 mWin0V, s16 nWin0V);
+static void Select_InitMonsData(void);
+static void Select_InitAllSprites(void);
+static void Select_ShowSummaryMonSprite(void);
+static void Select_PrintSelectMonString(void);
+static void Select_PrintMonSpecies(void);
+static void Select_PrintMonCategory(void);
+static void Select_PrintRentalPkmnString(void);
+static void Select_CopyMonsToPlayerParty(void);
+static void sub_819C4B4(void);
+static void Select_ShowYesNoOptions(void);
+static void sub_819C568(void);
+static void Select_ShowMenuOptions(void);
+static void Select_PrintMenuOptions(void);
+static void Select_PrintYesNoOptions(void);
+static void Task_SelectFadeSpeciesName(u8 taskId);
+static void sub_819C1D0(u8 taskId);
+static void Task_HandleSelectionScreenChooseMons(u8 taskId);
+static void Task_HandleSelectionScreenMenu(u8 taskId);
+static void CreateFrontierFactorySelectableMons(u8 firstMonId);
+static void CreateTentFactorySelectableMons(u8 firstMonId);
+static void Select_SetBallSpritePaletteNum(u8 id);
+static void sub_819F444(struct UnkFactoryStruct arg0, bool8 *arg1);
+static void sub_819B958(u8 windowId);
+static void sub_819F2B4(u8 *arg0, bool8 *arg1, bool8 swapScreen);
+static void sub_819F3F8(struct UnkFactoryStruct arg0, bool8 *arg1, bool8 swapScreen);
+static u8 Select_RunMenuOptionFunc(void);
+static u8 sub_819BC9C(void);
+static u8 Select_OptionSummary(void);
+static u8 Select_OptionOthers(void);
+static u8 Select_OptionRentDeselect(void);
+static bool32 Select_AreSpeciesValid(u16 monSetId);
+static void Swap_DestroyAllSprites(void);
+static void Swap_ShowYesNoOptions(void);
+static void sub_819E8EC(void);
+static void sub_819EAC0(void);
+static void Swap_UpdateYesNoCursorPosition(s8 direction);
+static void Swap_UpdateMenuCursorPosition(s8 direction);
+static void sub_819EA64(u8 windowId);
+static void sub_819D770(u8 taskId);
+static void Task_HandleSwapScreenChooseMons(u8 taskId);
+static void sub_819D588(u8 taskId);
+static void sub_819F7B4(u8 taskId);
+static void Swap_PrintOnInfoWindow(const u8 *str);
+static void Swap_ShowMenuOptions(void);
+static void Swap_PrintMenuOptions(void);
+static void Swap_PrintYesNoOptions(void);
+static void Swap_PrintMonSpecies(void);
+static void Swap_PrintMonSpecies2(void);
+static void Swap_PrintMonSpecies3(void);
+static void Swap_PrintMonCategory(void);
+static void Swap_InitAllSprites(void);
+static void Swap_PrintPkmnSwap(void);
+static void sub_819EADC(void);
+static void sub_819EAF8(void);
+static void CB2_InitSwapScreen(void);
+static void Swap_ShowSummaryMonSprite(void);
+static void Swap_UpdateActionCursorPosition(s8 direction);
+static void Swap_UpdateBallCursorPosition(s8 direction);
+static void Swap_RunMenuOptionFunc(u8 taskId);
+static void sub_819F0CC(u8 taskId);
+static void sub_819F114(u8 taskId);
+static void sub_819F134(u8 taskId);
+static void Swap_RunActionFunc(u8 taskId);
+static void sub_819F69C(u8 taskId);
+static void Task_SwapCantHaveSameMons(u8 taskId);
+static void Swap_ShowMonSprite(void);
+static void Swap_PrintActionStrings(void);
+static void Swap_PrintActionStrings2(void);
+static void Swap_PrintOneActionString(u8 which);
+static void Swap_InitActions(u8 id);
+static void sub_819E838(u8 arg0);
+static bool8 Swap_AlreadyHasSameSpecies(u8 monId);
+static void sub_819F600(struct Sprite *sprite);
+static void Swap_ActionMon(u8 taskId);
+static void Swap_ActionCancel(u8 taskId);
+static void Swap_ActionPkmnForSwap(u8 taskId);
+
+// Ewram variables
+static EWRAM_DATA u8 *sSelectMenuTilesetBuffer = NULL;
+static EWRAM_DATA u8 *sSelectMonCardBgTilesetBuffer = NULL;
+static EWRAM_DATA u8 *sSelectMenuTilemapBuffer = NULL;
+static EWRAM_DATA u8 *sSelectMonCardBgTilemapBuffer = NULL;
+static EWRAM_DATA struct Pokemon *sFactorySelectMons = NULL;
+static EWRAM_DATA u8 *sSwapMenuTilesetBuffer = NULL;
+static EWRAM_DATA u8 *sSwapMonCardBgTilesetBuffer = NULL;
+static EWRAM_DATA u8 *sSwapMenuTilemapBuffer = NULL;
+static EWRAM_DATA u8 *sSwapMonCardBgTilemapBuffer = NULL;
+
+// IWRAM bss
+static IWRAM_DATA struct FactorySelectMonsStruct *sFactorySelectScreen;
+static IWRAM_DATA void (*sSwap_CurrentTableFunc)(u8 taskId);
+static IWRAM_DATA struct FactorySwapMonsStruct *sFactorySwapScreen;
+
+// IWRAM common
+u8 (*gUnknown_030062E8)(void);
+
+// Const rom data.
+static const u16 gUnknown_0860F13C[] = INCBIN_U16("graphics/unknown/unknown_60F13C.gbapal");
+static const u16 gUnknown_0860F15C[] = INCBIN_U16("graphics/unknown/unknown_60F15C.gbapal");
+static const u16 gUnknown_0860F17C[] = INCBIN_U16("graphics/unknown/unknown_60F17C.gbapal");
+static const u8 gUnknown_0860F1BC[] = INCBIN_U8("graphics/unknown/unknown_60F1BC.4bpp");
+static const u8 gUnknown_0860F3BC[] = INCBIN_U8("graphics/unknown/unknown_60F3BC.4bpp");
+static const u8 gUnknown_0860F43C[] = INCBIN_U8("graphics/unknown/unknown_60F43C.4bpp");
+static const u8 gUnknown_0860F53C[] = INCBIN_U8("graphics/unknown/unknown_60F53C.4bpp");
+static const u8 gUnknown_0860F63C[] = INCBIN_U8("graphics/unknown/unknown_60F63C.4bpp");
+static const u8 gUnknown_0860F6BC[] = INCBIN_U8("graphics/unknown/unknown_60F6BC.4bpp");
+static const u8 gUnknown_0860F7BC[] = INCBIN_U8("graphics/unknown/unknown_60F7BC.4bpp");
+static const u8 gUnknown_0860F83C[] = INCBIN_U8("graphics/unknown/unknown_60F83C.4bpp");
+static const u8 gUnknown_0860F93C[] = INCBIN_U8("graphics/unknown/unknown_60F93C.4bpp");
+static const u8 gUnknown_0860FA3C[] = INCBIN_U8("graphics/unknown/unknown_60FA3C.4bpp");
+static const u8 gUnknown_0861023C[] = INCBIN_U8("graphics/unknown/unknown_61023C.bin");
+static const u8 gUnknown_0861033C[] = INCBIN_U8("graphics/unknown/unknown_61033C.4bpp");
+static const u16 gUnknown_0861039C[] = INCBIN_U16("graphics/unknown/unknown_61039C.gbapal");
+
+static const struct SpriteSheet gUnknown_086103BC[] =
+{
+ {gUnknown_0860F3BC, sizeof(gUnknown_0860F3BC), TAG_TILE_65},
+ {gUnknown_0860F43C, sizeof(gUnknown_0860F43C), TAG_TILE_66},
+ {gUnknown_0860F53C, sizeof(gUnknown_0860F53C), TAG_TILE_67},
+ {gUnknown_0860FA3C, sizeof(gUnknown_0860FA3C), TAG_TILE_6D},
+ {},
+};
+
+static const struct CompressedSpriteSheet gUnknown_086103E4[] =
+{
+ {gUnknown_085B18AC, 0x800, TAG_TILE_64},
+ {},
+};
+
+static const struct SpritePalette gUnknown_086103F4[] =
+{
+ {gUnknown_0860F13C, TAG_PAL_BALL_GREY},
+ {gUnknown_0860F15C, TAG_PAL_BALL_SELECTED},
+ {gUnknown_0860F17C, TAG_PAL_66},
+ {gUnknown_0861039C, TAG_PAL_67},
+ {},
+};
+
+u8 static (* const sSelect_MenuOptionFuncs[])(void) =
+{
+ [MENU_SUMMARY] = Select_OptionSummary,
+ [MENU_RENT] /*Or Deselect*/ = Select_OptionRentDeselect,
+ [MENU_OTHERS] = Select_OptionOthers
+};
+
+static const struct BgTemplate sSelect_BgTemplates[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 24,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 25,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 27,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+};
+
+static const struct WindowTemplate sSelect_WindowTemplates[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 2,
+ .width = 12,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x0001,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 19,
+ .tilemapTop = 2,
+ .width = 11,
+ .height = 2,
+ .paletteNum = 14,
+ .baseBlock = 0x0019,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 15,
+ .width = 20,
+ .height = 3,
+ .paletteNum = 15,
+ .baseBlock = 0x002f,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 14,
+ .width = 8,
+ .height = 6,
+ .paletteNum = 15,
+ .baseBlock = 0x006b,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 14,
+ .width = 8,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x009b,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 15,
+ .tilemapTop = 0,
+ .width = 15,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x00bb,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+static const u16 gUnknown_0861046C[] = INCBIN_U16("graphics/unknown/unknown_61046C.gbapal");
+
+static const u8 gUnknown_08610476[] = {0x00, 0x02, 0x00};
+static const u8 gUnknown_08610479[] = {0x00, 0x04, 0x00};
+
+static const struct OamData gUnknown_0861047C =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData gUnknown_08610484 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData gUnknown_0861048C =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData gUnknown_08610494 =
+{
+ .y = 0,
+ .affineMode = 3,
+ .objMode = 1,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 1,
+};
+
+static const union AnimCmd gUnknown_0861049C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_086104A4[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_086104AC[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_086104B4[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(0, 32),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd * const gUnknown_086104FC[] =
+{
+ gUnknown_0861049C,
+};
+
+static const union AnimCmd * const gUnknown_08610500[] =
+{
+ gUnknown_086104A4,
+};
+
+static const union AnimCmd * const gUnknown_08610504[] =
+{
+ gUnknown_086104AC,
+ gUnknown_086104B4,
+};
+
+static const union AffineAnimCmd gUnknown_0861050C[] =
+{
+ AFFINEANIMCMD_FRAME(5, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(16, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(32, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(64, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(128, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(256, 5, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_0861056C[] =
+{
+ AFFINEANIMCMD_FRAME(128, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(64, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(32, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(16, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(5, 5, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_086105BC[] =
+{
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd * const gUnknown_086105CC[] =
+{
+ gUnknown_0861050C,
+ gUnknown_0861056C,
+ gUnknown_086105BC,
+};
+
+static const struct SpriteTemplate gUnknown_086105D8 =
+{
+ .tileTag = TAG_TILE_64,
+ .paletteTag = TAG_PAL_BALL_GREY,
+ .oam = &gUnknown_0861047C,
+ .anims = gUnknown_08610504,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_819A44C
+};
+
+static const struct SpriteTemplate gUnknown_086105F0 =
+{
+ .tileTag = TAG_TILE_65,
+ .paletteTag = TAG_PAL_66,
+ .oam = &gUnknown_08610484,
+ .anims = gUnknown_086104FC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gUnknown_08610608 =
+{
+ .tileTag = TAG_TILE_66,
+ .paletteTag = TAG_PAL_66,
+ .oam = &gUnknown_0861048C,
+ .anims = gUnknown_086104FC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gUnknown_08610620 =
+{
+ .tileTag = TAG_TILE_67,
+ .paletteTag = TAG_PAL_66,
+ .oam = &gUnknown_0861048C,
+ .anims = gUnknown_086104FC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gUnknown_08610638 =
+{
+ .tileTag = TAG_TILE_6D,
+ .paletteTag = TAG_PAL_67,
+ .oam = &gUnknown_08610494,
+ .anims = gUnknown_08610500,
+ .images = NULL,
+ .affineAnims = gUnknown_086105CC,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteSheet gUnknown_08610650[] =
+{
+ {gUnknown_0860F3BC, sizeof(gUnknown_0860F3BC), TAG_TILE_65},
+ {gUnknown_0860F43C, sizeof(gUnknown_0860F43C), TAG_TILE_66},
+ {gUnknown_0860F53C, sizeof(gUnknown_0860F53C), TAG_TILE_67},
+ {gUnknown_0860F63C, sizeof(gUnknown_0860F63C), TAG_TILE_68},
+ {gUnknown_0860F6BC, sizeof(gUnknown_0860F6BC), TAG_TILE_69},
+ {gUnknown_0860F7BC, 0x100, TAG_TILE_6A},
+ {gUnknown_0860F83C, sizeof(gUnknown_0860F83C), TAG_TILE_6B},
+ {gUnknown_0860F93C, sizeof(gUnknown_0860F93C), TAG_TILE_6C},
+ {gUnknown_0860FA3C, sizeof(gUnknown_0860FA3C), TAG_TILE_6D},
+ {},
+};
+
+static const struct CompressedSpriteSheet gUnknown_086106A0[] =
+{
+ {gUnknown_085B18AC, 0x800, TAG_TILE_64},
+ {},
+};
+
+static const struct SpritePalette gUnknown_086106B0[] =
+{
+ {gUnknown_0860F13C, TAG_PAL_BALL_GREY},
+ {gUnknown_0860F15C, TAG_PAL_BALL_SELECTED},
+ {gUnknown_0860F17C, TAG_PAL_66},
+ {gUnknown_0861039C, TAG_PAL_67},
+ {},
+};
+
+static const struct OamData gUnknown_086106D8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData gUnknown_086106E0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData gUnknown_086106E8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData gUnknown_086106F0 =
+{
+ .y = 0,
+ .affineMode = 3,
+ .objMode = 1,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 1,
+};
+
+static const union AnimCmd gUnknown_086106F8[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_08610700[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_08610708[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_08610710[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(0, 32),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd * const gUnknown_08610758[] =
+{
+ gUnknown_086106F8,
+};
+
+static const union AnimCmd * const gUnknown_0861075C[] =
+{
+ gUnknown_08610700,
+};
+
+static const union AnimCmd * const gUnknown_08610760[] =
+{
+ gUnknown_08610708,
+ gUnknown_08610710,
+};
+
+static const union AffineAnimCmd gUnknown_08610768[] =
+{
+ AFFINEANIMCMD_FRAME(5, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(16, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(32, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(64, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(128, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(256, 5, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_086107C8[] =
+{
+ AFFINEANIMCMD_FRAME(128, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(64, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(32, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(16, 5, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_FRAME(5, 5, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gUnknown_08610818[] =
+{
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd * const gUnknown_08610828[] =
+{
+ gUnknown_08610768,
+ gUnknown_086107C8,
+ gUnknown_08610818,
+};
+
+static const struct SpriteTemplate gUnknown_08610834 =
+{
+ .tileTag = TAG_TILE_64,
+ .paletteTag = TAG_PAL_BALL_GREY,
+ .oam = &gUnknown_086106D8,
+ .anims = gUnknown_08610760,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_819A44C
+};
+
+static const struct SpriteTemplate gUnknown_0861084C =
+{
+ .tileTag = TAG_TILE_65,
+ .paletteTag = TAG_PAL_66,
+ .oam = &gUnknown_086106E0,
+ .anims = gUnknown_08610758,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gUnknown_08610864 =
+{
+ .tileTag = TAG_TILE_66,
+ .paletteTag = TAG_PAL_66,
+ .oam = &gUnknown_086106E8,
+ .anims = gUnknown_08610758,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gUnknown_0861087C =
+{
+ .tileTag = TAG_TILE_67,
+ .paletteTag = TAG_PAL_66,
+ .oam = &gUnknown_086106E8,
+ .anims = gUnknown_08610758,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gUnknown_08610894 =
+{
+ .tileTag = TAG_TILE_6D,
+ .paletteTag = TAG_PAL_67,
+ .oam = &gUnknown_086106F0,
+ .anims = gUnknown_0861075C,
+ .images = NULL,
+ .affineAnims = gUnknown_08610828,
+ .callback = SpriteCallbackDummy
+};
+
+void static (* const sSwap_MenuOptionFuncs[])(u8 taskId) =
+{
+ sub_819F114,
+ sub_819F0CC,
+ sub_819F134,
+};
+
+static const struct BgTemplate sSwap_BgTemplates[4] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 24,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 25,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 26,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 27,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+};
+
+static const struct WindowTemplate sSwap_WindowTemplates[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 2,
+ .width = 12,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x0001,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 19,
+ .tilemapTop = 2,
+ .width = 11,
+ .height = 2,
+ .paletteNum = 14,
+ .baseBlock = 0x0019,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 15,
+ .width = 20,
+ .height = 3,
+ .paletteNum = 15,
+ .baseBlock = 0x002f,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 21,
+ .tilemapTop = 14,
+ .width = 9,
+ .height = 6,
+ .paletteNum = 15,
+ .baseBlock = 0x006b,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 14,
+ .width = 8,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x00a1,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 21,
+ .tilemapTop = 15,
+ .width = 9,
+ .height = 5,
+ .paletteNum = 14,
+ .baseBlock = 0x006b,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 10,
+ .tilemapTop = 2,
+ .width = 4,
+ .height = 2,
+ .paletteNum = 14,
+ .baseBlock = 0x00c1,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 19,
+ .tilemapTop = 2,
+ .width = 11,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x00c9,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 15,
+ .tilemapTop = 0,
+ .width = 15,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x00df,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+static const u16 gUnknown_08610918[] = {RGB_BLACK, RGB_BLACK, RGB_WHITE, RGB_BLACK, RGB_RED}; // Palette.
+static const u8 gUnknown_08610922[] = {0x0, 0x02, 0x0};
+static const u8 gUnknown_08610925[] = {0x0, 0x04, 0x0};
+
+static const struct SwapActionIdAndFunc sSwap_PlayerScreenActions[] =
+{
+ {1, Swap_ActionMon},
+ {1, Swap_ActionMon},
+ {1, Swap_ActionMon},
+ {3, Swap_ActionCancel},
+};
+
+static const struct SwapActionIdAndFunc sSwap_EnemyScreenActions[] =
+{
+ {1, Swap_ActionMon},
+ {1, Swap_ActionMon},
+ {1, Swap_ActionMon},
+ {2, Swap_ActionPkmnForSwap},
+ {3, Swap_ActionCancel},
+};
+
+// gfx
+extern const u8 gFrontierFactorySelectMenu_Gfx[];
+extern const u8 gFrontierFactorySelectMenu_Tilemap[];
+extern const u16 gFrontierFactorySelectMenu_Pal[];
+
+// text
+extern const u8 gText_RentalPkmn2[];
+extern const u8 gText_SelectFirstPkmn[];
+extern const u8 gText_SelectSecondPkmn[];
+extern const u8 gText_SelectThirdPkmn[];
+extern const u8 gText_TheseThreePkmnOkay[];
+extern const u8 gText_CantSelectSamePkmn[];
+extern const u8 gText_Summary[];
+extern const u8 gText_Rechoose[];
+extern const u8 gText_Deselect[];
+extern const u8 gText_Rent[];
+extern const u8 gText_Others2[];
+extern const u8 gText_Yes2[];
+extern const u8 gText_Yes3[];
+extern const u8 gText_No2[];
+extern const u8 gText_No3[];
+extern const u8 gText_QuitSwapping[];
+extern const u8 gText_AcceptThisPkmn[];
+extern const u8 gText_SelectPkmnToAccept[];
+extern const u8 gText_SelectPkmnToSwap[];
+extern const u8 gText_PkmnSwap[];
+extern const u8 gText_Swap[];
+extern const u8 gText_Summary2[];
+extern const u8 gText_PkmnForSwap[];
+extern const u8 gText_SamePkmnInPartyAlready[];
+extern const u8 gText_Cancel3[];
+
+// code
+static void sub_819A44C(struct Sprite *sprite)
+{
+ if (sprite->oam.paletteNum == IndexOfSpritePaletteTag(TAG_PAL_BALL_SELECTED))
+ {
+ if (sprite->animEnded)
+ {
+ if (sprite->data[0] != 0)
+ {
+ sprite->data[0]--;
+ }
+ else if (Random() % 5 == 0)
+ {
+ StartSpriteAnim(sprite, 0);
+ sprite->data[0] = 32;
+ }
+ else
+ {
+ StartSpriteAnim(sprite, 1);
+ }
+ }
+ else
+ {
+ StartSpriteAnimIfDifferent(sprite, 1);
+ }
+ }
+ else
+ {
+ StartSpriteAnimIfDifferent(sprite, 0);
+ }
+}
+
+static void Select_CB2(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTextPrinters();
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+static void Select_VblankCb(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void DoBattleFactorySelectScreen(void)
+{
+ sFactorySelectScreen = NULL;
+ SetMainCallback2(CB2_InitSelectScreen);
+}
+
+static void CB2_InitSelectScreen(void)
+{
+ u8 taskId;
+
+ switch (gMain.state)
+ {
+ case 0:
+ if (sFactorySelectMons != NULL)
+ FREE_AND_SET_NULL(sFactorySelectMons);
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ CpuFill32(0, (void *)VRAM, VRAM_SIZE);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sSelect_BgTemplates, ARRAY_COUNT(sSelect_BgTemplates));
+ InitWindows(sSelect_WindowTemplates);
+ DeactivateAllTextPrinters();
+ gMain.state++;
+ break;
+ case 1:
+ sSelectMenuTilesetBuffer = Alloc(0x440);
+ sSelectMonCardBgTilesetBuffer = AllocZeroed(0x440);
+ sSelectMenuTilemapBuffer = Alloc(0x800);
+ sSelectMonCardBgTilemapBuffer = AllocZeroed(0x800);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WIN1H, 0);
+ SetGpuReg(REG_OFFSET_WIN1V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ gMain.state++;
+ break;
+ case 2:
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ FreeAllSpritePalettes();
+ CpuCopy16(gFrontierFactorySelectMenu_Gfx, sSelectMenuTilesetBuffer, 0x440);
+ CpuCopy16(gUnknown_0861033C, sSelectMonCardBgTilesetBuffer, 0x60);
+ LoadBgTiles(1, sSelectMenuTilesetBuffer, 0x440, 0);
+ LoadBgTiles(3, sSelectMonCardBgTilesetBuffer, 0x60, 0);
+ CpuCopy16(gFrontierFactorySelectMenu_Tilemap, sSelectMenuTilemapBuffer, 0x800);
+ LoadBgTilemap(1, sSelectMenuTilemapBuffer, 0x800, 0);
+ LoadPalette(gFrontierFactorySelectMenu_Pal, 0, 0x40);
+ LoadPalette(gUnknown_0861046C, 0xF0, 8);
+ LoadPalette(gUnknown_0861046C, 0xE0, 10);
+ if (sFactorySelectScreen->fromSummaryScreen == TRUE)
+ gPlttBufferUnfaded[228] = sFactorySelectScreen->unk2A4;
+ LoadPalette(gUnknown_0861039C, 0x20, 4);
+ gMain.state++;
+ break;
+ case 3:
+ SetBgTilemapBuffer(3, sSelectMonCardBgTilemapBuffer);
+ CopyToBgTilemapBufferRect(3, gUnknown_0861023C, 11, 4, 8, 8);
+ CopyToBgTilemapBufferRect(3, gUnknown_0861023C, 2, 4, 8, 8);
+ CopyToBgTilemapBufferRect(3, gUnknown_0861023C, 20, 4, 8, 8);
+ CopyBgTilemapBufferToVram(3);
+ gMain.state++;
+ break;
+ case 4:
+ LoadSpritePalettes(gUnknown_086103F4);
+ LoadSpriteSheets(gUnknown_086103BC);
+ LoadCompressedObjectPic(gUnknown_086103E4);
+ ShowBg(0);
+ ShowBg(1);
+ SetVBlankCallback(Select_VblankCb);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP);
+ if (sFactorySelectScreen->fromSummaryScreen == TRUE)
+ {
+ Select_SetWinRegs(88, 152, 32, 96);
+ ShowBg(3);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
+ }
+ else
+ {
+ HideBg(3);
+ }
+ gMain.state++;
+ break;
+ case 5:
+ if (sFactorySelectScreen->fromSummaryScreen == TRUE)
+ sFactorySelectScreen->cursorPos = gUnknown_0203CF20;
+ Select_InitMonsData();
+ Select_InitAllSprites();
+ if (sFactorySelectScreen->fromSummaryScreen == TRUE)
+ Select_ShowSummaryMonSprite();
+ gMain.state++;
+ break;
+ case 6:
+ Select_PrintSelectMonString();
+ PutWindowTilemap(2);
+ gMain.state++;
+ break;
+ case 7:
+ Select_PrintMonCategory();
+ PutWindowTilemap(5);
+ gMain.state++;
+ break;
+ case 8:
+ Select_PrintMonSpecies();
+ PutWindowTilemap(1);
+ gMain.state++;
+ break;
+ case 9:
+ Select_PrintRentalPkmnString();
+ PutWindowTilemap(0);
+ gMain.state++;
+ break;
+ case 10:
+ sFactorySelectScreen->fadeSpeciesNameTaskId = CreateTask(Task_SelectFadeSpeciesName, 0);
+ if (!sFactorySelectScreen->fromSummaryScreen)
+ {
+ gTasks[sFactorySelectScreen->fadeSpeciesNameTaskId].data[0] = 0;
+ taskId = CreateTask(Task_HandleSelectionScreenChooseMons, 0);
+ gTasks[taskId].data[0] = 0;
+ }
+ else
+ {
+ gTasks[sFactorySelectScreen->fadeSpeciesNameTaskId].data[0] = 1;
+ sFactorySelectScreen->unk2A2 = FALSE;
+ taskId = CreateTask(Task_HandleSelectionScreenMenu, 0);
+ gTasks[taskId].data[0] = 13;
+ }
+ SetMainCallback2(Select_CB2);
+ break;
+ }
+}
+
+static void Select_InitMonsData(void)
+{
+ u8 i;
+
+ if (sFactorySelectScreen != NULL)
+ return;
+
+ sFactorySelectScreen = AllocZeroed(sizeof(*sFactorySelectScreen));
+ sFactorySelectScreen->cursorPos = 0;
+ sFactorySelectScreen->selectingMonsState = 1;
+ sFactorySelectScreen->fromSummaryScreen = FALSE;
+ for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
+ sFactorySelectScreen->mons[i].selectedId = 0;
+
+ if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_TENT)
+ CreateFrontierFactorySelectableMons(0);
+ else
+ CreateTentFactorySelectableMons(0);
+}
+
+static void Select_InitAllSprites(void)
+{
+ u8 i, cursorPos;
+ s16 x;
+
+ for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
+ {
+ sFactorySelectScreen->mons[i].spriteId = CreateSprite(&gUnknown_086105D8, (35 * i) + 32, 64, 1);
+ gSprites[sFactorySelectScreen->mons[i].spriteId].data[0] = 0;
+ Select_SetBallSpritePaletteNum(i);
+ }
+ cursorPos = sFactorySelectScreen->cursorPos;
+ x = gSprites[sFactorySelectScreen->mons[cursorPos].spriteId].pos1.x;
+ sFactorySelectScreen->cursorSpriteId = CreateSprite(&gUnknown_086105F0, x, 88, 0);
+ sFactorySelectScreen->menuCursor1SpriteId = CreateSprite(&gUnknown_08610608, 176, 112, 0);
+ sFactorySelectScreen->menuCursor2SpriteId = CreateSprite(&gUnknown_08610620, 176, 144, 0);
+
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = TRUE;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = TRUE;
+
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].centerToCornerVecX = 0;
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].centerToCornerVecY = 0;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].centerToCornerVecX = 0;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].centerToCornerVecY = 0;
+}
+
+static void Select_DestroyAllSprites(void)
+{
+ u8 i;
+
+ for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
+ DestroySprite(&gSprites[sFactorySelectScreen->mons[i].spriteId]);
+
+ DestroySprite(&gSprites[sFactorySelectScreen->cursorSpriteId]);
+ DestroySprite(&gSprites[sFactorySelectScreen->menuCursor1SpriteId]);
+ DestroySprite(&gSprites[sFactorySelectScreen->menuCursor2SpriteId]);
+}
+
+static void Select_UpdateBallCursorPosition(s8 direction)
+{
+ u8 cursorPos;
+ if (direction > 0) // Move cursor right.
+ {
+ if (sFactorySelectScreen->cursorPos != SELECTABLE_MONS_COUNT - 1)
+ sFactorySelectScreen->cursorPos++;
+ else
+ sFactorySelectScreen->cursorPos = 0;
+ }
+ else // Move cursor left.
+ {
+ if (sFactorySelectScreen->cursorPos != 0)
+ sFactorySelectScreen->cursorPos--;
+ else
+ sFactorySelectScreen->cursorPos = SELECTABLE_MONS_COUNT - 1;
+ }
+
+ cursorPos = sFactorySelectScreen->cursorPos;
+ gSprites[sFactorySelectScreen->cursorSpriteId].pos1.x = gSprites[sFactorySelectScreen->mons[cursorPos].spriteId].pos1.x;
+}
+
+static void Select_UpdateMenuCursorPosition(s8 direction)
+{
+ if (direction > 0) // Move cursor down.
+ {
+ if (sFactorySelectScreen->menuCursorPos != MENU_OPTIONS_COUNT - 1)
+ sFactorySelectScreen->menuCursorPos++;
+ else
+ sFactorySelectScreen->menuCursorPos = 0;
+ }
+ else // Move cursor up.
+ {
+ if (sFactorySelectScreen->menuCursorPos != 0)
+ sFactorySelectScreen->menuCursorPos--;
+ else
+ sFactorySelectScreen->menuCursorPos = MENU_OPTIONS_COUNT - 1;
+ }
+
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
+}
+
+static void Select_UpdateYesNoCursorPosition(s8 direction)
+{
+ if (direction > 0) // Move cursor down.
+ {
+ if (sFactorySelectScreen->yesNoCursorPos != 1)
+ sFactorySelectScreen->yesNoCursorPos++;
+ else
+ sFactorySelectScreen->yesNoCursorPos = 0;
+ }
+ else // Move cursor up.
+ {
+ if (sFactorySelectScreen->yesNoCursorPos != 0)
+ sFactorySelectScreen->yesNoCursorPos--;
+ else
+ sFactorySelectScreen->yesNoCursorPos = 1;
+ }
+
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->yesNoCursorPos * 16) + 112;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = (sFactorySelectScreen->yesNoCursorPos * 16) + 112;
+}
+
+static void Select_HandleMonSelectionChange(void)
+{
+ u8 i, paletteNum;
+ u8 cursorPos = sFactorySelectScreen->cursorPos;
+ if (sFactorySelectScreen->mons[cursorPos].selectedId) // Deselect a mon.
+ {
+ paletteNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_GREY);
+ if (sFactorySelectScreen->selectingMonsState == 3 && sFactorySelectScreen->mons[cursorPos].selectedId == 1)
+ {
+ for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
+ {
+ if (sFactorySelectScreen->mons[i].selectedId == 2)
+ break;
+ }
+ if (i == SELECTABLE_MONS_COUNT)
+ return;
+ else
+ sFactorySelectScreen->mons[i].selectedId = 1;
+ }
+ sFactorySelectScreen->mons[cursorPos].selectedId = 0;
+ sFactorySelectScreen->selectingMonsState--;
+ }
+ else // Select a mon.
+ {
+ paletteNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_SELECTED);
+ sFactorySelectScreen->mons[cursorPos].selectedId = sFactorySelectScreen->selectingMonsState;
+ sFactorySelectScreen->selectingMonsState++;
+ }
+
+ gSprites[sFactorySelectScreen->mons[cursorPos].spriteId].oam.paletteNum = paletteNum;
+}
+
+static void Select_SetBallSpritePaletteNum(u8 id)
+{
+ u8 palNum;
+
+ if (sFactorySelectScreen->mons[id].selectedId)
+ palNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_SELECTED);
+ else
+ palNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_GREY);
+
+ gSprites[sFactorySelectScreen->mons[id].spriteId].oam.paletteNum = palNum;
+}
+
+static void Task_FromSelectScreenToSummaryScreen(u8 taskId)
+{
+ u8 i;
+ u8 currMonId;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 6:
+ gPlttBufferUnfaded[228] = gPlttBufferFaded[228];
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ gTasks[taskId].data[0] = 7;
+ break;
+ case 7:
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(sFactorySelectScreen->fadeSpeciesNameTaskId);
+ sub_819F444(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0);
+ Select_DestroyAllSprites();
+ FREE_AND_SET_NULL(sSelectMenuTilesetBuffer);
+ FREE_AND_SET_NULL(sSelectMonCardBgTilesetBuffer);
+ FREE_AND_SET_NULL(sSelectMenuTilemapBuffer);
+ FREE_AND_SET_NULL(sSelectMonCardBgTilemapBuffer);
+ FreeAllWindowBuffers();
+ gTasks[taskId].data[0] = 8;
+ }
+ break;
+ case 8:
+ sFactorySelectScreen->unk2A4 = gPlttBufferUnfaded[228];
+ DestroyTask(taskId);
+ sFactorySelectScreen->fromSummaryScreen = TRUE;
+ currMonId = sFactorySelectScreen->cursorPos;
+ sFactorySelectMons = AllocZeroed(sizeof(struct Pokemon) * SELECTABLE_MONS_COUNT);
+ for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
+ sFactorySelectMons[i] = sFactorySelectScreen->mons[i].monData;
+ ShowPokemonSummaryScreen(1, sFactorySelectMons, currMonId, SELECTABLE_MONS_COUNT - 1, CB2_InitSelectScreen);
+ break;
+ }
+}
+
+static void Task_CloseSelectionScreen(u8 taskId)
+{
+ if (sFactorySelectScreen->unk2A0 != TRUE)
+ {
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ Select_CopyMonsToPlayerParty();
+ DestroyTask(sFactorySelectScreen->fadeSpeciesNameTaskId);
+ Select_DestroyAllSprites();
+ FREE_AND_SET_NULL(sSelectMenuTilesetBuffer);
+ FREE_AND_SET_NULL(sSelectMenuTilemapBuffer);
+ FREE_AND_SET_NULL(sSelectMonCardBgTilemapBuffer);
+ FREE_AND_SET_NULL(sFactorySelectScreen);
+ FreeAllWindowBuffers();
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+ }
+}
+
+static void Task_HandleSelectionScreenYesNo(u8 taskId)
+{
+ if (sFactorySelectScreen->unk2A0 != TRUE)
+ {
+ switch (gTasks[taskId].data[0])
+ {
+ case 10:
+ sub_819C4B4();
+ gTasks[taskId].data[0] = 4;
+ break;
+ case 4:
+ Select_ShowYesNoOptions();
+ gTasks[taskId].data[0] = 5;
+ break;
+ case 5:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (sFactorySelectScreen->yesNoCursorPos == 0)
+ {
+ sub_819C568();
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = Task_CloseSelectionScreen;
+ }
+ else
+ {
+ sub_819B958(4);
+ sub_819BC9C();
+ sFactorySelectScreen->unk2A2 = TRUE;
+ gTasks[taskId].data[0] = 1;
+ gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_819B958(4);
+ sub_819BC9C();
+ sFactorySelectScreen->unk2A2 = TRUE;
+ gTasks[taskId].data[0] = 1;
+ gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ Select_UpdateYesNoCursorPosition(-1);
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ Select_UpdateYesNoCursorPosition(1);
+ }
+ break;
+ }
+ }
+}
+
+static void Task_HandleSelectionScreenMenu(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 2:
+ if (!sFactorySelectScreen->fromSummaryScreen)
+ sub_819F2B4(&sFactorySelectScreen->unk294[1].field1, &sFactorySelectScreen->unk2A0, FALSE);
+ gTasks[taskId].data[0] = 9;
+ break;
+ case 9:
+ if (sFactorySelectScreen->unk2A0 != TRUE)
+ {
+ Select_ShowMenuOptions();
+ sFactorySelectScreen->fromSummaryScreen = FALSE;
+ gTasks[taskId].data[0] = 3;
+ }
+ break;
+ case 3:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ u8 retVal;
+ PlaySE(SE_SELECT);
+ retVal = Select_RunMenuOptionFunc();
+ if (retVal == 1)
+ {
+ sFactorySelectScreen->unk2A2 = TRUE;
+ gTasks[taskId].data[0] = 1;
+ gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
+ }
+ else if (retVal == 2)
+ {
+ gTasks[taskId].data[0] = 10;
+ gTasks[taskId].func = Task_HandleSelectionScreenYesNo;
+ }
+ else if (retVal == 3)
+ {
+ gTasks[taskId].data[0] = 11;
+ gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 6;
+ gTasks[taskId].func = Task_FromSelectScreenToSummaryScreen;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_819F3F8(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0, FALSE);
+ sub_819B958(3);
+ sFactorySelectScreen->unk2A2 = TRUE;
+ gTasks[taskId].data[0] = 1;
+ gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ Select_UpdateMenuCursorPosition(-1);
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ Select_UpdateMenuCursorPosition(1);
+ }
+ break;
+ case 12:
+ if (!gPaletteFade.active)
+ {
+ if (sFactorySelectScreen->fromSummaryScreen == TRUE)
+ {
+ gPlttBufferFaded[228] = sFactorySelectScreen->unk2A4;
+ gPlttBufferUnfaded[228] = gPlttBufferUnfaded[244];
+ }
+ sFactorySelectScreen->fromSummaryScreen = FALSE;
+ gTasks[taskId].data[0] = 3;
+ }
+ break;
+ case 13:
+ Select_ShowMenuOptions();
+ gTasks[taskId].data[0] = 12;
+ break;
+ }
+}
+
+static void Task_HandleSelectionScreenChooseMons(u8 taskId)
+{
+ if (sFactorySelectScreen->unk2A0 != TRUE)
+ {
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (!gPaletteFade.active)
+ {
+ gTasks[taskId].data[0] = 1;
+ sFactorySelectScreen->unk2A2 = TRUE;
+ }
+ break;
+ case 1:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sFactorySelectScreen->unk2A2 = FALSE;
+ gTasks[taskId].data[0] = 2;
+ gTasks[taskId].func = Task_HandleSelectionScreenMenu;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ PlaySE(SE_SELECT);
+ Select_UpdateBallCursorPosition(-1);
+ Select_PrintMonCategory();
+ Select_PrintMonSpecies();
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ PlaySE(SE_SELECT);
+ Select_UpdateBallCursorPosition(1);
+ Select_PrintMonCategory();
+ Select_PrintMonSpecies();
+ }
+ break;
+ case 11:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_819F3F8(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0, FALSE);
+ Select_PrintSelectMonString();
+ sFactorySelectScreen->unk2A2 = TRUE;
+ gTasks[taskId].data[0] = 1;
+ }
+ break;
+ }
+ }
+}
+
+static void CreateFrontierFactorySelectableMons(u8 firstMonId)
+{
+ u8 i, j = 0;
+ u8 ivs = 0;
+ u8 level = 0;
+ u8 happiness = 0;
+ u32 otId = 0;
+ u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u8 challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7;
+ u8 var_28 = 0;
+
+ gFacilityTrainerMons = gBattleFrontierMons;
+ if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50)
+ level = 100;
+ else
+ level = 50;
+
+ var_28 = sub_81A6F70(battleMode, lvlMode);
+ otId = T1_READ_32(gSaveBlock2Ptr->playerTrainerId);
+
+ for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
+ {
+ u16 monSetId = gSaveBlock2Ptr->frontier.field_E70[i].monId;
+ sFactorySelectScreen->mons[i + firstMonId].monSetId = monSetId;
+ if (i < var_28)
+ ivs = GetFactoryMonFixedIV(challengeNum + 1, 0);
+ else
+ ivs = GetFactoryMonFixedIV(challengeNum, 0);
+ CreateMonWithEVSpreadNatureOTID(&sFactorySelectScreen->mons[i + firstMonId].monData,
+ gFacilityTrainerMons[monSetId].species,
+ level,
+ gFacilityTrainerMons[monSetId].nature,
+ ivs,
+ gFacilityTrainerMons[monSetId].evSpread,
+ otId);
+ happiness = 0;
+ for (j = 0; j < 4; j++)
+ SetMonMoveAvoidReturn(&sFactorySelectScreen->mons[i + firstMonId].monData, gFacilityTrainerMons[monSetId].moves[j], j);
+ SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_FRIENDSHIP, &happiness);
+ SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
+ }
+}
+
+static void CreateTentFactorySelectableMons(u8 firstMonId)
+{
+ u8 i, j;
+ u8 ivs = 0;
+ u8 level = 30;
+ u8 happiness = 0;
+ u32 otId = 0;
+
+ gFacilityTrainerMons = gSlateportBattleTentMons;
+ otId = T1_READ_32(gSaveBlock2Ptr->playerTrainerId);
+
+ for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
+ {
+ u16 monSetId = gSaveBlock2Ptr->frontier.field_E70[i].monId;
+ sFactorySelectScreen->mons[i + firstMonId].monSetId = monSetId;
+ CreateMonWithEVSpreadNatureOTID(&sFactorySelectScreen->mons[i + firstMonId].monData,
+ gFacilityTrainerMons[monSetId].species,
+ level,
+ gFacilityTrainerMons[monSetId].nature,
+ ivs,
+ gFacilityTrainerMons[monSetId].evSpread,
+ otId);
+ happiness = 0;
+ for (j = 0; j < 4; j++)
+ SetMonMoveAvoidReturn(&sFactorySelectScreen->mons[i + firstMonId].monData, gFacilityTrainerMons[monSetId].moves[j], j);
+ SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_FRIENDSHIP, &happiness);
+ SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
+ }
+}
+
+static void Select_CopyMonsToPlayerParty(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < 3; i++)
+ {
+ for (j = 0; j < SELECTABLE_MONS_COUNT; j++)
+ {
+ if (sFactorySelectScreen->mons[j].selectedId == i + 1)
+ {
+ gPlayerParty[i] = sFactorySelectScreen->mons[j].monData;
+ gSaveBlock2Ptr->frontier.field_E70[i].monId = sFactorySelectScreen->mons[j].monSetId;
+ gSaveBlock2Ptr->frontier.field_E70[i].personality = GetMonData(&gPlayerParty[i].box, MON_DATA_PERSONALITY, NULL);
+ gSaveBlock2Ptr->frontier.field_E70[i].abilityBit = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ALT_ABILITY, NULL);
+ gSaveBlock2Ptr->frontier.field_E70[i].ivs = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ATK_IV, NULL);
+ break;
+ }
+ }
+ }
+ CalculatePlayerPartyCount();
+}
+
+static void Select_ShowMenuOptions(void)
+{
+ if (!sFactorySelectScreen->fromSummaryScreen)
+ sFactorySelectScreen->menuCursorPos = 0;
+
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.x = 176;
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.x = 208;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
+
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = FALSE;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = FALSE;
+
+ Select_PrintMenuOptions();
+}
+
+static void Select_ShowYesNoOptions(void)
+{
+ sFactorySelectScreen->yesNoCursorPos = 0;
+
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.x = 176;
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = 112;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.x = 208;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = 112;
+
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = FALSE;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = FALSE;
+
+ Select_PrintYesNoOptions();
+}
+
+static void sub_819B958(u8 windowId)
+{
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = TRUE;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = TRUE;
+ FillWindowPixelBuffer(windowId, 0);
+ CopyWindowToVram(windowId, 2);
+ ClearWindowTilemap(windowId);
+}
+
+static void Select_PrintRentalPkmnString(void)
+{
+ FillWindowPixelBuffer(0, 0);
+ AddTextPrinterParameterized(0, 1, gText_RentalPkmn2, 2, 1, 0, NULL);
+ CopyWindowToVram(0, 3);
+}
+
+static void Select_PrintMonSpecies(void)
+{
+ u16 species;
+ u8 x;
+ u8 monId = sFactorySelectScreen->cursorPos;
+
+ FillWindowPixelBuffer(1, 0);
+ species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL);
+ StringCopy(gStringVar4, gSpeciesNames[species]);
+ x = GetStringRightAlignXOffset(1, gStringVar4, 86);
+ AddTextPrinterParameterized3(1, 1, x, 1, gUnknown_08610479, 0, gStringVar4);
+ CopyWindowToVram(1, 2);
+}
+
+static void Select_PrintSelectMonString(void)
+{
+ const u8 *str = NULL;
+
+ FillWindowPixelBuffer(2, 0);
+ if (sFactorySelectScreen->selectingMonsState == 1)
+ str = gText_SelectFirstPkmn;
+ else if (sFactorySelectScreen->selectingMonsState == 2)
+ str = gText_SelectSecondPkmn;
+ else if (sFactorySelectScreen->selectingMonsState == 3)
+ str = gText_SelectThirdPkmn;
+ else
+ str = gText_TheseThreePkmnOkay;
+
+ AddTextPrinterParameterized(2, 1, str, 2, 5, 0, NULL);
+ CopyWindowToVram(2, 2);
+}
+
+static void Select_PrintCantSelectSameMon(void)
+{
+ FillWindowPixelBuffer(2, 0);
+ AddTextPrinterParameterized(2, 1, gText_CantSelectSamePkmn, 2, 5, 0, NULL);
+ CopyWindowToVram(2, 2);
+}
+
+static void Select_PrintMenuOptions(void)
+{
+ u8 selectedId = sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].selectedId;
+
+ PutWindowTilemap(3);
+ FillWindowPixelBuffer(3, 0);
+ AddTextPrinterParameterized3(3, 1, 7, 1, gUnknown_08610476, 0, gText_Summary);
+ if (selectedId != 0)
+ AddTextPrinterParameterized3(3, 1, 7, 17, gUnknown_08610476, 0, gText_Deselect);
+ else
+ AddTextPrinterParameterized3(3, 1, 7, 17, gUnknown_08610476, 0, gText_Rent);
+
+ AddTextPrinterParameterized3(3, 1, 7, 33, gUnknown_08610476, 0, gText_Others2);
+ CopyWindowToVram(3, 3);
+}
+
+static void Select_PrintYesNoOptions(void)
+{
+ PutWindowTilemap(4);
+ FillWindowPixelBuffer(4, 0);
+ AddTextPrinterParameterized3(4, 1, 7, 1, gUnknown_08610476, 0, gText_Yes2);
+ AddTextPrinterParameterized3(4, 1, 7, 17, gUnknown_08610476, 0, gText_No2);
+ CopyWindowToVram(4, 3);
+}
+
+static u8 Select_RunMenuOptionFunc(void)
+{
+ gUnknown_030062E8 = sSelect_MenuOptionFuncs[sFactorySelectScreen->menuCursorPos];
+ return gUnknown_030062E8();
+}
+
+static u8 Select_OptionRentDeselect(void)
+{
+ u8 selectedId = sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].selectedId;
+ u16 monSetId = sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].monSetId;
+ if (selectedId == 0 && !Select_AreSpeciesValid(monSetId))
+ {
+ Select_PrintCantSelectSameMon();
+ sub_819B958(3);
+ return 3;
+ }
+ else
+ {
+ sub_819F3F8(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0, FALSE);
+ Select_HandleMonSelectionChange();
+ Select_PrintSelectMonString();
+ sub_819B958(3);
+ if (sFactorySelectScreen->selectingMonsState > 3)
+ return 2;
+ else
+ return 1;
+ }
+}
+
+static u8 sub_819BC9C(void)
+{
+ sub_819C568();
+ Select_HandleMonSelectionChange();
+ Select_PrintSelectMonString();
+ sub_819B958(3);
+ if (sFactorySelectScreen->selectingMonsState > 3)
+ return 2;
+ else
+ return 1;
+}
+
+static u8 Select_OptionSummary(void)
+{
+ return 0;
+}
+
+static u8 Select_OptionOthers(void)
+{
+ sub_819F3F8(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0, FALSE);
+ sub_819B958(3);
+ return 1;
+}
+
+static void Select_PrintMonCategory(void)
+{
+ u16 species;
+ u8 text[30];
+ u8 x;
+ u8 monId = sFactorySelectScreen->cursorPos;
+ if (monId < SELECTABLE_MONS_COUNT)
+ {
+ PutWindowTilemap(5);
+ FillWindowPixelBuffer(5, 0);
+ species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL);
+ CopyMonCategoryText(SpeciesToNationalPokedexNum(species), text);
+ x = GetStringRightAlignXOffset(1, text, 0x76);
+ AddTextPrinterParameterized(5, 1, text, x, 1, 0, NULL);
+ CopyWindowToVram(5, 2);
+ }
+}
+
+static void Summary_ShowMonSprite(void)
+{
+ u8 monId = sFactorySelectScreen->cursorPos;
+ struct Pokemon *mon = &sFactorySelectScreen->mons[monId].monData;
+ u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
+ u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
+ u32 otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
+
+ sFactorySelectScreen->unk294[1].field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
+ gSprites[sFactorySelectScreen->unk294[1].field0].centerToCornerVecX = 0;
+ gSprites[sFactorySelectScreen->unk294[1].field0].centerToCornerVecY = 0;
+
+ sFactorySelectScreen->unk2A0 = FALSE;
+}
+
+static void sub_819BE20(bool8 arg0)
+{
+ sFactorySelectScreen->unk2A0 = arg0;
+}
+
+static void Select_ShowSummaryMonSprite(void)
+{
+ struct Pokemon *mon;
+ u16 species;
+ u32 personality, otId;
+
+ sFactorySelectScreen->unk294[1].field1 = CreateSprite(&gUnknown_08610638, 120, 64, 1);
+ StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->unk294[1].field1], 2);
+
+ mon = &sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].monData;
+ species = GetMonData(mon, MON_DATA_SPECIES, NULL);
+ personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
+ otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
+
+ sFactorySelectScreen->unk294[1].field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
+ gSprites[sFactorySelectScreen->unk294[1].field0].centerToCornerVecX = 0;
+ gSprites[sFactorySelectScreen->unk294[1].field0].centerToCornerVecY = 0;
+
+ gSprites[sFactorySelectScreen->unk294[1].field1].invisible = TRUE;
+}
+
+static void Select_ShowChosenMonsSprites(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < 3; i++)
+ {
+ for (j = 0; j < SELECTABLE_MONS_COUNT; j++)
+ {
+ if (sFactorySelectScreen->mons[j].selectedId == i + 1)
+ {
+ struct Pokemon *mon = &sFactorySelectScreen->mons[j].monData;
+ u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
+ u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
+ u32 otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
+
+ sFactorySelectScreen->unk294[i].field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, (i * 72) + 16, 32, i + 13, 0xFFFF);
+ gSprites[sFactorySelectScreen->unk294[i].field0].centerToCornerVecX = 0;
+ gSprites[sFactorySelectScreen->unk294[i].field0].centerToCornerVecY = 0;
+ break;
+ }
+ }
+ }
+ sFactorySelectScreen->unk2A0 = FALSE;
+}
+
+static void sub_819C040(struct Sprite *sprite)
+{
+ u8 taskId;
+
+ if (sprite->affineAnimEnded
+ && gSprites[sFactorySelectScreen->unk294[0].field1].affineAnimEnded
+ && gSprites[sFactorySelectScreen->unk294[2].field1].affineAnimEnded)
+ {
+ sprite->invisible = TRUE;
+ gSprites[sFactorySelectScreen->unk294[0].field1].invisible = TRUE;
+ gSprites[sFactorySelectScreen->unk294[2].field1].invisible = TRUE;
+
+ taskId = CreateTask(sub_819C1D0, 1);
+ gTasks[taskId].func(taskId);
+
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void sub_819C100(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded
+ && gSprites[sFactorySelectScreen->unk294[0].field1].affineAnimEnded
+ && gSprites[sFactorySelectScreen->unk294[2].field1].affineAnimEnded)
+ {
+ FreeOamMatrix(sprite->oam.matrixNum);
+ FreeOamMatrix(gSprites[sFactorySelectScreen->unk294[0].field1].oam.matrixNum);
+ FreeOamMatrix(gSprites[sFactorySelectScreen->unk294[2].field1].oam.matrixNum);
+
+ sFactorySelectScreen->unk2A0 = FALSE;
+
+ DestroySprite(&gSprites[sFactorySelectScreen->unk294[0].field1]);
+ DestroySprite(&gSprites[sFactorySelectScreen->unk294[2].field1]);
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_819C1D0(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[3] = 16;
+ task->data[24] = 224; // BUG: writing outside the array's bounds.
+ task->data[5] = 64;
+ task->data[8] = 65;
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[24]));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
+ break;
+ case 1:
+ ShowBg(3);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
+ break;
+ case 2:
+ task->data[5] -= 4;
+ task->data[8] += 4;
+ if (task->data[5] <= 32 || task->data[8] >= 96)
+ {
+ task->data[5] = 32;
+ task->data[8] = 96;
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ }
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
+ if (task->data[5] != 32)
+ return;
+ break;
+ default:
+ DestroyTask(taskId);
+ Select_ShowChosenMonsSprites();
+ return;
+ }
+ task->data[0]++;
+}
+
+static void sub_819C2D4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ default:
+ HideBg(3);
+ gSprites[sFactorySelectScreen->unk294[1].field1].invisible = FALSE;
+ gSprites[sFactorySelectScreen->unk294[1].field1].callback = sub_819C100;
+ gSprites[sFactorySelectScreen->unk294[0].field1].invisible = FALSE;
+ gSprites[sFactorySelectScreen->unk294[0].field1].callback = SpriteCallbackDummy;
+ gSprites[sFactorySelectScreen->unk294[2].field1].invisible = FALSE;
+ gSprites[sFactorySelectScreen->unk294[2].field1].callback = SpriteCallbackDummy;
+ StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->unk294[1].field1], 1);
+ StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->unk294[0].field1], 1);
+ StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->unk294[2].field1], 1);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ DestroyTask(taskId);
+ break;
+ case 0:
+ task->data[3] = 16;
+ task->data[24] = 224; // BUG: writing outside the array's bounds.
+ task->data[5] = 32;
+ task->data[8] = 96;
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[24]));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
+ task->data[0]++;
+ break;
+ case 1:
+ task->data[5] += 4;
+ task->data[8] -= 4;
+ if (task->data[5] >= 64 || task->data[8] <= 65)
+ {
+ task->data[5] = 64;
+ task->data[8] = 65;
+ }
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
+ if (task->data[5] == 64)
+ task->data[0]++;
+ break;
+ }
+}
+
+static void sub_819C4B4(void)
+{
+ sFactorySelectScreen->unk294[1].field1 = CreateSprite(&gUnknown_08610638, 120, 64, 1);
+ sFactorySelectScreen->unk294[0].field1 = CreateSprite(&gUnknown_08610638, 44, 64, 1);
+ sFactorySelectScreen->unk294[2].field1 = CreateSprite(&gUnknown_08610638, 196, 64, 1);
+
+ gSprites[sFactorySelectScreen->unk294[1].field1].callback = sub_819C040;
+ gSprites[sFactorySelectScreen->unk294[0].field1].callback = SpriteCallbackDummy;
+ gSprites[sFactorySelectScreen->unk294[2].field1].callback = SpriteCallbackDummy;
+
+ sFactorySelectScreen->unk2A0 = TRUE;
+}
+
+static void sub_819C568(void)
+{
+ u8 taskId;
+
+ FreeAndDestroyMonPicSprite(sFactorySelectScreen->unk294[0].field0);
+ FreeAndDestroyMonPicSprite(sFactorySelectScreen->unk294[1].field0);
+ FreeAndDestroyMonPicSprite(sFactorySelectScreen->unk294[2].field0);
+
+ taskId = CreateTask(sub_819C2D4, 1);
+ gTasks[taskId].func(taskId);
+
+ sFactorySelectScreen->unk2A0 = TRUE;
+}
+
+static void Select_SetWinRegs(s16 mWin0H, s16 nWin0H, s16 mWin0V, s16 nWin0V)
+{
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(mWin0H, nWin0H));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(mWin0V, nWin0V));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
+}
+
+static bool32 Select_AreSpeciesValid(u16 monSetId)
+{
+ u8 i, j;
+ u32 species = gFacilityTrainerMons[monSetId].species;
+ u8 selectState = sFactorySelectScreen->selectingMonsState;
+
+ for (i = 1; i < selectState; i++)
+ {
+ for (j = 0; j < SELECTABLE_MONS_COUNT; j++)
+ {
+ if (sFactorySelectScreen->mons[j].selectedId == i)
+ {
+ if (gFacilityTrainerMons[sFactorySelectScreen->mons[j].monSetId].species == species)
+ return FALSE;
+
+ break;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+static void Task_SelectFadeSpeciesName(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ sFactorySelectScreen->unk2A7 = 0;
+ sFactorySelectScreen->unk2A8 = 0;
+ sFactorySelectScreen->unk2A6 = TRUE;
+ gTasks[taskId].data[0] = 1;
+ break;
+ case 1:
+ if (sFactorySelectScreen->unk2A2)
+ {
+ if (sFactorySelectScreen->unk2A9)
+ {
+ gTasks[taskId].data[0] = 2;
+ }
+ else
+ {
+ sFactorySelectScreen->unk2A7++;
+ if (sFactorySelectScreen->unk2A7 > 6)
+ {
+ sFactorySelectScreen->unk2A7 = 0;
+ if (!sFactorySelectScreen->unk2A6)
+ sFactorySelectScreen->unk2A8--;
+ else
+ sFactorySelectScreen->unk2A8++;
+ }
+ BlendPalettes(0x4000, sFactorySelectScreen->unk2A8, 0);
+ if (sFactorySelectScreen->unk2A8 > 5)
+ {
+ sFactorySelectScreen->unk2A6 = FALSE;
+ }
+ else if (sFactorySelectScreen->unk2A8 == 0)
+ {
+ gTasks[taskId].data[0] = 2;
+ sFactorySelectScreen->unk2A6 = TRUE;
+ }
+ }
+ }
+ break;
+ case 2:
+ if (sFactorySelectScreen->unk2A9 > 14)
+ {
+ sFactorySelectScreen->unk2A9 = 0;
+ gTasks[taskId].data[0] = 1;
+ }
+ else
+ {
+ sFactorySelectScreen->unk2A9++;
+ }
+ break;
+ }
+}
+
+// Swap Screen's section begins here.
+
+static void Swap_CB2(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTextPrinters();
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+static void Swap_VblankCb(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void CopySwappedMonData(void)
+{
+ u8 happiness;
+
+ gPlayerParty[sFactorySwapScreen->playerMonId] = gEnemyParty[sFactorySwapScreen->enemyMonId];
+ happiness = 0;
+ SetMonData(&gPlayerParty[sFactorySwapScreen->playerMonId], MON_DATA_FRIENDSHIP, &happiness);
+ gSaveBlock2Ptr->frontier.field_E70[sFactorySwapScreen->playerMonId].monId = gSaveBlock2Ptr->frontier.field_E70[sFactorySwapScreen->enemyMonId + 3].monId;
+ gSaveBlock2Ptr->frontier.field_E70[sFactorySwapScreen->playerMonId].ivs = gSaveBlock2Ptr->frontier.field_E70[sFactorySwapScreen->enemyMonId + 3].ivs;
+ gSaveBlock2Ptr->frontier.field_E70[sFactorySwapScreen->playerMonId].personality = GetMonData(&gEnemyParty[sFactorySwapScreen->enemyMonId], MON_DATA_PERSONALITY, NULL);
+ gSaveBlock2Ptr->frontier.field_E70[sFactorySwapScreen->playerMonId].abilityBit = GetBoxMonData(&gEnemyParty[sFactorySwapScreen->enemyMonId].box, MON_DATA_ALT_ABILITY, NULL);
+}
+
+static void Task_FromSwapScreenToSummaryScreen(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 6:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ gTasks[taskId].data[0] = 7;
+ break;
+ case 7:
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(sFactorySwapScreen->fadeSpeciesNameTaskId);
+ sub_819F444(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30);
+ Swap_DestroyAllSprites();
+ FREE_AND_SET_NULL(sSwapMenuTilesetBuffer);
+ FREE_AND_SET_NULL(sSwapMonCardBgTilesetBuffer);
+ FREE_AND_SET_NULL(sSwapMenuTilemapBuffer);
+ FREE_AND_SET_NULL(sSwapMonCardBgTilemapBuffer);
+ FreeAllWindowBuffers();
+ gTasks[taskId].data[0] = 8;
+ }
+ break;
+ case 8:
+ DestroyTask(taskId);
+ sFactorySwapScreen->fromSummaryScreen = TRUE;
+ sFactorySwapScreen->unk24 = gPlttBufferUnfaded[244];
+ ShowPokemonSummaryScreen(0, gPlayerParty, sFactorySwapScreen->cursorPos, 3 - 1, CB2_InitSwapScreen);
+ break;
+ }
+}
+
+static void Task_CloseSwapScreen(u8 taskId)
+{
+ if (sFactorySwapScreen->unk30 != TRUE)
+ {
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (sFactorySwapScreen->monSwapped == TRUE)
+ {
+ gTasks[taskId].data[0]++;
+ gSpecialVar_Result = 0;
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 2;
+ gSpecialVar_Result = 1;
+ }
+ break;
+ case 1:
+ if (sFactorySwapScreen->monSwapped == TRUE)
+ {
+ sFactorySwapScreen->enemyMonId = sFactorySwapScreen->cursorPos;
+ CopySwappedMonData();
+ }
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ if (!UpdatePaletteFade())
+ {
+ DestroyTask(sFactorySwapScreen->fadeSpeciesNameTaskId);
+ Swap_DestroyAllSprites();
+ FREE_AND_SET_NULL(sSwapMenuTilesetBuffer);
+ FREE_AND_SET_NULL(sSwapMonCardBgTilesetBuffer);
+ FREE_AND_SET_NULL(sSwapMenuTilemapBuffer);
+ FREE_AND_SET_NULL(sSwapMonCardBgTilemapBuffer);
+ FREE_AND_SET_NULL(sFactorySwapScreen);
+ FreeAllWindowBuffers();
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+ }
+}
+
+static void Task_HandleSwapScreenYesNo(u8 taskId)
+{
+ u16 loPtr, hiPtr;
+
+ if (sFactorySwapScreen->unk30 != TRUE)
+ {
+ switch (gTasks[taskId].data[0])
+ {
+ case 4:
+ Swap_ShowYesNoOptions();
+ gTasks[taskId].data[0] = 5;
+ break;
+ case 5:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (sFactorySwapScreen->yesNoCursorPos == 0)
+ {
+ gTasks[taskId].data[1] = 1;
+ hiPtr = gTasks[taskId].data[6];
+ loPtr = gTasks[taskId].data[7];
+ gTasks[taskId].func = (void*)((hiPtr << 16) | loPtr);
+ }
+ else
+ {
+ gTasks[taskId].data[1] = 0;
+ sub_819EA64(4);
+ hiPtr = gTasks[taskId].data[6];
+ loPtr = gTasks[taskId].data[7];
+ gTasks[taskId].func = (void*)((hiPtr << 16) | loPtr);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gTasks[taskId].data[1] = 0;
+ sub_819EA64(4);
+ hiPtr = gTasks[taskId].data[6];
+ loPtr = gTasks[taskId].data[7];
+ gTasks[taskId].func = (void*)((hiPtr << 16) | loPtr);
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ Swap_UpdateYesNoCursorPosition(-1);
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ Swap_UpdateYesNoCursorPosition(1);
+ }
+ break;
+ }
+ }
+}
+
+static void sub_819CBDC(u8 taskId)
+{
+ if (gTasks[taskId].data[1] == 1)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = Task_CloseSwapScreen;
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 16;
+ gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
+ gTasks[taskId].data[5] = 1;
+ gTasks[taskId].func = sub_819D770;
+ }
+}
+
+static void sub_819CC24(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ Swap_PrintOnInfoWindow(gText_QuitSwapping);
+ sFactorySwapScreen->monSwapped = FALSE;
+ gTasks[taskId].data[0] = 4;
+ gTasks[taskId].data[6] = (u32)(sub_819CBDC) >> 16;
+ gTasks[taskId].data[7] = (u32)(sub_819CBDC);
+ gTasks[taskId].func = Task_HandleSwapScreenYesNo;
+ }
+}
+
+static void sub_819CC74(u8 taskId)
+{
+ sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
+ if (gTasks[taskId].data[1] == 1)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = Task_CloseSwapScreen;
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 16;
+ gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
+ gTasks[taskId].data[5] = 1;
+ gTasks[taskId].func = sub_819D770;
+ }
+}
+
+static void sub_819CCD4(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_819F2B4(&sFactorySwapScreen->unk2C.field1, &sFactorySwapScreen->unk30, TRUE);
+ Swap_PrintOnInfoWindow(gText_AcceptThisPkmn);
+ sFactorySwapScreen->monSwapped = TRUE;
+ gTasks[taskId].data[0] = 4;
+ gTasks[taskId].data[6] = (u32)(sub_819CC74) >> 16;
+ gTasks[taskId].data[7] = (u32)(sub_819CC74);
+ gTasks[taskId].func = Task_HandleSwapScreenYesNo;
+ }
+}
+
+static void Task_HandleSwapScreenMenu(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 2:
+ if (!sFactorySwapScreen->fromSummaryScreen)
+ sub_819F2B4(&sFactorySwapScreen->unk2C.field1, &sFactorySwapScreen->unk30, TRUE);
+ gTasks[taskId].data[0] = 9;
+ break;
+ case 9:
+ if (sFactorySwapScreen->unk30 != TRUE)
+ {
+ Swap_ShowMenuOptions();
+ gTasks[taskId].data[0] = 3;
+ }
+ break;
+ case 3:
+ if (sFactorySwapScreen->unk30 != TRUE)
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ Swap_RunMenuOptionFunc(taskId);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
+ sub_819EA64(3);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 16;
+ gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
+ gTasks[taskId].data[5] = 1;
+ gTasks[taskId].func = sub_819D770;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ Swap_UpdateMenuCursorPosition(-1);
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ Swap_UpdateMenuCursorPosition(1);
+ }
+ }
+ break;
+ }
+}
+
+static void Task_HandleSwapScreenChooseMons(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (!gPaletteFade.active)
+ {
+ sFactorySwapScreen->unk22 = TRUE;
+ gTasks[taskId].data[0] = 1;
+ }
+ break;
+ case 1:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sFactorySwapScreen->unk22 = FALSE;
+ Swap_PrintMonSpecies2();
+ sub_819EAC0();
+ Swap_RunActionFunc(taskId);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sFactorySwapScreen->unk22 = FALSE;
+ Swap_PrintMonSpecies2();
+ sub_819EAC0();
+ gTasks[taskId].data[6] = (u32)(sub_819CC24) >> 16;
+ gTasks[taskId].data[7] = (u32)(sub_819CC24);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].func = sub_819D588;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ Swap_UpdateBallCursorPosition(-1);
+ Swap_PrintMonCategory();
+ Swap_PrintMonSpecies();
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ Swap_UpdateBallCursorPosition(1);
+ Swap_PrintMonCategory();
+ Swap_PrintMonSpecies();
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ Swap_UpdateActionCursorPosition(1);
+ Swap_PrintMonCategory();
+ Swap_PrintMonSpecies();
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ Swap_UpdateActionCursorPosition(-1);
+ Swap_PrintMonCategory();
+ Swap_PrintMonSpecies();
+ }
+ break;
+ }
+}
+
+static void Task_SwapFadeSpeciesName(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ sFactorySwapScreen->unk27 = 0;
+ sFactorySwapScreen->unk28 = 0;
+ sFactorySwapScreen->unk26 = TRUE;
+ gTasks[taskId].data[0] = 1;
+ break;
+ case 1:
+ if (sFactorySwapScreen->unk22)
+ {
+ if (sFactorySwapScreen->unk29)
+ {
+ gTasks[taskId].data[0] = 2;
+ }
+ else
+ {
+ sFactorySwapScreen->unk27++;
+ if (sFactorySwapScreen->unk27 > 6)
+ {
+ sFactorySwapScreen->unk27 = 0;
+ if (!sFactorySwapScreen->unk26)
+ sFactorySwapScreen->unk28--;
+ else
+ sFactorySwapScreen->unk28++;
+ }
+ BlendPalettes(0x4000, sFactorySwapScreen->unk28, 0);
+ if (sFactorySwapScreen->unk28 > 5)
+ {
+ sFactorySwapScreen->unk26 = FALSE;
+ }
+ else if (sFactorySwapScreen->unk28 == 0)
+ {
+ gTasks[taskId].data[0] = 2;
+ sFactorySwapScreen->unk26 = TRUE;
+ }
+ }
+ }
+ break;
+ case 2:
+ if (sFactorySwapScreen->unk29 > 14)
+ {
+ sFactorySwapScreen->unk29 = 0;
+ gTasks[taskId].data[0] = 1;
+ }
+ else
+ {
+ sFactorySwapScreen->unk29++;
+ }
+ break;
+ }
+}
+
+static void Task_SwapFadeSpeciesName2(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ sFactorySwapScreen->unk27 = 0;
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ LoadPalette(&gPlttBufferUnfaded[0xF0], 0xE0, 0xA);
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ if (sFactorySwapScreen->unk28 > 15)
+ {
+ gTasks[taskId].data[4] = 1;
+ gTasks[taskId].data[0]++;
+ }
+ sFactorySwapScreen->unk27++;
+ if (sFactorySwapScreen->unk27 > 3)
+ {
+ sFactorySwapScreen->unk27 = 0;
+ gPlttBufferUnfaded[244] = gPlttBufferFaded[228];
+ sFactorySwapScreen->unk28++;
+ }
+ BlendPalettes(0x4000, sFactorySwapScreen->unk28, 0);
+ break;
+ }
+}
+
+static void sub_819D12C(u8 taskId)
+{
+ s8 i;
+ u8 var_2C;
+ bool8 destroyTask;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[0] = 1;
+ break;
+ case 1:
+ var_2C = 0;
+ for (i = 2; i >= 0; i--)
+ {
+ if (i != 2)
+ {
+ u8 posX = var_2C - gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
+ if (posX == 16 || gTasks[taskId].data[i + 2] == 1)
+ {
+ var_2C = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x += 10;
+ }
+ else if (posX > 16)
+ {
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[i + 1]].pos1.x - 48;
+ }
+ }
+ else
+ {
+ var_2C = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x += 10;
+ }
+
+ if (gTasks[taskId].data[i + 1] == 1)
+ {
+ if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x > (i * 48) + 72)
+ {
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = (i * 48) + 72;
+ destroyTask = TRUE;
+ }
+ else if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x == (i * 48) + 72)
+ {
+ destroyTask = TRUE;
+ }
+ else
+ {
+ destroyTask = FALSE;
+ }
+ }
+ else
+ {
+ destroyTask = FALSE;
+ }
+
+ if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x - 16 > 240)
+ {
+ var_2C = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = -16;
+ if (sFactorySwapScreen->inEnemyScreen == TRUE)
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].oam.paletteNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_SELECTED);
+ else
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].oam.paletteNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_GREY);
+
+ gTasks[taskId].data[i + 1] = 1;
+ }
+ }
+ if (destroyTask == TRUE)
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void sub_819D324(u8 taskId)
+{
+ u8 i, j;
+ s32 posX = 0;
+ s8 r4 = gTasks[taskId].data[3];
+ bool8 r1;
+ s16 currPosX;
+ u8 taskId2;
+
+ if (gTasks[taskId].data[2] == 1)
+ r4 *= -1;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ currPosX = gSprites[sFactorySwapScreen->unk8[0][0]].pos1.x;
+ if (!gTasks[taskId].data[2])
+ {
+ if (currPosX + r4 < 240)
+ {
+ r1 = TRUE;
+ }
+ else
+ {
+ r1 = FALSE;
+ posX = 240;
+ }
+ }
+ else
+ {
+ if (currPosX + r4 > 160)
+ {
+ r1 = TRUE;
+ }
+ else
+ {
+ r1 = FALSE;
+ posX = 160;
+ }
+ }
+
+ if (r1 == TRUE)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ for (j = 0; j < 2; j++)
+ gSprites[sFactorySwapScreen->unk8[j][i]].pos1.x += r4;
+ }
+ }
+ else
+ {
+ for (j = 0; j < 2; j++)
+ {
+ gSprites[sFactorySwapScreen->unk8[j][0]].pos1.x = posX;
+ gSprites[sFactorySwapScreen->unk8[j][1]].pos1.x = posX + 16;
+ gSprites[sFactorySwapScreen->unk8[j][2]].pos1.x = posX + 48;
+ }
+ taskId2 = gTasks[taskId].data[1];
+ gTasks[taskId2].data[3] = 1;
+ DestroyTask(taskId);
+ }
+ break;
+ case 1:
+ currPosX = gSprites[sFactorySwapScreen->unkE[0][0]].pos1.x;
+ if (!gTasks[taskId].data[2])
+ {
+ if (currPosX + r4 < 240)
+ {
+ r1 = TRUE;
+ }
+ else
+ {
+ r1 = FALSE;
+ posX = 240;
+ }
+ }
+ else
+ {
+ if (currPosX + r4 > 192)
+ {
+ r1 = TRUE;
+ }
+ else
+ {
+ r1 = FALSE;
+ posX = 192;
+ }
+ }
+
+ if (r1 == TRUE)
+ {
+ for (i = 0; i < 2; i++)
+ {
+ for (j = 0; j < 2; j++)
+ gSprites[sFactorySwapScreen->unkE[j][i]].pos1.x += r4;
+ }
+ }
+ else
+ {
+ for (j = 0; j < 2; j++)
+ {
+ gSprites[sFactorySwapScreen->unkE[j][0]].pos1.x = posX;
+ gSprites[sFactorySwapScreen->unkE[j][1]].pos1.x = posX + 16;
+ }
+ taskId2 = gTasks[taskId].data[1];
+ gTasks[taskId2].data[4] = 1;
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_819D588(u8 taskId)
+{
+ u8 anotherTaskId;
+ u16 loPtr, hiPtr;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ LoadPalette(gUnknown_08610918, 0xE0, sizeof(gUnknown_08610918));
+ Swap_PrintActionStrings();
+ PutWindowTilemap(5);
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ sub_819EA64(3);
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ BeginNormalPaletteFade(0x4000, 0, 0, 0x10, gUnknown_0860F13C[37]);
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ FillWindowPixelBuffer(5, 0);
+ CopyWindowToVram(5, 2);
+ if (sFactorySwapScreen->inEnemyScreen == TRUE)
+ {
+ anotherTaskId = CreateTask(sub_819D324, 0);
+ gTasks[taskId].data[3] = 0;
+ gTasks[anotherTaskId].data[1] = taskId;
+ gTasks[anotherTaskId].data[0] = 0;
+ gTasks[anotherTaskId].data[2] = 0;
+ gTasks[anotherTaskId].data[3] = 6;
+ gTasks[taskId].data[2] = 5;
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ anotherTaskId = CreateTask(sub_819D324, 0);
+ gTasks[taskId].data[3] = 1;
+ gTasks[taskId].data[4] = 0;
+ gTasks[anotherTaskId].data[1] = taskId;
+ gTasks[anotherTaskId].data[0] = 1;
+ gTasks[anotherTaskId].data[2] = 0;
+ gTasks[anotherTaskId].data[3] = 6;
+ gTasks[taskId].data[0] += 2;
+ }
+ }
+ break;
+ case 4:
+ if (gTasks[taskId].data[2] == 0)
+ {
+ anotherTaskId = CreateTask(sub_819D324, 0);
+ gTasks[taskId].data[4] = 0;
+ gTasks[anotherTaskId].data[1] = taskId;
+ gTasks[anotherTaskId].data[0] = 1;
+ gTasks[anotherTaskId].data[2] = 0;
+ gTasks[anotherTaskId].data[3] = 6;
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ gTasks[taskId].data[2]--;
+ }
+ break;
+ case 5:
+ if (gTasks[taskId].data[3] == 1 && gTasks[taskId].data[4] == 1)
+ {
+ gTasks[taskId].data[0] = gTasks[taskId].data[5];
+ loPtr = gTasks[taskId].data[6];
+ hiPtr = gTasks[taskId].data[7];
+ gTasks[taskId].func = (void *)((loPtr << 0x10) | (hiPtr));
+ }
+ break;
+ }
+}
+
+static void sub_819D770(u8 taskId)
+{
+ u8 anotherTaskId;
+ u16 loPtr, hiPtr;
+ if (sFactorySwapScreen->unk30 == TRUE)
+ return;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (sFactorySwapScreen->inEnemyScreen == TRUE)
+ {
+ anotherTaskId = CreateTask(sub_819D324, 0);
+ gTasks[taskId].data[3] = 0;
+ gTasks[anotherTaskId].data[1] = taskId;
+ gTasks[anotherTaskId].data[0] = 0;
+ gTasks[anotherTaskId].data[2] = 1;
+ gTasks[anotherTaskId].data[3] = 6;
+ gTasks[taskId].data[2] = 10;
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ anotherTaskId = CreateTask(sub_819D324, 0);
+ gTasks[taskId].data[3] = 1;
+ gTasks[taskId].data[4] = 0;
+ gTasks[anotherTaskId].data[1] = taskId;
+ gTasks[anotherTaskId].data[0] = 1;
+ gTasks[anotherTaskId].data[2] = 1;
+ gTasks[anotherTaskId].data[3] = 6;
+ gTasks[taskId].data[0] += 2;
+ }
+ break;
+ case 1:
+ if (gTasks[taskId].data[2] == 0)
+ {
+ anotherTaskId = CreateTask(sub_819D324, 0);
+ gTasks[taskId].data[4] = 0;
+ gTasks[anotherTaskId].data[1] = taskId;
+ gTasks[anotherTaskId].data[0] = 1;
+ gTasks[anotherTaskId].data[2] = 1;
+ gTasks[anotherTaskId].data[3] = 6;
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ gTasks[taskId].data[2]--;
+ }
+ break;
+ case 2:
+ if (gTasks[taskId].data[3] == 1 && gTasks[taskId].data[4] == 1)
+ {
+ gPlttBufferFaded[226] = gUnknown_0860F13C[37];
+ Swap_PrintActionStrings();
+ PutWindowTilemap(5);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 3:
+ BeginNormalPaletteFade(0x4000, 0, 0x10, 0, gUnknown_0860F13C[37]);
+ gTasks[taskId].data[0]++;
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ {
+ Swap_PrintOneActionString(0);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 5:
+ Swap_PrintOneActionString(1);
+ PutWindowTilemap(3);
+ gTasks[taskId].data[0]++;
+ break;
+ case 6:
+ FillWindowPixelBuffer(5, 0);
+ CopyWindowToVram(5, 2);
+ gTasks[taskId].data[0]++;
+ break;
+ case 7:
+ if (!sFactorySwapScreen->inEnemyScreen)
+ Swap_PrintOnInfoWindow(gText_SelectPkmnToSwap);
+ else
+ Swap_PrintOnInfoWindow(gText_SelectPkmnToAccept);
+ if (sFactorySwapScreen->cursorPos < 3)
+ gSprites[sFactorySwapScreen->cursorSpriteId].invisible = FALSE;
+ Swap_PrintMonCategory();
+ gTasks[taskId].data[0]++;
+ break;
+ case 8:
+ Swap_PrintMonSpecies3();
+ sub_819EADC();
+ sFactorySwapScreen->unk22 = TRUE;
+ gTasks[taskId].data[0] = gTasks[taskId].data[5];
+ loPtr = gTasks[taskId].data[6];
+ hiPtr = gTasks[taskId].data[7];
+ gTasks[taskId].func = (void *)((loPtr << 0x10) | (hiPtr));
+ break;
+ }
+}
+
+static void sub_819D9EC(u8 taskId)
+{
+ u8 i;
+ if (sFactorySwapScreen->unk30 == TRUE)
+ return;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ Swap_PrintMonSpecies3();
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ sub_819EADC();
+ gSprites[sFactorySwapScreen->cursorSpriteId].invisible = TRUE;
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ CreateTask(sub_819D12C, 0);
+ gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].func = Task_SwapFadeSpeciesName2;
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ if (!FuncIsActiveTask(sub_819D12C) && gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].data[4] == 1)
+ {
+ sub_819EAC0();
+ if (!sFactorySwapScreen->inEnemyScreen)
+ {
+ Swap_InitActions(ACTIONS_ENEMY_SCREEN);
+ }
+ else
+ {
+ Swap_InitActions(ACTIONS_PLAYER_SCREEN);
+ for (i = 0; i < 3; i++)
+ gSprites[sFactorySwapScreen->unk8[1][i]].invisible = TRUE;
+ }
+ gSprites[sFactorySwapScreen->cursorSpriteId].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].pos1.x;
+ gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].func = Task_SwapFadeSpeciesName;
+ sFactorySwapScreen->unk27 = 0;
+ sFactorySwapScreen->unk28 = 6;
+ sFactorySwapScreen->unk26 = FALSE;
+ gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].data[0] = 1;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 4:
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 0x10;
+ gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
+ gTasks[taskId].data[5] = 1;
+ gTasks[taskId].func = sub_819D770;
+ break;
+ }
+}
+
+static void Swap_InitStruct(void)
+{
+ if (sFactorySwapScreen == NULL)
+ {
+ sFactorySwapScreen = AllocZeroed(sizeof(*sFactorySwapScreen));
+ sFactorySwapScreen->cursorPos = 0;
+ sFactorySwapScreen->unk30 = FALSE;
+ sFactorySwapScreen->fromSummaryScreen = FALSE;
+ }
+}
+
+void DoBattleFactorySwapScreen(void)
+{
+ sFactorySwapScreen = NULL;
+ SetMainCallback2(CB2_InitSwapScreen);
+}
+
+static void CB2_InitSwapScreen(void)
+{
+ u8 taskId;
+
+ switch (gMain.state)
+ {
+ case 0:
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ CpuFill32(0, (void *)VRAM, VRAM_SIZE);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sSwap_BgTemplates, ARRAY_COUNT(sSwap_BgTemplates));
+ InitWindows(sSwap_WindowTemplates);
+ DeactivateAllTextPrinters();
+ gMain.state++;
+ break;
+ case 1:
+ sSwapMenuTilesetBuffer = Alloc(0x440);
+ sSwapMonCardBgTilesetBuffer = AllocZeroed(0x440);
+ sSwapMenuTilemapBuffer = Alloc(0x800);
+ sSwapMonCardBgTilemapBuffer = AllocZeroed(0x800);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WIN1H, 0);
+ SetGpuReg(REG_OFFSET_WIN1V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ gMain.state++;
+ break;
+ case 2:
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ FreeAllSpritePalettes();
+ ResetAllPicSprites();
+ CpuCopy16(gFrontierFactorySelectMenu_Gfx, sSwapMenuTilesetBuffer, 0x440);
+ CpuCopy16(gUnknown_0861033C, sSwapMonCardBgTilesetBuffer, 0x60);
+ LoadBgTiles(1, sSwapMenuTilesetBuffer, 0x440, 0);
+ LoadBgTiles(3, sSwapMonCardBgTilesetBuffer, 0x60, 0);
+ CpuCopy16(gFrontierFactorySelectMenu_Tilemap, sSwapMenuTilemapBuffer, 0x800);
+ LoadBgTilemap(1, sSwapMenuTilemapBuffer, 0x800, 0);
+ LoadPalette(gFrontierFactorySelectMenu_Pal, 0, 0x40);
+ LoadPalette(gUnknown_08610918, 0xF0, sizeof(gUnknown_08610918));
+ LoadPalette(gUnknown_08610918, 0xE0, sizeof(gUnknown_08610918));
+ LoadPalette(gUnknown_0861039C, 0x20, 4);
+ gMain.state++;
+ break;
+ case 3:
+ SetBgTilemapBuffer(3, sSwapMonCardBgTilemapBuffer);
+ CopyToBgTilemapBufferRect(3, gUnknown_0861023C, 11, 4, 8, 8);
+ CopyBgTilemapBufferToVram(3);
+ gMain.state++;
+ break;
+ case 4:
+ LoadSpritePalettes(gUnknown_086106B0);
+ LoadSpriteSheets(gUnknown_08610650);
+ LoadCompressedObjectPic(gUnknown_086106A0);
+ SetVBlankCallback(Swap_VblankCb);
+ gMain.state++;
+ break;
+ case 5:
+ if (sFactorySwapScreen->fromSummaryScreen == TRUE)
+ sFactorySwapScreen->cursorPos = gUnknown_0203CF20;
+ gMain.state++;
+ break;
+ case 6:
+ Swap_InitStruct();
+ Swap_InitAllSprites();
+ if (sFactorySwapScreen->fromSummaryScreen == TRUE)
+ Swap_ShowSummaryMonSprite();
+ Swap_InitActions(ACTIONS_PLAYER_SCREEN);
+ gMain.state++;
+ break;
+ case 7:
+ Swap_PrintOnInfoWindow(gText_SelectPkmnToSwap);
+ PutWindowTilemap(2);
+ gMain.state++;
+ break;
+ case 8:
+ Swap_PrintMonCategory();
+ PutWindowTilemap(8);
+ gMain.state++;
+ break;
+ case 9:
+ if (!sFactorySwapScreen->fromSummaryScreen)
+ Swap_PrintMonSpecies();
+ PutWindowTilemap(1);
+ gMain.state++;
+ break;
+ case 10:
+ Swap_PrintPkmnSwap();
+ PutWindowTilemap(0);
+ gMain.state++;
+ break;
+ case 11:
+ gMain.state++;
+ break;
+ case 12:
+ if (sFactorySwapScreen->fromSummaryScreen)
+ Swap_PrintMonSpecies2();
+ gMain.state++;
+ break;
+ case 13:
+ Swap_PrintActionStrings2();
+ PutWindowTilemap(3);
+ gMain.state++;
+ break;
+ case 14:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ if (sFactorySwapScreen->fromSummaryScreen == TRUE)
+ {
+ ShowBg(3);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
+ }
+ else
+ {
+ HideBg(3);
+ }
+ gMain.state++;
+ break;
+ case 15:
+ sFactorySwapScreen->fadeSpeciesNameTaskId = CreateTask(Task_SwapFadeSpeciesName, 0);
+ if (!sFactorySwapScreen->fromSummaryScreen)
+ {
+ gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].data[0] = 0;
+ taskId = CreateTask(Task_HandleSwapScreenChooseMons, 0);
+ gTasks[taskId].data[0] = 0;
+ }
+ else
+ {
+ sub_819EAF8();
+ gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].data[0] = 1;
+ sFactorySwapScreen->unk22 = FALSE;
+ taskId = CreateTask(Task_HandleSwapScreenMenu, 0);
+ gTasks[taskId].data[0] = 2;
+ }
+ SetMainCallback2(Swap_CB2);
+ break;
+ }
+}
+
+static void Swap_InitAllSprites(void)
+{
+ u8 i;
+ u8 x;
+ struct SpriteTemplate spriteTemplate;
+
+ spriteTemplate = gUnknown_08610834;
+ spriteTemplate.paletteTag = TAG_PAL_BALL_SELECTED;
+
+ for (i = 0; i < 3; i++)
+ {
+ sFactorySwapScreen->ballSpriteIds[i] = CreateSprite(&spriteTemplate, (48 * i) + 72, 64, 1);
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].data[0] = 0;
+ }
+ sFactorySwapScreen->cursorSpriteId = CreateSprite(&gUnknown_0861084C, gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].pos1.x, 88, 0);
+ sFactorySwapScreen->menuCursor1SpriteId = CreateSprite(&gUnknown_08610864, 176, 112, 0);
+ sFactorySwapScreen->menuCursor2SpriteId = CreateSprite(&gUnknown_0861087C, 176, 144, 0);
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = TRUE;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = TRUE;
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].centerToCornerVecY = 0;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].centerToCornerVecY = 0;
+
+ if (sFactorySwapScreen->fromSummaryScreen == TRUE)
+ x = 240;
+ else
+ x = 192;
+
+ spriteTemplate = gUnknown_0861084C;
+ spriteTemplate.tileTag = TAG_TILE_68;
+ sFactorySwapScreen->unk8[0][0] = CreateSprite(&spriteTemplate, 240, 120, 10);
+
+ spriteTemplate = gUnknown_08610864;
+ spriteTemplate.tileTag = TAG_TILE_69;
+ sFactorySwapScreen->unk8[0][1] = CreateSprite(&spriteTemplate, 256, 120, 10);
+ sFactorySwapScreen->unk8[0][2] = CreateSprite(&spriteTemplate, 288, 120, 10);
+
+ spriteTemplate = gUnknown_0861084C;
+ spriteTemplate.tileTag = TAG_TILE_6A;
+ sFactorySwapScreen->unk8[1][0] = CreateSprite(&spriteTemplate, 240, 120, 1);
+
+ spriteTemplate = gUnknown_08610864;
+ spriteTemplate.tileTag = TAG_TILE_6B;
+ sFactorySwapScreen->unk8[1][1] = CreateSprite(&spriteTemplate, 256, 120, 1);
+ spriteTemplate.tileTag = TAG_TILE_6C;
+ sFactorySwapScreen->unk8[1][2] = CreateSprite(&spriteTemplate, 288, 120, 1);
+
+ spriteTemplate = gUnknown_0861084C;
+ spriteTemplate.tileTag = TAG_TILE_68;
+ sFactorySwapScreen->unkE[0][0] = CreateSprite(&spriteTemplate, x, 144, 10);
+
+ spriteTemplate = gUnknown_08610864;
+ spriteTemplate.tileTag = TAG_TILE_69;
+ sFactorySwapScreen->unkE[0][1] = CreateSprite(&spriteTemplate, x + 16, 144, 10);
+
+ spriteTemplate = gUnknown_0861084C;
+ spriteTemplate.tileTag = TAG_TILE_6A;
+ sFactorySwapScreen->unkE[1][0] = CreateSprite(&spriteTemplate, x, 144, 1);
+
+ spriteTemplate = gUnknown_08610864;
+ spriteTemplate.tileTag = TAG_TILE_6C;
+ sFactorySwapScreen->unkE[1][1] = CreateSprite(&spriteTemplate, x + 16, 144, 1);
+
+ for (i = 0; i < 2; i++)
+ {
+ gSprites[sFactorySwapScreen->unk8[i][0]].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->unk8[i][0]].centerToCornerVecY = 0;
+ gSprites[sFactorySwapScreen->unk8[i][1]].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->unk8[i][1]].centerToCornerVecY = 0;
+ gSprites[sFactorySwapScreen->unk8[i][2]].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->unk8[i][2]].centerToCornerVecY = 0;
+ gSprites[sFactorySwapScreen->unkE[i][0]].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->unkE[i][0]].centerToCornerVecY = 0;
+ gSprites[sFactorySwapScreen->unkE[i][1]].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->unkE[i][1]].centerToCornerVecY = 0;
+
+ gSprites[sFactorySwapScreen->unk8[i][0]].invisible = TRUE;
+ gSprites[sFactorySwapScreen->unk8[i][1]].invisible = TRUE;
+ gSprites[sFactorySwapScreen->unk8[i][2]].invisible = TRUE;
+ gSprites[sFactorySwapScreen->unkE[i][0]].invisible = TRUE;
+ gSprites[sFactorySwapScreen->unkE[i][1]].invisible = TRUE;
+ }
+
+ gSprites[sFactorySwapScreen->unkE[0][0]].invisible = FALSE;
+ gSprites[sFactorySwapScreen->unkE[0][1]].invisible = FALSE;
+ gSprites[sFactorySwapScreen->unk8[0][0]].invisible = FALSE;
+ gSprites[sFactorySwapScreen->unk8[0][1]].invisible = FALSE;
+ gSprites[sFactorySwapScreen->unk8[0][2]].invisible = FALSE;
+}
+
+static void Swap_DestroyAllSprites(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < 3; i++)
+ DestroySprite(&gSprites[sFactorySwapScreen->ballSpriteIds[i]]);
+ DestroySprite(&gSprites[sFactorySwapScreen->cursorSpriteId]);
+ DestroySprite(&gSprites[sFactorySwapScreen->menuCursor1SpriteId]);
+ DestroySprite(&gSprites[sFactorySwapScreen->menuCursor2SpriteId]);
+ for (i = 0; i < 2; i++)
+ {
+ for (j = 0; j < 3; j++)
+ DestroySprite(&gSprites[sFactorySwapScreen->unk8[i][j]]);
+ }
+ for (i = 0; i < 2; i++)
+ {
+ for (j = 0; j < 2; j++)
+ DestroySprite(&gSprites[sFactorySwapScreen->unkE[i][j]]);
+ }
+}
+
+static void Swap_HandleActionCursorChange(u8 cursorId)
+{
+ if (cursorId < 3)
+ {
+ gSprites[sFactorySwapScreen->cursorSpriteId].invisible = FALSE;
+ sub_819E8EC();
+ gSprites[sFactorySwapScreen->cursorSpriteId].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[cursorId]].pos1.x;
+ }
+ else
+ {
+ gSprites[sFactorySwapScreen->cursorSpriteId].invisible = TRUE;
+ sub_819E838(sFactorySwapScreen->actionsData[cursorId].id);
+ }
+}
+
+static void Swap_UpdateBallCursorPosition(s8 direction)
+{
+ u8 cursorPos;
+ PlaySE(SE_SELECT);
+ if (direction > 0) // Move cursor right.
+ {
+ if (sFactorySwapScreen->cursorPos + 1 != sFactorySwapScreen->actionsCount)
+ sFactorySwapScreen->cursorPos++;
+ else
+ sFactorySwapScreen->cursorPos = 0;
+ }
+ else // Move cursor left.
+ {
+ if (sFactorySwapScreen->cursorPos != 0)
+ sFactorySwapScreen->cursorPos--;
+ else
+ sFactorySwapScreen->cursorPos = sFactorySwapScreen->actionsCount - 1;
+ }
+
+ cursorPos = sFactorySwapScreen->cursorPos;
+ Swap_HandleActionCursorChange(cursorPos);
+}
+
+static void Swap_UpdateActionCursorPosition(s8 direction)
+{
+ u8 cursorPos;
+ PlaySE(SE_SELECT);
+ if (direction > 0) // Move cursor down.
+ {
+ if (sFactorySwapScreen->cursorPos < 3)
+ sFactorySwapScreen->cursorPos = 3;
+ else if (sFactorySwapScreen->cursorPos + 1 != sFactorySwapScreen->actionsCount)
+ sFactorySwapScreen->cursorPos++;
+ else
+ sFactorySwapScreen->cursorPos = 0;
+ }
+ else // Move cursor up.
+ {
+ if (sFactorySwapScreen->cursorPos < 3)
+ sFactorySwapScreen->cursorPos = sFactorySwapScreen->actionsCount - 1;
+ else if (sFactorySwapScreen->cursorPos != 0)
+ sFactorySwapScreen->cursorPos--;
+ else
+ sFactorySwapScreen->cursorPos = sFactorySwapScreen->actionsCount - 1;
+ }
+
+ cursorPos = sFactorySwapScreen->cursorPos;
+ Swap_HandleActionCursorChange(cursorPos);
+}
+
+static void Swap_UpdateYesNoCursorPosition(s8 direction)
+{
+ if (direction > 0) // Move cursor down.
+ {
+ if (sFactorySwapScreen->yesNoCursorPos != 1)
+ sFactorySwapScreen->yesNoCursorPos++;
+ else
+ sFactorySwapScreen->yesNoCursorPos = 0;
+ }
+ else // Move cursor up.
+ {
+ if (sFactorySwapScreen->yesNoCursorPos != 0)
+ sFactorySwapScreen->yesNoCursorPos--;
+ else
+ sFactorySwapScreen->yesNoCursorPos = 1;
+ }
+
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->yesNoCursorPos * 16) + 112;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->yesNoCursorPos * 16) + 112;
+}
+
+static void Swap_UpdateMenuCursorPosition(s8 direction)
+{
+ PlaySE(SE_SELECT);
+ if (direction > 0) // Move cursor down.
+ {
+ if (sFactorySwapScreen->menuCursorPos != MENU_OPTIONS_COUNT - 1)
+ sFactorySwapScreen->menuCursorPos++;
+ else
+ sFactorySwapScreen->menuCursorPos = 0;
+ }
+ else // Move cursor up.
+ {
+ if (sFactorySwapScreen->menuCursorPos != 0)
+ sFactorySwapScreen->menuCursorPos--;
+ else
+ sFactorySwapScreen->menuCursorPos = MENU_OPTIONS_COUNT - 1;
+ }
+
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
+}
+
+static void sub_819E838(u8 arg0)
+{
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (arg0 == 2)
+ {
+ gSprites[sFactorySwapScreen->unk8[1][i]].invisible = FALSE;
+ if (i < 2)
+ gSprites[sFactorySwapScreen->unkE[1][i]].invisible = TRUE;
+ }
+ else if (arg0 == 3)
+ {
+ if (i < 2)
+ gSprites[sFactorySwapScreen->unkE[1][i]].invisible = FALSE;
+ gSprites[sFactorySwapScreen->unk8[1][i]].invisible = TRUE;
+ }
+ }
+}
+
+static void sub_819E8EC(void)
+{
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ gSprites[sFactorySwapScreen->unk8[1][i]].invisible = TRUE;
+ if (i < 2)
+ gSprites[sFactorySwapScreen->unkE[1][i]].invisible = TRUE;
+ }
+}
+
+static void Swap_ShowMenuOptions(void)
+{
+ if (sFactorySwapScreen->fromSummaryScreen == TRUE)
+ sFactorySwapScreen->fromSummaryScreen = FALSE;
+ else
+ sFactorySwapScreen->menuCursorPos = 0;
+
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.x = 176;
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.x = 208;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
+
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = FALSE;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = FALSE;
+
+ Swap_PrintMenuOptions();
+}
+
+static void Swap_ShowYesNoOptions(void)
+{
+ sFactorySwapScreen->yesNoCursorPos = 0;
+
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.x = 176;
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = 112;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.x = 208;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = 112;
+
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = FALSE;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = FALSE;
+
+ Swap_PrintYesNoOptions();
+}
+
+static void sub_819EA64(u8 windowId)
+{
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = TRUE;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = TRUE;
+ FillWindowPixelBuffer(windowId, 0);
+ CopyWindowToVram(windowId, 2);
+ ClearWindowTilemap(windowId);
+}
+
+static void sub_819EAC0(void)
+{
+ PutWindowTilemap(1);
+ FillWindowPixelBuffer(1, 0);
+ CopyWindowToVram(1, 2);
+}
+
+static void sub_819EADC(void)
+{
+ PutWindowTilemap(7);
+ FillWindowPixelBuffer(7, 0);
+ CopyWindowToVram(7, 2);
+}
+
+static void sub_819EAF8(void)
+{
+ sub_819EAC0();
+ PutWindowTilemap(5);
+ FillWindowPixelBuffer(5, 0);
+ CopyWindowToVram(5, 2);
+}
+
+static void Swap_PrintPkmnSwap(void)
+{
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized(0, 1, gText_PkmnSwap, 2, 1, 0, NULL);
+ CopyWindowToVram(0, 3);
+}
+
+static void Swap_PrintMonSpecies(void)
+{
+ u16 species;
+ u8 x;
+
+ FillWindowPixelBuffer(1, 0);
+ if (sFactorySwapScreen->cursorPos > 2)
+ {
+ CopyWindowToVram(1, 2);
+ }
+ else
+ {
+ u8 monId = sFactorySwapScreen->cursorPos;
+ if (!sFactorySwapScreen->inEnemyScreen)
+ species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, NULL);
+ else
+ species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
+ StringCopy(gStringVar4, gSpeciesNames[species]);
+ x = GetStringRightAlignXOffset(1, gStringVar4, 86);
+ AddTextPrinterParameterized3(1, 1, x, 1, gUnknown_08610925, 0, gStringVar4);
+ CopyWindowToVram(1, 3);
+ }
+}
+
+static void Swap_PrintOnInfoWindow(const u8 *str)
+{
+ FillWindowPixelBuffer(2, 0);
+ AddTextPrinterParameterized(2, 1, str, 2, 5, 0, NULL);
+ CopyWindowToVram(2, 2);
+}
+
+static void Swap_PrintMenuOptions(void)
+{
+ PutWindowTilemap(3);
+ FillWindowPixelBuffer(3, 0);
+ AddTextPrinterParameterized3(3, 1, 15, 1, gUnknown_08610922, 0, gText_Summary2);
+ AddTextPrinterParameterized3(3, 1, 15, 17, gUnknown_08610922, 0, gText_Swap);
+ AddTextPrinterParameterized3(3, 1, 15, 33, gUnknown_08610922, 0, gText_Rechoose);
+ CopyWindowToVram(3, 3);
+}
+
+static void Swap_PrintYesNoOptions(void)
+{
+ PutWindowTilemap(4);
+ FillWindowPixelBuffer(4, 0);
+ AddTextPrinterParameterized3(4, 1, 7, 1, gUnknown_08610922, 0, gText_Yes3);
+ AddTextPrinterParameterized3(4, 1, 7, 17, gUnknown_08610922, 0, gText_No3);
+ CopyWindowToVram(4, 3);
+}
+
+static void Swap_PrintActionString(const u8 *str, u32 y, u32 windowId)
+{
+ s32 x = GetStringRightAlignXOffset(0, str, 0x46);
+ AddTextPrinterParameterized3(windowId, 0, x, y, gUnknown_08610922, 0, str);
+}
+
+static void Swap_PrintActionStrings(void)
+{
+ FillWindowPixelBuffer(5, 0);
+ switch (sFactorySwapScreen->inEnemyScreen)
+ {
+ case TRUE:
+ Swap_PrintActionString(gText_PkmnForSwap, 0, 5);
+ case FALSE:
+ Swap_PrintActionString(gText_Cancel3, 24, 5);
+ break;
+ }
+ CopyWindowToVram(5, 3);
+}
+
+static void Swap_PrintActionStrings2(void)
+{
+ FillWindowPixelBuffer(3, 0);
+ switch (sFactorySwapScreen->inEnemyScreen)
+ {
+ case TRUE:
+ Swap_PrintActionString(gText_PkmnForSwap, 8, 3);
+ case FALSE:
+ Swap_PrintActionString(gText_Cancel3, 32, 3);
+ break;
+ }
+ CopyWindowToVram(3, 3);
+}
+
+static void Swap_PrintOneActionString(u8 which)
+{
+ switch (which)
+ {
+ case 0:
+ if (sFactorySwapScreen->inEnemyScreen == TRUE)
+ Swap_PrintActionString(gText_PkmnForSwap, 8, 3);
+ break;
+ case 1:
+ Swap_PrintActionString(gText_Cancel3, 32, 3);
+ break;
+ }
+ CopyWindowToVram(3, 3);
+}
+
+static void Swap_PrintMonSpecies2(void)
+{
+ u16 species;
+ u8 x;
+ u16 pal[5];
+
+ CpuCopy16(gUnknown_08610918, pal, 8);
+ if (!sFactorySwapScreen->fromSummaryScreen)
+ pal[4] = gPlttBufferFaded[228];
+ else
+ pal[4] = sFactorySwapScreen->unk24;
+ LoadPalette(pal, 0xF0, 0xA);
+
+ PutWindowTilemap(7);
+ FillWindowPixelBuffer(7, 0);
+ if (sFactorySwapScreen->cursorPos > 2)
+ {
+ CopyWindowToVram(7, 3);
+ }
+ else
+ {
+ u8 monId = sFactorySwapScreen->cursorPos;
+ if (!sFactorySwapScreen->inEnemyScreen)
+ species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, NULL);
+ else
+ species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
+ StringCopy(gStringVar4, gSpeciesNames[species]);
+ x = GetStringRightAlignXOffset(1, gStringVar4, 86);
+ AddTextPrinterParameterized3(7, 1, x, 1, gUnknown_08610925, 0, gStringVar4);
+ CopyWindowToVram(7, 3);
+ }
+}
+
+static void Swap_PrintMonSpecies3(void)
+{
+ u16 species;
+ u8 x;
+
+ LoadPalette(gUnknown_08610918, 0xE0, sizeof(gUnknown_08610918));
+ CpuCopy16(gPlttBufferUnfaded + 240, gPlttBufferFaded + 224, 10);
+
+ if (sFactorySwapScreen->cursorPos > 2)
+ {
+ CopyWindowToVram(1, 2);
+ }
+ else
+ {
+ u8 monId = sFactorySwapScreen->cursorPos;
+ if (!sFactorySwapScreen->inEnemyScreen)
+ species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, NULL);
+ else
+ species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
+ StringCopy(gStringVar4, gSpeciesNames[species]);
+ x = GetStringRightAlignXOffset(1, gStringVar4, 86);
+ AddTextPrinterParameterized3(1, 1, x, 1, gUnknown_08610925, 0, gStringVar4);
+ CopyWindowToVram(1, 3);
+ }
+}
+
+static void Swap_PrintMonCategory(void)
+{
+ u16 species;
+ u8 text[30];
+ u8 x;
+ u8 monId = sFactorySwapScreen->cursorPos;
+
+ FillWindowPixelBuffer(8, 0);
+ if (monId > 2)
+ {
+ CopyWindowToVram(8, 2);
+ }
+ else
+ {
+ PutWindowTilemap(8);
+ if (!sFactorySwapScreen->inEnemyScreen)
+ species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, NULL);
+ else
+ species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
+ CopyMonCategoryText(SpeciesToNationalPokedexNum(species), text);
+ x = GetStringRightAlignXOffset(1, text, 0x76);
+ AddTextPrinterParameterized(8, 1, text, x, 1, 0, NULL);
+ CopyWindowToVram(8, 2);
+ }
+}
+
+static void Swap_InitActions(u8 id)
+{
+ if (sFactorySwapScreen->fromSummaryScreen != TRUE)
+ {
+ switch (id)
+ {
+ case ACTIONS_PLAYER_SCREEN:
+ sFactorySwapScreen->inEnemyScreen = FALSE;
+ sFactorySwapScreen->cursorPos = 0;
+ sFactorySwapScreen->actionsCount = ARRAY_COUNT(sSwap_PlayerScreenActions);
+ sFactorySwapScreen->actionsData = sSwap_PlayerScreenActions;
+ break;
+ case ACTIONS_ENEMY_SCREEN:
+ sFactorySwapScreen->inEnemyScreen = TRUE;
+ sFactorySwapScreen->cursorPos = 0;
+ sFactorySwapScreen->actionsCount = ARRAY_COUNT(sSwap_EnemyScreenActions);
+ sFactorySwapScreen->actionsData = sSwap_EnemyScreenActions;
+ break;
+ }
+ }
+}
+
+static void Swap_RunMenuOptionFunc(u8 taskId)
+{
+ sSwap_CurrentTableFunc = sSwap_MenuOptionFuncs[sFactorySwapScreen->menuCursorPos];
+ sSwap_CurrentTableFunc(taskId);
+}
+
+static void sub_819F0CC(u8 taskId)
+{
+ sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
+ sFactorySwapScreen->playerMonId = sFactorySwapScreen->cursorPos;
+ sub_819EA64(3);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_819D9EC;
+}
+
+static void sub_819F114(u8 taskId)
+{
+ gTasks[taskId].data[0] = 6;
+ gTasks[taskId].func = Task_FromSwapScreenToSummaryScreen;
+}
+
+static void sub_819F134(u8 taskId)
+{
+ sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
+ sub_819EA64(3);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 0x10;
+ gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
+ gTasks[taskId].data[5] = 1;
+ gTasks[taskId].func = sub_819D770;
+}
+
+static void Swap_RunActionFunc(u8 taskId)
+{
+ sSwap_CurrentTableFunc = sFactorySwapScreen->actionsData[sFactorySwapScreen->cursorPos].func;
+ sSwap_CurrentTableFunc(taskId);
+}
+
+static void Swap_ActionCancel(u8 taskId)
+{
+ gTasks[taskId].data[6] = (u32)(sub_819CC24) >> 0x10;
+ gTasks[taskId].data[7] = (u32)(sub_819CC24);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].func = sub_819D588;
+}
+
+static void Swap_ActionPkmnForSwap(u8 taskId)
+{
+ gTasks[taskId].data[6] = (u32)(sub_819D9EC) >> 0x10;
+ gTasks[taskId].data[7] = (u32)(sub_819D9EC);
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_819D588;
+}
+
+static void Swap_ActionMon(u8 taskId)
+{
+ if (!sFactorySwapScreen->inEnemyScreen)
+ {
+ gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenMenu) >> 0x10;
+ gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenMenu);
+ gTasks[taskId].data[5] = 2;
+ }
+ else if (Swap_AlreadyHasSameSpecies(sFactorySwapScreen->cursorPos) == TRUE)
+ {
+ sub_819F2B4(&sFactorySwapScreen->unk2C.field1, &sFactorySwapScreen->unk30, TRUE);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[5] = 1;
+ gTasks[taskId].func = Task_SwapCantHaveSameMons;
+ return;
+ }
+ else
+ {
+ gTasks[taskId].data[6] = (u32)(sub_819CCD4) >> 0x10;
+ gTasks[taskId].data[7] = (u32)(sub_819CCD4);
+ gTasks[taskId].data[5] = 0;
+ }
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_819D588;
+}
+
+static void sub_819F2B4(u8 *arg0, bool8 *arg1, bool8 swapScreen)
+{
+ *arg0 = CreateSprite(&gUnknown_08610894, 120, 64, 1);
+ gSprites[*arg0].callback = sub_819F600;
+ gSprites[*arg0].data[7] = swapScreen;
+ *arg1 = TRUE;
+}
+
+static void Swap_ShowSummaryMonSprite(void)
+{
+ struct Pokemon *mon;
+ u16 species;
+ u32 personality, otId;
+
+ sFactorySwapScreen->unk2C.field1 = CreateSprite(&gUnknown_08610894, 120, 64, 1);
+ StartSpriteAffineAnim(&gSprites[sFactorySwapScreen->unk2C.field1], 2);
+
+ mon = &gPlayerParty[sFactorySwapScreen->cursorPos];
+ species = GetMonData(mon, MON_DATA_SPECIES, NULL);
+ personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
+ otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
+
+ sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, personality, otId, TRUE, 88, 32, 15, 0xFFFF); // BUG: otId and personality should be switched.
+ gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecY = 0;
+
+ gSprites[sFactorySwapScreen->unk2C.field1].invisible = TRUE;
+}
+
+static void sub_819F3F8(struct UnkFactoryStruct arg0, bool8 *arg1, bool8 swapScreen)
+{
+ u8 taskId;
+
+ FreeAndDestroyMonPicSprite(arg0.field0);
+ taskId = CreateTask(sub_819F7B4, 1);
+ gTasks[taskId].data[7] = swapScreen;
+ gTasks[taskId].data[6] = arg0.field1;
+ gTasks[taskId].func(taskId);
+ *arg1 = TRUE;
+}
+
+static void sub_819F444(struct UnkFactoryStruct arg0, bool8 *arg1)
+{
+ FreeAndDestroyMonPicSprite(arg0.field0);
+ FreeOamMatrix(gSprites[arg0.field1].oam.matrixNum);
+ DestroySprite(&gSprites[arg0.field1]);
+ *arg1 = FALSE;
+}
+
+static void Task_SwapCantHaveSameMons(u8 taskId)
+{
+ if (sFactorySwapScreen->unk30 == TRUE)
+ return;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ Swap_PrintOnInfoWindow(gText_SamePkmnInPartyAlready);
+ sFactorySwapScreen->monSwapped = FALSE;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ if (sFactorySwapScreen->unk30 != TRUE)
+ {
+ FillWindowPixelBuffer(5, 0);
+ CopyWindowToVram(5, 2);
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 3:
+ Swap_PrintOnInfoWindow(gText_SelectPkmnToAccept);
+ gTasks[taskId].data[0]++;
+ break;
+ case 4:
+ Swap_PrintMonSpecies3();
+ sub_819EADC();
+ sFactorySwapScreen->unk22 = TRUE;
+ gTasks[taskId].data[0] = gTasks[taskId].data[5];
+ gTasks[taskId].func = Task_HandleSwapScreenChooseMons;
+ break;
+ }
+}
+
+static bool8 Swap_AlreadyHasSameSpecies(u8 monId)
+{
+ u8 i;
+ u16 species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
+
+ for (i = 0; i < 3; i++)
+ {
+ if (i != sFactorySwapScreen->playerMonId && (u16)(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL)) == species)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_819F600(struct Sprite *sprite)
+{
+ u8 taskId;
+
+ if (sprite->affineAnimEnded)
+ {
+ sprite->invisible = TRUE;
+ taskId = CreateTask(sub_819F69C, 1);
+ gTasks[taskId].data[7] = sprite->data[7];
+ gTasks[taskId].func(taskId);
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void sub_819F654(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ FreeOamMatrix(sprite->oam.matrixNum);
+ if (sprite->data[7] == TRUE)
+ sFactorySwapScreen->unk30 = FALSE;
+ else
+ sub_819BE20(FALSE);
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_819F69C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[3] = 88;
+ task->data[24] = 152; // BUG: writing outside the array's bounds.
+ task->data[5] = 64;
+ task->data[8] = 65;
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[24]));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
+ break;
+ case 1:
+ ShowBg(3);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
+ break;
+ case 2:
+ task->data[5] -= 4;
+ task->data[8] += 4;
+ if (task->data[5] <= 32 || task->data[8] >= 96)
+ {
+ task->data[5] = 32;
+ task->data[8] = 96;
+ }
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
+ if (task->data[5] != 32)
+ return;
+ break;
+ default:
+ DestroyTask(taskId);
+ // UB: Should not use the task after it has been deleted.
+ if (gTasks[taskId].data[7] == TRUE)
+ Swap_ShowMonSprite();
+ else
+ Summary_ShowMonSprite();
+ return;
+ }
+ task->data[0]++;
+}
+
+static void sub_819F7B4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ default:
+ HideBg(3);
+ gSprites[task->data[6]].data[7] = task->data[7];
+ gSprites[task->data[6]].invisible = FALSE;
+ gSprites[task->data[6]].callback = sub_819F654;
+ StartSpriteAffineAnim(&gSprites[task->data[6]], 1);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ DestroyTask(taskId);
+ break;
+ case 0:
+ task->data[3] = 88;
+ task->data[24] = 152; // BUG: writing outside the array's bounds.
+ task->data[5] = 32;
+ task->data[8] = 96;
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[24]));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
+ task->data[0]++;
+ break;
+ case 1:
+ task->data[5] += 4;
+ task->data[8] -= 4;
+ if (task->data[5] >= 64 || task->data[8] <= 65)
+ {
+ task->data[5] = 64;
+ task->data[8] = 65;
+ }
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
+ if (task->data[5] == 64)
+ task->data[0]++;
+ break;
+ }
+}
+
+static void Swap_ShowMonSprite(void)
+{
+ struct Pokemon *mon;
+ u16 species;
+ u32 personality, otId;
+
+ if (!sFactorySwapScreen->inEnemyScreen)
+ mon = &gPlayerParty[sFactorySwapScreen->cursorPos];
+ else
+ mon = &gEnemyParty[sFactorySwapScreen->cursorPos];
+
+ species = GetMonData(mon, MON_DATA_SPECIES, NULL);
+ personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
+ otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
+
+ sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
+ gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecY = 0;
+
+ sFactorySwapScreen->unk30 = FALSE;
+}
diff --git a/src/battle_frontier_1.c b/src/battle_frontier_1.c
deleted file mode 100644
index ee8a42954..000000000
--- a/src/battle_frontier_1.c
+++ /dev/null
@@ -1,118 +0,0 @@
-#include "global.h"
-#include "event_data.h"
-#include "battle_setup.h"
-#include "overworld.h"
-#include "random.h"
-#include "battle_tower.h"
-
-extern void sub_8162614(u16, u8);
-
-extern void (* const gUnknown_0860DE50[])(void);
-extern const u32 gUnknown_0860DE98[][2];
-extern const u32 gUnknown_0860DEA8[][2];
-
-// code
-void sub_8195960(void)
-{
- gUnknown_0860DE50[gSpecialVar_0x8004]();
-}
-
-void sub_8195980(void)
-{
- u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
-
- gSaveBlock2Ptr->frontier.field_CA8 = 0;
- gSaveBlock2Ptr->frontier.field_CB2 = 0;
- gSaveBlock2Ptr->frontier.field_CA9_a = 0;
- gSaveBlock2Ptr->frontier.field_CA9_b = 0;
- if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]))
- gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] = 0;
-
- saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
- gTrainerBattleOpponent_A = 0;
-}
-
-void sub_8195A38(void)
-{
- u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
-
- switch (gSpecialVar_0x8005)
- {
- case 0:
- gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DC4[1];
- break;
- case 1:
- gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode];
- break;
- case 2:
- gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]) != 0);
- break;
- }
-}
-
-void sub_8195AE4(void)
-{
- u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
-
- switch (gSpecialVar_0x8005)
- {
- case 0:
- gSaveBlock2Ptr->frontier.field_DC4[1] = gSpecialVar_0x8006;
- break;
- case 1:
- gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] = gSpecialVar_0x8006;
- break;
- case 2:
- if (gSpecialVar_0x8006)
- gSaveBlock2Ptr->frontier.field_CDC |= gUnknown_0860DE98[battleMode][lvlMode];
- else
- gSaveBlock2Ptr->frontier.field_CDC &= gUnknown_0860DEA8[battleMode][lvlMode];
- break;
- }
-}
-
-void sub_8195BB0(void)
-{
- u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
- u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
-
- if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] < 50)
- gSpecialVar_Result = Random() % 3;
- else if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] < 99)
- gSpecialVar_Result = 3;
- else
- gSpecialVar_Result = 4;
-}
-
-void sub_8195C20(void)
-{
- gTrainerBattleOpponent_A = 5 *(Random() % 255) / 64u;
- sub_8162614(gTrainerBattleOpponent_A, 0);
-}
-
-void sub_8195C50(void)
-{
- if (gTrainerBattleOpponent_A < 300)
- ConvertBattleFrontierTrainerSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore);
-}
-
-/*
-void sub_8195C7C(void)
-{
- u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
-
- if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] < 9999)
- {
- u16 wat = 0;
- gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode]++;
- if (lvlMode < gSaveBlock2Ptr->frontier.field_DD0[battleMode][lvlMode])
- wat = 1;
- if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][wat] != 0)
- gSaveBlock2Ptr->frontier.field_DD0[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode];
- }
-}
-*/
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 05958395d..6f9d2db80 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -7,6 +7,7 @@
#include "battle_interface.h"
#include "main.h"
#include "malloc.h"
+#include "graphics.h"
#include "random.h"
#include "util.h"
#include "pokemon.h"
@@ -41,20 +42,6 @@ extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow;
extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow;
extern const u8 gEnemyMonElevation[];
-// graphics
-extern const u32 gUnknown_08C093F0[];
-extern const u32 gSubstituteDollTilemap[];
-extern const u32 gSubstituteDollGfx[];
-extern const u16 gSubstituteDollPal[];
-extern const u8 gHealthboxSinglesPlayerGfx[];
-extern const u8 gHealthboxSinglesOpponentGfx[];
-extern const u8 gHealthboxDoublesPlayerGfx[];
-extern const u8 gHealthboxDoublesOpponentGfx[];
-extern const u8 gHealthboxSafariGfx[];
-extern const u8 gBlankGfxCompressed[];
-extern const u16 gBattleInterface_BallStatusBarPal[];
-extern const u16 gBattleInterface_BallDisplayPal[];
-
extern u8 sub_80688F8(u8, u8 battlerId);
extern u8 pokemon_order_func(u8); // party menu
extern void sub_81B8C68(void);
@@ -874,7 +861,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
u32 personalityValue;
u32 otId;
u8 position;
- const u8 *lzPaletteData;
+ const u32 *lzPaletteData;
if (notTransform)
{
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 691e760a8..c7eb11293 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -3,6 +3,7 @@
#include "pokemon.h"
#include "battle_controllers.h"
#include "battle_interface.h"
+#include "graphics.h"
#include "sprite.h"
#include "window.h"
#include "string_util.h"
@@ -20,6 +21,7 @@
#include "international_string_util.h"
#include "safari_zone.h"
#include "battle_anim.h"
+#include "constants/battle_anim.h"
#include "constants/rgb.h"
#include "data2.h"
@@ -163,25 +165,18 @@ extern const u8 gText_DynColor2[];
extern const u8 gText_DynColor2Male[];
extern const u8 gText_DynColor1Female[];
-// graphics
-extern const u8 gBattleInterface_BallStatusBarGfx[];
-extern const u8 gBattleInterface_BallDisplayGfx[];
-extern const u16 gBattleInterface_BallStatusBarPal[];
-extern const u16 gBattleInterface_BallDisplayPal[];
-extern const u8 gHealthboxElementsGfxTable[][32];
-
// this file's functions
static const u8 *GetHealthboxElementGfxPtr(u8 elementId);
-static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId);
+static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId);
static void RemoveWindowOnHealthbox(u32 windowId);
static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId);
-static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 arg2);
-static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 arg2);
-static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 arg2);
+static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 windowWidth);
+static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth);
+static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth);
static void FillHealthboxObject(void *dest, u32 arg1, u32 arg2);
static void sub_8073E08(u8 taskId);
@@ -970,7 +965,7 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
healthBarSpritePtr->subspriteMode = 2;
healthBarSpritePtr->oam.priority = 1;
- CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void*)(OBJ_VRAM0 + healthBarSpritePtr->oam.tileNum * 32), 64);
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void*)(OBJ_VRAM0 + healthBarSpritePtr->oam.tileNum * TILE_SIZE_4BPP), 64);
gSprites[healthboxLeftSpriteId].hMain_HealthBarSpriteId = healthbarSpriteId;
gSprites[healthboxLeftSpriteId].hMain_Battler = battlerId;
@@ -1159,7 +1154,7 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
xPos += var1;
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId);
- spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER)
{
@@ -1187,7 +1182,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER && !IsDoubleBattle())
{
- spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
if (maxOrCurrent != HP_CURRENT) // singles, max
{
ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
@@ -1248,7 +1243,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
for (i = 0; i < 3; i++)
{
CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[i * 64 + 32],
- (void*)((OBJ_VRAM0) + 32 * (gSprites[healthboxSpriteId].oam.tileNum + var + i)),
+ (void*)((OBJ_VRAM0) + TILE_SIZE_4BPP * (gSprites[healthboxSpriteId].oam.tileNum + var + i)),
0x20);
}
}
@@ -1266,7 +1261,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
{
if (gBattleSpritesDataPtr->battlerData[gSprites[healthboxSpriteId].data[6]].hpNumbersNoBars) // don't print text if only bars are visible
{
- spriteTileNum = gSprites[gSprites[healthboxSpriteId].data[5]].oam.tileNum * 32;
+ spriteTileNum = gSprites[gSprites[healthboxSpriteId].data[5]].oam.tileNum * TILE_SIZE_4BPP;
objVram = (void*)(OBJ_VRAM0) + spriteTileNum;
if (maxOrCurrent != HP_CURRENT) // doubles, max hp
@@ -1276,7 +1271,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
HpTextIntoHealthboxObject((void*)(OBJ_VRAM0) + spriteTileNum + 0xC0, windowTileData, 2);
RemoveWindowOnHealthbox(windowId);
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_116),
- (void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * 32),
+ (void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP),
0x20);
}
else
@@ -1333,16 +1328,16 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
if (maxOrCurrent == HP_CURRENT)
{
CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[224],
- (void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * 32)),
+ (void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * TILE_SIZE_4BPP)),
0x20);
- CpuFill32(0, (void*)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * 32)), 0x20);
+ CpuFill32(0, (void*)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * TILE_SIZE_4BPP)), 0x20);
}
else
{
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) // Impossible to reach part, because the battlerId is from the opponent's side.
{
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_116),
- (void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * 32),
+ (void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * TILE_SIZE_4BPP),
0x20);
}
}
@@ -1354,7 +1349,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
static void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon)
{
u8 text[20];
- s32 j, var2;
+ s32 j, spriteTileNum;
u8 *barFontGfx;
u8 i, var, nature, healthBarSpriteId;
@@ -1381,12 +1376,12 @@ static void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon)
for (j = 1; j < var + 1; j++)
{
- var2 = (gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * 32;
- CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (var2), 0x20);
+ spriteTileNum = (gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * TILE_SIZE_4BPP;
+ CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (spriteTileNum), 0x20);
barFontGfx += 0x20;
- var2 = (8 + gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * 32;
- CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (var2), 0x20);
+ spriteTileNum = (8 + gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * TILE_SIZE_4BPP;
+ CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (spriteTileNum), 0x20);
barFontGfx += 0x20;
}
@@ -1403,13 +1398,13 @@ static void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon)
if (j <= 1)
{
CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[0x40 * j + 0x20],
- (void*)(OBJ_VRAM0) + (gSprites[healthBarSpriteId].oam.tileNum + 2 + j) * 32,
+ (void*)(OBJ_VRAM0) + (gSprites[healthBarSpriteId].oam.tileNum + 2 + j) * TILE_SIZE_4BPP,
32);
}
else
{
CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[0x40 * j + 0x20],
- (void*)(OBJ_VRAM0 + 0xC0) + (j + gSprites[healthBarSpriteId].oam.tileNum) * 32,
+ (void*)(OBJ_VRAM0 + 0xC0) + (j + gSprites[healthBarSpriteId].oam.tileNum) * TILE_SIZE_4BPP,
32);
}
}
@@ -1441,7 +1436,7 @@ void SwapHpBarsWithHpText(void)
{
healthBarSpriteId = gSprites[gHealthboxSpriteIds[i]].hMain_HealthBarSpriteId;
- CpuFill32(0, (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * 32), 0x100);
+ CpuFill32(0, (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 0x100);
UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_HP), HP_CURRENT);
UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), HP_MAX);
}
@@ -1449,7 +1444,7 @@ void SwapHpBarsWithHpText(void)
{
UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gPlayerParty[gBattlerPartyIndexes[i]], HEALTHBOX_HEALTH_BAR);
- CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_117), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * 32), 32);
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_117), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * TILE_SIZE_4BPP), 32);
}
}
else
@@ -1615,7 +1610,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
{
gSprites[ballIconSpritesIds[i]].oam.tileNum += 3;
}
- else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_2A0 & gBitTable[j]) // hmm...?
+ else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->arenaLostPlayerMons & gBitTable[j])
{
gSprites[ballIconSpritesIds[i]].oam.tileNum += 3;
}
@@ -1664,7 +1659,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
{
gSprites[ballIconSpritesIds[5 - var]].oam.tileNum += 3;
}
- else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_2A1 & gBitTable[j]) // hmm...?
+ else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->arenaLostOpponentMons & gBitTable[j]) // hmm...?
{
gSprites[ballIconSpritesIds[5 - var]].oam.tileNum += 3;
}
@@ -1889,9 +1884,9 @@ static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite)
if (sprite->pos2.x == 0)
{
- pan = PAN_SIDE_OPPONENT;
+ pan = SOUND_PAN_TARGET;
if (var1 != 0)
- pan = PAN_SIDE_PLAYER;
+ pan = SOUND_PAN_ATTACKER;
if (sprite->data[7] != 0)
PlaySE2WithPanning(SE_TB_KARA, pan);
@@ -1975,7 +1970,7 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
break;
}
- spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER)
{
@@ -2013,9 +2008,9 @@ static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
if (noStatus)
- CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_70), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * 32), 32);
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_70), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * TILE_SIZE_4BPP), 32);
else
- CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * 32), 32);
+ CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * TILE_SIZE_4BPP), 32);
}
static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
@@ -2073,10 +2068,10 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
statusGfxPtr = GetHealthboxElementGfxPtr(HEALTHBOX_GFX_39);
for (i = 0; i < 3; i++)
- CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * 32), 32);
+ CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * TILE_SIZE_4BPP), 32);
if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars)
- CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * 32), 64);
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 64);
TryAddPokeballIconToHealthbox(healthboxSpriteId, TRUE);
return;
@@ -2087,13 +2082,13 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
FillPalette(sStatusIconColors[statusPalId], pltAdder + 0x100, 2);
CpuCopy16(gPlttBufferUnfaded + 0x100 + pltAdder, (void*)(OBJ_PLTT + pltAdder * 2), 2);
- CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * 32), 96);
+ CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * TILE_SIZE_4BPP), 96);
if (IsDoubleBattle() == TRUE || GetBattlerSide(battlerId) == B_SIDE_OPPONENT)
{
if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars)
{
- CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_0), (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * 32), 32);
- CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_65), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 1) * 32), 32);
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_0), (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 32);
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_65), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 1) * TILE_SIZE_4BPP), 32);
}
}
TryAddPokeballIconToHealthbox(healthboxSpriteId, FALSE);
@@ -2165,7 +2160,7 @@ static void UpdateSafariBallsTextOnHealthbox(u8 healthboxSpriteId)
u8 *windowTileData;
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gText_SafariBalls, 0, 3, 2, &windowId);
- spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
TextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x40) + spriteTileNum, windowTileData, 6);
TextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x800) + spriteTileNum, windowTileData + 0xC0, 2);
RemoveWindowOnHealthbox(windowId);
@@ -2182,7 +2177,7 @@ static void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId)
ConvertIntToDecimalStringN(txtPtr, gNumSafariBalls, STR_CONV_MODE_LEFT_ALIGN, 2);
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, GetStringRightAlignXOffset(0, text, 0x2F), 3, 2, &windowId);
- spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
SafariTextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x2C0) + spriteTileNum, windowTileData, 2);
SafariTextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0xA00) + spriteTileNum, windowTileData + 0x40, 4);
RemoveWindowOnHealthbox(windowId);
@@ -2328,10 +2323,10 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
u8 healthbarSpriteId = gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].hMain_HealthBarSpriteId;
if (i < 2)
CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32,
- (void*)(OBJ_VRAM0 + (gSprites[healthbarSpriteId].oam.tileNum + 2 + i) * 32), 32);
+ (void*)(OBJ_VRAM0 + (gSprites[healthbarSpriteId].oam.tileNum + 2 + i) * TILE_SIZE_4BPP), 32);
else
CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32,
- (void*)(OBJ_VRAM0 + 64 + (i + gSprites[healthbarSpriteId].oam.tileNum) * 32), 32);
+ (void*)(OBJ_VRAM0 + 64 + (i + gSprites[healthbarSpriteId].oam.tileNum) * TILE_SIZE_4BPP), 32);
}
break;
case EXP_BAR:
@@ -2350,10 +2345,10 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
{
if (i < 4)
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32,
- (void*)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum + 0x24 + i) * 32), 32);
+ (void*)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum + 0x24 + i) * TILE_SIZE_4BPP), 32);
else
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32,
- (void*)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum) * 32), 32);
+ (void*)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum) * TILE_SIZE_4BPP), 32);
}
break;
}
@@ -2576,16 +2571,16 @@ u8 GetHPBarLevel(s16 hp, s16 maxhp)
return result;
}
-static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId)
+static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId)
{
u16 winId;
u8 color[3];
struct WindowTemplate winTemplate = sHealthboxWindowTemplate;
winId = AddWindow(&winTemplate);
- FillWindowPixelBuffer(winId, (arg3 << 4) | (arg3));
+ FillWindowPixelBuffer(winId, (bgColor << 4) | (bgColor));
- color[0] = arg3;
+ color[0] = bgColor;
color[1] = 1;
color[2] = 3;
@@ -2602,31 +2597,31 @@ static void RemoveWindowOnHealthbox(u32 windowId)
static void FillHealthboxObject(void *dest, u32 arg1, u32 arg2)
{
- CpuFill32(0x11111111 * arg1, dest, arg2 * 32);
+ CpuFill32(0x11111111 * arg1, dest, arg2 * TILE_SIZE_4BPP);
}
-static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 arg2)
+static void HpTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth)
{
- CpuCopy32(windowTileData + 256, dest, arg2 * 32);
+ CpuCopy32(windowTileData + 256, dest, windowWidth * TILE_SIZE_4BPP);
}
-static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 arg2)
+static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 windowWidth)
{
- CpuCopy32(windowTileData + 256, dest + 256, arg2 * 32);
-
- if (arg2 > 0)
+ CpuCopy32(windowTileData + 256, dest + 256, windowWidth * TILE_SIZE_4BPP);
+// + 256 as that prevents the top 4 blank rows of sHealthboxWindowTemplate from being copied
+ if (windowWidth > 0)
{
do
{
CpuCopy32(windowTileData + 20, dest + 20, 12);
dest += 32, windowTileData += 32;
- arg2--;
- } while (arg2 != 0);
+ windowWidth--;
+ } while (windowWidth != 0);
}
}
-static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 arg2)
+static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth)
{
- CpuCopy32(windowTileData, dest, arg2 * 32);
- CpuCopy32(windowTileData + 256, dest + 256, arg2 * 32);
+ CpuCopy32(windowTileData, dest, windowWidth * TILE_SIZE_4BPP);
+ CpuCopy32(windowTileData + 256, dest + 256, windowWidth * TILE_SIZE_4BPP);
}
diff --git a/src/battle_intro.c b/src/battle_intro.c
new file mode 100644
index 000000000..0ccc7e828
--- /dev/null
+++ b/src/battle_intro.c
@@ -0,0 +1,21 @@
+#include "global.h"
+#include "task.h"
+
+extern void task_battle_intro_80BC47C(u8);
+extern void task00_battle_intro_80BC6C8(u8);
+extern void task_battle_intro_80BC47C(u8);
+extern void task_battle_intro_anim(u8);
+
+const TaskFunc gUnknown_08597424[] =
+{
+ task_battle_intro_80BC47C,
+ task_battle_intro_80BC47C,
+ task00_battle_intro_80BC6C8,
+ task00_battle_intro_80BC6C8,
+ task00_battle_intro_80BC6C8,
+ task_battle_intro_80BC47C,
+ task_battle_intro_80BC47C,
+ task_battle_intro_80BC47C,
+ task_battle_intro_anim,
+ task_battle_intro_anim,
+};
diff --git a/src/battle_main.c b/src/battle_main.c
index 44cd65976..8bf722300 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -1,71 +1,61 @@
#include "global.h"
#include "battle.h"
-#include "recorded_battle.h"
-#include "main.h"
-#include "load_save.h"
-#include "gpu_regs.h"
-#include "scanline_effect.h"
-#include "battle_setup.h"
-#include "battle_scripts.h"
+#include "battle_ai_script_commands.h"
+#include "battle_arena.h"
+#include "battle_controllers.h"
#include "battle_interface.h"
-#include "pokemon.h"
-#include "palette.h"
-#include "task.h"
-#include "event_data.h"
-#include "constants/species.h"
+#include "battle_main.h"
+#include "battle_message.h"
+#include "battle_pyramid.h"
+#include "battle_scripts.h"
+#include "battle_setup.h"
+#include "battle_tower.h"
#include "berry.h"
-#include "text.h"
+#include "bg.h"
+#include "data2.h"
+#include "decompress.h"
+#include "dma3.h"
+#include "event_data.h"
+#include "evolution_scene.h"
+#include "gpu_regs.h"
+#include "international_string_util.h"
#include "item.h"
-#include "constants/items.h"
-#include "constants/hold_effects.h"
-#include "constants/trainers.h"
#include "link.h"
#include "link_rfu.h"
-#include "bg.h"
-#include "dma3.h"
-#include "string_util.h"
+#include "load_save.h"
+#include "main.h"
#include "malloc.h"
-#include "event_data.h"
#include "m4a.h"
-#include "window.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "pokeball.h"
+#include "pokedex.h"
+#include "pokemon.h"
#include "random.h"
-#include "constants/songs.h"
+#include "recorded_battle.h"
+#include "roamer.h"
+#include "safari_zone.h"
+#include "scanline_effect.h"
#include "sound.h"
-#include "battle_message.h"
#include "sprite.h"
-#include "util.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
#include "trig.h"
-#include "battle_ai_script_commands.h"
-#include "constants/battle_move_effects.h"
-#include "battle_controllers.h"
-#include "pokedex.h"
+#include "tv.h"
+#include "util.h"
+#include "window.h"
#include "constants/abilities.h"
+#include "constants/battle_move_effects.h"
+#include "constants/battle_string_ids.h"
+#include "constants/hold_effects.h"
+#include "constants/items.h"
#include "constants/moves.h"
#include "constants/rgb.h"
-#include "evolution_scene.h"
-#include "roamer.h"
-#include "tv.h"
-#include "safari_zone.h"
-#include "constants/battle_string_ids.h"
-#include "data2.h"
-#include "decompress.h"
-#include "international_string_util.h"
-#include "pokeball.h"
-#include "party_menu.h"
-#include "battle_main.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "constants/trainers.h"
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
-extern u16 gBattle_BG1_X;
-extern u16 gBattle_BG1_Y;
-extern u16 gBattle_BG2_X;
-extern u16 gBattle_BG2_Y;
-extern u16 gBattle_BG3_X;
-extern u16 gBattle_BG3_Y;
-extern u16 gBattle_WIN0H;
-extern u16 gBattle_WIN0V;
-extern u16 gBattle_WIN1H;
-extern u16 gBattle_WIN1V;
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern u8 gUnknown_0203CF00[];
@@ -93,17 +83,10 @@ extern const u8 gText_Confusion[];
extern const u8 gText_Love[];
// functions
-extern void GetFrontierTrainerName(u8* dst, u16 trainerId); // battle tower
-extern void sub_8166188(void); // battle tower, sets link battle mons level but why?
-extern void sub_8165B88(u8* dst, u16 trainerId); // battle tower, gets language
extern void sub_81B9150(void);
extern void sub_80B3AF8(u8 taskId); // cable club
-extern void sub_81A56B4(void); // battle frontier 2
-extern u8 sub_81A9E28(void); // battle frontier 2
-extern void sub_81A56E8(u8 battlerId); // battle frontier 2
extern void sub_81B8FB0(u8, u8); // party menu
extern u8 pokemon_order_func(u8); // party menu
-extern bool8 InBattlePyramid(void);
// this file's functions
static void CB2_InitBattleInternal(void);
@@ -170,13 +153,25 @@ static void HandleAction_WatchesCarefully(void);
static void HandleAction_SafariZoneBallThrow(void);
static void HandleAction_ThrowPokeblock(void);
static void HandleAction_GoNear(void);
-static void HandleAction_SafriZoneRun(void);
+static void HandleAction_SafariZoneRun(void);
static void HandleAction_WallyBallThrow(void);
static void HandleAction_Action11(void);
static void HandleAction_NothingIsFainted(void);
static void HandleAction_ActionFinished(void);
// EWRAM vars
+EWRAM_DATA u16 gBattle_BG0_X = 0;
+EWRAM_DATA u16 gBattle_BG0_Y = 0;
+EWRAM_DATA u16 gBattle_BG1_X = 0;
+EWRAM_DATA u16 gBattle_BG1_Y = 0;
+EWRAM_DATA u16 gBattle_BG2_X = 0;
+EWRAM_DATA u16 gBattle_BG2_Y = 0;
+EWRAM_DATA u16 gBattle_BG3_X = 0;
+EWRAM_DATA u16 gBattle_BG3_Y = 0;
+EWRAM_DATA u16 gBattle_WIN0H = 0;
+EWRAM_DATA u16 gBattle_WIN0V = 0;
+EWRAM_DATA u16 gBattle_WIN1H = 0;
+EWRAM_DATA u16 gBattle_WIN1V = 0;
EWRAM_DATA u8 gDisplayedStringBattle[300] = {0};
EWRAM_DATA u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT] = {0};
EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0};
@@ -443,10 +438,10 @@ const struct TrainerMoney gTrainerMoneyTable[] =
{TRAINER_CLASS_AROMA_LADY, 10},
{TRAINER_CLASS_RUIN_MANIAC, 15},
{TRAINER_CLASS_INTERVIEWER, 12},
- {TRAINER_CLASS_TUBER_1, 1},
- {TRAINER_CLASS_TUBER_2, 1},
+ {TRAINER_CLASS_TUBER_F, 1},
+ {TRAINER_CLASS_TUBER_M, 1},
{TRAINER_CLASS_SIS_AND_BRO, 3},
- {TRAINER_CLASS_COOLTRAINER_1, 12},
+ {TRAINER_CLASS_COOLTRAINER, 12},
{TRAINER_CLASS_HEX_MANIAC, 6},
{TRAINER_CLASS_LADY, 50},
{TRAINER_CLASS_BEAUTY, 20},
@@ -507,7 +502,7 @@ static void (* const sTurnActionsFuncsTable[])(void) =
HandleAction_SafariZoneBallThrow, // B_ACTION_SAFARI_BALL
HandleAction_ThrowPokeblock, // B_ACTION_SAFARI_POKEBLOCK
HandleAction_GoNear, // B_ACTION_SAFARI_GO_NEAR
- HandleAction_SafriZoneRun, // B_ACTION_SAFARI_RUN
+ HandleAction_SafariZoneRun, // B_ACTION_SAFARI_RUN
HandleAction_WallyBallThrow, // B_ACTION_WALLY_THROW
HandleAction_RunBattleScript, // B_ACTION_EXEC_SCRIPT
HandleAction_Action11, // not sure about this one
@@ -1146,9 +1141,9 @@ static void CB2_HandleStartMultiPartnerBattle(void)
gLinkPlayers[3].id = 3;
GetFrontierTrainerName(gLinkPlayers[2].name, gTrainerBattleOpponent_A);
GetFrontierTrainerName(gLinkPlayers[3].name, gTrainerBattleOpponent_B);
- sub_8165B88(&language, gTrainerBattleOpponent_A);
+ GetBattleTowerTrainerLanguage(&language, gTrainerBattleOpponent_A);
gLinkPlayers[2].language = language;
- sub_8165B88(&language, gTrainerBattleOpponent_B);
+ GetBattleTowerTrainerLanguage(&language, gTrainerBattleOpponent_B);
gLinkPlayers[3].language = language;
if (sub_800A520())
@@ -3016,7 +3011,7 @@ static void BattleStartClearSetData(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gSaveBlock2Ptr->optionsBattleSceneOff == TRUE)
gHitMarker |= HITMARKER_NO_ANIMATIONS;
}
- else if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && GetBattleStyleInRecordedBattle())
+ else if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && GetBattleSceneInRecordedBattle())
gHitMarker |= HITMARKER_NO_ANIMATIONS;
gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle;
@@ -3074,8 +3069,8 @@ static void BattleStartClearSetData(void)
gBattleResults.shinyWildMon = IsMonShiny(&gEnemyParty[0]);
- gBattleStruct->field_2A0 = 0;
- gBattleStruct->field_2A1 = 0;
+ gBattleStruct->arenaLostPlayerMons = 0;
+ gBattleStruct->arenaLostOpponentMons = 0;
}
void SwitchInClearSetData(void)
@@ -3086,7 +3081,7 @@ void SwitchInClearSetData(void)
if (gBattleMoves[gCurrentMove].effect != EFFECT_BATON_PASS)
{
- for (i = 0; i < BATTLE_STATS_NO; i++)
+ for (i = 0; i < NUM_BATTLE_STATS; i++)
gBattleMons[gActiveBattler].statStages[i] = 6;
for (i = 0; i < gBattlersCount; i++)
{
@@ -3195,7 +3190,7 @@ void FaintClearSetData(void)
s32 i;
u8 *ptr;
- for (i = 0; i < BATTLE_STATS_NO; i++)
+ for (i = 0; i < NUM_BATTLE_STATS; i++)
gBattleMons[gActiveBattler].statStages[i] = 6;
gBattleMons[gActiveBattler].status2 = 0;
@@ -3349,7 +3344,7 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].altAbility);
hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(gActiveBattler)];
*hpOnSwitchout = gBattleMons[gActiveBattler].hp;
- for (i = 0; i < BATTLE_STATS_NO; i++)
+ for (i = 0; i < NUM_BATTLE_STATS; i++)
gBattleMons[gActiveBattler].statStages[i] = 6;
gBattleMons[gActiveBattler].status2 = 0;
}
@@ -3412,7 +3407,7 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
}
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
- sub_81A56B4();
+ BattleArena_InitPoints();
}
gBattleMainFunc = BattleIntroDrawPartySummaryScreens;
}
@@ -5468,7 +5463,7 @@ static void HandleAction_UseMove(void)
}
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
- sub_81A56E8(gBattlerAttacker);
+ BattleArena_AddMindPoints(gBattlerAttacker);
gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
@@ -5595,7 +5590,7 @@ bool8 TryRunFromBattle(u8 battler)
if (InBattlePyramid())
{
gBattleStruct->runTries++;
- pyramidMultiplier = sub_81A9E28();
+ pyramidMultiplier = GetPyramidRunMultiplier();
speedVar = (gBattleMons[battler].speed * pyramidMultiplier) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30);
if (speedVar > (Random() & 0xFF))
{
@@ -5621,7 +5616,7 @@ bool8 TryRunFromBattle(u8 battler)
{
if (InBattlePyramid())
{
- pyramidMultiplier = sub_81A9E28();
+ pyramidMultiplier = GetPyramidRunMultiplier();
speedVar = (gBattleMons[battler].speed * pyramidMultiplier) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30);
if (speedVar > (Random() & 0xFF))
effect++;
@@ -5775,7 +5770,7 @@ static void HandleAction_GoNear(void)
gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
-static void HandleAction_SafriZoneRun(void)
+static void HandleAction_SafariZoneRun(void)
{
gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
PlaySE(SE_NIGERU);
diff --git a/src/battle_message.c b/src/battle_message.c
index a5f549733..47c4cbe1d 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -1,23 +1,25 @@
#include "global.h"
#include "battle.h"
+#include "battle_controllers.h"
#include "battle_message.h"
-#include "constants/battle_string_ids.h"
-#include "constants/moves.h"
-#include "text.h"
-#include "string_util.h"
-#include "constants/items.h"
-#include "constants/trainers.h"
+#include "battle_setup.h"
+#include "battle_tower.h"
+#include "data2.h"
#include "event_data.h"
-#include "link.h"
+#include "frontier_util.h"
+#include "international_string_util.h"
#include "item.h"
-#include "window.h"
-#include "palette.h"
-#include "battle_controllers.h"
-#include "battle_setup.h"
+#include "link.h"
#include "menu.h"
+#include "palette.h"
#include "recorded_battle.h"
-#include "international_string_util.h"
-#include "battle_frontier_2.h"
+#include "string_util.h"
+#include "text.h"
+#include "window.h"
+#include "constants/battle_string_ids.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/trainers.h"
struct BattleWindowText
{
@@ -35,7 +37,6 @@ struct BattleWindowText
extern u8 gUnknown_0203C7B4;
-extern const u8 gMoveNames[MOVES_COUNT][13];
extern const u8 gTrainerClassNames[][13];
extern const u16 gUnknown_08D85620[];
@@ -46,14 +47,10 @@ extern const u8 gText_PkmnTransferredSomeonesPC[];
extern const u8 gText_PkmnTransferredLanettesPC[];
extern u8 GetFrontierBrainTrainerClass(void); // battle_frontier_2
-extern u8 GetFrontierOpponentClass(u16 trainerId); // battle_tower
extern u8 GetTrainerHillOpponentClass(u16 trainerId); // pokenav
-extern u8 GetEreaderTrainerClassId(void); // battle_tower
extern void CopyFrontierBrainTrainerName(u8 *txtPtr); // battle_frontier_2
extern void GetTrainerHillTrainerName(u8 *txtPtr, u16 trainerId); // pokenav
-extern void GetEreaderTrainerName(u8 *txtPtr);
extern void CopyTrainerHillTrainerText(u8 arg0, u16 trainerId); // pokenav
-extern void GetFrontierTrainerName(u8 *dst, u16 trainerId);
// this file's functions
static void ChooseMoveUsedParticle(u8 *textPtr);
@@ -1370,7 +1367,8 @@ static const u8 sDummyWeirdStatusString[] = {EOS, EOS, EOS, EOS, EOS, EOS, EOS,
static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
{
- { // 0
+// The corresponding WindowTemplate is gStandardBattleWindowTemplates[] within src/battle_bg.c
+ { // 0 Standard battle message
.fillValue = 0xFF,
.fontId = 1,
.x = 0,
@@ -1382,7 +1380,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.bgColor = 15,
.shadowColor = 6,
},
- { // 1
+ { // 1 "What will (pokemon) do?"
.fillValue = 0xFF,
.fontId = 1,
.x = 1,
@@ -1394,7 +1392,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.bgColor = 15,
.shadowColor = 6,
},
- { // 2
+ { // 2 "Fight/Pokemon/Bag/Run"
.fillValue = 0xEE,
.fontId = 1,
.x = 0,
@@ -1406,7 +1404,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.bgColor = 14,
.shadowColor = 15,
},
- { // 3
+ { // 3 Top left move
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
@@ -1418,7 +1416,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.bgColor = 14,
.shadowColor = 15,
},
- { // 4
+ { // 4 Top right move
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
@@ -1430,7 +1428,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.bgColor = 14,
.shadowColor = 15,
},
- { // 5
+ { // 5 Bottom left move
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
@@ -1442,7 +1440,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.bgColor = 14,
.shadowColor = 15,
},
- { // 6
+ { // 6 Bottom right move
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
@@ -1454,7 +1452,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.bgColor = 14,
.shadowColor = 15,
},
- { // 7
+ { // 7 "PP"
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
@@ -1478,7 +1476,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.bgColor = 14,
.shadowColor = 15,
},
- { // 9
+ { // 9 PP remaining
.fillValue = 0xEE,
.fontId = 1,
.x = 2,
@@ -1490,7 +1488,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.bgColor = 14,
.shadowColor = 11,
},
- { // 10
+ { // 10 "type"
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
@@ -1502,7 +1500,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.bgColor = 14,
.shadowColor = 15,
},
- { // 11
+ { // 11 "switch which?"
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
@@ -1514,7 +1512,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.bgColor = 14,
.shadowColor = 15,
},
- { // 12
+ { // 12 "gText_BattleYesNoChoice"
.fillValue = 0xEE,
.fontId = 1,
.x = 0,
@@ -2582,7 +2580,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
case B_TXT_TRAINER1_LOSE_TEXT: // trainerA lose text
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
- CopyFrontierTrainerText(FRONTIER_LOSE_TEXT, gTrainerBattleOpponent_A);
+ CopyFrontierTrainerText(FRONTIER_PLAYER_WON_TEXT, gTrainerBattleOpponent_A);
toCpy = gStringVar4;
}
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
@@ -2598,7 +2596,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
- CopyFrontierTrainerText(FRONTIER_WIN_TEXT, gTrainerBattleOpponent_A);
+ CopyFrontierTrainerText(FRONTIER_PLAYER_LOST_TEXT, gTrainerBattleOpponent_A);
toCpy = gStringVar4;
}
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
@@ -2679,7 +2677,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
case B_TXT_TRAINER2_LOSE_TEXT:
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
- CopyFrontierTrainerText(FRONTIER_LOSE_TEXT, gTrainerBattleOpponent_B);
+ CopyFrontierTrainerText(FRONTIER_PLAYER_WON_TEXT, gTrainerBattleOpponent_B);
toCpy = gStringVar4;
}
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
@@ -2695,7 +2693,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
case B_TXT_TRAINER2_WIN_TEXT:
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
- CopyFrontierTrainerText(FRONTIER_WIN_TEXT, gTrainerBattleOpponent_B);
+ CopyFrontierTrainerText(FRONTIER_PLAYER_LOST_TEXT, gTrainerBattleOpponent_B);
toCpy = gStringVar4;
}
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
@@ -2941,7 +2939,7 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId)
{
const struct BattleWindowText *textInfo = sBattleTextOnWindowsInfo[gBattleScripting.windowsType];
bool32 copyToVram;
- struct TextSubPrinter textSubPrinter;
+ struct TextPrinterTemplate printerTemplate;
u8 speed;
if (windowId & 0x80)
@@ -2955,36 +2953,36 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId)
copyToVram = TRUE;
}
- textSubPrinter.current_text_offset = text;
- textSubPrinter.windowId = windowId;
- textSubPrinter.fontId = textInfo[windowId].fontId;
- textSubPrinter.x = textInfo[windowId].x;
- textSubPrinter.y = textInfo[windowId].y;
- textSubPrinter.currentX = textSubPrinter.x;
- textSubPrinter.currentY = textSubPrinter.y;
- textSubPrinter.letterSpacing = textInfo[windowId].letterSpacing;
- textSubPrinter.lineSpacing = textInfo[windowId].lineSpacing;
- textSubPrinter.fontColor_l = 0;
- textSubPrinter.fgColor = textInfo[windowId].fgColor;
- textSubPrinter.bgColor = textInfo[windowId].bgColor;
- textSubPrinter.shadowColor = textInfo[windowId].shadowColor;
-
- if (textSubPrinter.x == 0xFF)
+ printerTemplate.currentChar = text;
+ printerTemplate.windowId = windowId;
+ printerTemplate.fontId = textInfo[windowId].fontId;
+ printerTemplate.x = textInfo[windowId].x;
+ printerTemplate.y = textInfo[windowId].y;
+ printerTemplate.currentX = printerTemplate.x;
+ printerTemplate.currentY = printerTemplate.y;
+ printerTemplate.letterSpacing = textInfo[windowId].letterSpacing;
+ printerTemplate.lineSpacing = textInfo[windowId].lineSpacing;
+ printerTemplate.unk = 0;
+ printerTemplate.fgColor = textInfo[windowId].fgColor;
+ printerTemplate.bgColor = textInfo[windowId].bgColor;
+ printerTemplate.shadowColor = textInfo[windowId].shadowColor;
+
+ if (printerTemplate.x == 0xFF)
{
u32 width = sub_80397C4(gBattleScripting.windowsType, windowId);
- s32 alignX = GetStringCenterAlignXOffsetWithLetterSpacing(textSubPrinter.fontId, textSubPrinter.current_text_offset, width, textSubPrinter.letterSpacing);
- textSubPrinter.x = textSubPrinter.currentX = alignX;
+ s32 alignX = GetStringCenterAlignXOffsetWithLetterSpacing(printerTemplate.fontId, printerTemplate.currentChar, width, printerTemplate.letterSpacing);
+ printerTemplate.x = printerTemplate.currentX = alignX;
}
if (windowId == 0x16)
- gTextFlags.flag_1 = 0;
+ gTextFlags.useAlternateDownArrow = 0;
else
- gTextFlags.flag_1 = 1;
+ gTextFlags.useAlternateDownArrow = 1;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED))
- gTextFlags.flag_2 = 1;
+ gTextFlags.autoScroll = 1;
else
- gTextFlags.flag_2 = 0;
+ gTextFlags.autoScroll = 0;
if (windowId == 0 || windowId == 0x16)
{
@@ -2993,17 +2991,17 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId)
else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
speed = sRecordedBattleTextSpeeds[GetTextSpeedInRecordedBattle()];
else
- speed = GetPlayerTextSpeed();
+ speed = GetPlayerTextSpeedDelay();
- gTextFlags.flag_0 = 1;
+ gTextFlags.canABSpeedUpPrint = 1;
}
else
{
speed = textInfo[windowId].speed;
- gTextFlags.flag_0 = 0;
+ gTextFlags.canABSpeedUpPrint = 0;
}
- AddTextPrinter(&textSubPrinter, speed, NULL);
+ AddTextPrinter(&printerTemplate, speed, NULL);
if (copyToVram)
{
diff --git a/src/battle_palace.c b/src/battle_palace.c
new file mode 100644
index 000000000..4033712b6
--- /dev/null
+++ b/src/battle_palace.c
@@ -0,0 +1,188 @@
+#include "global.h"
+#include "event_data.h"
+#include "battle_setup.h"
+#include "overworld.h"
+#include "random.h"
+#include "battle_tower.h"
+#include "frontier_util.h"
+#include "item.h"
+#include "string_util.h"
+#include "constants/items.h"
+
+// This file's functions.
+static void sub_8195980(void);
+static void sub_8195A38(void);
+static void sub_8195AE4(void);
+static void sub_8195BB0(void);
+static void sub_8195C20(void);
+static void sub_8195C50(void);
+static void sub_8195C7C(void);
+static void sub_8195CE4(void);
+static void sub_8195D28(void);
+static void sub_8195DB8(void);
+
+// Const rom data.
+static void (* const sBattlePalaceFunctions[])(void) =
+{
+ sub_8195980,
+ sub_8195A38,
+ sub_8195AE4,
+ sub_8195BB0,
+ sub_8195C20,
+ sub_8195C50,
+ sub_8195C7C,
+ sub_8195CE4,
+ sub_8195D28,
+ sub_8195DB8,
+};
+
+static const u16 gUnknown_0860DE78[] = {ITEM_HP_UP, ITEM_PROTEIN, ITEM_IRON, ITEM_CALCIUM, ITEM_CARBOS, ITEM_ZINC};
+static const u16 gUnknown_0860DE84[] = {ITEM_BRIGHT_POWDER, ITEM_WHITE_HERB, ITEM_QUICK_CLAW, ITEM_LEFTOVERS, ITEM_MENTAL_HERB, ITEM_KINGS_ROCK, ITEM_FOCUS_BAND, ITEM_SCOPE_LENS, ITEM_CHOICE_BAND};
+
+static const u32 gUnknown_0860DE98[][2] =
+{
+ {0x10, 0x20},
+ {0x400000, 0x800000},
+};
+
+static const u32 gUnknown_0860DEA8[][2] =
+{
+ {~0x10, ~0x20},
+ {~0x400000, ~0x800000},
+};
+
+// code
+void CallBattlePalaceFunction(void)
+{
+ sBattlePalaceFunctions[gSpecialVar_0x8004]();
+}
+
+static void sub_8195980(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+
+ gSaveBlock2Ptr->frontier.field_CA8 = 0;
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
+ gSaveBlock2Ptr->frontier.field_CA9_a = 0;
+ gSaveBlock2Ptr->frontier.field_CA9_b = 0;
+ if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]))
+ gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = 0;
+
+ saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
+ gTrainerBattleOpponent_A = 0;
+}
+
+static void sub_8195A38(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DC6;
+ break;
+ case 1:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
+ break;
+ case 2:
+ gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]) != 0);
+ break;
+ }
+}
+
+static void sub_8195AE4(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ gSaveBlock2Ptr->frontier.field_DC6 = gSpecialVar_0x8006;
+ break;
+ case 1:
+ gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
+ break;
+ case 2:
+ if (gSpecialVar_0x8006)
+ gSaveBlock2Ptr->frontier.field_CDC |= gUnknown_0860DE98[battleMode][lvlMode];
+ else
+ gSaveBlock2Ptr->frontier.field_CDC &= gUnknown_0860DEA8[battleMode][lvlMode];
+ break;
+ }
+}
+
+static void sub_8195BB0(void)
+{
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 50)
+ gSpecialVar_Result = Random() % 3;
+ else if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 99)
+ gSpecialVar_Result = 3;
+ else
+ gSpecialVar_Result = 4;
+}
+
+static void sub_8195C20(void)
+{
+ gTrainerBattleOpponent_A = 5 *(Random() % 255) / 64u;
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
+}
+
+static void sub_8195C50(void)
+{
+ if (gTrainerBattleOpponent_A < 300)
+ FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore);
+}
+
+static void sub_8195C7C(void)
+{
+ u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 9999)
+ {
+ gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode]++;
+
+ // Whatever GF planned to do here, they messed up big time.
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][(lvlMode > gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode]) ? 1 : 0])
+ gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
+ }
+}
+
+static void sub_8195CE4(void)
+{
+ gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
+ VarSet(VAR_TEMP_0, 0);
+ gSaveBlock2Ptr->frontier.field_CA9_a = 1;
+ sub_81A4C30();
+}
+
+static void sub_8195D28(void)
+{
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] > 41)
+ gSaveBlock2Ptr->frontier.field_DC6 = gUnknown_0860DE84[Random() % ARRAY_COUNT(gUnknown_0860DE84)];
+ else
+ gSaveBlock2Ptr->frontier.field_DC6 = gUnknown_0860DE78[Random() % ARRAY_COUNT(gUnknown_0860DE78)];
+}
+
+static void sub_8195DB8(void)
+{
+ if (AddBagItem(gSaveBlock2Ptr->frontier.field_DC6, 1) == TRUE)
+ {
+ CopyItemName(gSaveBlock2Ptr->frontier.field_DC6, gStringVar1);
+ gSaveBlock2Ptr->frontier.field_DC6 = 0;
+ gSpecialVar_Result = TRUE;
+ }
+ else
+ {
+ gSpecialVar_Result = FALSE;
+ }
+}
diff --git a/src/battle_pike.c b/src/battle_pike.c
new file mode 100644
index 000000000..38d3e7d4a
--- /dev/null
+++ b/src/battle_pike.c
@@ -0,0 +1,1642 @@
+#include "global.h"
+#include "battle_pike.h"
+#include "event_data.h"
+#include "frontier_util.h"
+#include "fieldmap.h"
+#include "save.h"
+#include "battle.h"
+#include "random.h"
+#include "task.h"
+#include "battle_tower.h"
+#include "party_menu.h"
+#include "malloc.h"
+#include "palette.h"
+#include "script.h"
+#include "battle_setup.h"
+#include "constants/event_objects.h"
+#include "constants/battle_frontier.h"
+#include "constants/abilities.h"
+#include "constants/rgb.h"
+#include "constants/trainers.h"
+#include "constants/species.h"
+#include "constants/moves.h"
+
+#define PIKE_ROOM_SINGLE_BATTLE 0
+#define PIKE_ROOM_HEAL_FULL 1
+#define PIKE_ROOM_NPC 2
+#define PIKE_ROOM_STATUS 3
+#define PIKE_ROOM_HEAL_PART 4
+#define PIKE_ROOM_WILD_MONS 5
+#define PIKE_ROOM_HARD_BATTLE 6
+#define PIKE_ROOM_DOUBLE_BATTLE 7
+#define PIKE_ROOM_BRAIN 8
+
+// For the room with a status effect.
+#define PIKE_STATUS_KIRLIA 0
+#define PIKE_STATUS_DUSCLOPS 1
+
+struct Unk0861231C
+{
+ u16 unk0;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+};
+
+struct PikeWildMon
+{
+ u16 species;
+ u8 levelDelta;
+ u16 moves[4];
+};
+
+extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
+
+// IWRAM bss
+static IWRAM_DATA u8 sRoomType;
+static IWRAM_DATA u8 sStatusMon;
+static IWRAM_DATA bool8 sUnknown_0300128E;
+static IWRAM_DATA u32 sStatusFlags;
+static IWRAM_DATA u8 sUnknown_03001294;
+
+// This file's functions.
+static void sub_81A705C(void);
+static void sub_81A7140(void);
+static void sub_81A7248(void);
+static void sub_81A73B8(void);
+static void sub_81A7070(void);
+static void sub_81A73EC(void);
+static void sub_81A7400(void);
+static void sub_81A740C(void);
+static void sub_81A7418(void);
+static void nullsub_76(void);
+static void nullsub_124(void);
+static void sub_81A7468(void);
+static void sub_81A74CC(void);
+static void sub_81A74E0(void);
+static void sub_81A7508(void);
+static void sub_81A7580(void);
+static void sub_81A8090(void);
+static void sub_81A80DC(void);
+static void sub_81A825C(void);
+static void sub_81A827C(void);
+static void sub_81A84B4(void);
+static void sub_81A84EC(void);
+static void sub_81A863C(void);
+static void sub_81A8658(void);
+static void sub_81A869C(void);
+static void sub_81A86C0(void);
+static void sub_81A8794(void);
+static void sub_81A87E8(void);
+static void sub_81A8830(void);
+static u8 GetNextRoomType(void);
+static void PrepareOneTrainer(bool8 difficult);
+static u16 sub_81A7B58(void);
+static void PrepareTwoTrainers(void);
+static void TryHealMons(u8 healCount);
+static void sub_81A7EE4(u8 taskId);
+static bool8 AtLeastTwoAliveMons(void);
+static u8 SpeciesToPikeMonId(u16 species);
+static bool8 CanEncounterWildMon(u8 monLevel);
+static u8 sub_81A8590(u8);
+static bool8 sub_81A7D8C(struct Task *task);
+static bool8 sub_81A7DE8(struct Task *task);
+
+// Const rom data.
+static const struct PikeWildMon sLvl50_Mons1[] =
+{
+ {
+ .species = SPECIES_SEVIPER,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_GLARE, MOVE_BODY_SLAM, MOVE_SLUDGE_BOMB}
+ },
+ {
+ .species = SPECIES_MILOTIC,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_HYPNOSIS, MOVE_BODY_SLAM, MOVE_SURF}
+ },
+ {
+ .species = SPECIES_DUSCLOPS,
+ .levelDelta = 5,
+ .moves = {MOVE_WILL_O_WISP, MOVE_MEAN_LOOK, MOVE_TOXIC, MOVE_SHADOW_PUNCH}
+ }
+};
+
+static const struct PikeWildMon sLvl50_Mons2[] =
+{
+ {
+ .species = SPECIES_SEVIPER,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_GLARE, MOVE_BODY_SLAM, MOVE_SLUDGE_BOMB}
+ },
+ {
+ .species = SPECIES_MILOTIC,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_HYPNOSIS, MOVE_BODY_SLAM, MOVE_SURF}
+ },
+ {
+ .species = SPECIES_ELECTRODE,
+ .levelDelta = 5,
+ .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_THUNDER, MOVE_TOXIC}
+ }
+};
+
+static const struct PikeWildMon sLvl50_Mons3[] =
+{
+ {
+ .species = SPECIES_SEVIPER,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_GLARE, MOVE_BODY_SLAM, MOVE_SLUDGE_BOMB}
+ },
+ {
+ .species = SPECIES_MILOTIC,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_HYPNOSIS, MOVE_BODY_SLAM, MOVE_SURF}
+ },
+ {
+ .species = SPECIES_BRELOOM,
+ .levelDelta = 5,
+ .moves = {MOVE_SPORE, MOVE_STUN_SPORE, MOVE_POISON_POWDER, MOVE_HIDDEN_POWER}
+ }
+};
+
+static const struct PikeWildMon sLvl50_Mons4[] =
+{
+ {
+ .species = SPECIES_SEVIPER,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_GLARE, MOVE_BODY_SLAM, MOVE_SLUDGE_BOMB}
+ },
+ {
+ .species = SPECIES_MILOTIC,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_HYPNOSIS, MOVE_BODY_SLAM, MOVE_SURF}
+ },
+ {
+ .species = SPECIES_WOBBUFFET,
+ .levelDelta = 5,
+ .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_SAFEGUARD, MOVE_DESTINY_BOND}
+ }
+};
+
+static const struct PikeWildMon *const sLvl50Mons[] =
+{
+ sLvl50_Mons1,
+ sLvl50_Mons2,
+ sLvl50_Mons3,
+ sLvl50_Mons4
+};
+
+static const struct PikeWildMon sLvlOpen_Mons1[] =
+{
+ {
+ .species = SPECIES_SEVIPER,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_GLARE, MOVE_POISON_FANG, MOVE_SLUDGE_BOMB}
+ },
+ {
+ .species = SPECIES_MILOTIC,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_HYPNOSIS, MOVE_BODY_SLAM, MOVE_ICE_BEAM}
+ },
+ {
+ .species = SPECIES_DUSCLOPS,
+ .levelDelta = 5,
+ .moves = {MOVE_WILL_O_WISP, MOVE_MEAN_LOOK, MOVE_TOXIC, MOVE_ICE_BEAM}
+ }
+};
+
+static const struct PikeWildMon sLvlOpen_Mons2[] =
+{
+ {
+ .species = SPECIES_SEVIPER,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_GLARE, MOVE_POISON_FANG, MOVE_SLUDGE_BOMB}
+ },
+ {
+ .species = SPECIES_MILOTIC,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_HYPNOSIS, MOVE_BODY_SLAM, MOVE_ICE_BEAM}
+ },
+ {
+ .species = SPECIES_ELECTRODE,
+ .levelDelta = 5,
+ .moves = {MOVE_EXPLOSION, MOVE_SELF_DESTRUCT, MOVE_THUNDER, MOVE_TOXIC}
+ }
+};
+
+static const struct PikeWildMon sLvlOpen_Mons3[] =
+{
+ {
+ .species = SPECIES_SEVIPER,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_GLARE, MOVE_POISON_FANG, MOVE_SLUDGE_BOMB}
+ },
+ {
+ .species = SPECIES_MILOTIC,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_HYPNOSIS, MOVE_BODY_SLAM, MOVE_ICE_BEAM}
+ },
+ {
+ .species = SPECIES_BRELOOM,
+ .levelDelta = 5,
+ .moves = {MOVE_SPORE, MOVE_STUN_SPORE, MOVE_POISON_POWDER, MOVE_HIDDEN_POWER}
+ }
+};
+
+static const struct PikeWildMon sLvlOpen_Mons4[] =
+{
+ {
+ .species = SPECIES_SEVIPER,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_GLARE, MOVE_POISON_FANG, MOVE_SLUDGE_BOMB}
+ },
+ {
+ .species = SPECIES_MILOTIC,
+ .levelDelta = 4,
+ .moves = {MOVE_TOXIC, MOVE_HYPNOSIS, MOVE_BODY_SLAM, MOVE_ICE_BEAM}
+ },
+ {
+ .species = SPECIES_WOBBUFFET,
+ .levelDelta = 5,
+ .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_SAFEGUARD, MOVE_ENCORE}
+ }
+};
+
+static const struct PikeWildMon *const sLvlOpenMons[] =
+{
+ sLvlOpen_Mons1,
+ sLvlOpen_Mons2,
+ sLvlOpen_Mons3,
+ sLvlOpen_Mons4
+};
+
+static const struct PikeWildMon *const *const sWildMons[2] =
+{
+ [FRONTIER_LVL_50] = sLvl50Mons,
+ [FRONTIER_LVL_OPEN] = sLvlOpenMons
+};
+
+static const struct Unk0861231C gUnknown_0861231C[] =
+{
+ {
+ .unk0 = 0x0012,
+ .unk2 = 0x03,
+ .unk3 = 0x05,
+ .unk4 = 0x06
+ },
+ {
+ .unk0 = 0x0005,
+ .unk2 = 0x0d,
+ .unk3 = 0x20,
+ .unk4 = 0x25
+ },
+ {
+ .unk0 = 0x0011,
+ .unk2 = 0x08,
+ .unk3 = 0x0b,
+ .unk4 = 0x0c
+ },
+ {
+ .unk0 = 0x0024,
+ .unk2 = 0x22,
+ .unk3 = 0x1e,
+ .unk4 = 0x21
+ },
+ {
+ .unk0 = 0x0015,
+ .unk2 = 0x00,
+ .unk3 = 0x00,
+ .unk4 = 0x00
+ },
+ {
+ .unk0 = 0x001e,
+ .unk2 = 0x01,
+ .unk3 = 0x01,
+ .unk4 = 0x01
+ },
+ {
+ .unk0 = 0x002c,
+ .unk2 = 0x16,
+ .unk3 = 0x17,
+ .unk4 = 0x1b
+ },
+ {
+ .unk0 = 0x0037,
+ .unk2 = 0x08,
+ .unk3 = 0x16,
+ .unk4 = 0x1f
+ },
+ {
+ .unk0 = 0x000e,
+ .unk2 = 0x0d,
+ .unk3 = 0x27,
+ .unk4 = 0x15
+ },
+ {
+ .unk0 = 0x0014,
+ .unk2 = 0x02,
+ .unk3 = 0x04,
+ .unk4 = 0x11
+ },
+ {
+ .unk0 = 0x0038,
+ .unk2 = 0x1e,
+ .unk3 = 0x14,
+ .unk4 = 0x24
+ },
+ {
+ .unk0 = 0x0042,
+ .unk2 = 0x1c,
+ .unk3 = 0x22,
+ .unk4 = 0x19
+ },
+ {
+ .unk0 = 0x0026,
+ .unk2 = 0x17,
+ .unk3 = 0x26,
+ .unk4 = 0x1a
+ },
+ {
+ .unk0 = 0x0032,
+ .unk2 = 0x17,
+ .unk3 = 0x1e,
+ .unk4 = 0x0b
+ },
+ {
+ .unk0 = 0x002f,
+ .unk2 = 0x0f,
+ .unk3 = 0x13,
+ .unk4 = 0x0e
+ },
+ {
+ .unk0 = 0x0027,
+ .unk2 = 0x02,
+ .unk3 = 0x1d,
+ .unk4 = 0x1a
+ },
+ {
+ .unk0 = 0x0033,
+ .unk2 = 0x25,
+ .unk3 = 0x0c,
+ .unk4 = 0x20
+ },
+ {
+ .unk0 = 0x0021,
+ .unk2 = 0x18,
+ .unk3 = 0x17,
+ .unk4 = 0x26
+ },
+ {
+ .unk0 = 0x0018,
+ .unk2 = 0x05,
+ .unk3 = 0x16,
+ .unk4 = 0x04
+ },
+ {
+ .unk0 = 0x000b,
+ .unk2 = 0x29,
+ .unk3 = 0x25,
+ .unk4 = 0x23
+ },
+ {
+ .unk0 = 0x0035,
+ .unk2 = 0x27,
+ .unk3 = 0x0e,
+ .unk4 = 0x0d
+ },
+ {
+ .unk0 = 0x0030,
+ .unk2 = 0x0a,
+ .unk3 = 0x07,
+ .unk4 = 0x09
+ },
+ {
+ .unk0 = 0x000c,
+ .unk2 = 0x28,
+ .unk3 = 0x14,
+ .unk4 = 0x10
+ },
+ {
+ .unk0 = 0x0034,
+ .unk2 = 0x12,
+ .unk3 = 0x0d,
+ .unk4 = 0x15
+ },
+ {
+ .unk0 = 0x0013,
+ .unk2 = 0x16,
+ .unk3 = 0x1f,
+ .unk4 = 0x1b
+ }
+};
+
+static const u16 gUnknown_086123E4[][6] =
+{
+ {0x0a29, 0x0630, 0x0a01, 0x140f, 0x1020, 0x270e},
+ {0x0a2a, 0x081d, 0x061b, 0x1034, 0x1e20, 0x0a29},
+ {0x1e22, 0x1231, 0x0a01, 0x1018, 0x1c1a, 0x0c03},
+ {0x1e0f, 0x100b, 0x1039, 0x200f, 0x102b, 0x0a14},
+ {0x103b, 0x0a02, 0x161e, 0x1020, 0x143e, 0x0c03},
+ {0x0a31, 0x0e02, 0x0e15, 0x1436, 0x1037, 0x1e0a},
+ {0x0a29, 0x1025, 0x142a, 0x1034, 0x1e0f, 0x0a1b},
+ {0x0a01, 0x0e07, 0x122a, 0x1e0f, 0x061f, 0xffff},
+ {0x1a35, 0x1036, 0x0e0f, 0x0a01, 0x2621, 0x1e0f},
+ {0x0e25, 0x102f, 0x062d, 0x201e, 0x0c03, 0xffff},
+ {0x0c1d, 0x081d, 0x0a2b, 0x100f, 0x0a02, 0x0c03},
+ {0x0a2a, 0x0a3e, 0x2000, 0x1027, 0x1c08, 0x0c04},
+ {0x0a01, 0x1212, 0x0a01, 0x1000, 0x062d, 0xffff},
+ {0x1e22, 0x1231, 0x0a01, 0x1018, 0x1c1c, 0x0c03},
+ {0x0a01, 0x060b, 0x1030, 0x0a28, 0x2549, 0x0624},
+ {0x1014, 0x0a2c, 0x0415, 0x1642, 0x1e1b, 0x0c03},
+ {0x0628, 0x1a0f, 0x100b, 0x2017, 0x0c00, 0xffff},
+ {0x0a01, 0x1015, 0x1647, 0x1e0f, 0x0e39, 0x0e36},
+ {0x0a01, 0x1017, 0x1620, 0x0e19, 0x0a31, 0x0c38},
+ {0x0c1d, 0x081d, 0x0c00, 0x1022, 0x1c12, 0x020b},
+ {0x1029, 0x1404, 0x102f, 0x1006, 0x1e28, 0x1c1c},
+ {0x1029, 0x0e20, 0x1028, 0x1c16, 0x1e29, 0x0c03},
+ {0x1e0f, 0x100b, 0x0e2f, 0x0638, 0x100c, 0xffff},
+ {0x0a29, 0x1408, 0x102f, 0x061e, 0x102c, 0xffff},
+ {0x1023, 0x100b, 0x081d, 0x062d, 0x1037, 0x0a14},
+ {0x0a29, 0x1022, 0x1408, 0x102f, 0x161e, 0x1029},
+ {0x0601, 0x102c, 0x0a01, 0x1015, 0x0e39, 0x0e36},
+ {0x1020, 0x020b, 0x103f, 0x1c12, 0x0c04, 0xffff},
+ {0x1018, 0x0a02, 0x103a, 0x0446, 0x020e, 0x0c03},
+ {0x1e10, 0x020b, 0x1e0a, 0x100b, 0x063a, 0xffff},
+ {0x0a02, 0x1212, 0x1e0f, 0x100b, 0x0638, 0x0c03},
+ {0x1e22, 0x1000, 0x161b, 0x103f, 0x1e0f, 0x0c03},
+ {0x0a29, 0x0e1e, 0x1025, 0x1e26, 0x0c00, 0xffff},
+ {0x0a01, 0x0e1e, 0x1236, 0x102f, 0x120b, 0x0c04},
+ {0x2805, 0x1e0f, 0x0a1b, 0x100b, 0x1020, 0x063b},
+ {0x0a01, 0x101f, 0x0a3e, 0x1037, 0x1020, 0x0628},
+ {0x1026, 0x0a31, 0x1e29, 0x1c1c, 0x0a01, 0x1212},
+ {0x0c0a, 0x0c00, 0x1029, 0x101c, 0x1e0f, 0x0c23},
+ {0x0a28, 0x020e, 0x100f, 0x1039, 0x142a, 0x0c04},
+ {0x0a28, 0x020e, 0x100f, 0x0620, 0x102f, 0x043c},
+ {0x0c39, 0x0c39, 0x0c00, 0x0a29, 0x2017, 0x0c39},
+ {0x265c, 0x100b, 0x1020, 0x1230, 0x1e05, 0x100c},
+};
+
+static const u8 gUnknown_086125DC[][4] =
+{
+ {0x23, 0x46, 0x23, 0x01},
+ {0x04, 0x09, 0x05, 0x00},
+ {0x15, 0x2a, 0x15, 0x01},
+ {0x1c, 0x38, 0x1c, 0x01},
+ {0x15, 0x2a, 0x15, 0x01},
+ {0x1c, 0x8c, 0x38, 0x01},
+ {0x15, 0x46, 0x23, 0x00},
+};
+
+static void (* const sBattlePikeFunctions[])(void) =
+{
+ sub_81A705C,
+ sub_81A7140,
+ sub_81A7248,
+ sub_81A73B8,
+ sub_81A7070,
+ sub_81A73EC,
+ sub_81A7400,
+ sub_81A740C,
+ sub_81A7418,
+ nullsub_76,
+ nullsub_124,
+ sub_81A7468,
+ sub_81A74CC,
+ sub_81A74E0,
+ sub_81A7508,
+ sub_81A7580,
+ sub_81A8090,
+ sub_81A80DC,
+ sub_81A825C,
+ sub_81A827C,
+ sub_81A84B4,
+ sub_81A84EC,
+ sub_81A863C,
+ sub_81A8658,
+ sub_81A869C,
+ sub_81A86C0,
+ sub_81A8794,
+ sub_81A87E8,
+ sub_81A8830
+};
+
+static const u8 gUnknown_0861266C[] = {3, 3, 1, 0, 0, 2, 2, 1, 4};
+
+static const u8 gUnknown_08612675[][3] =
+{
+ {2, 1, 0},
+ {2, 0, 1},
+ {1, 2, 0},
+ {1, 0, 2},
+ {0, 2, 1},
+ {0, 1, 2},
+};
+
+static bool8 (* const gUnknown_08612688[])(struct Task *) =
+{
+ sub_81A7D8C, sub_81A7DE8
+};
+
+static const u32 gUnknown_08612690[] = {0x400, 0x800};
+
+// code
+void CallBattlePikeFunction(void)
+{
+ sBattlePikeFunctions[gSpecialVar_0x8004]();
+}
+
+static void sub_81A705C(void)
+{
+ u8 roomType = GetNextRoomType();
+ sRoomType = roomType;
+}
+
+static void sub_81A7070(void)
+{
+ bool32 setPerson1, setPerson2;
+ u32 person1;
+ u16 person2;
+
+ VarSet(VAR_OBJ_GFX_ID_0, EVENT_OBJ_GFX_LINK_RECEPTIONIST);
+ VarSet(VAR_OBJ_GFX_ID_1, EVENT_OBJ_GFX_DUSCLOPS);
+ setPerson1 = TRUE;
+ setPerson2 = FALSE;
+ person1 = 0;
+ person2 = 0;
+
+ switch (sRoomType)
+ {
+ case PIKE_ROOM_SINGLE_BATTLE:
+ PrepareOneTrainer(FALSE);
+ setPerson1 = FALSE;
+ break;
+ case PIKE_ROOM_HEAL_FULL:
+ person1 = EVENT_OBJ_GFX_LINK_RECEPTIONIST;
+ break;
+ case PIKE_ROOM_NPC:
+ person1 = (u8)(sub_81A7B58());
+ break;
+ case PIKE_ROOM_STATUS:
+ person1 = EVENT_OBJ_GFX_GENTLEMAN;
+ if (sStatusMon == PIKE_STATUS_DUSCLOPS)
+ person2 = EVENT_OBJ_GFX_DUSCLOPS;
+ else
+ person2 = EVENT_OBJ_GFX_KIRLIA;
+ setPerson2 = TRUE;
+ break;
+ case PIKE_ROOM_HEAL_PART:
+ person1 = EVENT_OBJ_GFX_GENTLEMAN;
+ break;
+ case PIKE_ROOM_WILD_MONS:
+ setPerson1 = FALSE;
+ break;
+ case PIKE_ROOM_HARD_BATTLE:
+ PrepareOneTrainer(TRUE);
+ person2 = EVENT_OBJ_GFX_LINK_RECEPTIONIST;
+ setPerson1 = FALSE;
+ setPerson2 = TRUE;
+ break;
+ case PIKE_ROOM_DOUBLE_BATTLE:
+ PrepareTwoTrainers();
+ setPerson1 = FALSE;
+ break;
+ case PIKE_ROOM_BRAIN:
+ SetFrontierBrainEventObjGfx(FRONTIER_FACILITY_PIKE);
+ person2 = EVENT_OBJ_GFX_LINK_RECEPTIONIST;
+ setPerson1 = FALSE;
+ setPerson2 = TRUE;
+ break;
+ default:
+ return;
+ }
+
+ if (setPerson1 == TRUE)
+ VarSet(VAR_OBJ_GFX_ID_0, person1);
+ if (setPerson2 == TRUE)
+ VarSet(VAR_OBJ_GFX_ID_1, person2);
+}
+
+static void sub_81A7140(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E02;
+ break;
+ case 1:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.pikeWinStreaks[gSaveBlock2Ptr->frontier.lvlMode];
+ break;
+ case 2:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.pikeRecordStreaks[gSaveBlock2Ptr->frontier.lvlMode];
+ break;
+ case 3:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.pikeTotalStreaks[gSaveBlock2Ptr->frontier.lvlMode];
+ break;
+ case 4:
+ if (lvlMode != FRONTIER_LVL_50)
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CDC & 0x800;
+ else
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CDC & 0x400;
+ break;
+ }
+}
+
+static void sub_81A7248(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ gSaveBlock2Ptr->frontier.field_E02 = gSpecialVar_0x8006;
+ break;
+ case 1:
+ if (gSpecialVar_0x8006 <= 9999)
+ gSaveBlock2Ptr->frontier.pikeWinStreaks[gSaveBlock2Ptr->frontier.lvlMode] = gSpecialVar_0x8006;
+ break;
+ case 2:
+ if (gSpecialVar_0x8006 <= 9999 && gSaveBlock2Ptr->frontier.pikeRecordStreaks[gSaveBlock2Ptr->frontier.lvlMode] < gSpecialVar_0x8006)
+ gSaveBlock2Ptr->frontier.pikeRecordStreaks[gSaveBlock2Ptr->frontier.lvlMode] = gSpecialVar_0x8006;
+ break;
+ case 3:
+ if (gSpecialVar_0x8006 <= 9999)
+ gSaveBlock2Ptr->frontier.pikeTotalStreaks[gSaveBlock2Ptr->frontier.lvlMode] = gSpecialVar_0x8006;
+ break;
+ case 4:
+ if (lvlMode != FRONTIER_LVL_50)
+ {
+ if (gSpecialVar_0x8006)
+ gSaveBlock2Ptr->frontier.field_CDC |= 0x800;
+ else
+ gSaveBlock2Ptr->frontier.field_CDC &= ~(0x800);
+ }
+ else
+ {
+ if (gSpecialVar_0x8006)
+ gSaveBlock2Ptr->frontier.field_CDC |= 0x400;
+ else
+ gSaveBlock2Ptr->frontier.field_CDC &= ~(0x400);
+ }
+ break;
+ }
+}
+
+static void sub_81A73B8(void)
+{
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum >= 15)
+ gSpecialVar_Result = TRUE;
+ else
+ gSpecialVar_Result = FALSE;
+}
+
+static void sub_81A73EC(void)
+{
+ gSpecialVar_Result = sRoomType;
+}
+
+static void sub_81A7400(void)
+{
+ sUnknown_0300128E = TRUE;
+}
+
+static void sub_81A740C(void)
+{
+ sUnknown_0300128E = FALSE;
+}
+
+static void sub_81A7418(void)
+{
+ gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
+ VarSet(VAR_TEMP_0, 0);
+ gSaveBlock2Ptr->frontier.field_CA9_a = 1;
+ save_serialize_map();
+ TrySavingData(SAVE_LINK);
+}
+
+static void nullsub_76(void)
+{
+
+}
+
+static void nullsub_124(void)
+{
+
+}
+
+static void sub_81A7468(void)
+{
+ switch (sStatusFlags)
+ {
+ case STATUS1_FREEZE:
+ gSpecialVar_Result = 0;
+ break;
+ case STATUS1_BURN:
+ gSpecialVar_Result = 1;
+ break;
+ case STATUS1_TOXIC_POISON:
+ gSpecialVar_Result = 2;
+ break;
+ case STATUS1_PARALYSIS:
+ gSpecialVar_Result = 3;
+ break;
+ case STATUS1_SLEEP:
+ gSpecialVar_Result = 4;
+ break;
+ }
+}
+
+static void sub_81A74CC(void)
+{
+ gSpecialVar_Result = sStatusMon;
+}
+
+static void sub_81A74E0(void)
+{
+ u16 toHeal = (Random() % 2) + 1;
+ TryHealMons(toHeal);
+ gSpecialVar_Result = toHeal;
+}
+
+static void sub_81A7508(void)
+{
+ s32 id;
+
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 4)
+ id = gUnknown_0861231C[sUnknown_03001294].unk2;
+ else if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 10)
+ id = gUnknown_0861231C[sUnknown_03001294].unk3;
+ else
+ id = gUnknown_0861231C[sUnknown_03001294].unk4;
+
+ FrontierSpeechToString(gUnknown_086123E4[id]);
+}
+
+static void sub_81A7580(void)
+{
+ CreateTask(sub_81A7EE4, 2);
+}
+
+static void HealMon(struct Pokemon *mon)
+{
+ u8 i;
+ u16 hp;
+ u8 ppBonuses;
+ u8 data[4];
+
+ for (i = 0; i < 4; i++)
+ data[i] = 0;
+
+ hp = GetMonData(mon, MON_DATA_MAX_HP);
+ data[0] = hp;
+ data[1] = hp >> 8;
+ SetMonData(mon, MON_DATA_HP, data);
+
+ ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
+ for (i = 0; i < 4; i++)
+ {
+ u16 move = GetMonData(mon, MON_DATA_MOVE1 + i);
+ data[0] = CalculatePPWithBonus(move, ppBonuses, i);
+ SetMonData(mon, MON_DATA_PP1 + i, data);
+ }
+
+ data[0] = 0;
+ data[1] = 0;
+ data[2] = 0;
+ data[3] = 0;
+ SetMonData(mon, MON_DATA_STATUS, data);
+}
+
+static bool8 DoesAbilityPreventStatus(struct Pokemon *mon, u32 status)
+{
+ u8 ability = GetMonAbility(mon);
+ bool8 ret = FALSE;
+
+ switch (status)
+ {
+ case STATUS1_FREEZE:
+ if (ability == ABILITY_MAGMA_ARMOR)
+ ret = TRUE;
+ break;
+ case STATUS1_BURN:
+ if (ability == ABILITY_WATER_VEIL)
+ ret = TRUE;
+ break;
+ case STATUS1_PARALYSIS:
+ if (ability == ABILITY_LIMBER)
+ ret = TRUE;
+ break;
+ case STATUS1_SLEEP:
+ if (ability == ABILITY_INSOMNIA || ability == ABILITY_VITAL_SPIRIT)
+ ret = TRUE;
+ break;
+ case STATUS1_TOXIC_POISON:
+ if (ability == ABILITY_IMMUNITY)
+ ret = TRUE;
+ break;
+ }
+ return ret;
+}
+
+static bool8 DoesTypePreventStatus(u16 species, u32 status)
+{
+ bool8 ret = FALSE;
+
+ switch (status)
+ {
+ case STATUS1_TOXIC_POISON:
+ if (gBaseStats[species].type1 == TYPE_STEEL || gBaseStats[species].type1 == TYPE_POISON
+ || gBaseStats[species].type2 == TYPE_STEEL || gBaseStats[species].type2 == TYPE_POISON)
+ ret = TRUE;
+ break;
+ case STATUS1_FREEZE:
+ if (gBaseStats[species].type1 == TYPE_ICE || gBaseStats[species].type2 == TYPE_ICE)
+ ret = TRUE;
+ break;
+ case STATUS1_PARALYSIS:
+ if (gBaseStats[species].type1 == TYPE_GROUND || gBaseStats[species].type1 == TYPE_ELECTRIC
+ || gBaseStats[species].type2 == TYPE_GROUND || gBaseStats[species].type2 == TYPE_ELECTRIC)
+ ret = TRUE;
+ break;
+ case STATUS1_BURN:
+ if (gBaseStats[species].type1 == TYPE_FIRE || gBaseStats[species].type2 == TYPE_FIRE)
+ ret = TRUE;
+ break;
+ case STATUS1_SLEEP:
+ break;
+ }
+ return ret;
+}
+
+static bool8 TryInflictRandomStatus(void)
+{
+ u8 j, i;
+ u8 count;
+ u8 indices[3];
+ u32 status;
+ u16 species;
+ bool8 statusChosen;
+ struct Pokemon *mon;
+
+ for (i = 0; i < 3; i++)
+ indices[i] = i;
+ for (j = 0; j < 10; j++)
+ {
+ u8 temp, id;
+
+ i = Random() % 3;
+ id = Random() % 3;
+ SWAP(indices[i], indices[id], temp);
+ }
+
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 4)
+ count = 1;
+ else if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 9)
+ count = 2;
+ else
+ count = 3;
+
+ status = 0;
+ do
+ {
+ u8 rand;
+
+ statusChosen = FALSE;
+ rand = Random() % 100;
+
+ if (rand < 35)
+ sStatusFlags = STATUS1_TOXIC_POISON;
+ else if (rand < 60)
+ sStatusFlags = STATUS1_FREEZE;
+ else if (rand < 80)
+ sStatusFlags = STATUS1_PARALYSIS;
+ else if (rand < 90)
+ sStatusFlags = STATUS1_SLEEP;
+ else
+ sStatusFlags = STATUS1_BURN;
+
+ if (status != sStatusFlags)
+ {
+ status = sStatusFlags;
+ j = 0;
+ for (i = 0; i < 3; i++)
+ {
+ mon = &gPlayerParty[indices[i]];
+ if (pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS)) == 0
+ && GetMonData(mon, MON_DATA_HP) != 0)
+ {
+ j++;
+ species = GetMonData(mon, MON_DATA_SPECIES);
+ if (!DoesTypePreventStatus(species, sStatusFlags))
+ {
+ statusChosen = TRUE;
+ break;
+ }
+ }
+ if (j == count)
+ break;
+ }
+ if (j == 0)
+ return FALSE;
+ }
+ } while (!statusChosen);
+
+ switch (sStatusFlags)
+ {
+ case STATUS1_FREEZE:
+ sStatusMon = PIKE_STATUS_DUSCLOPS;
+ break;
+ case STATUS1_BURN:
+ if (Random() % 2 != 0)
+ sStatusMon = PIKE_STATUS_DUSCLOPS;
+ else
+ sStatusMon = PIKE_STATUS_KIRLIA;
+ break;
+ case STATUS1_PARALYSIS:
+ case STATUS1_SLEEP:
+ case STATUS1_TOXIC_POISON:
+ default:
+ sStatusMon = PIKE_STATUS_KIRLIA;
+ break;
+ }
+
+ j = 0;
+ for (i = 0; i < 3; i++)
+ {
+ mon = &gPlayerParty[indices[i]];
+ if (pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS)) == 0
+ && GetMonData(mon, MON_DATA_HP) != 0)
+ {
+ j++;
+ species = GetMonData(mon, MON_DATA_SPECIES);
+ if (!DoesAbilityPreventStatus(mon, sStatusFlags) && !DoesTypePreventStatus(species, sStatusFlags))
+ SetMonData(mon, MON_DATA_STATUS, &sStatusFlags);
+ }
+ if (j == count)
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool8 AtLeastOneHealthyMon(void)
+{
+ u8 i;
+ u8 healthyMonsCount;
+ u8 count;
+
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 4)
+ count = 1;
+ else if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 9)
+ count = 2;
+ else
+ count = 3;
+
+ healthyMonsCount = 0;
+ for (i = 0; i < 3; i++)
+ {
+ struct Pokemon *mon = &gPlayerParty[i];
+ if (pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS)) == 0
+ && GetMonData(mon, MON_DATA_HP) != 0)
+ {
+ healthyMonsCount++;
+ }
+ if (healthyMonsCount == count)
+ break;
+ }
+
+ if (healthyMonsCount == 0)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static u8 GetNextRoomType(void)
+{
+ u8 sp[8];
+ u8 i;
+ u8 ret;
+ u8 var;
+ u8 count;
+ u8 *allocated;
+ u8 id;
+
+ if (gSaveBlock2Ptr->frontier.field_E10_2 == PIKE_ROOM_BRAIN)
+ return gSaveBlock2Ptr->frontier.field_E10_2;
+ if (gSpecialVar_0x8007 == gSaveBlock2Ptr->frontier.field_E10_1)
+ {
+ if (gSaveBlock2Ptr->frontier.field_E10_2 == PIKE_ROOM_STATUS)
+ TryInflictRandomStatus();
+ return gSaveBlock2Ptr->frontier.field_E10_2;
+ }
+
+ for (i = 0; i < 8; i++)
+ sp[i] = 0;
+
+ count = 8;
+ var = gUnknown_0861266C[gSaveBlock2Ptr->frontier.field_E10_2];
+ for (i = 0; i < 8; i++)
+ {
+ if (gUnknown_0861266C[i] == var)
+ {
+ sp[i] = 1;
+ count--;
+ }
+ }
+
+ if (sp[7] != 1 && !AtLeastTwoAliveMons())
+ {
+ sp[7] = 1;
+ count--;
+ }
+ if (sp[3] != 1 && !AtLeastOneHealthyMon())
+ {
+ sp[3] = 1;
+ count--;
+ }
+ if (gSaveBlock2Ptr->frontier.field_E10_3)
+ {
+ if (sp[1] != 1)
+ {
+ sp[1] = 1;
+ count--;
+ }
+ if (sp[4] != 1)
+ {
+ sp[4] = 1;
+ count--;
+ }
+ }
+
+ allocated = AllocZeroed(count);
+ id = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (sp[i] == 0)
+ allocated[id++] = i;
+ }
+
+ ret = allocated[Random() % count];
+ free(allocated);
+ if (ret == PIKE_ROOM_STATUS)
+ TryInflictRandomStatus();
+
+ return ret;
+}
+
+static u16 sub_81A7B58(void)
+{
+ sUnknown_03001294 = Random() % 25;
+ return gUnknown_0861231C[sUnknown_03001294].unk0;
+}
+
+static u8 sub_81A7B84(void)
+{
+ return sUnknown_0300128E;
+}
+
+bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate)
+{
+ s32 i;
+ s32 monLevel;
+ u8 headerId = GetBattlePikeWildMonHeaderId();
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ const struct PikeWildMon *const *const wildMons = sWildMons[lvlMode];
+ u32 abilityBit;
+ s32 pikeMonId = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL);
+ pikeMonId = SpeciesToPikeMonId(pikeMonId);
+
+ if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50)
+ {
+ monLevel = GetHighestLevelInPlayerParty();
+ if (monLevel < 60)
+ {
+ monLevel = 60;
+ }
+ else
+ {
+ monLevel -= wildMons[headerId][pikeMonId].levelDelta;
+ if (monLevel < 60)
+ monLevel = 60;
+ }
+ }
+ else
+ {
+ monLevel = 50 - wildMons[headerId][pikeMonId].levelDelta;
+ }
+
+ if (checkKeenEyeIntimidate == TRUE && !CanEncounterWildMon(monLevel))
+ return FALSE;
+
+ SetMonData(&gEnemyParty[0],
+ MON_DATA_EXP,
+ &gExperienceTables[gBaseStats[wildMons[headerId][pikeMonId].species].growthRate][monLevel]);
+
+ if (gBaseStats[wildMons[headerId][pikeMonId].species].ability2)
+ abilityBit = Random() % 2;
+ else
+ abilityBit = 0;
+ SetMonData(&gEnemyParty[0], MON_DATA_ALT_ABILITY, &abilityBit);
+ for (i = 0; i < 4; i++)
+ SetMonMoveSlot(&gEnemyParty[0], wildMons[headerId][pikeMonId].moves[i], i);
+
+ CalculateMonStats(&gEnemyParty[0]);
+ return TRUE;
+}
+
+u8 GetBattlePikeWildMonHeaderId(void)
+{
+ u8 headerId;
+ u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u16 winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode];
+
+ if (winStreak <= 280)
+ headerId = 0;
+ else if (winStreak <= 560)
+ headerId = 1;
+ else if (winStreak <= 840)
+ headerId = 2;
+ else
+ headerId = 3;
+
+ return headerId;
+}
+
+static void sub_81A7D54(u8 taskId)
+{
+ while (gUnknown_08612688[gTasks[taskId].data[0]](&gTasks[taskId]));
+}
+
+static bool8 sub_81A7D8C(struct Task *task)
+{
+ if (task->data[6] == 0 || --task->data[6] == 0)
+ {
+ task->data[6] = task->data[1];
+ task->data[7] += task->data[4];
+ if (task->data[7] > 16)
+ task->data[7] = 16;
+ BlendPalettes(0xFFFFFFFF, task->data[7], RGB(11, 11, 11));
+ }
+
+ if (task->data[7] >= 16)
+ {
+ task->data[0]++;
+ task->data[6] = task->data[2];
+ }
+ return FALSE;
+}
+
+static bool8 sub_81A7DE8(struct Task *task)
+{
+ if (task->data[6] == 0 || --task->data[6] == 0)
+ {
+ task->data[6] = task->data[2];
+ task->data[7] -= task->data[5];
+ if (task->data[7] < 0)
+ task->data[7] = 0;
+ BlendPalettes(0xFFFFFFFF, task->data[7], RGB(11, 11, 11));
+ }
+
+ if (task->data[7] == 0)
+ {
+ if (--task->data[3] == 0)
+ {
+ DestroyTask(FindTaskIdByFunc(sub_81A7D54));
+ }
+ else
+ {
+ task->data[6] = task->data[1];
+ task->data[0] = 0;
+ }
+ }
+ return FALSE;
+}
+
+static void sub_81A7E60(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4)
+{
+ u8 taskId = CreateTask(sub_81A7D54, 3);
+
+ gTasks[taskId].data[1] = a0;
+ gTasks[taskId].data[2] = a1;
+ gTasks[taskId].data[3] = a2;
+ gTasks[taskId].data[4] = a3;
+ gTasks[taskId].data[5] = a4;
+ gTasks[taskId].data[6] = a0;
+}
+
+static bool8 sub_81A7EC4(void)
+{
+ if (FindTaskIdByFunc(sub_81A7D54) == 0xFF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void sub_81A7EE4(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[0]++;
+ sub_81A7E60(0, 0, 3, 2, 2);
+ }
+ else
+ {
+ if (sub_81A7EC4())
+ {
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+ }
+}
+
+static void TryHealMons(u8 healCount)
+{
+ u8 j, i, k;
+ u8 indices[3];
+
+ if (healCount == 0)
+ return;
+
+ for (i = 0; i < 3; i++)
+ indices[i] = i;
+ for (k = 0; k < 10; k++)
+ {
+ u8 temp;
+
+ i = Random() % 3;
+ j = Random() % 3;
+ SWAP(indices[i], indices[j], temp);
+ }
+
+ for (i = 0; i < 3; i++)
+ {
+ bool32 canBeHealed = FALSE;
+ struct Pokemon *mon = &gPlayerParty[indices[i]];
+ u16 curr = GetMonData(mon, MON_DATA_HP);
+ u16 max = GetMonData(mon, MON_DATA_MAX_HP);
+ if (curr < max)
+ {
+ canBeHealed = TRUE;
+ }
+ else if (pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS)) != 0)
+ {
+ canBeHealed = TRUE;
+ }
+ else
+ {
+ u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
+ for (j = 0; j < 4; j++)
+ {
+ u16 move = GetMonData(mon, MON_DATA_MOVE1 + j);
+ max = CalculatePPWithBonus(move, ppBonuses, j);
+ curr = GetMonData(mon, MON_DATA_PP1 + j);
+ if (curr < max)
+ {
+ canBeHealed = TRUE;
+ break;
+ }
+ }
+ }
+
+ if (canBeHealed == TRUE)
+ {
+ HealMon(&gPlayerParty[indices[i]]);
+ if (--healCount == 0)
+ break;
+ }
+ }
+}
+
+static void sub_81A8090(void)
+{
+ gSpecialVar_Result = InBattlePike();
+}
+
+bool8 InBattlePike(void)
+{
+ return (gMapHeader.mapLayoutId == 351 || gMapHeader.mapLayoutId == 352
+ || gMapHeader.mapLayoutId == 358 || gMapHeader.mapLayoutId == 359);
+}
+
+static void sub_81A80DC(void)
+{
+ u8 i, count, id;
+ u8 *allocated;
+
+ gSpecialVar_Result = 0;
+ if (sub_81A8590(1))
+ {
+ gSpecialVar_Result = 1;
+ gSaveBlock2Ptr->frontier.field_E10_1 = Random() % 6;
+ gSaveBlock2Ptr->frontier.field_E10_2 = PIKE_ROOM_BRAIN;
+ }
+ else
+ {
+ gSaveBlock2Ptr->frontier.field_E10_1 = Random() % 3;
+ if (gSaveBlock2Ptr->frontier.field_E10_3)
+ count = 6;
+ else
+ count = 8;
+
+ allocated = AllocZeroed(count);
+ for (i = 0, id = 0; i < count; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.field_E10_3)
+ {
+ if (i != PIKE_ROOM_HEAL_FULL && i != PIKE_ROOM_HEAL_PART)
+ allocated[id++] = i;
+ }
+ else
+ {
+ allocated[i] = i;
+ }
+ }
+ gSaveBlock2Ptr->frontier.field_E10_2 = allocated[Random() % count];
+ free(allocated);
+ if (gSaveBlock2Ptr->frontier.field_E10_2 == PIKE_ROOM_STATUS && !AtLeastOneHealthyMon())
+ gSaveBlock2Ptr->frontier.field_E10_2 = PIKE_ROOM_NPC;
+ if (gSaveBlock2Ptr->frontier.field_E10_2 == PIKE_ROOM_DOUBLE_BATTLE && !AtLeastTwoAliveMons())
+ gSaveBlock2Ptr->frontier.field_E10_2 = PIKE_ROOM_NPC;
+ }
+}
+
+static void sub_81A825C(void)
+{
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E10_1;
+}
+
+static void sub_81A827C(void)
+{
+ gSpecialVar_Result = gUnknown_0861266C[gSaveBlock2Ptr->frontier.field_E10_2];
+}
+
+static void PrepareOneTrainer(bool8 difficult)
+{
+ s32 i;
+ u8 lvlMode;
+ u8 battleNum;
+ u16 challengeNum;
+ u16 trainerId;
+
+ if (!difficult)
+ battleNum = 1;
+ else
+ battleNum = 6;
+
+ lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14;
+ do
+ {
+ trainerId = sub_8162548(challengeNum, battleNum);
+ for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ break;
+ }
+ } while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1);
+
+ gTrainerBattleOpponent_A = trainerId;
+ gFacilityTrainers = gBattleFrontierTrainers;
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 14)
+ gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1] = gTrainerBattleOpponent_A;
+}
+
+static void PrepareTwoTrainers(void)
+{
+ s32 i;
+ u16 trainerId;
+ u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u16 challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14;
+
+ gFacilityTrainers = gBattleFrontierTrainers;
+ do
+ {
+ trainerId = sub_8162548(challengeNum, 1);
+ for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ break;
+ }
+ } while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1);
+
+ gTrainerBattleOpponent_A = trainerId;
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 14)
+ gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1] = gTrainerBattleOpponent_A;
+
+ do
+ {
+ trainerId = sub_8162548(challengeNum, 1);
+ for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ break;
+ }
+ } while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum);
+
+ gTrainerBattleOpponent_B = trainerId;
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_B, 1);
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 14)
+ gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 2] = gTrainerBattleOpponent_B;
+}
+
+static void sub_81A84B4(void)
+{
+ u8 i;
+
+ for (i = 0; i < 14; i++)
+ gSaveBlock2Ptr->frontier.field_CB4[i] |= 0xFFFF;
+}
+
+static void sub_81A84EC(void)
+{
+ if (gSpecialVar_0x8005 == 0)
+ {
+ if (gTrainerBattleOpponent_A < TRAINER_RECORD_MIXING_FRIEND)
+ FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore);
+ }
+ else if (gSpecialVar_0x8005 == 1)
+ {
+ if (gTrainerBattleOpponent_B < TRAINER_RECORD_MIXING_FRIEND)
+ FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_B].speechBefore);
+ }
+}
+
+static bool8 AtLeastTwoAliveMons(void)
+{
+ struct Pokemon *mon;
+ u8 i, countDead;
+
+ mon = &gPlayerParty[0];
+ countDead = 0;
+ for (i = 0; i < 3; i++, mon++)
+ {
+ if (GetMonData(mon, MON_DATA_HP) == 0)
+ countDead++;
+ }
+
+ if (countDead >= 2)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static u8 sub_81A8590(u8 arg0)
+{
+ u8 symbolsCount;
+
+ u8 var = 5;
+ u8 ret = 0;
+ u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u16 wins = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode];
+ wins += arg0;
+ symbolsCount = GetPlayerSymbolCountForFacility(FRONTIER_FACILITY_PIKE);
+
+ switch (symbolsCount)
+ {
+ case 0:
+ case 1:
+ if (wins == gUnknown_086125DC[var][symbolsCount] - gUnknown_086125DC[var][3])
+ ret = symbolsCount + 1;
+ break;
+ case 2:
+ default:
+ if (wins == gUnknown_086125DC[var][0] - gUnknown_086125DC[var][3])
+ ret = 3;
+ else if (wins == gUnknown_086125DC[var][1] - gUnknown_086125DC[var][3]
+ || (wins > gUnknown_086125DC[var][1]
+ && (wins - gUnknown_086125DC[var][1] + gUnknown_086125DC[var][3]) % gUnknown_086125DC[var][2] == 0))
+ ret = 4;
+ break;
+ }
+
+ return ret;
+}
+
+static void sub_81A863C(void)
+{
+ gSpecialVar_Result = sub_81A8590(0);
+}
+
+static void sub_81A8658(void)
+{
+ u8 toHealCount = gUnknown_08612675[gSaveBlock2Ptr->frontier.field_E10_1][gSpecialVar_0x8007];
+
+ TryHealMons(toHealCount);
+ gSpecialVar_Result = toHealCount;
+}
+
+static void sub_81A869C(void)
+{
+ gSaveBlock2Ptr->frontier.field_E10_3 = gSpecialVar_0x8005;
+}
+
+static void sub_81A86C0(void)
+{
+ u8 i, j;
+
+ gSpecialVar_Result = TRUE;
+ for (i = 0; i < 3; i++)
+ {
+ bool32 canBeHealed = FALSE;
+ struct Pokemon *mon = &gPlayerParty[i];
+ u16 curr = GetMonData(mon, MON_DATA_HP);
+ u16 max = GetMonData(mon, MON_DATA_MAX_HP);
+ if (curr >= max && pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS)) == 0)
+ {
+ u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
+ for (j = 0; j < 4; j++)
+ {
+ u16 move = GetMonData(mon, MON_DATA_MOVE1 + j);
+ max = CalculatePPWithBonus(move, ppBonuses, j);
+ curr = GetMonData(mon, MON_DATA_PP1 + j);
+ if (curr < max)
+ {
+ canBeHealed = TRUE;
+ break;
+ }
+ }
+ }
+ else
+ {
+ canBeHealed = TRUE;
+ }
+
+ if (canBeHealed == TRUE)
+ {
+ gSpecialVar_Result = FALSE;
+ break;
+ }
+ }
+}
+
+static void sub_81A8794(void)
+{
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ s32 heldItem = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1],
+ MON_DATA_HELD_ITEM);
+ gSaveBlock2Ptr->frontier.field_E12[i] = heldItem;
+ }
+}
+
+static void sub_81A87E8(void)
+{
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ SetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1],
+ MON_DATA_HELD_ITEM,
+ &gSaveBlock2Ptr->frontier.field_E12[i]);
+ }
+}
+
+static void sub_81A8830(void)
+{
+ u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ gSaveBlock2Ptr->frontier.field_CA8 = 0;
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
+ gSaveBlock2Ptr->frontier.field_CA9_a = 0;
+ if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_08612690[lvlMode]))
+ gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] = 0;
+
+ gTrainerBattleOpponent_A = 0;
+ gBattleOutcome = 0;
+}
+
+static bool8 CanEncounterWildMon(u8 enemyMonLevel)
+{
+ if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3))
+ {
+ u8 monAbility = GetMonAbility(&gPlayerParty[0]);
+ if (monAbility == ABILITY_KEEN_EYE || monAbility == ABILITY_INTIMIDATE)
+ {
+ u8 playerMonLevel = GetMonData(&gPlayerParty[0], MON_DATA_LEVEL);
+ if (playerMonLevel > 5 && enemyMonLevel <= playerMonLevel - 5 && Random() % 2 == 0)
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static u8 SpeciesToPikeMonId(u16 species)
+{
+ u8 ret;
+
+ if (species == SPECIES_SEVIPER)
+ ret = 0;
+ else if (species == SPECIES_MILOTIC)
+ ret = 1;
+ else
+ ret = 2;
+
+ return ret;
+}
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
new file mode 100644
index 000000000..23343ba20
--- /dev/null
+++ b/src/battle_pyramid.c
@@ -0,0 +1,1940 @@
+#include "global.h"
+#include "battle_pyramid.h"
+#include "battle_pyramid_bag.h"
+#include "event_data.h"
+#include "battle.h"
+#include "battle_setup.h"
+#include "battle_tower.h"
+#include "save.h"
+#include "strings.h"
+#include "fieldmap.h"
+#include "palette.h"
+#include "field_message_box.h"
+#include "random.h"
+#include "item.h"
+#include "util.h"
+#include "sound.h"
+#include "task.h"
+#include "start_menu.h"
+#include "string_util.h"
+#include "trainer_see.h"
+#include "main.h"
+#include "load_save.h"
+#include "script.h"
+#include "malloc.h"
+#include "overworld.h"
+#include "event_scripts.h"
+#include "constants/battle_frontier.h"
+#include "constants/event_objects.h"
+#include "constants/event_object_movement_constants.h"
+#include "constants/items.h"
+#include "constants/maps.h"
+#include "constants/moves.h"
+#include "constants/species.h"
+
+extern u8 gSelectedOrderFromParty[3];
+extern void door_upload_tiles(void);
+
+extern const struct MapLayout *const gMapLayouts[];
+extern const u16 gUnknown_08D856C8[][16];
+extern const u16 gBattleFrontierHeldItems[];
+extern const struct FacilityMon gBattleFrontierMons[];
+extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
+
+#define TOTAL_ROUNDS 20
+#define PICKUP_ITEMS_PER_ROUND 10
+
+struct PyramidWildMon
+{
+ u16 species;
+ u8 lvl;
+ u8 abilityBit;
+ u16 moves[4];
+};
+
+struct Struct_08613650
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u8 runMultiplier;
+ u8 unk5[8];
+};
+
+struct ClassMusic
+{
+ u8 class;
+ u8 music;
+};
+
+// This file's functions.
+static void sub_81A8E9C(void);
+static void sub_81A8F38(void);
+static void sub_81A9048(void);
+static void sub_81A9134(void);
+static void sub_81A917C(void);
+static void sub_81A91FC(void);
+static void sub_81A9254(void);
+static void sub_81A9290(void);
+static void sub_81A93C8(void);
+static void sub_81A9414(void);
+static void sub_81A9424(void);
+static void sub_81A9618(void);
+static void sub_81A966C(void);
+static void sub_81A9684(void);
+static void sub_81A975C(void);
+static void sub_81A97C8(void);
+static void sub_81A9828(void);
+static void sub_81A9834(void);
+static void InitBagItems(u8 lvlMode);
+static u8 sub_81AA9E4(void);
+static u8 sub_81A9998(s32 *, u8, u8);
+static void sub_81A97DC(u8 taskId);
+static void sub_81A9B44(u16 trainerId);
+static void sub_81AA96C(u8 *mapNums);
+static void sub_81AA33C(u8 *, u8 *);
+static void sub_81AA398(u8);
+static bool8 sub_81AA4D8(u8, u8);
+static bool8 sub_81AA648(u8, u8);
+static bool8 sub_81AA760(u8 arg0, u8 *mapNums, u8 whichMap, u8 id);
+static bool8 sub_81AA810(u8 arg0, u8 x, u8 y, u8 *mapNums, u8 whichMap, u8 id);
+
+// Const rom data.
+#include "data/battle_frontier/battle_pyramid_level_50_wild_mons.h"
+#include "data/battle_frontier/battle_pyramid_open_level_wild_mons.h"
+
+static const struct Struct_08613650 gUnknown_08613650[] =
+{
+ {
+ .unk0 = 0x07,
+ .unk1 = 0x03,
+ .unk2 = 0x00,
+ .unk3 = 0x00,
+ .runMultiplier = 0x80,
+ .unk5 = {0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03}
+ },
+ {
+ .unk0 = 0x06,
+ .unk1 = 0x03,
+ .unk2 = 0x00,
+ .unk3 = 0x00,
+ .runMultiplier = 0x80,
+ .unk5 = {0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04}
+ },
+ {
+ .unk0 = 0x05,
+ .unk1 = 0x03,
+ .unk2 = 0x00,
+ .unk3 = 0x00,
+ .runMultiplier = 0x78,
+ .unk5 = {0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05}
+ },
+ {
+ .unk0 = 0x04,
+ .unk1 = 0x04,
+ .unk2 = 0x00,
+ .unk3 = 0x00,
+ .runMultiplier = 0x78,
+ .unk5 = {0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x06}
+ },
+ {
+ .unk0 = 0x04,
+ .unk1 = 0x04,
+ .unk2 = 0x00,
+ .unk3 = 0x01,
+ .runMultiplier = 0x70,
+ .unk5 = {0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07}
+ },
+ {
+ .unk0 = 0x03,
+ .unk1 = 0x05,
+ .unk2 = 0x00,
+ .unk3 = 0x02,
+ .runMultiplier = 0x70,
+ .unk5 = {0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c}
+ },
+ {
+ .unk0 = 0x03,
+ .unk1 = 0x05,
+ .unk2 = 0x00,
+ .unk3 = 0x00,
+ .runMultiplier = 0x68,
+ .unk5 = {0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d}
+ },
+ {
+ .unk0 = 0x02,
+ .unk1 = 0x04,
+ .unk2 = 0x00,
+ .unk3 = 0x01,
+ .runMultiplier = 0x68,
+ .unk5 = {0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e}
+ },
+ {
+ .unk0 = 0x04,
+ .unk1 = 0x05,
+ .unk2 = 0x00,
+ .unk3 = 0x02,
+ .runMultiplier = 0x60,
+ .unk5 = {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}
+ },
+ {
+ .unk0 = 0x03,
+ .unk1 = 0x06,
+ .unk2 = 0x00,
+ .unk3 = 0x04,
+ .runMultiplier = 0x60,
+ .unk5 = {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}
+ },
+ {
+ .unk0 = 0x02,
+ .unk1 = 0x03,
+ .unk2 = 0x00,
+ .unk3 = 0x00,
+ .runMultiplier = 0x58,
+ .unk5 = {0x0c, 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c, 0x0d}
+ },
+ {
+ .unk0 = 0x04,
+ .unk1 = 0x05,
+ .unk2 = 0x00,
+ .unk3 = 0x00,
+ .runMultiplier = 0x58,
+ .unk5 = {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}
+ },
+ {
+ .unk0 = 0x03,
+ .unk1 = 0x07,
+ .unk2 = 0x00,
+ .unk3 = 0x00,
+ .runMultiplier = 0x50,
+ .unk5 = {0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c}
+ },
+ {
+ .unk0 = 0x02,
+ .unk1 = 0x04,
+ .unk2 = 0x00,
+ .unk3 = 0x00,
+ .runMultiplier = 0x50,
+ .unk5 = {0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d}
+ },
+ {
+ .unk0 = 0x03,
+ .unk1 = 0x06,
+ .unk2 = 0x00,
+ .unk3 = 0x00,
+ .runMultiplier = 0x50,
+ .unk5 = {0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e}
+ },
+ {
+ .unk0 = 0x03,
+ .unk1 = 0x08,
+ .unk2 = 0x00,
+ .unk3 = 0x00,
+ .runMultiplier = 0x50,
+ .unk5 = {0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f}
+ }
+};
+
+static const u8 gUnknown_08613750[34][2] =
+{
+ {0x28, 0x00},
+ {0x46, 0x01},
+ {0x5a, 0x02},
+ {0x64, 0x03},
+ {0x23, 0x01},
+ {0x37, 0x02},
+ {0x4b, 0x03},
+ {0x5a, 0x04},
+ {0x64, 0x0a},
+ {0x23, 0x02},
+ {0x37, 0x03},
+ {0x4b, 0x04},
+ {0x5a, 0x05},
+ {0x64, 0x0b},
+ {0x23, 0x03},
+ {0x37, 0x04},
+ {0x4b, 0x05},
+ {0x5a, 0x06},
+ {0x64, 0x0c},
+ {0x23, 0x04},
+ {0x37, 0x05},
+ {0x4b, 0x06},
+ {0x5a, 0x07},
+ {0x64, 0x0d},
+ {0x23, 0x05},
+ {0x37, 0x06},
+ {0x4b, 0x07},
+ {0x5a, 0x08},
+ {0x64, 0x0e},
+ {0x23, 0x06},
+ {0x37, 0x07},
+ {0x4b, 0x08},
+ {0x5a, 0x09},
+ {0x64, 0x0f}
+};
+
+static const u8 gUnknown_08613794[] =
+{
+ 0x00, 0x04, 0x09, 0x0e, 0x13, 0x18, 0x1d, 0x00
+};
+
+static const u16 sPickupItemsLvl50[TOTAL_ROUNDS][PICKUP_ITEMS_PER_ROUND] =
+{
+ {ITEM_HYPER_POTION, ITEM_FLUFFY_TAIL, ITEM_CHERI_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_BRIGHT_POWDER, ITEM_SHELL_BELL, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_DIRE_HIT, ITEM_PECHA_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_LEFTOVERS, ITEM_CHOICE_BAND, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_ATTACK, ITEM_RAWST_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_SCOPE_LENS, ITEM_FOCUS_BAND, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_X_DEFEND, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_QUICK_CLAW, ITEM_KINGS_ROCK, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_SPEED, ITEM_CHESTO_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_BRIGHT_POWDER, ITEM_SHELL_BELL, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_X_ACCURACY, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_LEFTOVERS, ITEM_CHOICE_BAND, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_SPECIAL, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_SCOPE_LENS, ITEM_FOCUS_BAND, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_GUARD_SPEC, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_QUICK_CLAW, ITEM_KINGS_ROCK, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_FLUFFY_TAIL, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_BRIGHT_POWDER, ITEM_SHELL_BELL, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_DIRE_HIT, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_LEFTOVERS, ITEM_CHOICE_BAND, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_ATTACK, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_SCOPE_LENS, ITEM_FOCUS_BAND, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_X_DEFEND, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_QUICK_CLAW, ITEM_KINGS_ROCK, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_SPEED, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_BRIGHT_POWDER, ITEM_SHELL_BELL, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_X_ACCURACY, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_LEFTOVERS, ITEM_CHOICE_BAND, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_SPECIAL, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_SCOPE_LENS, ITEM_FOCUS_BAND, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_GUARD_SPEC, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_QUICK_CLAW, ITEM_KINGS_ROCK, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_FLUFFY_TAIL, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_BRIGHT_POWDER, ITEM_SHELL_BELL, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_DIRE_HIT, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_LEFTOVERS, ITEM_CHOICE_BAND, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_ATTACK, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_SCOPE_LENS, ITEM_FOCUS_BAND, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_X_DEFEND, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_QUICK_CLAW, ITEM_KINGS_ROCK, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+};
+
+static const u16 sPickupItemsLvlOpen[TOTAL_ROUNDS][PICKUP_ITEMS_PER_ROUND] =
+{
+ {ITEM_HYPER_POTION, ITEM_FLUFFY_TAIL, ITEM_CHERI_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_BRIGHT_POWDER, ITEM_SHELL_BELL, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_DIRE_HIT, ITEM_PECHA_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_LEFTOVERS, ITEM_CHOICE_BAND, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_ATTACK, ITEM_RAWST_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_SCOPE_LENS, ITEM_FOCUS_BAND, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_X_DEFEND, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_QUICK_CLAW, ITEM_KINGS_ROCK, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_SPEED, ITEM_CHESTO_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_BRIGHT_POWDER, ITEM_SHELL_BELL, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_X_ACCURACY, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_LEFTOVERS, ITEM_CHOICE_BAND, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_SPECIAL, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_SCOPE_LENS, ITEM_FOCUS_BAND, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_GUARD_SPEC, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_QUICK_CLAW, ITEM_KINGS_ROCK, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_FLUFFY_TAIL, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_BRIGHT_POWDER, ITEM_SHELL_BELL, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_DIRE_HIT, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_LEFTOVERS, ITEM_CHOICE_BAND, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_ATTACK, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_SCOPE_LENS, ITEM_FOCUS_BAND, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_X_DEFEND, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_QUICK_CLAW, ITEM_KINGS_ROCK, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_SPEED, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_BRIGHT_POWDER, ITEM_SHELL_BELL, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_X_ACCURACY, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_LEFTOVERS, ITEM_CHOICE_BAND, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_SPECIAL, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_SCOPE_LENS, ITEM_FOCUS_BAND, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_GUARD_SPEC, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_QUICK_CLAW, ITEM_KINGS_ROCK, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_FLUFFY_TAIL, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_BRIGHT_POWDER, ITEM_SHELL_BELL, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_DIRE_HIT, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_LEFTOVERS, ITEM_CHOICE_BAND, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+ {ITEM_HYPER_POTION, ITEM_X_ATTACK, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LUM_BERRY, ITEM_REVIVE, ITEM_SCOPE_LENS, ITEM_FOCUS_BAND, ITEM_MAX_REVIVE, ITEM_SACRED_ASH},
+ {ITEM_HYPER_POTION, ITEM_X_DEFEND, ITEM_LUM_BERRY, ITEM_ETHER, ITEM_LEPPA_BERRY, ITEM_REVIVE, ITEM_QUICK_CLAW, ITEM_KINGS_ROCK, ITEM_FULL_RESTORE, ITEM_MAX_ELIXIR},
+};
+
+static const u8 gUnknown_08613ABC[63][2] =
+{
+ {0x1f, 0x00},
+ {0x2e, 0x01},
+ {0x3d, 0x02},
+ {0x47, 0x03},
+ {0x51, 0x04},
+ {0x5b, 0x05},
+ {0x5e, 0x06},
+ {0x61, 0x07},
+ {0x64, 0x08},
+ {0x0f, 0x00},
+ {0x2e, 0x01},
+ {0x3d, 0x02},
+ {0x47, 0x03},
+ {0x51, 0x04},
+ {0x5b, 0x05},
+ {0x5e, 0x06},
+ {0x61, 0x08},
+ {0x64, 0x09},
+ {0x0f, 0x00},
+ {0x1e, 0x01},
+ {0x3d, 0x02},
+ {0x47, 0x03},
+ {0x51, 0x04},
+ {0x5b, 0x05},
+ {0x5e, 0x06},
+ {0x61, 0x07},
+ {0x64, 0x08},
+ {0x1c, 0x00},
+ {0x2b, 0x01},
+ {0x3a, 0x02},
+ {0x44, 0x03},
+ {0x4e, 0x04},
+ {0x58, 0x05},
+ {0x5c, 0x07},
+ {0x60, 0x08},
+ {0x64, 0x09},
+ {0x0f, 0x00},
+ {0x2b, 0x01},
+ {0x3a, 0x02},
+ {0x44, 0x03},
+ {0x4e, 0x04},
+ {0x58, 0x05},
+ {0x5c, 0x06},
+ {0x60, 0x07},
+ {0x64, 0x09},
+ {0x0f, 0x00},
+ {0x1e, 0x01},
+ {0x3a, 0x02},
+ {0x44, 0x03},
+ {0x4e, 0x04},
+ {0x58, 0x05},
+ {0x5c, 0x06},
+ {0x60, 0x07},
+ {0x64, 0x08},
+ {0x1c, 0x00},
+ {0x2b, 0x01},
+ {0x3a, 0x02},
+ {0x44, 0x03},
+ {0x4e, 0x04},
+ {0x58, 0x05},
+ {0x5c, 0x06},
+ {0x60, 0x08},
+ {0x64, 0x09},
+};
+
+static const u8 gUnknown_08613B3A[] = {0x00, 0x09, 0x12, 0x1b, 0x24, 0x2d, 0x36};
+
+static const struct ClassMusic gUnknown_08613B44[54] =
+{
+ {0x03, 0x06},
+ {0x0b, 0x06},
+ {0x0d, 0x06},
+ {0x0f, 0x01},
+ {0x2b, 0x04},
+ {0x2d, 0x01},
+ {0x24, 0x09},
+ {0x29, 0x04},
+ {0x05, 0x05},
+ {0x18, 0x04},
+ {0x2f, 0x00},
+ {0x2e, 0x09},
+ {0x11, 0x0c},
+ {0x10, 0x0b},
+ {0x1e, 0x0d},
+ {0x08, 0x01},
+ {0x17, 0x03},
+ {0x0c, 0x04},
+ {0x38, 0x04},
+ {0x1c, 0x03},
+ {0x1a, 0x00},
+ {0x19, 0x0b},
+ {0x09, 0x07},
+ {0x31, 0x07},
+ {0x35, 0x07},
+ {0x36, 0x01},
+ {0x33, 0x00},
+ {0x2a, 0x03},
+ {0x16, 0x0d},
+ {0x0e, 0x03},
+ {0x15, 0x01},
+ {0x14, 0x01},
+ {0x2c, 0x01},
+ {0x1b, 0x02},
+ {0x04, 0x01},
+ {0x07, 0x03},
+ {0x34, 0x05},
+ {0x32, 0x00},
+ {0x37, 0x02},
+ {0x1d, 0x04},
+ {0x22, 0x09},
+ {0x1f, 0x01},
+ {0x25, 0x00},
+ {0x0a, 0x04},
+ {0x28, 0x00},
+ {0x06, 0x05},
+ {0x27, 0x0b},
+ {0x26, 0x00},
+ {0x13, 0x00},
+ {0x12, 0x02},
+ {0x39, 0x08},
+ {0x02, 0x0b},
+ {0x20, 0x01},
+ {0x21, 0x00},
+};
+
+static const u8 gUnknown_08613C1C[50][2] =
+{
+ {0x0d, 0x03},
+ {0x0e, 0x04},
+ {0x10, 0x01},
+ {0x11, 0x00},
+ {0x03, 0x02},
+ {0x12, 0x03},
+ {0x0c, 0x03},
+ {0x13, 0x03},
+ {0x14, 0x03},
+ {0x15, 0x02},
+ {0x17, 0x02},
+ {0x07, 0x02},
+ {0x0a, 0x04},
+ {0x19, 0x02},
+ {0x1a, 0x02},
+ {0x1b, 0x00},
+ {0x1d, 0x02},
+ {0x1e, 0x02},
+ {0x1f, 0x03},
+ {0x20, 0x04},
+ {0x26, 0x00},
+ {0x27, 0x01},
+ {0x29, 0x04},
+ {0x2a, 0x05},
+ {0x09, 0x04},
+ {0x16, 0x05},
+ {0x2b, 0x00},
+ {0x2d, 0x04},
+ {0x2e, 0x02},
+ {0x30, 0x02},
+ {0x32, 0x02},
+ {0x31, 0x03},
+ {0x2f, 0x03},
+ {0x33, 0x03},
+ {0x34, 0x02},
+ {0x04, 0x02},
+ {0x35, 0x00},
+ {0x36, 0x03},
+ {0x37, 0x03},
+ {0x38, 0x03},
+ {0x1c, 0x01},
+ {0x3a, 0x02},
+ {0x05, 0x02},
+ {0x42, 0x02},
+ {0x02, 0x03},
+ {0x44, 0x02},
+ {0x45, 0x03},
+ {0x47, 0x03},
+ {0x43, 0x00},
+ {0x00, 0x04},
+};
+
+static const u8 *const gUnknown_08613C80[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_252D2D,
+ BattleFrontier_BattlePyramidEmptySquare_Text_252D57,
+ BattleFrontier_BattlePyramidEmptySquare_Text_252D81,
+ BattleFrontier_BattlePyramidEmptySquare_Text_252DAB,
+};
+
+static const u8 *const gUnknown_08613C90[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_25330B,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2532CC,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25328B,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253248,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253206,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2531C4,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253183,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253140,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2530FD,
+};
+
+static const u8 *const gUnknown_08613CB4[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_2544A6,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25445A,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25440B,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2543BA,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25436A,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25431A,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2542CB,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25427A,
+};
+
+static const u8 *const gUnknown_08613CD4[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_252DD5,
+ BattleFrontier_BattlePyramidEmptySquare_Text_252E03,
+ BattleFrontier_BattlePyramidEmptySquare_Text_252E31,
+ BattleFrontier_BattlePyramidEmptySquare_Text_252E5F,
+};
+
+static const u8 *const gUnknown_08613CE4[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_25362E,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2535D4,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253578,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25351A,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2534BD,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253460,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253404,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2533A6,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25334D,
+};
+
+static const u8 *const gUnknown_08613D08[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_25471E,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2546CC,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25467C,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25462A,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2545D9,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254588,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254538,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2544E6,
+};
+
+static const u8 *const gUnknown_08613D28[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_252E8D,
+ BattleFrontier_BattlePyramidEmptySquare_Text_252EAA,
+ BattleFrontier_BattlePyramidEmptySquare_Text_252EC7,
+ BattleFrontier_BattlePyramidEmptySquare_Text_252EE4,
+};
+
+static const u8 *const gUnknown_08613D38[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_2539EC,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253980,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253915,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2538A8,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25383C,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2537D0,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253765,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2536F8,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25368B,
+};
+
+static const u8 *const gUnknown_08613D5C[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_254A0B,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2549AE,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25494D,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2548EB,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25488A,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254829,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2547C9,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254767,
+};
+
+static const u8 *const gUnknown_08613D7C[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_252F01,
+ BattleFrontier_BattlePyramidEmptySquare_Text_252F3A,
+ BattleFrontier_BattlePyramidEmptySquare_Text_252F73,
+ BattleFrontier_BattlePyramidEmptySquare_Text_252FAC,
+};
+
+static const u8 *const gUnknown_08613D8C[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_253D3E,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253CE0,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253C87,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253C2C,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253BD2,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253B78,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253B1F,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253AC4,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253A69,
+};
+
+static const u8 *const gUnknown_08613DB0[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_254C3E,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254BF1,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254BAE,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254B69,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254B25,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254AE1,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254A9E,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254A59,
+};
+
+static const u8 *const gUnknown_08613DD0[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_252FE5,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253000,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25301B,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253036,
+};
+
+static const u8 *const gUnknown_08613DE0[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_253F6C,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253F34,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253EFA,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253EBE,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253E83,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253E48,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253E0E,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253DD2,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253D96,
+};
+
+static const u8 *const gUnknown_08613E04[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_254E6E,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254E27,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254DE0,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254D97,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254D4F,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254D07,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254CC0,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254C77,
+};
+
+static const u8 *const gUnknown_08613E24[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_253051,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25307C,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2530A7,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2530D2,
+};
+
+static const u8 *const gUnknown_08613E34[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_25422B,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2541DD,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25418D,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25413B,
+ BattleFrontier_BattlePyramidEmptySquare_Text_2540EA,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254099,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254049,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253FF7,
+ BattleFrontier_BattlePyramidEmptySquare_Text_253FA5,
+};
+
+static const u8 *const gUnknown_08613E58[] =
+{
+ BattleFrontier_BattlePyramidEmptySquare_Text_255068,
+ BattleFrontier_BattlePyramidEmptySquare_Text_25502F,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254FF6,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254FBB,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254F81,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254F47,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254F0E,
+ BattleFrontier_BattlePyramidEmptySquare_Text_254ED3,
+};
+
+static const u8 *const *const gUnknown_08613E78[] =
+{
+ gUnknown_08613C80,
+ gUnknown_08613C90,
+ gUnknown_08613CB4,
+};
+
+static const u8 *const *const gUnknown_08613E84[] =
+{
+ gUnknown_08613CD4,
+ gUnknown_08613CE4,
+ gUnknown_08613D08,
+};
+
+static const u8 *const *const gUnknown_08613E90[] =
+{
+ gUnknown_08613D28,
+ gUnknown_08613D38,
+ gUnknown_08613D5C,
+};
+
+static const u8 *const *const gUnknown_08613E9C[] =
+{
+ gUnknown_08613D7C,
+ gUnknown_08613D8C,
+ gUnknown_08613DB0,
+};
+
+static const u8 *const *const gUnknown_08613EA8[] =
+{
+ gUnknown_08613DD0,
+ gUnknown_08613DE0,
+ gUnknown_08613E04,
+};
+
+static const u8 *const *const gUnknown_08613EB4[] =
+{
+ gUnknown_08613E24,
+ gUnknown_08613E34,
+ gUnknown_08613E58,
+};
+
+static const u8 *const *const *const gUnknown_08613EC0[] =
+{
+ gUnknown_08613E78,
+ gUnknown_08613E84,
+ gUnknown_08613E90,
+ gUnknown_08613E9C,
+ gUnknown_08613EA8,
+ gUnknown_08613EB4,
+};
+
+static const u8 gUnknown_08613ED8[] = {3, 4, 5, 6, 7, 8, 3, 4};
+
+static void (* const sBattlePyramidFunctions[])(void) =
+{
+ sub_81A8E9C,
+ sub_81A8F38,
+ sub_81A9048,
+ sub_81A9134,
+ sub_81A917C,
+ sub_81A91FC,
+ sub_81A9254,
+ sub_81A9290,
+ sub_81A93C8,
+ sub_81A9414,
+ sub_81A9424,
+ sub_81A9618,
+ sub_81A966C,
+ sub_81A9684,
+ sub_81A975C,
+ sub_81A97C8,
+ sub_81A9828,
+ sub_81A9834,
+};
+
+static const u16 gUnknown_08613F28[] = {ITEM_HP_UP, ITEM_PROTEIN, ITEM_IRON, ITEM_CALCIUM, ITEM_CARBOS, ITEM_ZINC};
+static const u16 gUnknown_08613F34[] = {ITEM_BRIGHT_POWDER, ITEM_WHITE_HERB, ITEM_QUICK_CLAW, ITEM_LEFTOVERS, ITEM_MENTAL_HERB, ITEM_KINGS_ROCK, ITEM_FOCUS_BAND, ITEM_SCOPE_LENS, ITEM_CHOICE_BAND};
+
+static const u8 gUnknown_08613F46[][4] =
+{
+ {0x01, 0x04, 0xff, 0xff},
+ {0x00, 0x02, 0x05, 0xff},
+ {0x01, 0x03, 0x06, 0xff},
+ {0x02, 0x07, 0xff, 0xff},
+ {0x00, 0x05, 0x08, 0xff},
+ {0x01, 0x04, 0x06, 0x09},
+ {0x02, 0x05, 0x07, 0x0a},
+ {0x03, 0x06, 0x0b, 0xff},
+ {0x04, 0x09, 0x0c, 0xff},
+ {0x05, 0x08, 0x0a, 0x0d},
+ {0x06, 0x09, 0x0b, 0x0e},
+ {0x07, 0x0a, 0x0f, 0xff},
+ {0x08, 0x0d, 0xff, 0xff},
+ {0x09, 0x0c, 0x0e, 0xff},
+ {0x0a, 0x0d, 0x0f, 0xff},
+ {0x0b, 0x0e, 0xff, 0xff},
+};
+
+static const u8 sPickupPercentages[PICKUP_ITEMS_PER_ROUND] = {30, 40, 50, 60, 70, 80, 85, 90, 95, 100};
+
+// code
+void CallBattlePyramidFunction(void)
+{
+ sBattlePyramidFunctions[gSpecialVar_0x8004]();
+}
+
+static void sub_81A8E9C(void)
+{
+ bool32 isCurrent;
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ gSaveBlock2Ptr->frontier.field_CA8 = 0;
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
+ gSaveBlock2Ptr->frontier.field_CA9_a = 0;
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = gSaveBlock2Ptr->frontier.field_CDC & 0x2000;
+ else
+ isCurrent = gSaveBlock2Ptr->frontier.field_CDC & 0x1000;
+
+ if (!isCurrent)
+ {
+ gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] = 0;
+ InitBagItems(lvlMode);
+ }
+
+ sub_81C4EEC();
+ gTrainerBattleOpponent_A = 0;
+ gBattleOutcome = 0;
+}
+
+static void sub_81A8F38(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E18;
+ break;
+ case 1:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode];
+ break;
+ case 2:
+ if (lvlMode != FRONTIER_LVL_50)
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CDC & 0x2000;
+ else
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CDC & 0x1000;
+ break;
+ case 3:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_50];
+ break;
+ case 4:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_OPEN];
+ break;
+ case 5:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CDC & 0x1000;
+ break;
+ case 6:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CDC & 0x2000;
+ break;
+ }
+}
+
+static void sub_81A9048(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ gSaveBlock2Ptr->frontier.field_E18 = gSpecialVar_0x8006;
+ break;
+ case 1:
+ gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] = gSpecialVar_0x8006;
+ break;
+ case 2:
+ if (lvlMode != FRONTIER_LVL_50)
+ {
+ if (gSpecialVar_0x8006)
+ gSaveBlock2Ptr->frontier.field_CDC |= 0x2000;
+ else
+ gSaveBlock2Ptr->frontier.field_CDC &= ~(0x2000);
+ }
+ else
+ {
+ if (gSpecialVar_0x8006)
+ gSaveBlock2Ptr->frontier.field_CDC |= 0x1000;
+ else
+ gSaveBlock2Ptr->frontier.field_CDC &= ~(0x1000);
+ }
+ break;
+ case 7:
+ gSaveBlock2Ptr->frontier.field_E2A = gSpecialVar_0x8006;
+ break;
+ }
+}
+
+static void sub_81A9134(void)
+{
+ gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
+ VarSet(VAR_TEMP_0, 0);
+ gSaveBlock2Ptr->frontier.field_CA9_a = 1;
+ save_serialize_map();
+ TrySavingData(SAVE_LINK);
+}
+
+static void sub_81A917C(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] > 41)
+ gSaveBlock2Ptr->frontier.field_E18 = gUnknown_08613F34[Random() % ARRAY_COUNT(gUnknown_08613F34)];
+ else
+ gSaveBlock2Ptr->frontier.field_E18 = gUnknown_08613F28[Random() % ARRAY_COUNT(gUnknown_08613F28)];
+}
+
+static void sub_81A91FC(void)
+{
+ if (AddBagItem(gSaveBlock2Ptr->frontier.field_E18, 1) == TRUE)
+ {
+ CopyItemName(gSaveBlock2Ptr->frontier.field_E18, gStringVar1);
+ gSaveBlock2Ptr->frontier.field_E18 = 0;
+ gSpecialVar_Result = TRUE;
+ }
+ else
+ {
+ gSpecialVar_Result = FALSE;
+ }
+}
+
+static void sub_81A9254(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ gSaveBlock2Ptr->frontier.field_E22[i] = Random();
+
+ gSaveBlock2Ptr->frontier.field_E2A = 0;
+}
+
+static void sub_81A9290(void)
+{
+ s32 i;
+ s32 r7;
+ s32 rand;
+ u8 id;
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 floor = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
+ u32 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7) % TOTAL_ROUNDS;
+
+ if (round >= TOTAL_ROUNDS)
+ round = TOTAL_ROUNDS - 1;
+
+ id = sub_81AA9E4();
+ r7 = (gSpecialVar_LastTalked - gUnknown_08613650[id].unk1) - 1;
+ rand = gSaveBlock2Ptr->frontier.field_E22[r7 / 2];
+ SeedRng2(rand);
+
+ for (i = 0; i < r7 + 1; i++)
+ rand = Random2() % 100;
+
+ for (i = gUnknown_08613B3A[floor]; i < ARRAY_COUNT(gUnknown_08613ABC); i++)
+ {
+ if (rand < gUnknown_08613ABC[i][0])
+ break;
+ }
+
+ if (lvlMode != FRONTIER_LVL_50)
+ gSpecialVar_0x8000 = sPickupItemsLvlOpen[round][gUnknown_08613ABC[i][1]];
+ else
+ gSpecialVar_0x8000 = sPickupItemsLvl50[round][gUnknown_08613ABC[i][1]];
+
+ gSpecialVar_0x8001 = 1;
+}
+
+static void sub_81A93C8(void)
+{
+ struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
+ s32 i = 0;
+
+ for (;;)
+ {
+ if (events[i].localId == gSpecialVar_LastTalked)
+ {
+ events[i].x = 0x7FFF;
+ events[i].y = 0x7FFF;
+ break;
+ }
+ i++;
+ if (events[i].localId == 0)
+ break;
+ }
+}
+
+static void sub_81A9414(void)
+{
+ gFacilityTrainers = gBattleFrontierTrainers;
+}
+
+static void sub_81A9424(void)
+{
+ s32 i;
+ s32 var_24;
+ u8 id;
+ s32 class = 0;
+ s32 r7 = 0;
+ struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
+ u16 trainerId = LocalIdToPyramidTrainerId(gEventObjects[gSelectedEventObject].localId);
+
+ for (i = 0; i < ARRAY_COUNT(gUnknown_08613C1C); i++)
+ {
+ if (gUnknown_08613C1C[i][0] == gFacilityTrainers[trainerId].facilityClass)
+ {
+ class = gUnknown_08613C1C[i][1];
+ break;
+ }
+ }
+
+ var_24 = gUnknown_08613ED8[gEventObjects[gSelectedEventObject].localId - 1];
+ i = 0;
+ while (!i)
+ {
+ switch (var_24)
+ {
+ case 0:
+ r7 = sub_81A9998(&var_24, 8, 0);
+ i = 1;
+ break;
+ case 1:
+ for (i = 0; i < sub_81AAA40(); i++)
+ {
+ if (events[i].graphicsId == EVENT_OBJ_GFX_ITEM_BALL && events[i].x != 0x7FFF && events[i].y != 0x7FFF)
+ r7++;
+ }
+ i = 1;
+ break;
+ case 2:
+ id = sub_81AA9E4();
+ r7 = gUnknown_08613650[id].unk1;
+ for (i = 0; i < 8; i++)
+ {
+ if (gBitTable[i] & gSaveBlock2Ptr->frontier.field_E2A)
+ r7--;
+ }
+ i = 1;
+ break;
+ case 3:
+ sub_81A9998(&var_24, 8, 2);
+ break;
+ case 4:
+ sub_81A9998(&var_24, 8, 1);
+ break;
+ case 5:
+ sub_81A9998(&var_24, 16, 2);
+ break;
+ case 6:
+ sub_81A9998(&var_24, 16, 1);
+ break;
+ case 7:
+ sub_81A9998(&var_24, 24, 2);
+ break;
+ case 8:
+ sub_81A9998(&var_24, 24, 1);
+ break;
+ }
+ }
+ ShowFieldMessage(gUnknown_08613EC0[class][var_24][r7]);
+}
+
+static void sub_81A9618(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] < 999)
+ gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode]++;
+ if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] > gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode])
+ gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode] = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode];
+}
+
+static void sub_81A966C(void)
+{
+ gSpecialVar_Result = InBattlePyramid();
+}
+
+static void sub_81A9684(void)
+{
+ switch (gSpecialVar_0x8006)
+ {
+ case 0:
+ gSaveBlock2Ptr->frontier.field_E68 = gSpecialVar_0x8005;
+ break;
+ case 1:
+ switch (gSpecialVar_Result)
+ {
+ case 0:
+ if (!gPaletteFade.active)
+ {
+ if (gSaveBlock2Ptr->frontier.field_E68 >= 120)
+ gSaveBlock2Ptr->frontier.field_E68 = 120;
+ else
+ PlaySE(gSpecialVar_0x8007);
+ gSpecialVar_Result++;
+ }
+ break;
+ case 1:
+ if (gSpecialVar_0x8005 != 0)
+ {
+ gSpecialVar_0x8005--;
+ gSaveBlock2Ptr->frontier.field_E68++;
+ if (gSaveBlock2Ptr->frontier.field_E68 > 120)
+ {
+ gSaveBlock2Ptr->frontier.field_E68 = 120;
+ gSpecialVar_Result++;
+ }
+ door_upload_tiles();
+ }
+ else
+ {
+ gSpecialVar_Result = 2;
+ }
+ break;
+ case 2:
+ default:
+ break;
+ }
+ break;
+ }
+}
+
+static void sub_81A975C(void)
+{
+ s32 i, j;
+ u16 item = 0;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (gSaveBlock2Ptr->frontier.selectedPartyMons[j] != 0 && gSaveBlock2Ptr->frontier.selectedPartyMons[j] - 1 == i)
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &item);
+ }
+ }
+}
+
+static void sub_81A97C8(void)
+{
+ CreateTask(sub_81A97DC, 0);
+}
+
+static void sub_81A97DC(u8 taskId)
+{
+ if (gPaletteFade.active)
+ {
+ CpuCopy16(gUnknown_08D856C8[gSaveBlock2Ptr->frontier.curChallengeBattleNum], &gPlttBufferUnfaded[96], 32);
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_81A9828(void)
+{
+ sub_809FDD4();
+}
+
+static void sub_81A9834(void)
+{
+ s32 i, j, k, l;
+
+ for (i = 0; i < 3; i++)
+ {
+ s32 id = gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1;
+ for (j = 0; j < 3; j++)
+ {
+ if (GetMonData(&gSaveBlock1Ptr->playerParty[id], MON_DATA_SPECIES, NULL) == GetMonData(&gPlayerParty[j], MON_DATA_SPECIES, NULL))
+ {
+ for (k = 0; k < 4; k++)
+ {
+ for (l = 0; l < 4; l++)
+ {
+ if (GetMonData(&gSaveBlock1Ptr->playerParty[id], MON_DATA_MOVE1 + l, NULL) == GetMonData(&gPlayerParty[j], MON_DATA_MOVE1 + k, NULL))
+ break;
+ }
+ if (l == 4)
+ SetMonMoveSlot(&gPlayerParty[j], MOVE_SKETCH, k);
+ }
+ gSaveBlock1Ptr->playerParty[id] = gPlayerParty[j];
+ gSelectedOrderFromParty[j] = id + 1;
+ break;
+ }
+ }
+ }
+
+ for (i = 0; i < 3; i++)
+ gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i];
+}
+
+static u8 sub_81A9998(s32 *arg0, u8 arg1, u8 arg2)
+{
+ s32 i, j;
+ u8 ret = 0;
+ u16 *map = gUnknown_03005DC0.map;
+ map += gUnknown_03005DC0.width * 7 + 7;
+
+ for (i = 0; i < 32; map += 47, i++)
+ {
+ for (j = 0; j < 32; j++)
+ {
+ if ((map[j] & 0x3FF) == 0x28E)
+ {
+ j += 7 - gEventObjects[gSelectedEventObject].initialCoords.x;
+ i += 7 - gEventObjects[gSelectedEventObject].initialCoords.y;
+ if (j >= arg1 || j <= -arg1 || i >= arg1 || i <= -arg1 || arg2 == 0)
+ {
+ if (j > 0 && i > 0)
+ {
+ if (j >= i)
+ ret = 2;
+ else
+ ret = 3;
+ }
+ else if (j < 0 && i < 0)
+ {
+ if (j > i)
+ ret = 0;
+ else
+ ret = 1;
+ }
+ else if (j == 0)
+ {
+ if (i > 0)
+ ret = 3;
+ else
+ ret = 0;
+ }
+ else if (i == 0)
+ {
+ if (j > 0)
+ ret = 2;
+ else
+ ret = 1;
+ }
+ else if (j < 0)
+ {
+ if (j + i > 0)
+ ret = 3;
+ else
+ ret = 1;
+ }
+ else
+ {
+ ret = (~(j + i) >= 0) ? 0 : 2;
+ }
+ *arg0 = 0;
+ }
+ else
+ {
+ *arg0 = arg2;
+ }
+ return ret;
+ }
+ }
+ }
+
+ return ret;
+}
+
+u16 LocalIdToPyramidTrainerId(u8 localId)
+{
+ return gSaveBlock2Ptr->frontier.field_CB4[localId - 1];
+}
+
+bool8 GetBattlePyramidTrainerFlag(u8 eventId)
+{
+ return gSaveBlock2Ptr->frontier.field_E2A & gBitTable[gEventObjects[eventId].localId - 1];
+}
+
+void sub_81A9B04(void)
+{
+ sub_81A9B44(gTrainerBattleOpponent_A);
+ if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ {
+ gSelectedEventObject = GetChosenApproachingTrainerEventObjectId(1);
+ sub_81A9B44(gTrainerBattleOpponent_B);
+ }
+}
+
+static void sub_81A9B44(u16 trainerId)
+{
+ s32 i;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ gSaveBlock2Ptr->frontier.field_E2A |= gBitTable[i];
+ }
+
+ gEventObjects[gSelectedEventObject].movementType = MOVEMENT_TYPE_WANDER_AROUND;
+ gSaveBlock1Ptr->eventObjectTemplates[gSpecialVar_LastTalked - 1].movementType = MOVEMENT_TYPE_WANDER_AROUND;
+ gEventObjects[gSelectedEventObject].initialCoords.x = gEventObjects[gSelectedEventObject].currentCoords.x;
+ gEventObjects[gSelectedEventObject].initialCoords.y = gEventObjects[gSelectedEventObject].currentCoords.y;
+}
+
+void GenerateBattlePyramidWildMon(void)
+{
+ u8 name[POKEMON_NAME_LENGTH + 1];
+ s32 i;
+ const struct PyramidWildMon *wildMons;
+ u32 id;
+ u32 lvl = gSaveBlock2Ptr->frontier.lvlMode;
+ u16 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] / 7) % TOTAL_ROUNDS;
+
+ if (round >= TOTAL_ROUNDS)
+ round = TOTAL_ROUNDS - 1;
+
+ if (lvl != FRONTIER_LVL_50)
+ wildMons = sOpenLevelWildMonPointers[round];
+ else
+ wildMons = sLevel50WildMonPointers[round];
+
+ id = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) - 1;
+ SetMonData(&gEnemyParty[0], MON_DATA_SPECIES, &wildMons[id].species);
+ GetSpeciesName(name, wildMons[id].species);
+ SetMonData(&gEnemyParty[0], MON_DATA_NICKNAME, &name);
+ if (lvl != FRONTIER_LVL_50)
+ {
+ lvl = SetFacilityPtrsGetLevel();
+ lvl -= wildMons[id].lvl;
+ lvl = lvl - 5 + (Random() % 11);
+ }
+ else
+ {
+ lvl = wildMons[id].lvl - 5 + ((Random() % 11));
+ }
+ SetMonData(&gEnemyParty[0],
+ MON_DATA_EXP,
+ &gExperienceTables[gBaseStats[wildMons[id].species].growthRate][lvl]);
+
+ switch (wildMons[id].abilityBit)
+ {
+ case 0:
+ case 1:
+ SetMonData(&gEnemyParty[0], MON_DATA_ALT_ABILITY, &wildMons[id].abilityBit);
+ break;
+ case 2:
+ default:
+ if (gBaseStats[wildMons[id].species].ability2)
+ {
+ i = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY, NULL) % 2;
+ SetMonData(&gEnemyParty[0], MON_DATA_ALT_ABILITY, &i);
+ }
+ else
+ {
+ i = 0;
+ SetMonData(&gEnemyParty[0], MON_DATA_ALT_ABILITY, &i);
+ }
+ break;
+ }
+
+ for (i = 0; i < 4; i++)
+ SetMonMoveSlot(&gEnemyParty[0], wildMons[id].moves[i], i);
+
+ if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] >= 140) // BUG: Reading outside the array as lvl was used for mon level instead of frontier lvl mode.
+ {
+ id = (Random() % 17) + 15;
+ for (i = 0; i < NUM_STATS; i++)
+ SetMonData(&gEnemyParty[0], MON_DATA_HP_IV + i, &id);
+ }
+ CalculateMonStats(&gEnemyParty[0]);
+}
+
+u8 GetPyramidRunMultiplier(void)
+{
+ u8 id = sub_81AA9E4();
+ return gUnknown_08613650[id].runMultiplier;
+}
+
+u8 InBattlePyramid(void)
+{
+ if (gMapHeader.mapLayoutId == 361)
+ return 1;
+ else if (gMapHeader.mapLayoutId == 378)
+ return 2;
+ else
+ return FALSE;
+}
+
+bool8 InBattlePyramid_(void)
+{
+ return (gMapHeader.mapLayoutId == 361 || gMapHeader.mapLayoutId == 378);
+}
+
+void sub_81A9E90(void)
+{
+ if (InBattlePyramid())
+ {
+ sub_81A9834();
+ gSaveBlock2Ptr->frontier.field_CA8 = 2;
+ VarSet(VAR_TEMP_E, 0);
+ LoadPlayerParty();
+ }
+}
+
+void sub_81A9EC8(void)
+{
+ if (InBattlePyramid())
+ DoSoftReset();
+}
+
+void CopyPyramidTrainerSpeechBefore(u16 trainerId)
+{
+ FrontierSpeechToString(gFacilityTrainers[trainerId].speechBefore);
+}
+
+void CopyPyramidTrainerWinSpeech(u16 trainerId)
+{
+ FrontierSpeechToString(gFacilityTrainers[trainerId].speechWin);
+}
+
+void CopyPyramidTrainerLoseSpeech(u16 trainerId)
+{
+ FrontierSpeechToString(gFacilityTrainers[trainerId].speechLose);
+}
+
+u8 GetTrainerEncounterMusicIdInBattlePyramind(u16 trainerId)
+{
+ s32 i;
+
+ for (i = 0; i < ARRAY_COUNT(gUnknown_08613B44); i++)
+ {
+ if (gUnknown_08613B44[i].class == gFacilityClassToTrainerClass[gFacilityTrainers[trainerId].facilityClass])
+ return gUnknown_08613B44[i].music;
+ }
+ return 0;
+}
+
+static void sub_81A9F80(void)
+{
+ ScriptContext1_SetupScript(BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88);
+}
+
+static u16 sub_81A9F90(u8 count)
+{
+ s32 i;
+ u16 trainerId;
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7;
+ u32 battleNum = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
+ if (battleNum == 7)
+ {
+ do
+ {
+ trainerId = sub_8162548(challengeNum + 1, battleNum);
+ for (i = 0 ; i < count; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ break;
+ }
+ } while (i != count);
+ }
+ else
+ {
+ do
+ {
+ trainerId = sub_8162548(challengeNum, battleNum);
+ for (i = 0 ; i < count; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ break;
+ }
+ } while (i != count);
+ }
+
+ return trainerId;
+}
+
+void sub_81AA078(u16 *mapArg, u8 arg1)
+{
+ s32 j, k;
+ s32 i;
+ u8 var0, var1;
+ u8 *allocated = AllocZeroed(0x10);
+
+ sub_81AA96C(allocated);
+ sub_81AA33C(&var0, &var1);
+ for (i = 0; i < 16; i++)
+ {
+ u16 *map;
+ s32 heightAdd, widthAdd;
+ const struct MapLayout *mapLayout = gMapLayouts[allocated[i] + 0x169];
+ const u16 *layoutMap = mapLayout->map;
+
+ gUnknown_03005DC0.map = mapArg;
+ gUnknown_03005DC0.width = mapLayout->width * 4 + 15;
+ gUnknown_03005DC0.height = mapLayout->height * 4 + 14;
+ map = mapArg;
+ heightAdd = (((i / 4 * mapLayout->height) + 7) * (gUnknown_03005DC0.width));
+ widthAdd = ((i % 4 * mapLayout->width) + 7);
+ map += heightAdd + widthAdd;
+ for (j = 0; j < mapLayout->height; j++)
+ {
+ for (k = 0; k < mapLayout->width; k++)
+ {
+ if ((layoutMap[k] & 0x3FF) != 0x28E)
+ {
+ map[k] = layoutMap[k];
+ }
+ else if (i != var1)
+ {
+ if (i == var0 && arg1 == 0)
+ {
+ gSaveBlock1Ptr->pos.x = (mapLayout->width * (i % 4)) + k;
+ gSaveBlock1Ptr->pos.y = (mapLayout->height * (i / 4)) + j;
+ }
+ map[k] = (layoutMap[k] & 0xFC00) | 0x28D;
+ }
+ else
+ {
+ map[k] = layoutMap[k];
+ }
+ }
+ map += 15 + (mapLayout->width * 4);
+ layoutMap += mapLayout->width;
+ }
+ }
+ mapheader_run_script_with_tag_x1();
+ free(allocated);
+}
+
+void sub_81AA1D8(void)
+{
+ s32 i;
+ u8 id;
+ u8 var0, var1;
+
+ for (i = 0; i < 8; i++)
+ gSaveBlock2Ptr->frontier.field_CB4[i] |= 0xFFFF;
+
+ id = sub_81AA9E4();
+ sub_81AA33C(&var0, &var1);
+ CpuFill32(0, gSaveBlock1Ptr->eventObjectTemplates, sizeof(gSaveBlock1Ptr->eventObjectTemplates));
+ for (i = 0; i < 2; i++)
+ {
+ u8 value;
+
+ if (i == 0)
+ value = gUnknown_08613650[id].unk3;
+ else
+ value = gUnknown_08613650[id].unk2;
+
+ switch (value)
+ {
+ case 0:
+ sub_81AA398(i);
+ break;
+ case 1:
+ if (sub_81AA4D8(i, var0))
+ sub_81AA398(i);
+ break;
+ case 2:
+ if (sub_81AA4D8(i, var1))
+ sub_81AA398(i);
+ break;
+ case 3:
+ if (sub_81AA648(i, var0))
+ sub_81AA398(i);
+ break;
+ case 4:
+ if (sub_81AA648(i, var1))
+ sub_81AA398(i);
+ break;
+ }
+ }
+}
+
+void sub_81AA2F8(void)
+{
+ s32 i;
+ struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
+
+ for (i = 0; i < EVENT_OBJECT_TEMPLATES_COUNT; i++)
+ {
+ if (events[i].graphicsId != EVENT_OBJ_GFX_ITEM_BALL)
+ events[i].script = BattleFrontier_BattlePyramidEmptySquare_EventScript_252C4F;
+ else
+ events[i].script = BattleFrontier_BattlePyramidEmptySquare_EventScript_252C6A;
+ }
+}
+
+static void sub_81AA33C(u8 *var0, u8 *var1)
+{
+ *var0 = gSaveBlock2Ptr->frontier.field_E22[3] % 16;
+ *var1 = gSaveBlock2Ptr->frontier.field_E22[0] % 16;
+
+ if (*var0 == *var1)
+ {
+ *var0 = (gSaveBlock2Ptr->frontier.field_E22[3] + 1 ) % 16;
+ *var1 = (gSaveBlock2Ptr->frontier.field_E22[0] + 15) % 16;
+ }
+}
+
+static void sub_81AA398(u8 arg0)
+{
+ s32 i;
+ s32 count;
+ s32 var_28;
+ s32 r4;
+ u32 bits = 0;
+ u8 id = sub_81AA9E4();
+ u8 *allocated = AllocZeroed(0x10);
+
+ sub_81AA96C(allocated);
+ r4 = gSaveBlock2Ptr->frontier.field_E22[2] % 16;
+ if (arg0 == 0)
+ {
+ count = gUnknown_08613650[id].unk1;
+ var_28 = 0;
+ }
+ else
+ {
+ count = gUnknown_08613650[id].unk0;
+ var_28 = gUnknown_08613650[id].unk1;
+ }
+
+ for (i = 0; i < count; i++)
+ {
+ do
+ {
+ do
+ {
+ if (bits & 1)
+ {
+ if (!(gBitTable[r4] & gSaveBlock2Ptr->frontier.field_E22[3]))
+ bits |= 2;
+ }
+ else
+ {
+ if (gBitTable[r4] & gSaveBlock2Ptr->frontier.field_E22[3])
+ bits |= 2;
+ }
+ if (++r4 >= 16)
+ r4 = 0;
+
+ if (r4 == gSaveBlock2Ptr->frontier.field_E22[2] % 16)
+ {
+ if (bits & 1)
+ bits |= 6;
+ else
+ bits |= 1;
+ }
+ } while (!(bits & 2));
+
+ } while (!(bits & 4) && sub_81AA760(arg0, allocated, r4, var_28 + i));
+ bits &= 1;
+ }
+ free(allocated);
+}
+
+static bool8 sub_81AA4D8(u8 arg0, u8 arg1)
+{
+ s32 i;
+ s32 var_28;
+ s32 r6 = 0;
+ s32 r7 = 0;
+ s32 var_34 = 0;
+ s32 count;
+ u8 id = sub_81AA9E4();
+ u8 *allocated = AllocZeroed(0x10);
+
+ sub_81AA96C(allocated);
+ if (arg0 == 0)
+ {
+ count = gUnknown_08613650[id].unk1;
+ var_28 = 0;
+ }
+ else
+ {
+ count = gUnknown_08613650[id].unk0;
+ var_28 = gUnknown_08613650[id].unk1;
+ }
+
+ for (i = 0; i < count; i++)
+ {
+ if (r7 == 0)
+ {
+ if (sub_81AA760(arg0, allocated, arg1, var_28 + i))
+ r7 = 1;
+ else
+ var_34++;
+ }
+ if (r7 & 1)
+ {
+ if (sub_81AA760(arg0, allocated, gUnknown_08613F46[arg1][r6], var_28 + i))
+ {
+ do
+ {
+ r6++;
+ if (gUnknown_08613F46[arg1][r6] == 0xFF || r6 >= 4)
+ r6 = 0;
+ r7 += 2;
+ } while (r7 >> 1 != 4 && sub_81AA760(arg0, allocated, gUnknown_08613F46[arg1][r6], var_28 + i));
+ var_34++;
+ }
+ else
+ {
+ r6++;
+ if (gUnknown_08613F46[arg1][r6] == 0xFF || r6 >= 4)
+ r6 = 0;
+ var_34++;
+ }
+ }
+
+ if (r7 >> 1 == 4)
+ break;
+
+ r7 &= 1;
+ }
+ // free(allocated); BUG: allocated memory not freed
+
+ return (count / 2 > var_34);
+}
+
+static bool8 sub_81AA648(u8 arg0, u8 arg1)
+{
+ s32 i;
+ s32 var_28;
+ s32 r4 = 0;
+ s32 r7 = 0;
+ s32 r8 = 0;
+ s32 count;
+ u8 id = sub_81AA9E4();
+ u8 *allocated = AllocZeroed(0x10);
+
+ sub_81AA96C(allocated);
+ if (arg0 == 0)
+ {
+ count = gUnknown_08613650[id].unk1;
+ var_28 = 0;
+ }
+ else
+ {
+ count = gUnknown_08613650[id].unk0;
+ var_28 = gUnknown_08613650[id].unk1;
+ }
+
+ for (i = 0; i < count; i++)
+ {
+ if (sub_81AA760(arg0, allocated, gUnknown_08613F46[arg1][r4], var_28 + i))
+ {
+ do
+ {
+ r4++;
+ if (gUnknown_08613F46[arg1][r4] == 0xFF || r4 >= 4)
+ r4 = 0;
+ r8++;
+ } while (r8 != 4 && sub_81AA760(arg0, allocated, gUnknown_08613F46[arg1][r4], var_28 + i));
+ r7++;
+ }
+ else
+ {
+ r4++;
+ if (gUnknown_08613F46[arg1][r4] == 0xFF || r4 >= 4)
+ r4 = 0;
+ r7++;
+ }
+
+ if (r8 == 4)
+ break;
+ }
+ // free(allocated); BUG: allocated memory not freed
+
+ return (count / 2 > r7);
+}
+
+static bool8 sub_81AA760(u8 arg0, u8 *mapNums, u8 whichMap, u8 id)
+{
+ s32 i, j;
+
+ if (gSaveBlock2Ptr->frontier.field_E22[0] & 1)
+ {
+ s32 minus1 = -1;
+ for (i = 7; i > minus1; i--)
+ {
+ for (j = 7; j >= 0; j--)
+ {
+ if (!sub_81AA810(arg0, j, i, mapNums, whichMap, id))
+ return FALSE;
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 8; j++)
+ {
+ if (!sub_81AA810(arg0, j, i, mapNums, whichMap, id))
+ return FALSE;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_81AA810(u8 arg0, u8 x, u8 y, u8 *mapNums, u8 whichMap, u8 id)
+{
+ s32 i, j;
+ const struct MapHeader *mapHeader;
+ struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
+
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(MAP_GROUP(BATTLE_PYRAMID_SQUARE01), mapNums[whichMap] + MAP_NUM(BATTLE_PYRAMID_SQUARE01));
+ for (i = 0; i < mapHeader->events->eventObjectCount; i++)
+ {
+ if (mapHeader->events->eventObjects[i].x != x || mapHeader->events->eventObjects[i].y != y)
+ continue;
+
+ if (arg0 != 0 || mapHeader->events->eventObjects[i].graphicsId == EVENT_OBJ_GFX_ITEM_BALL)
+ {
+ if (arg0 != 1 || mapHeader->events->eventObjects[i].graphicsId != EVENT_OBJ_GFX_ITEM_BALL)
+ continue;
+ }
+
+ for (j = 0; j < id; j++)
+ {
+ if (events[j].x == x + ((whichMap % 4) * 8) && events[j].y == y + ((whichMap / 4) * 8))
+ break;
+ }
+ if (j != id)
+ continue;
+
+ events[id] = mapHeader->events->eventObjects[i];
+ events[id].x += ((whichMap % 4) * 8);
+ events[id].y += ((whichMap / 4) * 8);
+ events[id].localId = id + 1;
+ if (events[id].graphicsId != EVENT_OBJ_GFX_ITEM_BALL)
+ {
+ i = sub_81A9F90(id);
+ events[id].graphicsId = GetBattleFacilityTrainerGfxId(i);
+ gSaveBlock2Ptr->frontier.field_CB4[id] = i;
+ }
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_81AA96C(u8 *mapNums)
+{
+ s32 i;
+ s32 bits = (gSaveBlock2Ptr->frontier.field_E22[0]) | (gSaveBlock2Ptr->frontier.field_E22[1] << 16);
+ u8 id = sub_81AA9E4();
+
+ for (i = 0; i < 16; i++)
+ {
+ mapNums[i] = gUnknown_08613650[id].unk5[bits & 7];
+ bits >>= 3;
+ if (i == 7)
+ {
+ bits = (gSaveBlock2Ptr->frontier.field_E22[2]) | (gSaveBlock2Ptr->frontier.field_E22[3] << 16);
+ bits >>= 8;
+ }
+ }
+}
+
+static u8 sub_81AA9E4(void)
+{
+ s32 i;
+ s32 var = gSaveBlock2Ptr->frontier.field_E22[3] % 100;
+ s32 battleNum = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
+
+ for (i = gUnknown_08613794[battleNum]; i < ARRAY_COUNT(gUnknown_08613750); i++)
+ {
+ if (var < gUnknown_08613750[i][0])
+ return gUnknown_08613750[i][1];
+ }
+ return 0;
+}
+
+u8 sub_81AAA40(void)
+{
+ u8 i;
+ struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
+
+ for (i = 0; i < 16; i++)
+ {
+ if (events[i].localId == 0)
+ break;
+ }
+
+ return i;
+}
+
+static void InitBagItems(u8 lvlMode)
+{
+ s32 i;
+
+ for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++)
+ {
+ gSaveBlock2Ptr->frontier.pyramidBag.itemId[lvlMode][i] = 0;
+ gSaveBlock2Ptr->frontier.pyramidBag.quantity[lvlMode][i] = 0;
+ }
+
+ AddPyramidBagItem(ITEM_HYPER_POTION, 1);
+ AddPyramidBagItem(ITEM_ETHER, 1);
+}
+
+u16 GetBattlePyramidPickupItemId(void)
+{
+ s32 rand;
+ u32 i;
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ s32 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7);
+
+ if (round >= TOTAL_ROUNDS)
+ round = TOTAL_ROUNDS - 1;
+
+ rand = Random() % 100;
+
+ for (i = 0; i < ARRAY_COUNT(sPickupPercentages); i++)
+ {
+ if (sPickupPercentages[i] > rand)
+ break;
+ }
+
+ if (i >= PICKUP_ITEMS_PER_ROUND)
+ i = PICKUP_ITEMS_PER_ROUND - 1;
+
+ if (lvlMode != FRONTIER_LVL_50)
+ return sPickupItemsLvlOpen[round][i];
+ else
+ return sPickupItemsLvl50[round][i];
+}
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index e8ff7cce7..2225a3e55 100644
--- a/src/battle_pyramid_bag.c
+++ b/src/battle_pyramid_bag.c
@@ -1,35 +1,35 @@
#include "global.h"
-#include "battle_pyramid_bag.h"
-#include "main.h"
+#include "battle.h"
#include "battle_controllers.h"
+#include "battle_pyramid_bag.h"
#include "bg.h"
+#include "decompress.h"
+#include "event_data.h"
#include "field_effect.h"
#include "field_weather.h"
+#include "graphics.h"
#include "gpu_regs.h"
+#include "international_string_util.h"
+#include "item.h"
+#include "item_icon.h"
+#include "item_menu.h"
+#include "item_use.h"
+#include "list_menu.h"
+#include "mail.h"
+#include "main.h"
#include "malloc.h"
#include "menu.h"
-#include "overworld.h"
#include "menu_helpers.h"
#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
+#include "task.h"
+#include "text_window.h"
#include "scanline_effect.h"
#include "script.h"
-#include "task.h"
-#include "decompress.h"
-#include "graphics.h"
+#include "sound.h"
#include "string_util.h"
-#include "list_menu.h"
#include "strings.h"
-#include "item.h"
-#include "sound.h"
-#include "item_menu.h"
-#include "mail.h"
-#include "item_use.h"
-#include "event_data.h"
-#include "text_window.h"
-#include "international_string_util.h"
-#include "item_icon.h"
#include "constants/items.h"
#include "constants/rgb.h"
#include "constants/songs.h"
@@ -37,13 +37,6 @@
EWRAM_DATA struct PyramidBagResources *gPyramidBagResources = NULL;
EWRAM_DATA struct PyramidBagCursorData gPyramidBagCursorData = {0};
-// gfx
-extern const u8 gUnknown_08D9ADD0[];
-extern const u8 gUnknown_08D9AE04[];
-extern const u8 gUnknown_08D9AF44[];
-extern const u16 gUnknown_0860F074[];
-extern const u8 gBattleFrontierGfx_PyramidBag[];
-
// This file's functions.
static void Task_HandlePyramidBagInput(u8 taskId);
static void sub_81C4F44(u8 taskId);
@@ -195,7 +188,7 @@ static const u8 sColorTable[][3] =
static const struct WindowTemplate gUnknown_0861F328[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 14,
.tilemapTop = 2,
.width = 15,
@@ -204,7 +197,7 @@ static const struct WindowTemplate gUnknown_0861F328[] =
.baseBlock = 30
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 0,
.tilemapTop = 13,
.width = 14,
@@ -213,7 +206,7 @@ static const struct WindowTemplate gUnknown_0861F328[] =
.baseBlock = 270
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 27,
@@ -222,7 +215,7 @@ static const struct WindowTemplate gUnknown_0861F328[] =
.baseBlock = 354
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 24,
.tilemapTop = 17,
.width = 5,
@@ -236,7 +229,7 @@ static const struct WindowTemplate gUnknown_0861F328[] =
static const struct WindowTemplate gUnknown_0861F350[] =
{
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 22,
.tilemapTop = 17,
.width = 7,
@@ -245,7 +238,7 @@ static const struct WindowTemplate gUnknown_0861F350[] =
.baseBlock = 472
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 22,
.tilemapTop = 15,
.width = 7,
@@ -254,7 +247,7 @@ static const struct WindowTemplate gUnknown_0861F350[] =
.baseBlock = 472
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 15,
.tilemapTop = 15,
.width = 14,
@@ -263,7 +256,7 @@ static const struct WindowTemplate gUnknown_0861F350[] =
.baseBlock = 472
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 15,
.tilemapTop = 13,
.width = 14,
@@ -272,7 +265,7 @@ static const struct WindowTemplate gUnknown_0861F350[] =
.baseBlock = 472
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 24,
.tilemapTop = 15,
.width = 5,
@@ -949,7 +942,7 @@ static void HandleFewMenuActionsInput(u8 taskId)
{
if (sub_81221EC() != TRUE)
{
- s32 id = Menu_ProcessInputNoWrapAround();
+ s32 id = Menu_ProcessInputNoWrap();
switch (id)
{
case -2:
@@ -1464,7 +1457,7 @@ static void sub_81C6DAC(u8 taskId, const struct YesNoFuncTable *yesNoTable)
void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId))
{
FillWindowPixelBuffer(2, 0x11);
- DisplayMessageAndContinueTask(taskId, 2, 0xA, 0xD, 1, GetPlayerTextSpeed(), str, callback);
+ DisplayMessageAndContinueTask(taskId, 2, 0xA, 0xD, 1, GetPlayerTextSpeedDelay(), str, callback);
schedule_bg_copy_tilemap_to_vram(1);
}
diff --git a/src/battle_records.c b/src/battle_records.c
index feaec74db..f64b5f494 100644
--- a/src/battle_records.c
+++ b/src/battle_records.c
@@ -65,7 +65,7 @@ static const struct BgTemplate sTrainerHillRecordsBgTemplates[] =
static const struct WindowTemplate sTrainerHillRecordsWindowTemplates[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 1,
.width = 26,
@@ -78,7 +78,7 @@ static const struct WindowTemplate sTrainerHillRecordsWindowTemplates[] =
static const struct WindowTemplate sLinkBattleRecordsWindow =
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 1,
.width = 26,
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 33d86924f..6a7ca1725 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -43,33 +43,23 @@
#include "battle_setup.h"
#include "overworld.h"
#include "party_menu.h"
+#include "battle_arena.h"
+#include "battle_pike.h"
+#include "battle_pyramid.h"
-extern u16 gBattle_BG1_X;
-extern u16 gBattle_BG1_Y;
-extern u16 gBattle_BG2_X;
-extern u16 gBattle_BG2_Y;
-extern u16 gBattle_BG3_X;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const u8* const gBattleScriptsForMoveEffects[];
// functions
-extern void sub_81A5718(u8 battlerId); // battle frontier 2
-extern void sub_81A56B4(void); // battle frontier 2
extern void ShowSelectMovePokemonSummaryScreen(struct Pokemon* party, u8 monPartyId, u8 monCount, void (*callback)(void), u16 move); // pokemon summary screen
extern u8 sub_81C1B94(void); // pokemon summary screen
extern void sub_81D388C(struct Pokemon* mon, void* statStoreLocation); // pokenav.s
extern void sub_81D3640(u8 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); // pokenav.s
extern void sub_81D3784(u8 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4); // pokenav.s
extern u8* GetMonNickname(struct Pokemon* mon, u8* dst); // party_menu
-extern u8 sub_81A5258(u8* arg0); // battle frontier 2
-extern void sub_81A5BF8(void); // battle frontier 2
-extern void sub_81A5D44(void); // battle frontier 2
extern void sub_81B8E80(u8 battlerId, u8, u8); // party menu
extern bool8 sub_81B1250(void); // ?
-extern bool8 InBattlePike(void);
-extern bool8 InBattlePyramid(void);
-extern u16 GetBattlePyramidPickupItemId(void);
extern u8 sub_813B21C(void);
extern u16 get_unknown_box_id(void);
@@ -731,7 +721,7 @@ static const u8* const sMoveEffectBS_Ptrs[] =
static const struct WindowTemplate sUnusedWinTemplate = {0, 1, 3, 7, 0xF, 0x1F, 0x3F};
static const u16 sUnknown_0831C2C8[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal");
-static const u8 sUnknown_0831C2E8[] = INCBIN_U8("graphics/battle_interface/unk_battlebox.4bpp.lz");
+static const u32 sUnknown_0831C2E8[] = INCBIN_U32("graphics/battle_interface/unk_battlebox.4bpp.lz");
// unused
static const u8 sRubyLevelUpStatBoxStats[] =
@@ -952,7 +942,7 @@ static void atk00_attackcanceler(void)
return;
if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBattlerTarget, 0, 0, 0))
return;
- if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200)
+ if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & (HITMARKER_x800000 | HITMARKER_NO_ATTACKSTRING))
&& !(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))
{
gBattlescriptCurrInstr = BattleScript_NoPPForMove;
@@ -3288,7 +3278,7 @@ static void atk23_getexp(void)
u16 calculatedExp;
s32 viaSentIn;
- for (viaSentIn = 0, i = 0; i < 6; i++)
+ for (viaSentIn = 0, i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == SPECIES_NONE || GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
continue;
@@ -3546,10 +3536,10 @@ static void atk24(void)
}
else
{
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)
- && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->field_2A0 & gBitTable[i])))
+ && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->arenaLostPlayerMons & gBitTable[i])))
{
HP_count += GetMonData(&gPlayerParty[i], MON_DATA_HP);
}
@@ -3559,10 +3549,10 @@ static void atk24(void)
if (HP_count == 0)
gBattleOutcome |= B_OUTCOME_LOST;
- for (HP_count = 0, i = 0; i < 6; i++)
+ for (HP_count = 0, i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES) && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG)
- && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->field_2A1 & gBitTable[i])))
+ && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->arenaLostOpponentMons & gBitTable[i])))
{
HP_count += GetMonData(&gEnemyParty[i], MON_DATA_HP);
}
@@ -4243,7 +4233,7 @@ static void atk3C_return(void)
static void atk3D_end(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
- sub_81A5718(gBattlerAttacker);
+ BattleArena_AddSkillPoints(gBattlerAttacker);
gMoveResultFlags = 0;
gActiveBattler = 0;
@@ -4955,7 +4945,7 @@ static void atk4D_switchindataupdate(void)
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
{
- for (i = 0; i < BATTLE_STATS_NO; i++)
+ for (i = 0; i < NUM_BATTLE_STATS; i++)
{
gBattleMons[gActiveBattler].statStages[i] = oldData.statStages[i];
}
@@ -5000,7 +4990,7 @@ static void atk4E_switchinanim(void)
gBattlescriptCurrInstr += 3;
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
- sub_81A56B4();
+ BattleArena_InitPoints();
}
static void atk4F_jumpifcantswitch(void)
@@ -6380,7 +6370,7 @@ static void PutLevelAndGenderOnLvlUpBox(void)
{
u16 monLevel;
u8 monGender;
- struct TextSubPrinter subPrinter;
+ struct TextPrinterTemplate printerTemplate;
u8 *txtPtr;
u32 var;
@@ -6388,21 +6378,21 @@ static void PutLevelAndGenderOnLvlUpBox(void)
monGender = GetMonGender(&gPlayerParty[gBattleStruct->expGetterMonId]);
GetMonNickname(&gPlayerParty[gBattleStruct->expGetterMonId], gStringVar4);
- subPrinter.current_text_offset = gStringVar4;
- subPrinter.windowId = 14;
- subPrinter.fontId = 0;
- subPrinter.x = 32;
- subPrinter.y = 0;
- subPrinter.currentX = 32;
- subPrinter.currentY = 0;
- subPrinter.letterSpacing = 0;
- subPrinter.lineSpacing = 0;
- subPrinter.fontColor_l = TEXT_COLOR_TRANSPARENT;
- subPrinter.fgColor = TEXT_COLOR_WHITE;
- subPrinter.bgColor = TEXT_COLOR_TRANSPARENT;
- subPrinter.shadowColor = TEXT_COLOR_DARK_GREY;
-
- AddTextPrinter(&subPrinter, 0xFF, NULL);
+ printerTemplate.currentChar = gStringVar4;
+ printerTemplate.windowId = 14;
+ printerTemplate.fontId = 0;
+ printerTemplate.x = 32;
+ printerTemplate.y = 0;
+ printerTemplate.currentX = 32;
+ printerTemplate.currentY = 0;
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.unk = 0;
+ printerTemplate.fgColor = TEXT_COLOR_WHITE;
+ printerTemplate.bgColor = TEXT_COLOR_TRANSPARENT;
+ printerTemplate.shadowColor = TEXT_COLOR_DARK_GREY;
+
+ AddTextPrinter(&printerTemplate, 0xFF, NULL);
txtPtr = gStringVar4;
gStringVar4[0] = CHAR_SPECIAL_F9;
@@ -6432,9 +6422,9 @@ static void PutLevelAndGenderOnLvlUpBox(void)
*(txtPtr++) = EOS;
}
- subPrinter.y = 10;
- subPrinter.currentY = 10;
- AddTextPrinter(&subPrinter, 0xFF, NULL);
+ printerTemplate.y = 10;
+ printerTemplate.currentY = 10;
+ AddTextPrinter(&printerTemplate, 0xFF, NULL);
CopyWindowToVram(14, 2);
}
@@ -6697,34 +6687,34 @@ static void atk76_various(void)
gBattleCommunication[MULTISTRING_CHOOSER] = sUnknown_0831C4F8[GetNatureFromPersonality(gBattleMons[gActiveBattler].personality)];
}
break;
- case 9:
- i = sub_81A5258(gBattleCommunication);
+ case VARIOUS_ARENA_JUDGMENT_WINDOW:
+ i = BattleArena_ShowJudgmentWindow(&gBattleCommunication[0]);
if (i == 0)
return;
gBattleCommunication[1] = i;
break;
- case 10:
+ case VARIOUS_ARENA_OPPONENT_MON_LOST:
gBattleMons[1].hp = 0;
gHitMarker |= HITMARKER_FAINTED(1);
- gBattleStruct->field_2A1 |= gBitTable[gBattlerPartyIndexes[1]];
+ gBattleStruct->arenaLostOpponentMons |= gBitTable[gBattlerPartyIndexes[1]];
gDisableStructs[1].truantUnknownBit = 1;
break;
- case 11:
+ case VARIOUS_ARENA_PLAYER_MON_LOST:
gBattleMons[0].hp = 0;
gHitMarker |= HITMARKER_FAINTED(0);
gHitMarker |= HITMARKER_x400000;
- gBattleStruct->field_2A0 |= gBitTable[gBattlerPartyIndexes[0]];
+ gBattleStruct->arenaLostPlayerMons |= gBitTable[gBattlerPartyIndexes[0]];
gDisableStructs[0].truantUnknownBit = 1;
break;
- case 12:
+ case VARIOUS_ARENA_BOTH_MONS_LOST:
gBattleMons[0].hp = 0;
gBattleMons[1].hp = 0;
gHitMarker |= HITMARKER_FAINTED(0);
gHitMarker |= HITMARKER_FAINTED(1);
gHitMarker |= HITMARKER_x400000;
- gBattleStruct->field_2A0 |= gBitTable[gBattlerPartyIndexes[0]];
- gBattleStruct->field_2A1 |= gBitTable[gBattlerPartyIndexes[1]];
+ gBattleStruct->arenaLostPlayerMons |= gBitTable[gBattlerPartyIndexes[0]];
+ gBattleStruct->arenaLostOpponentMons |= gBitTable[gBattlerPartyIndexes[1]];
gDisableStructs[0].truantUnknownBit = 1;
gDisableStructs[1].truantUnknownBit = 1;
break;
@@ -6738,11 +6728,11 @@ static void atk76_various(void)
case 15:
sub_81A5D44();
break;
- case 16:
+ case VARIOUS_ARENA_JUDGMENT_STRING:
BattleStringExpandPlaceholdersToDisplayedString(gRefereeStringsTable[gBattlescriptCurrInstr[1]]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0x16);
break;
- case 17:
+ case VARIOUS_ARENA_WAIT_STRING:
if (IsTextPrinterActive(0x16))
return;
break;
@@ -6775,8 +6765,8 @@ static void atk76_various(void)
case VARIOUS_VOLUME_UP:
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
break;
- case 23:
- gBattleStruct->field_2A2 |= gBitTable[gActiveBattler];
+ case VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT:
+ gBattleStruct->alreadyStatusedMoveAttempt |= gBitTable[gActiveBattler];
break;
case 24:
if (sub_805725C(gActiveBattler))
@@ -7409,7 +7399,7 @@ static void atk8A_normalisebuffs(void) // haze
for (i = 0; i < gBattlersCount; i++)
{
- for (j = 0; j < BATTLE_STATS_NO; j++)
+ for (j = 0; j < NUM_BATTLE_STATS; j++)
gBattleMons[i].statStages[j] = 6;
}
@@ -9037,7 +9027,7 @@ static void atkBD_copyfoestats(void) // psych up
{
s32 i;
- for (i = 0; i < BATTLE_STATS_NO; i++)
+ for (i = 0; i < NUM_BATTLE_STATS; i++)
{
gBattleMons[gBattlerAttacker].statStages[i] = gBattleMons[gBattlerTarget].statStages[i];
}
@@ -9863,71 +9853,72 @@ static void atkE4_getsecretpowereffect(void)
static void atkE5_pickup(void)
{
- if (!InBattlePike())
+ s32 i;
+ u16 species, heldItem;
+ u8 ability;
+
+ if (InBattlePike())
{
- s32 i;
- u16 species, heldItem;
- u8 ability;
- if (InBattlePyramid())
+ }
+ else if (InBattlePyramid())
+ {
+ for (i = 0; i < PARTY_SIZE; i++)
{
- for (i = 0; i < 6; i++)
- {
- species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
- heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
- if (GetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY))
- ability = gBaseStats[species].ability2;
- else
- ability = gBaseStats[species].ability1;
+ if (GetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY))
+ ability = gBaseStats[species].ability2;
+ else
+ ability = gBaseStats[species].ability1;
- if (ability == ABILITY_PICKUP
- && species != 0
- && species != SPECIES_EGG
- && heldItem == ITEM_NONE
- && (Random() % 10) == 0)
- {
- heldItem = GetBattlePyramidPickupItemId();
- SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem);
- }
+ if (ability == ABILITY_PICKUP
+ && species != 0
+ && species != SPECIES_EGG
+ && heldItem == ITEM_NONE
+ && (Random() % 10) == 0)
+ {
+ heldItem = GetBattlePyramidPickupItemId();
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem);
}
}
- else
+ }
+ else
+ {
+ for (i = 0; i < PARTY_SIZE; i++)
{
- for (i = 0; i < 6; i++)
- {
- species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
- heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
- if (GetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY))
- ability = gBaseStats[species].ability2;
- else
- ability = gBaseStats[species].ability1;
+ if (GetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY))
+ ability = gBaseStats[species].ability2;
+ else
+ ability = gBaseStats[species].ability1;
- if (ability == ABILITY_PICKUP
- && species != 0
- && species != SPECIES_EGG
- && heldItem == ITEM_NONE
- && (Random() % 10) == 0)
- {
- s32 j;
- s32 rand = Random() % 100;
- u8 lvlDivBy10 = (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) - 1) / 10;
- if (lvlDivBy10 > 9)
- lvlDivBy10 = 9;
+ if (ability == ABILITY_PICKUP
+ && species != 0
+ && species != SPECIES_EGG
+ && heldItem == ITEM_NONE
+ && (Random() % 10) == 0)
+ {
+ s32 j;
+ s32 rand = Random() % 100;
+ u8 lvlDivBy10 = (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) - 1) / 10;
+ if (lvlDivBy10 > 9)
+ lvlDivBy10 = 9;
- for (j = 0; j < 9; j++)
+ for (j = 0; j < 9; j++)
+ {
+ if (sPickupProbabilities[j] > rand)
{
- if (sPickupProbabilities[j] > rand)
- {
- SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sPickupItems[lvlDivBy10 + j]);
- break;
- }
- else if (rand == 99 || rand == 98)
- {
- SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sRarePickupItems[lvlDivBy10 + (99 - rand)]);
- break;
- }
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sPickupItems[lvlDivBy10 + j]);
+ break;
+ }
+ else if (rand == 99 || rand == 98)
+ {
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sRarePickupItems[lvlDivBy10 + (99 - rand)]);
+ break;
}
}
}
diff --git a/src/battle_setup.c b/src/battle_setup.c
index db173a38e..4243d2f3f 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "constants/trainers.h"
#include "battle.h"
+#include "constants/battle_setup.h"
#include "battle_setup.h"
#include "battle_transition.h"
#include "main.h"
@@ -31,7 +32,10 @@
#include "string_util.h"
#include "overworld.h"
#include "field_weather.h"
+#include "battle_tower.h"
#include "gym_leader_rematch.h"
+#include "battle_pike.h"
+#include "battle_pyramid.h"
#include "constants/map_types.h"
#include "constants/battle_frontier.h"
@@ -52,8 +56,6 @@ struct TrainerBattleParameter
u8 ptrType;
};
-extern bool8 InBattlePyramid(void);
-extern bool8 InBattlePike(void);
extern bool32 InTrainerHill(void);
extern bool32 FieldPoisonEffectIsRunning(void);
extern void RestartWildEncounterImmunitySteps(void);
@@ -62,19 +64,13 @@ extern void sub_81BE72C(void);
extern void sub_808BCF4(void);
extern void sub_80EECC8(void);
extern void sub_80AF6F0(void);
-extern u16 sub_81A9AA8(u8 localId);
extern u16 sub_81D6180(u8 localId);
-extern bool8 GetBattlePyramidTrainerFlag(u8 eventObjId);
extern bool8 GetTrainerHillTrainerFlag(u8 eventObjId);
extern bool8 sub_81D5C18(void);
-extern void sub_816306C(u8 a0);
-extern void sub_8163048(u8 a0);
-extern void sub_81A9B04(void);
extern void sub_81D639C(void);
extern void sub_81D6384(void);
extern void sub_81D61E8(void);
extern void sub_80982B8(void);
-extern void sub_81A9EDC(u16 a0);
extern void CopyTrainerHillTrainerText(u8 a0, u16 arg1);
// this file's functions
@@ -665,7 +661,7 @@ u8 BattleSetup_GetTerrainId(void)
return BATTLE_TERRAIN_MOUNTAIN;
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
{
- if (MetatileBehavior_GetBridgeSth(tileBehavior))
+ if (MetatileBehavior_GetBridgeType(tileBehavior))
return BATTLE_TERRAIN_POND;
if (MetatileBehavior_IsBridge(tileBehavior) == TRUE)
return BATTLE_TERRAIN_WATER;
@@ -885,8 +881,8 @@ u8 sub_80B100C(s32 arg0)
return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)];
}
- var = gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.field_CB2 * 2 + 0]
- + gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.field_CB2 * 2 + 1];
+ var = gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum * 2 + 0]
+ + gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum * 2 + 1];
return sUnknown_0854FE98[var % ARRAY_COUNT(sUnknown_0854FE98)];
}
@@ -1090,7 +1086,7 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
switch (sTrainerBattleMode)
{
- case TRAINER_BATTLE_NORMAL_NO_INTRO_TEXT:
+ case TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT:
TrainerBattleLoadArgs(sOrdinaryNoIntroBattleParams, data);
return EventScript_2713C2;
case TRAINER_BATTLE_DOUBLE:
@@ -1132,12 +1128,12 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
{
TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
SetMapVarsToTrainer();
- gTrainerBattleOpponent_A = sub_81A9AA8(gSpecialVar_LastTalked);
+ gTrainerBattleOpponent_A = LocalIdToPyramidTrainerId(gSpecialVar_LastTalked);
}
else
{
TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data);
- gTrainerBattleOpponent_B = sub_81A9AA8(gSpecialVar_LastTalked);
+ gTrainerBattleOpponent_B = LocalIdToPyramidTrainerId(gSpecialVar_LastTalked);
}
return EventScript_271362;
case TRAINER_BATTLE_SET_TRAINER_A:
@@ -1264,7 +1260,7 @@ void BattleSetup_StartTrainerBattle(void)
if (gNoOfApproachingTrainers == 2)
{
- sub_816306C(1);
+ FillFrontierTrainersParties(1);
ZeroMonData(&gEnemyParty[1]);
ZeroMonData(&gEnemyParty[2]);
ZeroMonData(&gEnemyParty[4]);
@@ -1272,7 +1268,7 @@ void BattleSetup_StartTrainerBattle(void)
}
else
{
- sub_8163048(1);
+ FillFrontierTrainerParty(1);
ZeroMonData(&gEnemyParty[1]);
ZeroMonData(&gEnemyParty[2]);
}
@@ -1361,9 +1357,9 @@ void ShowTrainerIntroSpeech(void)
if (InBattlePyramid())
{
if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1)
- sub_81A9EDC(sub_81A9AA8(gSpecialVar_LastTalked));
+ CopyPyramidTrainerSpeechBefore(LocalIdToPyramidTrainerId(gSpecialVar_LastTalked));
else
- sub_81A9EDC(sub_81A9AA8(gEventObjects[gApproachingTrainers[gApproachingTrainerId].eventObjectId].localId));
+ CopyPyramidTrainerSpeechBefore(LocalIdToPyramidTrainerId(gEventObjects[gApproachingTrainers[gApproachingTrainerId].eventObjectId].localId));
sub_80982B8();
}
diff --git a/src/battle_tent.c b/src/battle_tent.c
index e30cac386..c7e70912c 100644
--- a/src/battle_tent.c
+++ b/src/battle_tent.c
@@ -8,8 +8,9 @@
#include "battle_tower.h"
#include "random.h"
#include "item.h"
-#include "battle_factory.h"
-#include "battle_frontier_2.h"
+#include "battle_factory_screen.h"
+#include "frontier_util.h"
+#include "string_util.h"
#include "constants/items.h"
#include "constants/region_map_sections.h"
@@ -17,8 +18,6 @@ extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[];
extern const struct FacilityMon gSlateportBattleTentMons[];
extern const u16 gBattleFrontierHeldItems[];
-extern u16 gUnknown_03006298[];
-
// This file's functions.
static void sub_81B99D4(void);
static void sub_81B9A28(void);
@@ -102,7 +101,7 @@ void sub_81B99B4(void)
static void sub_81B99D4(void)
{
gSaveBlock2Ptr->frontier.field_CA8 = 0;
- gSaveBlock2Ptr->frontier.field_CB2 = 0;
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
gSaveBlock2Ptr->frontier.field_CA9_a = FALSE;
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
}
@@ -120,13 +119,13 @@ static void sub_81B9A44(void)
static void sub_81B9A60(void)
{
gTrainerBattleOpponent_A = (u32)((Random() % 255) * 5) / 64;
- sub_8162614(gTrainerBattleOpponent_A, 0);
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
}
static void sub_81B9A90(void)
{
if (gTrainerBattleOpponent_A < 300)
- ConvertBattleFrontierTrainerSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore);
+ FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore);
}
static void sub_81B9ABC(void)
@@ -164,7 +163,7 @@ void sub_81B9B80(void)
static void sub_81B9BA0(void)
{
gSaveBlock2Ptr->frontier.field_CA8 = 0;
- gSaveBlock2Ptr->frontier.field_CB2 = 0;
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
gSaveBlock2Ptr->frontier.field_CA9_a = FALSE;
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
}
@@ -219,7 +218,7 @@ void sub_81B9D08(void)
static void sub_81B9D28(void)
{
gSaveBlock2Ptr->frontier.field_CA8 = 0;
- gSaveBlock2Ptr->frontier.field_CB2 = 0;
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
gSaveBlock2Ptr->frontier.field_CA9_a = FALSE;
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
}
@@ -278,17 +277,17 @@ bool8 sub_81B9E94(void)
&& ((gMapHeader.mapLayoutId == 385) | (gMapHeader.mapLayoutId == 386)));
}
-// This function was written very...oddly.
-#ifdef NONMATCHING
static void sub_81B9EC0(void)
{
s32 i, j;
- u16 currMonId = 0, currSpecies = 0;
+ u8 firstMonId;
+ u16 monSetId;
+ u16 currSpecies;
u16 species[PARTY_SIZE];
u16 monIds[PARTY_SIZE];
u16 heldItems[PARTY_SIZE];
- s32 zero = 0;
+ firstMonId = 0;
gFacilityTrainers = gSlateportBattleTentTrainers;
for (i = 0; i < PARTY_SIZE; i++)
{
@@ -298,250 +297,56 @@ static void sub_81B9EC0(void)
}
gFacilityTrainerMons = gSlateportBattleTentMons;
currSpecies = 0;
- for (i = 0; i != PARTY_SIZE;)
+ i = 0;
+ while (i != PARTY_SIZE)
{
// Cannot have two pokemon of the same species.
- currMonId = Random() % 70;
- for (j = zero; j < i + zero; j++)
+ monSetId = Random() % 70;
+ for (j = firstMonId; j < firstMonId + i; j++)
{
- if (monIds[j] == currMonId)
+ u16 monId = monIds[j];
+ if (monIds[j] == monSetId)
break;
- if (species[j] == gFacilityTrainerMons[currMonId].species)
+ if (species[j] == gFacilityTrainerMons[monSetId].species)
{
if (currSpecies == 0)
- currSpecies = gFacilityTrainerMons[currMonId].species;
+ currSpecies = gFacilityTrainerMons[monSetId].species;
else
break;
}
}
- if (j != i + zero)
+ if (j != i + firstMonId)
continue;
// Cannot have two same held items.
- for (j = zero; j < i + zero; j++)
+ for (j = firstMonId; j < i + firstMonId; j++)
{
- if (heldItems[j] == 0)
- continue;
- if (heldItems[j] == gBattleFrontierHeldItems[gFacilityTrainerMons[currMonId].itemTableId])
+ if (heldItems[j] != 0 && heldItems[j] == gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId])
{
- if (gFacilityTrainerMons[currMonId].species == currSpecies)
+ if (gFacilityTrainerMons[monSetId].species == currSpecies)
currSpecies = 0;
- else
- break;
+ break;
}
}
- if (j != i + zero)
+ if (j != i + firstMonId)
continue;
- gSaveBlock2Ptr->frontier.field_E70[i].monId = currMonId;
- species[i] = gFacilityTrainerMons[currMonId].species;
- heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[currMonId].itemTableId];
- monIds[i] = currMonId;
+ gSaveBlock2Ptr->frontier.field_E70[i].monId = monSetId;
+ species[i] = gFacilityTrainerMons[monSetId].species;
+ heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId];
+ monIds[i] = monSetId;
i++;
}
}
-#else
-NAKED
-static void sub_81B9EC0(void)
-{
- asm_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, 0x3C\n\
- ldr r1, =gFacilityTrainers\n\
- ldr r0, =gSlateportBattleTentTrainers\n\
- str r0, [r1]\n\
- add r0, sp, 0xC\n\
- mov r9, r0\n\
- mov r1, sp\n\
- adds r1, 0x18\n\
- str r1, [sp, 0x2C]\n\
- ldr r5, =gFacilityTrainerMons\n\
- ldr r4, =gSlateportBattleTentMons\n\
- movs r2, 0\n\
- adds r3, r1, 0\n\
- mov r1, r9\n\
- mov r0, sp\n\
- movs r6, 0x5\n\
- mov r8, r6\n\
-_081B9EEC:\n\
- strh r2, [r0]\n\
- strh r2, [r1]\n\
- strh r2, [r3]\n\
- adds r3, 0x2\n\
- adds r1, 0x2\n\
- adds r0, 0x2\n\
- movs r7, 0x1\n\
- negs r7, r7\n\
- add r8, r7\n\
- mov r6, r8\n\
- cmp r6, 0\n\
- bge _081B9EEC\n\
- str r4, [r5]\n\
- movs r7, 0\n\
- mov r10, r7\n\
- movs r0, 0\n\
- mov r8, r0\n\
- ldr r1, [sp, 0x2C]\n\
- str r1, [sp, 0x30]\n\
- mov r2, sp\n\
- str r2, [sp, 0x34]\n\
- lsls r6, r0, 1\n\
- str r6, [sp, 0x24]\n\
- add r6, r9\n\
- str r6, [sp, 0x28]\n\
-_081B9F1E:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x46\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- movs r2, 0\n\
- mov r7, r8\n\
- adds r6, r2, r7\n\
- cmp r2, r6\n\
- bge _081B9F7C\n\
- ldr r1, [sp, 0x28]\n\
- ldrh r0, [r1]\n\
- cmp r0, r5\n\
- beq _081B9F7C\n\
- ldr r0, =gFacilityTrainerMons\n\
- ldr r1, [r0]\n\
- lsls r0, r5, 4\n\
- adds r4, r0, r1\n\
- ldrh r7, [r4]\n\
- mov r12, r7\n\
- lsls r3, r2, 1\n\
- ldr r1, [sp, 0x24]\n\
- add r1, sp\n\
- str r6, [sp, 0x38]\n\
-_081B9F56:\n\
- ldrh r0, [r1]\n\
- cmp r0, r12\n\
- bne _081B9F66\n\
- mov r0, r10\n\
- cmp r0, 0\n\
- bne _081B9F7C\n\
- ldrh r7, [r4]\n\
- mov r10, r7\n\
-_081B9F66:\n\
- adds r3, 0x2\n\
- adds r1, 0x2\n\
- adds r2, 0x1\n\
- ldr r0, [sp, 0x38]\n\
- cmp r2, r0\n\
- bge _081B9F7C\n\
- mov r7, r9\n\
- adds r0, r7, r3\n\
- ldrh r0, [r0]\n\
- cmp r0, r5\n\
- bne _081B9F56\n\
-_081B9F7C:\n\
- cmp r2, r6\n\
- bne _081BA01C\n\
- movs r2, 0\n\
- cmp r2, r6\n\
- bge _081B9FD4\n\
- ldr r0, =gBattleFrontierHeldItems\n\
- mov r12, r0\n\
- ldr r7, =gFacilityTrainerMons\n\
- ldr r1, [sp, 0x24]\n\
- ldr r0, [sp, 0x2C]\n\
- adds r4, r1, r0\n\
-_081B9F92:\n\
- ldrh r3, [r4]\n\
- cmp r3, 0\n\
- beq _081B9FCC\n\
- ldr r1, [r7]\n\
- lsls r0, r5, 4\n\
- adds r1, r0, r1\n\
- ldrb r0, [r1, 0xA]\n\
- lsls r0, 1\n\
- add r0, r12\n\
- ldrh r0, [r0]\n\
- cmp r3, r0\n\
- bne _081B9FCC\n\
- ldrh r0, [r1]\n\
- cmp r0, r10\n\
- bne _081B9FD4\n\
- movs r1, 0\n\
- mov r10, r1\n\
- b _081B9FD4\n\
- .pool\n\
-_081B9FCC:\n\
- adds r4, 0x2\n\
- adds r2, 0x1\n\
- cmp r2, r6\n\
- blt _081B9F92\n\
-_081B9FD4:\n\
- cmp r2, r6\n\
- bne _081BA01C\n\
- ldr r0, =gSaveBlock2Ptr\n\
- ldr r1, [r0]\n\
- mov r2, r8\n\
- lsls r3, r2, 1\n\
- adds r0, r3, r2\n\
- lsls r0, 2\n\
- adds r1, r0\n\
- movs r6, 0xE7\n\
- lsls r6, 4\n\
- adds r1, r6\n\
- strh r5, [r1]\n\
- ldr r0, =gFacilityTrainerMons\n\
- ldr r0, [r0]\n\
- lsls r1, r5, 4\n\
- adds r1, r0\n\
- ldrh r0, [r1]\n\
- ldr r7, [sp, 0x34]\n\
- strh r0, [r7]\n\
- ldr r2, =gBattleFrontierHeldItems\n\
- ldrb r0, [r1, 0xA]\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- ldrh r0, [r0]\n\
- ldr r1, [sp, 0x30]\n\
- strh r0, [r1]\n\
- add r3, r9\n\
- strh r5, [r3]\n\
- adds r1, 0x2\n\
- str r1, [sp, 0x30]\n\
- adds r2, r7, 0\n\
- adds r2, 0x2\n\
- str r2, [sp, 0x34]\n\
- movs r6, 0x1\n\
- add r8, r6\n\
-_081BA01C:\n\
- mov r7, r8\n\
- cmp r7, 0x6\n\
- beq _081BA024\n\
- b _081B9F1E\n\
-_081BA024:\n\
- add sp, 0x3C\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\
- .pool\n\
- ");
-}
-#endif // NONMATCHING
static void sub_81BA040(void)
{
u16 trainerId;
s32 i, j, k;
- register const u16 *monSetsPool asm("r9"); // Fix me. Compiler insists on moving that variable into stack.
+ register const u16 *monSets asm("r9"); // Fix me. Compiler insists on moving that variable into stack.
u16 species[3];
u16 heldItems[3];
- s32 monPoolCount = 0;
+ s32 setsCount = 0;
gFacilityTrainers = gSlateportBattleTentTrainers;
gFacilityTrainerMons = gSlateportBattleTentMons;
@@ -551,29 +356,29 @@ static void sub_81BA040(void)
do
{
trainerId = Random() % 30;
- for (i = 0; i < gSaveBlock2Ptr->frontier.field_CB2; i++)
+ for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++)
{
if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
break;
}
- } while (i != gSaveBlock2Ptr->frontier.field_CB2);
+ } while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum);
gTrainerBattleOpponent_A = trainerId;
- while (gFacilityTrainers[gTrainerBattleOpponent_A].btMonPool[monPoolCount] != 0xFFFF)
- monPoolCount++;
- if (monPoolCount > 8)
+ while (gFacilityTrainers[gTrainerBattleOpponent_A].monSets[setsCount] != 0xFFFF)
+ setsCount++;
+ if (setsCount > 8)
break;
- monPoolCount = 0;
+ setsCount = 0;
}
- if (gSaveBlock2Ptr->frontier.field_CB2 < 2)
- gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.field_CB2] = gTrainerBattleOpponent_A;
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 2)
+ gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A;
- monSetsPool = gFacilityTrainers[gTrainerBattleOpponent_A].btMonPool;
+ monSets = gFacilityTrainers[gTrainerBattleOpponent_A].monSets;
i = 0;
while (i != 3)
{
- sRandMonSetId = monSetsPool[Random() % monPoolCount];
+ sRandMonSetId = monSets[Random() % setsCount];
for (j = 0; j < 6; j++)
{
if (gFacilityTrainerMons[sRandMonSetId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.field_E70[j].monId].species)
diff --git a/src/battle_tower.c b/src/battle_tower.c
index e70d4af91..f9dfcabd1 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -1,19 +1,199 @@
#include "global.h"
+#include "battle_tower.h"
+#include "apprentice.h"
#include "event_data.h"
#include "battle_setup.h"
#include "overworld.h"
#include "random.h"
-#include "battle_tower.h"
+#include "text.h"
+#include "main.h"
+#include "international_string_util.h"
+#include "battle.h"
+#include "frontier_util.h"
+#include "recorded_battle.h"
+#include "easy_chat.h"
+#include "gym_leader_rematch.h"
+#include "battle_transition.h"
+#include "trainer_see.h"
+#include "new_game.h"
+#include "string_util.h"
+#include "data2.h"
+#include "link.h"
+#include "field_message_box.h"
+#include "tv.h"
+#include "battle_factory.h"
+#include "constants/battle_frontier.h"
+#include "constants/trainers.h"
+#include "constants/event_objects.h"
+#include "constants/moves.h"
+#include "constants/species.h"
+
+extern void sub_81A4C30(void);
+
+extern const u8 *const *const gUnknown_085DD690[];
+extern const u16 gBattleFrontierHeldItems[];
+extern const u8 sRubyFacilityClassToEmerald[82][2];
+extern const u16 gUnknown_085DFA46[];
+extern const struct FacilityMon gSlateportBattleTentMons[];
+extern const struct FacilityMon gVerdanturfBattleTentMons[];
+extern const struct FacilityMon gFallarborBattleTentMons[];
+extern const struct FacilityMon gBattleFrontierMons[];
+extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
+extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[];
+extern const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[];
+extern const struct BattleFrontierTrainer gFallarborBattleTentTrainers[];
-extern void sub_81A3ACC(void);
+struct
+{
+ u32 facilityClass;
+ const u8 *const *strings;
+} extern const gUnknown_085DD500[50];
+
+struct
+{
+ u16 species;
+ u8 fixedIV;
+ u8 level;
+ u8 nature;
+ u8 evs[6];
+ u16 moves[4];
+} extern const sStevenMons[3];
-extern const u32 gUnknown_085DF9AC[][2];
-extern const u32 gUnknown_085DF9CC[][2];
-extern void (* const gUnknown_085DF96C[])(void);
+extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_224157[];
+extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_224166[];
+
+// EWRAM vars.
+EWRAM_DATA const struct BattleFrontierTrainer *gFacilityTrainers = NULL;
+EWRAM_DATA const struct FacilityMon *gFacilityTrainerMons = NULL;
+
+// IWRAM common
+u16 gUnknown_03006298[4];
// This file's functions.
-void sub_8164ED8(void);
-u16 sub_8164FCC(u8, u8);
+static void sub_8161F94(void);
+static void sub_8162054(void);
+static void sub_81620F4(void);
+static void ChooseNextBattleTowerTrainer(void);
+static void sub_81621C0(void);
+static void AwardBattleTowerRibbons(void);
+static void SaveBattleTowerProgress(void);
+static void sub_8163914(void);
+static void nullsub_61(void);
+static void nullsub_116(void);
+static void sub_81642A0(void);
+static void sub_8164828(void);
+static void sub_8164B74(void);
+static void sub_8164DCC(void);
+static void sub_8164DE4(void);
+static void sub_8164E04(void);
+static void ValidateBattleTowerRecordChecksums(void);
+static void SaveCurrentWinStreak(void);
+static void ValidateApprenticesChecksums(void);
+static void sub_8165E18(void);
+static void CopyEReaderTrainerFarewellMessage(void);
+static void ClearBattleTowerRecord(struct EmeraldBattleTowerRecord *record);
+static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount);
+static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount);
+static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId);
+static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId);
+static u8 GetFrontierTrainerFixedIvs(u16 trainerId);
+static void FillPartnerParty(u16 trainerId);
+static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer);
+static u8 SetTentPtrsGetLevel(void);
+
+// Const rom data.
+static void (* const gUnknown_085DF96C[])(void) =
+{
+ sub_8161F94,
+ sub_8162054,
+ sub_81620F4,
+ ChooseNextBattleTowerTrainer,
+ sub_81621C0,
+ AwardBattleTowerRibbons,
+ SaveBattleTowerProgress,
+ sub_8163914,
+ nullsub_61,
+ nullsub_116,
+ sub_81642A0,
+ sub_8164828,
+ sub_8164B74,
+ sub_8164DCC,
+ sub_8164DE4,
+ sub_8164E04,
+};
+
+static const u32 gUnknown_085DF9AC[][2] =
+{
+ {0x00000001, 0x00000002},
+ {0x00004000, 0x00008000},
+ {0x00010000, 0x00020000},
+ {0x00040000, 0x00080000},
+};
+
+static const u32 gUnknown_085DF9CC[][2] =
+{
+ {0xfffffffe, 0xfffffffd},
+ {0xffffbfff, 0xffff7fff},
+ {0xfffeffff, 0xfffdffff},
+ {0xfffbffff, 0xfff7ffff},
+};
+
+static const u8 gUnknown_085DF9EC[] =
+{
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x09, 0x0a, 0x0b, 0x0c
+};
+
+static const u8 gUnknown_085DF9F6[] =
+{
+ [FRONTIER_MODE_SINGLES] = 3,
+ [FRONTIER_MODE_DOUBLES] = 4,
+ [FRONTIER_MODE_MULTIS] = 2,
+ [FRONTIER_MODE_LINK_MULTIS] = 2,
+};
+
+static const u16 gUnknown_085DF9FA[][2] =
+{
+ {0x0000, 0x0063},
+ {0x0050, 0x0077},
+ {0x0064, 0x008b},
+ {0x0078, 0x009f},
+ {0x008c, 0x00b3},
+ {0x00a0, 0x00c7},
+ {0x00b4, 0x00db},
+ {0x00c8, 0x012b},
+};
+
+static const u16 gUnknown_085DFA1A[][2] =
+{
+ {0x0064, 0x0077},
+ {0x0078, 0x008b},
+ {0x008c, 0x009f},
+ {0x00a0, 0x00b3},
+ {0x00b4, 0x00c7},
+ {0x00c8, 0x00db},
+ {0x00dc, 0x00ef},
+ {0x00c8, 0x012b},
+ {0x00b3, 0x008d},
+ {0x00c8, 0x00b7},
+};
+
+static const u8 gUnknown_085DFA42[4] =
+{
+ [FRONTIER_MODE_SINGLES] = 3,
+ [FRONTIER_MODE_DOUBLES] = 4,
+ [FRONTIER_MODE_MULTIS] = 2,
+ [FRONTIER_MODE_LINK_MULTIS] = 2,
+};
+
+static const u16 gUnknown_085DFA46[] =
+{
+ 0x0c3a, 0x0c3a, 0x0c01, 0x0a2a, 0x0607, 0x0c01
+};
+
+static const u16 gUnknown_085DFA52[] =
+{
+ 0x1039, 0x122e, 0x0c04, 0x0a3d, 0x0630, 0x0c04
+};
// code
void sub_8161F74(void)
@@ -21,25 +201,25 @@ void sub_8161F74(void)
gUnknown_085DF96C[gSpecialVar_0x8004]();
}
-void sub_8161F94(void)
+static void sub_8161F94(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
gSaveBlock2Ptr->frontier.field_CA8 = 1;
- gSaveBlock2Ptr->frontier.field_CB2 = 0;
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
gSaveBlock2Ptr->frontier.field_CA9_a = 0;
gSaveBlock2Ptr->frontier.field_CA9_b = 0;
sub_81A3ACC();
if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_085DF9AC[battleMode][lvlMode]))
- gSaveBlock2Ptr->frontier.field_CE0[battleMode][lvlMode] = 0;
+ gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = 0;
- sub_8164ED8();
+ ValidateBattleTowerRecordChecksums();
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
gTrainerBattleOpponent_A = 0;
}
-void sub_8162054(void)
+static void sub_8162054(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
@@ -49,7 +229,7 @@ void sub_8162054(void)
case 0:
break;
case 1:
- gSpecialVar_Result = sub_8164FCC(lvlMode, battleMode);
+ gSpecialVar_Result = GetCurrentBattleTowerWinStreak(lvlMode, battleMode);
break;
case 2:
gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_085DF9AC[battleMode][lvlMode]) != 0);
@@ -60,7 +240,7 @@ void sub_8162054(void)
}
}
-void sub_81620F4(void)
+static void sub_81620F4(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
@@ -70,7 +250,7 @@ void sub_81620F4(void)
case 0:
break;
case 1:
- gSaveBlock2Ptr->frontier.field_CE0[battleMode][lvlMode] = gSpecialVar_0x8006;
+ gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
break;
case 2:
if (gSpecialVar_0x8006)
@@ -83,3 +263,2532 @@ void sub_81620F4(void)
break;
}
}
+
+static void sub_81621C0(void)
+{
+ if (gTrainerBattleOpponent_A == TRAINER_EREADER)
+ ClearEReaderTrainer(&gSaveBlock2Ptr->frontier.ereaderTrainer);
+
+ if (gSaveBlock2Ptr->frontier.field_D04 < 9999)
+ gSaveBlock2Ptr->frontier.field_D04++;
+
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum++;
+ SaveCurrentWinStreak();
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
+}
+
+static bool8 ChooseSpecialBattleTowerTrainer(void)
+{
+ s32 i, j, validMons;
+ s32 trainerIds[9];
+ s32 idsCount = 0;
+ s32 winStreak = 0;
+ u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+
+ if (VarGet(VAR_FRONTIER_FACILITY) != FRONTIER_FACILITY_TOWER)
+ return FALSE;
+
+ winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode);
+ for (i = 0; i < 5; i++)
+ {
+ u32 *record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]);
+ u32 recordHasData = 0;
+ u32 checksum = 0;
+ for (j = 0; j < (sizeof(struct EmeraldBattleTowerRecord) - 4) / 4; j++) // - 4, because of the last field being the checksum itself.
+ {
+ recordHasData |= record[j];
+ checksum += record[j];
+ }
+ validMons = 0;
+ for (j = 0; j < 4; j++)
+ {
+ if (gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species != 0
+ && gSaveBlock2Ptr->frontier.towerRecords[i].party[j].level <= GetFrontierEnemyMonLevel(lvlMode))
+ validMons++;
+ }
+
+ if (validMons >= gUnknown_085DF9F6[battleMode]
+ && gSaveBlock2Ptr->frontier.towerRecords[i].winStreak == winStreak
+ && gSaveBlock2Ptr->frontier.towerRecords[i].lvlMode == lvlMode
+ && recordHasData
+ && gSaveBlock2Ptr->frontier.towerRecords[i].checksum == checksum)
+ {
+ trainerIds[idsCount] = i + TRAINER_RECORD_MIXING_FRIEND;
+ idsCount++;
+ }
+ }
+
+ if (battleMode == FRONTIER_MODE_SINGLES)
+ {
+ ValidateApprenticesChecksums();
+ for (i = 0; i < 4; i++)
+ {
+ if (gSaveBlock2Ptr->apprentices[i].lvlMode != 0
+ && gUnknown_085DF9EC[gSaveBlock2Ptr->apprentices[i].field_1] == winStreak
+ && gSaveBlock2Ptr->apprentices[i].lvlMode - 1 == lvlMode)
+ {
+ trainerIds[idsCount] = i + TRAINER_RECORD_MIXING_APPRENTICE;
+ idsCount++;
+ }
+ }
+ }
+
+ if (idsCount != 0)
+ {
+ gTrainerBattleOpponent_A = trainerIds[Random() % idsCount];
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void ChooseNextBattleTowerTrainer(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ if (lvlMode == FRONTIER_LVL_TENT)
+ {
+ sub_8165E18();
+ }
+ else
+ {
+ u16 id;
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u16 winStreak = GetCurrentFacilityWinStreak();
+ u32 challengeNum = winStreak / 7;
+ SetFacilityPtrsGetLevel();
+
+ if (battleMode == FRONTIER_MODE_MULTIS || battleMode == FRONTIER_MODE_LINK_MULTIS)
+ {
+ id = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
+ gTrainerBattleOpponent_A = gSaveBlock2Ptr->frontier.field_CB4[id * 2];
+ gTrainerBattleOpponent_B = gSaveBlock2Ptr->frontier.field_CB4[id * 2 + 1];
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_B, 1);
+ }
+ else if (ChooseSpecialBattleTowerTrainer())
+ {
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
+ gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A;
+ }
+ else
+ {
+ s32 i;
+ while (1)
+ {
+ id = sub_8162548(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum);
+
+ // Ensure trainer wasn't previously fought in this challenge.
+ for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.field_CB4[i] == id)
+ break;
+ }
+ if (i == gSaveBlock2Ptr->frontier.curChallengeBattleNum)
+ break;
+ }
+
+ gTrainerBattleOpponent_A = id;
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < 7)
+ gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A;
+ }
+ }
+}
+
+u16 sub_8162548(u8 challengeNum, u8 battleNum)
+{
+ u16 trainerId;
+
+ if (challengeNum <= 7)
+ {
+ if (battleNum == 6)
+ {
+ trainerId = (gUnknown_085DFA1A[challengeNum][1] - gUnknown_085DFA1A[challengeNum][0]) + 1;
+ trainerId = gUnknown_085DFA1A[challengeNum][0] + (Random() % trainerId);
+ }
+ else
+ {
+ trainerId = (gUnknown_085DF9FA[challengeNum][1] - gUnknown_085DF9FA[challengeNum][0]) + 1;
+ trainerId = gUnknown_085DF9FA[challengeNum][0] + (Random() % trainerId);
+ }
+ }
+ else
+ {
+ trainerId = (gUnknown_085DF9FA[7][1] - gUnknown_085DF9FA[7][0]) + 1;
+ trainerId = gUnknown_085DF9FA[7][0] + (Random() % trainerId);
+ }
+
+ return trainerId;
+}
+
+static void sub_81625B4(u8 challengeNum, u8 battleNum, u16 *trainerIdPtr, u8 *arg3) // Unused
+{
+ u16 trainerId, count;
+
+ if (challengeNum <= 7)
+ {
+ if (battleNum == 6)
+ {
+ count = (gUnknown_085DFA1A[challengeNum][1] - gUnknown_085DFA1A[challengeNum][0]) + 1;
+ trainerId = gUnknown_085DFA1A[challengeNum][0];
+ }
+ else
+ {
+ count = (gUnknown_085DF9FA[challengeNum][1] - gUnknown_085DF9FA[challengeNum][0]) + 1;
+ trainerId = gUnknown_085DF9FA[challengeNum][0];
+ }
+ }
+ else
+ {
+ count = (gUnknown_085DF9FA[7][1] - gUnknown_085DF9FA[7][0]) + 1;
+ trainerId = gUnknown_085DF9FA[7][0];
+ }
+
+ *trainerIdPtr = trainerId;
+ *arg3 = count;
+}
+
+void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId)
+{
+ u32 i;
+ u8 facilityClass;
+ u8 trainerObjectGfxId;
+
+ SetFacilityPtrsGetLevel();
+ if (trainerId == TRAINER_EREADER)
+ {
+ facilityClass = gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass;
+ }
+ else if (trainerId == TRAINER_FRONTIER_BRAIN)
+ {
+ SetFrontierBrainEventObjGfx_2();
+ return;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ facilityClass = gFacilityTrainers[trainerId].facilityClass;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ facilityClass = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass;
+ }
+ else
+ {
+ facilityClass = gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass;
+ }
+
+ // Search male classes.
+ for (i = 0; i < ARRAY_COUNT(gTowerMaleFacilityClasses); i++)
+ {
+ if (gTowerMaleFacilityClasses[i] == facilityClass)
+ break;
+ }
+ if (i != ARRAY_COUNT(gTowerMaleFacilityClasses))
+ {
+ trainerObjectGfxId = gTowerMaleTrainerGfxIds[i];
+ switch (tempVarId)
+ {
+ case 0:
+ default:
+ VarSet(VAR_OBJ_GFX_ID_0, trainerObjectGfxId);
+ return;
+ case 1:
+ VarSet(VAR_OBJ_GFX_ID_1, trainerObjectGfxId);
+ return;
+ case 15:
+ VarSet(VAR_OBJ_GFX_ID_E, trainerObjectGfxId);
+ return;
+ }
+ }
+
+ // Search female classes.
+ for (i = 0; i < ARRAY_COUNT(gTowerFemaleFacilityClasses); i++)
+ {
+ if (gTowerFemaleFacilityClasses[i] == facilityClass)
+ break;
+ }
+ if (i != ARRAY_COUNT(gTowerFemaleFacilityClasses))
+ {
+ trainerObjectGfxId = gTowerFemaleTrainerGfxIds[i];
+ switch (tempVarId)
+ {
+ case 0:
+ default:
+ VarSet(VAR_OBJ_GFX_ID_0, trainerObjectGfxId);
+ return;
+ case 1:
+ VarSet(VAR_OBJ_GFX_ID_1, trainerObjectGfxId);
+ return;
+ case 15:
+ VarSet(VAR_OBJ_GFX_ID_E, trainerObjectGfxId);
+ return;
+ }
+ }
+
+ switch (tempVarId)
+ {
+ case 0:
+ default:
+ VarSet(VAR_OBJ_GFX_ID_0, EVENT_OBJ_GFX_BOY_1);
+ return;
+ case 1:
+ VarSet(VAR_OBJ_GFX_ID_1, EVENT_OBJ_GFX_BOY_1);
+ return;
+ case 15:
+ VarSet(VAR_OBJ_GFX_ID_E, EVENT_OBJ_GFX_BOY_1);
+ return;
+ }
+}
+
+void SetEReaderTrainerGfxId(void)
+{
+ SetBattleFacilityTrainerGfxId(TRAINER_EREADER, 0);
+}
+
+u8 GetBattleFacilityTrainerGfxId(u16 trainerId)
+{
+ u32 i;
+ u8 facilityClass;
+ u8 trainerObjectGfxId;
+
+ SetFacilityPtrsGetLevel();
+ if (trainerId == TRAINER_EREADER)
+ {
+ facilityClass = gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ facilityClass = gFacilityTrainers[trainerId].facilityClass;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ facilityClass = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass;
+ }
+ else
+ {
+ facilityClass = gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass;
+ }
+
+ // Search male classes.
+ for (i = 0; i < ARRAY_COUNT(gTowerMaleFacilityClasses); i++)
+ {
+ if (gTowerMaleFacilityClasses[i] == facilityClass)
+ break;
+ }
+ if (i != ARRAY_COUNT(gTowerMaleFacilityClasses))
+ {
+ trainerObjectGfxId = gTowerMaleTrainerGfxIds[i];
+ return trainerObjectGfxId;
+ }
+
+ // Search female classes.
+ for (i = 0; i < ARRAY_COUNT(gTowerFemaleFacilityClasses); i++)
+ {
+ if (gTowerFemaleFacilityClasses[i] == facilityClass)
+ break;
+ }
+ if (i != ARRAY_COUNT(gTowerFemaleFacilityClasses))
+ {
+ trainerObjectGfxId = gTowerFemaleTrainerGfxIds[i];
+ return trainerObjectGfxId;
+ }
+ else
+ {
+ return EVENT_OBJ_GFX_BOY_1;
+ }
+}
+
+void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm)
+{
+ u16 slotValues[6];
+ u16 slotIds[6];
+ s32 i, j, k;
+ s32 slotsCount = 0;
+ struct EmeraldBattleTowerRecord *newRecord = newRecordEm; // Needed to match.
+
+ // Find a record slot of the same player and replace it.
+ for (i = 0; i < 5; i++)
+ {
+ k = 0;
+ for (j = 0; j < 4; j++)
+ {
+ if (gSaveBlock2Ptr->frontier.towerRecords[i].trainerId[j] != newRecord->trainerId[j])
+ break;
+ }
+ if (j == 4)
+ {
+ for (k = 0; k < PLAYER_NAME_LENGTH; k++)
+ {
+ // BUG: Wrong variable used, 'j' instead of 'k'.
+ if (gSaveBlock2Ptr->frontier.towerRecords[i].name[j] != newRecord->name[j])
+ break;
+ if (newRecord->name[j] == EOS)
+ {
+ k = PLAYER_NAME_LENGTH;
+ break;
+ }
+ }
+ }
+
+ if (k == PLAYER_NAME_LENGTH)
+ break;
+ }
+ if (i < 5)
+ {
+ gSaveBlock2Ptr->frontier.towerRecords[i] = *newRecord;
+ return;
+ }
+
+ // Find an empty record slot.
+ for (i = 0; i < 5; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak == 0)
+ break;
+ }
+ if (i < 5)
+ {
+ gSaveBlock2Ptr->frontier.towerRecords[i] = *newRecord;
+ return;
+ }
+
+ // Find possible slots to replace the record.
+ slotValues[0] = gSaveBlock2Ptr->frontier.towerRecords[0].winStreak;
+ slotIds[0] = 0;
+ slotsCount++;
+
+ for (i = 1; i < 5; i++)
+ {
+ for (j = 0; j < slotsCount; j++)
+ {
+ if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak < slotValues[j])
+ {
+ j = 0;
+ slotsCount = 1;
+ slotValues[0] = gSaveBlock2Ptr->frontier.towerRecords[i].winStreak;
+ slotIds[0] = i;
+ break;
+ }
+ else if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak > slotValues[j])
+ {
+ break;
+ }
+ }
+
+ if (j == slotsCount)
+ {
+ slotValues[slotsCount] = gSaveBlock2Ptr->frontier.towerRecords[i].winStreak;
+ slotIds[slotsCount] = i;
+ slotsCount++;
+ }
+ }
+
+ i = Random() % slotsCount;
+ gSaveBlock2Ptr->frontier.towerRecords[slotIds[i]] = *newRecord;
+}
+
+u8 GetFrontierTrainerFrontSpriteId(u16 trainerId)
+{
+ SetFacilityPtrsGetLevel();
+
+ if (trainerId == TRAINER_EREADER)
+ {
+ return gFacilityClassToPicIndex[gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass];
+ }
+ else if (trainerId == TRAINER_FRONTIER_BRAIN)
+ {
+ return GetFrontierBrainTrainerPicIndex();
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ return gFacilityClassToPicIndex[gFacilityTrainers[trainerId].facilityClass];
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ return gFacilityClassToPicIndex[GetRecordedBattleRecordMixFriendClass()];
+ else
+ return gFacilityClassToPicIndex[gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass];
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ return gFacilityClassToPicIndex[gApprentices[GetRecordedBattleApprenticeId()].facilityClass];
+ else
+ return gFacilityClassToPicIndex[gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass];
+ }
+}
+
+u8 GetFrontierOpponentClass(u16 trainerId)
+{
+ u8 trainerClass = 0;
+ SetFacilityPtrsGetLevel();
+
+ if (trainerId == TRAINER_EREADER)
+ {
+ trainerClass = gFacilityClassToTrainerClass[gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass];
+ }
+ else if (trainerId == TRAINER_FRONTIER_BRAIN)
+ {
+ trainerClass = GetFrontierBrainTrainerClass();
+ }
+ else if (trainerId == TRAINER_STEVEN_PARTNER)
+ {
+ trainerClass = gTrainers[TRAINER_STEVEN].trainerClass;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ trainerClass = gFacilityClassToTrainerClass[gFacilityTrainers[trainerId].facilityClass];
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ {
+ trainerClass = gFacilityClassToTrainerClass[GetRecordedBattleRecordMixFriendClass()];
+ }
+ else
+ {
+ trainerClass = gFacilityClassToTrainerClass[gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass];
+ asm("");
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ {
+ trainerClass = gFacilityClassToTrainerClass[gApprentices[GetRecordedBattleApprenticeId()].facilityClass];
+ }
+ else
+ {
+ trainerClass = gFacilityClassToTrainerClass[gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass];
+ asm("");
+ }
+ }
+
+ return trainerClass;
+}
+
+static u8 GetFrontierTrainerFacilityClass(u16 trainerId)
+{
+ u8 facilityClass;
+ SetFacilityPtrsGetLevel();
+
+ if (trainerId == TRAINER_EREADER)
+ {
+ facilityClass = gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ facilityClass = gFacilityTrainers[trainerId].facilityClass;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ facilityClass = GetRecordedBattleRecordMixFriendClass();
+ else
+ facilityClass = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass;
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ facilityClass = gApprentices[GetRecordedBattleApprenticeId()].facilityClass;
+ else
+ facilityClass = gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass;
+ }
+
+ return facilityClass;
+}
+
+void GetFrontierTrainerName(u8 *dst, u16 trainerId)
+{
+ s32 i = 0;
+ SetFacilityPtrsGetLevel();
+
+ if (trainerId == TRAINER_EREADER)
+ {
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ dst[i] = gSaveBlock2Ptr->frontier.ereaderTrainer.name[i];
+ }
+ else if (trainerId == TRAINER_FRONTIER_BRAIN)
+ {
+ CopyFrontierBrainTrainerName(dst);
+ return;
+ }
+ else if (trainerId == TRAINER_STEVEN_PARTNER)
+ {
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ dst[i] = gTrainers[TRAINER_STEVEN].trainerName[i];
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ dst[i] = gFacilityTrainers[trainerId].trainerName[i];
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ {
+ sub_8186468(dst);
+ return;
+ }
+ else
+ {
+ struct EmeraldBattleTowerRecord *record = &gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND];
+ TVShowConvertInternationalString(dst, record->name, record->language);
+ return;
+ }
+ }
+ else
+ {
+ u8 id, language;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ {
+ id = GetRecordedBattleApprenticeId();
+ language = GetRecordedBattleApprenticeLanguage();
+ }
+ else
+ {
+ struct Apprentice *apprentice = &gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE];
+ id = apprentice->id;
+ language = apprentice->language;
+ }
+ TVShowConvertInternationalString(dst, GetApprenticeNameInLanguage(id, language), language);
+ return;
+ }
+
+ dst[i] = EOS;
+}
+
+static bool8 IsFrontierTrainerFemale(u16 trainerId)
+{
+ u32 i;
+ u8 facilityClass;
+
+ SetFacilityPtrsGetLevel();
+ if (trainerId == TRAINER_EREADER)
+ {
+ facilityClass = gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass;
+ }
+ else if (trainerId == TRAINER_FRONTIER_BRAIN)
+ {
+ return IsFrontierBrainFemale();
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ facilityClass = gFacilityTrainers[trainerId].facilityClass;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ facilityClass = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass;
+ }
+ else
+ {
+ facilityClass = gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass;
+ }
+
+ // Search female classes.
+ for (i = 0; i < ARRAY_COUNT(gTowerFemaleFacilityClasses); i++)
+ {
+ if (gTowerFemaleFacilityClasses[i] == facilityClass)
+ break;
+ }
+ if (i != ARRAY_COUNT(gTowerFemaleFacilityClasses))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void FillFrontierTrainerParty(u8 monsCount)
+{
+ ZeroEnemyPartyMons();
+ FillTrainerParty(gTrainerBattleOpponent_A, 0, monsCount);
+}
+
+void FillFrontierTrainersParties(u8 monsCount)
+{
+ ZeroEnemyPartyMons();
+ FillTrainerParty(gTrainerBattleOpponent_A, 0, monsCount);
+ FillTrainerParty(gTrainerBattleOpponent_B, 3, monsCount);
+}
+
+static void FillTentTrainerParty(u8 monsCount)
+{
+ ZeroEnemyPartyMons();
+ FillTentTrainerParty_(gTrainerBattleOpponent_A, 0, monsCount);
+}
+
+static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount)
+{
+ s32 i, j;
+ u16 chosenMonIndices[4];
+ u8 friendship = 0xFF;
+ u8 level = SetFacilityPtrsGetLevel();
+ u8 fixedIV = 0;
+ u8 bfMonCount;
+ const u16 *monSets = NULL;
+ u32 otID = 0;
+
+ if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ // Normal battle frontier trainer.
+ fixedIV = GetFrontierTrainerFixedIvs(trainerId);
+ monSets = gFacilityTrainers[gTrainerBattleOpponent_A].monSets;
+ }
+ else if (trainerId == TRAINER_EREADER)
+ {
+ for (i = firstMonId; i < firstMonId + 3; i++)
+ sub_806819C(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]);
+ return;
+ }
+ else if (trainerId == TRAINER_FRONTIER_BRAIN)
+ {
+ CreateFrontierBrainPokemon();
+ return;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ // Record mixed player.
+ for (j = 0, i = firstMonId; i < firstMonId + monCount; j++, i++)
+ {
+ if (gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[j].species != 0
+ && gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[j].level <= level)
+ {
+ sub_8068338(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[j], FALSE);
+ }
+ }
+ return;
+ }
+ else
+ {
+ // Apprentice.
+ for (i = firstMonId; i < firstMonId + 3; i++)
+ CreateApprenticeMon(&gEnemyParty[i], &gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE], i - firstMonId);
+ return;
+ }
+
+ // Regular battle frontier trainer.
+ // Attempt to fill the trainer's party with random Pokemon until 3 have been
+ // successfully chosen. The trainer's party may not have duplicate pokemon species
+ // or duplicate held items.
+ for (bfMonCount = 0; monSets[bfMonCount] != 0xFFFF; bfMonCount++)
+ ;
+ i = 0;
+ otID = Random32();
+ while (i != monCount)
+ {
+ u16 monSetId = monSets[Random() % bfMonCount];
+ if ((level == 50 || level == 20) && monSetId > 849)
+ continue;
+
+ // Ensure this pokemon species isn't a duplicate.
+ for (j = 0; j < i + firstMonId; j++)
+ {
+ if (GetMonData(&gEnemyParty[j], MON_DATA_SPECIES, NULL) == gFacilityTrainerMons[monSetId].species)
+ break;
+ }
+ if (j != i + firstMonId)
+ continue;
+
+ // Ensure this Pokemon's held item isn't a duplicate.
+ for (j = 0; j < i + firstMonId; j++)
+ {
+ if (GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) != 0
+ && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId])
+ break;
+ }
+ if (j != i + firstMonId)
+ continue;
+
+ // Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary
+ // because the species and held items were already checked directly above.
+ for (j = 0; j < i; j++)
+ {
+ if (chosenMonIndices[j] == monSetId)
+ break;
+ }
+ if (j != i)
+ continue;
+
+ chosenMonIndices[i] = monSetId;
+
+ // Place the chosen pokemon into the trainer's party.
+ CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i + firstMonId],
+ gFacilityTrainerMons[monSetId].species,
+ level,
+ gFacilityTrainerMons[monSetId].nature,
+ fixedIV,
+ gFacilityTrainerMons[monSetId].evSpread,
+ otID);
+
+ friendship = 255;
+ // Give the chosen pokemon its specified moves.
+ for (j = 0; j < 4; j++)
+ {
+ SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monSetId].moves[j], j);
+ if (gFacilityTrainerMons[monSetId].moves[j] == MOVE_FRUSTRATION)
+ friendship = 0; // Frustration is more powerful the lower the pokemon's friendship is.
+ }
+
+ SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_FRIENDSHIP, &friendship);
+ SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
+
+ // The pokemon was successfully added to the trainer's party, so it's safe to move on to
+ // the next party slot.
+ i++;
+ }
+}
+
+// Probably an early draft before the 'CreateApprenticeMon' was written.
+static void Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId)
+{
+ s32 i, j;
+ u8 friendship = 0xFF;
+ u8 level = 0;
+ u8 fixedIV = 0;
+ struct Apprentice *apprentice = &gSaveBlock2Ptr->apprentices[0];
+
+ if (apprentice->field_1 < 5)
+ fixedIV = 6;
+ else
+ fixedIV = 9;
+
+ if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_50)
+ level = 100;
+ else
+ level = 50;
+
+ for (i = 0; i != 3; i++)
+ {
+ CreateMonWithEVSpread(&gEnemyParty[firstMonId + i], apprentice->party[i].species, level, fixedIV, 8);
+ friendship = 0xFF;
+ for (j = 0; j < 4; j++)
+ {
+ if (apprentice->party[i].moves[j] == MOVE_FRUSTRATION)
+ friendship = 0;
+ }
+ SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_FRIENDSHIP, &friendship);
+ SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_HELD_ITEM, &apprentice->party[i].item);
+ }
+}
+
+u16 RandomizeFacilityTrainerMonSet(u16 trainerId)
+{
+ u8 level = SetFacilityPtrsGetLevel();
+ const u16 *monSets = gFacilityTrainers[trainerId].monSets;
+ u8 bfMonCount = 0;
+ u32 monSetId = monSets[bfMonCount];
+
+ while (monSetId != 0xFFFF)
+ {
+ bfMonCount++;
+ monSetId = monSets[bfMonCount];
+ if (monSetId == 0xFFFF)
+ break;
+ }
+
+ do
+ {
+ monSetId = monSets[Random() % bfMonCount];
+ } while((level == 50 || level == 20) && monSetId > 849);
+
+ return monSetId;
+}
+
+static void FillFactoryTrainerParty(void)
+{
+ ZeroEnemyPartyMons();
+ if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_TENT)
+ FillFactoryFrontierTrainerParty(gTrainerBattleOpponent_A, 0);
+ else
+ FillFactoryTentTrainerParty(gTrainerBattleOpponent_A, 0);
+}
+
+static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId)
+{
+ u8 i, j;
+ u8 friendship;
+ u8 level;
+ u8 fixedIV;
+ u32 otID;
+
+ if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; // Unused variable.
+ u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][0] / 7;
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 6)
+ fixedIV = GetFactoryMonFixedIV(challengeNum, 0);
+ else
+ fixedIV = GetFactoryMonFixedIV(challengeNum, 1);
+ }
+ else if (trainerId == TRAINER_EREADER)
+ {
+ for (i = firstMonId; i < firstMonId + 3; i++)
+ sub_806819C(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i - firstMonId]);
+ return;
+ }
+ else if (trainerId == TRAINER_FRONTIER_BRAIN)
+ {
+ FillFactoryBrainParty();
+ return;
+ }
+ else
+ {
+ fixedIV = 31;
+ }
+
+ level = SetFacilityPtrsGetLevel();
+ otID = T1_READ_32(gSaveBlock2Ptr->playerTrainerId);
+ for (i = 0; i < 3; i++)
+ {
+ u16 monSetId = gUnknown_03006298[i];
+ CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i],
+ gFacilityTrainerMons[monSetId].species,
+ level,
+ gFacilityTrainerMons[monSetId].nature,
+ fixedIV,
+ gFacilityTrainerMons[monSetId].evSpread,
+ otID);
+
+ friendship = 0;
+ for (j = 0; j < 4; j++)
+ SetMonMoveAvoidReturn(&gEnemyParty[firstMonId + i], gFacilityTrainerMons[monSetId].moves[j], j);
+
+ SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_FRIENDSHIP, &friendship);
+ SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
+ }
+}
+
+static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId)
+{
+ u8 i, j;
+ u8 friendship;
+ u8 level = 30;
+ u8 fixedIV = 0;
+ u32 otID = T1_READ_32(gSaveBlock2Ptr->playerTrainerId);
+
+ for (i = 0; i < 3; i++)
+ {
+ u16 monSetId = gUnknown_03006298[i];
+ CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i],
+ gFacilityTrainerMons[monSetId].species,
+ level,
+ gFacilityTrainerMons[monSetId].nature,
+ fixedIV,
+ gFacilityTrainerMons[monSetId].evSpread,
+ otID);
+
+ friendship = 0;
+ for (j = 0; j < 4; j++)
+ {
+ SetMonMoveAvoidReturn(&gEnemyParty[firstMonId + i], gFacilityTrainerMons[monSetId].moves[j], j);
+ if (gFacilityTrainerMons[monSetId].moves[j] == MOVE_FRUSTRATION)
+ friendship = 0;
+ }
+
+ SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_FRIENDSHIP, &friendship);
+ SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
+ }
+}
+
+void FrontierSpeechToString(const u16 *words)
+{
+ ConvertEasyChatWordsToString(gStringVar4, words, 3, 2);
+ if (GetStringWidth(1, gStringVar4, -1) > 204)
+ {
+ s32 i = 0;
+
+ ConvertEasyChatWordsToString(gStringVar4, words, 2, 3);
+ while (gStringVar4[i++] != CHAR_NEWLINE)
+ ;
+ while (gStringVar4[i] != CHAR_NEWLINE)
+ i++;
+
+ gStringVar4[i] = CHAR_PROMPT_SCROLL;
+ }
+}
+
+static void sub_8163914(void)
+{
+ u16 trainerId;
+ SetFacilityPtrsGetLevel();
+
+ if (gSpecialVar_0x8005)
+ trainerId = gTrainerBattleOpponent_B;
+ else
+ trainerId = gTrainerBattleOpponent_A;
+
+ if (trainerId == TRAINER_EREADER)
+ FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting);
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ FrontierSpeechToString(gFacilityTrainers[trainerId].speechBefore);
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].greeting);
+ else
+ CopyFriendsApprenticeChallengeText(trainerId - TRAINER_RECORD_MIXING_APPRENTICE);
+}
+
+static void HandleSpecialTrainerBattleEnd(void)
+{
+ s32 i;
+
+ RecordedBattle_SaveBattleOutcome();
+ switch (gBattleScripting.specialTrainerBattleType)
+ {
+ case SPECIAL_BATTLE_TOWER:
+ case SPECIAL_BATTLE_DOME:
+ case SPECIAL_BATTLE_PALACE:
+ case SPECIAL_BATTLE_ARENA:
+ case SPECIAL_BATTLE_FACTORY:
+ case SPECIAL_BATTLE_PIKE_SINGLE:
+ case SPECIAL_BATTLE_PIKE_DOUBLE:
+ case SPECIAL_BATTLE_PYRAMID:
+ if (gSaveBlock2Ptr->frontier.battlesCount < 0xFFFFFF)
+ {
+ gSaveBlock2Ptr->frontier.battlesCount++;
+ if (gSaveBlock2Ptr->frontier.battlesCount % 20 == 0)
+ UpdateGymLeaderRematch();
+ }
+ else
+ {
+ gSaveBlock2Ptr->frontier.battlesCount = 0xFFFFFF;
+ }
+ break;
+ case SPECIAL_BATTLE_SECRET_BASE:
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ u16 itemBefore = GetMonData(&gSaveBlock1Ptr->playerParty[i], MON_DATA_HELD_ITEM);
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &itemBefore);
+ }
+ break;
+ case SPECIAL_BATTLE_EREADER:
+ CopyEReaderTrainerFarewellMessage();
+ break;
+ }
+
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+}
+
+static void Task_StartBattleAfterTransition(u8 taskId)
+{
+ if (IsBattleTransitionDone() == TRUE)
+ {
+ gMain.savedCallback = HandleSpecialTrainerBattleEnd;
+ SetMainCallback2(CB2_InitBattle);
+ DestroyTask(taskId);
+ }
+}
+
+void DoSpecialTrainerBattle(void)
+{
+ s32 i;
+
+ gBattleScripting.specialTrainerBattleType = gSpecialVar_0x8004;
+ switch (gSpecialVar_0x8004)
+ {
+ case SPECIAL_BATTLE_TOWER:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_BATTLE_TOWER;
+ switch (VarGet(VAR_FRONTIER_BATTLE_MODE))
+ {
+ case FRONTIER_MODE_SINGLES:
+ FillFrontierTrainerParty(3);
+ break;
+ case FRONTIER_MODE_DOUBLES:
+ FillFrontierTrainerParty(4);
+ gBattleTypeFlags |= BATTLE_TYPE_DOUBLE;
+ break;
+ case FRONTIER_MODE_MULTIS:
+ FillFrontierTrainersParties(2);
+ gPartnerTrainerId = gSaveBlock2Ptr->frontier.field_CB4[17];
+ FillPartnerParty(gPartnerTrainerId);
+ gBattleTypeFlags |= BATTLE_TYPE_DOUBLE | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS;
+ break;
+ case FRONTIER_MODE_LINK_MULTIS:
+ gBattleTypeFlags |= BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_MULTI | BATTLE_TYPE_x800000;
+ FillFrontierTrainersParties(2);
+ break;
+ }
+ CreateTask(Task_StartBattleAfterTransition, 1);
+ PlayMapChosenOrBattleBGM(0);
+ BattleTransition_StartOnField(sub_80B100C(0));
+ break;
+ case SPECIAL_BATTLE_SECRET_BASE:
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ u16 itemBefore = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ SetMonData(&gSaveBlock1Ptr->playerParty[i], MON_DATA_HELD_ITEM, &itemBefore);
+ }
+ CreateTask(Task_StartBattleAfterTransition, 1);
+ PlayMapChosenOrBattleBGM(0);
+ BattleTransition_StartOnField(sub_80B100C(12));
+ break;
+ case SPECIAL_BATTLE_EREADER:
+ ZeroEnemyPartyMons();
+ for (i = 0; i < 3; i++)
+ sub_806819C(&gEnemyParty[i], &gSaveBlock2Ptr->frontier.ereaderTrainer.party[i]);
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_EREADER_TRAINER;
+ gTrainerBattleOpponent_A = 0;
+ CreateTask(Task_StartBattleAfterTransition, 1);
+ PlayMapChosenOrBattleBGM(0);
+ BattleTransition_StartOnField(sub_80B100C(13));
+ break;
+ case SPECIAL_BATTLE_DOME:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOME;
+ if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES)
+ gBattleTypeFlags |= BATTLE_TYPE_DOUBLE;
+ if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN)
+ FillFrontierTrainerParty(2);
+ CreateTask(Task_StartBattleAfterTransition, 1);
+ sub_806E694(0);
+ BattleTransition_StartOnField(sub_80B100C(3));
+ break;
+ case SPECIAL_BATTLE_PALACE:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_PALACE;
+ if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES)
+ gBattleTypeFlags |= BATTLE_TYPE_DOUBLE;
+ if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_TENT)
+ FillFrontierTrainerParty(3);
+ else
+ FillTentTrainerParty(3);
+ CreateTask(Task_StartBattleAfterTransition, 1);
+ PlayMapChosenOrBattleBGM(0);
+ BattleTransition_StartOnField(sub_80B100C(4));
+ break;
+ case SPECIAL_BATTLE_ARENA:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_ARENA;
+ if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_TENT)
+ FillFrontierTrainerParty(3);
+ else
+ FillTentTrainerParty(3);
+ CreateTask(Task_StartBattleAfterTransition, 1);
+ PlayMapChosenOrBattleBGM(0);
+ BattleTransition_StartOnField(sub_80B100C(5));
+ break;
+ case SPECIAL_BATTLE_FACTORY:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_FACTORY;
+ if (VarGet(VAR_FRONTIER_BATTLE_MODE) == FRONTIER_MODE_DOUBLES)
+ gBattleTypeFlags |= BATTLE_TYPE_DOUBLE;
+ FillFactoryTrainerParty();
+ CreateTask(Task_StartBattleAfterTransition, 1);
+ PlayMapChosenOrBattleBGM(0);
+ BattleTransition_StartOnField(sub_80B100C(6));
+ break;
+ case SPECIAL_BATTLE_PIKE_SINGLE:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_BATTLE_TOWER;
+ FillFrontierTrainerParty(3);
+ CreateTask(Task_StartBattleAfterTransition, 1);
+ PlayMapChosenOrBattleBGM(0);
+ BattleTransition_StartOnField(sub_80B100C(7));
+ break;
+ case SPECIAL_BATTLE_PYRAMID:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID;
+ FillFrontierTrainerParty(3);
+ CreateTask(Task_StartBattleAfterTransition, 1);
+ PlayMapChosenOrBattleBGM(0);
+ BattleTransition_StartOnField(sub_80B100C(10));
+ break;
+ case SPECIAL_BATTLE_PIKE_DOUBLE:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS;
+ FillFrontierTrainersParties(1);
+ CreateTask(Task_StartBattleAfterTransition, 1);
+ PlayMapChosenOrBattleBGM(0);
+ BattleTransition_StartOnField(sub_80B100C(7));
+ break;
+ case SPECIAL_BATTLE_STEVEN:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER;
+ FillPartnerParty(TRAINER_STEVEN_PARTNER);
+ gApproachingTrainerId = 0;
+ BattleSetup_ConfigureTrainerBattle(MossdeepCity_SpaceCenter_2F_EventScript_224157 + 1);
+ gApproachingTrainerId = 1;
+ BattleSetup_ConfigureTrainerBattle(MossdeepCity_SpaceCenter_2F_EventScript_224166 + 1);
+ gPartnerTrainerId = TRAINER_STEVEN_PARTNER;
+ CreateTask(Task_StartBattleAfterTransition, 1);
+ PlayMapChosenOrBattleBGM(0);
+ BattleTransition_StartOnField(B_TRANSITION_MAGMA);
+ break;
+ }
+}
+
+static void SaveCurrentWinStreak(void)
+{
+ u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u16 winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode);
+
+ if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] < winStreak)
+ gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = winStreak;
+}
+
+static void sub_8163EE4(void)
+{
+ s32 i;
+ u8 lvlMode, battleMode, class;
+ struct EmeraldBattleTowerRecord *playerRecord = &gSaveBlock2Ptr->frontier.towerPlayer;
+
+ ClearBattleTowerRecord(playerRecord);
+ lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ if (gSaveBlock2Ptr->playerGender != MALE)
+ {
+ class = gTowerFemaleFacilityClasses[(gSaveBlock2Ptr->playerTrainerId[0] +
+ gSaveBlock2Ptr->playerTrainerId[1] +
+ gSaveBlock2Ptr->playerTrainerId[2] +
+ gSaveBlock2Ptr->playerTrainerId[3]) % ARRAY_COUNT(gTowerFemaleFacilityClasses)];
+ }
+ else
+ {
+ class = gTowerMaleFacilityClasses[(gSaveBlock2Ptr->playerTrainerId[0] +
+ gSaveBlock2Ptr->playerTrainerId[1] +
+ gSaveBlock2Ptr->playerTrainerId[2] +
+ gSaveBlock2Ptr->playerTrainerId[3]) % ARRAY_COUNT(gTowerMaleFacilityClasses)];
+ }
+ playerRecord->lvlMode = lvlMode;
+ playerRecord->facilityClass = class;
+ CopyTrainerId(playerRecord->trainerId, gSaveBlock2Ptr->playerTrainerId);
+ StringCopy7(playerRecord->name, gSaveBlock2Ptr->playerName);
+ playerRecord->winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode);
+
+ for (i = 0; i < 6; i++)
+ {
+ playerRecord->greeting[i] = gSaveBlock1Ptr->unk2BBC[i];
+ playerRecord->speechWon[i] = gSaveBlock1Ptr->unk2BC8[i];
+ playerRecord->speechLost[i] = gSaveBlock1Ptr->unk2BD4[i];
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.selectedPartyMons[i] != 0)
+ sub_80686FC(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], &playerRecord->party[i]);
+ }
+
+ playerRecord->language = gGameLanguage;
+ CalcEmeraldBattleTowerChecksum(&gSaveBlock2Ptr->frontier.towerPlayer);
+ SaveCurrentWinStreak();
+}
+
+static void SaveBattleTowerProgress(void)
+{
+ u16 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7);
+
+ if (gSpecialVar_0x8005 == 0 && (challengeNum > 1 || gSaveBlock2Ptr->frontier.curChallengeBattleNum != 0))
+ sub_8163EE4();
+
+ gSaveBlock2Ptr->frontier.field_CA8 =gSpecialVar_0x8005;
+ VarSet(VAR_TEMP_0, 0);
+ gSaveBlock2Ptr->frontier.field_CA9_a = 1;
+ sub_81A4C30();
+}
+
+static void nullsub_61(void)
+{
+
+}
+
+static void nullsub_116(void)
+{
+
+}
+
+static void sub_81640E0(u16 trainerId)
+{
+ s32 i, count;
+ u32 validSpecies[3];
+ u16 species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
+ u16 species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
+
+ count = 0;
+ for (i = 0; i < 3; i++)
+ {
+ u16 apprenticeSpecies = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[i].species;
+ if (apprenticeSpecies != species1 && apprenticeSpecies != species2)
+ {
+ validSpecies[count] = i;
+ count++;
+ }
+ }
+
+ gUnknown_03006298[0] = validSpecies[Random() % count];
+ do
+ {
+ gUnknown_03006298[1] = validSpecies[Random() % count];
+ } while (gUnknown_03006298[0] == gUnknown_03006298[1]);
+}
+
+static void sub_8164188(u16 trainerId)
+{
+ s32 i, count;
+ u32 validSpecies[3];
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u16 species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
+ u16 species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
+
+ count = 0;
+ for (i = 0; i < 4; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[i].species != species1
+ && gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[i].species != species2
+ && gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[i].level <= GetFrontierEnemyMonLevel(lvlMode)
+ && gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[i].species != 0)
+ {
+ validSpecies[count] = i;
+ count++;
+ }
+ }
+
+ gUnknown_03006298[2] = validSpecies[Random() % count];
+ do
+ {
+ gUnknown_03006298[3] = validSpecies[Random() % count];
+ } while (gUnknown_03006298[2] == gUnknown_03006298[3]);
+}
+
+static void sub_81642A0(void)
+{
+ s32 i, j, k;
+ u32 spArray[5];
+ s32 r10;
+ u16 trainerId;
+ u16 monSetId;
+ u32 lvlMode, battleMode;
+ s32 challengeNum;
+ u32 species1, species2;
+ u32 level;
+ struct EventObjectTemplate *eventObjTemplates;
+
+ eventObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
+ lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7;
+ species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
+ species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
+ level = SetFacilityPtrsGetLevel();
+
+ j = 0;
+ do
+ {
+ do
+ {
+ trainerId = sub_8162548(challengeNum, 0);
+ for (i = 0; i < j; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ break;
+ if (gFacilityTrainers[gSaveBlock2Ptr->frontier.field_CB4[i]].facilityClass == gFacilityTrainers[trainerId].facilityClass)
+ break;
+ }
+ } while (i != j);
+ gSaveBlock2Ptr->frontier.field_CB4[j] = trainerId;
+ j++;
+ } while (j < 6);
+
+ r10 = 8;
+ for (i = 0; i < 6; i++)
+ {
+ trainerId = gSaveBlock2Ptr->frontier.field_CB4[i];
+ eventObjTemplates[i + 1].graphicsId = GetBattleFacilityTrainerGfxId(trainerId);
+ for (j = 0; j < 2; j++)
+ {
+ while (1)
+ {
+ monSetId = RandomizeFacilityTrainerMonSet(trainerId);
+ if (j % 2 != 0 && gFacilityTrainerMons[gSaveBlock2Ptr->frontier.field_CB4[r10 - 1]].itemTableId == gFacilityTrainerMons[monSetId].itemTableId)
+ continue;
+
+ for (k = 8; k < r10; k++)
+ {
+ if (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.field_CB4[k]].species == gFacilityTrainerMons[monSetId].species)
+ break;
+ if (species1 == gFacilityTrainerMons[monSetId].species)
+ break;
+ if (species2 == gFacilityTrainerMons[monSetId].species)
+ break;
+ }
+ if (k == r10)
+ break;
+ }
+
+ gSaveBlock2Ptr->frontier.field_CB4[r10] = monSetId;
+ r10++;
+ }
+ }
+
+ r10 = 0;
+ ValidateApprenticesChecksums();
+ for (i = 0; i < 4; i++)
+ {
+ if (gSaveBlock2Ptr->apprentices[i].lvlMode != 0
+ && gUnknown_085DF9EC[gSaveBlock2Ptr->apprentices[i].field_1] / 7 <= challengeNum
+ && gSaveBlock2Ptr->apprentices[i].lvlMode - 1 == lvlMode)
+ {
+ k = 0;
+ for (j = 0; j < 3; j++)
+ {
+ if (species1 != gSaveBlock2Ptr->apprentices[i].party[j].species
+ && species2 != gSaveBlock2Ptr->apprentices[i].party[j].species)
+ {
+ k++;
+ }
+ }
+ if (k > 2)
+ {
+ spArray[r10] = i + TRAINER_RECORD_MIXING_APPRENTICE;
+ r10++;
+ }
+ }
+ }
+ if (r10 != 0)
+ {
+ gSaveBlock2Ptr->frontier.field_CB4[6] = spArray[Random() % r10];
+ eventObjTemplates[7].graphicsId = GetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.field_CB4[6]);
+ FlagClear(FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_1);
+ sub_81640E0(gSaveBlock2Ptr->frontier.field_CB4[6]);
+ }
+
+ r10 = 0;
+ for (i = 0; i < 5; i++)
+ {
+ u32 *record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]);
+ u32 recordHasData = 0;
+ u32 checksum = 0;
+ for (j = 0; j < (sizeof(struct EmeraldBattleTowerRecord) - 4) / 4; j++) // - 4, because of the last field being the checksum itself.
+ {
+ recordHasData |= record[j];
+ checksum += record[j];
+ }
+
+ if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak / 7 <= challengeNum
+ && gSaveBlock2Ptr->frontier.towerRecords[i].lvlMode == lvlMode
+ && recordHasData
+ && gSaveBlock2Ptr->frontier.towerRecords[i].checksum == checksum)
+ {
+ k = 0;
+ for (j = 0; j < 4; j++)
+ {
+ if (species1 != gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species
+ && species2 != gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species
+ && gSaveBlock2Ptr->frontier.towerRecords[i].party[j].level <= GetFrontierEnemyMonLevel(lvlMode)
+ && gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species != 0)
+ {
+ k++;
+ }
+ }
+ if (k > 1)
+ {
+ spArray[r10] = i + TRAINER_RECORD_MIXING_FRIEND;
+ r10++;
+ }
+ }
+ }
+ if (r10 != 0)
+ {
+ gSaveBlock2Ptr->frontier.field_CB4[7] = spArray[Random() % r10];
+ eventObjTemplates[8].graphicsId = GetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.field_CB4[7]);
+ FlagClear(FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_2);
+ sub_8164188(gSaveBlock2Ptr->frontier.field_CB4[7]);
+ }
+}
+
+static void sub_81646BC(u16 trainerId, u16 monSetId)
+{
+ u16 move = 0;
+ u16 species = 0;
+ SetFacilityPtrsGetLevel();
+
+ if (trainerId != TRAINER_EREADER)
+ {
+ if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ move = gFacilityTrainerMons[monSetId].moves[0];
+ species = gFacilityTrainerMons[monSetId].species;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ move = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[gUnknown_03006298[gSpecialVar_0x8005 + 1]].moves[0];
+ species = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[gUnknown_03006298[gSpecialVar_0x8005 + 1]].species;
+ }
+ else
+ {
+ s32 i;
+
+ move = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[gUnknown_03006298[gSpecialVar_0x8005 - 1]].moves[0];
+ species = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[gUnknown_03006298[gSpecialVar_0x8005 - 1]].species;
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ gStringVar3[i] = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].playerName[i];
+ gStringVar3[i] = EOS;
+ ConvertInternationalString(gStringVar3, gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].language);
+ }
+ }
+
+ StringCopy(gStringVar1, gMoveNames[move]);
+ StringCopy(gStringVar2, gSpeciesNames[species]);
+}
+
+static void sub_8164828(void)
+{
+ s32 i, j, arrId;
+ s32 monSetId;
+ s32 level = SetFacilityPtrsGetLevel();
+ u16 winStreak = GetCurrentFacilityWinStreak();
+ s32 challengeNum = winStreak / 7;
+ s32 k = gSpecialVar_LastTalked - 2;
+ s32 trainerId = gSaveBlock2Ptr->frontier.field_CB4[k];
+
+ for (arrId = 0; arrId < ARRAY_COUNT(gUnknown_085DD500); arrId++)
+ {
+ if (gUnknown_085DD500[arrId].facilityClass == GetFrontierTrainerFacilityClass(trainerId))
+ break;
+ }
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ if (trainerId == TRAINER_EREADER)
+ return;
+ if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ GetFrontierTrainerName(gStringVar1, trainerId);
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ GetFrontierTrainerName(gStringVar1, trainerId);
+ }
+ else
+ {
+ s32 i;
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ gStringVar1[i] = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].playerName[i];
+ gStringVar1[i] = EOS;
+ ConvertInternationalString(gStringVar1, gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].language);
+ ConvertIntToDecimalStringN(gStringVar2, gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].number, STR_CONV_MODE_LEFT_ALIGN, 3);
+ GetFrontierTrainerName(gStringVar3, trainerId);
+ }
+ break;
+ case 1:
+ monSetId = gSaveBlock2Ptr->frontier.field_CB4[8 + k * 2];
+ sub_81646BC(trainerId, monSetId);
+ break;
+ case 2:
+ monSetId = gSaveBlock2Ptr->frontier.field_CB4[9 + k * 2];
+ sub_81646BC(trainerId, monSetId);
+ break;
+ case 3:
+ gPartnerTrainerId = trainerId;
+ if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ gSaveBlock2Ptr->frontier.field_CB4[18] = gSaveBlock2Ptr->frontier.field_CB4[8 + k * 2];
+ gSaveBlock2Ptr->frontier.field_CB4[19] = gSaveBlock2Ptr->frontier.field_CB4[9 + k * 2];
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ gSaveBlock2Ptr->frontier.field_CB4[18] = gUnknown_03006298[2];
+ gSaveBlock2Ptr->frontier.field_CB4[19] = gUnknown_03006298[3];
+ }
+ else
+ {
+ gSaveBlock2Ptr->frontier.field_CB4[18] = gUnknown_03006298[0];
+ gSaveBlock2Ptr->frontier.field_CB4[19] = gUnknown_03006298[1];
+ }
+ for (k = 0; k < 14; k++)
+ {
+ while (1)
+ {
+ i = sub_8162548(challengeNum, k / 2);
+ if (gPartnerTrainerId == i)
+ continue;
+
+ for (j = 0; j < k; j++)
+ {
+ if (gSaveBlock2Ptr->frontier.field_CB4[j] == i)
+ break;
+ }
+ if (j == k)
+ break;
+ }
+ gSaveBlock2Ptr->frontier.field_CB4[k] = i;
+ }
+ gSaveBlock2Ptr->frontier.field_CB4[17] = trainerId;
+ break;
+ case 4:
+ break;
+ }
+
+ if (trainerId == TRAINER_EREADER)
+ return;
+
+ if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ ShowFieldMessage(gUnknown_085DD500[arrId].strings[gSpecialVar_0x8005]);
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ ShowFieldMessage(gUnknown_085DD500[arrId].strings[gSpecialVar_0x8005]);
+ }
+ else
+ {
+ u8 id = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id;
+ ShowFieldMessage(gUnknown_085DD690[id][gSpecialVar_0x8005]);
+ }
+}
+
+static void sub_8164B74(void)
+{
+ s32 challengeNum;
+ s32 i, j;
+ s32 trainerId = 0;
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u32 battleNum = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
+ GetMultiplayerId(); // Yet another pointless function call.
+
+ switch (gSpecialVar_Result)
+ {
+ case 0:
+ if (battleMode == FRONTIER_MODE_LINK_MULTIS)
+ {
+ challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7;
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), &challengeNum, sizeof(challengeNum));
+ gSpecialVar_Result = 1;
+ }
+ }
+ else
+ {
+ gSpecialVar_Result = 6;
+ }
+ break;
+ case 1:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ ResetBlockReceivedFlags();
+ if (gBlockRecvBuffer[0][0] > gBlockRecvBuffer[1][0])
+ challengeNum = gBlockRecvBuffer[0][0];
+ else
+ challengeNum = gBlockRecvBuffer[1][0];
+ for (i = 0; i < 14; i++)
+ {
+ do
+ {
+ trainerId = sub_8162548(challengeNum, i / 2);
+ for (j = 0; j < i; j++)
+ {
+ if (gSaveBlock2Ptr->frontier.field_CB4[j] == trainerId)
+ break;
+ }
+ } while (i != j);
+ if (i == j) // This condition is always true, because of the loop above.
+ gSaveBlock2Ptr->frontier.field_CB4[i] = trainerId;
+ }
+ gSpecialVar_Result = 2;
+ }
+ break;
+ case 2:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), &gSaveBlock2Ptr->frontier.field_CB4, sizeof(gSaveBlock2Ptr->frontier.field_CB4));
+ gSpecialVar_Result = 3;
+ }
+ break;
+ case 3:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ ResetBlockReceivedFlags();
+ memcpy(&gSaveBlock2Ptr->frontier.field_CB4, gBlockRecvBuffer, sizeof(gSaveBlock2Ptr->frontier.field_CB4));
+ gTrainerBattleOpponent_A = gSaveBlock2Ptr->frontier.field_CB4[battleNum * 2];
+ gTrainerBattleOpponent_B = gSaveBlock2Ptr->frontier.field_CB4[battleNum * 2 + 1];
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_B, 1);
+ if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType == 0)
+ gSpecialVar_Result = 4;
+ else
+ gSpecialVar_Result = 6;
+ }
+ break;
+ case 4:
+ sub_800AC34();
+ gSpecialVar_Result = 5;
+ break;
+ case 5:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ gSpecialVar_Result = 6;
+ }
+ break;
+ case 6:
+ return;
+ }
+}
+
+static void sub_8164DCC(void)
+{
+ if (gWirelessCommType != 0)
+ sub_800AC34();
+}
+
+static void sub_8164DE4(void)
+{
+ SetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.field_CB4[17], 0xF);
+}
+
+static void sub_8164E04(void)
+{
+ s32 i;
+ u8 text[32];
+
+ if (VarGet(VAR_FRONTIER_BATTLE_MODE) != FRONTIER_MODE_SINGLES)
+ return;
+
+ GetFrontierTrainerName(text, gTrainerBattleOpponent_A);
+ StripExtCtrlCodes(text);
+ StringCopy(gSaveBlock2Ptr->frontier.field_BD8, text);
+ GetBattleTowerTrainerLanguage(&gSaveBlock2Ptr->frontier.field_BEB, gTrainerBattleOpponent_A);
+ gSaveBlock2Ptr->frontier.field_BD6 = GetMonData(&gEnemyParty[gBattlerPartyIndexes[1]], MON_DATA_SPECIES, NULL);
+ gSaveBlock2Ptr->frontier.field_BD4 = GetMonData(&gPlayerParty[gBattlerPartyIndexes[0]], MON_DATA_SPECIES, NULL);
+ for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++)
+ gSaveBlock2Ptr->frontier.field_BE0[i] = gBattleMons[0].nickname[i];
+ gSaveBlock2Ptr->frontier.field_D06 = gBattleOutcome;
+}
+
+static void ValidateBattleTowerRecordChecksums(void)
+{
+ s32 i, j;
+ u32 *record = (u32*)(&gSaveBlock2Ptr->frontier.towerPlayer);
+ u32 checksum = 0;
+
+ for (j = 0; j < (sizeof(struct EmeraldBattleTowerRecord) - 4) / 4; j++) // - 4, because of the last field being the checksum itself.
+ {
+ checksum += record[j];
+ }
+ if (gSaveBlock2Ptr->frontier.towerPlayer.checksum != checksum)
+ ClearBattleTowerRecord(&gSaveBlock2Ptr->frontier.towerPlayer);
+
+ for (i = 0; i < 5; i++)
+ {
+ record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]);
+ checksum = 0;
+ for (j = 0; j < (sizeof(struct EmeraldBattleTowerRecord) - 4) / 4; j++) // - 4, because of the last field being the checksum itself.
+ {
+ checksum += record[j];
+ }
+ if (gSaveBlock2Ptr->frontier.towerRecords[i].checksum != checksum)
+ ClearBattleTowerRecord(&gSaveBlock2Ptr->frontier.towerRecords[i]);
+ }
+}
+
+void CalcEmeraldBattleTowerChecksum(struct EmeraldBattleTowerRecord *record)
+{
+ u32 i;
+
+ record->checksum = 0;
+ for (i = 0; i < (sizeof(struct EmeraldBattleTowerRecord) - 4) / 4; i++) // - 4, because of the last field being the checksum itself.
+ record->checksum += ((u32 *)record)[i];
+}
+
+void CalcRubyBattleTowerChecksum(struct RSBattleTowerRecord *record)
+{
+ u32 i;
+
+ record->checksum = 0;
+ for (i = 0; i < (sizeof(struct RSBattleTowerRecord) - 4) / 4; i++) // - 4, because of the last field being the checksum itself.
+ record->checksum += ((u32 *)record)[i];
+}
+
+static void ClearBattleTowerRecord(struct EmeraldBattleTowerRecord *record)
+{
+ u32 i;
+
+ for (i = 0; i < sizeof(struct EmeraldBattleTowerRecord) / 4; i++)
+ ((u32 *)record)[i] = 0;
+}
+
+u16 GetCurrentBattleTowerWinStreak(u8 lvlMode, u8 battleMode)
+{
+ u16 winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode];
+
+ if (winStreak > 9999)
+ return 9999;
+ else
+ return winStreak;
+}
+
+static u8 GetMonCountForBattleMode(u8 battleMode)
+{
+ u8 sp[ARRAY_COUNT(gUnknown_085DFA42)];
+ memcpy(sp, gUnknown_085DFA42, sizeof(gUnknown_085DFA42));
+
+ if (battleMode < ARRAY_COUNT(gUnknown_085DFA42))
+ return sp[battleMode];
+ else
+ return 3;
+}
+
+struct RibbonCounter
+{
+ u8 partyIndex;
+ u8 count;
+};
+
+static void AwardBattleTowerRibbons(void)
+{
+ s32 i;
+ u32 partyIndex;
+ struct RibbonCounter ribbons[3]; // BUG: 4 Pokemon can receive ribbons in a double battle mode.
+ u8 ribbonType = 0;
+ u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u8 monCount = GetMonCountForBattleMode(battleMode);
+
+ if (lvlMode != FRONTIER_LVL_50)
+ ribbonType = MON_DATA_VICTORY_RIBBON;
+ else
+ ribbonType = MON_DATA_WINNING_RIBBON;
+
+ gSpecialVar_Result = FALSE;
+
+ if (GetCurrentBattleTowerWinStreak(lvlMode, battleMode) > 55)
+ {
+ for (i = 0; i < monCount; i++)
+ {
+ partyIndex = gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1;
+ ribbons[i].partyIndex = partyIndex;
+ ribbons[i].count = 0;
+ if (!GetMonData(&gSaveBlock1Ptr->playerParty[partyIndex], ribbonType))
+ {
+ gSpecialVar_Result = TRUE;
+ SetMonData(&gSaveBlock1Ptr->playerParty[partyIndex], ribbonType, &gSpecialVar_Result);
+ ribbons[i].count = GetRibbonCount(&gSaveBlock1Ptr->playerParty[partyIndex]);
+ }
+ }
+ }
+
+ if (gSpecialVar_Result)
+ {
+ IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS);
+ for (i = 1; i < monCount; i++)
+ {
+ if (ribbons[i].count > ribbons[0].count)
+ {
+ struct RibbonCounter prevBest = ribbons[0];
+ ribbons[0] = ribbons[i];
+ ribbons[i] = prevBest;
+ }
+ }
+ if (ribbons[0].count > 4)
+ {
+ sub_80EE4DC(&gSaveBlock1Ptr->playerParty[ribbons[0].partyIndex], ribbonType);
+ }
+ }
+}
+
+// This is a leftover debugging function that is used to populate the E-Reader
+// trainer with the player's current data.
+static void FillEReaderTrainerWithPlayerData(void)
+{
+ struct BattleTowerEReaderTrainer *ereaderTrainer = &gSaveBlock2Ptr->frontier.ereaderTrainer;
+ s32 i, j;
+
+ if (gSaveBlock2Ptr->playerGender != MALE)
+ {
+ ereaderTrainer->facilityClass = gTowerFemaleFacilityClasses[(gSaveBlock2Ptr->playerTrainerId[0] + gSaveBlock2Ptr->playerTrainerId[1]
+ + gSaveBlock2Ptr->playerTrainerId[2] + gSaveBlock2Ptr->playerTrainerId[3]) % ARRAY_COUNT(gTowerFemaleFacilityClasses)];
+ }
+ else
+ {
+ ereaderTrainer->facilityClass = gTowerMaleFacilityClasses[(gSaveBlock2Ptr->playerTrainerId[0] + gSaveBlock2Ptr->playerTrainerId[1]
+ + gSaveBlock2Ptr->playerTrainerId[2] + gSaveBlock2Ptr->playerTrainerId[3]) % ARRAY_COUNT(gTowerMaleFacilityClasses)];
+ }
+
+ CopyTrainerId(ereaderTrainer->trainerId, gSaveBlock2Ptr->playerTrainerId);
+ StringCopy7(ereaderTrainer->name, gSaveBlock2Ptr->playerName);
+
+ ereaderTrainer->winStreak = 1;
+
+ j = 7;
+ for (i = 0; i < 6; i++)
+ {
+ ereaderTrainer->greeting[i] = gSaveBlock1Ptr->unk2BBC[i];
+ ereaderTrainer->farewellPlayerLost[i] = j;
+ ereaderTrainer->farewellPlayerWon[i] = j + 6;
+ j++;
+ }
+
+ for (i = 0; i < 3; i++)
+ sub_80686FC(&gPlayerParty[i], &ereaderTrainer->party[i]);
+
+ SetEReaderTrainerChecksum(ereaderTrainer);
+}
+
+u8 GetEreaderTrainerFrontSpriteId(void)
+{
+ return gFacilityClassToPicIndex[gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass];
+}
+
+u8 GetEreaderTrainerClassId(void)
+{
+ return gFacilityClassToTrainerClass[gSaveBlock2Ptr->frontier.ereaderTrainer.facilityClass];
+}
+
+void GetEreaderTrainerName(u8 *dst)
+{
+ s32 i;
+
+ for (i = 0; i < 5; i++)
+ dst[i] = gSaveBlock2Ptr->frontier.ereaderTrainer.name[i];
+
+ dst[i] = EOS;
+}
+
+// Checks if the saved E-Reader trainer is valid.
+void ValidateEReaderTrainer(void)
+{
+ u32 i;
+ u32 checksum;
+ struct BattleTowerEReaderTrainer *ereaderTrainer;
+
+ gSpecialVar_Result = FALSE;
+ ereaderTrainer = &gSaveBlock2Ptr->frontier.ereaderTrainer;
+
+ checksum = 0;
+ for (i = 0; i < (sizeof(struct BattleTowerEReaderTrainer) - 4) / 4; i++) // - 4, because of the last field being the checksum itself.
+ checksum |= ((u32 *)ereaderTrainer)[i];
+
+ if (checksum == 0)
+ {
+ gSpecialVar_Result = TRUE;
+ return;
+ }
+
+ checksum = 0;
+ for (i = 0; i < (sizeof(struct BattleTowerEReaderTrainer) - 4) / 4; i++) // - 4, because of the last field being the checksum itself.
+ checksum += ((u32 *)ereaderTrainer)[i];
+
+ if (gSaveBlock2Ptr->frontier.ereaderTrainer.checksum != checksum)
+ {
+ ClearEReaderTrainer(&gSaveBlock2Ptr->frontier.ereaderTrainer);
+ gSpecialVar_Result = TRUE;
+ }
+}
+
+static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer)
+{
+ s32 i;
+
+ ereaderTrainer->checksum = 0;
+ for (i = 0; i < (sizeof(struct BattleTowerEReaderTrainer) - 4) / 4; i++) // - 4, because of the last field being the checksum itself.
+ ereaderTrainer->checksum += ((u32 *)ereaderTrainer)[i];
+}
+
+void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer)
+{
+ u32 i;
+
+ for (i = 0; i < (sizeof(struct BattleTowerEReaderTrainer)) / 4; i++)
+ ((u32 *)ereaderTrainer)[i] = 0;
+}
+
+void CopyEReaderTrainerGreeting(void)
+{
+ FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting);
+}
+
+static void CopyEReaderTrainerFarewellMessage(void)
+{
+ if (gBattleOutcome == B_OUTCOME_DREW)
+ gStringVar4[0] = EOS;
+ else if (gBattleOutcome == B_OUTCOME_WON)
+ FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.farewellPlayerWon);
+ else
+ FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.farewellPlayerLost);
+}
+
+void sub_81653CC(void)
+{
+ if (gSaveBlock2Ptr->frontier.field_CA8 == 1)
+ sub_80F01B8();
+ if (FlagGet(FLAG_0x077) == TRUE)
+ {
+ sub_80F01B8();
+ FlagClear(FLAG_0x077);
+ }
+}
+
+#define STEVEN_OTID 61226
+
+static void FillPartnerParty(u16 trainerId)
+{
+ s32 i, j;
+ u32 ivs, level;
+ u32 friendship;
+ u16 monSetId;
+ u32 otID;
+ u8 trainerName[PLAYER_NAME_LENGTH + 1];
+ SetFacilityPtrsGetLevel();
+
+ if (trainerId == TRAINER_STEVEN_PARTNER)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ do
+ {
+ j = Random32();
+ } while (IsShinyOtIdPersonality(STEVEN_OTID, j) || sStevenMons[i].nature != GetNatureFromPersonality(j));
+ CreateMon(&gPlayerParty[3 + i],
+ sStevenMons[i].species,
+ sStevenMons[i].level,
+ sStevenMons[i].fixedIV,
+ TRUE, i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures.
+ TRUE, STEVEN_OTID);
+ for (j = 0; j < 6; j++)
+ SetMonData(&gPlayerParty[3 + i], MON_DATA_HP_EV + j, &sStevenMons[i].evs[j]);
+ for (j = 0; j < 4; j++)
+ SetMonMoveSlot(&gPlayerParty[3 + i], sStevenMons[i].moves[j], j);
+ SetMonData(&gPlayerParty[3 + i], MON_DATA_OT_NAME, gTrainers[TRAINER_STEVEN].trainerName);
+ j = MALE;
+ SetMonData(&gPlayerParty[3 + i], MON_DATA_OT_GENDER, &j);
+ CalculateMonStats(&gPlayerParty[3 + i]);
+ }
+ }
+ else if (trainerId == TRAINER_EREADER)
+ {
+ // Scrapped, lol.
+ trainerName[0] = gGameLanguage;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ level = SetFacilityPtrsGetLevel();
+ ivs = GetFrontierTrainerFixedIvs(trainerId);
+ otID = Random32();
+ for (i = 0; i < 2; i++)
+ {
+ monSetId = gSaveBlock2Ptr->frontier.field_CB4[i + 18];
+ CreateMonWithEVSpreadNatureOTID(&gPlayerParty[3 + i],
+ gFacilityTrainerMons[monSetId].species,
+ level,
+ gFacilityTrainerMons[monSetId].nature,
+ ivs,
+ gFacilityTrainerMons[monSetId].evSpread,
+ otID);
+ friendship = 0xFF;
+ for (j = 0; j < 4; j++)
+ {
+ SetMonMoveSlot(&gPlayerParty[3 + i], gFacilityTrainerMons[monSetId].moves[j], j);
+ if (gFacilityTrainerMons[monSetId].moves[j] == MOVE_FRUSTRATION)
+ friendship = 0;
+ }
+ SetMonData(&gPlayerParty[3 + i], MON_DATA_FRIENDSHIP, &friendship);
+ SetMonData(&gPlayerParty[3 + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
+ for (j = 0; j < PLAYER_NAME_LENGTH + 1; j++)
+ trainerName[j] = gFacilityTrainers[trainerId].trainerName[j];
+ SetMonData(&gPlayerParty[3 + i], MON_DATA_OT_NAME, &trainerName);
+ j = IsFrontierTrainerFemale(trainerId);
+ SetMonData(&gPlayerParty[3 + i], MON_DATA_OT_GENDER, &j);
+ }
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ trainerId -= TRAINER_RECORD_MIXING_FRIEND;
+ for (i = 0; i < 2; i++)
+ {
+ struct EmeraldBattleTowerRecord *record = &gSaveBlock2Ptr->frontier.towerRecords[trainerId];
+ struct UnknownPokemonStruct monData = record->party[gSaveBlock2Ptr->frontier.field_CB4[18 + i]];
+ StringCopy(trainerName, record->name);
+ if (record->language == LANGUAGE_JAPANESE)
+ {
+ if (monData.nickname[0] != EXT_CTRL_CODE_BEGIN || monData.nickname[1] != EXT_CTRL_CODE_JPN)
+ {
+ monData.nickname[5] = EOS;
+ ConvertInternationalString(monData.nickname, LANGUAGE_JAPANESE);
+ }
+ }
+ else
+ {
+ if (monData.nickname[0] == EXT_CTRL_CODE_BEGIN && monData.nickname[1] == EXT_CTRL_CODE_JPN)
+ trainerName[5] = EOS;
+ }
+ sub_8068338(&gPlayerParty[3 + i], &monData, TRUE);
+ SetMonData(&gPlayerParty[3 + i], MON_DATA_OT_NAME, trainerName);
+ j = IsFrontierTrainerFemale(trainerId + TRAINER_RECORD_MIXING_FRIEND);
+ SetMonData(&gPlayerParty[3 + i], MON_DATA_OT_GENDER, &j);
+ }
+ }
+ else
+ {
+ trainerId -= TRAINER_RECORD_MIXING_APPRENTICE;
+ for (i = 0; i < 2; i++)
+ {
+ CreateApprenticeMon(&gPlayerParty[3 + i], &gSaveBlock2Ptr->apprentices[trainerId], gSaveBlock2Ptr->frontier.field_CB4[18 + i]);
+ j = IsFrontierTrainerFemale(trainerId + TRAINER_RECORD_MIXING_APPRENTICE);
+ SetMonData(&gPlayerParty[3 + i], MON_DATA_OT_GENDER, &j);
+ }
+ }
+}
+
+bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct EmeraldBattleTowerRecord *dst)
+{
+ s32 i, validMons = 0;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (src->party[i].species)
+ validMons++;
+ }
+
+ if (validMons != 3)
+ {
+ memset(dst, 0, sizeof(*dst));
+ return FALSE;
+ }
+ else
+ {
+ dst->lvlMode = src->lvlMode;
+ dst->winStreak = src->winStreak;
+ for (i = 0; i < (signed) ARRAY_COUNT(sRubyFacilityClassToEmerald); i++)
+ {
+ if (sRubyFacilityClassToEmerald[i][0] == src->facilityClass)
+ break;
+ }
+ if (i != ARRAY_COUNT(sRubyFacilityClassToEmerald))
+ dst->facilityClass = sRubyFacilityClassToEmerald[i][1];
+ else
+ dst->facilityClass = FACILITY_CLASS_YOUNGSTER;
+
+ for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
+ dst->name[i] = src->name[i];
+ for (i = 0; i < 4; i++)
+ dst->trainerId[i] = src->trainerId[i];
+ for (i = 0; i < 6; i++)
+ dst->greeting[i] = src->greeting[i];
+ for (i = 0; i < 6; i++)
+ dst->speechWon[i] = gUnknown_085DFA46[i];
+ for (i = 0; i < 6; i++)
+ dst->speechLost[i] = gUnknown_085DFA52[i];
+ for (i = 0; i < 3; i++)
+ dst->party[i] = src->party[i];
+
+ CpuFill32(0, &dst->party[3], sizeof(dst->party[3]));
+ CalcEmeraldBattleTowerChecksum(dst);
+ return TRUE;
+ }
+}
+
+bool32 EmeraldBattleTowerRecordToRuby(struct EmeraldBattleTowerRecord *src, struct RSBattleTowerRecord *dst)
+{
+ s32 i, validMons = 0;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (src->party[i].species)
+ validMons++;
+ }
+
+ if (validMons != 3)
+ {
+ memset(dst, 0, sizeof(*dst));
+ return FALSE;
+ }
+ else
+ {
+ dst->lvlMode = src->lvlMode;
+ dst->winStreak = src->winStreak;
+ for (i = 0; i < (signed) ARRAY_COUNT(sRubyFacilityClassToEmerald); i++)
+ {
+ if (sRubyFacilityClassToEmerald[i][1] == src->facilityClass)
+ break;
+ }
+ if (i != ARRAY_COUNT(sRubyFacilityClassToEmerald))
+ dst->facilityClass = sRubyFacilityClassToEmerald[i][0];
+ else
+ dst->facilityClass = 0x24; // FACILITY_CLASS_YOUNGSTER in Ruby/Sapphire.
+
+ for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
+ dst->name[i] = src->name[i];
+ for (i = 0; i < 4; i++)
+ dst->trainerId[i] = src->trainerId[i];
+ for (i = 0; i < 6; i++)
+ dst->greeting[i] = src->greeting[i];
+ for (i = 0; i < 3; i++)
+ dst->party[i] = src->party[i];
+
+ CalcRubyBattleTowerChecksum(dst);
+ return TRUE;
+ }
+}
+
+void CalcApprenticeChecksum(struct Apprentice *apprentice)
+{
+ s32 i;
+
+ apprentice->checksum = 0;
+ for (i = 0; i < (sizeof(struct Apprentice) - 4) / 4; i++)
+ apprentice->checksum += ((u32 *)apprentice)[i];
+}
+
+static void ClearApprentice(struct Apprentice *apprentice)
+{
+ s32 i;
+
+ for (i = 0; i < (sizeof(struct Apprentice)) / 4; i++)
+ ((u32 *)apprentice)[i] = 0;
+ ResetApprenticeStruct(apprentice);
+}
+
+static void ValidateApprenticesChecksums(void)
+{
+ s32 i, j;
+
+ for (i = 0; i < 4; i++)
+ {
+ u32 *data = (u32*) &gSaveBlock2Ptr->apprentices[i];
+ u32 checksum = 0;
+ for (j = 0; j < (sizeof(struct Apprentice) - 4) / 4; j++)
+ checksum += data[j];
+ if (gSaveBlock2Ptr->apprentices[i].checksum != checksum)
+ ClearApprentice(&gSaveBlock2Ptr->apprentices[i]);
+ }
+}
+
+void GetBattleTowerTrainerLanguage(u8 *dst, u16 trainerId)
+{
+ if (trainerId == TRAINER_EREADER)
+ {
+ *dst = gGameLanguage;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ *dst = gGameLanguage;
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ *dst = GetRecordedBattleRecordMixFriendLanguage();
+ else
+ *dst = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].language;
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ *dst = GetRecordedBattleApprenticeLanguage();
+ else
+ *dst = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].language;
+ }
+}
+
+u8 SetFacilityPtrsGetLevel(void)
+{
+ if (gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_TENT)
+ {
+ return SetTentPtrsGetLevel();
+ }
+ else
+ {
+ gFacilityTrainers = gBattleFrontierTrainers;
+ gFacilityTrainerMons = gBattleFrontierMons;
+ return GetFrontierEnemyMonLevel(gSaveBlock2Ptr->frontier.lvlMode);
+ }
+}
+
+u8 GetFrontierEnemyMonLevel(u8 lvlMode)
+{
+ u8 level;
+
+ switch (lvlMode)
+ {
+ default:
+ case FRONTIER_LVL_50:
+ level = 50;
+ break;
+ case FRONTIER_LVL_OPEN:
+ level = GetHighestLevelInPlayerParty();
+ if (level < 60)
+ level = 60;
+ break;
+ }
+
+ return level;
+}
+
+s32 GetHighestLevelInPlayerParty(void)
+{
+ s32 highestLevel = 0;
+ s32 i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL)
+ && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG)
+ {
+ s32 level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL, NULL);
+ if (level > highestLevel)
+ highestLevel = level;
+ }
+ }
+
+ return highestLevel;
+}
+
+static u8 GetFrontierTrainerFixedIvs(u16 trainerId)
+{
+ u8 fixedIV = 0;
+
+ if (trainerId < 100)
+ fixedIV = 3;
+ else if (trainerId < 120)
+ fixedIV = 6;
+ else if (trainerId < 140)
+ fixedIV = 9;
+ else if (trainerId < 160)
+ fixedIV = 12;
+ else if (trainerId < 180)
+ fixedIV = 15;
+ else if (trainerId < 200)
+ fixedIV = 18;
+ else if (trainerId < 220)
+ fixedIV = 21;
+ else
+ fixedIV = 31;
+
+ return fixedIV;
+}
+
+static u16 sub_8165D40(void)
+{
+ u32 facility = VarGet(VAR_FRONTIER_FACILITY);
+
+ if (facility == FRONTIER_FACILITY_PALACE)
+ return Random() % 30;
+ else if (facility == FRONTIER_FACILITY_ARENA)
+ return Random() % 30;
+ else if (facility == FRONTIER_FACILITY_FACTORY)
+ return Random() % 30;
+ else if (facility == FRONTIER_FACILITY_TOWER)
+ return 0;
+ else
+ return 0;
+}
+
+static u8 SetTentPtrsGetLevel(void)
+{
+ u8 level = 30;
+ u32 tentFacility = VarGet(VAR_FRONTIER_FACILITY);
+
+ if (tentFacility == TENT_SLATEPORT)
+ {
+ gFacilityTrainers = gSlateportBattleTentTrainers;
+ gFacilityTrainerMons = gSlateportBattleTentMons;
+ }
+ else if (tentFacility == TENT_VERDANTURF)
+ {
+ gFacilityTrainers = gVerdanturfBattleTentTrainers;
+ gFacilityTrainerMons = gVerdanturfBattleTentMons;
+ }
+ else if (tentFacility == TENT_FALLARBOR)
+ {
+ gFacilityTrainers = gFallarborBattleTentTrainers;
+ gFacilityTrainerMons = gFallarborBattleTentMons;
+ }
+ else
+ {
+ gFacilityTrainers = gBattleFrontierTrainers;
+ gFacilityTrainerMons = gBattleFrontierMons;
+ }
+
+ level = GetHighestLevelInPlayerParty();
+ if (level < 30)
+ level = 30;
+
+ return level;
+}
+
+static void sub_8165E18(void)
+{
+ s32 i;
+ u16 trainerId;
+
+ do
+ {
+ trainerId = sub_8165D40();
+ for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ break;
+ }
+ } while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum);
+
+ gTrainerBattleOpponent_A = trainerId;
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < 3)
+ gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A;
+}
+
+static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount)
+{
+ s32 i, j;
+ u16 chosenMonIndices[4];
+ u8 friendship;
+ u8 level = SetTentPtrsGetLevel();
+ u8 fixedIV = 0;
+ u8 bfMonCount;
+ const u16 *monSets = NULL;
+ u32 otID = 0;
+ u16 monSetId;
+
+ monSets = gFacilityTrainers[gTrainerBattleOpponent_A].monSets;
+
+ bfMonCount = 0;
+ monSetId = monSets[bfMonCount];
+ while (monSetId != 0xFFFF)
+ {
+ bfMonCount++;
+ monSetId = monSets[bfMonCount];
+ if (monSetId == 0xFFFF)
+ break;
+ }
+
+ i = 0;
+ otID = Random32();
+ while (i != monCount)
+ {
+ u16 monSetId = monSets[Random() % bfMonCount];
+
+ // Ensure this pokemon species isn't a duplicate.
+ for (j = 0; j < i + firstMonId; j++)
+ {
+ if (GetMonData(&gEnemyParty[j], MON_DATA_SPECIES, NULL) == gFacilityTrainerMons[monSetId].species)
+ break;
+ }
+ if (j != i + firstMonId)
+ continue;
+
+ // Ensure this Pokemon's held item isn't a duplicate.
+ for (j = 0; j < i + firstMonId; j++)
+ {
+ if (GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) != 0
+ && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId])
+ break;
+ }
+ if (j != i + firstMonId)
+ continue;
+
+ // Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary
+ // because the species and held items were already checked directly above.
+ for (j = 0; j < i; j++)
+ {
+ if (chosenMonIndices[j] == monSetId)
+ break;
+ }
+ if (j != i)
+ continue;
+
+ chosenMonIndices[i] = monSetId;
+
+ // Place the chosen pokemon into the trainer's party.
+ CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i + firstMonId],
+ gFacilityTrainerMons[monSetId].species,
+ level,
+ gFacilityTrainerMons[monSetId].nature,
+ fixedIV,
+ gFacilityTrainerMons[monSetId].evSpread,
+ otID);
+
+ friendship = 255;
+ // Give the chosen pokemon its specified moves.
+ for (j = 0; j < 4; j++)
+ {
+ SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monSetId].moves[j], j);
+ if (gFacilityTrainerMons[monSetId].moves[j] == MOVE_FRUSTRATION)
+ friendship = 0; // Frustration is more powerful the lower the pokemon's friendship is.
+ }
+
+ SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_FRIENDSHIP, &friendship);
+ SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]);
+
+ // The pokemon was successfully added to the trainer's party, so it's safe to move on to
+ // the next party slot.
+ i++;
+ }
+}
+
+u8 sub_81660B8(u8 facilityClass)
+{
+ u8 trainerObjectGfxId;
+ u8 i;
+
+ // Search male classes.
+ for (i = 0; i < ARRAY_COUNT(gTowerMaleFacilityClasses); i++)
+ {
+ if (gTowerMaleFacilityClasses[i] == facilityClass)
+ break;
+ }
+ if (i != ARRAY_COUNT(gTowerMaleFacilityClasses))
+ {
+ trainerObjectGfxId = gTowerMaleTrainerGfxIds[i];
+ return trainerObjectGfxId;
+ }
+
+ // Search female classes.
+ for (i = 0; i < ARRAY_COUNT(gTowerFemaleFacilityClasses); i++)
+ {
+ if (gTowerFemaleFacilityClasses[i] == facilityClass)
+ break;
+ }
+ if (i != ARRAY_COUNT(gTowerFemaleFacilityClasses))
+ {
+ trainerObjectGfxId = gTowerFemaleTrainerGfxIds[i];
+ return trainerObjectGfxId;
+ }
+ else
+ {
+ return EVENT_OBJ_GFX_BOY_1;
+ }
+}
+
+bool32 ValidateBattleTowerRecord(u8 recordId) // unused
+{
+ s32 i;
+ u32 *record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[recordId]);
+ u32 checksum = 0;
+ u32 hasData = 0;
+ for (i = 0; i < (sizeof(struct EmeraldBattleTowerRecord) - 4) / 4; i++) // - 4, because of the last fjeld bejng the checksum jtself.
+ {
+ checksum += record[i];
+ hasData |= record[i];
+ }
+
+ if (checksum == 0 && hasData == 0)
+ {
+ return FALSE;
+ }
+ else if (gSaveBlock2Ptr->frontier.towerRecords[recordId].checksum != checksum)
+ {
+ ClearBattleTowerRecord(&gSaveBlock2Ptr->frontier.towerRecords[recordId]);
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+void sub_8166188(void)
+{
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ s32 i;
+ u8 enemyLevel = SetFacilityPtrsGetLevel();
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ u32 species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, NULL);
+ if (species)
+ {
+ SetMonData(&gEnemyParty[i], MON_DATA_EXP, &gExperienceTables[gBaseStats[species].growthRate][enemyLevel]);
+ CalculateMonStats(&gEnemyParty[i]);
+ }
+ }
+ }
+}
diff --git a/src/battle_transition.c b/src/battle_transition.c
index fc8c0eeee..94b9e78f9 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -1,25 +1,26 @@
#include "global.h"
+#include "battle.h"
#include "battle_transition.h"
-#include "unk_transition.h"
+#include "bg.h"
+#include "decompress.h"
+#include "field_camera.h"
+#include "field_effect.h"
+#include "gpu_regs.h"
#include "main.h"
+#include "malloc.h"
#include "overworld.h"
-#include "task.h"
#include "palette.h"
-#include "trig.h"
-#include "field_effect.h"
-#include "field_camera.h"
#include "random.h"
-#include "sprite.h"
+#include "scanline_effect.h"
#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+#include "unk_transition.h"
+#include "util.h"
+#include "constants/field_effects.h"
#include "constants/songs.h"
#include "constants/trainers.h"
-#include "field_camera.h"
-#include "scanline_effect.h"
-#include "malloc.h"
-#include "gpu_regs.h"
-#include "decompress.h"
-#include "bg.h"
-#include "util.h"
struct TransitionData
{
@@ -56,9 +57,6 @@ struct StructRectangularSpiral
typedef bool8 (*TransitionStateFunc)(struct Task *task);
typedef bool8 (*TransitionSpriteCallback)(struct Sprite *sprite);
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
-
extern const struct OamData gEventObjectBaseOam_32x32;
extern void sub_80AC3D0(void);
diff --git a/src/battle_util.c b/src/battle_util.c
index 1aaffc053..251a545c9 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -1200,8 +1200,8 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
for (i = 0; i < 2; i++)
CancelMultiTurnMoves(i);
- gBattlescriptCurrInstr = BattleScript_82DB8F3;
- BattleScriptExecute(BattleScript_82DB8F3);
+ gBattlescriptCurrInstr = BattleScript_ArenaDoJudgment;
+ BattleScriptExecute(BattleScript_ArenaDoJudgment);
gBattleStruct->wishPerishSongState++;
return TRUE;
}
@@ -2616,7 +2616,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
gBattleStruct->moneyMultiplier = 2;
break;
case HOLD_EFFECT_RESTORE_STATS:
- for (i = 0; i < BATTLE_STATS_NO; i++)
+ for (i = 0; i < NUM_BATTLE_STATS; i++)
{
if (gBattleMons[battlerId].statStages[i] < 6)
{
@@ -2687,7 +2687,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
}
break;
case HOLD_EFFECT_RESTORE_STATS:
- for (i = 0; i < BATTLE_STATS_NO; i++)
+ for (i = 0; i < NUM_BATTLE_STATS; i++)
{
if (gBattleMons[battlerId].statStages[i] < 6)
{
@@ -3163,7 +3163,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
}
break;
case HOLD_EFFECT_RESTORE_STATS:
- for (i = 0; i < BATTLE_STATS_NO; i++)
+ for (i = 0; i < NUM_BATTLE_STATS; i++)
{
if (gBattleMons[battlerId].statStages[i] < 6)
{
diff --git a/src/berry.c b/src/berry.c
index 66cf91409..9f08165b8 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -1,23 +1,35 @@
#include "global.h"
#include "berry.h"
-#include "main.h"
-#include "item.h"
-#include "constants/items.h"
-#include "text.h"
-#include "random.h"
#include "event_data.h"
+#include "field_control_avatar.h"
#include "fieldmap.h"
+#include "item.h"
+#include "item_menu.h"
+#include "main.h"
+#include "random.h"
+#include "string_util.h"
+#include "text.h"
+#include "constants/event_object_movement_constants.h"
+#include "constants/items.h"
extern u8 EventObjectGetBerryTreeId(u8 eventObjectId);
extern void sub_8092EF0(u8 mapId, u8 mapNumber, u8 mapGroup);
extern void CB2_ChooseBerry(void);
-extern const u8* GetEventObjectScriptPointerPlayerFacing(void);
extern bool8 IsBerryTreeSparkling(u8, u8, u8);
-extern u16 gSpecialVar_ItemId;
-
extern const u8 BerryTreeScript[];
+static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry);
+static bool32 BerryTreeGrow(struct BerryTree *tree);
+static u16 BerryTypeToItemId(u16 berry);
+static u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree);
+static u8 GetNumStagesWateredByBerryTreeId(u8 id);
+static u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water);
+static u8 CalcBerryYield(struct BerryTree *tree);
+static u8 GetBerryCountByBerryTreeId(u8 id);
+static u16 GetStageDurationByBerryType(u8);
+
+//.rodata
static const u8 sBerryDescriptionPart1_Cheri[] = _("Blooms with delicate pretty flowers.");
static const u8 sBerryDescriptionPart2_Cheri[] = _("The bright red BERRY is very spicy.");
static const u8 sBerryDescriptionPart1_Chesto[] = _("The BERRY’s thick skin and fruit are");
@@ -845,6 +857,7 @@ const struct UnkStruct_0858AB24 gUnknown_0858AB24[] = {
const struct BerryTree gBlankBerryTree = {};
+//.text
// unused
void ClearEnigmaBerries(void)
{
@@ -860,7 +873,7 @@ void SetEnigmaBerry(u8 *src)
dest[i] = src[i];
}
-u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
+static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
{
u32 i;
u32 checksum;
@@ -889,12 +902,12 @@ bool32 IsEnigmaBerryValid(void)
const struct Berry *GetBerryInfo(u8 berry)
{
- if (berry == 0x2B && IsEnigmaBerryValid())
+ if (berry == ITEM_TO_BERRY(ITEM_ENIGMA_BERRY) && IsEnigmaBerryValid())
return (struct Berry*)(&gSaveBlock1Ptr->enigmaBerry.berry);
else
{
- if (berry == 0 || berry > 0x2B)
- berry = 1;
+ if (berry == BERRY_NONE || berry > ITEM_TO_BERRY(LAST_BERRY_INDEX))
+ berry = ITEM_TO_BERRY(FIRST_BERRY_INDEX);
return &gBerries[berry - 1];
}
}
@@ -910,16 +923,16 @@ bool32 EventObjectInteractionWaterBerryTree(void)
switch (tree->stage)
{
- case 1:
+ case BERRY_STAGE_PLANTED:
tree->watered1 = TRUE;
break;
- case 2:
+ case BERRY_STAGE_SPROUTED:
tree->watered2 = TRUE;
break;
- case 3:
+ case BERRY_STAGE_TALLER:
tree->watered3 = TRUE;
break;
- case 4:
+ case BERRY_STAGE_FLOWERING:
tree->watered4 = TRUE;
break;
default:
@@ -953,28 +966,28 @@ void ClearBerryTrees(void)
gSaveBlock1Ptr->berryTrees[i] = gBlankBerryTree;
}
-bool32 BerryTreeGrow(struct BerryTree *tree)
+static bool32 BerryTreeGrow(struct BerryTree *tree)
{
if (tree->growthSparkle)
return FALSE;
switch (tree->stage)
{
- case 0:
+ case BERRY_STAGE_NO_BERRY:
return FALSE;
- case 4:
+ case BERRY_STAGE_FLOWERING:
tree->berryYield = CalcBerryYield(tree);
- case 1:
- case 2:
- case 3:
+ case BERRY_STAGE_PLANTED:
+ case BERRY_STAGE_SPROUTED:
+ case BERRY_STAGE_TALLER:
tree->stage++;
break;
- case 5:
+ case BERRY_STAGE_BERRIES:
tree->watered1 = 0;
tree->watered2 = 0;
tree->watered3 = 0;
tree->watered4 = 0;
tree->berryYield = 0;
- tree->stage = 2;
+ tree->stage = BERRY_STAGE_SPROUTED;
if (++tree->regrowthCount == 10)
*tree = gBlankBerryTree;
break;
@@ -1012,7 +1025,7 @@ void BerryTreeTimeUpdate(s32 minutes)
tree->minutesUntilNextStage = GetStageDurationByBerryType(tree->berry);
if (!BerryTreeGrow(tree))
break;
- if (tree->stage == 5)
+ if (tree->stage == BERRY_STAGE_BERRIES)
tree->minutesUntilNextStage *= 4;
}
}
@@ -1028,7 +1041,7 @@ void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle)
tree->berry = berry;
tree->minutesUntilNextStage = GetStageDurationByBerryType(berry);
tree->stage = stage;
- if (stage == 5)
+ if (stage == BERRY_STAGE_BERRIES)
{
tree->berryYield = CalcBerryYield(tree);
tree->minutesUntilNextStage *= 4;
@@ -1064,7 +1077,7 @@ u8 ItemIdToBerryType(u16 item)
return ITEM_TO_BERRY(item);
}
-u16 BerryTypeToItemId(u16 berry)
+static u16 BerryTypeToItemId(u16 berry)
{
u16 item = berry - 1;
@@ -1087,10 +1100,10 @@ void GetBerryCountStringByBerryType(u8 berry, u8* dest, u32 berryCount)
void ResetBerryTreeSparkleFlag(u8 id)
{
- GetBerryTreeInfo(id)->growthSparkle = 0;
+ GetBerryTreeInfo(id)->growthSparkle = FALSE;
}
-u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree)
+static u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree)
{
u8 count = 0;
@@ -1105,12 +1118,12 @@ u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree)
return count;
}
-u8 GetNumStagesWateredByBerryTreeId(u8 id)
+static u8 GetNumStagesWateredByBerryTreeId(u8 id)
{
return BerryTreeGetNumStagesWatered(GetBerryTreeInfo(id));
}
-u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water)
+static u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water)
{
u32 randMin;
u32 randMax;
@@ -1133,7 +1146,7 @@ u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water)
}
}
-u8 CalcBerryYield(struct BerryTree *tree)
+static u8 CalcBerryYield(struct BerryTree *tree)
{
const struct Berry *berry = GetBerryInfo(tree->berry);
u8 min = berry->minYield;
@@ -1142,12 +1155,12 @@ u8 CalcBerryYield(struct BerryTree *tree)
return CalcBerryYieldInternal(max, min, BerryTreeGetNumStagesWatered(tree));
}
-u8 GetBerryCountByBerryTreeId(u8 id)
+static u8 GetBerryCountByBerryTreeId(u8 id)
{
return gSaveBlock1Ptr->berryTrees[id].berryYield;
}
-u16 GetStageDurationByBerryType(u8 berry)
+static u16 GetStageDurationByBerryType(u8 berry)
{
return GetBerryInfo(berry)->stageDuration * 60;
}
@@ -1156,18 +1169,18 @@ void EventObjectInteractionGetBerryTreeData(void)
{
u8 id;
u8 berry;
- u8 unk;
+ u8 localId;
u8 group;
u8 num;
id = EventObjectGetBerryTreeId(gSelectedEventObject);
berry = GetBerryTypeByBerryTreeId(id);
ResetBerryTreeSparkleFlag(id);
- unk = gSpecialVar_LastTalked;
+ localId = gSpecialVar_LastTalked;
num = gSaveBlock1Ptr->location.mapNum;
group = gSaveBlock1Ptr->location.mapGroup;
- if (IsBerryTreeSparkling(unk, num, group))
- gSpecialVar_0x8004 = 0xFF;
+ if (IsBerryTreeSparkling(localId, num, group))
+ gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING;
else
gSpecialVar_0x8004 = GetStageByBerryTreeId(id);
gSpecialVar_0x8005 = GetNumStagesWateredByBerryTreeId(id);
@@ -1216,7 +1229,7 @@ void EventObjectInteractionRemoveBerryTree(void)
sub_8092EF0(gSpecialVar_LastTalked, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
}
-u8 PlayerHasBerries(void)
+bool8 PlayerHasBerries(void)
{
return IsBagPocketNonEmpty(POCKET_BERRIES);
}
@@ -1238,7 +1251,7 @@ void ResetBerryTreeSparkleFlags(void)
bottom = top + 8;
for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
- if (gEventObjects[i].active && gEventObjects[i].movementType == 12)
+ if (gEventObjects[i].active && gEventObjects[i].movementType == MOVEMENT_TYPE_BERRY_TREE_GROWTH)
{
cam_left = gEventObjects[i].currentCoords.x;
cam_top = gEventObjects[i].currentCoords.y;
diff --git a/src/berry_blender.c b/src/berry_blender.c
index a5b940189..7320e905f 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -32,6 +32,8 @@
#include "tv.h"
#include "item_menu.h"
#include "battle_records.h"
+#include "graphics.h"
+#include "new_game.h"
#define BLENDER_SCORE_BEST 0
#define BLENDER_SCORE_GOOD 1
@@ -131,20 +133,6 @@ struct BerryBlenderData
extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern u8 gInGameOpponentsNo;
-extern u8 gUnknown_020322D5;
-
-// graphics
-extern const u8 gBerryBlenderArrowTiles[];
-extern const u8 gBerryBlenderStartTiles[];
-extern const u8 gBerryBlenderMarubatsuTiles[];
-extern const u8 gBerryBlenderParticlesTiles[];
-extern const u8 gBerryBlenderCountdownNumbersTiles[];
-extern const u16 gBerryBlenderMiscPalette[];
-extern const u16 gBerryBlenderArrowPalette[];
-extern const u8 sBlenderCenterGfx[];
-extern const u8 gUnknown_08D91DB8[];
-extern const u8 gUnknown_08D927EC[];
// text
extern const u8 gText_SavingDontTurnOff2[];
@@ -206,18 +194,21 @@ static void sub_8083170(u16 a0, u16 a1);
static void Blender_PrintMadePokeblockString(struct Pokeblock *pokeblock, u8 *dst);
static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlenderStruct *a1);
-// ewram
+// EWRAM
EWRAM_DATA static struct BerryBlenderData *sBerryBlenderData = NULL;
EWRAM_DATA static s32 sUnknown_020322A8[5] = {0};
EWRAM_DATA static s32 sUnknown_020322BC[5] = {0};
EWRAM_DATA static u32 sUnknown_020322D0 = 0;
-// iwram
+// IWRAM bss
IWRAM_DATA static s16 sUnknown_03000DE8[8];
IWRAM_DATA static s16 sUnknown_03000DF8[6];
IWRAM_DATA static s16 sUnknown_03000E04;
IWRAM_DATA static s16 sUnknown_03000E06;
+// IWRAM common
+u8 gInGameOpponentsNo;
+
// rom
static const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal");
@@ -323,7 +314,7 @@ static const struct BgTemplate sBerryBlenderBgTemplates[3] =
static const struct WindowTemplate sBerryBlender_WindowTemplates[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 6,
.width = 7,
@@ -332,7 +323,7 @@ static const struct WindowTemplate sBerryBlender_WindowTemplates[] =
.baseBlock = 0x28,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 22,
.tilemapTop = 6,
.width = 7,
@@ -341,7 +332,7 @@ static const struct WindowTemplate sBerryBlender_WindowTemplates[] =
.baseBlock = 0x36,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 12,
.width = 7,
@@ -350,7 +341,7 @@ static const struct WindowTemplate sBerryBlender_WindowTemplates[] =
.baseBlock = 0x44,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 22,
.tilemapTop = 12,
.width = 7,
@@ -359,7 +350,7 @@ static const struct WindowTemplate sBerryBlender_WindowTemplates[] =
.baseBlock = 0x52,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 27,
@@ -368,7 +359,7 @@ static const struct WindowTemplate sBerryBlender_WindowTemplates[] =
.baseBlock = 0x60,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 5,
.tilemapTop = 3,
.width = 21,
@@ -381,7 +372,7 @@ static const struct WindowTemplate sBerryBlender_WindowTemplates[] =
static const struct WindowTemplate sBlender_YesNoWindowTemplate =
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 21,
.tilemapTop = 9,
.width = 5,
@@ -846,7 +837,7 @@ static const u8 sUnknown_08339CD2[] =
static const struct WindowTemplate sBlenderRecordWindowTemplate =
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 6,
.tilemapTop = 4,
.width = 18,
@@ -1031,7 +1022,7 @@ static void sub_807FAC8(void)
sBerryBlenderData->mainState++;
break;
case 4:
- if (Blender_PrintText(&sBerryBlenderData->textState, sText_BerryBlenderStart, GetPlayerTextSpeed()))
+ if (Blender_PrintText(&sBerryBlenderData->textState, sText_BerryBlenderStart, GetPlayerTextSpeedDelay()))
sBerryBlenderData->mainState++;
break;
case 5:
@@ -1124,7 +1115,7 @@ static void Blender_SetPlayerNamesLocal(u8 opponentsNum)
sBerryBlenderData->playersNo = 2;
StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName);
- if (!FlagGet(FLAG_0x340))
+ if (!FlagGet(FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER_ONLOOKERS))
StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[BLENDER_MASTER]);
else
StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[BLENDER_MISTER]);
@@ -1647,7 +1638,7 @@ static void sub_80808D4(void)
if (gSpecialVar_0x8004 == 1)
{
- if (!FlagGet(FLAG_0x340))
+ if (!FlagGet(FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER_ONLOOKERS))
sBerryBlenderData->field_120[0] = CreateTask(sub_8081224, 10);
else
sBerryBlenderData->field_120[0] = CreateTask(sUnknown_083399EC[0], 10);
@@ -2490,7 +2481,7 @@ static void CB2_HandleBlenderEndGame(void)
}
break;
case 7:
- if (Blender_PrintText(&sBerryBlenderData->textState, sText_WouldLikeToBlendAnotherBerry, GetPlayerTextSpeed()))
+ if (Blender_PrintText(&sBerryBlenderData->textState, sText_WouldLikeToBlendAnotherBerry, GetPlayerTextSpeedDelay()))
sBerryBlenderData->gameEndState++;
break;
case 9:
@@ -2499,7 +2490,7 @@ static void CB2_HandleBlenderEndGame(void)
sBerryBlenderData->gameEndState++;
break;
case 10:
- switch (Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 1:
case -1:
@@ -2572,7 +2563,7 @@ static void CB2_HandleBlenderEndGame(void)
sBerryBlenderData->gameEndState++;
break;
case 13:
- if (Blender_PrintText(&sBerryBlenderData->textState, sText_CommunicationStandby, GetPlayerTextSpeed()))
+ if (Blender_PrintText(&sBerryBlenderData->textState, sText_CommunicationStandby, GetPlayerTextSpeedDelay()))
{
SetMainCallback2(CB2_HandlePlayerLinkPlayAgainChoice);
sBerryBlenderData->gameEndState = 0;
@@ -2680,7 +2671,7 @@ static void CB2_HandlePlayerLinkPlayAgainChoice(void)
StringAppend(gStringVar4, sText_HasNoBerriesToPut);
break;
case 3:
- if (Blender_PrintText(&sBerryBlenderData->textState, gStringVar4, GetPlayerTextSpeed()))
+ if (Blender_PrintText(&sBerryBlenderData->textState, gStringVar4, GetPlayerTextSpeedDelay()))
{
sBerryBlenderData->framesToWait = 0;
sBerryBlenderData->gameEndState++;
@@ -2787,7 +2778,7 @@ static void CB2_HandlePlayerPlayAgainChoice(void)
StringCopy(gStringVar4, sText_RunOutOfBerriesForBlending);
break;
case 3:
- if (Blender_PrintText(&sBerryBlenderData->textState, gStringVar4, GetPlayerTextSpeed()))
+ if (Blender_PrintText(&sBerryBlenderData->textState, gStringVar4, GetPlayerTextSpeedDelay()))
sBerryBlenderData->gameEndState = 9;
break;
case 9:
@@ -3363,7 +3354,7 @@ static bool8 Blender_PrintBlendingResults(void)
sBerryBlenderData->mainState++;
break;
case 6:
- if (Blender_PrintText(&sBerryBlenderData->textState, sBerryBlenderData->stringVar, GetPlayerTextSpeed()))
+ if (Blender_PrintText(&sBerryBlenderData->textState, sBerryBlenderData->stringVar, GetPlayerTextSpeedDelay()))
{
TryUpdateBerryBlenderRecord();
return TRUE;
diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c
index 2ae15a806..a90906d05 100644
--- a/src/berry_fix_program.c
+++ b/src/berry_fix_program.c
@@ -3,6 +3,7 @@
#include "multiboot.h"
#include "malloc.h"
#include "bg.h"
+#include "graphics.h"
#include "main.h"
#include "sprite.h"
#include "task.h"
@@ -81,26 +82,7 @@ static const u8 *const gUnknown_08618160[] = {
Unknown_08617EA3
};
-extern const u8 gBerryFixGameboy_Gfx[];
-extern const u8 gBerryFixGameboy_Tilemap[];
-extern const u8 gBerryFixGameboy_Pal[];
-extern const u8 gBerryFixGameboyLogo_Gfx[];
-extern const u8 gBerryFixGameboyLogo_Tilemap[];
-extern const u8 gBerryFixGameboyLogo_Pal[];
-extern const u8 gBerryFixGbaTransfer_Gfx[];
-extern const u8 gBerryFixGbaTransfer_Tilemap[];
-extern const u8 gBerryFixGbaTransfer_Pal[];
-extern const u8 gBerryFixGbaTransferHighlight_Gfx[];
-extern const u8 gBerryFixGbaTransferHighlight_Tilemap[];
-extern const u8 gBerryFixGbaTransferHighlight_Pal[];
-extern const u8 gBerryFixGbaTransferError_Gfx[];
-extern const u8 gBerryFixGbaTransferError_Tilemap[];
-extern const u8 gBerryFixGbaTransferError_Pal[];
-extern const u8 gBerryFixWindow_Gfx[];
-extern const u8 gBerryFixWindow_Tilemap[];
-extern const u8 gBerryFixWindow_Pal[];
-
-static const u8 *const gUnknown_08618178[][3] = {
+static const void *const gUnknown_08618178[][3] = {
{
gBerryFixGameboy_Gfx,
gBerryFixGameboy_Tilemap,
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 07fb6bd9e..39927ab99 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -102,7 +102,7 @@ static const u8 sTextColors[2][3] =
static const struct WindowTemplate sWindowTemplates[] =
{
{ // WIN_BERRY_NAME
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 11,
.tilemapTop = 4,
.width = 8,
@@ -111,7 +111,7 @@ static const struct WindowTemplate sWindowTemplates[] =
.baseBlock = 69,
},
{ // WIN_SIZE_FIRM
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 11,
.tilemapTop = 7,
.width = 18,
@@ -120,7 +120,7 @@ static const struct WindowTemplate sWindowTemplates[] =
.baseBlock = 85,
},
{ // WIN_DESC
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 4,
.tilemapTop = 14,
.width = 25,
@@ -129,7 +129,7 @@ static const struct WindowTemplate sWindowTemplates[] =
.baseBlock = 157,
},
{ // WIN_BERRY_TAG
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 0,
.width = 8,
diff --git a/src/bg.c b/src/bg.c
index 7c55410b1..a41075ad7 100644
--- a/src/bg.c
+++ b/src/bg.c
@@ -135,22 +135,22 @@ u16 GetBgControlAttribute(u8 bg, u8 attributeId)
{
switch (attributeId)
{
- case BG_CTRL_ATTR_VISIBLE:
- return sGpuBgConfigs.configs[bg].visible;
- case BG_CTRL_ATTR_CHARBASEINDEX:
- return sGpuBgConfigs.configs[bg].charBaseIndex;
- case BG_CTRL_ATTR_MAPBASEINDEX:
- return sGpuBgConfigs.configs[bg].mapBaseIndex;
- case BG_CTRL_ATTR_SCREENSIZE:
- return sGpuBgConfigs.configs[bg].screenSize;
- case BG_CTRL_ATTR_PALETTEMODE:
- return sGpuBgConfigs.configs[bg].paletteMode;
- case BG_CTRL_ATTR_PRIORITY:
- return sGpuBgConfigs.configs[bg].priority;
- case BG_CTRL_ATTR_MOSAIC:
- return sGpuBgConfigs.configs[bg].mosaic;
- case BG_CTRL_ATTR_WRAPAROUND:
- return sGpuBgConfigs.configs[bg].wraparound;
+ case BG_CTRL_ATTR_VISIBLE:
+ return sGpuBgConfigs.configs[bg].visible;
+ case BG_CTRL_ATTR_CHARBASEINDEX:
+ return sGpuBgConfigs.configs[bg].charBaseIndex;
+ case BG_CTRL_ATTR_MAPBASEINDEX:
+ return sGpuBgConfigs.configs[bg].mapBaseIndex;
+ case BG_CTRL_ATTR_SCREENSIZE:
+ return sGpuBgConfigs.configs[bg].screenSize;
+ case BG_CTRL_ATTR_PALETTEMODE:
+ return sGpuBgConfigs.configs[bg].paletteMode;
+ case BG_CTRL_ATTR_PRIORITY:
+ return sGpuBgConfigs.configs[bg].priority;
+ case BG_CTRL_ATTR_MOSAIC:
+ return sGpuBgConfigs.configs[bg].mosaic;
+ case BG_CTRL_ATTR_WRAPAROUND:
+ return sGpuBgConfigs.configs[bg].wraparound;
}
}
@@ -166,15 +166,15 @@ u8 LoadBgVram(u8 bg, const void *src, u16 size, u16 destOffset, u8 mode)
{
switch (mode)
{
- case 0x1:
- offset = sGpuBgConfigs.configs[bg].charBaseIndex * BG_CHAR_SIZE;
- break;
- case 0x2:
- offset = sGpuBgConfigs.configs[bg].mapBaseIndex * BG_SCREEN_SIZE;
- break;
- default:
- cursor = -1;
- goto end;
+ case 0x1:
+ offset = sGpuBgConfigs.configs[bg].charBaseIndex * BG_CHAR_SIZE;
+ break;
+ case 0x2:
+ offset = sGpuBgConfigs.configs[bg].mapBaseIndex * BG_SCREEN_SIZE;
+ break;
+ default:
+ cursor = -1;
+ goto end;
}
offset = destOffset + offset;
@@ -241,17 +241,17 @@ static void SetBgAffineInternal(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispC
switch (sGpuBgConfigs.bgVisibilityAndMode & 0x7)
{
- case 1:
- if (bg != 2)
- return;
- break;
- case 2:
- if (bg < 2 || bg > 3)
- return;
- break;
- case 0:
- default:
+ case 1:
+ if (bg != 2)
+ return;
+ break;
+ case 2:
+ if (bg < 2 || bg > 3)
return;
+ break;
+ case 0:
+ default:
+ return;
}
src.texX = srcCenterX;
@@ -279,7 +279,8 @@ bool8 IsInvalidBg(u8 bg)
{
if (bg > 3)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
int DummiedOutFireRedLeafGreenTileAllocFunc(int a1, int a2, int a3, int a4)
@@ -434,7 +435,6 @@ u16 Unused_LoadBgPalette(u8 bg, const void *src, u16 size, u16 destOffset)
return (u8)cursor;
}
-#ifdef NONMATCHING // Matches everything but r5 and r6 are flipped, rrr
bool8 IsDma3ManagerBusyWithBgCopy(void)
{
u8 mod;
@@ -462,60 +462,6 @@ bool8 IsDma3ManagerBusyWithBgCopy(void)
return FALSE;
}
-#else
-NAKED
-bool8 IsDma3ManagerBusyWithBgCopy(void)
-{
- asm("push {r4-r7,lr}\n\
- mov r5, #0\n\
- mov r7, #0x1\n\
- neg r7, r7\n\
-_08001ADC:\n\
- add r0, r5, #0\n\
- cmp r5, #0\n\
- bge _08001AE4\n\
- add r0, #0x1F\n\
-_08001AE4:\n\
- asr r0, #5\n\
- lsl r2, r0, #24\n\
- lsl r0, #5\n\
- sub r0, r5, r0\n\
- lsl r0, #24\n\
- lsr r0, #24\n\
- ldr r1, =sDmaBusyBitfield\n\
- lsr r2, #22\n\
- add r4, r2, r1\n\
- mov r6, #0x1\n\
- lsl r6, r0\n\
- ldr r0, [r4]\n\
- and r0, r6\n\
- cmp r0, #0\n\
- beq _08001B22\n\
- lsl r0, r5, #16\n\
- asr r0, #16\n\
- bl CheckForSpaceForDma3Request\n\
- lsl r0, #24\n\
- asr r0, #24\n\
- cmp r0, r7\n\
- bne _08001B1C\n\
- mov r0, #0x1\n\
- b _08001B2A\n\
- .pool\n\
-_08001B1C:\n\
- ldr r0, [r4]\n\
- bic r0, r6\n\
- str r0, [r4]\n\
-_08001B22:\n\
- add r5, #0x1\n\
- cmp r5, #0x7F\n\
- ble _08001ADC\n\
- mov r0, #0\n\
-_08001B2A:\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n");
-}
-#endif // NONMATCHING
void ShowBg(u8 bg)
{
@@ -533,27 +479,27 @@ void SetBgAttribute(u8 bg, u8 attributeId, u8 value)
{
switch (attributeId)
{
- case 1:
- SetBgControlAttributes(bg, value, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
- break;
- case 2:
- SetBgControlAttributes(bg, 0xFF, value, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
- break;
- case 3:
- SetBgControlAttributes(bg, 0xFF, 0xFF, value, 0xFF, 0xFF, 0xFF, 0xFF);
- break;
- case 4:
- SetBgControlAttributes(bg, 0xFF, 0xFF, 0xFF, value, 0xFF, 0xFF, 0xFF);
- break;
- case 7:
- SetBgControlAttributes(bg, 0xFF, 0xFF, 0xFF, 0xFF, value, 0xFF, 0xFF);
- break;
- case 5:
- SetBgControlAttributes(bg, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, value, 0xFF);
- break;
- case 6:
- SetBgControlAttributes(bg, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, value);
- break;
+ case 1:
+ SetBgControlAttributes(bg, value, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
+ break;
+ case 2:
+ SetBgControlAttributes(bg, 0xFF, value, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
+ break;
+ case 3:
+ SetBgControlAttributes(bg, 0xFF, 0xFF, value, 0xFF, 0xFF, 0xFF, 0xFF);
+ break;
+ case 4:
+ SetBgControlAttributes(bg, 0xFF, 0xFF, 0xFF, value, 0xFF, 0xFF, 0xFF);
+ break;
+ case 7:
+ SetBgControlAttributes(bg, 0xFF, 0xFF, 0xFF, 0xFF, value, 0xFF, 0xFF);
+ break;
+ case 5:
+ SetBgControlAttributes(bg, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, value, 0xFF);
+ break;
+ case 6:
+ SetBgControlAttributes(bg, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, value);
+ break;
}
}
@@ -561,36 +507,36 @@ u16 GetBgAttribute(u8 bg, u8 attributeId)
{
switch (attributeId)
{
- case 1:
- return GetBgControlAttribute(bg, BG_CTRL_ATTR_CHARBASEINDEX);
- case 2:
- return GetBgControlAttribute(bg, BG_CTRL_ATTR_MAPBASEINDEX);
- case 3:
- return GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE);
- case 4:
- return GetBgControlAttribute(bg, BG_CTRL_ATTR_PALETTEMODE);
- case 7:
- return GetBgControlAttribute(bg, BG_CTRL_ATTR_PRIORITY);
- case 5:
- return GetBgControlAttribute(bg, BG_CTRL_ATTR_MOSAIC);
- case 6:
- return GetBgControlAttribute(bg, BG_CTRL_ATTR_WRAPAROUND);
- case 8:
- switch (GetBgType(bg))
- {
- case 0:
- return GetBgMetricTextMode(bg, 0) * 0x800;
- case 1:
- return GetBgMetricAffineMode(bg, 0) * 0x100;
- default:
- return 0;
- }
- case 9:
- return GetBgType(bg);
- case 10:
- return sGpuBgConfigs2[bg].baseTile;
- default:
- return -1;
+ case 1:
+ return GetBgControlAttribute(bg, BG_CTRL_ATTR_CHARBASEINDEX);
+ case 2:
+ return GetBgControlAttribute(bg, BG_CTRL_ATTR_MAPBASEINDEX);
+ case 3:
+ return GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE);
+ case 4:
+ return GetBgControlAttribute(bg, BG_CTRL_ATTR_PALETTEMODE);
+ case 7:
+ return GetBgControlAttribute(bg, BG_CTRL_ATTR_PRIORITY);
+ case 5:
+ return GetBgControlAttribute(bg, BG_CTRL_ATTR_MOSAIC);
+ case 6:
+ return GetBgControlAttribute(bg, BG_CTRL_ATTR_WRAPAROUND);
+ case 8:
+ switch (GetBgType(bg))
+ {
+ case 0:
+ return GetBgMetricTextMode(bg, 0) * 0x800;
+ case 1:
+ return GetBgMetricAffineMode(bg, 0) * 0x100;
+ default:
+ return 0;
+ }
+ case 9:
+ return GetBgType(bg);
+ case 10:
+ return sGpuBgConfigs2[bg].baseTile;
+ default:
+ return -1;
}
}
@@ -607,58 +553,58 @@ u32 ChangeBgX(u8 bg, u32 value, u8 op)
switch (op)
{
- case 0:
- default:
- sGpuBgConfigs2[bg].bg_x = value;
- break;
- case 1:
- sGpuBgConfigs2[bg].bg_x += value;
- break;
- case 2:
- sGpuBgConfigs2[bg].bg_x -= value;
- break;
+ case 0:
+ default:
+ sGpuBgConfigs2[bg].bg_x = value;
+ break;
+ case 1:
+ sGpuBgConfigs2[bg].bg_x += value;
+ break;
+ case 2:
+ sGpuBgConfigs2[bg].bg_x -= value;
+ break;
}
mode = GetBgMode();
switch (bg)
{
- case 0:
- temp1 = sGpuBgConfigs2[0].bg_x >> 0x8;
- SetGpuReg(REG_OFFSET_BG0HOFS, temp1);
- break;
- case 1:
- temp1 = sGpuBgConfigs2[1].bg_x >> 0x8;
- SetGpuReg(REG_OFFSET_BG1HOFS, temp1);
- break;
- case 2:
- if (mode == 0)
- {
- temp1 = sGpuBgConfigs2[2].bg_x >> 0x8;
- SetGpuReg(REG_OFFSET_BG2HOFS, temp1);
- }
- else
- {
- temp1 = sGpuBgConfigs2[2].bg_x >> 0x10;
- temp2 = sGpuBgConfigs2[2].bg_x & 0xFFFF;
- SetGpuReg(REG_OFFSET_BG2X_H, temp1);
- SetGpuReg(REG_OFFSET_BG2X_L, temp2);
- }
- break;
- case 3:
- if (mode == 0)
- {
- temp1 = sGpuBgConfigs2[3].bg_x >> 0x8;
- SetGpuReg(REG_OFFSET_BG3HOFS, temp1);
- }
- else if (mode == 2)
- {
- temp1 = sGpuBgConfigs2[3].bg_x >> 0x10;
- temp2 = sGpuBgConfigs2[3].bg_x & 0xFFFF;
- SetGpuReg(REG_OFFSET_BG3X_H, temp1);
- SetGpuReg(REG_OFFSET_BG3X_L, temp2);
- }
- break;
+ case 0:
+ temp1 = sGpuBgConfigs2[0].bg_x >> 0x8;
+ SetGpuReg(REG_OFFSET_BG0HOFS, temp1);
+ break;
+ case 1:
+ temp1 = sGpuBgConfigs2[1].bg_x >> 0x8;
+ SetGpuReg(REG_OFFSET_BG1HOFS, temp1);
+ break;
+ case 2:
+ if (mode == 0)
+ {
+ temp1 = sGpuBgConfigs2[2].bg_x >> 0x8;
+ SetGpuReg(REG_OFFSET_BG2HOFS, temp1);
+ }
+ else
+ {
+ temp1 = sGpuBgConfigs2[2].bg_x >> 0x10;
+ temp2 = sGpuBgConfigs2[2].bg_x & 0xFFFF;
+ SetGpuReg(REG_OFFSET_BG2X_H, temp1);
+ SetGpuReg(REG_OFFSET_BG2X_L, temp2);
+ }
+ break;
+ case 3:
+ if (mode == 0)
+ {
+ temp1 = sGpuBgConfigs2[3].bg_x >> 0x8;
+ SetGpuReg(REG_OFFSET_BG3HOFS, temp1);
+ }
+ else if (mode == 2)
+ {
+ temp1 = sGpuBgConfigs2[3].bg_x >> 0x10;
+ temp2 = sGpuBgConfigs2[3].bg_x & 0xFFFF;
+ SetGpuReg(REG_OFFSET_BG3X_H, temp1);
+ SetGpuReg(REG_OFFSET_BG3X_L, temp2);
+ }
+ break;
}
return sGpuBgConfigs2[bg].bg_x;
@@ -668,9 +614,10 @@ u32 GetBgX(u8 bg)
{
if (IsInvalidBg32(bg) != FALSE)
return -1;
- if (GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) == 0)
+ else if (GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) == 0)
return -1;
- return sGpuBgConfigs2[bg].bg_x;
+ else
+ return sGpuBgConfigs2[bg].bg_x;
}
u32 ChangeBgY(u8 bg, u32 value, u8 op)
@@ -686,58 +633,58 @@ u32 ChangeBgY(u8 bg, u32 value, u8 op)
switch (op)
{
- case 0:
- default:
- sGpuBgConfigs2[bg].bg_y = value;
- break;
- case 1:
- sGpuBgConfigs2[bg].bg_y += value;
- break;
- case 2:
- sGpuBgConfigs2[bg].bg_y -= value;
- break;
+ case 0:
+ default:
+ sGpuBgConfigs2[bg].bg_y = value;
+ break;
+ case 1:
+ sGpuBgConfigs2[bg].bg_y += value;
+ break;
+ case 2:
+ sGpuBgConfigs2[bg].bg_y -= value;
+ break;
}
mode = GetBgMode();
switch (bg)
{
- case 0:
- temp1 = sGpuBgConfigs2[0].bg_y >> 0x8;
- SetGpuReg(REG_OFFSET_BG0VOFS, temp1);
- break;
- case 1:
- temp1 = sGpuBgConfigs2[1].bg_y >> 0x8;
- SetGpuReg(REG_OFFSET_BG1VOFS, temp1);
- break;
- case 2:
- if (mode == 0)
- {
- temp1 = sGpuBgConfigs2[2].bg_y >> 0x8;
- SetGpuReg(REG_OFFSET_BG2VOFS, temp1);
- }
- else
- {
- temp1 = sGpuBgConfigs2[2].bg_y >> 0x10;
- temp2 = sGpuBgConfigs2[2].bg_y & 0xFFFF;
- SetGpuReg(REG_OFFSET_BG2Y_H, temp1);
- SetGpuReg(REG_OFFSET_BG2Y_L, temp2);
- }
- break;
- case 3:
- if (mode == 0)
- {
- temp1 = sGpuBgConfigs2[3].bg_y >> 0x8;
- SetGpuReg(REG_OFFSET_BG3VOFS, temp1);
- }
- else if (mode == 2)
- {
- temp1 = sGpuBgConfigs2[3].bg_y >> 0x10;
- temp2 = sGpuBgConfigs2[3].bg_y & 0xFFFF;
- SetGpuReg(REG_OFFSET_BG3Y_H, temp1);
- SetGpuReg(REG_OFFSET_BG3Y_L, temp2);
- }
- break;
+ case 0:
+ temp1 = sGpuBgConfigs2[0].bg_y >> 0x8;
+ SetGpuReg(REG_OFFSET_BG0VOFS, temp1);
+ break;
+ case 1:
+ temp1 = sGpuBgConfigs2[1].bg_y >> 0x8;
+ SetGpuReg(REG_OFFSET_BG1VOFS, temp1);
+ break;
+ case 2:
+ if (mode == 0)
+ {
+ temp1 = sGpuBgConfigs2[2].bg_y >> 0x8;
+ SetGpuReg(REG_OFFSET_BG2VOFS, temp1);
+ }
+ else
+ {
+ temp1 = sGpuBgConfigs2[2].bg_y >> 0x10;
+ temp2 = sGpuBgConfigs2[2].bg_y & 0xFFFF;
+ SetGpuReg(REG_OFFSET_BG2Y_H, temp1);
+ SetGpuReg(REG_OFFSET_BG2Y_L, temp2);
+ }
+ break;
+ case 3:
+ if (mode == 0)
+ {
+ temp1 = sGpuBgConfigs2[3].bg_y >> 0x8;
+ SetGpuReg(REG_OFFSET_BG3VOFS, temp1);
+ }
+ else if (mode == 2)
+ {
+ temp1 = sGpuBgConfigs2[3].bg_y >> 0x10;
+ temp2 = sGpuBgConfigs2[3].bg_y & 0xFFFF;
+ SetGpuReg(REG_OFFSET_BG3Y_H, temp1);
+ SetGpuReg(REG_OFFSET_BG3Y_L, temp2);
+ }
+ break;
}
return sGpuBgConfigs2[bg].bg_y;
@@ -756,59 +703,59 @@ u32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op)
switch (op)
{
- case 0:
- default:
- sGpuBgConfigs2[bg].bg_y = value;
- break;
- case 1:
- sGpuBgConfigs2[bg].bg_y += value;
- break;
- case 2:
- sGpuBgConfigs2[bg].bg_y -= value;
- break;
+ case 0:
+ default:
+ sGpuBgConfigs2[bg].bg_y = value;
+ break;
+ case 1:
+ sGpuBgConfigs2[bg].bg_y += value;
+ break;
+ case 2:
+ sGpuBgConfigs2[bg].bg_y -= value;
+ break;
}
mode = GetBgMode();
switch (bg)
{
- case 0:
- temp1 = sGpuBgConfigs2[0].bg_y >> 0x8;
- SetGpuReg_ForcedBlank(REG_OFFSET_BG0VOFS, temp1);
- break;
- case 1:
- temp1 = sGpuBgConfigs2[1].bg_y >> 0x8;
- SetGpuReg_ForcedBlank(REG_OFFSET_BG1VOFS, temp1);
- break;
- case 2:
- if (mode == 0)
- {
- temp1 = sGpuBgConfigs2[2].bg_y >> 0x8;
- SetGpuReg_ForcedBlank(REG_OFFSET_BG2VOFS, temp1);
+ case 0:
+ temp1 = sGpuBgConfigs2[0].bg_y >> 0x8;
+ SetGpuReg_ForcedBlank(REG_OFFSET_BG0VOFS, temp1);
+ break;
+ case 1:
+ temp1 = sGpuBgConfigs2[1].bg_y >> 0x8;
+ SetGpuReg_ForcedBlank(REG_OFFSET_BG1VOFS, temp1);
+ break;
+ case 2:
+ if (mode == 0)
+ {
+ temp1 = sGpuBgConfigs2[2].bg_y >> 0x8;
+ SetGpuReg_ForcedBlank(REG_OFFSET_BG2VOFS, temp1);
- }
- else
- {
- temp1 = sGpuBgConfigs2[2].bg_y >> 0x10;
- temp2 = sGpuBgConfigs2[2].bg_y & 0xFFFF;
- SetGpuReg_ForcedBlank(REG_OFFSET_BG2Y_H, temp1);
- SetGpuReg_ForcedBlank(REG_OFFSET_BG2Y_L, temp2);
- }
- break;
- case 3:
- if (mode == 0)
- {
- temp1 = sGpuBgConfigs2[3].bg_y >> 0x8;
- SetGpuReg_ForcedBlank(REG_OFFSET_BG3VOFS, temp1);
- }
- else if (mode == 2)
- {
- temp1 = sGpuBgConfigs2[3].bg_y >> 0x10;
- temp2 = sGpuBgConfigs2[3].bg_y & 0xFFFF;
- SetGpuReg_ForcedBlank(REG_OFFSET_BG3Y_H, temp1);
- SetGpuReg_ForcedBlank(REG_OFFSET_BG3Y_L, temp2);
- }
- break;
+ }
+ else
+ {
+ temp1 = sGpuBgConfigs2[2].bg_y >> 0x10;
+ temp2 = sGpuBgConfigs2[2].bg_y & 0xFFFF;
+ SetGpuReg_ForcedBlank(REG_OFFSET_BG2Y_H, temp1);
+ SetGpuReg_ForcedBlank(REG_OFFSET_BG2Y_L, temp2);
+ }
+ break;
+ case 3:
+ if (mode == 0)
+ {
+ temp1 = sGpuBgConfigs2[3].bg_y >> 0x8;
+ SetGpuReg_ForcedBlank(REG_OFFSET_BG3VOFS, temp1);
+ }
+ else if (mode == 2)
+ {
+ temp1 = sGpuBgConfigs2[3].bg_y >> 0x10;
+ temp2 = sGpuBgConfigs2[3].bg_y & 0xFFFF;
+ SetGpuReg_ForcedBlank(REG_OFFSET_BG3Y_H, temp1);
+ SetGpuReg_ForcedBlank(REG_OFFSET_BG3Y_L, temp2);
+ }
+ break;
}
return sGpuBgConfigs2[bg].bg_y;
@@ -818,9 +765,10 @@ u32 GetBgY(u8 bg)
{
if (IsInvalidBg32(bg) != FALSE)
return -1;
- if (GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) == 0)
+ else if (GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) == 0)
return -1;
- return sGpuBgConfigs2[bg].bg_y;
+ else
+ return sGpuBgConfigs2[bg].bg_y;
}
void SetBgAffine(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle)
@@ -842,57 +790,57 @@ u8 Unused_AdjustBgMosaic(u8 a1, u8 a2)
switch (a2)
{
- case 0:
- default:
- test1 = a1 & 0xF;
- test2 = a1 >> 0x4;
- break;
- case 1:
- test1 = a1 & 0xF;
- break;
- case 2:
- if ((test1 + a1) > 0xF)
- {
- test1 = 0xF;
- }
- else
- {
- test1 += a1;
- }
- break;
- case 3:
- if ((test1 - a1) < 0)
- {
- test1 = 0x0;
- }
- else
- {
- test1 -= a1;
- }
- break;
- case 4:
- test2 = a1 & 0xF;
- break;
- case 5:
- if ((test2 + a1) > 0xF)
- {
- test2 = 0xF;
- }
- else
- {
- test2 += a1;
- }
- break;
- case 6:
- if ((test2 - a1) < 0)
- {
- test2 = 0x0;
- }
- else
- {
- test2 -= a1;
- }
- break;
+ case 0:
+ default:
+ test1 = a1 & 0xF;
+ test2 = a1 >> 0x4;
+ break;
+ case 1:
+ test1 = a1 & 0xF;
+ break;
+ case 2:
+ if ((test1 + a1) > 0xF)
+ {
+ test1 = 0xF;
+ }
+ else
+ {
+ test1 += a1;
+ }
+ break;
+ case 3:
+ if ((test1 - a1) < 0)
+ {
+ test1 = 0x0;
+ }
+ else
+ {
+ test1 -= a1;
+ }
+ break;
+ case 4:
+ test2 = a1 & 0xF;
+ break;
+ case 5:
+ if ((test2 + a1) > 0xF)
+ {
+ test2 = 0xF;
+ }
+ else
+ {
+ test2 += a1;
+ }
+ break;
+ case 6:
+ if ((test2 - a1) < 0)
+ {
+ test2 = 0x0;
+ }
+ else
+ {
+ test2 -= a1;
+ }
+ break;
}
result |= ((test2 << 0x4) & 0xF0);
@@ -923,9 +871,10 @@ void* GetBgTilemapBuffer(u8 bg)
{
if (IsInvalidBg32(bg) != FALSE)
return NULL;
- if (GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) == 0)
+ else if (GetBgControlAttribute(bg, BG_CTRL_ATTR_VISIBLE) == 0)
return NULL;
- return sGpuBgConfigs2[bg].tilemap;
+ else
+ return sGpuBgConfigs2[bg].tilemap;
}
void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset)
@@ -933,13 +882,9 @@ void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset)
if (IsInvalidBg32(bg) == FALSE && IsTileMapOutsideWram(bg) == FALSE)
{
if (mode != 0)
- {
CpuCopy16(src, (void *)(sGpuBgConfigs2[bg].tilemap + (destOffset * 2)), mode);
- }
else
- {
LZ77UnCompWram(src, (void *)(sGpuBgConfigs2[bg].tilemap + (destOffset * 2)));
- }
}
}
@@ -951,15 +896,15 @@ void CopyBgTilemapBufferToVram(u8 bg)
{
switch (GetBgType(bg))
{
- case 0:
- sizeToLoad = GetBgMetricTextMode(bg, 0) * 0x800;
- break;
- case 1:
- sizeToLoad = GetBgMetricAffineMode(bg, 0) * 0x100;
- break;
- default:
- sizeToLoad = 0;
- break;
+ case 0:
+ sizeToLoad = GetBgMetricTextMode(bg, 0) * 0x800;
+ break;
+ case 1:
+ sizeToLoad = GetBgMetricAffineMode(bg, 0) * 0x100;
+ break;
+ default:
+ sizeToLoad = 0;
+ break;
}
LoadBgVram(bg, sGpuBgConfigs2[bg].tilemap, sizeToLoad, 0, 2);
}
@@ -976,27 +921,27 @@ void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 wi
{
switch (GetBgType(bg))
{
- case 0:
- srcCopy = src;
- for (destY16 = destY; destY16 < (destY + height); destY16++)
+ case 0:
+ srcCopy = src;
+ for (destY16 = destY; destY16 < (destY + height); destY16++)
+ {
+ for (destX16 = destX; destX16 < (destX + width); destX16++)
{
- for (destX16 = destX; destX16 < (destX + width); destX16++)
- {
- ((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *((u16*)srcCopy)++;
- }
+ ((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *((u16*)srcCopy)++;
}
- break;
- case 1:
- srcCopy = src;
- mode = GetBgMetricAffineMode(bg, 0x1);
- for (destY16 = destY; destY16 < (destY + height); destY16++)
+ }
+ break;
+ case 1:
+ srcCopy = src;
+ mode = GetBgMetricAffineMode(bg, 0x1);
+ for (destY16 = destY; destY16 < (destY + height); destY16++)
+ {
+ for (destX16 = destX; destX16 < (destX + width); destX16++)
{
- for (destX16 = destX; destX16 < (destX + width); destX16++)
- {
- ((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *((u8*)srcCopy)++;
- }
+ ((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *((u8*)srcCopy)++;
}
- break;
+ }
+ break;
}
}
}
@@ -1005,295 +950,49 @@ void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u
{
CopyRectToBgTilemapBufferRect(bg, src, 0, 0, rectWidth, rectHeight, destX, destY, rectWidth, rectHeight, palette, 0, 0);
}
-// Skipping for now, it probably uses structs passed by value
-/*
-void CopyRectToBgTilemapBufferRect(u8 bg, const void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2)
-{
- u16 attribute;
- u16 mode;
- u16 mode2;
- void* srcCopy;
- u16 destX16;
- u16 destY16;
+void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 unused, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, s16 palette1, s16 tileOffset)
+{
+ u16 screenWidth, screenHeight, screenSize;
+ u16 var;
+ const void *srcPtr;
+ u16 i, j;
- if (IsInvalidBg32(bg) == FALSE && IsTileMapOutsideWram(bg) == FALSE)
+ if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg))
{
- attribute = GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE);
- mode = GetBgMetricTextMode(bg, 0x1) * 0x20;
- mode2 = GetBgMetricTextMode(bg, 0x2) * 0x20;
+ screenSize = GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE);
+ screenWidth = GetBgMetricTextMode(bg, 0x1) * 0x20;
+ screenHeight = GetBgMetricTextMode(bg, 0x2) * 0x20;
switch (GetBgType(bg))
{
- case 0:
- srcCopy = src;
- for (destY16 = destY; destY16 < (destY + rectHeight); destY16++)
+ case 0:
+ srcPtr = src + ((srcY * srcWidth) + srcX) * 2;
+ for (i = destX; i < (destX + rectWidth); i++)
+ {
+ for (j = srcHeight; j < (srcHeight + destY); j++)
{
- for (destX16 = destX; destX16 < (destX + rectWidth); destX16++)
- {
- CopyTileMapEntry(&((u16*)srcCopy)[(srcY * rectWidth) + srcX], &((u16*)sGpuBgConfigs2[bg].tilemap)[GetTileMapIndexFromCoords(destX16, destY16, attribute, mode, mode2)], palette1, tileOffset, palette2);
- }
+ u16 index = GetTileMapIndexFromCoords(j, i, screenSize, screenWidth, screenHeight);
+ CopyTileMapEntry(srcPtr, sGpuBgConfigs2[bg].tilemap + (index * 2), rectHeight, palette1, tileOffset);
+ srcPtr += 2;
}
- break;
- case 1:
- srcCopy = src;
- mode = GetBgMetricAffineMode(bg, 0x1);
- for (destY16 = destY; destY16 < (destY + rectHeight); destY16++)
+ srcPtr += (srcWidth - destY) * 2;
+ }
+ break;
+ case 1:
+ srcPtr = src + ((srcY * srcWidth) + srcX);
+ var = GetBgMetricAffineMode(bg, 0x1);
+ for (i = destX; i < (destX + rectWidth); i++)
+ {
+ for (j = srcHeight; j < (srcHeight + destY); j++)
{
- for (destX16 = destX; destX16 < (destX + rectWidth); destX16++)
- {
- CopyTileMapEntry(&((u16*)srcCopy)[(srcY * rectWidth) + srcX], &((u16*)sGpuBgConfigs2[bg].tilemap)[GetTileMapIndexFromCoords(destX16, destY16, attribute, mode, mode2)], palette1, tileOffset, palette2);
- }
+ *(u8*)(sGpuBgConfigs2[bg].tilemap + ((var * i) + j)) = *(u8*)(srcPtr) + palette1;
+ srcPtr++;
}
- break;
+ srcPtr += (srcWidth - destY);
+ }
+ break;
}
}
-}*/
-NAKED
-void CopyRectToBgTilemapBufferRect(u8 bg, const void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2)
-{
- asm("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, #0x40\n\
- str r1, [sp, #0x8]\n\
- ldr r1, [sp, #0x60]\n\
- ldr r4, [sp, #0x68]\n\
- ldr r5, [sp, #0x6C]\n\
- ldr r6, [sp, #0x70]\n\
- ldr r7, [sp, #0x74]\n\
- mov r8, r7\n\
- ldr r7, [sp, #0x78]\n\
- mov r9, r7\n\
- ldr r7, [sp, #0x7C]\n\
- mov r10, r7\n\
- ldr r7, [sp, #0x80]\n\
- mov r12, r7\n\
- lsl r0, #24\n\
- lsr r0, #24\n\
- str r0, [sp, #0x4]\n\
- lsl r2, #24\n\
- lsr r2, #24\n\
- str r2, [sp, #0xC]\n\
- lsl r3, #24\n\
- lsr r3, #24\n\
- str r3, [sp, #0x10]\n\
- lsl r1, #24\n\
- lsr r7, r1, #24\n\
- lsl r4, #24\n\
- lsr r4, #24\n\
- str r4, [sp, #0x14]\n\
- lsl r5, #24\n\
- lsr r5, #24\n\
- lsl r6, #24\n\
- lsr r6, #24\n\
- str r6, [sp, #0x18]\n\
- mov r0, r8\n\
- lsl r0, #24\n\
- lsr r4, r0, #24\n\
- mov r1, r9\n\
- lsl r1, #24\n\
- lsr r1, #24\n\
- str r1, [sp, #0x1C]\n\
- mov r2, r10\n\
- lsl r2, #16\n\
- lsr r2, #16\n\
- str r2, [sp, #0x20]\n\
- mov r0, r12\n\
- lsl r0, #16\n\
- lsr r0, #16\n\
- str r0, [sp, #0x24]\n\
- ldr r0, [sp, #0x4]\n\
- bl IsInvalidBg32\n\
- cmp r0, #0\n\
- beq _08002592\n\
- b _080026EE\n\
-_08002592:\n\
- ldr r0, [sp, #0x4]\n\
- bl IsTileMapOutsideWram\n\
- cmp r0, #0\n\
- beq _0800259E\n\
- b _080026EE\n\
-_0800259E:\n\
- ldr r0, [sp, #0x4]\n\
- mov r1, #0x4\n\
- bl GetBgControlAttribute\n\
- lsl r0, #16\n\
- lsr r0, #16\n\
- str r0, [sp, #0x30]\n\
- ldr r0, [sp, #0x4]\n\
- mov r1, #0x1\n\
- bl GetBgMetricTextMode\n\
- lsl r0, #21\n\
- lsr r0, #16\n\
- str r0, [sp, #0x28]\n\
- ldr r0, [sp, #0x4]\n\
- mov r1, #0x2\n\
- bl GetBgMetricTextMode\n\
- lsl r0, #21\n\
- lsr r0, #16\n\
- str r0, [sp, #0x2C]\n\
- ldr r0, [sp, #0x4]\n\
- bl GetBgType\n\
- cmp r0, #0\n\
- beq _080025D8\n\
- cmp r0, #0x1\n\
- beq _08002674\n\
- b _080026EE\n\
-_080025D8:\n\
- ldr r1, [sp, #0x10]\n\
- add r0, r1, #0\n\
- mul r0, r7\n\
- ldr r2, [sp, #0xC]\n\
- add r0, r2\n\
- lsl r0, #1\n\
- ldr r1, [sp, #0x8]\n\
- add r6, r1, r0\n\
- add r0, r5, r4\n\
- cmp r5, r0\n\
- blt _080025F0\n\
- b _080026EE\n\
-_080025F0:\n\
- ldr r2, [sp, #0x18]\n\
- sub r2, r7, r2\n\
- str r2, [sp, #0x34]\n\
- str r0, [sp, #0x38]\n\
-_080025F8:\n\
- ldr r4, [sp, #0x14]\n\
- ldr r7, [sp, #0x18]\n\
- add r0, r4, r7\n\
- add r1, r5, #0x1\n\
- str r1, [sp, #0x3C]\n\
- cmp r4, r0\n\
- bge _0800265A\n\
- ldr r2, [sp, #0x4]\n\
- lsl r0, r2, #4\n\
- ldr r1, =sGpuBgConfigs2+4\n\
- add r0, r1\n\
- mov r10, r0\n\
- ldr r7, [sp, #0x20]\n\
- lsl r7, #16\n\
- mov r9, r7\n\
- ldr r1, [sp, #0x24]\n\
- lsl r0, r1, #16\n\
- asr r0, #16\n\
- mov r8, r0\n\
-_0800261E:\n\
- ldr r2, [sp, #0x2C]\n\
- str r2, [sp]\n\
- add r0, r4, #0\n\
- add r1, r5, #0\n\
- ldr r2, [sp, #0x30]\n\
- ldr r3, [sp, #0x28]\n\
- bl GetTileMapIndexFromCoords\n\
- lsl r0, #16\n\
- lsr r0, #15\n\
- mov r7, r10\n\
- ldr r1, [r7]\n\
- add r1, r0\n\
- mov r0, r8\n\
- str r0, [sp]\n\
- add r0, r6, #0\n\
- ldr r2, [sp, #0x1C]\n\
- mov r7, r9\n\
- asr r3, r7, #16\n\
- bl CopyTileMapEntry\n\
- add r6, #0x2\n\
- add r0, r4, #0x1\n\
- lsl r0, #16\n\
- lsr r4, r0, #16\n\
- ldr r1, [sp, #0x14]\n\
- ldr r2, [sp, #0x18]\n\
- add r0, r1, r2\n\
- cmp r4, r0\n\
- blt _0800261E\n\
-_0800265A:\n\
- ldr r5, [sp, #0x34]\n\
- lsl r0, r5, #1\n\
- add r6, r0\n\
- ldr r7, [sp, #0x3C]\n\
- lsl r0, r7, #16\n\
- lsr r5, r0, #16\n\
- ldr r0, [sp, #0x38]\n\
- cmp r5, r0\n\
- blt _080025F8\n\
- b _080026EE\n\
- .pool\n\
-_08002674:\n\
- ldr r1, [sp, #0x10]\n\
- add r0, r1, #0\n\
- mul r0, r7\n\
- ldr r2, [sp, #0xC]\n\
- add r0, r2\n\
- ldr r1, [sp, #0x8]\n\
- add r6, r1, r0\n\
- ldr r0, [sp, #0x4]\n\
- mov r1, #0x1\n\
- bl GetBgMetricAffineMode\n\
- lsl r0, #16\n\
- lsr r0, #16\n\
- mov r9, r0\n\
- add r0, r5, r4\n\
- cmp r5, r0\n\
- bge _080026EE\n\
- ldr r2, [sp, #0x18]\n\
- sub r2, r7, r2\n\
- str r2, [sp, #0x34]\n\
- str r0, [sp, #0x38]\n\
- ldr r7, =sGpuBgConfigs2+4\n\
- mov r10, r7\n\
- ldr r0, [sp, #0x4]\n\
- lsl r0, #4\n\
- mov r8, r0\n\
-_080026A8:\n\
- ldr r4, [sp, #0x14]\n\
- ldr r1, [sp, #0x18]\n\
- add r0, r4, r1\n\
- add r2, r5, #0x1\n\
- str r2, [sp, #0x3C]\n\
- cmp r4, r0\n\
- bge _080026DE\n\
- mov r3, r8\n\
- add r3, r10\n\
- mov r7, r9\n\
- mul r7, r5\n\
- mov r12, r7\n\
- add r2, r0, #0\n\
-_080026C2:\n\
- ldr r1, [r3]\n\
- mov r5, r12\n\
- add r0, r5, r4\n\
- add r1, r0\n\
- ldrb r0, [r6]\n\
- ldr r7, [sp, #0x20]\n\
- add r0, r7\n\
- strb r0, [r1]\n\
- add r6, #0x1\n\
- add r0, r4, #0x1\n\
- lsl r0, #16\n\
- lsr r4, r0, #16\n\
- cmp r4, r2\n\
- blt _080026C2\n\
-_080026DE:\n\
- ldr r0, [sp, #0x34]\n\
- add r6, r0\n\
- ldr r1, [sp, #0x3C]\n\
- lsl r0, r1, #16\n\
- lsr r5, r0, #16\n\
- ldr r2, [sp, #0x38]\n\
- cmp r5, r2\n\
- blt _080026A8\n\
-_080026EE:\n\
- add sp, #0x40\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\
- .pool\n");
}
void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height)
@@ -1384,42 +1083,42 @@ u16 GetBgMetricTextMode(u8 bg, u8 whichMetric)
switch (whichMetric)
{
+ case 0:
+ switch (attribute)
+ {
case 0:
- switch (attribute)
- {
- case 0:
- return 1;
- case 1:
- case 2:
- return 2;
- case 3:
- return 4;
- }
- break;
+ return 1;
case 1:
- switch (attribute)
- {
- case 0:
- return 1;
- case 1:
- return 2;
- case 2:
- return 1;
- case 3:
- return 2;
- }
- break;
case 2:
- switch (attribute)
- {
- case 0:
- case 1:
- return 1;
- case 2:
- case 3:
- return 2;
- }
- break;
+ return 2;
+ case 3:
+ return 4;
+ }
+ break;
+ case 1:
+ switch (attribute)
+ {
+ case 0:
+ return 1;
+ case 1:
+ return 2;
+ case 2:
+ return 1;
+ case 3:
+ return 2;
+ }
+ break;
+ case 2:
+ switch (attribute)
+ {
+ case 0:
+ case 1:
+ return 1;
+ case 2:
+ case 3:
+ return 2;
+ }
+ break;
}
return 0;
}
@@ -1432,22 +1131,22 @@ u32 GetBgMetricAffineMode(u8 bg, u8 whichMetric)
switch (whichMetric)
{
+ case 0:
+ switch (attribute)
+ {
case 0:
- switch (attribute)
- {
- case 0:
- return 0x1;
- case 1:
- return 0x4;
- case 2:
- return 0x10;
- case 3:
- return 0x40;
- }
- break;
+ return 0x1;
case 1:
+ return 0x4;
case 2:
- return 0x10 << attribute;
+ return 0x10;
+ case 3:
+ return 0x40;
+ }
+ break;
+ case 1:
+ case 2:
+ return 0x10 << attribute;
}
return 0;
}
@@ -1459,44 +1158,45 @@ u32 GetTileMapIndexFromCoords(s32 x, s32 y, s32 screenSize, u32 screenWidth, u32
switch (screenSize)
{
- case 0:
- case 2:
- break;
- case 3:
- if (y >= 0x20)
- y += 0x20;
- case 1:
- if (x >= 0x20)
- {
- x -= 0x20;
- y += 0x20;
- }
+ case 0:
+ case 2:
+ break;
+ case 3:
+ if (y >= 0x20)
+ y += 0x20;
+ case 1:
+ if (x >= 0x20)
+ {
+ x -= 0x20;
+ y += 0x20;
+ }
+ break;
}
return (y * 0x20) + x;
}
#ifdef NONMATCHING // This one has some weird switch statement cases that refuse to cooperate
-void CopyTileMapEntry(u16 *src, u16 *dest, s32 palette1, u32 tileOffset, u32 palette2)
+void CopyTileMapEntry(const u16 *src, u16 *dest, s32 palette1, s32 tileOffset, s32 palette2)
{
- u16 test;
+ u16 var;
switch (palette1)
{
- default:
- if (palette1 > 0x10 || palette1 < 0)
- test = *src + tileOffset + (palette2 << 12);
- else
- test = ((*src + tileOffset) & 0xFFF) + ((palette1 + palette2) << 12);
- break;
- case 0x10:
- test = ((*dest & 0xFC00) + (palette2 << 12)) | ((*src + tileOffset) & 0x3FF);
- break;
+ case 0 ... 16:
+ if (palette1 != 16)
+ var = ((*src + tileOffset) & 0xFFF) + ((palette1 + palette2) << 12);
+ else
+ var = ((*dest & 0xFC00) + (palette2 << 12)) | ((*src + tileOffset) & 0x3FF);
+ break;
+ default:
+ var = *src + tileOffset + (palette2 << 12);
+ break;
}
- *dest = test;
+ *dest = var;
}
#else
NAKED
-void CopyTileMapEntry(u16 *src, u16 *dest, s32 palette1, u32 tileOffset, u32 palette2)
+void CopyTileMapEntry(const u16 *src, u16 *dest, s32 palette1, s32 tileOffset, s32 palette2)
{
asm("push {r4-r6,lr}\n\
add r4, r0, #0\n\
@@ -1550,41 +1250,38 @@ _08002B3C:\n\
u32 GetBgType(u8 bg)
{
- u8 mode;
-
- mode = GetBgMode();
-
+ u8 mode = GetBgMode();
switch (bg)
{
+ case 0:
+ case 1:
+ switch (mode)
+ {
case 0:
case 1:
- switch (mode)
- {
- case 0:
- case 1:
- return 0;
- }
- break;
+ return 0;
+ }
+ break;
+ case 2:
+ switch (mode)
+ {
+ case 0:
+ return 0;
+ case 1:
case 2:
- switch (mode)
- {
- case 0:
- return 0;
- case 1:
- case 2:
- return 1;
- }
- break;
- case 3:
- switch (mode)
- {
- case 0:
- return 0;
- case 2:
- return 1;
- }
- break;
+ return 1;
+ }
+ break;
+ case 3:
+ switch (mode)
+ {
+ case 0:
+ return 0;
+ case 2:
+ return 1;
+ }
+ break;
}
return 0xFFFF;
@@ -1594,14 +1291,16 @@ bool32 IsInvalidBg32(u8 bg)
{
if (bg > 3)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
bool32 IsTileMapOutsideWram(u8 bg)
{
if (sGpuBgConfigs2[bg].tilemap > (void*)IWRAM_END)
return TRUE;
- if (sGpuBgConfigs2[bg].tilemap == 0x0)
+ else if (sGpuBgConfigs2[bg].tilemap == NULL)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
diff --git a/src/bike.c b/src/bike.c
index 6ffd479f7..b9d247c5d 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -3,13 +3,13 @@
#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
-#include "constants/flags.h"
#include "global.fieldmap.h"
#include "metatile_behavior.h"
#include "overworld.h"
-#include "constants/songs.h"
#include "sound.h"
+#include "constants/flags.h"
#include "constants/map_types.h"
+#include "constants/songs.h"
extern bool8 gBikeCyclingChallenge;
extern u8 gBikeCollisions;
@@ -18,7 +18,7 @@ extern u8 sub_808B980(u8 direction);
extern u8 sub_808B9BC(u8 direction);
extern u8 sub_808B9A4(u8 direction);
extern u8 sub_808C1B4(u8 direction);
-extern u8 npc_use_some_d2s(u8 direction);
+extern u8 sub_808B9D4(u8 direction);
extern void Overworld_ClearSavedMusic(void);
extern void Overworld_PlaySpecialMapMusic(void);
@@ -575,7 +575,7 @@ static void AcroBikeTransition_Moving(u8 direction)
}
else
{
- PlayerGoSpeed3(direction);
+ PlayerRideWaterCurrent(direction);
}
}
@@ -768,7 +768,7 @@ static void AcroBikeTransition_WheelieLoweringMoving(u8 direction)
PlayerEndWheelie(direction);
return;
}
- npc_use_some_d2s(direction);
+ sub_808B9D4(direction);
}
void Bike_TryAcroBikeHistoryUpdate(u16 newKeys, u16 heldKeys)
@@ -968,7 +968,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);
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index 4765141de..b17ffad33 100644
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -5,6 +5,7 @@
#include "script.h"
#include "sound.h"
#include "task.h"
+#include "constants/field_effects.h"
#include "constants/flags.h"
#include "constants/maps.h"
#include "constants/songs.h"
@@ -431,9 +432,9 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
{
if (FlagGet(FLAG_SYS_BRAILLE_WAIT) != FALSE)
return FALSE;
- if (FlagGet(FLAG_0x002) == FALSE)
+ if (FlagGet(FLAG_TEMP_2) == FALSE)
return FALSE;
- if (FlagGet(FLAG_0x003) == TRUE)
+ if (FlagGet(FLAG_TEMP_3) == TRUE)
return FALSE;
for (i = 0; i < 36; i++)
@@ -474,8 +475,8 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
}
}
- FlagSet(FLAG_0x003);
- FlagClear(FLAG_0x002);
+ FlagSet(FLAG_TEMP_3);
+ FlagClear(FLAG_TEMP_2);
}
return FALSE;
diff --git a/src/bug.c b/src/bug.c
new file mode 100644
index 000000000..59b31b37d
--- /dev/null
+++ b/src/bug.c
@@ -0,0 +1,484 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "gpu_regs.h"
+#include "trig.h"
+#include "constants/rgb.h"
+
+void sub_8110368(struct Sprite *);
+void sub_8110438(struct Sprite *);
+void sub_81104E4(struct Sprite *);
+void sub_81105B4(struct Sprite *);
+void sub_811067C(struct Sprite *);
+void AnimTranslateStinger(struct Sprite *);
+void AnimMissileArc(struct Sprite *);
+void sub_8110994(struct Sprite *);
+static void sub_811057C(struct Sprite *);
+static void sub_8110630(struct Sprite *);
+static void sub_81106A4(struct Sprite *);
+static void sub_8110700(struct Sprite *);
+static void AnimMissileArcStep(struct Sprite *);
+
+const union AffineAnimCmd gUnknown_08596938[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 30, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08596948[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, -99, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08596958[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 94, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08596968[] =
+{
+ gUnknown_08596938,
+ gUnknown_08596948,
+ gUnknown_08596958,
+};
+
+const struct SpriteTemplate gUnknown_08596974 =
+{
+ .tileTag = ANIM_TAG_HORN_HIT_2,
+ .paletteTag = ANIM_TAG_HORN_HIT_2,
+ .oam = &gUnknown_085249F4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08596968,
+ .callback = sub_8110368,
+};
+
+const union AffineAnimCmd gUnknown_0859698C[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -33, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859699C[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 96, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085969AC[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -96, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085969BC[] =
+{
+ gUnknown_0859698C,
+ gUnknown_0859699C,
+ gUnknown_085969AC,
+};
+
+const struct SpriteTemplate gUnknown_085969C8 =
+{
+ .tileTag = ANIM_TAG_NEEDLE,
+ .paletteTag = ANIM_TAG_NEEDLE,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085969BC,
+ .callback = sub_8110438,
+};
+
+const struct SpriteTemplate gUnknown_085969E0 =
+{
+ .tileTag = ANIM_TAG_WEB_THREAD,
+ .paletteTag = ANIM_TAG_WEB_THREAD,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81104E4,
+};
+
+const struct SpriteTemplate gUnknown_085969F8 =
+{
+ .tileTag = ANIM_TAG_STRING,
+ .paletteTag = ANIM_TAG_STRING,
+ .oam = &gUnknown_0852493C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81105B4,
+};
+
+const union AffineAnimCmd gUnknown_08596A10[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x6, 0x6, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08596A28[] =
+{
+ gUnknown_08596A10,
+};
+
+const struct SpriteTemplate gUnknown_08596A2C =
+{
+ .tileTag = ANIM_TAG_SPIDER_WEB,
+ .paletteTag = ANIM_TAG_SPIDER_WEB,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08596A28,
+ .callback = sub_811067C,
+};
+
+const struct SpriteTemplate gLinearStingerSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_NEEDLE,
+ .paletteTag = ANIM_TAG_NEEDLE,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimTranslateStinger,
+};
+
+const struct SpriteTemplate gPinMissileSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_NEEDLE,
+ .paletteTag = ANIM_TAG_NEEDLE,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMissileArc,
+};
+
+const struct SpriteTemplate gIcicleSpearSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_ICICLE_SPEAR,
+ .paletteTag = ANIM_TAG_ICICLE_SPEAR,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMissileArc,
+};
+
+const union AffineAnimCmd gUnknown_08596A8C[] =
+{
+ 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 gUnknown_08596AC4[] =
+{
+ gUnknown_08596A8C,
+};
+
+const struct SpriteTemplate gUnknown_08596AC8 =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08596AC4,
+ .callback = sub_8110994,
+};
+
+void sub_8110368(struct Sprite *sprite)
+{
+ if (IsContest())
+ {
+ StartSpriteAffineAnim(sprite, 2);
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+ else if (!GetBattlerSide(gBattleAnimTarget))
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+
+ sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[4];
+
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_8110438(struct Sprite *sprite)
+{
+ if (IsContest())
+ {
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ StartSpriteAffineAnim(sprite, 2);
+ }
+ else if (!GetBattlerSide(gBattleAnimTarget))
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ }
+
+ sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_81104E4(struct Sprite *sprite)
+{
+ if (IsContest())
+ gBattleAnimArgs[2] /= 2;
+
+ InitAnimSpritePos(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[3] = sprite->pos1.y;
+
+ if (!gBattleAnimArgs[4])
+ {
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ }
+ else
+ {
+ SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]);
+ }
+
+ sub_80A6FD4(sprite);
+ sprite->data[5] = gBattleAnimArgs[3];
+ sprite->callback = sub_811057C;
+}
+
+static void sub_811057C(struct Sprite *sprite)
+{
+ if (TranslateAnimLinear(sprite))
+ {
+ DestroyAnimSprite(sprite);
+ return;
+ }
+
+ sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]);
+ sprite->data[6] = (sprite->data[6] + 13) & 0xFF;
+}
+
+void sub_81105B4(struct Sprite *sprite)
+{
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ if (GetBattlerSide(gBattleAnimAttacker))
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ if (!GetBattlerSide(gBattleAnimTarget))
+ sprite->pos1.y += 8;
+
+ sprite->callback = sub_8110630;
+}
+
+static void sub_8110630(struct Sprite *sprite)
+{
+ if (++sprite->data[0] == 3)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible ^= 1;
+ }
+
+ if (++sprite->data[1] == 51)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_811067C(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
+
+ sprite->data[0] = 16;
+ sprite->callback = sub_81106A4;
+}
+
+static void sub_81106A4(struct Sprite *sprite)
+{
+ if (sprite->data[2] < 20)
+ {
+ sprite->data[2]++;
+ }
+ else if (sprite->data[1]++ & 1)
+ {
+ sprite->data[0]--;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[0], 16 - sprite->data[0]));
+
+ if (sprite->data[0] == 0)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = sub_8110700;
+ }
+ }
+}
+
+static void sub_8110700(struct Sprite *sprite)
+{
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyAnimSprite(sprite);
+}
+
+// Translates a stinger sprite linearly to a destination location. The sprite is
+// initially rotated so that it appears to be traveling in a straight line.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+void AnimTranslateStinger(struct Sprite *sprite)
+{
+ s16 lVarX, lVarY;
+ u16 rot;
+
+ if (IsContest())
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ }
+ else
+ {
+ if (GetBattlerSide(gBattleAnimAttacker))
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+ }
+
+ if (!IsContest() && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
+ {
+ if (GetBattlerPosition(gBattleAnimTarget) == B_POSITION_PLAYER_LEFT
+ || GetBattlerPosition(gBattleAnimTarget) == B_POSITION_OPPONENT_LEFT)
+ {
+ s16 temp1, temp2;
+
+ temp1 = gBattleAnimArgs[2];
+ gBattleAnimArgs[2] = -temp1;
+
+ temp2 = gBattleAnimArgs[0];
+ gBattleAnimArgs[0] = -temp2;
+ }
+ }
+
+ InitAnimSpritePos(sprite, 1);
+
+ lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
+ lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
+ rot += 0xC000;
+ sub_80A73E0(sprite, FALSE, 0x100, 0x100, rot);
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = lVarX;
+ sprite->data[4] = lVarY;
+
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// Rotates sprite and moves it in an arc, so that it appears like a missle or arrow traveling.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+// arg 5: wave amplitude
+void AnimMissileArc(struct Sprite *sprite)
+{
+ InitAnimSpritePos(sprite, 1);
+
+ if (GetBattlerSide(gBattleAnimAttacker))
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ sprite->data[5] = gBattleAnimArgs[5];
+ InitAnimArcTranslation(sprite);
+
+ sprite->callback = AnimMissileArcStep;
+ sprite->invisible = TRUE;
+}
+
+static void AnimMissileArcStep(struct Sprite *sprite)
+{
+ sprite->invisible = FALSE;
+
+ if (TranslateAnimArc(sprite))
+ {
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ s16 tempData[8];
+ u16 *data = sprite->data;
+ u16 x1 = sprite->pos1.x;
+ s16 x2 = sprite->pos2.x;
+ u16 y1 = sprite->pos1.y;
+ s16 y2 = sprite->pos2.y;
+ int i;
+
+ for (i = 0; i < 8; i++)
+ tempData[i] = data[i];
+
+ x2 += x1;
+ y2 += y1;
+
+ if (!TranslateAnimArc(sprite))
+ {
+ u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2,
+ sprite->pos1.y + sprite->pos2.y - y2);
+ rotation += 0xC000;
+ sub_80A73E0(sprite, FALSE, 0x100, 0x100, rotation);
+
+ for (i = 0; i < 8; i++)
+ data[i] = tempData[i];
+ }
+ }
+}
+
+void sub_8110994(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18;
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
+ }
+
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80A67BC;
+}
diff --git a/src/cable_club.c b/src/cable_club.c
index c54df5f24..56154d5bf 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -31,10 +31,10 @@
#include "constants/songs.h"
extern u8 gUnknown_02032298[2];
-extern u8 gUnknown_0203CEF8[];
+extern u8 gSelectedOrderFromParty[];
static const struct WindowTemplate gUnknown_08550594 = {
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 16,
.tilemapTop = 11,
.width = 11,
@@ -358,8 +358,8 @@ static void sub_80B2918(u8 taskId)
sub_800AA04(gFieldLinkPlayerCount);
card = (struct TrainerCard *)gBlockSendBuffer;
TrainerCard_GenerateCardForPlayer(card);
- card->monSpecies[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES, NULL);
- card->monSpecies[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL);
+ card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL);
+ card->monSpecies[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
gTasks[taskId].func = sub_80B2C30;
}
}
@@ -405,8 +405,8 @@ static void sub_80B2A08(u8 taskId)
sub_800AA04(gFieldLinkPlayerCount);
card = (struct TrainerCard *)gBlockSendBuffer;
TrainerCard_GenerateCardForPlayer(card);
- card->monSpecies[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES, NULL);
- card->monSpecies[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL);
+ card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL);
+ card->monSpecies[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
gTasks[taskId].func = sub_80B2C30;
sub_800A4D8(2);
}
@@ -421,7 +421,7 @@ bool32 sub_80B2AF4(u16 *arg0, u16 *arg1)
gStringVar1[0] = EOS;
gStringVar2[0] = EOS;
-
+
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
@@ -800,7 +800,7 @@ static void sub_80B3260(int a0)
gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER;
break;
case 5:
- ReducePlayerPartyToThree();
+ ReducePlayerPartyToSelectedMons();
gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI;
break;
case 9:
@@ -1151,7 +1151,7 @@ static void sub_80B3950(void)
void nullsub_37(void)
{
-
+
}
void sub_80B3968(void)
diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c
index 839a77e4a..72d0daf55 100644
--- a/src/clear_save_data_screen.c
+++ b/src/clear_save_data_screen.c
@@ -10,9 +10,10 @@
#include "bg.h"
#include "text_window.h"
#include "constants/songs.h"
+#include "constants/rgb.h"
-extern u8 gText_ClearAllSaveData[];
-extern u8 gText_ClearingData[];
+extern const u8 gText_ClearAllSaveData[];
+extern const u8 gText_ClearingData[];
static void Task_DoClearSaveDataScreenYesNo(u8);
static void Task_ClearSaveDataScreenYesNoChoice(u8);
@@ -46,7 +47,7 @@ static const struct BgTemplate sClearSaveBgTemplates[2] =
static const struct WindowTemplate sClearSaveTextWindow[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 3,
.tilemapTop = 15,
.width = 26,
@@ -60,7 +61,7 @@ static const struct WindowTemplate sClearSaveTextWindow[] =
static const struct WindowTemplate sClearSaveYesNo[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 3,
.tilemapTop = 2,
.width = 5,
@@ -72,7 +73,7 @@ static const struct WindowTemplate sClearSaveYesNo[] =
void CB2_InitClearSaveDataScreen(void)
{
- if(SetupClearSaveDataScreen())
+ if (SetupClearSaveDataScreen())
CreateTask(Task_DoClearSaveDataScreenYesNo, 0);
}
@@ -86,18 +87,18 @@ static void Task_DoClearSaveDataScreenYesNo(u8 taskId)
static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId)
{
- switch(Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
- FillWindowPixelBuffer(0, 17);
- AddTextPrinterParameterized(0, 1, gText_ClearingData, 0, 1, 0, 0);
- gTasks[taskId].func = Task_ClearSaveData;
- break;
- case 1:
- case -1:
- PlaySE(SE_SELECT);
- DestroyTask(taskId);
- SetMainCallback2(CB2_FadeAndDoReset);
+ case 0:
+ FillWindowPixelBuffer(0, 17);
+ AddTextPrinterParameterized(0, 1, gText_ClearingData, 0, 1, 0, 0);
+ gTasks[taskId].func = Task_ClearSaveData;
+ break;
+ case 1:
+ case -1:
+ PlaySE(SE_SELECT);
+ DestroyTask(taskId);
+ SetMainCallback2(CB2_FadeAndDoReset);
}
}
@@ -125,55 +126,55 @@ static bool8 SetupClearSaveDataScreen(void)
switch(gMain.state)
{
- case 0:
- default:
- SetVBlankCallback(NULL);
- SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG0HOFS, 0);
- SetGpuReg(REG_OFFSET_BG0VOFS, 0);
- SetGpuReg(REG_OFFSET_BG3HOFS, 0);
- SetGpuReg(REG_OFFSET_BG3VOFS, 0);
- SetGpuReg(REG_OFFSET_WIN0H, 0);
- SetGpuReg(REG_OFFSET_WIN0V, 0);
- SetGpuReg(REG_OFFSET_WININ, 0);
- SetGpuReg(REG_OFFSET_WINOUT, 0);
- SetGpuReg(REG_OFFSET_BLDCNT, 0);
- SetGpuReg(REG_OFFSET_BLDALPHA, 0);
- SetGpuReg(REG_OFFSET_BLDY, 0);
- DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
- DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
- DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
- ResetPaletteFade();
- gPlttBufferUnfaded[0] = 0x7fff;
- gPlttBufferFaded[0] = 0x7fff;
- gPlttBufferUnfaded[1] = 0x3945;
- gPlttBufferFaded[1] = 0x3945;
- for (i = 0; i < 0x10; i++)
- ((u16 *)(VRAM + 0x20))[i] = 0x1111;
-
- for (i = 0; i < 0x400; i++)
- ((u16 *)(VRAM + 0xF000))[i] = 0x0001;
- ResetTasks();
- ResetSpriteData();
- ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sClearSaveBgTemplates, ARRAY_COUNT(sClearSaveBgTemplates));
- SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
- ShowBg(0);
- ShowBg(3);
- SetGpuReg(REG_OFFSET_BLDCNT, 0);
- InitClearSaveDataScreenWindows();
- BeginNormalPaletteFade(0x0000FFFF, 0, 0x10, 0, 0xFFFF);
- EnableInterrupts(1);
- SetVBlankCallback(VBlankCB);
- gMain.state = 1;
- break;
- case 1:
- UpdatePaletteFade();
- if(!gPaletteFade.active)
- {
- SetMainCallback2(MainCB);
- return TRUE;
- }
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
+ DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
+ ResetPaletteFade();
+ gPlttBufferUnfaded[0] = RGB_WHITE;
+ gPlttBufferFaded[0] = RGB_WHITE;
+ gPlttBufferUnfaded[1] = RGB(5, 10, 14);
+ gPlttBufferFaded[1] = RGB(5, 10, 14);
+ for (i = 0; i < 0x10; i++)
+ ((u16 *)(VRAM + 0x20))[i] = 0x1111;
+
+ for (i = 0; i < 0x400; i++)
+ ((u16 *)(VRAM + 0xF000))[i] = 0x0001;
+ ResetTasks();
+ ResetSpriteData();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sClearSaveBgTemplates, ARRAY_COUNT(sClearSaveBgTemplates));
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ShowBg(0);
+ ShowBg(3);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ InitClearSaveDataScreenWindows();
+ BeginNormalPaletteFade(0x0000FFFF, 0, 0x10, 0, 0xFFFF);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ SetVBlankCallback(VBlankCB);
+ gMain.state = 1;
+ break;
+ case 1:
+ UpdatePaletteFade();
+ if(!gPaletteFade.active)
+ {
+ SetMainCallback2(MainCB);
+ return TRUE;
+ }
}
return FALSE;
}
@@ -182,18 +183,19 @@ static void CB2_FadeAndDoReset(void)
{
switch(gMain.state)
{
- case 0:
- default:
- BeginNormalPaletteFade(0x0000FFFF, 0, 0, 0x10, 0xFFFF);
- gMain.state = 1;
- break;
- case 1:
- UpdatePaletteFade();
- if(!gPaletteFade.active)
- {
- FreeAllWindowBuffers();
- DoSoftReset();
- }
+ case 0:
+ default:
+ BeginNormalPaletteFade(0x0000FFFF, 0, 0, 0x10, RGB_WHITEALPHA);
+ gMain.state = 1;
+ break;
+ case 1:
+ UpdatePaletteFade();
+ if(!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ DoSoftReset();
+ }
+ break;
}
}
diff --git a/src/contest.c b/src/contest.c
index 473f77f9c..0c3a041b0 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -193,24 +193,6 @@ EWRAM_DATA struct ContestWinner gUnknown_02039F3C = {0};
u32 gContestRngValue;
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
-extern u16 gBattle_BG1_X;
-extern s16 gBattle_BG1_Y;
-extern u16 gBattle_BG2_X;
-extern u16 gBattle_BG2_Y;
-extern u16 gBattle_BG3_X;
-extern u16 gBattle_BG3_Y;
-extern u16 gBattle_WIN0H;
-extern u16 gBattle_WIN0V;
-extern u16 gBattle_WIN1H;
-extern u16 gBattle_WIN1V;
-
-extern const u8 gContestMiscGfx[];
-extern const u8 gContestAudienceGfx[];
-extern const u8 gUnknown_08C16FA8[];
-extern const u8 gUnknown_08C16E90[];
-extern const u8 gUnknown_08C17170[];
extern const u16 gUnknown_08587C30[];
extern const struct BgTemplate gUnknown_08587F34[4];
extern const struct WindowTemplate gUnknown_08587F44[];
@@ -316,11 +298,11 @@ void sub_80D77E4(void)
DeactivateAllTextPrinters();
if (gIsLinkContest & 1)
{
- gTextFlags.flag_0 = FALSE;
+ gTextFlags.canABSpeedUpPrint = FALSE;
}
else
{
- gTextFlags.flag_0 = TRUE;
+ gTextFlags.canABSpeedUpPrint = TRUE;
}
}
@@ -643,7 +625,8 @@ void sub_80D8108(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 1:
- if ((gBattle_BG1_Y += 7) <= 160)
+ (s16)gBattle_BG1_Y += 7;
+ if ((s16)gBattle_BG1_Y <= 160)
break;
gTasks[taskId].data[0]++;
break;
@@ -1920,9 +1903,9 @@ void sub_80DA6B4(u8 taskId)
void sub_80DA700(u8 taskId)
{
gBattle_BG1_Y -= 7;
- if (gBattle_BG1_Y < 0)
+ if ((s16)gBattle_BG1_Y < 0)
gBattle_BG1_Y = 0;
- if (*(u16 *)&gBattle_BG1_Y == 0) // Why cast?
+ if (gBattle_BG1_Y == 0) // Why cast?
{
gTasks[taskId].func = sub_80DA740;
gTasks[taskId].data[0] = 0;
diff --git a/src/contest_ai.c b/src/contest_ai.c
index 3324ddf87..1342ea102 100644
--- a/src/contest_ai.c
+++ b/src/contest_ai.c
@@ -4,8 +4,6 @@
#include "contest_ai.h"
#include "contest_effect.h"
-extern u16 gContestMonConditions[];
-
extern const u8 *gAIScriptPtr;
extern const u8 *gContestAIs[];
diff --git a/src/contest_painting.c b/src/contest_painting.c
new file mode 100644
index 000000000..7950b7cac
--- /dev/null
+++ b/src/contest_painting.c
@@ -0,0 +1,8 @@
+#include "global.h"
+
+// IWRAM bss
+IWRAM_DATA u8 gUnknown_030011F0;
+IWRAM_DATA u16 gUnknown_030011F2;
+IWRAM_DATA u16 gUnknown_030011F4;
+IWRAM_DATA u8 gUnknown_030011F6;
+IWRAM_DATA u8 gUnknown_030011F7;
diff --git a/src/credits.c b/src/credits.c
index 981b60a47..df17ec70b 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -161,7 +161,7 @@ static const u16 gUnknown_085E56F0[][16] =
INCBIN_U16("graphics/credits/credits_4.gbapal"),
};
-static const u8 gCreditsCopyrightEnd_Gfx[] = INCBIN_U8("graphics/credits/the_end_copyright.4bpp.lz");
+static const u32 gCreditsCopyrightEnd_Gfx[] = INCBIN_U32("graphics/credits/the_end_copyright.4bpp.lz");
static void sub_81772B8(struct Sprite *sprite);
@@ -949,7 +949,7 @@ static const struct BgTemplate gUnknown_085E6F68[] =
static const struct WindowTemplate gUnknown_085E6F6C[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 0,
.tilemapTop = 9,
.width = 30,
@@ -1142,7 +1142,7 @@ static void sub_81754DC(void)
{
RunTasks();
AnimateSprites();
-
+
if ((gMain.heldKeys & B_BUTTON)
&& gHasHallOfFameRecords != 0
&& gTasks[gUnknown_0203BCE2].func == sub_8175774)
@@ -1182,9 +1182,9 @@ static void sub_81755BC(const u8 *string, u8 y, u8 a2)
{
u8 x;
u8 color[3];
-
+
color[0] = 0;
-
+
if (a2 == 1)
{
color[1] = 3;
@@ -1195,7 +1195,7 @@ static void sub_81755BC(const u8 *string, u8 y, u8 a2)
color[1] = 1;
color[2] = 2;
}
-
+
x = GetStringCenterAlignXOffsetWithLetterSpacing(1, string, 0xF0, 1);
AddTextPrinterParameterized4(0, 1, x, y, 1, 0, color, -1, string);
}
@@ -1230,7 +1230,7 @@ void sub_8175620(void)
gTasks[taskIdC].data[TDC_0] = 40;
SetGpuReg(REG_OFFSET_BG0VOFS, 0xFFFC);
-
+
taskIdB = CreateTask(sub_8175DA0, 0);
gTasks[taskIdB].data[TDB_TASK_A_ID] = taskIdA;
@@ -1343,8 +1343,8 @@ static void sub_81758E4(u8 taskIdA)
ResetAllPicSprites();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
- LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM);
- LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800));
+ LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM);
+ LZ77UnCompVram(gBirchGrassTilemap, (void *)(VRAM + 0x3800));
LoadPalette(gBirchBagGrassPal[0] + 1, 1, 31 * 2);
for (i = 0; i < 0x800; i++)
@@ -1546,9 +1546,9 @@ static void sub_8175DA0(u8 taskIdB)
{
for (i = 0; i < 5; i++)
sub_81755BC(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 5 + i * 16, gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->var_1);
-
+
CopyWindowToVram(0, 2);
-
+
gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1;
gTasks[taskIdB].data[TDB_0] += 1;
diff --git a/src/dark.c b/src/dark.c
new file mode 100644
index 000000000..d4a4f0b8a
--- /dev/null
+++ b/src/dark.c
@@ -0,0 +1,169 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_81138D4(struct Sprite *);
+extern void sub_81139DC(struct Sprite *);
+extern void sub_8113A90(struct Sprite *);
+extern void sub_81144BC(struct Sprite *);
+
+const struct SpriteTemplate gUnknown_08596FC8 =
+{
+ .tileTag = ANIM_TAG_TIED_BAG,
+ .paletteTag = ANIM_TAG_TIED_BAG,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81138D4,
+};
+
+const union AffineAnimCmd gUnknown_08596FE0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08596FF0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 32, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08597000[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 64, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08597010[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 96, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08597020[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -128, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08597030[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -96, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08597040[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -64, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08597050[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -32, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08597060[] =
+{
+ gUnknown_08596FE0,
+ gUnknown_08596FF0,
+ gUnknown_08597000,
+ gUnknown_08597010,
+ gUnknown_08597020,
+ gUnknown_08597030,
+ gUnknown_08597040,
+ gUnknown_08597050,
+};
+
+const struct SpriteTemplate gUnknown_08597080 =
+{
+ .tileTag = ANIM_TAG_SHARP_TEETH,
+ .paletteTag = ANIM_TAG_SHARP_TEETH,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597060,
+ .callback = sub_81139DC,
+};
+
+const struct SpriteTemplate gUnknown_08597098 =
+{
+ .tileTag = ANIM_TAG_CLAMP,
+ .paletteTag = ANIM_TAG_CLAMP,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597060,
+ .callback = sub_81139DC,
+};
+
+const union AffineAnimCmd gUnknown_085970B0[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, 80, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085970C8[] =
+{
+ AFFINEANIMCMD_FRAME(0xC0, 0xC0, -80, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085970E0[] =
+{
+ gUnknown_085970B0,
+ gUnknown_085970C8,
+};
+
+const struct SpriteTemplate gUnknown_085970E8 =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085970E0,
+ .callback = sub_8113A90,
+};
+
+const union AnimCmd gUnknown_08597100[] =
+{
+ 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 gUnknown_08597118[] =
+{
+ 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 gUnknown_08597130[] =
+{
+ gUnknown_08597100,
+ gUnknown_08597118,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8597138 =
+{
+ .tileTag = ANIM_TAG_CLAW_SLASH,
+ .paletteTag = ANIM_TAG_CLAW_SLASH,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08597130,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81144BC,
+};
diff --git a/src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h b/src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h
new file mode 100644
index 000000000..108b3a3b0
--- /dev/null
+++ b/src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h
@@ -0,0 +1,1063 @@
+static const struct PyramidWildMon sLevel50WildMons_Round1[] =
+{
+ {
+ .species = SPECIES_PLUSLE,
+ .lvl = 35,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_SPARK, MOVE_ENCORE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MINUN,
+ .lvl = 35,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_PIKACHU,
+ .lvl = 37,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_SLAM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ELECTABUZZ,
+ .lvl = 37,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_PUNCH, MOVE_SWIFT, MOVE_SCREECH, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_VILEPLUME,
+ .lvl = 39,
+ .abilityBit = 2,
+ .moves = {MOVE_STUN_SPORE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MANECTRIC,
+ .lvl = 39,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_QUICK_ATTACK, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_BRELOOM,
+ .lvl = 40,
+ .abilityBit = 2,
+ .moves = {MOVE_STUN_SPORE, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_MACH_PUNCH}
+ },
+ {
+ .species = SPECIES_JOLTEON,
+ .lvl = 40,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PIN_MISSILE, MOVE_QUICK_ATTACK}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round2[] =
+{
+ {
+ .species = SPECIES_GULPIN,
+ .lvl = 36,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_SLUDGE, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ROSELIA,
+ .lvl = 36,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_MAGICAL_LEAF, MOVE_PETAL_DANCE}
+ },
+ {
+ .species = SPECIES_BUTTERFREE,
+ .lvl = 38,
+ .abilityBit = 2,
+ .moves = {MOVE_POISON_POWDER, MOVE_GUST, MOVE_PSYBEAM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SEVIPER,
+ .lvl = 38,
+ .abilityBit = 2,
+ .moves = {MOVE_POISON_FANG, MOVE_SWAGGER, MOVE_CRUNCH, MOVE_POISON_TAIL}
+ },
+ {
+ .species = SPECIES_SKARMORY,
+ .lvl = 40,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_FLY, MOVE_STEEL_WING, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_LUDICOLO,
+ .lvl = 40,
+ .abilityBit = 1,
+ .moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_DIVE, MOVE_RAIN_DANCE}
+ },
+ {
+ .species = SPECIES_CROBAT,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_BITE}
+ },
+ {
+ .species = SPECIES_GENGAR,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_SHADOW_PUNCH, MOVE_NIGHT_SHADE, MOVE_NONE}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round3[] =
+{
+ {
+ .species = SPECIES_GROWLITHE,
+ .lvl = 37,
+ .abilityBit = 2,
+ .moves = {MOVE_FLAME_WHEEL, MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_VULPIX,
+ .lvl = 37,
+ .abilityBit = 2,
+ .moves = {MOVE_WILL_O_WISP, MOVE_FLAMETHROWER, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MAGCARGO,
+ .lvl = 39,
+ .abilityBit = 1,
+ .moves = {MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_NINETALES,
+ .lvl = 39,
+ .abilityBit = 2,
+ .moves = {MOVE_WILL_O_WISP, MOVE_QUICK_ATTACK, MOVE_FLAMETHROWER, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MEDICHAM,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_FIRE_PUNCH, MOVE_HI_JUMP_KICK, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_WEEZING,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_WILL_O_WISP, MOVE_FLAMETHROWER, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_DUSCLOPS,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_SHADOW_PUNCH}
+ },
+ {
+ .species = SPECIES_HOUNDOOM,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_SOLAR_BEAM, MOVE_OVERHEAT}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round4[] =
+{
+ {
+ .species = SPECIES_DUNSPARCE,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_SPITE, MOVE_TOXIC, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_BANETTE,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_NIGHT_SHADE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MISDREAVUS,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_GRUDGE, MOVE_SPITE, MOVE_SHADOW_BALL, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_NINETALES,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_OVERHEAT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ABSOL,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_BITE, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_DUSCLOPS,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_WILL_O_WISP, MOVE_PROTECT, MOVE_TOXIC, MOVE_SHADOW_BALL}
+ },
+ {
+ .species = SPECIES_SHEDINJA,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_GRUDGE, MOVE_TOXIC, MOVE_SPITE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_GENGAR,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_GRUDGE, MOVE_SPITE, MOVE_NIGHT_SHADE, MOVE_NONE}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round5[] =
+{
+ {
+ .species = SPECIES_HAUNTER,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_NIGHT_SHADE, MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_CHIMECHO,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_TOXIC, MOVE_PSYCHIC, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_SOLROCK,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FIRE_BLAST, MOVE_TOXIC}
+ },
+ {
+ .species = SPECIES_MISDREAVUS,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_SPITE, MOVE_SHADOW_BALL, MOVE_PAIN_SPLIT}
+ },
+ {
+ .species = SPECIES_CLAYDOL,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SELF_DESTRUCT, MOVE_PSYCHIC}
+ },
+ {
+ .species = SPECIES_WEEZING,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_SELF_DESTRUCT, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_FLYGON,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_DRAGON_CLAW, MOVE_DRAGON_BREATH}
+ },
+ {
+ .species = SPECIES_GENGAR,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_NIGHT_SHADE}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round6[] =
+{
+ {
+ .species = SPECIES_DIGLETT,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_SLASH, MOVE_DIG, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_TRAPINCH,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_WYNAUT,
+ .lvl = 42,
+ .abilityBit = 0,
+ .moves = {MOVE_DESTINY_BOND, MOVE_SPLASH, MOVE_COUNTER, MOVE_MIRROR_COAT}
+ },
+ {
+ .species = SPECIES_DIGLETT,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_MAGNITUDE, MOVE_TOXIC}
+ },
+ {
+ .species = SPECIES_TRAPINCH,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_WYNAUT,
+ .lvl = 44,
+ .abilityBit = 0,
+ .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_WOBBUFFET,
+ .lvl = 45,
+ .abilityBit = 0,
+ .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_DUGTRIO,
+ .lvl = 45,
+ .abilityBit = 1,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_PROTECT}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round7[] =
+{
+ {
+ .species = SPECIES_GLALIE,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_ICE_BEAM, MOVE_CRUNCH, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SNEASEL,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_ICE_BEAM, MOVE_CRUSH_CLAW, MOVE_SPITE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_DEWGONG,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_SURF, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_PILOSWINE,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_TOXIC, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_JYNX,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_BLIZZARD, MOVE_LOVELY_KISS, MOVE_PSYCHIC, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_CLOYSTER,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_WALREIN,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_BLIZZARD, MOVE_BODY_SLAM, MOVE_SURF, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_LAPRAS,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_SING, MOVE_BODY_SLAM, MOVE_ICE_BEAM, MOVE_PSYCHIC}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round8[] =
+{
+ {
+ .species = SPECIES_WEEZING,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_SELF_DESTRUCT, MOVE_SLUDGE_BOMB, MOVE_FIRE_BLAST, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ELECTRODE,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_SELF_DESTRUCT, MOVE_THUNDERBOLT, MOVE_ROLLOUT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_GENGAR,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_DESTINY_BOND, MOVE_LICK, MOVE_SHADOW_BALL, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_GOLEM,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_SELF_DESTRUCT, MOVE_PROTECT, MOVE_EARTHQUAKE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_PINECO,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_DOUBLE_EDGE, MOVE_GIGA_DRAIN, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SOLROCK,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_FIRE_SPIN, MOVE_PSYWAVE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_FORRETRESS,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_TOXIC, MOVE_ROCK_SLIDE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SHIFTRY,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_PROTECT}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round9[] =
+{
+ {
+ .species = SPECIES_WOBBUFFET,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_SAFEGUARD, MOVE_DESTINY_BOND}
+ },
+ {
+ .species = SPECIES_METANG,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_TOXIC, MOVE_SLUDGE_BOMB, MOVE_PSYCHIC}
+ },
+ {
+ .species = SPECIES_EXEGGUTOR,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_EGG_BOMB, MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SLOWKING,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_SHADOW_BALL, MOVE_SURF, MOVE_ICE_BEAM, MOVE_FLAMETHROWER}
+ },
+ {
+ .species = SPECIES_XATU,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_CONFUSE_RAY, MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_STEEL_WING}
+ },
+ {
+ .species = SPECIES_ALAKAZAM,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_TOXIC}
+ },
+ {
+ .species = SPECIES_STARMIE,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_ICE_BEAM}
+ },
+ {
+ .species = SPECIES_ESPEON,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_DIG, MOVE_SHADOW_BALL, MOVE_NONE}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round10[] =
+{
+ {
+ .species = SPECIES_GOLEM,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_SELF_DESTRUCT, MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_STEELIX,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_IRON_TAIL, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_OMASTAR,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_SURF, MOVE_MUD_SHOT, MOVE_ANCIENT_POWER, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_LUNATONE,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPNOSIS, MOVE_PSYWAVE, MOVE_EXPLOSION, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SHUCKLE,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_WRAP, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ARMALDO,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_ANCIENT_POWER, MOVE_PROTECT, MOVE_AERIAL_ACE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_CRADILY,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_AERODACTYL,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPER_BEAM, MOVE_ROCK_SLIDE, MOVE_BITE, MOVE_NONE}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round11[] =
+{
+ {
+ .species = SPECIES_POLIWRATH,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_SUBMISSION, MOVE_FOCUS_PUNCH, MOVE_SURF, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_HARIYAMA,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_FAKE_OUT, MOVE_SURF, MOVE_FOCUS_PUNCH, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_BRELOOM,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_SPORE, MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MEDICHAM,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_FOCUS_PUNCH}
+ },
+ {
+ .species = SPECIES_HITMONCHAN,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_FOCUS_PUNCH}
+ },
+ {
+ .species = SPECIES_HITMONLEE,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_MEGA_KICK, MOVE_FOCUS_PUNCH, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_HERACROSS,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_FOCUS_PUNCH, MOVE_ROCK_SLIDE}
+ },
+ {
+ .species = SPECIES_MACHAMP,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_FOCUS_PUNCH, MOVE_SEISMIC_TOSS}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round12[] =
+{
+ {
+ .species = SPECIES_QUAGSIRE,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_RAIN_DANCE, MOVE_SURF, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_TROPIUS,
+ .lvl = 41,
+ .abilityBit = 2,
+ .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_PUPITAR,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_SANDSTORM, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_LAPRAS,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_HAIL, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_CACTURNE,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_SANDSTORM, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_FLAREON,
+ .lvl = 44,
+ .abilityBit = 2,
+ .moves = {MOVE_SUNNY_DAY, MOVE_FLAMETHROWER, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_WALREIN,
+ .lvl = 45,
+ .abilityBit = 2,
+ .moves = {MOVE_HAIL, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_GYARADOS,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_RAIN_DANCE, MOVE_THUNDER, MOVE_HYDRO_PUMP, MOVE_NONE}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round13[] =
+{
+ {
+ .species = SPECIES_PINECO,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SHUCKLE,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_VENOMOTH,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_SILVER_WIND, MOVE_POISON_POWDER, MOVE_SLEEP_POWDER, MOVE_PSYCHIC}
+ },
+ {
+ .species = SPECIES_SCIZOR,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_QUICK_ATTACK, MOVE_METAL_CLAW, MOVE_FURY_CUTTER, MOVE_PURSUIT}
+ },
+ {
+ .species = SPECIES_HERACROSS,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE}
+ },
+ {
+ .species = SPECIES_FORRETRESS,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ARMALDO,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_WATER_PULSE, MOVE_PROTECT, MOVE_ROCK_SLIDE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SHEDINJA,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_SHADOW_BALL, MOVE_TOXIC, MOVE_SPITE, MOVE_GRUDGE}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round14[] =
+{
+ {
+ .species = SPECIES_SABLEYE,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_NIGHT_SHADE, MOVE_PSYCHIC, MOVE_AERIAL_ACE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SNEASEL,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_ICE_BEAM, MOVE_TAUNT, MOVE_FAINT_ATTACK, MOVE_QUICK_ATTACK}
+ },
+ {
+ .species = SPECIES_CRAWDAUNT,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_CRABHAMMER, MOVE_ICE_BEAM, MOVE_SURF, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SHIFTRY,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_GIGA_DRAIN}
+ },
+ {
+ .species = SPECIES_CACTURNE,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_NEEDLE_ARM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ABSOL,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_BITE, MOVE_PROTECT, MOVE_SLASH, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_HOUNDOOM,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_OVERHEAT, MOVE_CRUNCH, MOVE_SHADOW_BALL, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_UMBREON,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_IRON_TAIL, MOVE_QUICK_ATTACK}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round15[] =
+{
+ {
+ .species = SPECIES_OCTILLERY,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_OCTAZOOKA, MOVE_ICE_BEAM, MOVE_FIRE_BLAST, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_DEWGONG,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_WATER_PULSE, MOVE_ICE_BEAM, MOVE_HEADBUTT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_PELIPPER,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_PROTECT, MOVE_SUPERSONIC, MOVE_SURF, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_QUAGSIRE,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SURF, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_LUDICOLO,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_TOXIC, MOVE_ICE_BEAM}
+ },
+ {
+ .species = SPECIES_SLOWKING,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_HEADBUTT, MOVE_SWAGGER, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_STARMIE,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_WATER_PULSE, MOVE_THUNDERBOLT, MOVE_CONFUSE_RAY, MOVE_BLIZZARD}
+ },
+ {
+ .species = SPECIES_BLASTOISE,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_BITE, MOVE_ICE_BEAM, MOVE_NONE}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round16[] =
+{
+ {
+ .species = SPECIES_DUSKULL,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_NIGHT_SHADE, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_HAUNTER,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_SPITE, MOVE_HYPNOSIS, MOVE_SHADOW_BALL}
+ },
+ {
+ .species = SPECIES_BANETTE,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_SHADOW_BALL, MOVE_SPITE, MOVE_WILL_O_WISP, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MISDREAVUS,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_PERISH_SONG, MOVE_SPITE, MOVE_MEAN_LOOK, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SABLEYE,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_SHADOW_BALL, MOVE_MEAN_LOOK, MOVE_DIG, MOVE_NIGHT_SHADE}
+ },
+ {
+ .species = SPECIES_DUSCLOPS,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_WILL_O_WISP, MOVE_TOXIC, MOVE_SHADOW_BALL, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SHEDINJA,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_SHADOW_BALL, MOVE_SPITE, MOVE_GRUDGE, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_GENGAR,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_DESTINY_BOND, MOVE_SPITE, MOVE_NIGHT_SHADE}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round17[] =
+{
+ {
+ .species = SPECIES_MAWILE,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_CRUNCH, MOVE_TOXIC, MOVE_ICE_BEAM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MAGNETON,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_STEELIX,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_ROCK_THROW, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SCIZOR,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_METAL_CLAW, MOVE_SLASH, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_FORRETRESS,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_TOXIC, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SKARMORY,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_STEEL_WING, MOVE_TOXIC, MOVE_FLY, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_AGGRON,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_TAKE_DOWN, MOVE_SURF, MOVE_ICE_BEAM}
+ },
+ {
+ .species = SPECIES_METAGROSS,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round18[] =
+{
+ {
+ .species = SPECIES_DRAGONAIR,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_ICE_BEAM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_VIBRAVA,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_CRUNCH, MOVE_STEEL_WING}
+ },
+ {
+ .species = SPECIES_ALTARIA,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_SING, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_FLYGON,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_FIRE_BLAST, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_AERODACTYL,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_CLAW, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_GYARADOS,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_SURF, MOVE_THRASH, MOVE_BITE}
+ },
+ {
+ .species = SPECIES_KINGDRA,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_CHARIZARD,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_FIRE_BLAST, MOVE_IRON_TAIL}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round19[] =
+{
+ {
+ .species = SPECIES_ARCANINE,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_FIRE_BLAST, MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_POLIWRATH,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_RAICHU,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_SLAM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_VAPOREON,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_JOLTEON,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDERBOLT, MOVE_PIN_MISSILE, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_FLAREON,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_NINETALES,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_FLAMETHROWER, MOVE_WILL_O_WISP, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_STARMIE,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_PSYCHIC}
+ }
+};
+
+static const struct PyramidWildMon sLevel50WildMons_Round20[] =
+{
+ {
+ .species = SPECIES_KANGASKHAN,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_SURF, MOVE_DIZZY_PUNCH}
+ },
+ {
+ .species = SPECIES_SWELLOW,
+ .lvl = 42,
+ .abilityBit = 2,
+ .moves = {MOVE_AERIAL_ACE, MOVE_HYPER_BEAM, MOVE_TOXIC, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_URSARING,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_FOCUS_PUNCH, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_PORYGON2,
+ .lvl = 46,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYBEAM, MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_ICE_BEAM}
+ },
+ {
+ .species = SPECIES_TAUROS,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_HYPER_BEAM, MOVE_SURF, MOVE_THUNDERBOLT}
+ },
+ {
+ .species = SPECIES_FEAROW,
+ .lvl = 48,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPER_BEAM, MOVE_FLY, MOVE_MIRROR_MOVE, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_SNORLAX,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPER_BEAM, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE}
+ },
+ {
+ .species = SPECIES_SLAKING,
+ .lvl = 50,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ICE_BEAM}
+ }
+};
+
+static const struct PyramidWildMon *const sLevel50WildMonPointers[] =
+{
+ sLevel50WildMons_Round1,
+ sLevel50WildMons_Round2,
+ sLevel50WildMons_Round3,
+ sLevel50WildMons_Round4,
+ sLevel50WildMons_Round5,
+ sLevel50WildMons_Round6,
+ sLevel50WildMons_Round7,
+ sLevel50WildMons_Round8,
+ sLevel50WildMons_Round9,
+ sLevel50WildMons_Round10,
+ sLevel50WildMons_Round11,
+ sLevel50WildMons_Round12,
+ sLevel50WildMons_Round13,
+ sLevel50WildMons_Round14,
+ sLevel50WildMons_Round15,
+ sLevel50WildMons_Round16,
+ sLevel50WildMons_Round17,
+ sLevel50WildMons_Round18,
+ sLevel50WildMons_Round19,
+ sLevel50WildMons_Round20
+};
diff --git a/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h b/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h
new file mode 100644
index 000000000..10435d767
--- /dev/null
+++ b/src/data/battle_frontier/battle_pyramid_open_level_wild_mons.h
@@ -0,0 +1,1063 @@
+static const struct PyramidWildMon sOpenLevelWildMons_Round1[] =
+{
+ {
+ .species = SPECIES_PLUSLE,
+ .lvl = 15,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_SPARK, MOVE_ENCORE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MINUN,
+ .lvl = 15,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_PIKACHU,
+ .lvl = 13,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_SLAM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ELECTABUZZ,
+ .lvl = 13,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_PUNCH, MOVE_SWIFT, MOVE_SCREECH, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_VILEPLUME,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_STUN_SPORE, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MANECTRIC,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_QUICK_ATTACK, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_BRELOOM,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_STUN_SPORE, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_MACH_PUNCH}
+ },
+ {
+ .species = SPECIES_JOLTEON,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PIN_MISSILE, MOVE_QUICK_ATTACK}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round2[] =
+{
+ {
+ .species = SPECIES_GULPIN,
+ .lvl = 14,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_SLUDGE, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ROSELIA,
+ .lvl = 14,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_MAGICAL_LEAF, MOVE_PETAL_DANCE}
+ },
+ {
+ .species = SPECIES_BUTTERFREE,
+ .lvl = 12,
+ .abilityBit = 2,
+ .moves = {MOVE_POISON_POWDER, MOVE_GUST, MOVE_PSYBEAM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SEVIPER,
+ .lvl = 12,
+ .abilityBit = 2,
+ .moves = {MOVE_POISON_FANG, MOVE_SWAGGER, MOVE_CRUNCH, MOVE_POISON_TAIL}
+ },
+ {
+ .species = SPECIES_SKARMORY,
+ .lvl = 7,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_FLY, MOVE_STEEL_WING, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_LUDICOLO,
+ .lvl = 7,
+ .abilityBit = 1,
+ .moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_DIVE, MOVE_RAIN_DANCE}
+ },
+ {
+ .species = SPECIES_CROBAT,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_BITE}
+ },
+ {
+ .species = SPECIES_GENGAR,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_SHADOW_PUNCH, MOVE_NIGHT_SHADE, MOVE_NONE}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round3[] =
+{
+ {
+ .species = SPECIES_GROWLITHE,
+ .lvl = 13,
+ .abilityBit = 2,
+ .moves = {MOVE_FLAME_WHEEL, MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_VULPIX,
+ .lvl = 13,
+ .abilityBit = 2,
+ .moves = {MOVE_WILL_O_WISP, MOVE_FLAMETHROWER, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MAGCARGO,
+ .lvl = 11,
+ .abilityBit = 1,
+ .moves = {MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_NINETALES,
+ .lvl = 11,
+ .abilityBit = 2,
+ .moves = {MOVE_WILL_O_WISP, MOVE_QUICK_ATTACK, MOVE_FLAMETHROWER, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MEDICHAM,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_FIRE_PUNCH, MOVE_HI_JUMP_KICK, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_WEEZING,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_WILL_O_WISP, MOVE_FLAMETHROWER, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_DUSCLOPS,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_MEAN_LOOK, MOVE_SHADOW_PUNCH}
+ },
+ {
+ .species = SPECIES_HOUNDOOM,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_SOLAR_BEAM, MOVE_OVERHEAT}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round4[] =
+{
+ {
+ .species = SPECIES_DUNSPARCE,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_SPITE, MOVE_TOXIC, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_BANETTE,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_NIGHT_SHADE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MISDREAVUS,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_GRUDGE, MOVE_SPITE, MOVE_SHADOW_BALL, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_NINETALES,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_OVERHEAT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ABSOL,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_BITE, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_DUSCLOPS,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_WILL_O_WISP, MOVE_PROTECT, MOVE_TOXIC, MOVE_SHADOW_BALL}
+ },
+ {
+ .species = SPECIES_SHEDINJA,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_GRUDGE, MOVE_TOXIC, MOVE_SPITE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_GENGAR,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_GRUDGE, MOVE_SPITE, MOVE_NIGHT_SHADE, MOVE_NONE}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round5[] =
+{
+ {
+ .species = SPECIES_HAUNTER,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_NIGHT_SHADE, MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_CHIMECHO,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_TOXIC, MOVE_PSYCHIC, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_SOLROCK,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FIRE_BLAST, MOVE_TOXIC}
+ },
+ {
+ .species = SPECIES_MISDREAVUS,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_SPITE, MOVE_SHADOW_BALL, MOVE_PAIN_SPLIT}
+ },
+ {
+ .species = SPECIES_CLAYDOL,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SELF_DESTRUCT, MOVE_PSYCHIC}
+ },
+ {
+ .species = SPECIES_WEEZING,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_SELF_DESTRUCT, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_FLYGON,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_DRAGON_CLAW, MOVE_DRAGON_BREATH}
+ },
+ {
+ .species = SPECIES_GENGAR,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_NIGHT_SHADE}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round6[] =
+{
+ {
+ .species = SPECIES_DIGLETT,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_SLASH, MOVE_DIG, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_TRAPINCH,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_WYNAUT,
+ .lvl = 8,
+ .abilityBit = 0,
+ .moves = {MOVE_DESTINY_BOND, MOVE_SPLASH, MOVE_COUNTER, MOVE_MIRROR_COAT}
+ },
+ {
+ .species = SPECIES_DIGLETT,
+ .lvl = 8,
+ .abilityBit = 1,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_MAGNITUDE, MOVE_TOXIC}
+ },
+ {
+ .species = SPECIES_TRAPINCH,
+ .lvl = 6,
+ .abilityBit = 1,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_WYNAUT,
+ .lvl = 6,
+ .abilityBit = 0,
+ .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_WOBBUFFET,
+ .lvl = 5,
+ .abilityBit = 0,
+ .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_DESTINY_BOND, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_DUGTRIO,
+ .lvl = 5,
+ .abilityBit = 1,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_PROTECT}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round7[] =
+{
+ {
+ .species = SPECIES_GLALIE,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_ICE_BEAM, MOVE_CRUNCH, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SNEASEL,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_ICE_BEAM, MOVE_CRUSH_CLAW, MOVE_SPITE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_DEWGONG,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_SURF, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_PILOSWINE,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_TOXIC, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_JYNX,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_BLIZZARD, MOVE_LOVELY_KISS, MOVE_PSYCHIC, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_CLOYSTER,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_WALREIN,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_BLIZZARD, MOVE_BODY_SLAM, MOVE_SURF, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_LAPRAS,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_SING, MOVE_BODY_SLAM, MOVE_ICE_BEAM, MOVE_PSYCHIC}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round8[] =
+{
+ {
+ .species = SPECIES_WEEZING,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_SELF_DESTRUCT, MOVE_SLUDGE_BOMB, MOVE_FIRE_BLAST, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ELECTRODE,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_SELF_DESTRUCT, MOVE_THUNDERBOLT, MOVE_ROLLOUT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_GENGAR,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_DESTINY_BOND, MOVE_LICK, MOVE_SHADOW_BALL, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_GOLEM,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_SELF_DESTRUCT, MOVE_PROTECT, MOVE_EARTHQUAKE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_PINECO,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_DOUBLE_EDGE, MOVE_GIGA_DRAIN, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SOLROCK,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_FIRE_SPIN, MOVE_PSYWAVE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_FORRETRESS,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_TOXIC, MOVE_ROCK_SLIDE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SHIFTRY,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_PROTECT}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round9[] =
+{
+ {
+ .species = SPECIES_WOBBUFFET,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_SAFEGUARD, MOVE_DESTINY_BOND}
+ },
+ {
+ .species = SPECIES_METANG,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_TOXIC, MOVE_SLUDGE_BOMB, MOVE_PSYCHIC}
+ },
+ {
+ .species = SPECIES_EXEGGUTOR,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_EGG_BOMB, MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SLOWKING,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_SHADOW_BALL, MOVE_SURF, MOVE_ICE_BEAM, MOVE_FLAMETHROWER}
+ },
+ {
+ .species = SPECIES_XATU,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_CONFUSE_RAY, MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_STEEL_WING}
+ },
+ {
+ .species = SPECIES_ALAKAZAM,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_TOXIC}
+ },
+ {
+ .species = SPECIES_STARMIE,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_ICE_BEAM}
+ },
+ {
+ .species = SPECIES_ESPEON,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_DIG, MOVE_SHADOW_BALL, MOVE_NONE}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round10[] =
+{
+ {
+ .species = SPECIES_GOLEM,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_SELF_DESTRUCT, MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_STEELIX,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_IRON_TAIL, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_OMASTAR,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_SURF, MOVE_MUD_SHOT, MOVE_ANCIENT_POWER, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_LUNATONE,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPNOSIS, MOVE_PSYWAVE, MOVE_EXPLOSION, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SHUCKLE,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_PROTECT, MOVE_WRAP, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ARMALDO,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_ANCIENT_POWER, MOVE_PROTECT, MOVE_AERIAL_ACE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_CRADILY,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_AERODACTYL,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPER_BEAM, MOVE_ROCK_SLIDE, MOVE_BITE, MOVE_NONE}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round11[] =
+{
+ {
+ .species = SPECIES_POLIWRATH,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_SUBMISSION, MOVE_FOCUS_PUNCH, MOVE_SURF, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_HARIYAMA,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_FAKE_OUT, MOVE_SURF, MOVE_FOCUS_PUNCH, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_BRELOOM,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_SPORE, MOVE_FOCUS_PUNCH, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MEDICHAM,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_FOCUS_PUNCH}
+ },
+ {
+ .species = SPECIES_HITMONCHAN,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_FOCUS_PUNCH}
+ },
+ {
+ .species = SPECIES_HITMONLEE,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_MEGA_KICK, MOVE_FOCUS_PUNCH, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_HERACROSS,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_FOCUS_PUNCH, MOVE_ROCK_SLIDE}
+ },
+ {
+ .species = SPECIES_MACHAMP,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_FOCUS_PUNCH, MOVE_SEISMIC_TOSS}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round12[] =
+{
+ {
+ .species = SPECIES_QUAGSIRE,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_RAIN_DANCE, MOVE_SURF, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_TROPIUS,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_PUPITAR,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_SANDSTORM, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_LAPRAS,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_HAIL, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_CACTURNE,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_SANDSTORM, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_FLAREON,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_SUNNY_DAY, MOVE_FLAMETHROWER, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_WALREIN,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_HAIL, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_GYARADOS,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_RAIN_DANCE, MOVE_THUNDER, MOVE_HYDRO_PUMP, MOVE_NONE}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round13[] =
+{
+ {
+ .species = SPECIES_PINECO,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SHUCKLE,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_VENOMOTH,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_SILVER_WIND, MOVE_POISON_POWDER, MOVE_SLEEP_POWDER, MOVE_PSYCHIC}
+ },
+ {
+ .species = SPECIES_SCIZOR,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_QUICK_ATTACK, MOVE_METAL_CLAW, MOVE_FURY_CUTTER, MOVE_PURSUIT}
+ },
+ {
+ .species = SPECIES_HERACROSS,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE}
+ },
+ {
+ .species = SPECIES_FORRETRESS,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ARMALDO,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_WATER_PULSE, MOVE_PROTECT, MOVE_ROCK_SLIDE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SHEDINJA,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_SHADOW_BALL, MOVE_TOXIC, MOVE_SPITE, MOVE_GRUDGE}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round14[] =
+{
+ {
+ .species = SPECIES_SABLEYE,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_NIGHT_SHADE, MOVE_PSYCHIC, MOVE_AERIAL_ACE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SNEASEL,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_ICE_BEAM, MOVE_TAUNT, MOVE_FAINT_ATTACK, MOVE_QUICK_ATTACK}
+ },
+ {
+ .species = SPECIES_CRAWDAUNT,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_CRABHAMMER, MOVE_ICE_BEAM, MOVE_SURF, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SHIFTRY,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_GIGA_DRAIN}
+ },
+ {
+ .species = SPECIES_CACTURNE,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_NEEDLE_ARM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_ABSOL,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_BITE, MOVE_PROTECT, MOVE_SLASH, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_HOUNDOOM,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_OVERHEAT, MOVE_CRUNCH, MOVE_SHADOW_BALL, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_UMBREON,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_IRON_TAIL, MOVE_QUICK_ATTACK}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round15[] =
+{
+ {
+ .species = SPECIES_OCTILLERY,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_OCTAZOOKA, MOVE_ICE_BEAM, MOVE_FIRE_BLAST, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_DEWGONG,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_WATER_PULSE, MOVE_ICE_BEAM, MOVE_HEADBUTT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_PELIPPER,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_PROTECT, MOVE_SUPERSONIC, MOVE_SURF, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_QUAGSIRE,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SURF, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_LUDICOLO,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_TOXIC, MOVE_ICE_BEAM}
+ },
+ {
+ .species = SPECIES_SLOWKING,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_HEADBUTT, MOVE_SWAGGER, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_STARMIE,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_WATER_PULSE, MOVE_THUNDERBOLT, MOVE_CONFUSE_RAY, MOVE_BLIZZARD}
+ },
+ {
+ .species = SPECIES_BLASTOISE,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_BITE, MOVE_ICE_BEAM, MOVE_NONE}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round16[] =
+{
+ {
+ .species = SPECIES_DUSKULL,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_NIGHT_SHADE, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_HAUNTER,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_TOXIC, MOVE_SPITE, MOVE_HYPNOSIS, MOVE_SHADOW_BALL}
+ },
+ {
+ .species = SPECIES_BANETTE,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_SHADOW_BALL, MOVE_SPITE, MOVE_WILL_O_WISP, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MISDREAVUS,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_PERISH_SONG, MOVE_SPITE, MOVE_MEAN_LOOK, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SABLEYE,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_SHADOW_BALL, MOVE_MEAN_LOOK, MOVE_DIG, MOVE_NIGHT_SHADE}
+ },
+ {
+ .species = SPECIES_DUSCLOPS,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_WILL_O_WISP, MOVE_TOXIC, MOVE_SHADOW_BALL, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SHEDINJA,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_SHADOW_BALL, MOVE_SPITE, MOVE_GRUDGE, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_GENGAR,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYCHIC, MOVE_DESTINY_BOND, MOVE_SPITE, MOVE_NIGHT_SHADE}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round17[] =
+{
+ {
+ .species = SPECIES_MAWILE,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_CRUNCH, MOVE_TOXIC, MOVE_ICE_BEAM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_MAGNETON,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_STEELIX,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_ROCK_THROW, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SCIZOR,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_METAL_CLAW, MOVE_SLASH, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_FORRETRESS,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_EXPLOSION, MOVE_TOXIC, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_SKARMORY,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_STEEL_WING, MOVE_TOXIC, MOVE_FLY, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_AGGRON,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_TAKE_DOWN, MOVE_SURF, MOVE_ICE_BEAM}
+ },
+ {
+ .species = SPECIES_METAGROSS,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round18[] =
+{
+ {
+ .species = SPECIES_DRAGONAIR,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER_WAVE, MOVE_TOXIC, MOVE_ICE_BEAM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_VIBRAVA,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_CRUNCH, MOVE_STEEL_WING}
+ },
+ {
+ .species = SPECIES_ALTARIA,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_SING, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_FLYGON,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_FIRE_BLAST, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_AERODACTYL,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_CLAW, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_GYARADOS,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_SURF, MOVE_THRASH, MOVE_BITE}
+ },
+ {
+ .species = SPECIES_KINGDRA,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_CHARIZARD,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_FLAMETHROWER, MOVE_FOCUS_PUNCH, MOVE_FIRE_BLAST, MOVE_IRON_TAIL}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round19[] =
+{
+ {
+ .species = SPECIES_ARCANINE,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_FIRE_BLAST, MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_POLIWRATH,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_RAICHU,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_SLAM, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_VAPOREON,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_JOLTEON,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_THUNDERBOLT, MOVE_PIN_MISSILE, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_FLAREON,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_NONE, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_NINETALES,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_FLAMETHROWER, MOVE_WILL_O_WISP, MOVE_PROTECT, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_STARMIE,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_THUNDERBOLT, MOVE_PSYCHIC}
+ }
+};
+
+static const struct PyramidWildMon sOpenLevelWildMons_Round20[] =
+{
+ {
+ .species = SPECIES_KANGASKHAN,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_SURF, MOVE_DIZZY_PUNCH}
+ },
+ {
+ .species = SPECIES_SWELLOW,
+ .lvl = 10,
+ .abilityBit = 2,
+ .moves = {MOVE_AERIAL_ACE, MOVE_HYPER_BEAM, MOVE_TOXIC, MOVE_NONE}
+ },
+ {
+ .species = SPECIES_URSARING,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_FOCUS_PUNCH, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_PORYGON2,
+ .lvl = 8,
+ .abilityBit = 2,
+ .moves = {MOVE_PSYBEAM, MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_ICE_BEAM}
+ },
+ {
+ .species = SPECIES_TAUROS,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_EARTHQUAKE, MOVE_HYPER_BEAM, MOVE_SURF, MOVE_THUNDERBOLT}
+ },
+ {
+ .species = SPECIES_FEAROW,
+ .lvl = 6,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPER_BEAM, MOVE_FLY, MOVE_MIRROR_MOVE, MOVE_PROTECT}
+ },
+ {
+ .species = SPECIES_SNORLAX,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPER_BEAM, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE}
+ },
+ {
+ .species = SPECIES_SLAKING,
+ .lvl = 5,
+ .abilityBit = 2,
+ .moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ICE_BEAM}
+ }
+};
+
+static const struct PyramidWildMon *const sOpenLevelWildMonPointers[] =
+{
+ sOpenLevelWildMons_Round1,
+ sOpenLevelWildMons_Round2,
+ sOpenLevelWildMons_Round3,
+ sOpenLevelWildMons_Round4,
+ sOpenLevelWildMons_Round5,
+ sOpenLevelWildMons_Round6,
+ sOpenLevelWildMons_Round7,
+ sOpenLevelWildMons_Round8,
+ sOpenLevelWildMons_Round9,
+ sOpenLevelWildMons_Round10,
+ sOpenLevelWildMons_Round11,
+ sOpenLevelWildMons_Round12,
+ sOpenLevelWildMons_Round13,
+ sOpenLevelWildMons_Round14,
+ sOpenLevelWildMons_Round15,
+ sOpenLevelWildMons_Round16,
+ sOpenLevelWildMons_Round17,
+ sOpenLevelWildMons_Round18,
+ sOpenLevelWildMons_Round19,
+ sOpenLevelWildMons_Round20
+};
diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h
index 00a6f7fdb..008d7d784 100644
--- a/src/data/battle_moves.h
+++ b/src/data/battle_moves.h
@@ -1,3913 +1,4617 @@
-#ifndef GUARD_DATA_BATTLE_MOVES
-#define GUARD_DATA_BATTLE_MOVES
-
const struct BattleMove gBattleMoves[MOVES_COUNT] =
{
- { // MOVE_NONE
- .effect = EFFECT_HIT,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 0,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_POUND
- .effect = EFFECT_HIT,
- .power = 40,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 35,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_KARATE_CHOP
- .effect = EFFECT_HIGH_CRITICAL,
- .power = 50,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 25,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_DOUBLE_SLAP
- .effect = EFFECT_MULTI_HIT,
- .power = 15,
- .type = TYPE_NORMAL,
- .accuracy = 85,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_COMET_PUNCH
- .effect = EFFECT_MULTI_HIT,
- .power = 18,
- .type = TYPE_NORMAL,
- .accuracy = 85,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_MEGA_PUNCH
- .effect = EFFECT_HIT,
- .power = 80,
- .type = TYPE_NORMAL,
- .accuracy = 85,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_PAY_DAY
- .effect = EFFECT_PAY_DAY,
- .power = 40,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_FIRE_PUNCH
- .effect = EFFECT_BURN_HIT,
- .power = 75,
- .type = TYPE_FIRE,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_ICE_PUNCH
- .effect = EFFECT_FREEZE_HIT,
- .power = 75,
- .type = TYPE_ICE,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_THUNDER_PUNCH
- .effect = EFFECT_PARALYZE_HIT,
- .power = 75,
- .type = TYPE_ELECTRIC,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SCRATCH
- .effect = EFFECT_HIT,
- .power = 40,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 35,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_VICE_GRIP
- .effect = EFFECT_HIT,
- .power = 55,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_GUILLOTINE
- .effect = EFFECT_OHKO,
- .power = 1,
- .type = TYPE_NORMAL,
- .accuracy = 30,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_RAZOR_WIND
- .effect = EFFECT_RAZOR_WIND,
- .power = 80,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SWORDS_DANCE
- .effect = EFFECT_ATTACK_UP_2,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_CUT
- .effect = EFFECT_HIT,
- .power = 50,
- .type = TYPE_NORMAL,
- .accuracy = 95,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_GUST
- .effect = EFFECT_GUST,
- .power = 40,
- .type = TYPE_FLYING,
- .accuracy = 100,
- .pp = 35,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_WING_ATTACK
- .effect = EFFECT_HIT,
- .power = 60,
- .type = TYPE_FLYING,
- .accuracy = 100,
- .pp = 35,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_WHIRLWIND
- .effect = EFFECT_ROAR,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = -6,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FLY
- .effect = EFFECT_SEMI_INVULNERABLE,
- .power = 70,
- .type = TYPE_FLYING,
- .accuracy = 95,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_BIND
- .effect = EFFECT_TRAP,
- .power = 15,
- .type = TYPE_NORMAL,
- .accuracy = 75,
- .pp = 20,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SLAM
- .effect = EFFECT_HIT,
- .power = 80,
- .type = TYPE_NORMAL,
- .accuracy = 75,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_VINE_WHIP
- .effect = EFFECT_HIT,
- .power = 35,
- .type = TYPE_GRASS,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_STOMP
- .effect = EFFECT_FLINCH_MINIMIZE_HIT,
- .power = 65,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_DOUBLE_KICK
- .effect = EFFECT_DOUBLE_HIT,
- .power = 30,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_MEGA_KICK
- .effect = EFFECT_HIT,
- .power = 120,
- .type = TYPE_NORMAL,
- .accuracy = 75,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_JUMP_KICK
- .effect = EFFECT_RECOIL_IF_MISS,
- .power = 70,
- .type = TYPE_FIGHTING,
- .accuracy = 95,
- .pp = 25,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_ROLLING_KICK
- .effect = EFFECT_FLINCH_HIT,
- .power = 60,
- .type = TYPE_FIGHTING,
- .accuracy = 85,
- .pp = 15,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SAND_ATTACK
- .effect = EFFECT_ACCURACY_DOWN,
- .power = 0,
- .type = TYPE_GROUND,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_HEADBUTT
- .effect = EFFECT_FLINCH_HIT,
- .power = 70,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_HORN_ATTACK
- .effect = EFFECT_HIT,
- .power = 65,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 25,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_FURY_ATTACK
- .effect = EFFECT_MULTI_HIT,
- .power = 15,
- .type = TYPE_NORMAL,
- .accuracy = 85,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_HORN_DRILL
- .effect = EFFECT_OHKO,
- .power = 1,
- .type = TYPE_NORMAL,
- .accuracy = 30,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_TACKLE
- .effect = EFFECT_HIT,
- .power = 35,
- .type = TYPE_NORMAL,
- .accuracy = 95,
- .pp = 35,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_BODY_SLAM
- .effect = EFFECT_PARALYZE_HIT,
- .power = 85,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_WRAP
- .effect = EFFECT_TRAP,
- .power = 15,
- .type = TYPE_NORMAL,
- .accuracy = 85,
- .pp = 20,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_TAKE_DOWN
- .effect = EFFECT_RECOIL,
- .power = 90,
- .type = TYPE_NORMAL,
- .accuracy = 85,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_THRASH
- .effect = EFFECT_RAMPAGE,
- .power = 90,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_RANDOM,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_DOUBLE_EDGE
- .effect = EFFECT_DOUBLE_EDGE,
- .power = 120,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_TAIL_WHIP
- .effect = EFFECT_DEFENSE_DOWN,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_POISON_STING
- .effect = EFFECT_POISON_HIT,
- .power = 15,
- .type = TYPE_POISON,
- .accuracy = 100,
- .pp = 35,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_TWINEEDLE
- .effect = EFFECT_TWINEEDLE,
- .power = 25,
- .type = TYPE_BUG,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 20,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_PIN_MISSILE
- .effect = EFFECT_MULTI_HIT,
- .power = 14,
- .type = TYPE_BUG,
- .accuracy = 85,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_LEER
- .effect = EFFECT_DEFENSE_DOWN,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_BITE
- .effect = EFFECT_FLINCH_HIT,
- .power = 60,
- .type = TYPE_DARK,
- .accuracy = 100,
- .pp = 25,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_GROWL
- .effect = EFFECT_ATTACK_DOWN,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_ROAR
- .effect = EFFECT_ROAR,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = -6,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SING
- .effect = EFFECT_SLEEP,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 55,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SUPERSONIC
- .effect = EFFECT_CONFUSE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 55,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SONIC_BOOM
- .effect = EFFECT_SONICBOOM,
- .power = 1,
- .type = TYPE_NORMAL,
- .accuracy = 90,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_DISABLE
- .effect = EFFECT_DISABLE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 55,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_ACID
- .effect = EFFECT_DEFENSE_DOWN_HIT,
- .power = 40,
- .type = TYPE_POISON,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_EMBER
- .effect = EFFECT_BURN_HIT,
- .power = 40,
- .type = TYPE_FIRE,
- .accuracy = 100,
- .pp = 25,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FLAMETHROWER
- .effect = EFFECT_BURN_HIT,
- .power = 95,
- .type = TYPE_FIRE,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MIST
- .effect = EFFECT_MIST,
- .power = 0,
- .type = TYPE_ICE,
- .accuracy = 0,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_WATER_GUN
- .effect = EFFECT_HIT,
- .power = 40,
- .type = TYPE_WATER,
- .accuracy = 100,
- .pp = 25,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_HYDRO_PUMP
- .effect = EFFECT_HIT,
- .power = 120,
- .type = TYPE_WATER,
- .accuracy = 80,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SURF
- .effect = EFFECT_HIT,
- .power = 95,
- .type = TYPE_WATER,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_ICE_BEAM
- .effect = EFFECT_FREEZE_HIT,
- .power = 95,
- .type = TYPE_ICE,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_BLIZZARD
- .effect = EFFECT_FREEZE_HIT,
- .power = 120,
- .type = TYPE_ICE,
- .accuracy = 70,
- .pp = 5,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_PSYBEAM
- .effect = EFFECT_CONFUSE_HIT,
- .power = 65,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_BUBBLE_BEAM
- .effect = EFFECT_SPEED_DOWN_HIT,
- .power = 65,
- .type = TYPE_WATER,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_AURORA_BEAM
- .effect = EFFECT_ATTACK_DOWN_HIT,
- .power = 65,
- .type = TYPE_ICE,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_HYPER_BEAM
- .effect = EFFECT_RECHARGE,
- .power = 150,
- .type = TYPE_NORMAL,
- .accuracy = 90,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_PECK
- .effect = EFFECT_HIT,
- .power = 35,
- .type = TYPE_FLYING,
- .accuracy = 100,
- .pp = 35,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_DRILL_PECK
- .effect = EFFECT_HIT,
- .power = 80,
- .type = TYPE_FLYING,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SUBMISSION
- .effect = EFFECT_RECOIL,
- .power = 80,
- .type = TYPE_FIGHTING,
- .accuracy = 80,
- .pp = 25,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_LOW_KICK
- .effect = EFFECT_LOW_KICK,
- .power = 1,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_COUNTER
- .effect = EFFECT_COUNTER,
- .power = 1,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_DEPENDS,
- .priority = -5,
- .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SEISMIC_TOSS
- .effect = EFFECT_LEVEL_DAMAGE,
- .power = 1,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_STRENGTH
- .effect = EFFECT_HIT,
- .power = 80,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_ABSORB
- .effect = EFFECT_ABSORB,
- .power = 20,
- .type = TYPE_GRASS,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MEGA_DRAIN
- .effect = EFFECT_ABSORB,
- .power = 40,
- .type = TYPE_GRASS,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_LEECH_SEED
- .effect = EFFECT_LEECH_SEED,
- .power = 0,
- .type = TYPE_GRASS,
- .accuracy = 90,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_GROWTH
- .effect = EFFECT_SPECIAL_ATTACK_UP,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_RAZOR_LEAF
- .effect = EFFECT_HIGH_CRITICAL,
- .power = 55,
- .type = TYPE_GRASS,
- .accuracy = 95,
- .pp = 25,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SOLAR_BEAM
- .effect = EFFECT_SOLARBEAM,
- .power = 120,
- .type = TYPE_GRASS,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_POISON_POWDER
- .effect = EFFECT_POISON,
- .power = 0,
- .type = TYPE_POISON,
- .accuracy = 75,
- .pp = 35,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_STUN_SPORE
- .effect = EFFECT_PARALYZE,
- .power = 0,
- .type = TYPE_GRASS,
- .accuracy = 75,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SLEEP_POWDER
- .effect = EFFECT_SLEEP,
- .power = 0,
- .type = TYPE_GRASS,
- .accuracy = 75,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_PETAL_DANCE
- .effect = EFFECT_RAMPAGE,
- .power = 70,
- .type = TYPE_GRASS,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_RANDOM,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_STRING_SHOT
- .effect = EFFECT_SPEED_DOWN,
- .power = 0,
- .type = TYPE_BUG,
- .accuracy = 95,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_DRAGON_RAGE
- .effect = EFFECT_DRAGON_RAGE,
- .power = 1,
- .type = TYPE_DRAGON,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_FIRE_SPIN
- .effect = EFFECT_TRAP,
- .power = 15,
- .type = TYPE_FIRE,
- .accuracy = 70,
- .pp = 15,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_THUNDER_SHOCK
- .effect = EFFECT_PARALYZE_HIT,
- .power = 40,
- .type = TYPE_ELECTRIC,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_THUNDERBOLT
- .effect = EFFECT_PARALYZE_HIT,
- .power = 95,
- .type = TYPE_ELECTRIC,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_THUNDER_WAVE
- .effect = EFFECT_PARALYZE,
- .power = 0,
- .type = TYPE_ELECTRIC,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_THUNDER
- .effect = EFFECT_THUNDER,
- .power = 120,
- .type = TYPE_ELECTRIC,
- .accuracy = 70,
- .pp = 10,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_ROCK_THROW
- .effect = EFFECT_HIT,
- .power = 50,
- .type = TYPE_ROCK,
- .accuracy = 90,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_EARTHQUAKE
- .effect = EFFECT_EARTHQUAKE,
- .power = 100,
- .type = TYPE_GROUND,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_FOES_AND_ALLY,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_FISSURE
- .effect = EFFECT_OHKO,
- .power = 1,
- .type = TYPE_GROUND,
- .accuracy = 30,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_DIG
- .effect = EFFECT_SEMI_INVULNERABLE,
- .power = 60,
- .type = TYPE_GROUND,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_TOXIC
- .effect = EFFECT_TOXIC,
- .power = 0,
- .type = TYPE_POISON,
- .accuracy = 85,
- .pp = 10,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_CONFUSION
- .effect = EFFECT_CONFUSE_HIT,
- .power = 50,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 25,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_PSYCHIC
- .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
- .power = 90,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_HYPNOSIS
- .effect = EFFECT_SLEEP,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 60,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MEDITATE
- .effect = EFFECT_ATTACK_UP,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 0,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_AGILITY
- .effect = EFFECT_SPEED_UP_2,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 0,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_QUICK_ATTACK
- .effect = EFFECT_QUICK_ATTACK,
- .power = 40,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 1,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_RAGE
- .effect = EFFECT_RAGE,
- .power = 20,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_TELEPORT
- .effect = EFFECT_TELEPORT,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_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 = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_MIMIC
- .effect = EFFECT_MIMIC,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED,
- },
- { // MOVE_SCREECH
- .effect = EFFECT_DEFENSE_DOWN_2,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 85,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_DOUBLE_TEAM
- .effect = EFFECT_EVASION_UP,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_RECOVER
- .effect = EFFECT_RESTORE_HP,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_HARDEN
- .effect = EFFECT_DEFENSE_UP,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_MINIMIZE
- .effect = EFFECT_MINIMIZE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_SMOKESCREEN
- .effect = EFFECT_ACCURACY_DOWN,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_CONFUSE_RAY
- .effect = EFFECT_CONFUSE,
- .power = 0,
- .type = TYPE_GHOST,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_WITHDRAW
- .effect = EFFECT_DEFENSE_UP,
- .power = 0,
- .type = TYPE_WATER,
- .accuracy = 0,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_DEFENSE_CURL
- .effect = EFFECT_DEFENSE_CURL,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_BARRIER
- .effect = EFFECT_DEFENSE_UP_2,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 0,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_LIGHT_SCREEN
- .effect = EFFECT_LIGHT_SCREEN,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 0,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_HAZE
- .effect = EFFECT_HAZE,
- .power = 0,
- .type = TYPE_ICE,
- .accuracy = 0,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED,
- },
- { // MOVE_REFLECT
- .effect = EFFECT_REFLECT,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_FOCUS_ENERGY
- .effect = EFFECT_FOCUS_ENERGY,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_BIDE
- .effect = EFFECT_BIDE,
- .power = 1,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_METRONOME
- .effect = EFFECT_METRONOME,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_DEPENDS,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_MIRROR_MOVE
- .effect = EFFECT_MIRROR_MOVE,
- .power = 0,
- .type = TYPE_FLYING,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_DEPENDS,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_SELF_DESTRUCT
- .effect = EFFECT_EXPLOSION,
- .power = 200,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_FOES_AND_ALLY,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_EGG_BOMB
- .effect = EFFECT_HIT,
- .power = 100,
- .type = TYPE_NORMAL,
- .accuracy = 75,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_LICK
- .effect = EFFECT_PARALYZE_HIT,
- .power = 20,
- .type = TYPE_GHOST,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SMOG
- .effect = EFFECT_POISON_HIT,
- .power = 20,
- .type = TYPE_POISON,
- .accuracy = 70,
- .pp = 20,
- .secondaryEffectChance = 40,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SLUDGE
- .effect = EFFECT_POISON_HIT,
- .power = 65,
- .type = TYPE_POISON,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_BONE_CLUB
- .effect = EFFECT_FLINCH_HIT,
- .power = 65,
- .type = TYPE_GROUND,
- .accuracy = 85,
- .pp = 20,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FIRE_BLAST
- .effect = EFFECT_BURN_HIT,
- .power = 120,
- .type = TYPE_FIRE,
- .accuracy = 85,
- .pp = 5,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_WATERFALL
- .effect = EFFECT_HIT,
- .power = 80,
- .type = TYPE_WATER,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_CLAMP
- .effect = EFFECT_TRAP,
- .power = 35,
- .type = TYPE_WATER,
- .accuracy = 75,
- .pp = 10,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SWIFT
- .effect = EFFECT_ALWAYS_HIT,
- .power = 60,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SKULL_BASH
- .effect = EFFECT_SKULL_BASH,
- .power = 100,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SPIKE_CANNON
- .effect = EFFECT_MULTI_HIT,
- .power = 20,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_CONSTRICT
- .effect = EFFECT_SPEED_DOWN_HIT,
- .power = 10,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 35,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_AMNESIA
- .effect = EFFECT_SPECIAL_DEFENSE_UP_2,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_KINESIS
- .effect = EFFECT_ACCURACY_DOWN,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 80,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SOFT_BOILED
- .effect = EFFECT_SOFTBOILED,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_HI_JUMP_KICK
- .effect = EFFECT_RECOIL_IF_MISS,
- .power = 85,
- .type = TYPE_FIGHTING,
- .accuracy = 90,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_GLARE
- .effect = EFFECT_PARALYZE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 75,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_DREAM_EATER
- .effect = EFFECT_DREAM_EATER,
- .power = 100,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_POISON_GAS
- .effect = EFFECT_POISON,
- .power = 0,
- .type = TYPE_POISON,
- .accuracy = 55,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_BARRAGE
- .effect = EFFECT_MULTI_HIT,
- .power = 15,
- .type = TYPE_NORMAL,
- .accuracy = 85,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_LEECH_LIFE
- .effect = EFFECT_ABSORB,
- .power = 20,
- .type = TYPE_BUG,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_LOVELY_KISS
- .effect = EFFECT_SLEEP,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 75,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SKY_ATTACK
- .effect = EFFECT_SKY_ATTACK,
- .power = 140,
- .type = TYPE_FLYING,
- .accuracy = 90,
- .pp = 5,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_TRANSFORM
- .effect = EFFECT_TRANSFORM,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_BUBBLE
- .effect = EFFECT_SPEED_DOWN_HIT,
- .power = 20,
- .type = TYPE_WATER,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_DIZZY_PUNCH
- .effect = EFFECT_CONFUSE_HIT,
- .power = 70,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 20,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SPORE
- .effect = EFFECT_SLEEP,
- .power = 0,
- .type = TYPE_GRASS,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FLASH
- .effect = EFFECT_ACCURACY_DOWN,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 70,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_PSYWAVE
- .effect = EFFECT_PSYWAVE,
- .power = 1,
- .type = TYPE_PSYCHIC,
- .accuracy = 80,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SPLASH
- .effect = EFFECT_SPLASH,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_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 = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_CRABHAMMER
- .effect = EFFECT_HIGH_CRITICAL,
- .power = 90,
- .type = TYPE_WATER,
- .accuracy = 85,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_EXPLOSION
- .effect = EFFECT_EXPLOSION,
- .power = 250,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_FOES_AND_ALLY,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_FURY_SWIPES
- .effect = EFFECT_MULTI_HIT,
- .power = 18,
- .type = TYPE_NORMAL,
- .accuracy = 80,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_BONEMERANG
- .effect = EFFECT_DOUBLE_HIT,
- .power = 50,
- .type = TYPE_GROUND,
- .accuracy = 90,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_REST
- .effect = EFFECT_REST,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_ROCK_SLIDE
- .effect = EFFECT_FLINCH_HIT,
- .power = 75,
- .type = TYPE_ROCK,
- .accuracy = 90,
- .pp = 10,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_HYPER_FANG
- .effect = EFFECT_FLINCH_HIT,
- .power = 80,
- .type = TYPE_NORMAL,
- .accuracy = 90,
- .pp = 15,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SHARPEN
- .effect = EFFECT_ATTACK_UP,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_CONVERSION
- .effect = EFFECT_CONVERSION,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_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 = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SUPER_FANG
- .effect = EFFECT_SUPER_FANG,
- .power = 1,
- .type = TYPE_NORMAL,
- .accuracy = 90,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SLASH
- .effect = EFFECT_HIGH_CRITICAL,
- .power = 70,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SUBSTITUTE
- .effect = EFFECT_SUBSTITUTE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_STRUGGLE
- .effect = EFFECT_RECOIL,
- .power = 50,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 1,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SKETCH
- .effect = EFFECT_SKETCH,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 1,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_TRIPLE_KICK
- .effect = EFFECT_TRIPLE_KICK,
- .power = 10,
- .type = TYPE_FIGHTING,
- .accuracy = 90,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_THIEF
- .effect = EFFECT_THIEF,
- .power = 40,
- .type = TYPE_DARK,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SPIDER_WEB
- .effect = EFFECT_MEAN_LOOK,
- .power = 0,
- .type = TYPE_BUG,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MIND_READER
- .effect = EFFECT_LOCK_ON,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_NIGHTMARE
- .effect = EFFECT_NIGHTMARE,
- .power = 0,
- .type = TYPE_GHOST,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FLAME_WHEEL
- .effect = EFFECT_THAW_HIT,
- .power = 60,
- .type = TYPE_FIRE,
- .accuracy = 100,
- .pp = 25,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SNORE
- .effect = EFFECT_SNORE,
- .power = 40,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_CURSE
- .effect = EFFECT_CURSE,
- .power = 0,
- .type = TYPE_MYSTERY,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_FLAIL
- .effect = EFFECT_FLAIL,
- .power = 1,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_CONVERSION_2
- .effect = EFFECT_CONVERSION_2,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_AEROBLAST
- .effect = EFFECT_HIGH_CRITICAL,
- .power = 100,
- .type = TYPE_FLYING,
- .accuracy = 95,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_COTTON_SPORE
- .effect = EFFECT_SPEED_DOWN_2,
- .power = 0,
- .type = TYPE_GRASS,
- .accuracy = 85,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_REVERSAL
- .effect = EFFECT_FLAIL,
- .power = 1,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SPITE
- .effect = EFFECT_SPITE,
- .power = 0,
- .type = TYPE_GHOST,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_POWDER_SNOW
- .effect = EFFECT_FREEZE_HIT,
- .power = 40,
- .type = TYPE_ICE,
- .accuracy = 100,
- .pp = 25,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_PROTECT
- .effect = EFFECT_PROTECT,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_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 = MOVE_TARGET_SELECTED,
- .priority = 1,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SCARY_FACE
- .effect = EFFECT_SPEED_DOWN_2,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 90,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FAINT_ATTACK
- .effect = EFFECT_ALWAYS_HIT,
- .power = 60,
- .type = TYPE_DARK,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SWEET_KISS
- .effect = EFFECT_CONFUSE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 75,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_BELLY_DRUM
- .effect = EFFECT_BELLY_DRUM,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_SLUDGE_BOMB
- .effect = EFFECT_POISON_HIT,
- .power = 90,
- .type = TYPE_POISON,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MUD_SLAP
- .effect = EFFECT_ACCURACY_DOWN_HIT,
- .power = 20,
- .type = TYPE_GROUND,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_OCTAZOOKA
- .effect = EFFECT_ACCURACY_DOWN_HIT,
- .power = 65,
- .type = TYPE_WATER,
- .accuracy = 85,
- .pp = 10,
- .secondaryEffectChance = 50,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SPIKES
- .effect = EFFECT_SPIKES,
- .power = 0,
- .type = TYPE_GROUND,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_OPPONENTS_FIELD,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_ZAP_CANNON
- .effect = EFFECT_PARALYZE_HIT,
- .power = 100,
- .type = TYPE_ELECTRIC,
- .accuracy = 50,
- .pp = 5,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FORESIGHT
- .effect = EFFECT_FORESIGHT,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_DESTINY_BOND
- .effect = EFFECT_DESTINY_BOND,
- .power = 0,
- .type = TYPE_GHOST,
- .accuracy = 0,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_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 = MOVE_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 = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_DETECT
- .effect = EFFECT_PROTECT,
- .power = 0,
- .type = TYPE_FIGHTING,
- .accuracy = 0,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_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 = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_LOCK_ON
- .effect = EFFECT_LOCK_ON,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_OUTRAGE
- .effect = EFFECT_RAMPAGE,
- .power = 90,
- .type = TYPE_DRAGON,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_RANDOM,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SANDSTORM
- .effect = EFFECT_SANDSTORM,
- .power = 0,
- .type = TYPE_ROCK,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_GIGA_DRAIN
- .effect = EFFECT_ABSORB,
- .power = 60,
- .type = TYPE_GRASS,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_ENDURE
- .effect = EFFECT_ENDURE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_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 = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_ROLLOUT
- .effect = EFFECT_ROLLOUT,
- .power = 30,
- .type = TYPE_ROCK,
- .accuracy = 90,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_FALSE_SWIPE
- .effect = EFFECT_FALSE_SWIPE,
- .power = 40,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SWAGGER
- .effect = EFFECT_SWAGGER,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 90,
- .pp = 15,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MILK_DRINK
- .effect = EFFECT_SOFTBOILED,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_SPARK
- .effect = EFFECT_PARALYZE_HIT,
- .power = 65,
- .type = TYPE_ELECTRIC,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FURY_CUTTER
- .effect = EFFECT_FURY_CUTTER,
- .power = 10,
- .type = TYPE_BUG,
- .accuracy = 95,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_STEEL_WING
- .effect = EFFECT_DEFENSE_UP_HIT,
- .power = 70,
- .type = TYPE_STEEL,
- .accuracy = 90,
- .pp = 25,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_MEAN_LOOK
- .effect = EFFECT_MEAN_LOOK,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_ATTRACT
- .effect = EFFECT_ATTRACT,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SLEEP_TALK
- .effect = EFFECT_SLEEP_TALK,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_DEPENDS,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_HEAL_BELL
- .effect = EFFECT_HEAL_BELL,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_RETURN
- .effect = EFFECT_RETURN,
- .power = 1,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_PRESENT
- .effect = EFFECT_PRESENT,
- .power = 1,
- .type = TYPE_NORMAL,
- .accuracy = 90,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FRUSTRATION
- .effect = EFFECT_FRUSTRATION,
- .power = 1,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SAFEGUARD
- .effect = EFFECT_SAFEGUARD,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 25,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_PAIN_SPLIT
- .effect = EFFECT_PAIN_SPLIT,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SACRED_FIRE
- .effect = EFFECT_THAW_HIT,
- .power = 100,
- .type = TYPE_FIRE,
- .accuracy = 95,
- .pp = 5,
- .secondaryEffectChance = 50,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MAGNITUDE
- .effect = EFFECT_MAGNITUDE,
- .power = 1,
- .type = TYPE_GROUND,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_FOES_AND_ALLY,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_DYNAMIC_PUNCH
- .effect = EFFECT_CONFUSE_HIT,
- .power = 100,
- .type = TYPE_FIGHTING,
- .accuracy = 50,
- .pp = 5,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MEGAHORN
- .effect = EFFECT_HIT,
- .power = 120,
- .type = TYPE_BUG,
- .accuracy = 85,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_DRAGON_BREATH
- .effect = EFFECT_PARALYZE_HIT,
- .power = 60,
- .type = TYPE_DRAGON,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_BATON_PASS
- .effect = EFFECT_BATON_PASS,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_ENCORE
- .effect = EFFECT_ENCORE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_PURSUIT
- .effect = EFFECT_PURSUIT,
- .power = 40,
- .type = TYPE_DARK,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_RAPID_SPIN
- .effect = EFFECT_RAPID_SPIN,
- .power = 20,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SWEET_SCENT
- .effect = EFFECT_EVASION_DOWN,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_IRON_TAIL
- .effect = EFFECT_DEFENSE_DOWN_HIT,
- .power = 100,
- .type = TYPE_STEEL,
- .accuracy = 75,
- .pp = 15,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_METAL_CLAW
- .effect = EFFECT_ATTACK_UP_HIT,
- .power = 50,
- .type = TYPE_STEEL,
- .accuracy = 95,
- .pp = 35,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_VITAL_THROW
- .effect = EFFECT_VITAL_THROW,
- .power = 70,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = -1,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_MORNING_SUN
- .effect = EFFECT_MORNING_SUN,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_SYNTHESIS
- .effect = EFFECT_SYNTHESIS,
- .power = 0,
- .type = TYPE_GRASS,
- .accuracy = 0,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_MOONLIGHT
- .effect = EFFECT_MOONLIGHT,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_HIDDEN_POWER
- .effect = EFFECT_HIDDEN_POWER,
- .power = 1,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_CROSS_CHOP
- .effect = EFFECT_HIGH_CRITICAL,
- .power = 100,
- .type = TYPE_FIGHTING,
- .accuracy = 80,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_TWISTER
- .effect = EFFECT_TWISTER,
- .power = 40,
- .type = TYPE_DRAGON,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 20,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_RAIN_DANCE
- .effect = EFFECT_RAIN_DANCE,
- .power = 0,
- .type = TYPE_WATER,
- .accuracy = 0,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_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 = MOVE_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 = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MIRROR_COAT
- .effect = EFFECT_MIRROR_COAT,
- .power = 1,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_DEPENDS,
- .priority = -5,
- .flags = FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_PSYCH_UP
- .effect = EFFECT_PSYCH_UP,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_EXTREME_SPEED
- .effect = EFFECT_QUICK_ATTACK,
- .power = 80,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 1,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_ANCIENT_POWER
- .effect = EFFECT_ALL_STATS_UP_HIT,
- .power = 60,
- .type = TYPE_ROCK,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SHADOW_BALL
- .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
- .power = 80,
- .type = TYPE_GHOST,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 20,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FUTURE_SIGHT
- .effect = EFFECT_FUTURE_SIGHT,
- .power = 80,
- .type = TYPE_PSYCHIC,
- .accuracy = 90,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_ROCK_SMASH
- .effect = EFFECT_DEFENSE_DOWN_HIT,
- .power = 20,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 50,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_WHIRLPOOL
- .effect = EFFECT_TRAP,
- .power = 15,
- .type = TYPE_WATER,
- .accuracy = 70,
- .pp = 15,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_BEAT_UP
- .effect = EFFECT_BEAT_UP,
- .power = 10,
- .type = TYPE_DARK,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_FAKE_OUT
- .effect = EFFECT_FAKE_OUT,
- .power = 40,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 1,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_UPROAR
- .effect = EFFECT_UPROAR,
- .power = 50,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_RANDOM,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_STOCKPILE
- .effect = EFFECT_STOCKPILE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_SPIT_UP
- .effect = EFFECT_SPIT_UP,
- .power = 100,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SWALLOW
- .effect = EFFECT_SWALLOW,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_HEAT_WAVE
- .effect = EFFECT_BURN_HIT,
- .power = 100,
- .type = TYPE_FIRE,
- .accuracy = 90,
- .pp = 10,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_HAIL
- .effect = EFFECT_HAIL,
- .power = 0,
- .type = TYPE_ICE,
- .accuracy = 0,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED,
- },
- { // MOVE_TORMENT
- .effect = EFFECT_TORMENT,
- .power = 0,
- .type = TYPE_DARK,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FLATTER
- .effect = EFFECT_FLATTER,
- .power = 0,
- .type = TYPE_DARK,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_WILL_O_WISP
- .effect = EFFECT_WILL_O_WISP,
- .power = 0,
- .type = TYPE_FIRE,
- .accuracy = 75,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MEMENTO
- .effect = EFFECT_MEMENTO,
- .power = 0,
- .type = TYPE_DARK,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FACADE
- .effect = EFFECT_FACADE,
- .power = 70,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FOCUS_PUNCH
- .effect = EFFECT_FOCUS_PUNCH,
- .power = 150,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = -3,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED,
- },
- { // MOVE_SMELLING_SALT
- .effect = EFFECT_SMELLINGSALT,
- .power = 60,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FOLLOW_ME
- .effect = EFFECT_FOLLOW_ME,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_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 = MOVE_TARGET_DEPENDS,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_CHARGE
- .effect = EFFECT_CHARGE,
- .power = 0,
- .type = TYPE_ELECTRIC,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_TAUNT
- .effect = EFFECT_TAUNT,
- .power = 0,
- .type = TYPE_DARK,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED,
- },
- { // MOVE_HELPING_HAND
- .effect = EFFECT_HELPING_HAND,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 5,
- .flags = 0,
- },
- { // MOVE_TRICK
- .effect = EFFECT_TRICK,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_ROLE_PLAY
- .effect = EFFECT_ROLE_PLAY,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_WISH
- .effect = EFFECT_WISH,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED,
- },
- { // MOVE_ASSIST
- .effect = EFFECT_ASSIST,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_DEPENDS,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_INGRAIN
- .effect = EFFECT_INGRAIN,
- .power = 0,
- .type = TYPE_GRASS,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_SUPERPOWER
- .effect = EFFECT_SUPERPOWER,
- .power = 120,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MAGIC_COAT
- .effect = EFFECT_MAGIC_COAT,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_DEPENDS,
- .priority = 4,
- .flags = 0,
- },
- { // MOVE_RECYCLE
- .effect = EFFECT_RECYCLE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_REVENGE
- .effect = EFFECT_REVENGE,
- .power = 60,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = -4,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_BRICK_BREAK
- .effect = EFFECT_BRICK_BREAK,
- .power = 75,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_YAWN
- .effect = EFFECT_YAWN,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_KNOCK_OFF
- .effect = EFFECT_KNOCK_OFF,
- .power = 20,
- .type = TYPE_DARK,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_ENDEAVOR
- .effect = EFFECT_ENDEAVOR,
- .power = 1,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_ERUPTION
- .effect = EFFECT_ERUPTION,
- .power = 150,
- .type = TYPE_FIRE,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SKILL_SWAP
- .effect = EFFECT_SKILL_SWAP,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_IMPRISON
- .effect = EFFECT_IMPRISON,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED,
- },
- { // MOVE_REFRESH
- .effect = EFFECT_REFRESH,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_GRUDGE
- .effect = EFFECT_GRUDGE,
- .power = 0,
- .type = TYPE_GHOST,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SNATCH
- .effect = EFFECT_SNATCH,
- .power = 0,
- .type = TYPE_DARK,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_DEPENDS,
- .priority = 4,
- .flags = FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SECRET_POWER
- .effect = EFFECT_SECRET_POWER,
- .power = 70,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_DIVE
- .effect = EFFECT_SEMI_INVULNERABLE,
- .power = 60,
- .type = TYPE_WATER,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_ARM_THRUST
- .effect = EFFECT_MULTI_HIT,
- .power = 15,
- .type = TYPE_FIGHTING,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_CAMOUFLAGE
- .effect = EFFECT_CAMOUFLAGE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_TAIL_GLOW
- .effect = EFFECT_SPECIAL_ATTACK_UP_2,
- .power = 0,
- .type = TYPE_BUG,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_LUSTER_PURGE
- .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
- .power = 70,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 50,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MIST_BALL
- .effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT,
- .power = 70,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 50,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_FEATHER_DANCE
- .effect = EFFECT_ATTACK_DOWN_2,
- .power = 0,
- .type = TYPE_FLYING,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_TEETER_DANCE
- .effect = EFFECT_TEETER_DANCE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_FOES_AND_ALLY,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED,
- },
- { // MOVE_BLAZE_KICK
- .effect = EFFECT_BLAZE_KICK,
- .power = 85,
- .type = TYPE_FIRE,
- .accuracy = 90,
- .pp = 10,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MUD_SPORT
- .effect = EFFECT_MUD_SPORT,
- .power = 0,
- .type = TYPE_GROUND,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_ICE_BALL
- .effect = EFFECT_ROLLOUT,
- .power = 30,
- .type = TYPE_ICE,
- .accuracy = 90,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_NEEDLE_ARM
- .effect = EFFECT_FLINCH_MINIMIZE_HIT,
- .power = 60,
- .type = TYPE_GRASS,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SLACK_OFF
- .effect = EFFECT_RESTORE_HP,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_HYPER_VOICE
- .effect = EFFECT_HIT,
- .power = 90,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_POISON_FANG
- .effect = EFFECT_POISON_FANG,
- .power = 50,
- .type = TYPE_POISON,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_CRUSH_CLAW
- .effect = EFFECT_DEFENSE_DOWN_HIT,
- .power = 75,
- .type = TYPE_NORMAL,
- .accuracy = 95,
- .pp = 10,
- .secondaryEffectChance = 50,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_BLAST_BURN
- .effect = EFFECT_RECHARGE,
- .power = 150,
- .type = TYPE_FIRE,
- .accuracy = 90,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_HYDRO_CANNON
- .effect = EFFECT_RECHARGE,
- .power = 150,
- .type = TYPE_WATER,
- .accuracy = 90,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_METEOR_MASH
- .effect = EFFECT_ATTACK_UP_HIT,
- .power = 100,
- .type = TYPE_STEEL,
- .accuracy = 85,
- .pp = 10,
- .secondaryEffectChance = 20,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_ASTONISH
- .effect = EFFECT_FLINCH_MINIMIZE_HIT,
- .power = 30,
- .type = TYPE_GHOST,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_WEATHER_BALL
- .effect = EFFECT_WEATHER_BALL,
- .power = 50,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_AROMATHERAPY
- .effect = EFFECT_HEAL_BELL,
- .power = 0,
- .type = TYPE_GRASS,
- .accuracy = 0,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_FAKE_TEARS
- .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2,
- .power = 0,
- .type = TYPE_DARK,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_AIR_CUTTER
- .effect = EFFECT_HIGH_CRITICAL,
- .power = 55,
- .type = TYPE_FLYING,
- .accuracy = 95,
- .pp = 25,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_OVERHEAT
- .effect = EFFECT_OVERHEAT,
- .power = 140,
- .type = TYPE_FIRE,
- .accuracy = 90,
- .pp = 5,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_ODOR_SLEUTH
- .effect = EFFECT_FORESIGHT,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_ROCK_TOMB
- .effect = EFFECT_SPEED_DOWN_HIT,
- .power = 50,
- .type = TYPE_ROCK,
- .accuracy = 80,
- .pp = 10,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SILVER_WIND
- .effect = EFFECT_ALL_STATS_UP_HIT,
- .power = 60,
- .type = TYPE_BUG,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_METAL_SOUND
- .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2,
- .power = 0,
- .type = TYPE_STEEL,
- .accuracy = 85,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_GRASS_WHISTLE
- .effect = EFFECT_SLEEP,
- .power = 0,
- .type = TYPE_GRASS,
- .accuracy = 55,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_TICKLE
- .effect = EFFECT_TICKLE,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_COSMIC_POWER
- .effect = EFFECT_COSMIC_POWER,
- .power = 0,
- .type = TYPE_PSYCHIC,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_WATER_SPOUT
- .effect = EFFECT_ERUPTION,
- .power = 150,
- .type = TYPE_WATER,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SIGNAL_BEAM
- .effect = EFFECT_CONFUSE_HIT,
- .power = 75,
- .type = TYPE_BUG,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SHADOW_PUNCH
- .effect = EFFECT_ALWAYS_HIT,
- .power = 60,
- .type = TYPE_GHOST,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_EXTRASENSORY
- .effect = EFFECT_FLINCH_MINIMIZE_HIT,
- .power = 80,
- .type = TYPE_PSYCHIC,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_SKY_UPPERCUT
- .effect = EFFECT_SKY_UPPERCUT,
- .power = 85,
- .type = TYPE_FIGHTING,
- .accuracy = 90,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SAND_TOMB
- .effect = EFFECT_TRAP,
- .power = 15,
- .type = TYPE_GROUND,
- .accuracy = 70,
- .pp = 15,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SHEER_COLD
- .effect = EFFECT_OHKO,
- .power = 1,
- .type = TYPE_ICE,
- .accuracy = 30,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_MUDDY_WATER
- .effect = EFFECT_ACCURACY_DOWN_HIT,
- .power = 95,
- .type = TYPE_WATER,
- .accuracy = 85,
- .pp = 10,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_BOTH,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_BULLET_SEED
- .effect = EFFECT_MULTI_HIT,
- .power = 10,
- .type = TYPE_GRASS,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_AERIAL_ACE
- .effect = EFFECT_ALWAYS_HIT,
- .power = 60,
- .type = TYPE_FLYING,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_ICICLE_SPEAR
- .effect = EFFECT_MULTI_HIT,
- .power = 10,
- .type = TYPE_ICE,
- .accuracy = 100,
- .pp = 30,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_IRON_DEFENSE
- .effect = EFFECT_DEFENSE_UP_2,
- .power = 0,
- .type = TYPE_STEEL,
- .accuracy = 0,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_BLOCK
- .effect = EFFECT_MEAN_LOOK,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_HOWL
- .effect = EFFECT_ATTACK_UP,
- .power = 0,
- .type = TYPE_NORMAL,
- .accuracy = 0,
- .pp = 40,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_DRAGON_CLAW
- .effect = EFFECT_HIT,
- .power = 80,
- .type = TYPE_DRAGON,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_FRENZY_PLANT
- .effect = EFFECT_RECHARGE,
- .power = 150,
- .type = TYPE_GRASS,
- .accuracy = 90,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_BULK_UP
- .effect = EFFECT_BULK_UP,
- .power = 0,
- .type = TYPE_FIGHTING,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_BOUNCE
- .effect = EFFECT_SEMI_INVULNERABLE,
- .power = 85,
- .type = TYPE_FLYING,
- .accuracy = 85,
- .pp = 5,
- .secondaryEffectChance = 30,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_MUD_SHOT
- .effect = EFFECT_SPEED_DOWN_HIT,
- .power = 55,
- .type = TYPE_GROUND,
- .accuracy = 95,
- .pp = 15,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_POISON_TAIL
- .effect = EFFECT_POISON_TAIL,
- .power = 50,
- .type = TYPE_POISON,
- .accuracy = 100,
- .pp = 25,
- .secondaryEffectChance = 10,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_COVET
- .effect = EFFECT_THIEF,
- .power = 40,
- .type = TYPE_NORMAL,
- .accuracy = 100,
- .pp = 40,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
- },
- { // MOVE_VOLT_TACKLE
- .effect = EFFECT_DOUBLE_EDGE,
- .power = 120,
- .type = TYPE_ELECTRIC,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_MAGICAL_LEAF
- .effect = EFFECT_ALWAYS_HIT,
- .power = 60,
- .type = TYPE_GRASS,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_WATER_SPORT
- .effect = EFFECT_WATER_SPORT,
- .power = 0,
- .type = TYPE_WATER,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_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 = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_LEAF_BLADE
- .effect = EFFECT_HIGH_CRITICAL,
- .power = 70,
- .type = TYPE_GRASS,
- .accuracy = 100,
- .pp = 15,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_DRAGON_DANCE
- .effect = EFFECT_DRAGON_DANCE,
- .power = 0,
- .type = TYPE_DRAGON,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_USER,
- .priority = 0,
- .flags = FLAG_SNATCH_AFFECTED,
- },
- { // MOVE_ROCK_BLAST
- .effect = EFFECT_MULTI_HIT,
- .power = 25,
- .type = TYPE_ROCK,
- .accuracy = 80,
- .pp = 10,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_SHOCK_WAVE
- .effect = EFFECT_ALWAYS_HIT,
- .power = 60,
- .type = TYPE_ELECTRIC,
- .accuracy = 0,
- .pp = 20,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_WATER_PULSE
- .effect = EFFECT_CONFUSE_HIT,
- .power = 60,
- .type = TYPE_WATER,
- .accuracy = 100,
- .pp = 20,
- .secondaryEffectChance = 20,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
- { // MOVE_DOOM_DESIRE
- .effect = EFFECT_FUTURE_SIGHT,
- .power = 120,
- .type = TYPE_STEEL,
- .accuracy = 85,
- .pp = 5,
- .secondaryEffectChance = 0,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = 0,
- },
- { // MOVE_PSYCHO_BOOST
- .effect = EFFECT_OVERHEAT,
- .power = 140,
- .type = TYPE_PSYCHIC,
- .accuracy = 90,
- .pp = 5,
- .secondaryEffectChance = 100,
- .target = MOVE_TARGET_SELECTED,
- .priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
- },
-};
+ [MOVE_NONE] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 0,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_POUND] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_KARATE_CHOP] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 50,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DOUBLE_SLAP] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_COMET_PUNCH] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 18,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MEGA_PUNCH] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_PAY_DAY] =
+ {
+ .effect = EFFECT_PAY_DAY,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FIRE_PUNCH] =
+ {
+ .effect = EFFECT_BURN_HIT,
+ .power = 75,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ICE_PUNCH] =
+ {
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 75,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_THUNDER_PUNCH] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 75,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SCRATCH] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_VICE_GRIP] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 55,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_GUILLOTINE] =
+ {
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_RAZOR_WIND] =
+ {
+ .effect = EFFECT_RAZOR_WIND,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SWORDS_DANCE] =
+ {
+ .effect = EFFECT_ATTACK_UP_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_CUT] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_GUST] =
+ {
+ .effect = EFFECT_GUST,
+ .power = 40,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_WING_ATTACK] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 60,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_WHIRLWIND] =
+ {
+ .effect = EFFECT_ROAR,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -6,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FLY] =
+ {
+ .effect = EFFECT_SEMI_INVULNERABLE,
+ .power = 70,
+ .type = TYPE_FLYING,
+ .accuracy = 95,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BIND] =
+ {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SLAM] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_VINE_WHIP] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 35,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_STOMP] =
+ {
+ .effect = EFFECT_FLINCH_MINIMIZE_HIT,
+ .power = 65,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DOUBLE_KICK] =
+ {
+ .effect = EFFECT_DOUBLE_HIT,
+ .power = 30,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MEGA_KICK] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 120,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_JUMP_KICK] =
+ {
+ .effect = EFFECT_RECOIL_IF_MISS,
+ .power = 70,
+ .type = TYPE_FIGHTING,
+ .accuracy = 95,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ROLLING_KICK] =
+ {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 60,
+ .type = TYPE_FIGHTING,
+ .accuracy = 85,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SAND_ATTACK] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HEADBUTT] =
+ {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HORN_ATTACK] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 65,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FURY_ATTACK] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_HORN_DRILL] =
+ {
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_TACKLE] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 35,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BODY_SLAM] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 85,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_WRAP] =
+ {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_TAKE_DOWN] =
+ {
+ .effect = EFFECT_RECOIL,
+ .power = 90,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_THRASH] =
+ {
+ .effect = EFFECT_RAMPAGE,
+ .power = 90,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_RANDOM,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DOUBLE_EDGE] =
+ {
+ .effect = EFFECT_DOUBLE_EDGE,
+ .power = 120,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_TAIL_WHIP] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_POISON_STING] =
+ {
+ .effect = EFFECT_POISON_HIT,
+ .power = 15,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_TWINEEDLE] =
+ {
+ .effect = EFFECT_TWINEEDLE,
+ .power = 25,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PIN_MISSILE] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 14,
+ .type = TYPE_BUG,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_LEER] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BITE] =
+ {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 60,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_GROWL] =
+ {
+ .effect = EFFECT_ATTACK_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ROAR] =
+ {
+ .effect = EFFECT_ROAR,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -6,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SING] =
+ {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 55,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SUPERSONIC] =
+ {
+ .effect = EFFECT_CONFUSE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 55,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SONIC_BOOM] =
+ {
+ .effect = EFFECT_SONICBOOM,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DISABLE] =
+ {
+ .effect = EFFECT_DISABLE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 55,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ACID] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 40,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_EMBER] =
+ {
+ .effect = EFFECT_BURN_HIT,
+ .power = 40,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FLAMETHROWER] =
+ {
+ .effect = EFFECT_BURN_HIT,
+ .power = 95,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MIST] =
+ {
+ .effect = EFFECT_MIST,
+ .power = 0,
+ .type = TYPE_ICE,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_WATER_GUN] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 40,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_HYDRO_PUMP] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 120,
+ .type = TYPE_WATER,
+ .accuracy = 80,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SURF] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 95,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ICE_BEAM] =
+ {
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 95,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BLIZZARD] =
+ {
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 120,
+ .type = TYPE_ICE,
+ .accuracy = 70,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PSYBEAM] =
+ {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 65,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BUBBLE_BEAM] =
+ {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 65,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_AURORA_BEAM] =
+ {
+ .effect = EFFECT_ATTACK_DOWN_HIT,
+ .power = 65,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HYPER_BEAM] =
+ {
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_PECK] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 35,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DRILL_PECK] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SUBMISSION] =
+ {
+ .effect = EFFECT_RECOIL,
+ .power = 80,
+ .type = TYPE_FIGHTING,
+ .accuracy = 80,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_LOW_KICK] =
+ {
+ .effect = EFFECT_LOW_KICK,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_COUNTER] =
+ {
+ .effect = EFFECT_COUNTER,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = -5,
+ .flags = FLAG_MAKES_CONTACT | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SEISMIC_TOSS] =
+ {
+ .effect = EFFECT_LEVEL_DAMAGE,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_STRENGTH] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ABSORB] =
+ {
+ .effect = EFFECT_ABSORB,
+ .power = 20,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MEGA_DRAIN] =
+ {
+ .effect = EFFECT_ABSORB,
+ .power = 40,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_LEECH_SEED] =
+ {
+ .effect = EFFECT_LEECH_SEED,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_GROWTH] =
+ {
+ .effect = EFFECT_SPECIAL_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_RAZOR_LEAF] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 55,
+ .type = TYPE_GRASS,
+ .accuracy = 95,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SOLAR_BEAM] =
+ {
+ .effect = EFFECT_SOLARBEAM,
+ .power = 120,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_POISON_POWDER] =
+ {
+ .effect = EFFECT_POISON,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 75,
+ .pp = 35,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_STUN_SPORE] =
+ {
+ .effect = EFFECT_PARALYZE,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 75,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SLEEP_POWDER] =
+ {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 75,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PETAL_DANCE] =
+ {
+ .effect = EFFECT_RAMPAGE,
+ .power = 70,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_RANDOM,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_STRING_SHOT] =
+ {
+ .effect = EFFECT_SPEED_DOWN,
+ .power = 0,
+ .type = TYPE_BUG,
+ .accuracy = 95,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DRAGON_RAGE] =
+ {
+ .effect = EFFECT_DRAGON_RAGE,
+ .power = 1,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FIRE_SPIN] =
+ {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_FIRE,
+ .accuracy = 70,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_THUNDER_SHOCK] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 40,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_THUNDERBOLT] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 95,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_THUNDER_WAVE] =
+ {
+ .effect = EFFECT_PARALYZE,
+ .power = 0,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_THUNDER] =
+ {
+ .effect = EFFECT_THUNDER,
+ .power = 120,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 70,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ROCK_THROW] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 50,
+ .type = TYPE_ROCK,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_EARTHQUAKE] =
+ {
+ .effect = EFFECT_EARTHQUAKE,
+ .power = 100,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FISSURE] =
+ {
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_GROUND,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DIG] =
+ {
+ .effect = EFFECT_SEMI_INVULNERABLE,
+ .power = 60,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_TOXIC] =
+ {
+ .effect = EFFECT_TOXIC,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_CONFUSION] =
+ {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 50,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PSYCHIC] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 90,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HYPNOSIS] =
+ {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 60,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MEDITATE] =
+ {
+ .effect = EFFECT_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_AGILITY] =
+ {
+ .effect = EFFECT_SPEED_UP_2,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_QUICK_ATTACK] =
+ {
+ .effect = EFFECT_QUICK_ATTACK,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 1,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_RAGE] =
+ {
+ .effect = EFFECT_RAGE,
+ .power = 20,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_TELEPORT] =
+ {
+ .effect = EFFECT_TELEPORT,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_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 = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MIMIC] =
+ {
+ .effect = EFFECT_MIMIC,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_SCREECH] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DOUBLE_TEAM] =
+ {
+ .effect = EFFECT_EVASION_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_RECOVER] =
+ {
+ .effect = EFFECT_RESTORE_HP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_HARDEN] =
+ {
+ .effect = EFFECT_DEFENSE_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_MINIMIZE] =
+ {
+ .effect = EFFECT_MINIMIZE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_SMOKESCREEN] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_CONFUSE_RAY] =
+ {
+ .effect = EFFECT_CONFUSE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_WITHDRAW] =
+ {
+ .effect = EFFECT_DEFENSE_UP,
+ .power = 0,
+ .type = TYPE_WATER,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_DEFENSE_CURL] =
+ {
+ .effect = EFFECT_DEFENSE_CURL,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_BARRIER] =
+ {
+ .effect = EFFECT_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_LIGHT_SCREEN] =
+ {
+ .effect = EFFECT_LIGHT_SCREEN,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_HAZE] =
+ {
+ .effect = EFFECT_HAZE,
+ .power = 0,
+ .type = TYPE_ICE,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_REFLECT] =
+ {
+ .effect = EFFECT_REFLECT,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_FOCUS_ENERGY] =
+ {
+ .effect = EFFECT_FOCUS_ENERGY,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_BIDE] =
+ {
+ .effect = EFFECT_BIDE,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_METRONOME] =
+ {
+ .effect = EFFECT_METRONOME,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_MIRROR_MOVE] =
+ {
+ .effect = EFFECT_MIRROR_MOVE,
+ .power = 0,
+ .type = TYPE_FLYING,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_SELF_DESTRUCT] =
+ {
+ .effect = EFFECT_EXPLOSION,
+ .power = 200,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_EGG_BOMB] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 100,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_LICK] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 20,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SMOG] =
+ {
+ .effect = EFFECT_POISON_HIT,
+ .power = 20,
+ .type = TYPE_POISON,
+ .accuracy = 70,
+ .pp = 20,
+ .secondaryEffectChance = 40,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SLUDGE] =
+ {
+ .effect = EFFECT_POISON_HIT,
+ .power = 65,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BONE_CLUB] =
+ {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 65,
+ .type = TYPE_GROUND,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FIRE_BLAST] =
+ {
+ .effect = EFFECT_BURN_HIT,
+ .power = 120,
+ .type = TYPE_FIRE,
+ .accuracy = 85,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_WATERFALL] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_CLAMP] =
+ {
+ .effect = EFFECT_TRAP,
+ .power = 35,
+ .type = TYPE_WATER,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SWIFT] =
+ {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SKULL_BASH] =
+ {
+ .effect = EFFECT_SKULL_BASH,
+ .power = 100,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SPIKE_CANNON] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 20,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_CONSTRICT] =
+ {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 10,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 35,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_AMNESIA] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_KINESIS] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 80,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SOFT_BOILED] =
+ {
+ .effect = EFFECT_SOFTBOILED,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HI_JUMP_KICK] =
+ {
+ .effect = EFFECT_RECOIL_IF_MISS,
+ .power = 85,
+ .type = TYPE_FIGHTING,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_GLARE] =
+ {
+ .effect = EFFECT_PARALYZE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DREAM_EATER] =
+ {
+ .effect = EFFECT_DREAM_EATER,
+ .power = 100,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_POISON_GAS] =
+ {
+ .effect = EFFECT_POISON,
+ .power = 0,
+ .type = TYPE_POISON,
+ .accuracy = 55,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BARRAGE] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_NORMAL,
+ .accuracy = 85,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_LEECH_LIFE] =
+ {
+ .effect = EFFECT_ABSORB,
+ .power = 20,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_LOVELY_KISS] =
+ {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SKY_ATTACK] =
+ {
+ .effect = EFFECT_SKY_ATTACK,
+ .power = 140,
+ .type = TYPE_FLYING,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_TRANSFORM] =
+ {
+ .effect = EFFECT_TRANSFORM,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_BUBBLE] =
+ {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 20,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DIZZY_PUNCH] =
+ {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SPORE] =
+ {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FLASH] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 70,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PSYWAVE] =
+ {
+ .effect = EFFECT_PSYWAVE,
+ .power = 1,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 80,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SPLASH] =
+ {
+ .effect = EFFECT_SPLASH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_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 = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_CRABHAMMER] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 90,
+ .type = TYPE_WATER,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_EXPLOSION] =
+ {
+ .effect = EFFECT_EXPLOSION,
+ .power = 250,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FURY_SWIPES] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 18,
+ .type = TYPE_NORMAL,
+ .accuracy = 80,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BONEMERANG] =
+ {
+ .effect = EFFECT_DOUBLE_HIT,
+ .power = 50,
+ .type = TYPE_GROUND,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_REST] =
+ {
+ .effect = EFFECT_REST,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_ROCK_SLIDE] =
+ {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 75,
+ .type = TYPE_ROCK,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HYPER_FANG] =
+ {
+ .effect = EFFECT_FLINCH_HIT,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SHARPEN] =
+ {
+ .effect = EFFECT_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_CONVERSION] =
+ {
+ .effect = EFFECT_CONVERSION,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_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 = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SUPER_FANG] =
+ {
+ .effect = EFFECT_SUPER_FANG,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SLASH] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SUBSTITUTE] =
+ {
+ .effect = EFFECT_SUBSTITUTE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_STRUGGLE] =
+ {
+ .effect = EFFECT_RECOIL,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 1,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SKETCH] =
+ {
+ .effect = EFFECT_SKETCH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 1,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_TRIPLE_KICK] =
+ {
+ .effect = EFFECT_TRIPLE_KICK,
+ .power = 10,
+ .type = TYPE_FIGHTING,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_THIEF] =
+ {
+ .effect = EFFECT_THIEF,
+ .power = 40,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SPIDER_WEB] =
+ {
+ .effect = EFFECT_MEAN_LOOK,
+ .power = 0,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MIND_READER] =
+ {
+ .effect = EFFECT_LOCK_ON,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_NIGHTMARE] =
+ {
+ .effect = EFFECT_NIGHTMARE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FLAME_WHEEL] =
+ {
+ .effect = EFFECT_THAW_HIT,
+ .power = 60,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SNORE] =
+ {
+ .effect = EFFECT_SNORE,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_CURSE] =
+ {
+ .effect = EFFECT_CURSE,
+ .power = 0,
+ .type = TYPE_MYSTERY,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_FLAIL] =
+ {
+ .effect = EFFECT_FLAIL,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_CONVERSION_2] =
+ {
+ .effect = EFFECT_CONVERSION_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
-#endif // GUARD_DATA_BATTLE_MOVES
+ [MOVE_AEROBLAST] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 100,
+ .type = TYPE_FLYING,
+ .accuracy = 95,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_COTTON_SPORE] =
+ {
+ .effect = EFFECT_SPEED_DOWN_2,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 85,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_REVERSAL] =
+ {
+ .effect = EFFECT_FLAIL,
+ .power = 1,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SPITE] =
+ {
+ .effect = EFFECT_SPITE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_POWDER_SNOW] =
+ {
+ .effect = EFFECT_FREEZE_HIT,
+ .power = 40,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PROTECT] =
+ {
+ .effect = EFFECT_PROTECT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_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 = MOVE_TARGET_SELECTED,
+ .priority = 1,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SCARY_FACE] =
+ {
+ .effect = EFFECT_SPEED_DOWN_2,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FAINT_ATTACK] =
+ {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_DARK,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SWEET_KISS] =
+ {
+ .effect = EFFECT_CONFUSE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 75,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BELLY_DRUM] =
+ {
+ .effect = EFFECT_BELLY_DRUM,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_SLUDGE_BOMB] =
+ {
+ .effect = EFFECT_POISON_HIT,
+ .power = 90,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MUD_SLAP] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN_HIT,
+ .power = 20,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_OCTAZOOKA] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN_HIT,
+ .power = 65,
+ .type = TYPE_WATER,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SPIKES] =
+ {
+ .effect = EFFECT_SPIKES,
+ .power = 0,
+ .type = TYPE_GROUND,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_OPPONENTS_FIELD,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ZAP_CANNON] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 100,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 50,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FORESIGHT] =
+ {
+ .effect = EFFECT_FORESIGHT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DESTINY_BOND] =
+ {
+ .effect = EFFECT_DESTINY_BOND,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_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 = MOVE_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 = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DETECT] =
+ {
+ .effect = EFFECT_PROTECT,
+ .power = 0,
+ .type = TYPE_FIGHTING,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_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 = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_LOCK_ON] =
+ {
+ .effect = EFFECT_LOCK_ON,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_OUTRAGE] =
+ {
+ .effect = EFFECT_RAMPAGE,
+ .power = 90,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_RANDOM,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SANDSTORM] =
+ {
+ .effect = EFFECT_SANDSTORM,
+ .power = 0,
+ .type = TYPE_ROCK,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_GIGA_DRAIN] =
+ {
+ .effect = EFFECT_ABSORB,
+ .power = 60,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ENDURE] =
+ {
+ .effect = EFFECT_ENDURE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_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 = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ROLLOUT] =
+ {
+ .effect = EFFECT_ROLLOUT,
+ .power = 30,
+ .type = TYPE_ROCK,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FALSE_SWIPE] =
+ {
+ .effect = EFFECT_FALSE_SWIPE,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SWAGGER] =
+ {
+ .effect = EFFECT_SWAGGER,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MILK_DRINK] =
+ {
+ .effect = EFFECT_SOFTBOILED,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_SPARK] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 65,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FURY_CUTTER] =
+ {
+ .effect = EFFECT_FURY_CUTTER,
+ .power = 10,
+ .type = TYPE_BUG,
+ .accuracy = 95,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_STEEL_WING] =
+ {
+ .effect = EFFECT_DEFENSE_UP_HIT,
+ .power = 70,
+ .type = TYPE_STEEL,
+ .accuracy = 90,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MEAN_LOOK] =
+ {
+ .effect = EFFECT_MEAN_LOOK,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ATTRACT] =
+ {
+ .effect = EFFECT_ATTRACT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SLEEP_TALK] =
+ {
+ .effect = EFFECT_SLEEP_TALK,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_HEAL_BELL] =
+ {
+ .effect = EFFECT_HEAL_BELL,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_RETURN] =
+ {
+ .effect = EFFECT_RETURN,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_PRESENT] =
+ {
+ .effect = EFFECT_PRESENT,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FRUSTRATION] =
+ {
+ .effect = EFFECT_FRUSTRATION,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SAFEGUARD] =
+ {
+ .effect = EFFECT_SAFEGUARD,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_PAIN_SPLIT] =
+ {
+ .effect = EFFECT_PAIN_SPLIT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SACRED_FIRE] =
+ {
+ .effect = EFFECT_THAW_HIT,
+ .power = 100,
+ .type = TYPE_FIRE,
+ .accuracy = 95,
+ .pp = 5,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MAGNITUDE] =
+ {
+ .effect = EFFECT_MAGNITUDE,
+ .power = 1,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DYNAMIC_PUNCH] =
+ {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 100,
+ .type = TYPE_FIGHTING,
+ .accuracy = 50,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MEGAHORN] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 120,
+ .type = TYPE_BUG,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DRAGON_BREATH] =
+ {
+ .effect = EFFECT_PARALYZE_HIT,
+ .power = 60,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BATON_PASS] =
+ {
+ .effect = EFFECT_BATON_PASS,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ENCORE] =
+ {
+ .effect = EFFECT_ENCORE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PURSUIT] =
+ {
+ .effect = EFFECT_PURSUIT,
+ .power = 40,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_RAPID_SPIN] =
+ {
+ .effect = EFFECT_RAPID_SPIN,
+ .power = 20,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SWEET_SCENT] =
+ {
+ .effect = EFFECT_EVASION_DOWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_IRON_TAIL] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 100,
+ .type = TYPE_STEEL,
+ .accuracy = 75,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_METAL_CLAW] =
+ {
+ .effect = EFFECT_ATTACK_UP_HIT,
+ .power = 50,
+ .type = TYPE_STEEL,
+ .accuracy = 95,
+ .pp = 35,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_VITAL_THROW] =
+ {
+ .effect = EFFECT_VITAL_THROW,
+ .power = 70,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -1,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MORNING_SUN] =
+ {
+ .effect = EFFECT_MORNING_SUN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_SYNTHESIS] =
+ {
+ .effect = EFFECT_SYNTHESIS,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_MOONLIGHT] =
+ {
+ .effect = EFFECT_MOONLIGHT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_HIDDEN_POWER] =
+ {
+ .effect = EFFECT_HIDDEN_POWER,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_CROSS_CHOP] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 100,
+ .type = TYPE_FIGHTING,
+ .accuracy = 80,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_TWISTER] =
+ {
+ .effect = EFFECT_TWISTER,
+ .power = 40,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_RAIN_DANCE] =
+ {
+ .effect = EFFECT_RAIN_DANCE,
+ .power = 0,
+ .type = TYPE_WATER,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_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 = MOVE_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 = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MIRROR_COAT] =
+ {
+ .effect = EFFECT_MIRROR_COAT,
+ .power = 1,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = -5,
+ .flags = FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_PSYCH_UP] =
+ {
+ .effect = EFFECT_PSYCH_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_EXTREME_SPEED] =
+ {
+ .effect = EFFECT_QUICK_ATTACK,
+ .power = 80,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 1,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ANCIENT_POWER] =
+ {
+ .effect = EFFECT_ALL_STATS_UP_HIT,
+ .power = 60,
+ .type = TYPE_ROCK,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SHADOW_BALL] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 80,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FUTURE_SIGHT] =
+ {
+ .effect = EFFECT_FUTURE_SIGHT,
+ .power = 80,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ROCK_SMASH] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 20,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_WHIRLPOOL] =
+ {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_WATER,
+ .accuracy = 70,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BEAT_UP] =
+ {
+ .effect = EFFECT_BEAT_UP,
+ .power = 10,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FAKE_OUT] =
+ {
+ .effect = EFFECT_FAKE_OUT,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 1,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_UPROAR] =
+ {
+ .effect = EFFECT_UPROAR,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_RANDOM,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_STOCKPILE] =
+ {
+ .effect = EFFECT_STOCKPILE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_SPIT_UP] =
+ {
+ .effect = EFFECT_SPIT_UP,
+ .power = 100,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SWALLOW] =
+ {
+ .effect = EFFECT_SWALLOW,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_HEAT_WAVE] =
+ {
+ .effect = EFFECT_BURN_HIT,
+ .power = 100,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HAIL] =
+ {
+ .effect = EFFECT_HAIL,
+ .power = 0,
+ .type = TYPE_ICE,
+ .accuracy = 0,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_TORMENT] =
+ {
+ .effect = EFFECT_TORMENT,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FLATTER] =
+ {
+ .effect = EFFECT_FLATTER,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_WILL_O_WISP] =
+ {
+ .effect = EFFECT_WILL_O_WISP,
+ .power = 0,
+ .type = TYPE_FIRE,
+ .accuracy = 75,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MEMENTO] =
+ {
+ .effect = EFFECT_MEMENTO,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FACADE] =
+ {
+ .effect = EFFECT_FACADE,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FOCUS_PUNCH] =
+ {
+ .effect = EFFECT_FOCUS_PUNCH,
+ .power = 150,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -3,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_SMELLING_SALT] =
+ {
+ .effect = EFFECT_SMELLINGSALT,
+ .power = 60,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FOLLOW_ME] =
+ {
+ .effect = EFFECT_FOLLOW_ME,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_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 = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_CHARGE] =
+ {
+ .effect = EFFECT_CHARGE,
+ .power = 0,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_TAUNT] =
+ {
+ .effect = EFFECT_TAUNT,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_HELPING_HAND] =
+ {
+ .effect = EFFECT_HELPING_HAND,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 5,
+ .flags = 0,
+ },
+
+ [MOVE_TRICK] =
+ {
+ .effect = EFFECT_TRICK,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ROLE_PLAY] =
+ {
+ .effect = EFFECT_ROLE_PLAY,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_WISH] =
+ {
+ .effect = EFFECT_WISH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_ASSIST] =
+ {
+ .effect = EFFECT_ASSIST,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_INGRAIN] =
+ {
+ .effect = EFFECT_INGRAIN,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_SUPERPOWER] =
+ {
+ .effect = EFFECT_SUPERPOWER,
+ .power = 120,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MAGIC_COAT] =
+ {
+ .effect = EFFECT_MAGIC_COAT,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 4,
+ .flags = 0,
+ },
+
+ [MOVE_RECYCLE] =
+ {
+ .effect = EFFECT_RECYCLE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_REVENGE] =
+ {
+ .effect = EFFECT_REVENGE,
+ .power = 60,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = -4,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BRICK_BREAK] =
+ {
+ .effect = EFFECT_BRICK_BREAK,
+ .power = 75,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_YAWN] =
+ {
+ .effect = EFFECT_YAWN,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_KNOCK_OFF] =
+ {
+ .effect = EFFECT_KNOCK_OFF,
+ .power = 20,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ENDEAVOR] =
+ {
+ .effect = EFFECT_ENDEAVOR,
+ .power = 1,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ERUPTION] =
+ {
+ .effect = EFFECT_ERUPTION,
+ .power = 150,
+ .type = TYPE_FIRE,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SKILL_SWAP] =
+ {
+ .effect = EFFECT_SKILL_SWAP,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_IMPRISON] =
+ {
+ .effect = EFFECT_IMPRISON,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_REFRESH] =
+ {
+ .effect = EFFECT_REFRESH,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_GRUDGE] =
+ {
+ .effect = EFFECT_GRUDGE,
+ .power = 0,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SNATCH] =
+ {
+ .effect = EFFECT_SNATCH,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_DEPENDS,
+ .priority = 4,
+ .flags = FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SECRET_POWER] =
+ {
+ .effect = EFFECT_SECRET_POWER,
+ .power = 70,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_DIVE] =
+ {
+ .effect = EFFECT_SEMI_INVULNERABLE,
+ .power = 60,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ARM_THRUST] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 15,
+ .type = TYPE_FIGHTING,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_CAMOUFLAGE] =
+ {
+ .effect = EFFECT_CAMOUFLAGE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_TAIL_GLOW] =
+ {
+ .effect = EFFECT_SPECIAL_ATTACK_UP_2,
+ .power = 0,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_LUSTER_PURGE] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
+ .power = 70,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MIST_BALL] =
+ {
+ .effect = EFFECT_SPECIAL_ATTACK_DOWN_HIT,
+ .power = 70,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_FEATHER_DANCE] =
+ {
+ .effect = EFFECT_ATTACK_DOWN_2,
+ .power = 0,
+ .type = TYPE_FLYING,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_TEETER_DANCE] =
+ {
+ .effect = EFFECT_TEETER_DANCE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_FOES_AND_ALLY,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED,
+ },
+
+ [MOVE_BLAZE_KICK] =
+ {
+ .effect = EFFECT_BLAZE_KICK,
+ .power = 85,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 10,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MUD_SPORT] =
+ {
+ .effect = EFFECT_MUD_SPORT,
+ .power = 0,
+ .type = TYPE_GROUND,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_ICE_BALL] =
+ {
+ .effect = EFFECT_ROLLOUT,
+ .power = 30,
+ .type = TYPE_ICE,
+ .accuracy = 90,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_NEEDLE_ARM] =
+ {
+ .effect = EFFECT_FLINCH_MINIMIZE_HIT,
+ .power = 60,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SLACK_OFF] =
+ {
+ .effect = EFFECT_RESTORE_HP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_HYPER_VOICE] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 90,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_POISON_FANG] =
+ {
+ .effect = EFFECT_POISON_FANG,
+ .power = 50,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_CRUSH_CLAW] =
+ {
+ .effect = EFFECT_DEFENSE_DOWN_HIT,
+ .power = 75,
+ .type = TYPE_NORMAL,
+ .accuracy = 95,
+ .pp = 10,
+ .secondaryEffectChance = 50,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_BLAST_BURN] =
+ {
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_HYDRO_CANNON] =
+ {
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_WATER,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_METEOR_MASH] =
+ {
+ .effect = EFFECT_ATTACK_UP_HIT,
+ .power = 100,
+ .type = TYPE_STEEL,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ASTONISH] =
+ {
+ .effect = EFFECT_FLINCH_MINIMIZE_HIT,
+ .power = 30,
+ .type = TYPE_GHOST,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_WEATHER_BALL] =
+ {
+ .effect = EFFECT_WEATHER_BALL,
+ .power = 50,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_AROMATHERAPY] =
+ {
+ .effect = EFFECT_HEAL_BELL,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 0,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_FAKE_TEARS] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2,
+ .power = 0,
+ .type = TYPE_DARK,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_AIR_CUTTER] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 55,
+ .type = TYPE_FLYING,
+ .accuracy = 95,
+ .pp = 25,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_OVERHEAT] =
+ {
+ .effect = EFFECT_OVERHEAT,
+ .power = 140,
+ .type = TYPE_FIRE,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ODOR_SLEUTH] =
+ {
+ .effect = EFFECT_FORESIGHT,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_ROCK_TOMB] =
+ {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 50,
+ .type = TYPE_ROCK,
+ .accuracy = 80,
+ .pp = 10,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SILVER_WIND] =
+ {
+ .effect = EFFECT_ALL_STATS_UP_HIT,
+ .power = 60,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_METAL_SOUND] =
+ {
+ .effect = EFFECT_SPECIAL_DEFENSE_DOWN_2,
+ .power = 0,
+ .type = TYPE_STEEL,
+ .accuracy = 85,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_GRASS_WHISTLE] =
+ {
+ .effect = EFFECT_SLEEP,
+ .power = 0,
+ .type = TYPE_GRASS,
+ .accuracy = 55,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_TICKLE] =
+ {
+ .effect = EFFECT_TICKLE,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_COSMIC_POWER] =
+ {
+ .effect = EFFECT_COSMIC_POWER,
+ .power = 0,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_WATER_SPOUT] =
+ {
+ .effect = EFFECT_ERUPTION,
+ .power = 150,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SIGNAL_BEAM] =
+ {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 75,
+ .type = TYPE_BUG,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SHADOW_PUNCH] =
+ {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_GHOST,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_EXTRASENSORY] =
+ {
+ .effect = EFFECT_FLINCH_MINIMIZE_HIT,
+ .power = 80,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_SKY_UPPERCUT] =
+ {
+ .effect = EFFECT_SKY_UPPERCUT,
+ .power = 85,
+ .type = TYPE_FIGHTING,
+ .accuracy = 90,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SAND_TOMB] =
+ {
+ .effect = EFFECT_TRAP,
+ .power = 15,
+ .type = TYPE_GROUND,
+ .accuracy = 70,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SHEER_COLD] =
+ {
+ .effect = EFFECT_OHKO,
+ .power = 1,
+ .type = TYPE_ICE,
+ .accuracy = 30,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_MUDDY_WATER] =
+ {
+ .effect = EFFECT_ACCURACY_DOWN_HIT,
+ .power = 95,
+ .type = TYPE_WATER,
+ .accuracy = 85,
+ .pp = 10,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_BOTH,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BULLET_SEED] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 10,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_AERIAL_ACE] =
+ {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_FLYING,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_ICICLE_SPEAR] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 10,
+ .type = TYPE_ICE,
+ .accuracy = 100,
+ .pp = 30,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_IRON_DEFENSE] =
+ {
+ .effect = EFFECT_DEFENSE_UP_2,
+ .power = 0,
+ .type = TYPE_STEEL,
+ .accuracy = 0,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_BLOCK] =
+ {
+ .effect = EFFECT_MEAN_LOOK,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_HOWL] =
+ {
+ .effect = EFFECT_ATTACK_UP,
+ .power = 0,
+ .type = TYPE_NORMAL,
+ .accuracy = 0,
+ .pp = 40,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_DRAGON_CLAW] =
+ {
+ .effect = EFFECT_HIT,
+ .power = 80,
+ .type = TYPE_DRAGON,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_FRENZY_PLANT] =
+ {
+ .effect = EFFECT_RECHARGE,
+ .power = 150,
+ .type = TYPE_GRASS,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_BULK_UP] =
+ {
+ .effect = EFFECT_BULK_UP,
+ .power = 0,
+ .type = TYPE_FIGHTING,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_BOUNCE] =
+ {
+ .effect = EFFECT_SEMI_INVULNERABLE,
+ .power = 85,
+ .type = TYPE_FLYING,
+ .accuracy = 85,
+ .pp = 5,
+ .secondaryEffectChance = 30,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MUD_SHOT] =
+ {
+ .effect = EFFECT_SPEED_DOWN_HIT,
+ .power = 55,
+ .type = TYPE_GROUND,
+ .accuracy = 95,
+ .pp = 15,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_POISON_TAIL] =
+ {
+ .effect = EFFECT_POISON_TAIL,
+ .power = 50,
+ .type = TYPE_POISON,
+ .accuracy = 100,
+ .pp = 25,
+ .secondaryEffectChance = 10,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_COVET] =
+ {
+ .effect = EFFECT_THIEF,
+ .power = 40,
+ .type = TYPE_NORMAL,
+ .accuracy = 100,
+ .pp = 40,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ },
+
+ [MOVE_VOLT_TACKLE] =
+ {
+ .effect = EFFECT_DOUBLE_EDGE,
+ .power = 120,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_MAGICAL_LEAF] =
+ {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_GRASS,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_WATER_SPORT] =
+ {
+ .effect = EFFECT_WATER_SPORT,
+ .power = 0,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_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 = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_LEAF_BLADE] =
+ {
+ .effect = EFFECT_HIGH_CRITICAL,
+ .power = 70,
+ .type = TYPE_GRASS,
+ .accuracy = 100,
+ .pp = 15,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DRAGON_DANCE] =
+ {
+ .effect = EFFECT_DRAGON_DANCE,
+ .power = 0,
+ .type = TYPE_DRAGON,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_USER,
+ .priority = 0,
+ .flags = FLAG_SNATCH_AFFECTED,
+ },
+
+ [MOVE_ROCK_BLAST] =
+ {
+ .effect = EFFECT_MULTI_HIT,
+ .power = 25,
+ .type = TYPE_ROCK,
+ .accuracy = 80,
+ .pp = 10,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_SHOCK_WAVE] =
+ {
+ .effect = EFFECT_ALWAYS_HIT,
+ .power = 60,
+ .type = TYPE_ELECTRIC,
+ .accuracy = 0,
+ .pp = 20,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_WATER_PULSE] =
+ {
+ .effect = EFFECT_CONFUSE_HIT,
+ .power = 60,
+ .type = TYPE_WATER,
+ .accuracy = 100,
+ .pp = 20,
+ .secondaryEffectChance = 20,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+
+ [MOVE_DOOM_DESIRE] =
+ {
+ .effect = EFFECT_FUTURE_SIGHT,
+ .power = 120,
+ .type = TYPE_STEEL,
+ .accuracy = 85,
+ .pp = 5,
+ .secondaryEffectChance = 0,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = 0,
+ },
+
+ [MOVE_PSYCHO_BOOST] =
+ {
+ .effect = EFFECT_OVERHEAT,
+ .power = 140,
+ .type = TYPE_PSYCHIC,
+ .accuracy = 90,
+ .pp = 5,
+ .secondaryEffectChance = 100,
+ .target = MOVE_TARGET_SELECTED,
+ .priority = 0,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ },
+};
diff --git a/src/data/decoration/description.h b/src/data/decoration/description.h
index ba4c3dd54..b56f43eb6 100644
--- a/src/data/decoration/description.h
+++ b/src/data/decoration/description.h
@@ -1,10 +1,3 @@
-//
-// Created by scott on 10/21/2017.
-//
-
-#ifndef GUARD_DATA_DECORATION_DESCRIPTION_H
-#define GUARD_DATA_DECORATION_DESCRIPTION_H
-
const u8 DecorDesc_SMALL_DESK[] = _(
"A small desk built\n"
"for one.");
@@ -578,4 +571,3 @@ const u8 DecorDesc_REGISTEEL_DOLL[] = _(
"A large doll.\n"
"Place it on a mat\n"
"or a desk.");
-#endif //GUARD_DATA_DECORATION_DESCRIPTION_H
diff --git a/src/data/decoration/header.h b/src/data/decoration/header.h
index 64bed1c7e..a909bd9fd 100644
--- a/src/data/decoration/header.h
+++ b/src/data/decoration/header.h
@@ -1,10 +1,3 @@
-//
-// Created by scott on 10/21/2017.
-//
-
-#ifndef GUARD_DATA_DECORATION_HEADER_H
-#define GUARD_DATA_DECORATION_HEADER_H
-
const struct Decoration gDecorations[] = {
{
DECOR_NONE,
@@ -1096,5 +1089,3 @@ const struct Decoration gDecorations[] = {
DecorDesc_REGISTEEL_DOLL,
DecorGfx_REGISTEEL_DOLL}
};
-
-#endif //GUARD_DATA_DECORATION_HEADER_H
diff --git a/src/data/decoration/icon.h b/src/data/decoration/icon.h
index 1f11bc19f..58d9cea7b 100644
--- a/src/data/decoration/icon.h
+++ b/src/data/decoration/icon.h
@@ -1,11 +1,4 @@
-//
-// Created by scott on 10/21/2017.
-//
-
-#ifndef GUARD_ICON_H
-#define GUARD_ICON_H
-
-const u8 *const gUnknown_085A6BE8[][2] = {
+const u32 *const gUnknown_085A6BE8[][2] = {
{gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
{NULL, NULL},
{NULL, NULL},
@@ -128,5 +121,3 @@ const u8 *const gUnknown_085A6BE8[][2] = {
{gUnknown_08DB9DD4, gUnknown_08DB9EE4},
{gUnknown_08DBA020, gUnknown_08DBA12C}
};
-
-#endif //GUARD_ICON_H
diff --git a/src/data/decoration/tilemaps.h b/src/data/decoration/tilemaps.h
index 1cca7ae0b..12fe31dc0 100644
--- a/src/data/decoration/tilemaps.h
+++ b/src/data/decoration/tilemaps.h
@@ -1,10 +1,3 @@
-//
-// Created by scott on 10/21/2017.
-//
-
-#ifndef GUARD_TILEMAPS_H
-#define GUARD_TILEMAPS_H
-
const u8 Unknown_085A6FB0[] = {
0x00, 0x01, 0x02, 0x03
};
@@ -235,5 +228,3 @@ const struct {
Unknown_085A7198,
0x18
}};
-
-#endif //GUARD_TILEMAPS_H
diff --git a/src/data/decoration/tiles.h b/src/data/decoration/tiles.h
index 6b3ed699f..2b91cb53d 100644
--- a/src/data/decoration/tiles.h
+++ b/src/data/decoration/tiles.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_DATA_DECORATION_TILES
-#define GUARD_DATA_DECORATION_TILES
-
const u16 DecorGfx_SMALL_DESK[] = {
0x87
};
@@ -642,5 +639,3 @@ const u16 DecorGfx_REGICE_DOLL[] = {
const u16 DecorGfx_REGISTEEL_DOLL[] = {
EVENT_OBJ_GFX_BIG_REGISTEEL_DOLL
};
-
-#endif // GUARD_DATA_DECORATION_TILES
diff --git a/src/data/field_event_obj/base_oam.h b/src/data/field_event_obj/base_oam.h
index 1aa6987c3..543382d43 100755
--- a/src/data/field_event_obj/base_oam.h
+++ b/src/data/field_event_obj/base_oam.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_BASE_OAM_H
-#define GUARD_BASE_OAM_H
-
const struct OamData gEventObjectBaseOam_8x8 = {
.shape = 0,
.size = 0,
@@ -48,5 +45,3 @@ const struct OamData gEventObjectBaseOam_64x64 = {
.size = 3,
.priority = 2
};
-
-#endif //GUARD_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
index beb59974f..f5ef15af9 100755
--- a/src/data/field_event_obj/berry_tree_graphics_tables.h
+++ b/src/data/field_event_obj/berry_tree_graphics_tables.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_BERRY_TREE_GRAPHICS_TABLES_H
-#define GUARD_BERRY_TREE_GRAPHICS_TABLES_H
-
const struct SpriteFrameImage gEventObjectPicTable_PechaBerryTree[] = {
overworld_frame(gEventObjectPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gEventObjectPic_BerryTreeSprout, 2, 2, 0),
@@ -565,6 +562,3 @@ const u8 *const gBerryTreeEventObjectGraphicsIdTablePointers[] = {
gBerryTreeEventObjectGraphicsIdTable,
gBerryTreeEventObjectGraphicsIdTable,
};
-
-
-#endif //GUARD_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
index 9b897651d..6203e0548 100755
--- a/src/data/field_event_obj/event_object_anims.h
+++ b/src/data/field_event_obj/event_object_anims.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_EVENT_OBJECT_ANIMS_H
-#define GUARD_EVENT_OBJECT_ANIMS_H
-
const union AnimCmd gEventObjectImageAnim_StayStill[] =
{
ANIMCMD_FRAME(0, 8),
@@ -1172,5 +1169,3 @@ const struct UnkStruct_085094AC gUnknown_085094AC[] = {
{0, 0, 0, 0},
},
};
-
-#endif //GUARD_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
index 4b65e694f..f7f1f33ba 100755
--- a/src/data/field_event_obj/event_object_graphics.h
+++ b/src/data/field_event_obj/event_object_graphics.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_EVENT_OBJECT_GFX_H
-#define GUARD_EVENT_OBJECT_GFX_H
-
const u32 gEventObjectPic_BrendanNormal[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/walking.4bpp");
const u32 gEventObjectPic_BrendanRunning[] = INCBIN_U32("graphics/event_objects/pics/people/brendan/running.4bpp");
const u16 gEventObjectPalette8[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_08.gbapal");
@@ -307,7 +304,7 @@ const u16 gFieldEffectObjectPalette0[] = INCBIN_U16("graphics/event_objects/pale
const u16 gFieldEffectObjectPalette1[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_01.gbapal");
const u32 gFieldEffectObjectPic_GroundImpactDust[] = INCBIN_U32("graphics/event_objects/pics/effects/ground_impact_dust.4bpp");
const u32 gFieldEffectObjectPic_BikeHopTallGrass[] = INCBIN_U32("graphics/event_objects/pics/effects/bike_hop_tall_grass.4bpp");
-const u32 gUnusedGrass[] = INCBIN_U32("graphics/event_objects/pics/effects/unused_grass.4bpp");
+const u32 gUnusedGrass[] = INCBIN_U32("graphics/event_objects/pics/effects/unused_grass.4bpp");
const u32 gFieldEffectObjectPic_Unknown16[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_16.4bpp");
const u32 gFieldEffectObjectPic_Unknown17[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_17.4bpp");
const u32 gFieldEffectObjectPic_Unknown18[] = INCBIN_U32("graphics/event_objects/pics/effects/unknown_18.4bpp");
@@ -363,5 +360,3 @@ const u32 gEventObjectPic_Lugia[] = INCBIN_U32("graphics/event_objects/pics/poke
const u16 gEventObjectPalette32[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_32.gbapal");
const u32 gEventObjectPic_HoOh[] = INCBIN_U32("graphics/event_objects/pics/pokemon/ho_oh.4bpp");
const u16 gEventObjectPalette31[] = INCBIN_U16("graphics/event_objects/palettes/field_object_palette_31.gbapal");
-
-#endif //GUARD_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
index ebc324b08..1f89cc98d 100755
--- a/src/data/field_event_obj/event_object_graphics_info.h
+++ b/src/data/field_event_obj/event_object_graphics_info.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_EVENT_OBJECT_GRAPHICS_INFO_H
-#define GUARD_EVENT_OBJECT_GRAPHICS_INFO_H
-
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanNormal = {0xFFFF, EVENT_OBJ_PAL_TAG_8, EVENT_OBJ_PAL_TAG_10, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanMachBike = {0xFFFF, EVENT_OBJ_PAL_TAG_8, EVENT_OBJ_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanAcroBike = {0xFFFF, EVENT_OBJ_PAL_TAG_8, EVENT_OBJ_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
@@ -246,5 +243,3 @@ const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireBrenda
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireMay = {0xFFFF, EVENT_OBJ_PAL_TAG_34, EVENT_OBJ_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RubySapphireMay, gDummySpriteAffineAnimTable};
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lugia = {0xFFFF, EVENT_OBJ_PAL_TAG_32, EVENT_OBJ_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Lugia, gDummySpriteAffineAnimTable};
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HoOh = {0xFFFF, EVENT_OBJ_PAL_TAG_31, EVENT_OBJ_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_HoOh, gEventObjectPicTable_HoOh, gDummySpriteAffineAnimTable};
-
-#endif //GUARD_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
index 3f726e30e..f57e294c3 100755
--- a/src/data/field_event_obj/event_object_graphics_info_pointers.h
+++ b/src/data/field_event_obj/event_object_graphics_info_pointers.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_EVENT_OBJECT_GRAPHICS_INFO_POINTERS_H
-#define GUARD_EVENT_OBJECT_GRAPHICS_INFO_POINTERS_H
-
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanNormal;
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanMachBike;
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanSurfing;
@@ -500,5 +497,3 @@ const struct EventObjectGraphicsInfo *const gMauvilleOldManGraphicsInfoPointers[
&gEventObjectGraphicsInfo_UnusedMauvilleOldMan1,
&gEventObjectGraphicsInfo_UnusedMauvilleOldMan2,
};
-
-#endif //GUARD_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
index bd1ad1a25..5c8be195d 100755
--- a/src/data/field_event_obj/event_object_pic_tables.h
+++ b/src/data/field_event_obj/event_object_pic_tables.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_EVENT_OBJECT_PIC_TABLES_H
-#define GUARD_EVENT_OBJECT_PIC_TABLES_H
-
const struct SpriteFrameImage gEventObjectPicTable_BrendanNormal[] = {
overworld_frame(gEventObjectPic_BrendanNormal, 2, 4, 0),
overworld_frame(gEventObjectPic_BrendanNormal, 2, 4, 1),
@@ -2175,5 +2172,3 @@ const struct SpriteFrameImage gEventObjectPicTable_RubySapphireMay[] = {
overworld_frame(gEventObjectPic_RubySapphireMayNormal, 2, 4, 7),
overworld_frame(gEventObjectPic_RubySapphireMayNormal, 2, 4, 8),
};
-
-#endif //GUARD_EVENT_OBJECT_PIC_TABLES_H
diff --git a/src/data/field_event_obj/event_object_subsprites.h b/src/data/field_event_obj/event_object_subsprites.h
index db5fddf1e..5da262731 100755
--- a/src/data/field_event_obj/event_object_subsprites.h
+++ b/src/data/field_event_obj/event_object_subsprites.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_EVENT_OBJECT_SUBSPRITES_H
-#define GUARD_EVENT_OBJECT_SUBSPRITES_H
-
const struct Subsprite gEventObjectSpriteOamTable_16x16_0[] = {
{ -8, -8, 0, 1, 0, 2}
};
@@ -338,5 +335,3 @@ const struct SubspriteTable gEventObjectSpriteOamTables_SubmarineShadow[] = {
{16, gEventObjectSpriteOamTable_SubmarineShadow_3},
{16, gEventObjectSpriteOamTable_SubmarineShadow_3}
};
-
-#endif //GUARD_EVENT_OBJECT_SUBSPRITES_H
diff --git a/src/data/field_event_obj/field_effect_object_template_pointers.h b/src/data/field_event_obj/field_effect_object_template_pointers.h
index 3b08a5ff1..32d2b069a 100755
--- a/src/data/field_event_obj/field_effect_object_template_pointers.h
+++ b/src/data/field_event_obj/field_effect_object_template_pointers.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H
-#define GUARD_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H
-
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall;
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium;
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge;
@@ -78,5 +75,3 @@ const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = {
&gFieldEffectObjectTemplate_Unknown35,
&gFieldEffectObjectTemplate_Rayquaza,
};
-
-#endif //GUARD_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H
diff --git a/src/data/field_event_obj/field_effect_objects.h b/src/data/field_event_obj/field_effect_objects.h
index 33fe66fe2..a3944de36 100755
--- a/src/data/field_event_obj/field_effect_objects.h
+++ b/src/data/field_event_obj/field_effect_objects.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_FIELD_EFFECT_OBJECTS_H
-#define GUARD_FIELD_EFFECT_OBJECTS_H
-
const struct SpritePalette gFieldEffectObjectPaletteInfo0 = {gFieldEffectObjectPalette0, 0x1004};
const struct SpritePalette gFieldEffectObjectPaletteInfo1 = {gFieldEffectObjectPalette1, 0x1005};
@@ -91,7 +88,7 @@ const union AnimCmd *const gFieldEffectObjectImageAnimTable_Ripple[] =
gFieldEffectObjectImageAnim_850CAE0,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Ripple = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Ripple, gFieldEffectObjectPicTable_Ripple, gDummySpriteAffineAnimTable, sub_81561D0};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Ripple = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Ripple, gFieldEffectObjectPicTable_Ripple, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
const struct SpriteFrameImage gFieldEffectObjectPicTable_Ash[] = {
overworld_frame(gFieldEffectObjectPic_Ash, 2, 2, 0),
@@ -124,25 +121,25 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_SurfBlob[] = {
overworld_frame(gFieldEffectObjectPic_SurfBlob, 4, 4, 2),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CB94[] =
+const union AnimCmd gSurfBlobAnim_FaceSouth[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CB9C[] =
+const union AnimCmd gSurfBlobAnim_FaceNorth[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CBA4[] =
+const union AnimCmd gSurfBlobAnim_FaceWest[] =
{
ANIMCMD_FRAME(2, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CBAC[] =
+const union AnimCmd gSurfBlobAnim_FaceEast[] =
{
ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
ANIMCMD_JUMP(0),
@@ -150,10 +147,10 @@ const union AnimCmd gFieldEffectObjectImageAnim_850CBAC[] =
const union AnimCmd *const gFieldEffectObjectImageAnimTable_SurfBlob[] =
{
- gFieldEffectObjectImageAnim_850CB94,
- gFieldEffectObjectImageAnim_850CB9C,
- gFieldEffectObjectImageAnim_850CBA4,
- gFieldEffectObjectImageAnim_850CBAC,
+ gSurfBlobAnim_FaceSouth,
+ gSurfBlobAnim_FaceNorth,
+ gSurfBlobAnim_FaceWest,
+ gSurfBlobAnim_FaceEast,
};
const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_32x32, gFieldEffectObjectImageAnimTable_SurfBlob, gFieldEffectObjectPicTable_SurfBlob, gDummySpriteAffineAnimTable, UpdateSurfBlobFieldEffect};
@@ -562,7 +559,7 @@ const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown17[] =
gFieldEffectObjectImageAnim_850D05C,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown17 = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown17, gFieldEffectObjectPicTable_Unknown17, gDummySpriteAffineAnimTable, sub_81561D0};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown17 = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown17, gFieldEffectObjectPicTable_Unknown17, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown18[] = {
overworld_frame(gFieldEffectObjectPic_Unknown18, 2, 2, 0),
@@ -587,7 +584,7 @@ const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown18[] =
gFieldEffectObjectImageAnim_850D0C0,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown18 = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown18, gFieldEffectObjectPicTable_Unknown18, gDummySpriteAffineAnimTable, sub_81561D0};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown18 = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown18, gFieldEffectObjectPicTable_Unknown18, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown19[] = {
overworld_frame(gFieldEffectObjectPic_Unknown19, 2, 2, 0),
@@ -610,7 +607,7 @@ const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown19[] =
gFieldEffectObjectImageAnim_850D118,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown19 = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown19, gFieldEffectObjectPicTable_Unknown19, gDummySpriteAffineAnimTable, sub_81561D0};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown19 = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown19, gFieldEffectObjectPicTable_Unknown19, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown29[] = {
overworld_frame(gFieldEffectObjectPic_Unknown29, 2, 1, 0),
@@ -656,7 +653,7 @@ const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown20[] =
gFieldEffectObjectImageAnim_850D1AC,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown20 = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown20, gFieldEffectObjectPicTable_Unknown20, gDummySpriteAffineAnimTable, sub_81561D0};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown20 = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown20, gFieldEffectObjectPicTable_Unknown20, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
const union AffineAnimCmd gFieldEffectObjectRotScalAnim_850D1E4[] =
{
@@ -733,7 +730,7 @@ const union AnimCmd *const gFieldEffectObjectImageAnimTable_BerryTreeGrowthSpark
gFieldEffectObjectImageAnim_850D2D4,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_BerryTreeGrowthSparkle = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_BerryTreeGrowthSparkle, gFieldEffectObjectPicTable_BerryTreeGrowthSparkle, gDummySpriteAffineAnimTable, sub_81561D0};
+const struct SpriteTemplate gFieldEffectObjectTemplate_BerryTreeGrowthSparkle = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_BerryTreeGrowthSparkle, gFieldEffectObjectPicTable_BerryTreeGrowthSparkle, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
const struct SpriteFrameImage gFieldEffectObjectPicTable_TreeDisguise[] = {
overworld_frame(gFieldEffectObjectPic_TreeDisguise, 2, 4, 0),
@@ -993,5 +990,3 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_Rayquaza[] = {
const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_32x32, gFieldEffectObjectImageAnimTable_Rayquaza, gFieldEffectObjectPicTable_Rayquaza, gDummySpriteAffineAnimTable, sub_8155F80};
const struct SpritePalette gFieldEffectObjectPaletteInfoUnused = {gEventObjectPalette2, 0x1011};
-
-#endif //GUARD_FIELD_EFFECT_OBJECTS_H
diff --git a/src/data/field_event_obj/movement_action_func_tables.h b/src/data/field_event_obj/movement_action_func_tables.h
index b24f5dea4..fb9f4b2cd 100755
--- a/src/data/field_event_obj/movement_action_func_tables.h
+++ b/src/data/field_event_obj/movement_action_func_tables.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_MOVEMENT_ACTION_FUNC_TABLES_H
-#define GUARD_MOVEMENT_ACTION_FUNC_TABLES_H
-
u8 MovementAction_FaceDown_Step0(struct EventObject *, struct Sprite *);
u8 MovementAction_FaceDown_Step0(struct EventObject *, struct Sprite *);
u8 MovementAction_PauseSpriteAnim(struct EventObject *, struct Sprite *);
@@ -1514,5 +1511,3 @@ u8 (*const gMovementActionFuncs_DestroyExtraTaskIfAtTop[])(struct EventObject *,
MovementAction_DestroyExtraTaskIfAtTop_Step0,
MovementAction_Finish,
};
-
-#endif //GUARD_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
index 165e96220..3c490011b 100755
--- a/src/data/field_event_obj/movement_type_func_tables.h
+++ b/src/data/field_event_obj/movement_type_func_tables.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_MOVEMENT_TYPE_FUNC_TABLES_H
-#define GUARD_MOVEMENT_TYPE_FUNC_TABLES_H
-
u8 (*const gMovementTypeFuncs_WanderAround[])(struct EventObject *, struct Sprite *) = {
MovementType_WanderAround_Step0,
MovementType_WanderAround_Step1,
@@ -439,5 +436,3 @@ u8 (*const gMovementTypeFuncs_Invisible[])(struct EventObject *, struct Sprite *
MovementType_Invisible_Step1,
MovementType_Invisible_Step2,
};
-
-#endif //GUARD_MOVEMENT_TYPE_FUNC_TABLES_H
diff --git a/src/data/graphics/battle_terrain.h b/src/data/graphics/battle_terrain.h
index 4ff9883fe..e719fafe3 100644
--- a/src/data/graphics/battle_terrain.h
+++ b/src/data/graphics/battle_terrain.h
@@ -1,88 +1,88 @@
-const u8 gBattleTerrainTiles_TallGrass[] = INCBIN_U8("graphics/battle_terrain/tall_grass/tiles.4bpp.lz");
-const u8 gBattleTerrainPalette_TallGrass[] = INCBIN_U8("graphics/battle_terrain/tall_grass/palette.gbapal.lz");
-const u16 gBattleTerrainTilemap_TallGrass[] = INCBIN_U16("graphics/battle_terrain/tall_grass/map.bin.lz");
+const u32 gBattleTerrainTiles_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/tiles.4bpp.lz");
+const u32 gBattleTerrainPalette_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/palette.gbapal.lz");
+const u32 gBattleTerrainTilemap_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/map.bin.lz");
-const u8 gBattleTerrainTiles_LongGrass[] = INCBIN_U8("graphics/battle_terrain/long_grass/tiles.4bpp.lz");
-const u8 gBattleTerrainPalette_LongGrass[] = INCBIN_U8("graphics/battle_terrain/long_grass/palette.gbapal.lz");
-const u16 gBattleTerrainTilemap_LongGrass[] = INCBIN_U16("graphics/battle_terrain/long_grass/map.bin.lz");
+const u32 gBattleTerrainTiles_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/tiles.4bpp.lz");
+const u32 gBattleTerrainPalette_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/palette.gbapal.lz");
+const u32 gBattleTerrainTilemap_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/map.bin.lz");
-const u8 gBattleTerrainTiles_Sand[] = INCBIN_U8("graphics/battle_terrain/sand/tiles.4bpp.lz");
-const u8 gBattleTerrainPalette_Sand[] = INCBIN_U8("graphics/battle_terrain/sand/palette.gbapal.lz");
-const u16 gBattleTerrainTilemap_Sand[] = INCBIN_U16("graphics/battle_terrain/sand/map.bin.lz");
+const u32 gBattleTerrainTiles_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/tiles.4bpp.lz");
+const u32 gBattleTerrainPalette_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/palette.gbapal.lz");
+const u32 gBattleTerrainTilemap_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/map.bin.lz");
-const u8 gBattleTerrainTiles_Underwater[] = INCBIN_U8("graphics/battle_terrain/underwater/tiles.4bpp.lz");
-const u8 gBattleTerrainPalette_Underwater[] = INCBIN_U8("graphics/battle_terrain/underwater/palette.gbapal.lz");
-const u16 gBattleTerrainTilemap_Underwater[] = INCBIN_U16("graphics/battle_terrain/underwater/map.bin.lz");
+const u32 gBattleTerrainTiles_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/tiles.4bpp.lz");
+const u32 gBattleTerrainPalette_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/palette.gbapal.lz");
+const u32 gBattleTerrainTilemap_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/map.bin.lz");
-const u8 gBattleTerrainTiles_Water[] = INCBIN_U8("graphics/battle_terrain/water/tiles.4bpp.lz");
-const u8 gBattleTerrainPalette_Water[] = INCBIN_U8("graphics/battle_terrain/water/palette.gbapal.lz");
-const u16 gBattleTerrainTilemap_Water[] = INCBIN_U16("graphics/battle_terrain/water/map.bin.lz");
+const u32 gBattleTerrainTiles_Water[] = INCBIN_U32("graphics/battle_terrain/water/tiles.4bpp.lz");
+const u32 gBattleTerrainPalette_Water[] = INCBIN_U32("graphics/battle_terrain/water/palette.gbapal.lz");
+const u32 gBattleTerrainTilemap_Water[] = INCBIN_U32("graphics/battle_terrain/water/map.bin.lz");
-const u8 gBattleTerrainTiles_PondWater[] = INCBIN_U8("graphics/battle_terrain/pond_water/tiles.4bpp.lz");
-const u8 gBattleTerrainPalette_PondWater[] = INCBIN_U8("graphics/battle_terrain/pond_water/palette.gbapal.lz");
-const u16 gBattleTerrainTilemap_PondWater[] = INCBIN_U16("graphics/battle_terrain/pond_water/map.bin.lz");
+const u32 gBattleTerrainTiles_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/tiles.4bpp.lz");
+const u32 gBattleTerrainPalette_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/palette.gbapal.lz");
+const u32 gBattleTerrainTilemap_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/map.bin.lz");
-const u8 gBattleTerrainTiles_Rock[] = INCBIN_U8("graphics/battle_terrain/rock/tiles.4bpp.lz");
-const u8 gBattleTerrainPalette_Rock[] = INCBIN_U8("graphics/battle_terrain/rock/palette.gbapal.lz");
-const u16 gBattleTerrainTilemap_Rock[] = INCBIN_U16("graphics/battle_terrain/rock/map.bin.lz");
+const u32 gBattleTerrainTiles_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/tiles.4bpp.lz");
+const u32 gBattleTerrainPalette_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/palette.gbapal.lz");
+const u32 gBattleTerrainTilemap_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/map.bin.lz");
-const u8 gBattleTerrainTiles_Cave[] = INCBIN_U8("graphics/battle_terrain/cave/tiles.4bpp.lz");
-const u8 gBattleTerrainPalette_Cave[] = INCBIN_U8("graphics/battle_terrain/cave/palette.gbapal.lz");
-const u16 gBattleTerrainTilemap_Cave[] = INCBIN_U16("graphics/battle_terrain/cave/map.bin.lz");
+const u32 gBattleTerrainTiles_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/tiles.4bpp.lz");
+const u32 gBattleTerrainPalette_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/palette.gbapal.lz");
+const u32 gBattleTerrainTilemap_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/map.bin.lz");
-const u8 gBattleTerrainPalette_Plain[] = INCBIN_U8("graphics/battle_terrain/plain/palette.gbapal.lz");
+const u32 gBattleTerrainPalette_Plain[] = INCBIN_U32("graphics/battle_terrain/plain/palette.gbapal.lz");
-const u8 gBattleTerrainTiles_Building[] = INCBIN_U8("graphics/battle_terrain/building/tiles.4bpp.lz");
-const u8 gBattleTerrainPalette_Frontier[] = INCBIN_U8("graphics/battle_terrain/stadium/battle_frontier.gbapal.lz"); // this is also used for link battles
-const u16 gBattleTerrainTilemap_Building[] = INCBIN_U16("graphics/battle_terrain/building/map.bin.lz");
+const u32 gBattleTerrainTiles_Building[] = INCBIN_U32("graphics/battle_terrain/building/tiles.4bpp.lz");
+const u32 gBattleTerrainPalette_Frontier[] = INCBIN_U32("graphics/battle_terrain/stadium/battle_frontier.gbapal.lz"); // this is also used for link battles
+const u32 gBattleTerrainTilemap_Building[] = INCBIN_U32("graphics/battle_terrain/building/map.bin.lz");
-const u8 gBattleTerrainTiles_Stadium[] = INCBIN_U8("graphics/battle_terrain/stadium/tiles.4bpp.lz");
-const u16 gBattleTerrainTilemap_Stadium[] = INCBIN_U16("graphics/battle_terrain/stadium/map.bin.lz");
+const u32 gBattleTerrainTiles_Stadium[] = INCBIN_U32("graphics/battle_terrain/stadium/tiles.4bpp.lz");
+const u32 gBattleTerrainTilemap_Stadium[] = INCBIN_U32("graphics/battle_terrain/stadium/map.bin.lz");
-const u8 gBattleTerrainTiles_Rayquaza[] = INCBIN_U8("graphics/battle_terrain/sky/tiles.4bpp.lz");
-const u16 gBattleTerrainTilemap_Rayquaza[] = INCBIN_U16("graphics/battle_terrain/sky/map.bin.lz");
+const u32 gBattleTerrainTiles_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/tiles.4bpp.lz");
+const u32 gBattleTerrainTilemap_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/map.bin.lz");
-const u8 gBattleTerrainPalette_Building[] = INCBIN_U8("graphics/battle_terrain/building/palette.gbapal.lz");
+const u32 gBattleTerrainPalette_Building[] = INCBIN_U32("graphics/battle_terrain/building/palette.gbapal.lz");
-const u8 gBattleTerrainPalette_Kyogre[] = INCBIN_U8("graphics/battle_terrain/water/kyogre.gbapal.lz");
-const u8 gBattleTerrainPalette_Groudon[] = INCBIN_U8("graphics/battle_terrain/cave/groudon.gbapal.lz");
-const u8 gBattleTerrainPalette_BuildingGym[] = INCBIN_U8("graphics/battle_terrain/building/palette2.gbapal.lz");
-const u8 gBattleTerrainPalette_BuildingLeader[] = INCBIN_U8("graphics/battle_terrain/building/palette3.gbapal.lz");
-const u8 gBattleTerrainPalette_StadiumAqua[] = INCBIN_U8("graphics/battle_terrain/stadium/palette1.gbapal.lz");
-const u8 gBattleTerrainPalette_StadiumMagma[] = INCBIN_U8("graphics/battle_terrain/stadium/palette2.gbapal.lz");
-const u8 gBattleTerrainPalette_StadiumSidney[] = INCBIN_U8("graphics/battle_terrain/stadium/palette3.gbapal.lz");
-const u8 gBattleTerrainPalette_StadiumPhoebe[] = INCBIN_U8("graphics/battle_terrain/stadium/palette4.gbapal.lz");
-const u8 gBattleTerrainPalette_StadiumGlacia[] = INCBIN_U8("graphics/battle_terrain/stadium/palette5.gbapal.lz");
-const u8 gBattleTerrainPalette_StadiumDrake[] = INCBIN_U8("graphics/battle_terrain/stadium/palette6.gbapal.lz");
-const u8 gBattleTerrainPalette_StadiumWallace[] = INCBIN_U8("graphics/battle_terrain/stadium/palette7.gbapal.lz");
-const u8 gBattleTerrainPalette_Rayquaza[] = INCBIN_U8("graphics/battle_terrain/sky/palette.gbapal.lz");
+const u32 gBattleTerrainPalette_Kyogre[] = INCBIN_U32("graphics/battle_terrain/water/kyogre.gbapal.lz");
+const u32 gBattleTerrainPalette_Groudon[] = INCBIN_U32("graphics/battle_terrain/cave/groudon.gbapal.lz");
+const u32 gBattleTerrainPalette_BuildingGym[] = INCBIN_U32("graphics/battle_terrain/building/palette2.gbapal.lz");
+const u32 gBattleTerrainPalette_BuildingLeader[] = INCBIN_U32("graphics/battle_terrain/building/palette3.gbapal.lz");
+const u32 gBattleTerrainPalette_StadiumAqua[] = INCBIN_U32("graphics/battle_terrain/stadium/palette1.gbapal.lz");
+const u32 gBattleTerrainPalette_StadiumMagma[] = INCBIN_U32("graphics/battle_terrain/stadium/palette2.gbapal.lz");
+const u32 gBattleTerrainPalette_StadiumSidney[] = INCBIN_U32("graphics/battle_terrain/stadium/palette3.gbapal.lz");
+const u32 gBattleTerrainPalette_StadiumPhoebe[] = INCBIN_U32("graphics/battle_terrain/stadium/palette4.gbapal.lz");
+const u32 gBattleTerrainPalette_StadiumGlacia[] = INCBIN_U32("graphics/battle_terrain/stadium/palette5.gbapal.lz");
+const u32 gBattleTerrainPalette_StadiumDrake[] = INCBIN_U32("graphics/battle_terrain/stadium/palette6.gbapal.lz");
+const u32 gBattleTerrainPalette_StadiumWallace[] = INCBIN_U32("graphics/battle_terrain/stadium/palette7.gbapal.lz");
+const u32 gBattleTerrainPalette_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/palette.gbapal.lz");
-const u8 gBattleTerrainAnimTiles_TallGrass[] = INCBIN_U8("graphics/battle_terrain/tall_grass/anim_tiles.4bpp.lz");
-const u16 gBattleTerrainAnimTilemap_TallGrass[] = INCBIN_U16("graphics/battle_terrain/tall_grass/anim_map.bin.lz");
+const u32 gBattleTerrainAnimTiles_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/anim_tiles.4bpp.lz");
+const u32 gBattleTerrainAnimTilemap_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/anim_map.bin.lz");
-const u8 gBattleTerrainAnimTiles_LongGrass[] = INCBIN_U8("graphics/battle_terrain/long_grass/anim_tiles.4bpp.lz");
-const u16 gBattleTerrainAnimTilemap_LongGrass[] = INCBIN_U16("graphics/battle_terrain/long_grass/anim_map.bin.lz");
+const u32 gBattleTerrainAnimTiles_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/anim_tiles.4bpp.lz");
+const u32 gBattleTerrainAnimTilemap_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/anim_map.bin.lz");
-const u8 gBattleTerrainAnimTiles_Sand[] = INCBIN_U8("graphics/battle_terrain/sand/anim_tiles.4bpp.lz");
-const u16 gBattleTerrainAnimTilemap_Sand[] = INCBIN_U16("graphics/battle_terrain/sand/anim_map.bin.lz");
+const u32 gBattleTerrainAnimTiles_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/anim_tiles.4bpp.lz");
+const u32 gBattleTerrainAnimTilemap_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/anim_map.bin.lz");
-const u8 gBattleTerrainAnimTiles_Underwater[] = INCBIN_U8("graphics/battle_terrain/underwater/anim_tiles.4bpp.lz");
-const u16 gBattleTerrainAnimTilemap_Underwater[] = INCBIN_U16("graphics/battle_terrain/underwater/anim_map.bin.lz");
+const u32 gBattleTerrainAnimTiles_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/anim_tiles.4bpp.lz");
+const u32 gBattleTerrainAnimTilemap_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/anim_map.bin.lz");
-const u8 gBattleTerrainAnimTiles_Water[] = INCBIN_U8("graphics/battle_terrain/water/anim_tiles.4bpp.lz");
-const u16 gBattleTerrainAnimTilemap_Water[] = INCBIN_U16("graphics/battle_terrain/water/anim_map.bin.lz");
+const u32 gBattleTerrainAnimTiles_Water[] = INCBIN_U32("graphics/battle_terrain/water/anim_tiles.4bpp.lz");
+const u32 gBattleTerrainAnimTilemap_Water[] = INCBIN_U32("graphics/battle_terrain/water/anim_map.bin.lz");
-const u8 gBattleTerrainAnimTiles_PondWater[] = INCBIN_U8("graphics/battle_terrain/pond_water/anim_tiles.4bpp.lz");
-const u16 gBattleTerrainAnimTilemap_PondWater[] = INCBIN_U16("graphics/battle_terrain/pond_water/anim_map.bin.lz");
+const u32 gBattleTerrainAnimTiles_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/anim_tiles.4bpp.lz");
+const u32 gBattleTerrainAnimTilemap_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/anim_map.bin.lz");
-const u8 gBattleTerrainAnimTiles_Rock[] = INCBIN_U8("graphics/battle_terrain/rock/anim_tiles.4bpp.lz");
-const u16 gBattleTerrainAnimTilemap_Rock[] = INCBIN_U16("graphics/battle_terrain/rock/anim_map.bin.lz");
+const u32 gBattleTerrainAnimTiles_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/anim_tiles.4bpp.lz");
+const u32 gBattleTerrainAnimTilemap_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/anim_map.bin.lz");
-const u8 gBattleTerrainAnimTiles_Cave[] = INCBIN_U8("graphics/battle_terrain/cave/anim_tiles.4bpp.lz");
-const u16 gBattleTerrainAnimTilemap_Cave[] = INCBIN_U16("graphics/battle_terrain/cave/anim_map.bin.lz");
+const u32 gBattleTerrainAnimTiles_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/anim_tiles.4bpp.lz");
+const u32 gBattleTerrainAnimTilemap_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/anim_map.bin.lz");
-const u8 gBattleTerrainAnimTiles_Building[] = INCBIN_U8("graphics/battle_terrain/building/anim_tiles.4bpp.lz");
-const u16 gBattleTerrainAnimTilemap_Building[] = INCBIN_U16("graphics/battle_terrain/building/anim_map.bin.lz");
+const u32 gBattleTerrainAnimTiles_Building[] = INCBIN_U32("graphics/battle_terrain/building/anim_tiles.4bpp.lz");
+const u32 gBattleTerrainAnimTilemap_Building[] = INCBIN_U32("graphics/battle_terrain/building/anim_map.bin.lz");
-const u8 gBattleTerrainAnimTiles_Rayquaza[] = INCBIN_U8("graphics/battle_terrain/sky/anim_tiles.4bpp.lz");
-const u16 gBattleTerrainAnimTilemap_Rayquaza[] = INCBIN_U16("graphics/battle_terrain/sky/anim_map.bin.lz");
+const u32 gBattleTerrainAnimTiles_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/anim_tiles.4bpp.lz");
+const u32 gBattleTerrainAnimTilemap_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/anim_map.bin.lz");
diff --git a/src/data/graphics/berries.h b/src/data/graphics/berries.h
index d843a4f80..326bd1c5b 100644
--- a/src/data/graphics/berries.h
+++ b/src/data/graphics/berries.h
@@ -1,95 +1,95 @@
-const u8 gUnknown_08D9BB44[] = INCBIN_U8("graphics/interface/check_berry.4bpp.lz");
-const u8 gUnknown_08D9BEF0[] = INCBIN_U8("graphics/interface/check_berry.gbapal.lz");
+const u32 gUnknown_08D9BB44[] = INCBIN_U32("graphics/interface/check_berry.4bpp.lz");
+const u32 gUnknown_08D9BEF0[] = INCBIN_U32("graphics/interface/check_berry.gbapal.lz");
-const u16 gUnknown_08D9BF98[] = INCBIN_U16("graphics/interface/berry_tag.bin.lz");
-const u16 gUnknown_08D9C13C[] = INCBIN_U16("graphics/interface/berry_tag_title.bin.lz");
+const u32 gUnknown_08D9BF98[] = INCBIN_U32("graphics/interface/berry_tag.bin.lz");
+const u32 gUnknown_08D9C13C[] = INCBIN_U32("graphics/interface/berry_tag_title.bin.lz");
-const u8 gBerryCheckCircle_Gfx[] = INCBIN_U8("graphics/interface/check_berry_circle.4bpp.lz");
+const u32 gBerryCheckCircle_Gfx[] = INCBIN_U32("graphics/interface/check_berry_circle.4bpp.lz");
-const u8 gBerryPic_Cheri[] = INCBIN_U8("graphics/berries/cheri.4bpp.lz");
-const u8 gBerryPic_Oran[] = INCBIN_U8("graphics/berries/oran.4bpp.lz");
-const u8 gBerryPic_Pecha[] = INCBIN_U8("graphics/berries/pecha.4bpp.lz");
-const u8 gBerryPic_Rawst[] = INCBIN_U8("graphics/berries/rawst.4bpp.lz");
-const u8 gBerryPic_Aspear[] = INCBIN_U8("graphics/berries/aspear.4bpp.lz");
-const u8 gBerryPic_Leppa[] = INCBIN_U8("graphics/berries/leppa.4bpp.lz");
-const u8 gBerryPic_Chesto[] = INCBIN_U8("graphics/berries/chesto.4bpp.lz");
-const u8 gBerryPic_Persim[] = INCBIN_U8("graphics/berries/persim.4bpp.lz");
-const u8 gBerryPic_Lum[] = INCBIN_U8("graphics/berries/lum.4bpp.lz");
-const u8 gBerryPic_Sitrus[] = INCBIN_U8("graphics/berries/sitrus.4bpp.lz");
-const u8 gBerryPic_Figy[] = INCBIN_U8("graphics/berries/figy.4bpp.lz");
-const u8 gBerryPic_Wiki[] = INCBIN_U8("graphics/berries/wiki.4bpp.lz");
-const u8 gBerryPic_Mago[] = INCBIN_U8("graphics/berries/mago.4bpp.lz");
-const u8 gBerryPic_Aguav[] = INCBIN_U8("graphics/berries/aguav.4bpp.lz");
-const u8 gBerryPic_Iapapa[] = INCBIN_U8("graphics/berries/iapapa.4bpp.lz");
-const u8 gBerryPic_Razz[] = INCBIN_U8("graphics/berries/razz.4bpp.lz");
-const u8 gBerryPic_Bluk[] = INCBIN_U8("graphics/berries/bluk.4bpp.lz");
-const u8 gBerryPic_Nanab[] = INCBIN_U8("graphics/berries/nanab.4bpp.lz");
-const u8 gBerryPic_Wepear[] = INCBIN_U8("graphics/berries/wepear.4bpp.lz");
-const u8 gBerryPic_Pinap[] = INCBIN_U8("graphics/berries/pinap.4bpp.lz");
-const u8 gBerryPic_Pomeg[] = INCBIN_U8("graphics/berries/pomeg.4bpp.lz");
-const u8 gBerryPic_Kelpsy[] = INCBIN_U8("graphics/berries/kelpsy.4bpp.lz");
-const u8 gBerryPic_Qualot[] = INCBIN_U8("graphics/berries/qualot.4bpp.lz");
-const u8 gBerryPic_Hondew[] = INCBIN_U8("graphics/berries/hondew.4bpp.lz");
-const u8 gBerryPic_Grepa[] = INCBIN_U8("graphics/berries/grepa.4bpp.lz");
-const u8 gBerryPic_Tamato[] = INCBIN_U8("graphics/berries/tamato.4bpp.lz");
-const u8 gBerryPic_Cornn[] = INCBIN_U8("graphics/berries/cornn.4bpp.lz");
-const u8 gBerryPic_Magost[] = INCBIN_U8("graphics/berries/magost.4bpp.lz");
-const u8 gBerryPic_Rabuta[] = INCBIN_U8("graphics/berries/rabuta.4bpp.lz");
-const u8 gBerryPic_Nomel[] = INCBIN_U8("graphics/berries/nomel.4bpp.lz");
-const u8 gBerryPic_Spelon[] = INCBIN_U8("graphics/berries/spelon.4bpp.lz");
-const u8 gBerryPic_Pamtre[] = INCBIN_U8("graphics/berries/pamtre.4bpp.lz");
-const u8 gBerryPic_Watmel[] = INCBIN_U8("graphics/berries/watmel.4bpp.lz");
-const u8 gBerryPic_Durin[] = INCBIN_U8("graphics/berries/durin.4bpp.lz");
-const u8 gBerryPic_Belue[] = INCBIN_U8("graphics/berries/belue.4bpp.lz");
-const u8 gBerryPic_Liechi[] = INCBIN_U8("graphics/berries/liechi.4bpp.lz");
-const u8 gBerryPic_Ganlon[] = INCBIN_U8("graphics/berries/ganlon.4bpp.lz");
-const u8 gBerryPic_Salac[] = INCBIN_U8("graphics/berries/salac.4bpp.lz");
-const u8 gBerryPic_Petaya[] = INCBIN_U8("graphics/berries/petaya.4bpp.lz");
-const u8 gBerryPic_Apicot[] = INCBIN_U8("graphics/berries/apicot.4bpp.lz");
-const u8 gBerryPic_Lansat[] = INCBIN_U8("graphics/berries/lansat.4bpp.lz");
-const u8 gBerryPic_Starf[] = INCBIN_U8("graphics/berries/starf.4bpp.lz");
-const u8 gBerryPic_Enigma[] = INCBIN_U8("graphics/berries/enigma.4bpp.lz");
+const u32 gBerryPic_Cheri[] = INCBIN_U32("graphics/berries/cheri.4bpp.lz");
+const u32 gBerryPic_Oran[] = INCBIN_U32("graphics/berries/oran.4bpp.lz");
+const u32 gBerryPic_Pecha[] = INCBIN_U32("graphics/berries/pecha.4bpp.lz");
+const u32 gBerryPic_Rawst[] = INCBIN_U32("graphics/berries/rawst.4bpp.lz");
+const u32 gBerryPic_Aspear[] = INCBIN_U32("graphics/berries/aspear.4bpp.lz");
+const u32 gBerryPic_Leppa[] = INCBIN_U32("graphics/berries/leppa.4bpp.lz");
+const u32 gBerryPic_Chesto[] = INCBIN_U32("graphics/berries/chesto.4bpp.lz");
+const u32 gBerryPic_Persim[] = INCBIN_U32("graphics/berries/persim.4bpp.lz");
+const u32 gBerryPic_Lum[] = INCBIN_U32("graphics/berries/lum.4bpp.lz");
+const u32 gBerryPic_Sitrus[] = INCBIN_U32("graphics/berries/sitrus.4bpp.lz");
+const u32 gBerryPic_Figy[] = INCBIN_U32("graphics/berries/figy.4bpp.lz");
+const u32 gBerryPic_Wiki[] = INCBIN_U32("graphics/berries/wiki.4bpp.lz");
+const u32 gBerryPic_Mago[] = INCBIN_U32("graphics/berries/mago.4bpp.lz");
+const u32 gBerryPic_Aguav[] = INCBIN_U32("graphics/berries/aguav.4bpp.lz");
+const u32 gBerryPic_Iapapa[] = INCBIN_U32("graphics/berries/iapapa.4bpp.lz");
+const u32 gBerryPic_Razz[] = INCBIN_U32("graphics/berries/razz.4bpp.lz");
+const u32 gBerryPic_Bluk[] = INCBIN_U32("graphics/berries/bluk.4bpp.lz");
+const u32 gBerryPic_Nanab[] = INCBIN_U32("graphics/berries/nanab.4bpp.lz");
+const u32 gBerryPic_Wepear[] = INCBIN_U32("graphics/berries/wepear.4bpp.lz");
+const u32 gBerryPic_Pinap[] = INCBIN_U32("graphics/berries/pinap.4bpp.lz");
+const u32 gBerryPic_Pomeg[] = INCBIN_U32("graphics/berries/pomeg.4bpp.lz");
+const u32 gBerryPic_Kelpsy[] = INCBIN_U32("graphics/berries/kelpsy.4bpp.lz");
+const u32 gBerryPic_Qualot[] = INCBIN_U32("graphics/berries/qualot.4bpp.lz");
+const u32 gBerryPic_Hondew[] = INCBIN_U32("graphics/berries/hondew.4bpp.lz");
+const u32 gBerryPic_Grepa[] = INCBIN_U32("graphics/berries/grepa.4bpp.lz");
+const u32 gBerryPic_Tamato[] = INCBIN_U32("graphics/berries/tamato.4bpp.lz");
+const u32 gBerryPic_Cornn[] = INCBIN_U32("graphics/berries/cornn.4bpp.lz");
+const u32 gBerryPic_Magost[] = INCBIN_U32("graphics/berries/magost.4bpp.lz");
+const u32 gBerryPic_Rabuta[] = INCBIN_U32("graphics/berries/rabuta.4bpp.lz");
+const u32 gBerryPic_Nomel[] = INCBIN_U32("graphics/berries/nomel.4bpp.lz");
+const u32 gBerryPic_Spelon[] = INCBIN_U32("graphics/berries/spelon.4bpp.lz");
+const u32 gBerryPic_Pamtre[] = INCBIN_U32("graphics/berries/pamtre.4bpp.lz");
+const u32 gBerryPic_Watmel[] = INCBIN_U32("graphics/berries/watmel.4bpp.lz");
+const u32 gBerryPic_Durin[] = INCBIN_U32("graphics/berries/durin.4bpp.lz");
+const u32 gBerryPic_Belue[] = INCBIN_U32("graphics/berries/belue.4bpp.lz");
+const u32 gBerryPic_Liechi[] = INCBIN_U32("graphics/berries/liechi.4bpp.lz");
+const u32 gBerryPic_Ganlon[] = INCBIN_U32("graphics/berries/ganlon.4bpp.lz");
+const u32 gBerryPic_Salac[] = INCBIN_U32("graphics/berries/salac.4bpp.lz");
+const u32 gBerryPic_Petaya[] = INCBIN_U32("graphics/berries/petaya.4bpp.lz");
+const u32 gBerryPic_Apicot[] = INCBIN_U32("graphics/berries/apicot.4bpp.lz");
+const u32 gBerryPic_Lansat[] = INCBIN_U32("graphics/berries/lansat.4bpp.lz");
+const u32 gBerryPic_Starf[] = INCBIN_U32("graphics/berries/starf.4bpp.lz");
+const u32 gBerryPic_Enigma[] = INCBIN_U32("graphics/berries/enigma.4bpp.lz");
-const u8 gBerryPalette_Cheri[] = INCBIN_U8("graphics/berries/cheri.gbapal.lz");
-const u8 gBerryPalette_Oran[] = INCBIN_U8("graphics/berries/oran.gbapal.lz");
-const u8 gBerryPalette_Pecha[] = INCBIN_U8("graphics/berries/pecha.gbapal.lz");
-const u8 gBerryPalette_Rawst[] = INCBIN_U8("graphics/berries/rawst.gbapal.lz");
-const u8 gBerryPalette_Aspear[] = INCBIN_U8("graphics/berries/aspear.gbapal.lz");
-const u8 gBerryPalette_Leppa[] = INCBIN_U8("graphics/berries/leppa.gbapal.lz");
-const u8 gBerryPalette_Chesto[] = INCBIN_U8("graphics/berries/chesto.gbapal.lz");
-const u8 gBerryPalette_Persim[] = INCBIN_U8("graphics/berries/persim.gbapal.lz");
-const u8 gBerryPalette_Lum[] = INCBIN_U8("graphics/berries/lum.gbapal.lz");
-const u8 gBerryPalette_Sitrus[] = INCBIN_U8("graphics/berries/sitrus.gbapal.lz");
-const u8 gBerryPalette_Figy[] = INCBIN_U8("graphics/berries/figy.gbapal.lz");
-const u8 gBerryPalette_Wiki[] = INCBIN_U8("graphics/berries/wiki.gbapal.lz");
-const u8 gBerryPalette_Mago[] = INCBIN_U8("graphics/berries/mago.gbapal.lz");
-const u8 gBerryPalette_Aguav[] = INCBIN_U8("graphics/berries/aguav.gbapal.lz");
-const u8 gBerryPalette_Iapapa[] = INCBIN_U8("graphics/berries/iapapa.gbapal.lz");
-const u8 gBerryPalette_Razz[] = INCBIN_U8("graphics/berries/razz.gbapal.lz");
-const u8 gBerryPalette_Bluk[] = INCBIN_U8("graphics/berries/bluk.gbapal.lz");
-const u8 gBerryPalette_Nanab[] = INCBIN_U8("graphics/berries/nanab.gbapal.lz");
-const u8 gBerryPalette_Wepear[] = INCBIN_U8("graphics/berries/wepear.gbapal.lz");
-const u8 gBerryPalette_Pinap[] = INCBIN_U8("graphics/berries/pinap.gbapal.lz");
-const u8 gBerryPalette_Pomeg[] = INCBIN_U8("graphics/berries/pomeg.gbapal.lz");
-const u8 gBerryPalette_Kelpsy[] = INCBIN_U8("graphics/berries/kelpsy.gbapal.lz");
-const u8 gBerryPalette_Qualot[] = INCBIN_U8("graphics/berries/qualot.gbapal.lz");
-const u8 gBerryPalette_Hondew[] = INCBIN_U8("graphics/berries/hondew.gbapal.lz");
-const u8 gBerryPalette_Grepa[] = INCBIN_U8("graphics/berries/grepa.gbapal.lz");
-const u8 gBerryPalette_Tamato[] = INCBIN_U8("graphics/berries/tamato.gbapal.lz");
-const u8 gBerryPalette_Cornn[] = INCBIN_U8("graphics/berries/cornn.gbapal.lz");
-const u8 gBerryPalette_Magost[] = INCBIN_U8("graphics/berries/magost.gbapal.lz");
-const u8 gBerryPalette_Rabuta[] = INCBIN_U8("graphics/berries/rabuta.gbapal.lz");
-const u8 gBerryPalette_Nomel[] = INCBIN_U8("graphics/berries/nomel.gbapal.lz");
-const u8 gBerryPalette_Spelon[] = INCBIN_U8("graphics/berries/spelon.gbapal.lz");
-const u8 gBerryPalette_Pamtre[] = INCBIN_U8("graphics/berries/pamtre.gbapal.lz");
-const u8 gBerryPalette_Watmel[] = INCBIN_U8("graphics/berries/watmel.gbapal.lz");
-const u8 gBerryPalette_Durin[] = INCBIN_U8("graphics/berries/durin.gbapal.lz");
-const u8 gBerryPalette_Belue[] = INCBIN_U8("graphics/berries/belue.gbapal.lz");
-const u8 gBerryPalette_Liechi[] = INCBIN_U8("graphics/berries/liechi.gbapal.lz");
-const u8 gBerryPalette_Ganlon[] = INCBIN_U8("graphics/berries/ganlon.gbapal.lz");
-const u8 gBerryPalette_Salac[] = INCBIN_U8("graphics/berries/salac.gbapal.lz");
-const u8 gBerryPalette_Petaya[] = INCBIN_U8("graphics/berries/petaya.gbapal.lz");
-const u8 gBerryPalette_Apicot[] = INCBIN_U8("graphics/berries/apicot.gbapal.lz");
-const u8 gBerryPalette_Lansat[] = INCBIN_U8("graphics/berries/lansat.gbapal.lz");
-const u8 gBerryPalette_Starf[] = INCBIN_U8("graphics/berries/starf.gbapal.lz");
-const u8 gBerryPalette_Enigma[] = INCBIN_U8("graphics/berries/enigma.gbapal.lz");
+const u32 gBerryPalette_Cheri[] = INCBIN_U32("graphics/berries/cheri.gbapal.lz");
+const u32 gBerryPalette_Oran[] = INCBIN_U32("graphics/berries/oran.gbapal.lz");
+const u32 gBerryPalette_Pecha[] = INCBIN_U32("graphics/berries/pecha.gbapal.lz");
+const u32 gBerryPalette_Rawst[] = INCBIN_U32("graphics/berries/rawst.gbapal.lz");
+const u32 gBerryPalette_Aspear[] = INCBIN_U32("graphics/berries/aspear.gbapal.lz");
+const u32 gBerryPalette_Leppa[] = INCBIN_U32("graphics/berries/leppa.gbapal.lz");
+const u32 gBerryPalette_Chesto[] = INCBIN_U32("graphics/berries/chesto.gbapal.lz");
+const u32 gBerryPalette_Persim[] = INCBIN_U32("graphics/berries/persim.gbapal.lz");
+const u32 gBerryPalette_Lum[] = INCBIN_U32("graphics/berries/lum.gbapal.lz");
+const u32 gBerryPalette_Sitrus[] = INCBIN_U32("graphics/berries/sitrus.gbapal.lz");
+const u32 gBerryPalette_Figy[] = INCBIN_U32("graphics/berries/figy.gbapal.lz");
+const u32 gBerryPalette_Wiki[] = INCBIN_U32("graphics/berries/wiki.gbapal.lz");
+const u32 gBerryPalette_Mago[] = INCBIN_U32("graphics/berries/mago.gbapal.lz");
+const u32 gBerryPalette_Aguav[] = INCBIN_U32("graphics/berries/aguav.gbapal.lz");
+const u32 gBerryPalette_Iapapa[] = INCBIN_U32("graphics/berries/iapapa.gbapal.lz");
+const u32 gBerryPalette_Razz[] = INCBIN_U32("graphics/berries/razz.gbapal.lz");
+const u32 gBerryPalette_Bluk[] = INCBIN_U32("graphics/berries/bluk.gbapal.lz");
+const u32 gBerryPalette_Nanab[] = INCBIN_U32("graphics/berries/nanab.gbapal.lz");
+const u32 gBerryPalette_Wepear[] = INCBIN_U32("graphics/berries/wepear.gbapal.lz");
+const u32 gBerryPalette_Pinap[] = INCBIN_U32("graphics/berries/pinap.gbapal.lz");
+const u32 gBerryPalette_Pomeg[] = INCBIN_U32("graphics/berries/pomeg.gbapal.lz");
+const u32 gBerryPalette_Kelpsy[] = INCBIN_U32("graphics/berries/kelpsy.gbapal.lz");
+const u32 gBerryPalette_Qualot[] = INCBIN_U32("graphics/berries/qualot.gbapal.lz");
+const u32 gBerryPalette_Hondew[] = INCBIN_U32("graphics/berries/hondew.gbapal.lz");
+const u32 gBerryPalette_Grepa[] = INCBIN_U32("graphics/berries/grepa.gbapal.lz");
+const u32 gBerryPalette_Tamato[] = INCBIN_U32("graphics/berries/tamato.gbapal.lz");
+const u32 gBerryPalette_Cornn[] = INCBIN_U32("graphics/berries/cornn.gbapal.lz");
+const u32 gBerryPalette_Magost[] = INCBIN_U32("graphics/berries/magost.gbapal.lz");
+const u32 gBerryPalette_Rabuta[] = INCBIN_U32("graphics/berries/rabuta.gbapal.lz");
+const u32 gBerryPalette_Nomel[] = INCBIN_U32("graphics/berries/nomel.gbapal.lz");
+const u32 gBerryPalette_Spelon[] = INCBIN_U32("graphics/berries/spelon.gbapal.lz");
+const u32 gBerryPalette_Pamtre[] = INCBIN_U32("graphics/berries/pamtre.gbapal.lz");
+const u32 gBerryPalette_Watmel[] = INCBIN_U32("graphics/berries/watmel.gbapal.lz");
+const u32 gBerryPalette_Durin[] = INCBIN_U32("graphics/berries/durin.gbapal.lz");
+const u32 gBerryPalette_Belue[] = INCBIN_U32("graphics/berries/belue.gbapal.lz");
+const u32 gBerryPalette_Liechi[] = INCBIN_U32("graphics/berries/liechi.gbapal.lz");
+const u32 gBerryPalette_Ganlon[] = INCBIN_U32("graphics/berries/ganlon.gbapal.lz");
+const u32 gBerryPalette_Salac[] = INCBIN_U32("graphics/berries/salac.gbapal.lz");
+const u32 gBerryPalette_Petaya[] = INCBIN_U32("graphics/berries/petaya.gbapal.lz");
+const u32 gBerryPalette_Apicot[] = INCBIN_U32("graphics/berries/apicot.gbapal.lz");
+const u32 gBerryPalette_Lansat[] = INCBIN_U32("graphics/berries/lansat.gbapal.lz");
+const u32 gBerryPalette_Starf[] = INCBIN_U32("graphics/berries/starf.gbapal.lz");
+const u32 gBerryPalette_Enigma[] = INCBIN_U32("graphics/berries/enigma.gbapal.lz");
diff --git a/src/data/graphics/berry_fix.h b/src/data/graphics/berry_fix.h
index 4012ab5a3..aede748a4 100644
--- a/src/data/graphics/berry_fix.h
+++ b/src/data/graphics/berry_fix.h
@@ -1,23 +1,23 @@
const u16 gBerryFixGameboy_Pal[] = INCBIN_U16("graphics/berry_fix/gba_small.gbapal");
-const u8 gBerryFixGameboy_Gfx[] = INCBIN_U8("graphics/berry_fix/gba_small.4bpp.lz");
-const u16 gBerryFixGameboy_Tilemap[] = INCBIN_U16("graphics/berry_fix/gba_small.bin.lz");
+const u32 gBerryFixGameboy_Gfx[] = INCBIN_U32("graphics/berry_fix/gba_small.4bpp.lz");
+const u32 gBerryFixGameboy_Tilemap[] = INCBIN_U32("graphics/berry_fix/gba_small.bin.lz");
const u16 gBerryFixGameboyLogo_Pal[] = INCBIN_U16("graphics/berry_fix/logo.gbapal");
-const u8 gBerryFixGameboyLogo_Gfx[] = INCBIN_U8("graphics/berry_fix/logo.4bpp.lz");
-const u16 gBerryFixGameboyLogo_Tilemap[] = INCBIN_U16("graphics/berry_fix/logo.bin.lz");
+const u32 gBerryFixGameboyLogo_Gfx[] = INCBIN_U32("graphics/berry_fix/logo.4bpp.lz");
+const u32 gBerryFixGameboyLogo_Tilemap[] = INCBIN_U32("graphics/berry_fix/logo.bin.lz");
const u16 gBerryFixGbaTransfer_Pal[] = INCBIN_U16("graphics/berry_fix/gba_transfer.gbapal");
-const u8 gBerryFixGbaTransfer_Gfx[] = INCBIN_U8("graphics/berry_fix/gba_transfer.4bpp.lz");
-const u16 gBerryFixGbaTransfer_Tilemap[] = INCBIN_U16("graphics/berry_fix/gba_transfer.bin.lz");
+const u32 gBerryFixGbaTransfer_Gfx[] = INCBIN_U32("graphics/berry_fix/gba_transfer.4bpp.lz");
+const u32 gBerryFixGbaTransfer_Tilemap[] = INCBIN_U32("graphics/berry_fix/gba_transfer.bin.lz");
const u16 gBerryFixGbaTransferHighlight_Pal[] = INCBIN_U16("graphics/berry_fix/gba_transfer_highlight.gbapal");
-const u8 gBerryFixGbaTransferHighlight_Gfx[] = INCBIN_U8("graphics/berry_fix/gba_transfer_highlight.4bpp.lz");
-const u16 gBerryFixGbaTransferHighlight_Tilemap[] = INCBIN_U16("graphics/berry_fix/gba_transfer_highlight.bin.lz");
+const u32 gBerryFixGbaTransferHighlight_Gfx[] = INCBIN_U32("graphics/berry_fix/gba_transfer_highlight.4bpp.lz");
+const u32 gBerryFixGbaTransferHighlight_Tilemap[] = INCBIN_U32("graphics/berry_fix/gba_transfer_highlight.bin.lz");
const u16 gBerryFixGbaTransferError_Pal[] = INCBIN_U16("graphics/berry_fix/gba_transfer_error.gbapal");
-const u8 gBerryFixGbaTransferError_Gfx[] = INCBIN_U8("graphics/berry_fix/gba_transfer_error.4bpp.lz");
-const u16 gBerryFixGbaTransferError_Tilemap[] = INCBIN_U16("graphics/berry_fix/gba_transfer_error.bin.lz");
+const u32 gBerryFixGbaTransferError_Gfx[] = INCBIN_U32("graphics/berry_fix/gba_transfer_error.4bpp.lz");
+const u32 gBerryFixGbaTransferError_Tilemap[] = INCBIN_U32("graphics/berry_fix/gba_transfer_error.bin.lz");
const u16 gBerryFixWindow_Pal[] = INCBIN_U16("graphics/berry_fix/window.gbapal");
-const u8 gBerryFixWindow_Gfx[] = INCBIN_U8("graphics/berry_fix/window.4bpp.lz");
-const u16 gBerryFixWindow_Tilemap[] = INCBIN_U16("graphics/berry_fix/window.bin.lz"); \ No newline at end of file
+const u32 gBerryFixWindow_Gfx[] = INCBIN_U32("graphics/berry_fix/window.4bpp.lz");
+const u32 gBerryFixWindow_Tilemap[] = INCBIN_U32("graphics/berry_fix/window.bin.lz"); \ No newline at end of file
diff --git a/src/data/graphics/decorations.h b/src/data/graphics/decorations.h
index 574ee50b6..62d86d48e 100644
--- a/src/data/graphics/decorations.h
+++ b/src/data/graphics/decorations.h
@@ -1,125 +1,125 @@
-const u8 gUnknown_08DB7AA0[] = INCBIN_U8("graphics/decorations/decor_heavy_desk.4bpp.lz");
-const u8 gUnknown_08DB7B34[] = INCBIN_U8("graphics/decorations/decor_heavy_desk.gbapal.lz");
+const u32 gUnknown_08DB7AA0[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.4bpp.lz");
+const u32 gUnknown_08DB7B34[] = INCBIN_U32("graphics/decorations/decor_heavy_desk.gbapal.lz");
-const u8 gUnknown_08DB7B5C[] = INCBIN_U8("graphics/decorations/decor_ragged_desk.4bpp.lz");
-const u8 gUnknown_08DB7BEC[] = INCBIN_U8("graphics/decorations/decor_ragged_desk.gbapal.lz");
+const u32 gUnknown_08DB7B5C[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.4bpp.lz");
+const u32 gUnknown_08DB7BEC[] = INCBIN_U32("graphics/decorations/decor_ragged_desk.gbapal.lz");
-const u8 gUnknown_08DB7C08[] = INCBIN_U8("graphics/decorations/decor_comfort_desk.4bpp.lz");
-const u8 gUnknown_08DB7CE8[] = INCBIN_U8("graphics/decorations/decor_comfort_desk.gbapal.lz");
+const u32 gUnknown_08DB7C08[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.4bpp.lz");
+const u32 gUnknown_08DB7CE8[] = INCBIN_U32("graphics/decorations/decor_comfort_desk.gbapal.lz");
-const u8 gUnknown_08DB7D08[] = INCBIN_U8("graphics/decorations/decor_pretty_desk.4bpp.lz");
-const u8 gUnknown_08DB7DCC[] = INCBIN_U8("graphics/decorations/decor_pretty_desk.gbapal.lz");
+const u32 gUnknown_08DB7D08[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.4bpp.lz");
+const u32 gUnknown_08DB7DCC[] = INCBIN_U32("graphics/decorations/decor_pretty_desk.gbapal.lz");
-const u8 gUnknown_08DB7DF4[] = INCBIN_U8("graphics/decorations/decor_brick_desk.4bpp.lz");
-const u8 gUnknown_08DB7EA0[] = INCBIN_U8("graphics/decorations/decor_brick_desk.gbapal.lz");
+const u32 gUnknown_08DB7DF4[] = INCBIN_U32("graphics/decorations/decor_brick_desk.4bpp.lz");
+const u32 gUnknown_08DB7EA0[] = INCBIN_U32("graphics/decorations/decor_brick_desk.gbapal.lz");
-const u8 gUnknown_08DB7EC4[] = INCBIN_U8("graphics/decorations/decor_camp_desk.4bpp.lz");
-const u8 gUnknown_08DB7F60[] = INCBIN_U8("graphics/decorations/decor_camp_desk.gbapal.lz");
+const u32 gUnknown_08DB7EC4[] = INCBIN_U32("graphics/decorations/decor_camp_desk.4bpp.lz");
+const u32 gUnknown_08DB7F60[] = INCBIN_U32("graphics/decorations/decor_camp_desk.gbapal.lz");
-const u8 gUnknown_08DB7F7C[] = INCBIN_U8("graphics/decorations/decor_hard_desk.4bpp.lz");
-const u8 gUnknown_08DB8070[] = INCBIN_U8("graphics/decorations/decor_hard_desk.gbapal.lz");
+const u32 gUnknown_08DB7F7C[] = INCBIN_U32("graphics/decorations/decor_hard_desk.4bpp.lz");
+const u32 gUnknown_08DB8070[] = INCBIN_U32("graphics/decorations/decor_hard_desk.gbapal.lz");
-const u8 gUnknown_08DB808C[] = INCBIN_U8("graphics/decorations/decor_red_plant.4bpp.lz");
-const u8 gUnknown_08DB8138[] = INCBIN_U8("graphics/decorations/decor_red_plant.gbapal.lz");
+const u32 gUnknown_08DB808C[] = INCBIN_U32("graphics/decorations/decor_red_plant.4bpp.lz");
+const u32 gUnknown_08DB8138[] = INCBIN_U32("graphics/decorations/decor_red_plant.gbapal.lz");
-const u8 gUnknown_08DB8160[] = INCBIN_U8("graphics/decorations/decor_tropical_plant.4bpp.lz");
-const u8 gUnknown_08DB8218[] = INCBIN_U8("graphics/decorations/decor_tropical_plant.gbapal.lz");
+const u32 gUnknown_08DB8160[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.4bpp.lz");
+const u32 gUnknown_08DB8218[] = INCBIN_U32("graphics/decorations/decor_tropical_plant.gbapal.lz");
-const u8 gUnknown_08DB823C[] = INCBIN_U8("graphics/decorations/decor_pretty_flowers.4bpp.lz");
-const u8 gUnknown_08DB8300[] = INCBIN_U8("graphics/decorations/decor_pretty_flowers.gbapal.lz");
+const u32 gUnknown_08DB823C[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.4bpp.lz");
+const u32 gUnknown_08DB8300[] = INCBIN_U32("graphics/decorations/decor_pretty_flowers.gbapal.lz");
-const u8 gUnknown_08DB8328[] = INCBIN_U8("graphics/decorations/decor_colorful_plant.4bpp.lz");
-const u8 gUnknown_08DB8430[] = INCBIN_U8("graphics/decorations/decor_colorful_plant.gbapal.lz");
+const u32 gUnknown_08DB8328[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.4bpp.lz");
+const u32 gUnknown_08DB8430[] = INCBIN_U32("graphics/decorations/decor_colorful_plant.gbapal.lz");
-const u8 gUnknown_08DB8458[] = INCBIN_U8("graphics/decorations/decor_big_plant.4bpp.lz");
-const u8 gUnknown_08DB8528[] = INCBIN_U8("graphics/decorations/decor_big_plant.gbapal.lz");
+const u32 gUnknown_08DB8458[] = INCBIN_U32("graphics/decorations/decor_big_plant.4bpp.lz");
+const u32 gUnknown_08DB8528[] = INCBIN_U32("graphics/decorations/decor_big_plant.gbapal.lz");
-const u8 gUnknown_08DB854C[] = INCBIN_U8("graphics/decorations/decor_gorgeous_plant.4bpp.lz");
-const u8 gUnknown_08DB862C[] = INCBIN_U8("graphics/decorations/decor_gorgeous_plant.gbapal.lz");
+const u32 gUnknown_08DB854C[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.4bpp.lz");
+const u32 gUnknown_08DB862C[] = INCBIN_U32("graphics/decorations/decor_gorgeous_plant.gbapal.lz");
-const u8 gUnknown_08DB8654[] = INCBIN_U8("graphics/decorations/decor_red_brick.4bpp.lz");
-const u8 gUnknown_08DB86C4[] = INCBIN_U8("graphics/decorations/decor_red_brick.gbapal.lz");
+const u32 gUnknown_08DB8654[] = INCBIN_U32("graphics/decorations/decor_red_brick.4bpp.lz");
+const u32 gUnknown_08DB86C4[] = INCBIN_U32("graphics/decorations/decor_red_brick.gbapal.lz");
-const u8 gUnknown_08DB86E0[] = INCBIN_U8("graphics/decorations/decor_yellow_brick.4bpp.lz");
-const u8 gUnknown_08DB8750[] = INCBIN_U8("graphics/decorations/decor_yellow_brick.gbapal.lz");
+const u32 gUnknown_08DB86E0[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.4bpp.lz");
+const u32 gUnknown_08DB8750[] = INCBIN_U32("graphics/decorations/decor_yellow_brick.gbapal.lz");
-const u8 gUnknown_08DB876C[] = INCBIN_U8("graphics/decorations/decor_blue_brick.4bpp.lz");
-const u8 gUnknown_08DB87DC[] = INCBIN_U8("graphics/decorations/decor_blue_brick.gbapal.lz");
+const u32 gUnknown_08DB876C[] = INCBIN_U32("graphics/decorations/decor_blue_brick.4bpp.lz");
+const u32 gUnknown_08DB87DC[] = INCBIN_U32("graphics/decorations/decor_blue_brick.gbapal.lz");
-const u8 gUnknown_08DB87F8[] = INCBIN_U8("graphics/decorations/decor_red_tent.4bpp.lz");
-const u8 gUnknown_08DB88D8[] = INCBIN_U8("graphics/decorations/decor_red_tent.gbapal.lz");
+const u32 gUnknown_08DB87F8[] = INCBIN_U32("graphics/decorations/decor_red_tent.4bpp.lz");
+const u32 gUnknown_08DB88D8[] = INCBIN_U32("graphics/decorations/decor_red_tent.gbapal.lz");
-const u8 gUnknown_08DB8900[] = INCBIN_U8("graphics/decorations/decor_blue_tent.4bpp.lz");
-const u8 gUnknown_08DB89E0[] = INCBIN_U8("graphics/decorations/decor_blue_tent.gbapal.lz");
+const u32 gUnknown_08DB8900[] = INCBIN_U32("graphics/decorations/decor_blue_tent.4bpp.lz");
+const u32 gUnknown_08DB89E0[] = INCBIN_U32("graphics/decorations/decor_blue_tent.gbapal.lz");
-const u8 gUnknown_08DB8A08[] = INCBIN_U8("graphics/decorations/decor_solid_board.4bpp.lz");
-const u8 gUnknown_08DB8A68[] = INCBIN_U8("graphics/decorations/decor_solid_board.gbapal.lz");
+const u32 gUnknown_08DB8A08[] = INCBIN_U32("graphics/decorations/decor_solid_board.4bpp.lz");
+const u32 gUnknown_08DB8A68[] = INCBIN_U32("graphics/decorations/decor_solid_board.gbapal.lz");
-const u8 gUnknown_08DB8A84[] = INCBIN_U8("graphics/decorations/decor_slide.4bpp.lz");
-const u8 gUnknown_08DB8B40[] = INCBIN_U8("graphics/decorations/decor_slide.gbapal.lz");
+const u32 gUnknown_08DB8A84[] = INCBIN_U32("graphics/decorations/decor_slide.4bpp.lz");
+const u32 gUnknown_08DB8B40[] = INCBIN_U32("graphics/decorations/decor_slide.gbapal.lz");
-const u8 gUnknown_08DB8B68[] = INCBIN_U8("graphics/decorations/decor_tire.4bpp.lz");
-const u8 gUnknown_08DB8C40[] = INCBIN_U8("graphics/decorations/decor_tire.gbapal.lz");
+const u32 gUnknown_08DB8B68[] = INCBIN_U32("graphics/decorations/decor_tire.4bpp.lz");
+const u32 gUnknown_08DB8C40[] = INCBIN_U32("graphics/decorations/decor_tire.gbapal.lz");
-const u8 gUnknown_08DB8C5C[] = INCBIN_U8("graphics/decorations/decor_stand.4bpp.lz");
-const u8 gUnknown_08DB8CF4[] = INCBIN_U8("graphics/decorations/decor_stand.gbapal.lz");
+const u32 gUnknown_08DB8C5C[] = INCBIN_U32("graphics/decorations/decor_stand.4bpp.lz");
+const u32 gUnknown_08DB8CF4[] = INCBIN_U32("graphics/decorations/decor_stand.gbapal.lz");
-const u8 gUnknown_08DB8D18[] = INCBIN_U8("graphics/decorations/decor_breakable_door.4bpp.lz");
-const u8 gUnknown_08DB8DB0[] = INCBIN_U8("graphics/decorations/decor_breakable_door.gbapal.lz");
+const u32 gUnknown_08DB8D18[] = INCBIN_U32("graphics/decorations/decor_breakable_door.4bpp.lz");
+const u32 gUnknown_08DB8DB0[] = INCBIN_U32("graphics/decorations/decor_breakable_door.gbapal.lz");
-const u8 gUnknown_08DB8DD4[] = INCBIN_U8("graphics/decorations/decor_sand_ornament.4bpp.lz");
-const u8 gUnknown_08DB8E80[] = INCBIN_U8("graphics/decorations/decor_sand_ornament.gbapal.lz");
+const u32 gUnknown_08DB8DD4[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.4bpp.lz");
+const u32 gUnknown_08DB8E80[] = INCBIN_U32("graphics/decorations/decor_sand_ornament.gbapal.lz");
-const u8 gUnknown_08DB8EA0[] = INCBIN_U8("graphics/decorations/decor_glass_ornament.4bpp.lz");
-const u8 gUnknown_08DB8F58[] = INCBIN_U8("graphics/decorations/decor_glass_ornament.gbapal.lz");
+const u32 gUnknown_08DB8EA0[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.4bpp.lz");
+const u32 gUnknown_08DB8F58[] = INCBIN_U32("graphics/decorations/decor_glass_ornament.gbapal.lz");
-const u8 gUnknown_08DB8F7C[] = INCBIN_U8("graphics/decorations/decor_surf_mat.4bpp.lz");
-const u8 gUnknown_08DB9038[] = INCBIN_U8("graphics/decorations/decor_surf_mat.gbapal.lz");
+const u32 gUnknown_08DB8F7C[] = INCBIN_U32("graphics/decorations/decor_surf_mat.4bpp.lz");
+const u32 gUnknown_08DB9038[] = INCBIN_U32("graphics/decorations/decor_surf_mat.gbapal.lz");
-const u8 gUnknown_08DB9058[] = INCBIN_U8("graphics/decorations/decor_thunder_mat.4bpp.lz");
-const u8 gUnknown_08DB9130[] = INCBIN_U8("graphics/decorations/decor_thunder_mat.gbapal.lz");
+const u32 gUnknown_08DB9058[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.4bpp.lz");
+const u32 gUnknown_08DB9130[] = INCBIN_U32("graphics/decorations/decor_thunder_mat.gbapal.lz");
-const u8 gUnknown_08DB9154[] = INCBIN_U8("graphics/decorations/decor_fire_blast_mat.4bpp.lz");
-const u8 gUnknown_08DB9218[] = INCBIN_U8("graphics/decorations/decor_fire_blast_mat.gbapal.lz");
+const u32 gUnknown_08DB9154[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.4bpp.lz");
+const u32 gUnknown_08DB9218[] = INCBIN_U32("graphics/decorations/decor_fire_blast_mat.gbapal.lz");
-const u8 gUnknown_08DB9234[] = INCBIN_U8("graphics/decorations/decor_powder_snow_mat.4bpp.lz");
-const u8 gUnknown_08DB92FC[] = INCBIN_U8("graphics/decorations/decor_powder_snow_mat.gbapal.lz");
+const u32 gUnknown_08DB9234[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.4bpp.lz");
+const u32 gUnknown_08DB92FC[] = INCBIN_U32("graphics/decorations/decor_powder_snow_mat.gbapal.lz");
-const u8 gUnknown_08DB931C[] = INCBIN_U8("graphics/decorations/decor_attract_mat.4bpp.lz");
-const u8 gUnknown_08DB93E8[] = INCBIN_U8("graphics/decorations/decor_attract_mat.gbapal.lz");
+const u32 gUnknown_08DB931C[] = INCBIN_U32("graphics/decorations/decor_attract_mat.4bpp.lz");
+const u32 gUnknown_08DB93E8[] = INCBIN_U32("graphics/decorations/decor_attract_mat.gbapal.lz");
-const u8 gUnknown_08DB940C[] = INCBIN_U8("graphics/decorations/decor_fissure_mat.4bpp.lz");
-const u8 gUnknown_08DB94CC[] = INCBIN_U8("graphics/decorations/decor_fissure_mat.gbapal.lz");
+const u32 gUnknown_08DB940C[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.4bpp.lz");
+const u32 gUnknown_08DB94CC[] = INCBIN_U32("graphics/decorations/decor_fissure_mat.gbapal.lz");
-const u8 gUnknown_08DB94E8[] = INCBIN_U8("graphics/decorations/decor_spikes_mat.4bpp.lz");
-const u8 gUnknown_08DB95AC[] = INCBIN_U8("graphics/decorations/decor_spikes_mat.gbapal.lz");
+const u32 gUnknown_08DB94E8[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.4bpp.lz");
+const u32 gUnknown_08DB95AC[] = INCBIN_U32("graphics/decorations/decor_spikes_mat.gbapal.lz");
-const u8 gUnknown_08DB95D0[] = INCBIN_U8("graphics/decorations/decor_snorlax_doll.4bpp.lz");
-const u8 gUnknown_08DB96C4[] = INCBIN_U8("graphics/decorations/decor_snorlax_doll.gbapal.lz");
+const u32 gUnknown_08DB95D0[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.4bpp.lz");
+const u32 gUnknown_08DB96C4[] = INCBIN_U32("graphics/decorations/decor_snorlax_doll.gbapal.lz");
-const u8 gUnknown_08DB96EC[] = INCBIN_U8("graphics/decorations/decor_rhydon_doll.4bpp.lz");
-const u8 gUnknown_08DB97F4[] = INCBIN_U8("graphics/decorations/decor_rhydon_doll.gbapal.lz");
+const u32 gUnknown_08DB96EC[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.4bpp.lz");
+const u32 gUnknown_08DB97F4[] = INCBIN_U32("graphics/decorations/decor_rhydon_doll.gbapal.lz");
-const u8 gUnknown_08DB981C[] = INCBIN_U8("graphics/decorations/decor_lapras_doll.4bpp.lz");
-const u8 gUnknown_08DB9908[] = INCBIN_U8("graphics/decorations/decor_lapras_doll.gbapal.lz");
+const u32 gUnknown_08DB981C[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.4bpp.lz");
+const u32 gUnknown_08DB9908[] = INCBIN_U32("graphics/decorations/decor_lapras_doll.gbapal.lz");
-const u8 gUnknown_08DB9930[] = INCBIN_U8("graphics/decorations/decor_venusaur_doll.4bpp.lz");
-const u8 gUnknown_08DB9A54[] = INCBIN_U8("graphics/decorations/decor_venusaur_doll.gbapal.lz");
+const u32 gUnknown_08DB9930[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.4bpp.lz");
+const u32 gUnknown_08DB9A54[] = INCBIN_U32("graphics/decorations/decor_venusaur_doll.gbapal.lz");
-const u8 gUnknown_08DB9A7C[] = INCBIN_U8("graphics/decorations/decor_charizard_doll.4bpp.lz");
-const u8 gUnknown_08DB9B7C[] = INCBIN_U8("graphics/decorations/decor_charizard_doll.gbapal.lz");
+const u32 gUnknown_08DB9A7C[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.4bpp.lz");
+const u32 gUnknown_08DB9B7C[] = INCBIN_U32("graphics/decorations/decor_charizard_doll.gbapal.lz");
-const u8 gUnknown_08DB9BA4[] = INCBIN_U8("graphics/decorations/decor_blastoise_doll.4bpp.lz");
-const u8 gUnknown_08DB9CB0[] = INCBIN_U8("graphics/decorations/decor_blastoise_doll.gbapal.lz");
+const u32 gUnknown_08DB9BA4[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.4bpp.lz");
+const u32 gUnknown_08DB9CB0[] = INCBIN_U32("graphics/decorations/decor_blastoise_doll.gbapal.lz");
-const u8 gUnknown_08DB9CD8[] = INCBIN_U8("graphics/decorations/decor_wailmer_doll.4bpp.lz");
-const u8 gUnknown_08DB9DAC[] = INCBIN_U8("graphics/decorations/decor_wailmer_doll.gbapal.lz");
+const u32 gUnknown_08DB9CD8[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.4bpp.lz");
+const u32 gUnknown_08DB9DAC[] = INCBIN_U32("graphics/decorations/decor_wailmer_doll.gbapal.lz");
-const u8 gUnknown_08DB9DD4[] = INCBIN_U8("graphics/decorations/decor_regice_doll.4bpp.lz");
-const u8 gUnknown_08DB9EE4[] = INCBIN_U8("graphics/decorations/decor_regice_doll.gbapal.lz");
+const u32 gUnknown_08DB9DD4[] = INCBIN_U32("graphics/decorations/decor_regice_doll.4bpp.lz");
+const u32 gUnknown_08DB9EE4[] = INCBIN_U32("graphics/decorations/decor_regice_doll.gbapal.lz");
-const u8 gUnknown_08DB9F08[] = INCBIN_U8("graphics/decorations/decor_regirock_doll.4bpp.lz");
-const u8 gUnknown_08DB9FFC[] = INCBIN_U8("graphics/decorations/decor_regirock_doll.gbapal.lz");
+const u32 gUnknown_08DB9F08[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.4bpp.lz");
+const u32 gUnknown_08DB9FFC[] = INCBIN_U32("graphics/decorations/decor_regirock_doll.gbapal.lz");
-const u8 gUnknown_08DBA020[] = INCBIN_U8("graphics/decorations/decor_registeel_doll.4bpp.lz");
-const u8 gUnknown_08DBA12C[] = INCBIN_U8("graphics/decorations/decor_registeel_doll.gbapal.lz");
+const u32 gUnknown_08DBA020[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.4bpp.lz");
+const u32 gUnknown_08DBA12C[] = INCBIN_U32("graphics/decorations/decor_registeel_doll.gbapal.lz");
diff --git a/src/data/graphics/interface_pokeballs.h b/src/data/graphics/interface_pokeballs.h
index db91283ae..fe9a4e5be 100644
--- a/src/data/graphics/interface_pokeballs.h
+++ b/src/data/graphics/interface_pokeballs.h
@@ -1,37 +1,37 @@
-const u8 gInterfaceGfx_PokeBall[] = INCBIN_U8("graphics/interface/ball/poke.4bpp.lz");
-const u8 gInterfacePal_PokeBall[] = INCBIN_U8("graphics/interface/ball/poke.gbapal.lz");
+const u32 gInterfaceGfx_PokeBall[] = INCBIN_U32("graphics/interface/ball/poke.4bpp.lz");
+const u32 gInterfacePal_PokeBall[] = INCBIN_U32("graphics/interface/ball/poke.gbapal.lz");
-const u8 gInterfaceGfx_GreatBall[] = INCBIN_U8("graphics/interface/ball/great.4bpp.lz");
-const u8 gInterfacePal_GreatBall[] = INCBIN_U8("graphics/interface/ball/great.gbapal.lz");
+const u32 gInterfaceGfx_GreatBall[] = INCBIN_U32("graphics/interface/ball/great.4bpp.lz");
+const u32 gInterfacePal_GreatBall[] = INCBIN_U32("graphics/interface/ball/great.gbapal.lz");
-const u8 gInterfaceGfx_SafariBall[] = INCBIN_U8("graphics/interface/ball/safari.4bpp.lz");
-const u8 gInterfacePal_SafariBall[] = INCBIN_U8("graphics/interface/ball/safari.gbapal.lz");
+const u32 gInterfaceGfx_SafariBall[] = INCBIN_U32("graphics/interface/ball/safari.4bpp.lz");
+const u32 gInterfacePal_SafariBall[] = INCBIN_U32("graphics/interface/ball/safari.gbapal.lz");
-const u8 gInterfaceGfx_UltraBall[] = INCBIN_U8("graphics/interface/ball/ultra.4bpp.lz");
-const u8 gInterfacePal_UltraBall[] = INCBIN_U8("graphics/interface/ball/ultra.gbapal.lz");
+const u32 gInterfaceGfx_UltraBall[] = INCBIN_U32("graphics/interface/ball/ultra.4bpp.lz");
+const u32 gInterfacePal_UltraBall[] = INCBIN_U32("graphics/interface/ball/ultra.gbapal.lz");
-const u8 gInterfaceGfx_MasterBall[] = INCBIN_U8("graphics/interface/ball/master.4bpp.lz");
-const u8 gInterfacePal_MasterBall[] = INCBIN_U8("graphics/interface/ball/master.gbapal.lz");
+const u32 gInterfaceGfx_MasterBall[] = INCBIN_U32("graphics/interface/ball/master.4bpp.lz");
+const u32 gInterfacePal_MasterBall[] = INCBIN_U32("graphics/interface/ball/master.gbapal.lz");
-const u8 gInterfaceGfx_NetBall[] = INCBIN_U8("graphics/interface/ball/net.4bpp.lz");
-const u8 gInterfacePal_NetBall[] = INCBIN_U8("graphics/interface/ball/net.gbapal.lz");
+const u32 gInterfaceGfx_NetBall[] = INCBIN_U32("graphics/interface/ball/net.4bpp.lz");
+const u32 gInterfacePal_NetBall[] = INCBIN_U32("graphics/interface/ball/net.gbapal.lz");
-const u8 gInterfaceGfx_DiveBall[] = INCBIN_U8("graphics/interface/ball/dive.4bpp.lz");
-const u8 gInterfacePal_DiveBall[] = INCBIN_U8("graphics/interface/ball/dive.gbapal.lz");
+const u32 gInterfaceGfx_DiveBall[] = INCBIN_U32("graphics/interface/ball/dive.4bpp.lz");
+const u32 gInterfacePal_DiveBall[] = INCBIN_U32("graphics/interface/ball/dive.gbapal.lz");
-const u8 gInterfaceGfx_NestBall[] = INCBIN_U8("graphics/interface/ball/nest.4bpp.lz");
-const u8 gInterfacePal_NestBall[] = INCBIN_U8("graphics/interface/ball/nest.gbapal.lz");
+const u32 gInterfaceGfx_NestBall[] = INCBIN_U32("graphics/interface/ball/nest.4bpp.lz");
+const u32 gInterfacePal_NestBall[] = INCBIN_U32("graphics/interface/ball/nest.gbapal.lz");
-const u8 gInterfaceGfx_RepeatBall[] = INCBIN_U8("graphics/interface/ball/repeat.4bpp.lz");
-const u8 gInterfacePal_RepeatBall[] = INCBIN_U8("graphics/interface/ball/repeat.gbapal.lz");
+const u32 gInterfaceGfx_RepeatBall[] = INCBIN_U32("graphics/interface/ball/repeat.4bpp.lz");
+const u32 gInterfacePal_RepeatBall[] = INCBIN_U32("graphics/interface/ball/repeat.gbapal.lz");
-const u8 gInterfaceGfx_TimerBall[] = INCBIN_U8("graphics/interface/ball/timer.4bpp.lz");
-const u8 gInterfacePal_TimerBall[] = INCBIN_U8("graphics/interface/ball/timer.gbapal.lz");
+const u32 gInterfaceGfx_TimerBall[] = INCBIN_U32("graphics/interface/ball/timer.4bpp.lz");
+const u32 gInterfacePal_TimerBall[] = INCBIN_U32("graphics/interface/ball/timer.gbapal.lz");
-const u8 gInterfaceGfx_LuxuryBall[] = INCBIN_U8("graphics/interface/ball/luxury.4bpp.lz");
-const u8 gInterfacePal_LuxuryBall[] = INCBIN_U8("graphics/interface/ball/luxury.gbapal.lz");
+const u32 gInterfaceGfx_LuxuryBall[] = INCBIN_U32("graphics/interface/ball/luxury.4bpp.lz");
+const u32 gInterfacePal_LuxuryBall[] = INCBIN_U32("graphics/interface/ball/luxury.gbapal.lz");
-const u8 gInterfaceGfx_PremierBall[] = INCBIN_U8("graphics/interface/ball/premier.4bpp.lz");
-const u8 gInterfacePal_PremierBall[] = INCBIN_U8("graphics/interface/ball/premier.gbapal.lz");
+const u32 gInterfaceGfx_PremierBall[] = INCBIN_U32("graphics/interface/ball/premier.4bpp.lz");
+const u32 gInterfacePal_PremierBall[] = INCBIN_U32("graphics/interface/ball/premier.gbapal.lz");
-const u8 gOpenPokeballGfx[] = INCBIN_U8("graphics/interface/ball_open.4bpp.lz");
+const u32 gOpenPokeballGfx[] = INCBIN_U32("graphics/interface/ball_open.4bpp.lz");
diff --git a/src/data/graphics/intro_scene.h b/src/data/graphics/intro_scene.h
index 9c049ffb2..ea67c7b0d 100644
--- a/src/data/graphics/intro_scene.h
+++ b/src/data/graphics/intro_scene.h
@@ -6,43 +6,43 @@ const u16 gIntro2TorchicPal[] = INCBIN_U16("graphics/intro/intro2_torchic.gbapal
const u16 gIntro2ManectricPal[] = INCBIN_U16("graphics/intro/intro2_manectric.gbapal");
const u16 gIntro2FlygonPal[] = INCBIN_U16("graphics/intro/intro2_flygon.gbapal");
-const u8 gIntro2VolbeatGfx[] = INCBIN_U8("graphics/intro/intro2_volbeat.4bpp.lz");
-const u8 gIntro2TorchicGfx[] = INCBIN_U8("graphics/intro/intro2_torchic.4bpp.lz");
-const u8 gIntro2ManectricGfx[] = INCBIN_U8("graphics/intro/intro2_manectric.4bpp.lz");
-const u8 gIntro2FlygonGfx[] = INCBIN_U8("graphics/intro/intro2_flygon.4bpp.lz");
-const u8 gIntro2BrendanNoTurnGfx[] = INCBIN_U8("graphics/intro/intro2_brendan_noturn.4bpp.lz");
-const u8 gIntro2MayNoTurnGfx[] = INCBIN_U8("graphics/intro/intro2_may_noturn.4bpp.lz");
+const u32 gIntro2VolbeatGfx[] = INCBIN_U32("graphics/intro/intro2_volbeat.4bpp.lz");
+const u32 gIntro2TorchicGfx[] = INCBIN_U32("graphics/intro/intro2_torchic.4bpp.lz");
+const u32 gIntro2ManectricGfx[] = INCBIN_U32("graphics/intro/intro2_manectric.4bpp.lz");
+const u32 gIntro2FlygonGfx[] = INCBIN_U32("graphics/intro/intro2_flygon.4bpp.lz");
+const u32 gIntro2BrendanNoTurnGfx[] = INCBIN_U32("graphics/intro/intro2_brendan_noturn.4bpp.lz");
+const u32 gIntro2MayNoTurnGfx[] = INCBIN_U32("graphics/intro/intro2_may_noturn.4bpp.lz");
-const u16 gIntro3GroudonGfx[] = INCBIN_U16("graphics/intro/intro3_groudon.8bpp.lz");
-const u16 gIntro3GroudonTilemap[] = INCBIN_U16("graphics/intro/intro3_groudon.bin.lz");
+const u32 gIntro3GroudonGfx[] = INCBIN_U32("graphics/intro/intro3_groudon.8bpp.lz");
+const u32 gIntro3GroudonTilemap[] = INCBIN_U32("graphics/intro/intro3_groudon.bin.lz");
-const u16 gIntro3KyogreGfx[] = INCBIN_U16("graphics/intro/intro3_kyogre.8bpp.lz");
-const u16 gIntro3KyogreTilemap[] = INCBIN_U16("graphics/intro/intro3_kyogre.bin.lz");
+const u32 gIntro3KyogreGfx[] = INCBIN_U32("graphics/intro/intro3_kyogre.8bpp.lz");
+const u32 gIntro3KyogreTilemap[] = INCBIN_U32("graphics/intro/intro3_kyogre.bin.lz");
-const u8 gIntro3LegendBgGfx[] = INCBIN_U8("graphics/intro/legend_bg.4bpp.lz"); // groudon/kyogre/bg
+const u32 gIntro3LegendBgGfx[] = INCBIN_U32("graphics/intro/legend_bg.4bpp.lz"); // groudon/kyogre/bg
-const u16 gIntro3GroudonBgTilemap[] = INCBIN_U16("graphics/intro/legend_bg1.bin.lz");
-const u16 gIntro3KyogreBgTilemap[] = INCBIN_U16("graphics/intro/legend_bg2.bin.lz");
+const u32 gIntro3GroudonBgTilemap[] = INCBIN_U32("graphics/intro/legend_bg1.bin.lz");
+const u32 gIntro3KyogreBgTilemap[] = INCBIN_U32("graphics/intro/legend_bg2.bin.lz");
-const u8 gIntro3CloudsGfx[] = INCBIN_U8("graphics/intro/intro3_clouds.4bpp.lz");
-const u16 gIntro3Clouds1Tilemap[] = INCBIN_U16("graphics/intro/intro3_clouds1.bin.lz");
-const u16 gIntro3Clouds2Tilemap[] = INCBIN_U16("graphics/intro/intro3_clouds2.bin.lz");
-const u16 gIntro3Clouds3Tilemap[] = INCBIN_U16("graphics/intro/intro3_clouds3.bin.lz");
+const u32 gIntro3CloudsGfx[] = INCBIN_U32("graphics/intro/intro3_clouds.4bpp.lz");
+const u32 gIntro3Clouds1Tilemap[] = INCBIN_U32("graphics/intro/intro3_clouds1.bin.lz");
+const u32 gIntro3Clouds2Tilemap[] = INCBIN_U32("graphics/intro/intro3_clouds2.bin.lz");
+const u32 gIntro3Clouds3Tilemap[] = INCBIN_U32("graphics/intro/intro3_clouds3.bin.lz");
-const u8 gIntro3LightningGfx[] = INCBIN_U8("graphics/intro/intro3_lightning.4bpp.lz");
+const u32 gIntro3LightningGfx[] = INCBIN_U32("graphics/intro/intro3_lightning.4bpp.lz");
const u16 gIntro3LightningPal[] = INCBIN_U16("graphics/intro/intro3_lightning.gbapal");
-const u8 gIntro3RayquazaGfx[] = INCBIN_U8("graphics/intro/intro3_rayquaza.4bpp.lz");
-const u16 gIntro3RayquazaTilemap[] = INCBIN_U16("graphics/intro/intro3_rayquaza.bin.lz");
+const u32 gIntro3RayquazaGfx[] = INCBIN_U32("graphics/intro/intro3_rayquaza.4bpp.lz");
+const u32 gIntro3RayquazaTilemap[] = INCBIN_U32("graphics/intro/intro3_rayquaza.bin.lz");
-const u16 gUnknown_D8C374[] = INCBIN_U16("graphics/unknown/unknown_D8C374.bin.lz");
-const u16 gUnknown_D8C5C4[] = INCBIN_U16("graphics/unknown/unknown_D8C5C4.bin.lz");
+const u32 gUnknown_D8C374[] = INCBIN_U32("graphics/unknown/unknown_D8C374.bin.lz");
+const u32 gUnknown_D8C5C4[] = INCBIN_U32("graphics/unknown/unknown_D8C5C4.bin.lz");
-const u8 gIntro3Clouds2Gfx[] = INCBIN_U8("graphics/intro/intro3_clouds2.4bpp.lz"); //clouds 2, during the rayquaza flash
-const u16 gIntro3Clouds4Tilemap[] = INCBIN_U16("graphics/intro/intro3_clouds4.bin.lz");
+const u32 gIntro3Clouds2Gfx[] = INCBIN_U32("graphics/intro/intro3_clouds2.4bpp.lz"); //clouds 2, during the rayquaza flash
+const u32 gIntro3Clouds4Tilemap[] = INCBIN_U32("graphics/intro/intro3_clouds4.bin.lz");
-const u8 gIntro2BubblesGfx[] = INCBIN_U8("graphics/intro/intro2_bubbles.4bpp.lz");
+const u32 gIntro2BubblesGfx[] = INCBIN_U32("graphics/intro/intro2_bubbles.4bpp.lz");
const u16 gIntro2BubblesPal[] = INCBIN_U16("graphics/intro/intro2_bubbles.gbapal");
-const u8 gIntro1FlygonGfx[] = INCBIN_U8("graphics/intro/intro1_flygon.4bpp.lz");
-const u8 gIntro1SparkleGfx[] = INCBIN_U8("graphics/intro/intro1_sparkle.4bpp.lz");
+const u32 gIntro1FlygonGfx[] = INCBIN_U32("graphics/intro/intro1_flygon.4bpp.lz");
+const u32 gIntro1SparkleGfx[] = INCBIN_U32("graphics/intro/intro1_sparkle.4bpp.lz");
diff --git a/src/data/graphics/items.h b/src/data/graphics/items.h
index 299e519ca..0f91c2250 100644
--- a/src/data/graphics/items.h
+++ b/src/data/graphics/items.h
@@ -1,738 +1,738 @@
-const u8 gItemIcon_QuestionMark[] = INCBIN_U8("graphics/items/icons/question_mark.4bpp.lz");
-const u8 gItemIconPalette_QuestionMark[] = INCBIN_U8("graphics/items/icon_palettes/question_mark.gbapal.lz");
+const u32 gItemIcon_QuestionMark[] = INCBIN_U32("graphics/items/icons/question_mark.4bpp.lz");
+const u32 gItemIconPalette_QuestionMark[] = INCBIN_U32("graphics/items/icon_palettes/question_mark.gbapal.lz");
-const u8 gItemIcon_ReturnToFieldArrow[] = INCBIN_U8("graphics/items/icons/return_to_field_arrow.4bpp.lz");
-const u8 gItemIconPalette_ReturnToFieldArrow[] = INCBIN_U8("graphics/items/icon_palettes/return_to_field_arrow.gbapal.lz");
+const u32 gItemIcon_ReturnToFieldArrow[] = INCBIN_U32("graphics/items/icons/return_to_field_arrow.4bpp.lz");
+const u32 gItemIconPalette_ReturnToFieldArrow[] = INCBIN_U32("graphics/items/icon_palettes/return_to_field_arrow.gbapal.lz");
// Pokeballs
-const u8 gItemIcon_MasterBall[] = INCBIN_U8("graphics/items/icons/master_ball.4bpp.lz");
-const u8 gItemIconPalette_MasterBall[] = INCBIN_U8("graphics/items/icon_palettes/master_ball.gbapal.lz");
+const u32 gItemIcon_MasterBall[] = INCBIN_U32("graphics/items/icons/master_ball.4bpp.lz");
+const u32 gItemIconPalette_MasterBall[] = INCBIN_U32("graphics/items/icon_palettes/master_ball.gbapal.lz");
-const u8 gItemIcon_UltraBall[] = INCBIN_U8("graphics/items/icons/ultra_ball.4bpp.lz");
-const u8 gItemIconPalette_UltraBall[] = INCBIN_U8("graphics/items/icon_palettes/ultra_ball.gbapal.lz");
+const u32 gItemIcon_UltraBall[] = INCBIN_U32("graphics/items/icons/ultra_ball.4bpp.lz");
+const u32 gItemIconPalette_UltraBall[] = INCBIN_U32("graphics/items/icon_palettes/ultra_ball.gbapal.lz");
-const u8 gItemIcon_GreatBall[] = INCBIN_U8("graphics/items/icons/great_ball.4bpp.lz");
-const u8 gItemIconPalette_GreatBall[] = INCBIN_U8("graphics/items/icon_palettes/great_ball.gbapal.lz");
+const u32 gItemIcon_GreatBall[] = INCBIN_U32("graphics/items/icons/great_ball.4bpp.lz");
+const u32 gItemIconPalette_GreatBall[] = INCBIN_U32("graphics/items/icon_palettes/great_ball.gbapal.lz");
-const u8 gItemIcon_PokeBall[] = INCBIN_U8("graphics/items/icons/poke_ball.4bpp.lz");
-const u8 gItemIconPalette_PokeBall[] = INCBIN_U8("graphics/items/icon_palettes/poke_ball.gbapal.lz");
+const u32 gItemIcon_PokeBall[] = INCBIN_U32("graphics/items/icons/poke_ball.4bpp.lz");
+const u32 gItemIconPalette_PokeBall[] = INCBIN_U32("graphics/items/icon_palettes/poke_ball.gbapal.lz");
-const u8 gItemIcon_SafariBall[] = INCBIN_U8("graphics/items/icons/safari_ball.4bpp.lz");
-const u8 gItemIconPalette_SafariBall[] = INCBIN_U8("graphics/items/icon_palettes/safari_ball.gbapal.lz");
+const u32 gItemIcon_SafariBall[] = INCBIN_U32("graphics/items/icons/safari_ball.4bpp.lz");
+const u32 gItemIconPalette_SafariBall[] = INCBIN_U32("graphics/items/icon_palettes/safari_ball.gbapal.lz");
-const u8 gItemIcon_NetBall[] = INCBIN_U8("graphics/items/icons/net_ball.4bpp.lz");
-const u8 gItemIconPalette_NetBall[] = INCBIN_U8("graphics/items/icon_palettes/net_ball.gbapal.lz");
+const u32 gItemIcon_NetBall[] = INCBIN_U32("graphics/items/icons/net_ball.4bpp.lz");
+const u32 gItemIconPalette_NetBall[] = INCBIN_U32("graphics/items/icon_palettes/net_ball.gbapal.lz");
-const u8 gItemIcon_DiveBall[] = INCBIN_U8("graphics/items/icons/dive_ball.4bpp.lz");
-const u8 gItemIconPalette_DiveBall[] = INCBIN_U8("graphics/items/icon_palettes/dive_ball.gbapal.lz");
+const u32 gItemIcon_DiveBall[] = INCBIN_U32("graphics/items/icons/dive_ball.4bpp.lz");
+const u32 gItemIconPalette_DiveBall[] = INCBIN_U32("graphics/items/icon_palettes/dive_ball.gbapal.lz");
-const u8 gItemIcon_NestBall[] = INCBIN_U8("graphics/items/icons/nest_ball.4bpp.lz");
-const u8 gItemIconPalette_NestBall[] = INCBIN_U8("graphics/items/icon_palettes/nest_ball.gbapal.lz");
+const u32 gItemIcon_NestBall[] = INCBIN_U32("graphics/items/icons/nest_ball.4bpp.lz");
+const u32 gItemIconPalette_NestBall[] = INCBIN_U32("graphics/items/icon_palettes/nest_ball.gbapal.lz");
-const u8 gItemIcon_RepeatBall[] = INCBIN_U8("graphics/items/icons/repeat_ball.4bpp.lz");
-const u8 gItemIconPalette_RepeatBall[] = INCBIN_U8("graphics/items/icon_palettes/repeat_ball.gbapal.lz");
+const u32 gItemIcon_RepeatBall[] = INCBIN_U32("graphics/items/icons/repeat_ball.4bpp.lz");
+const u32 gItemIconPalette_RepeatBall[] = INCBIN_U32("graphics/items/icon_palettes/repeat_ball.gbapal.lz");
-const u8 gItemIcon_TimerBall[] = INCBIN_U8("graphics/items/icons/timer_ball.4bpp.lz");
+const u32 gItemIcon_TimerBall[] = INCBIN_U32("graphics/items/icons/timer_ball.4bpp.lz");
-const u8 gItemIcon_LuxuryBall[] = INCBIN_U8("graphics/items/icons/luxury_ball.4bpp.lz");
-const u8 gItemIconPalette_LuxuryBall[] = INCBIN_U8("graphics/items/icon_palettes/luxury_ball.gbapal.lz");
+const u32 gItemIcon_LuxuryBall[] = INCBIN_U32("graphics/items/icons/luxury_ball.4bpp.lz");
+const u32 gItemIconPalette_LuxuryBall[] = INCBIN_U32("graphics/items/icon_palettes/luxury_ball.gbapal.lz");
-const u8 gItemIcon_PremierBall[] = INCBIN_U8("graphics/items/icons/premier_ball.4bpp.lz");
+const u32 gItemIcon_PremierBall[] = INCBIN_U32("graphics/items/icons/premier_ball.4bpp.lz");
// Medicine
-const u8 gItemIcon_Potion[] = INCBIN_U8("graphics/items/icons/potion.4bpp.lz");
-const u8 gItemIconPalette_Potion[] = INCBIN_U8("graphics/items/icon_palettes/potion.gbapal.lz");
+const u32 gItemIcon_Potion[] = INCBIN_U32("graphics/items/icons/potion.4bpp.lz");
+const u32 gItemIconPalette_Potion[] = INCBIN_U32("graphics/items/icon_palettes/potion.gbapal.lz");
-const u8 gItemIcon_Antidote[] = INCBIN_U8("graphics/items/icons/antidote.4bpp.lz");
-const u8 gItemIconPalette_Antidote[] = INCBIN_U8("graphics/items/icon_palettes/antidote.gbapal.lz");
+const u32 gItemIcon_Antidote[] = INCBIN_U32("graphics/items/icons/antidote.4bpp.lz");
+const u32 gItemIconPalette_Antidote[] = INCBIN_U32("graphics/items/icon_palettes/antidote.gbapal.lz");
-const u8 gItemIconPalette_BurnHeal[] = INCBIN_U8("graphics/items/icon_palettes/burn_heal.gbapal.lz");
-const u8 gItemIconPalette_IceHeal[] = INCBIN_U8("graphics/items/icon_palettes/ice_heal.gbapal.lz");
-const u8 gItemIcon_StatusHeal[] = INCBIN_U8("graphics/items/icons/status_heal.4bpp.lz");
-const u8 gItemIconPalette_Awakening[] = INCBIN_U8("graphics/items/icon_palettes/awakening.gbapal.lz");
-const u8 gItemIconPalette_ParalyzeHeal[] = INCBIN_U8("graphics/items/icon_palettes/paralyze_heal.gbapal.lz");
+const u32 gItemIconPalette_BurnHeal[] = INCBIN_U32("graphics/items/icon_palettes/burn_heal.gbapal.lz");
+const u32 gItemIconPalette_IceHeal[] = INCBIN_U32("graphics/items/icon_palettes/ice_heal.gbapal.lz");
+const u32 gItemIcon_StatusHeal[] = INCBIN_U32("graphics/items/icons/status_heal.4bpp.lz");
+const u32 gItemIconPalette_Awakening[] = INCBIN_U32("graphics/items/icon_palettes/awakening.gbapal.lz");
+const u32 gItemIconPalette_ParalyzeHeal[] = INCBIN_U32("graphics/items/icon_palettes/paralyze_heal.gbapal.lz");
-const u8 gItemIcon_LargePotion[] = INCBIN_U8("graphics/items/icons/large_potion.4bpp.lz");
-const u8 gItemIconPalette_FullRestore[] = INCBIN_U8("graphics/items/icon_palettes/full_restore.gbapal.lz");
-const u8 gItemIconPalette_MaxPotion[] = INCBIN_U8("graphics/items/icon_palettes/max_potion.gbapal.lz");
+const u32 gItemIcon_LargePotion[] = INCBIN_U32("graphics/items/icons/large_potion.4bpp.lz");
+const u32 gItemIconPalette_FullRestore[] = INCBIN_U32("graphics/items/icon_palettes/full_restore.gbapal.lz");
+const u32 gItemIconPalette_MaxPotion[] = INCBIN_U32("graphics/items/icon_palettes/max_potion.gbapal.lz");
-const u8 gItemIconPalette_HyperPotion[] = INCBIN_U8("graphics/items/icon_palettes/hyper_potion.gbapal.lz");
+const u32 gItemIconPalette_HyperPotion[] = INCBIN_U32("graphics/items/icon_palettes/hyper_potion.gbapal.lz");
-const u8 gItemIconPalette_SuperPotion[] = INCBIN_U8("graphics/items/icon_palettes/super_potion.gbapal.lz");
+const u32 gItemIconPalette_SuperPotion[] = INCBIN_U32("graphics/items/icon_palettes/super_potion.gbapal.lz");
-const u8 gItemIcon_FullHeal[] = INCBIN_U8("graphics/items/icons/full_heal.4bpp.lz");
-const u8 gItemIconPalette_FullHeal[] = INCBIN_U8("graphics/items/icon_palettes/full_heal.gbapal.lz");
+const u32 gItemIcon_FullHeal[] = INCBIN_U32("graphics/items/icons/full_heal.4bpp.lz");
+const u32 gItemIconPalette_FullHeal[] = INCBIN_U32("graphics/items/icon_palettes/full_heal.gbapal.lz");
-const u8 gItemIcon_Revive[] = INCBIN_U8("graphics/items/icons/revive.4bpp.lz");
+const u32 gItemIcon_Revive[] = INCBIN_U32("graphics/items/icons/revive.4bpp.lz");
-const u8 gItemIcon_MaxRevive[] = INCBIN_U8("graphics/items/icons/max_revive.4bpp.lz");
+const u32 gItemIcon_MaxRevive[] = INCBIN_U32("graphics/items/icons/max_revive.4bpp.lz");
-const u8 gItemIconPalette_Revive[] = INCBIN_U8("graphics/items/icon_palettes/revive.gbapal.lz");
+const u32 gItemIconPalette_Revive[] = INCBIN_U32("graphics/items/icon_palettes/revive.gbapal.lz");
-const u8 gItemIcon_FreshWater[] = INCBIN_U8("graphics/items/icons/fresh_water.4bpp.lz");
-const u8 gItemIconPalette_FreshWater[] = INCBIN_U8("graphics/items/icon_palettes/fresh_water.gbapal.lz");
+const u32 gItemIcon_FreshWater[] = INCBIN_U32("graphics/items/icons/fresh_water.4bpp.lz");
+const u32 gItemIconPalette_FreshWater[] = INCBIN_U32("graphics/items/icon_palettes/fresh_water.gbapal.lz");
-const u8 gItemIcon_SodaPop[] = INCBIN_U8("graphics/items/icons/soda_pop.4bpp.lz");
-const u8 gItemIconPalette_SodaPop[] = INCBIN_U8("graphics/items/icon_palettes/soda_pop.gbapal.lz");
+const u32 gItemIcon_SodaPop[] = INCBIN_U32("graphics/items/icons/soda_pop.4bpp.lz");
+const u32 gItemIconPalette_SodaPop[] = INCBIN_U32("graphics/items/icon_palettes/soda_pop.gbapal.lz");
-const u8 gItemIcon_Lemonade[] = INCBIN_U8("graphics/items/icons/lemonade.4bpp.lz");
-const u8 gItemIconPalette_Lemonade[] = INCBIN_U8("graphics/items/icon_palettes/lemonade.gbapal.lz");
+const u32 gItemIcon_Lemonade[] = INCBIN_U32("graphics/items/icons/lemonade.4bpp.lz");
+const u32 gItemIconPalette_Lemonade[] = INCBIN_U32("graphics/items/icon_palettes/lemonade.gbapal.lz");
-const u8 gItemIcon_MoomooMilk[] = INCBIN_U8("graphics/items/icons/moomoo_milk.4bpp.lz");
-const u8 gItemIconPalette_MoomooMilk[] = INCBIN_U8("graphics/items/icon_palettes/moomoo_milk.gbapal.lz");
+const u32 gItemIcon_MoomooMilk[] = INCBIN_U32("graphics/items/icons/moomoo_milk.4bpp.lz");
+const u32 gItemIconPalette_MoomooMilk[] = INCBIN_U32("graphics/items/icon_palettes/moomoo_milk.gbapal.lz");
-const u8 gItemIcon_Powder[] = INCBIN_U8("graphics/items/icons/powder.4bpp.lz");
-const u8 gItemIconPalette_EnergyPowder[] = INCBIN_U8("graphics/items/icon_palettes/energy_powder.gbapal.lz");
+const u32 gItemIcon_Powder[] = INCBIN_U32("graphics/items/icons/powder.4bpp.lz");
+const u32 gItemIconPalette_EnergyPowder[] = INCBIN_U32("graphics/items/icon_palettes/energy_powder.gbapal.lz");
-const u8 gItemIcon_EnergyRoot[] = INCBIN_U8("graphics/items/icons/energy_root.4bpp.lz");
-const u8 gItemIconPalette_EnergyRoot[] = INCBIN_U8("graphics/items/icon_palettes/energy_root.gbapal.lz");
+const u32 gItemIcon_EnergyRoot[] = INCBIN_U32("graphics/items/icons/energy_root.4bpp.lz");
+const u32 gItemIconPalette_EnergyRoot[] = INCBIN_U32("graphics/items/icon_palettes/energy_root.gbapal.lz");
-const u8 gItemIconPalette_HealPowder[] = INCBIN_U8("graphics/items/icon_palettes/heal_powder.gbapal.lz");
+const u32 gItemIconPalette_HealPowder[] = INCBIN_U32("graphics/items/icon_palettes/heal_powder.gbapal.lz");
-const u8 gItemIcon_RevivalHerb[] = INCBIN_U8("graphics/items/icons/revival_herb.4bpp.lz");
-const u8 gItemIconPalette_RevivalHerb[] = INCBIN_U8("graphics/items/icon_palettes/revival_herb.gbapal.lz");
+const u32 gItemIcon_RevivalHerb[] = INCBIN_U32("graphics/items/icons/revival_herb.4bpp.lz");
+const u32 gItemIconPalette_RevivalHerb[] = INCBIN_U32("graphics/items/icon_palettes/revival_herb.gbapal.lz");
-const u8 gItemIcon_Ether[] = INCBIN_U8("graphics/items/icons/ether.4bpp.lz");
-const u8 gItemIconPalette_Ether[] = INCBIN_U8("graphics/items/icon_palettes/ether.gbapal.lz");
-const u8 gItemIconPalette_MaxEther[] = INCBIN_U8("graphics/items/icon_palettes/max_ether.gbapal.lz");
-const u8 gItemIconPalette_Elixir[] = INCBIN_U8("graphics/items/icon_palettes/elixir.gbapal.lz");
-const u8 gItemIconPalette_MaxElixir[] = INCBIN_U8("graphics/items/icon_palettes/max_elixir.gbapal.lz");
+const u32 gItemIcon_Ether[] = INCBIN_U32("graphics/items/icons/ether.4bpp.lz");
+const u32 gItemIconPalette_Ether[] = INCBIN_U32("graphics/items/icon_palettes/ether.gbapal.lz");
+const u32 gItemIconPalette_MaxEther[] = INCBIN_U32("graphics/items/icon_palettes/max_ether.gbapal.lz");
+const u32 gItemIconPalette_Elixir[] = INCBIN_U32("graphics/items/icon_palettes/elixir.gbapal.lz");
+const u32 gItemIconPalette_MaxElixir[] = INCBIN_U32("graphics/items/icon_palettes/max_elixir.gbapal.lz");
-const u8 gItemIcon_LavaCookie[] = INCBIN_U8("graphics/items/icons/lava_cookie.4bpp.lz");
-const u8 gItemIconPalette_LavaCookieAndLetter[] = INCBIN_U8("graphics/items/icon_palettes/lava_cookie_and_letter.gbapal.lz");
+const u32 gItemIcon_LavaCookie[] = INCBIN_U32("graphics/items/icons/lava_cookie.4bpp.lz");
+const u32 gItemIconPalette_LavaCookieAndLetter[] = INCBIN_U32("graphics/items/icon_palettes/lava_cookie_and_letter.gbapal.lz");
-const u8 gItemIcon_Flute[] = INCBIN_U8("graphics/items/icons/flute.4bpp.lz");
-const u8 gItemIconPalette_BlueFlute[] = INCBIN_U8("graphics/items/icon_palettes/blue_flute.gbapal.lz");
-const u8 gItemIconPalette_YellowFlute[] = INCBIN_U8("graphics/items/icon_palettes/yellow_flute.gbapal.lz");
-const u8 gItemIconPalette_RedFlute[] = INCBIN_U8("graphics/items/icon_palettes/red_flute.gbapal.lz");
-const u8 gItemIconPalette_BlackFlute[] = INCBIN_U8("graphics/items/icon_palettes/black_flute.gbapal.lz");
-const u8 gItemIconPalette_WhiteFlute[] = INCBIN_U8("graphics/items/icon_palettes/white_flute.gbapal.lz");
+const u32 gItemIcon_Flute[] = INCBIN_U32("graphics/items/icons/flute.4bpp.lz");
+const u32 gItemIconPalette_BlueFlute[] = INCBIN_U32("graphics/items/icon_palettes/blue_flute.gbapal.lz");
+const u32 gItemIconPalette_YellowFlute[] = INCBIN_U32("graphics/items/icon_palettes/yellow_flute.gbapal.lz");
+const u32 gItemIconPalette_RedFlute[] = INCBIN_U32("graphics/items/icon_palettes/red_flute.gbapal.lz");
+const u32 gItemIconPalette_BlackFlute[] = INCBIN_U32("graphics/items/icon_palettes/black_flute.gbapal.lz");
+const u32 gItemIconPalette_WhiteFlute[] = INCBIN_U32("graphics/items/icon_palettes/white_flute.gbapal.lz");
-const u8 gItemIcon_BerryJuice[] = INCBIN_U8("graphics/items/icons/berry_juice.4bpp.lz");
-const u8 gItemIconPalette_BerryJuice[] = INCBIN_U8("graphics/items/icon_palettes/berry_juice.gbapal.lz");
+const u32 gItemIcon_BerryJuice[] = INCBIN_U32("graphics/items/icons/berry_juice.4bpp.lz");
+const u32 gItemIconPalette_BerryJuice[] = INCBIN_U32("graphics/items/icon_palettes/berry_juice.gbapal.lz");
-const u8 gItemIcon_SacredAsh[] = INCBIN_U8("graphics/items/icons/sacred_ash.4bpp.lz");
-const u8 gItemIconPalette_SacredAsh[] = INCBIN_U8("graphics/items/icon_palettes/sacred_ash.gbapal.lz");
+const u32 gItemIcon_SacredAsh[] = INCBIN_U32("graphics/items/icons/sacred_ash.4bpp.lz");
+const u32 gItemIconPalette_SacredAsh[] = INCBIN_U32("graphics/items/icon_palettes/sacred_ash.gbapal.lz");
// Collectibles
-const u8 gItemIconPalette_ShoalSalt[] = INCBIN_U8("graphics/items/icon_palettes/shoal_salt.gbapal.lz");
+const u32 gItemIconPalette_ShoalSalt[] = INCBIN_U32("graphics/items/icon_palettes/shoal_salt.gbapal.lz");
-const u8 gItemIcon_ShoalShell[] = INCBIN_U8("graphics/items/icons/shoal_shell.4bpp.lz");
-const u8 gItemIconPalette_Shell[] = INCBIN_U8("graphics/items/icon_palettes/shell.gbapal.lz");
+const u32 gItemIcon_ShoalShell[] = INCBIN_U32("graphics/items/icons/shoal_shell.4bpp.lz");
+const u32 gItemIconPalette_Shell[] = INCBIN_U32("graphics/items/icon_palettes/shell.gbapal.lz");
-const u8 gItemIcon_Shard[] = INCBIN_U8("graphics/items/icons/shard.4bpp.lz");
-const u8 gItemIconPalette_RedShard[] = INCBIN_U8("graphics/items/icon_palettes/red_shard.gbapal.lz");
-const u8 gItemIconPalette_BlueShard[] = INCBIN_U8("graphics/items/icon_palettes/blue_shard.gbapal.lz");
-const u8 gItemIconPalette_YellowShard[] = INCBIN_U8("graphics/items/icon_palettes/yellow_shard.gbapal.lz");
-const u8 gItemIconPalette_GreenShard[] = INCBIN_U8("graphics/items/icon_palettes/green_shard.gbapal.lz");
+const u32 gItemIcon_Shard[] = INCBIN_U32("graphics/items/icons/shard.4bpp.lz");
+const u32 gItemIconPalette_RedShard[] = INCBIN_U32("graphics/items/icon_palettes/red_shard.gbapal.lz");
+const u32 gItemIconPalette_BlueShard[] = INCBIN_U32("graphics/items/icon_palettes/blue_shard.gbapal.lz");
+const u32 gItemIconPalette_YellowShard[] = INCBIN_U32("graphics/items/icon_palettes/yellow_shard.gbapal.lz");
+const u32 gItemIconPalette_GreenShard[] = INCBIN_U32("graphics/items/icon_palettes/green_shard.gbapal.lz");
// Vitamins
-const u8 gItemIcon_HPUp[] = INCBIN_U8("graphics/items/icons/hp_up.4bpp.lz");
-const u8 gItemIconPalette_HPUp[] = INCBIN_U8("graphics/items/icon_palettes/hp_up.gbapal.lz");
+const u32 gItemIcon_HPUp[] = INCBIN_U32("graphics/items/icons/hp_up.4bpp.lz");
+const u32 gItemIconPalette_HPUp[] = INCBIN_U32("graphics/items/icon_palettes/hp_up.gbapal.lz");
-const u8 gItemIcon_Vitamin[] = INCBIN_U8("graphics/items/icons/vitamin.4bpp.lz");
-const u8 gItemIconPalette_Protein[] = INCBIN_U8("graphics/items/icon_palettes/protein.gbapal.lz");
-const u8 gItemIconPalette_Iron[] = INCBIN_U8("graphics/items/icon_palettes/iron.gbapal.lz");
-const u8 gItemIconPalette_Carbos[] = INCBIN_U8("graphics/items/icon_palettes/carbos.gbapal.lz");
-const u8 gItemIconPalette_Calcium[] = INCBIN_U8("graphics/items/icon_palettes/calcium.gbapal.lz");
+const u32 gItemIcon_Vitamin[] = INCBIN_U32("graphics/items/icons/vitamin.4bpp.lz");
+const u32 gItemIconPalette_Protein[] = INCBIN_U32("graphics/items/icon_palettes/protein.gbapal.lz");
+const u32 gItemIconPalette_Iron[] = INCBIN_U32("graphics/items/icon_palettes/iron.gbapal.lz");
+const u32 gItemIconPalette_Carbos[] = INCBIN_U32("graphics/items/icon_palettes/carbos.gbapal.lz");
+const u32 gItemIconPalette_Calcium[] = INCBIN_U32("graphics/items/icon_palettes/calcium.gbapal.lz");
-const u8 gItemIcon_RareCandy[] = INCBIN_U8("graphics/items/icons/rare_candy.4bpp.lz");
-const u8 gItemIconPalette_RareCandy[] = INCBIN_U8("graphics/items/icon_palettes/rare_candy.gbapal.lz");
+const u32 gItemIcon_RareCandy[] = INCBIN_U32("graphics/items/icons/rare_candy.4bpp.lz");
+const u32 gItemIconPalette_RareCandy[] = INCBIN_U32("graphics/items/icon_palettes/rare_candy.gbapal.lz");
-const u8 gItemIcon_PPUp[] = INCBIN_U8("graphics/items/icons/pp_up.4bpp.lz");
-const u8 gItemIconPalette_PPUp[] = INCBIN_U8("graphics/items/icon_palettes/pp_up.gbapal.lz");
+const u32 gItemIcon_PPUp[] = INCBIN_U32("graphics/items/icons/pp_up.4bpp.lz");
+const u32 gItemIconPalette_PPUp[] = INCBIN_U32("graphics/items/icon_palettes/pp_up.gbapal.lz");
-const u8 gItemIconPalette_Zinc[] = INCBIN_U8("graphics/items/icon_palettes/zinc.gbapal.lz");
+const u32 gItemIconPalette_Zinc[] = INCBIN_U32("graphics/items/icon_palettes/zinc.gbapal.lz");
-const u8 gItemIcon_PPMax[] = INCBIN_U8("graphics/items/icons/pp_max.4bpp.lz");
-const u8 gItemIconPalette_PPMax[] = INCBIN_U8("graphics/items/icon_palettes/pp_max.gbapal.lz");
+const u32 gItemIcon_PPMax[] = INCBIN_U32("graphics/items/icons/pp_max.4bpp.lz");
+const u32 gItemIconPalette_PPMax[] = INCBIN_U32("graphics/items/icon_palettes/pp_max.gbapal.lz");
// Battle items
-const u8 gItemIconPalette_GuardSpec[] = INCBIN_U8("graphics/items/icon_palettes/guard_spec.gbapal.lz");
-const u8 gItemIconPalette_DireHit[] = INCBIN_U8("graphics/items/icon_palettes/dire_hit.gbapal.lz");
-const u8 gItemIconPalette_XAttack[] = INCBIN_U8("graphics/items/icon_palettes/x_attack.gbapal.lz");
-const u8 gItemIcon_BattleStatItem[] = INCBIN_U8("graphics/items/icons/battle_stat_item.4bpp.lz");
-const u8 gItemIconPalette_XDefend[] = INCBIN_U8("graphics/items/icon_palettes/x_defend.gbapal.lz");
-const u8 gItemIconPalette_XSpeed[] = INCBIN_U8("graphics/items/icon_palettes/x_speed.gbapal.lz");
-const u8 gItemIconPalette_XAccuracy[] = INCBIN_U8("graphics/items/icon_palettes/x_accuracy.gbapal.lz");
-const u8 gItemIconPalette_XSpecial[] = INCBIN_U8("graphics/items/icon_palettes/x_special.gbapal.lz");
+const u32 gItemIconPalette_GuardSpec[] = INCBIN_U32("graphics/items/icon_palettes/guard_spec.gbapal.lz");
+const u32 gItemIconPalette_DireHit[] = INCBIN_U32("graphics/items/icon_palettes/dire_hit.gbapal.lz");
+const u32 gItemIconPalette_XAttack[] = INCBIN_U32("graphics/items/icon_palettes/x_attack.gbapal.lz");
+const u32 gItemIcon_BattleStatItem[] = INCBIN_U32("graphics/items/icons/battle_stat_item.4bpp.lz");
+const u32 gItemIconPalette_XDefend[] = INCBIN_U32("graphics/items/icon_palettes/x_defend.gbapal.lz");
+const u32 gItemIconPalette_XSpeed[] = INCBIN_U32("graphics/items/icon_palettes/x_speed.gbapal.lz");
+const u32 gItemIconPalette_XAccuracy[] = INCBIN_U32("graphics/items/icon_palettes/x_accuracy.gbapal.lz");
+const u32 gItemIconPalette_XSpecial[] = INCBIN_U32("graphics/items/icon_palettes/x_special.gbapal.lz");
-const u8 gItemIcon_PokeDoll[] = INCBIN_U8("graphics/items/icons/poke_doll.4bpp.lz");
-const u8 gItemIconPalette_PokeDoll[] = INCBIN_U8("graphics/items/icon_palettes/poke_doll.gbapal.lz");
+const u32 gItemIcon_PokeDoll[] = INCBIN_U32("graphics/items/icons/poke_doll.4bpp.lz");
+const u32 gItemIconPalette_PokeDoll[] = INCBIN_U32("graphics/items/icon_palettes/poke_doll.gbapal.lz");
-const u8 gItemIcon_FluffyTail[] = INCBIN_U8("graphics/items/icons/fluffy_tail.4bpp.lz");
-const u8 gItemIconPalette_FluffyTail[] = INCBIN_U8("graphics/items/icon_palettes/fluffy_tail.gbapal.lz");
+const u32 gItemIcon_FluffyTail[] = INCBIN_U32("graphics/items/icons/fluffy_tail.4bpp.lz");
+const u32 gItemIconPalette_FluffyTail[] = INCBIN_U32("graphics/items/icon_palettes/fluffy_tail.gbapal.lz");
// Field items
-const u8 gItemIcon_Repel[] = INCBIN_U8("graphics/items/icons/repel.4bpp.lz");
-const u8 gItemIconPalette_SuperRepel[] = INCBIN_U8("graphics/items/icon_palettes/super_repel.gbapal.lz");
-const u8 gItemIconPalette_MaxRepel[] = INCBIN_U8("graphics/items/icon_palettes/max_repel.gbapal.lz");
+const u32 gItemIcon_Repel[] = INCBIN_U32("graphics/items/icons/repel.4bpp.lz");
+const u32 gItemIconPalette_SuperRepel[] = INCBIN_U32("graphics/items/icon_palettes/super_repel.gbapal.lz");
+const u32 gItemIconPalette_MaxRepel[] = INCBIN_U32("graphics/items/icon_palettes/max_repel.gbapal.lz");
-const u8 gItemIcon_EscapeRope[] = INCBIN_U8("graphics/items/icons/escape_rope.4bpp.lz");
+const u32 gItemIcon_EscapeRope[] = INCBIN_U32("graphics/items/icons/escape_rope.4bpp.lz");
-const u8 gItemIconPalette_EscapeRope[] = INCBIN_U8("graphics/items/icon_palettes/escape_rope.gbapal.lz");
+const u32 gItemIconPalette_EscapeRope[] = INCBIN_U32("graphics/items/icon_palettes/escape_rope.gbapal.lz");
-const u8 gItemIconPalette_Repel[] = INCBIN_U8("graphics/items/icon_palettes/repel.gbapal.lz");
+const u32 gItemIconPalette_Repel[] = INCBIN_U32("graphics/items/icon_palettes/repel.gbapal.lz");
// Evolution stones
-const u8 gItemIcon_SunStone[] = INCBIN_U8("graphics/items/icons/sun_stone.4bpp.lz");
-const u8 gItemIconPalette_SunStone[] = INCBIN_U8("graphics/items/icon_palettes/sun_stone.gbapal.lz");
+const u32 gItemIcon_SunStone[] = INCBIN_U32("graphics/items/icons/sun_stone.4bpp.lz");
+const u32 gItemIconPalette_SunStone[] = INCBIN_U32("graphics/items/icon_palettes/sun_stone.gbapal.lz");
-const u8 gItemIcon_MoonStone[] = INCBIN_U8("graphics/items/icons/moon_stone.4bpp.lz");
-const u8 gItemIconPalette_MoonStone[] = INCBIN_U8("graphics/items/icon_palettes/moon_stone.gbapal.lz");
+const u32 gItemIcon_MoonStone[] = INCBIN_U32("graphics/items/icons/moon_stone.4bpp.lz");
+const u32 gItemIconPalette_MoonStone[] = INCBIN_U32("graphics/items/icon_palettes/moon_stone.gbapal.lz");
-const u8 gItemIcon_FireStone[] = INCBIN_U8("graphics/items/icons/fire_stone.4bpp.lz");
-const u8 gItemIconPalette_FireStone[] = INCBIN_U8("graphics/items/icon_palettes/fire_stone.gbapal.lz");
+const u32 gItemIcon_FireStone[] = INCBIN_U32("graphics/items/icons/fire_stone.4bpp.lz");
+const u32 gItemIconPalette_FireStone[] = INCBIN_U32("graphics/items/icon_palettes/fire_stone.gbapal.lz");
-const u8 gItemIcon_ThunderStone[] = INCBIN_U8("graphics/items/icons/thunder_stone.4bpp.lz");
-const u8 gItemIconPalette_ThunderStone[] = INCBIN_U8("graphics/items/icon_palettes/thunder_stone.gbapal.lz");
+const u32 gItemIcon_ThunderStone[] = INCBIN_U32("graphics/items/icons/thunder_stone.4bpp.lz");
+const u32 gItemIconPalette_ThunderStone[] = INCBIN_U32("graphics/items/icon_palettes/thunder_stone.gbapal.lz");
-const u8 gItemIcon_WaterStone[] = INCBIN_U8("graphics/items/icons/water_stone.4bpp.lz");
-const u8 gItemIconPalette_WaterStone[] = INCBIN_U8("graphics/items/icon_palettes/water_stone.gbapal.lz");
+const u32 gItemIcon_WaterStone[] = INCBIN_U32("graphics/items/icons/water_stone.4bpp.lz");
+const u32 gItemIconPalette_WaterStone[] = INCBIN_U32("graphics/items/icon_palettes/water_stone.gbapal.lz");
-const u8 gItemIcon_LeafStone[] = INCBIN_U8("graphics/items/icons/leaf_stone.4bpp.lz");
-const u8 gItemIconPalette_LeafStone[] = INCBIN_U8("graphics/items/icon_palettes/leaf_stone.gbapal.lz");
+const u32 gItemIcon_LeafStone[] = INCBIN_U32("graphics/items/icons/leaf_stone.4bpp.lz");
+const u32 gItemIconPalette_LeafStone[] = INCBIN_U32("graphics/items/icon_palettes/leaf_stone.gbapal.lz");
// Valuables
-const u8 gItemIcon_TinyMushroom[] = INCBIN_U8("graphics/items/icons/tiny_mushroom.4bpp.lz");
-const u8 gItemIcon_BigMushroom[] = INCBIN_U8("graphics/items/icons/big_mushroom.4bpp.lz");
-const u8 gItemIconPalette_Mushroom[] = INCBIN_U8("graphics/items/icon_palettes/mushroom.gbapal.lz");
+const u32 gItemIcon_TinyMushroom[] = INCBIN_U32("graphics/items/icons/tiny_mushroom.4bpp.lz");
+const u32 gItemIcon_BigMushroom[] = INCBIN_U32("graphics/items/icons/big_mushroom.4bpp.lz");
+const u32 gItemIconPalette_Mushroom[] = INCBIN_U32("graphics/items/icon_palettes/mushroom.gbapal.lz");
-const u8 gItemIcon_Pearl[] = INCBIN_U8("graphics/items/icons/pearl.4bpp.lz");
-const u8 gItemIconPalette_Pearl[] = INCBIN_U8("graphics/items/icon_palettes/pearl.gbapal.lz");
-const u8 gItemIcon_BigPearl[] = INCBIN_U8("graphics/items/icons/big_pearl.4bpp.lz");
+const u32 gItemIcon_Pearl[] = INCBIN_U32("graphics/items/icons/pearl.4bpp.lz");
+const u32 gItemIconPalette_Pearl[] = INCBIN_U32("graphics/items/icon_palettes/pearl.gbapal.lz");
+const u32 gItemIcon_BigPearl[] = INCBIN_U32("graphics/items/icons/big_pearl.4bpp.lz");
-const u8 gItemIcon_Stardust[] = INCBIN_U8("graphics/items/icons/stardust.4bpp.lz");
-const u8 gItemIconPalette_Star[] = INCBIN_U8("graphics/items/icon_palettes/star.gbapal.lz");
-const u8 gItemIcon_StarPiece[] = INCBIN_U8("graphics/items/icons/star_piece.4bpp.lz");
+const u32 gItemIcon_Stardust[] = INCBIN_U32("graphics/items/icons/stardust.4bpp.lz");
+const u32 gItemIconPalette_Star[] = INCBIN_U32("graphics/items/icon_palettes/star.gbapal.lz");
+const u32 gItemIcon_StarPiece[] = INCBIN_U32("graphics/items/icons/star_piece.4bpp.lz");
-const u8 gItemIcon_Nugget[] = INCBIN_U8("graphics/items/icons/nugget.4bpp.lz");
-const u8 gItemIconPalette_Nugget[] = INCBIN_U8("graphics/items/icon_palettes/nugget.gbapal.lz");
+const u32 gItemIcon_Nugget[] = INCBIN_U32("graphics/items/icons/nugget.4bpp.lz");
+const u32 gItemIconPalette_Nugget[] = INCBIN_U32("graphics/items/icon_palettes/nugget.gbapal.lz");
-const u8 gItemIcon_HeartScale[] = INCBIN_U8("graphics/items/icons/heart_scale.4bpp.lz");
-const u8 gItemIconPalette_HeartScale[] = INCBIN_U8("graphics/items/icon_palettes/heart_scale.gbapal.lz");
+const u32 gItemIcon_HeartScale[] = INCBIN_U32("graphics/items/icons/heart_scale.4bpp.lz");
+const u32 gItemIconPalette_HeartScale[] = INCBIN_U32("graphics/items/icon_palettes/heart_scale.gbapal.lz");
// Mail
-const u8 gItemIcon_OrangeMail[] = INCBIN_U8("graphics/items/icons/orange_mail.4bpp.lz");
-const u8 gItemIconPalette_OrangeMail[] = INCBIN_U8("graphics/items/icon_palettes/orange_mail.gbapal.lz");
+const u32 gItemIcon_OrangeMail[] = INCBIN_U32("graphics/items/icons/orange_mail.4bpp.lz");
+const u32 gItemIconPalette_OrangeMail[] = INCBIN_U32("graphics/items/icon_palettes/orange_mail.gbapal.lz");
-const u8 gItemIcon_HarborMail[] = INCBIN_U8("graphics/items/icons/harbor_mail.4bpp.lz");
-const u8 gItemIconPalette_HarborMail[] = INCBIN_U8("graphics/items/icon_palettes/harbor_mail.gbapal.lz");
+const u32 gItemIcon_HarborMail[] = INCBIN_U32("graphics/items/icons/harbor_mail.4bpp.lz");
+const u32 gItemIconPalette_HarborMail[] = INCBIN_U32("graphics/items/icon_palettes/harbor_mail.gbapal.lz");
-const u8 gItemIcon_GlitterMail[] = INCBIN_U8("graphics/items/icons/glitter_mail.4bpp.lz");
-const u8 gItemIconPalette_GlitterMail[] = INCBIN_U8("graphics/items/icon_palettes/glitter_mail.gbapal.lz");
+const u32 gItemIcon_GlitterMail[] = INCBIN_U32("graphics/items/icons/glitter_mail.4bpp.lz");
+const u32 gItemIconPalette_GlitterMail[] = INCBIN_U32("graphics/items/icon_palettes/glitter_mail.gbapal.lz");
-const u8 gItemIcon_MechMail[] = INCBIN_U8("graphics/items/icons/mech_mail.4bpp.lz");
-const u8 gItemIconPalette_MechMail[] = INCBIN_U8("graphics/items/icon_palettes/mech_mail.gbapal.lz");
+const u32 gItemIcon_MechMail[] = INCBIN_U32("graphics/items/icons/mech_mail.4bpp.lz");
+const u32 gItemIconPalette_MechMail[] = INCBIN_U32("graphics/items/icon_palettes/mech_mail.gbapal.lz");
-const u8 gItemIcon_WoodMail[] = INCBIN_U8("graphics/items/icons/wood_mail.4bpp.lz");
-const u8 gItemIconPalette_WoodMail[] = INCBIN_U8("graphics/items/icon_palettes/wood_mail.gbapal.lz");
+const u32 gItemIcon_WoodMail[] = INCBIN_U32("graphics/items/icons/wood_mail.4bpp.lz");
+const u32 gItemIconPalette_WoodMail[] = INCBIN_U32("graphics/items/icon_palettes/wood_mail.gbapal.lz");
-const u8 gItemIcon_WaveMail[] = INCBIN_U8("graphics/items/icons/wave_mail.4bpp.lz");
-const u8 gItemIconPalette_WaveMail[] = INCBIN_U8("graphics/items/icon_palettes/wave_mail.gbapal.lz");
+const u32 gItemIcon_WaveMail[] = INCBIN_U32("graphics/items/icons/wave_mail.4bpp.lz");
+const u32 gItemIconPalette_WaveMail[] = INCBIN_U32("graphics/items/icon_palettes/wave_mail.gbapal.lz");
-const u8 gItemIcon_BeadMail[] = INCBIN_U8("graphics/items/icons/bead_mail.4bpp.lz");
-const u8 gItemIconPalette_BeadMail[] = INCBIN_U8("graphics/items/icon_palettes/bead_mail.gbapal.lz");
+const u32 gItemIcon_BeadMail[] = INCBIN_U32("graphics/items/icons/bead_mail.4bpp.lz");
+const u32 gItemIconPalette_BeadMail[] = INCBIN_U32("graphics/items/icon_palettes/bead_mail.gbapal.lz");
-const u8 gItemIcon_ShadowMail[] = INCBIN_U8("graphics/items/icons/shadow_mail.4bpp.lz");
-const u8 gItemIconPalette_ShadowMail[] = INCBIN_U8("graphics/items/icon_palettes/shadow_mail.gbapal.lz");
+const u32 gItemIcon_ShadowMail[] = INCBIN_U32("graphics/items/icons/shadow_mail.4bpp.lz");
+const u32 gItemIconPalette_ShadowMail[] = INCBIN_U32("graphics/items/icon_palettes/shadow_mail.gbapal.lz");
-const u8 gItemIcon_TropicMail[] = INCBIN_U8("graphics/items/icons/tropic_mail.4bpp.lz");
-const u8 gItemIconPalette_TropicMail[] = INCBIN_U8("graphics/items/icon_palettes/tropic_mail.gbapal.lz");
+const u32 gItemIcon_TropicMail[] = INCBIN_U32("graphics/items/icons/tropic_mail.4bpp.lz");
+const u32 gItemIconPalette_TropicMail[] = INCBIN_U32("graphics/items/icon_palettes/tropic_mail.gbapal.lz");
-const u8 gItemIcon_DreamMail[] = INCBIN_U8("graphics/items/icons/dream_mail.4bpp.lz");
-const u8 gItemIconPalette_DreamMail[] = INCBIN_U8("graphics/items/icon_palettes/dream_mail.gbapal.lz");
+const u32 gItemIcon_DreamMail[] = INCBIN_U32("graphics/items/icons/dream_mail.4bpp.lz");
+const u32 gItemIconPalette_DreamMail[] = INCBIN_U32("graphics/items/icon_palettes/dream_mail.gbapal.lz");
-const u8 gItemIcon_FabMail[] = INCBIN_U8("graphics/items/icons/fab_mail.4bpp.lz");
-const u8 gItemIconPalette_FabMail[] = INCBIN_U8("graphics/items/icon_palettes/fab_mail.gbapal.lz");
+const u32 gItemIcon_FabMail[] = INCBIN_U32("graphics/items/icons/fab_mail.4bpp.lz");
+const u32 gItemIconPalette_FabMail[] = INCBIN_U32("graphics/items/icon_palettes/fab_mail.gbapal.lz");
-const u8 gItemIcon_RetroMail[] = INCBIN_U8("graphics/items/icons/retro_mail.4bpp.lz");
-const u8 gItemIconPalette_RetroMail[] = INCBIN_U8("graphics/items/icon_palettes/retro_mail.gbapal.lz");
+const u32 gItemIcon_RetroMail[] = INCBIN_U32("graphics/items/icons/retro_mail.4bpp.lz");
+const u32 gItemIconPalette_RetroMail[] = INCBIN_U32("graphics/items/icon_palettes/retro_mail.gbapal.lz");
// Berries
-const u8 gItemIcon_CheriBerry[] = INCBIN_U8("graphics/items/icons/cheri_berry.4bpp.lz");
-const u8 gItemIconPalette_CheriBerry[] = INCBIN_U8("graphics/items/icon_palettes/cheri_berry.gbapal.lz");
+const u32 gItemIcon_CheriBerry[] = INCBIN_U32("graphics/items/icons/cheri_berry.4bpp.lz");
+const u32 gItemIconPalette_CheriBerry[] = INCBIN_U32("graphics/items/icon_palettes/cheri_berry.gbapal.lz");
-const u8 gItemIcon_ChestoBerry[] = INCBIN_U8("graphics/items/icons/chesto_berry.4bpp.lz");
-const u8 gItemIconPalette_ChestoBerry[] = INCBIN_U8("graphics/items/icon_palettes/chesto_berry.gbapal.lz");
+const u32 gItemIcon_ChestoBerry[] = INCBIN_U32("graphics/items/icons/chesto_berry.4bpp.lz");
+const u32 gItemIconPalette_ChestoBerry[] = INCBIN_U32("graphics/items/icon_palettes/chesto_berry.gbapal.lz");
-const u8 gItemIcon_PechaBerry[] = INCBIN_U8("graphics/items/icons/pecha_berry.4bpp.lz");
-const u8 gItemIconPalette_PechaBerry[] = INCBIN_U8("graphics/items/icon_palettes/pecha_berry.gbapal.lz");
+const u32 gItemIcon_PechaBerry[] = INCBIN_U32("graphics/items/icons/pecha_berry.4bpp.lz");
+const u32 gItemIconPalette_PechaBerry[] = INCBIN_U32("graphics/items/icon_palettes/pecha_berry.gbapal.lz");
-const u8 gItemIcon_RawstBerry[] = INCBIN_U8("graphics/items/icons/rawst_berry.4bpp.lz");
-const u8 gItemIconPalette_RawstBerry[] = INCBIN_U8("graphics/items/icon_palettes/rawst_berry.gbapal.lz");
+const u32 gItemIcon_RawstBerry[] = INCBIN_U32("graphics/items/icons/rawst_berry.4bpp.lz");
+const u32 gItemIconPalette_RawstBerry[] = INCBIN_U32("graphics/items/icon_palettes/rawst_berry.gbapal.lz");
-const u8 gItemIcon_AspearBerry[] = INCBIN_U8("graphics/items/icons/aspear_berry.4bpp.lz");
-const u8 gItemIconPalette_AspearBerry[] = INCBIN_U8("graphics/items/icon_palettes/aspear_berry.gbapal.lz");
+const u32 gItemIcon_AspearBerry[] = INCBIN_U32("graphics/items/icons/aspear_berry.4bpp.lz");
+const u32 gItemIconPalette_AspearBerry[] = INCBIN_U32("graphics/items/icon_palettes/aspear_berry.gbapal.lz");
-const u8 gItemIcon_LeppaBerry[] = INCBIN_U8("graphics/items/icons/leppa_berry.4bpp.lz");
-const u8 gItemIconPalette_LeppaBerry[] = INCBIN_U8("graphics/items/icon_palettes/leppa_berry.gbapal.lz");
+const u32 gItemIcon_LeppaBerry[] = INCBIN_U32("graphics/items/icons/leppa_berry.4bpp.lz");
+const u32 gItemIconPalette_LeppaBerry[] = INCBIN_U32("graphics/items/icon_palettes/leppa_berry.gbapal.lz");
-const u8 gItemIcon_OranBerry[] = INCBIN_U8("graphics/items/icons/oran_berry.4bpp.lz");
-const u8 gItemIconPalette_OranBerry[] = INCBIN_U8("graphics/items/icon_palettes/oran_berry.gbapal.lz");
+const u32 gItemIcon_OranBerry[] = INCBIN_U32("graphics/items/icons/oran_berry.4bpp.lz");
+const u32 gItemIconPalette_OranBerry[] = INCBIN_U32("graphics/items/icon_palettes/oran_berry.gbapal.lz");
-const u8 gItemIcon_PersimBerry[] = INCBIN_U8("graphics/items/icons/persim_berry.4bpp.lz");
-const u8 gItemIconPalette_PersimBerry[] = INCBIN_U8("graphics/items/icon_palettes/persim_berry.gbapal.lz");
+const u32 gItemIcon_PersimBerry[] = INCBIN_U32("graphics/items/icons/persim_berry.4bpp.lz");
+const u32 gItemIconPalette_PersimBerry[] = INCBIN_U32("graphics/items/icon_palettes/persim_berry.gbapal.lz");
-const u8 gItemIcon_LumBerry[] = INCBIN_U8("graphics/items/icons/lum_berry.4bpp.lz");
-const u8 gItemIconPalette_LumBerry[] = INCBIN_U8("graphics/items/icon_palettes/lum_berry.gbapal.lz");
+const u32 gItemIcon_LumBerry[] = INCBIN_U32("graphics/items/icons/lum_berry.4bpp.lz");
+const u32 gItemIconPalette_LumBerry[] = INCBIN_U32("graphics/items/icon_palettes/lum_berry.gbapal.lz");
-const u8 gItemIcon_SitrusBerry[] = INCBIN_U8("graphics/items/icons/sitrus_berry.4bpp.lz");
-const u8 gItemIconPalette_SitrusBerry[] = INCBIN_U8("graphics/items/icon_palettes/sitrus_berry.gbapal.lz");
+const u32 gItemIcon_SitrusBerry[] = INCBIN_U32("graphics/items/icons/sitrus_berry.4bpp.lz");
+const u32 gItemIconPalette_SitrusBerry[] = INCBIN_U32("graphics/items/icon_palettes/sitrus_berry.gbapal.lz");
-const u8 gItemIcon_FigyBerry[] = INCBIN_U8("graphics/items/icons/figy_berry.4bpp.lz");
-const u8 gItemIconPalette_FigyBerry[] = INCBIN_U8("graphics/items/icon_palettes/figy_berry.gbapal.lz");
+const u32 gItemIcon_FigyBerry[] = INCBIN_U32("graphics/items/icons/figy_berry.4bpp.lz");
+const u32 gItemIconPalette_FigyBerry[] = INCBIN_U32("graphics/items/icon_palettes/figy_berry.gbapal.lz");
-const u8 gItemIcon_WikiBerry[] = INCBIN_U8("graphics/items/icons/wiki_berry.4bpp.lz");
-const u8 gItemIconPalette_WikiBerry[] = INCBIN_U8("graphics/items/icon_palettes/wiki_berry.gbapal.lz");
+const u32 gItemIcon_WikiBerry[] = INCBIN_U32("graphics/items/icons/wiki_berry.4bpp.lz");
+const u32 gItemIconPalette_WikiBerry[] = INCBIN_U32("graphics/items/icon_palettes/wiki_berry.gbapal.lz");
-const u8 gItemIcon_MagoBerry[] = INCBIN_U8("graphics/items/icons/mago_berry.4bpp.lz");
-const u8 gItemIconPalette_MagoBerry[] = INCBIN_U8("graphics/items/icon_palettes/mago_berry.gbapal.lz");
+const u32 gItemIcon_MagoBerry[] = INCBIN_U32("graphics/items/icons/mago_berry.4bpp.lz");
+const u32 gItemIconPalette_MagoBerry[] = INCBIN_U32("graphics/items/icon_palettes/mago_berry.gbapal.lz");
-const u8 gItemIcon_AguavBerry[] = INCBIN_U8("graphics/items/icons/aguav_berry.4bpp.lz");
-const u8 gItemIconPalette_AguavBerry[] = INCBIN_U8("graphics/items/icon_palettes/aguav_berry.gbapal.lz");
+const u32 gItemIcon_AguavBerry[] = INCBIN_U32("graphics/items/icons/aguav_berry.4bpp.lz");
+const u32 gItemIconPalette_AguavBerry[] = INCBIN_U32("graphics/items/icon_palettes/aguav_berry.gbapal.lz");
-const u8 gItemIcon_IapapaBerry[] = INCBIN_U8("graphics/items/icons/iapapa_berry.4bpp.lz");
-const u8 gItemIconPalette_IapapaBerry[] = INCBIN_U8("graphics/items/icon_palettes/iapapa_berry.gbapal.lz");
+const u32 gItemIcon_IapapaBerry[] = INCBIN_U32("graphics/items/icons/iapapa_berry.4bpp.lz");
+const u32 gItemIconPalette_IapapaBerry[] = INCBIN_U32("graphics/items/icon_palettes/iapapa_berry.gbapal.lz");
-const u8 gItemIcon_RazzBerry[] = INCBIN_U8("graphics/items/icons/razz_berry.4bpp.lz");
-const u8 gItemIconPalette_RazzBerry[] = INCBIN_U8("graphics/items/icon_palettes/razz_berry.gbapal.lz");
+const u32 gItemIcon_RazzBerry[] = INCBIN_U32("graphics/items/icons/razz_berry.4bpp.lz");
+const u32 gItemIconPalette_RazzBerry[] = INCBIN_U32("graphics/items/icon_palettes/razz_berry.gbapal.lz");
-const u8 gItemIcon_BlukBerry[] = INCBIN_U8("graphics/items/icons/bluk_berry.4bpp.lz");
-const u8 gItemIconPalette_BlukBerry[] = INCBIN_U8("graphics/items/icon_palettes/bluk_berry.gbapal.lz");
+const u32 gItemIcon_BlukBerry[] = INCBIN_U32("graphics/items/icons/bluk_berry.4bpp.lz");
+const u32 gItemIconPalette_BlukBerry[] = INCBIN_U32("graphics/items/icon_palettes/bluk_berry.gbapal.lz");
-const u8 gItemIcon_NanabBerry[] = INCBIN_U8("graphics/items/icons/nanab_berry.4bpp.lz");
-const u8 gItemIconPalette_NanabBerry[] = INCBIN_U8("graphics/items/icon_palettes/nanab_berry.gbapal.lz");
+const u32 gItemIcon_NanabBerry[] = INCBIN_U32("graphics/items/icons/nanab_berry.4bpp.lz");
+const u32 gItemIconPalette_NanabBerry[] = INCBIN_U32("graphics/items/icon_palettes/nanab_berry.gbapal.lz");
-const u8 gItemIcon_WepearBerry[] = INCBIN_U8("graphics/items/icons/wepear_berry.4bpp.lz");
-const u8 gItemIconPalette_WepearBerry[] = INCBIN_U8("graphics/items/icon_palettes/wepear_berry.gbapal.lz");
+const u32 gItemIcon_WepearBerry[] = INCBIN_U32("graphics/items/icons/wepear_berry.4bpp.lz");
+const u32 gItemIconPalette_WepearBerry[] = INCBIN_U32("graphics/items/icon_palettes/wepear_berry.gbapal.lz");
-const u8 gItemIcon_PinapBerry[] = INCBIN_U8("graphics/items/icons/pinap_berry.4bpp.lz");
-const u8 gItemIconPalette_PinapBerry[] = INCBIN_U8("graphics/items/icon_palettes/pinap_berry.gbapal.lz");
+const u32 gItemIcon_PinapBerry[] = INCBIN_U32("graphics/items/icons/pinap_berry.4bpp.lz");
+const u32 gItemIconPalette_PinapBerry[] = INCBIN_U32("graphics/items/icon_palettes/pinap_berry.gbapal.lz");
-const u8 gItemIcon_PomegBerry[] = INCBIN_U8("graphics/items/icons/pomeg_berry.4bpp.lz");
-const u8 gItemIconPalette_PomegBerry[] = INCBIN_U8("graphics/items/icon_palettes/pomeg_berry.gbapal.lz");
+const u32 gItemIcon_PomegBerry[] = INCBIN_U32("graphics/items/icons/pomeg_berry.4bpp.lz");
+const u32 gItemIconPalette_PomegBerry[] = INCBIN_U32("graphics/items/icon_palettes/pomeg_berry.gbapal.lz");
-const u8 gItemIcon_KelpsyBerry[] = INCBIN_U8("graphics/items/icons/kelpsy_berry.4bpp.lz");
-const u8 gItemIconPalette_KelpsyBerry[] = INCBIN_U8("graphics/items/icon_palettes/kelpsy_berry.gbapal.lz");
+const u32 gItemIcon_KelpsyBerry[] = INCBIN_U32("graphics/items/icons/kelpsy_berry.4bpp.lz");
+const u32 gItemIconPalette_KelpsyBerry[] = INCBIN_U32("graphics/items/icon_palettes/kelpsy_berry.gbapal.lz");
-const u8 gItemIcon_QualotBerry[] = INCBIN_U8("graphics/items/icons/qualot_berry.4bpp.lz");
-const u8 gItemIconPalette_QualotBerry[] = INCBIN_U8("graphics/items/icon_palettes/qualot_berry.gbapal.lz");
+const u32 gItemIcon_QualotBerry[] = INCBIN_U32("graphics/items/icons/qualot_berry.4bpp.lz");
+const u32 gItemIconPalette_QualotBerry[] = INCBIN_U32("graphics/items/icon_palettes/qualot_berry.gbapal.lz");
-const u8 gItemIcon_HondewBerry[] = INCBIN_U8("graphics/items/icons/hondew_berry.4bpp.lz");
-const u8 gItemIconPalette_HondewBerry[] = INCBIN_U8("graphics/items/icon_palettes/hondew_berry.gbapal.lz");
+const u32 gItemIcon_HondewBerry[] = INCBIN_U32("graphics/items/icons/hondew_berry.4bpp.lz");
+const u32 gItemIconPalette_HondewBerry[] = INCBIN_U32("graphics/items/icon_palettes/hondew_berry.gbapal.lz");
-const u8 gItemIcon_GrepaBerry[] = INCBIN_U8("graphics/items/icons/grepa_berry.4bpp.lz");
-const u8 gItemIconPalette_GrepaBerry[] = INCBIN_U8("graphics/items/icon_palettes/grepa_berry.gbapal.lz");
+const u32 gItemIcon_GrepaBerry[] = INCBIN_U32("graphics/items/icons/grepa_berry.4bpp.lz");
+const u32 gItemIconPalette_GrepaBerry[] = INCBIN_U32("graphics/items/icon_palettes/grepa_berry.gbapal.lz");
-const u8 gItemIcon_TamatoBerry[] = INCBIN_U8("graphics/items/icons/tamato_berry.4bpp.lz");
-const u8 gItemIconPalette_TamatoBerry[] = INCBIN_U8("graphics/items/icon_palettes/tamato_berry.gbapal.lz");
+const u32 gItemIcon_TamatoBerry[] = INCBIN_U32("graphics/items/icons/tamato_berry.4bpp.lz");
+const u32 gItemIconPalette_TamatoBerry[] = INCBIN_U32("graphics/items/icon_palettes/tamato_berry.gbapal.lz");
-const u8 gItemIcon_CornnBerry[] = INCBIN_U8("graphics/items/icons/cornn_berry.4bpp.lz");
-const u8 gItemIconPalette_CornnBerry[] = INCBIN_U8("graphics/items/icon_palettes/cornn_berry.gbapal.lz");
+const u32 gItemIcon_CornnBerry[] = INCBIN_U32("graphics/items/icons/cornn_berry.4bpp.lz");
+const u32 gItemIconPalette_CornnBerry[] = INCBIN_U32("graphics/items/icon_palettes/cornn_berry.gbapal.lz");
-const u8 gItemIcon_MagostBerry[] = INCBIN_U8("graphics/items/icons/magost_berry.4bpp.lz");
-const u8 gItemIconPalette_MagostBerry[] = INCBIN_U8("graphics/items/icon_palettes/magost_berry.gbapal.lz");
+const u32 gItemIcon_MagostBerry[] = INCBIN_U32("graphics/items/icons/magost_berry.4bpp.lz");
+const u32 gItemIconPalette_MagostBerry[] = INCBIN_U32("graphics/items/icon_palettes/magost_berry.gbapal.lz");
-const u8 gItemIcon_RabutaBerry[] = INCBIN_U8("graphics/items/icons/rabuta_berry.4bpp.lz");
-const u8 gItemIconPalette_RabutaBerry[] = INCBIN_U8("graphics/items/icon_palettes/rabuta_berry.gbapal.lz");
+const u32 gItemIcon_RabutaBerry[] = INCBIN_U32("graphics/items/icons/rabuta_berry.4bpp.lz");
+const u32 gItemIconPalette_RabutaBerry[] = INCBIN_U32("graphics/items/icon_palettes/rabuta_berry.gbapal.lz");
-const u8 gItemIcon_NomelBerry[] = INCBIN_U8("graphics/items/icons/nomel_berry.4bpp.lz");
-const u8 gItemIconPalette_NomelBerry[] = INCBIN_U8("graphics/items/icon_palettes/nomel_berry.gbapal.lz");
+const u32 gItemIcon_NomelBerry[] = INCBIN_U32("graphics/items/icons/nomel_berry.4bpp.lz");
+const u32 gItemIconPalette_NomelBerry[] = INCBIN_U32("graphics/items/icon_palettes/nomel_berry.gbapal.lz");
-const u8 gItemIcon_SpelonBerry[] = INCBIN_U8("graphics/items/icons/spelon_berry.4bpp.lz");
-const u8 gItemIconPalette_SpelonBerry[] = INCBIN_U8("graphics/items/icon_palettes/spelon_berry.gbapal.lz");
+const u32 gItemIcon_SpelonBerry[] = INCBIN_U32("graphics/items/icons/spelon_berry.4bpp.lz");
+const u32 gItemIconPalette_SpelonBerry[] = INCBIN_U32("graphics/items/icon_palettes/spelon_berry.gbapal.lz");
-const u8 gItemIcon_PamtreBerry[] = INCBIN_U8("graphics/items/icons/pamtre_berry.4bpp.lz");
-const u8 gItemIconPalette_PamtreBerry[] = INCBIN_U8("graphics/items/icon_palettes/pamtre_berry.gbapal.lz");
+const u32 gItemIcon_PamtreBerry[] = INCBIN_U32("graphics/items/icons/pamtre_berry.4bpp.lz");
+const u32 gItemIconPalette_PamtreBerry[] = INCBIN_U32("graphics/items/icon_palettes/pamtre_berry.gbapal.lz");
-const u8 gItemIcon_WatmelBerry[] = INCBIN_U8("graphics/items/icons/watmel_berry.4bpp.lz");
-const u8 gItemIconPalette_WatmelBerry[] = INCBIN_U8("graphics/items/icon_palettes/watmel_berry.gbapal.lz");
+const u32 gItemIcon_WatmelBerry[] = INCBIN_U32("graphics/items/icons/watmel_berry.4bpp.lz");
+const u32 gItemIconPalette_WatmelBerry[] = INCBIN_U32("graphics/items/icon_palettes/watmel_berry.gbapal.lz");
-const u8 gItemIcon_DurinBerry[] = INCBIN_U8("graphics/items/icons/durin_berry.4bpp.lz");
-const u8 gItemIconPalette_DurinBerry[] = INCBIN_U8("graphics/items/icon_palettes/durin_berry.gbapal.lz");
+const u32 gItemIcon_DurinBerry[] = INCBIN_U32("graphics/items/icons/durin_berry.4bpp.lz");
+const u32 gItemIconPalette_DurinBerry[] = INCBIN_U32("graphics/items/icon_palettes/durin_berry.gbapal.lz");
-const u8 gItemIcon_BelueBerry[] = INCBIN_U8("graphics/items/icons/belue_berry.4bpp.lz");
-const u8 gItemIconPalette_BelueBerry[] = INCBIN_U8("graphics/items/icon_palettes/belue_berry.gbapal.lz");
+const u32 gItemIcon_BelueBerry[] = INCBIN_U32("graphics/items/icons/belue_berry.4bpp.lz");
+const u32 gItemIconPalette_BelueBerry[] = INCBIN_U32("graphics/items/icon_palettes/belue_berry.gbapal.lz");
-const u8 gItemIcon_LiechiBerry[] = INCBIN_U8("graphics/items/icons/liechi_berry.4bpp.lz");
-const u8 gItemIconPalette_LiechiBerry[] = INCBIN_U8("graphics/items/icon_palettes/liechi_berry.gbapal.lz");
+const u32 gItemIcon_LiechiBerry[] = INCBIN_U32("graphics/items/icons/liechi_berry.4bpp.lz");
+const u32 gItemIconPalette_LiechiBerry[] = INCBIN_U32("graphics/items/icon_palettes/liechi_berry.gbapal.lz");
-const u8 gItemIcon_GanlonBerry[] = INCBIN_U8("graphics/items/icons/ganlon_berry.4bpp.lz");
-const u8 gItemIconPalette_GanlonBerry[] = INCBIN_U8("graphics/items/icon_palettes/ganlon_berry.gbapal.lz");
+const u32 gItemIcon_GanlonBerry[] = INCBIN_U32("graphics/items/icons/ganlon_berry.4bpp.lz");
+const u32 gItemIconPalette_GanlonBerry[] = INCBIN_U32("graphics/items/icon_palettes/ganlon_berry.gbapal.lz");
-const u8 gItemIcon_SalacBerry[] = INCBIN_U8("graphics/items/icons/salac_berry.4bpp.lz");
-const u8 gItemIconPalette_SalacBerry[] = INCBIN_U8("graphics/items/icon_palettes/salac_berry.gbapal.lz");
+const u32 gItemIcon_SalacBerry[] = INCBIN_U32("graphics/items/icons/salac_berry.4bpp.lz");
+const u32 gItemIconPalette_SalacBerry[] = INCBIN_U32("graphics/items/icon_palettes/salac_berry.gbapal.lz");
-const u8 gItemIcon_PetayaBerry[] = INCBIN_U8("graphics/items/icons/petaya_berry.4bpp.lz");
-const u8 gItemIconPalette_PetayaBerry[] = INCBIN_U8("graphics/items/icon_palettes/petaya_berry.gbapal.lz");
+const u32 gItemIcon_PetayaBerry[] = INCBIN_U32("graphics/items/icons/petaya_berry.4bpp.lz");
+const u32 gItemIconPalette_PetayaBerry[] = INCBIN_U32("graphics/items/icon_palettes/petaya_berry.gbapal.lz");
-const u8 gItemIcon_ApicotBerry[] = INCBIN_U8("graphics/items/icons/apicot_berry.4bpp.lz");
-const u8 gItemIconPalette_ApicotBerry[] = INCBIN_U8("graphics/items/icon_palettes/apicot_berry.gbapal.lz");
+const u32 gItemIcon_ApicotBerry[] = INCBIN_U32("graphics/items/icons/apicot_berry.4bpp.lz");
+const u32 gItemIconPalette_ApicotBerry[] = INCBIN_U32("graphics/items/icon_palettes/apicot_berry.gbapal.lz");
-const u8 gItemIcon_LansatBerry[] = INCBIN_U8("graphics/items/icons/lansat_berry.4bpp.lz");
-const u8 gItemIconPalette_LansatBerry[] = INCBIN_U8("graphics/items/icon_palettes/lansat_berry.gbapal.lz");
+const u32 gItemIcon_LansatBerry[] = INCBIN_U32("graphics/items/icons/lansat_berry.4bpp.lz");
+const u32 gItemIconPalette_LansatBerry[] = INCBIN_U32("graphics/items/icon_palettes/lansat_berry.gbapal.lz");
-const u8 gItemIcon_StarfBerry[] = INCBIN_U8("graphics/items/icons/starf_berry.4bpp.lz");
-const u8 gItemIconPalette_StarfBerry[] = INCBIN_U8("graphics/items/icon_palettes/starf_berry.gbapal.lz");
+const u32 gItemIcon_StarfBerry[] = INCBIN_U32("graphics/items/icons/starf_berry.4bpp.lz");
+const u32 gItemIconPalette_StarfBerry[] = INCBIN_U32("graphics/items/icon_palettes/starf_berry.gbapal.lz");
-const u8 gItemIcon_EnigmaBerry[] = INCBIN_U8("graphics/items/icons/enigma_berry.4bpp.lz");
-const u8 gItemIconPalette_EnigmaBerry[] = INCBIN_U8("graphics/items/icon_palettes/enigma_berry.gbapal.lz");
+const u32 gItemIcon_EnigmaBerry[] = INCBIN_U32("graphics/items/icons/enigma_berry.4bpp.lz");
+const u32 gItemIconPalette_EnigmaBerry[] = INCBIN_U32("graphics/items/icon_palettes/enigma_berry.gbapal.lz");
// Hold items
-const u8 gItemIcon_BrightPowder[] = INCBIN_U8("graphics/items/icons/bright_powder.4bpp.lz");
-const u8 gItemIconPalette_BrightPowder[] = INCBIN_U8("graphics/items/icon_palettes/bright_powder.gbapal.lz");
+const u32 gItemIcon_BrightPowder[] = INCBIN_U32("graphics/items/icons/bright_powder.4bpp.lz");
+const u32 gItemIconPalette_BrightPowder[] = INCBIN_U32("graphics/items/icon_palettes/bright_powder.gbapal.lz");
-const u8 gItemIcon_InBattleHerb[] = INCBIN_U8("graphics/items/icons/in_battle_herb.4bpp.lz");
-const u8 gItemIconPalette_WhiteHerb[] = INCBIN_U8("graphics/items/icon_palettes/white_herb.gbapal.lz");
+const u32 gItemIcon_InBattleHerb[] = INCBIN_U32("graphics/items/icons/in_battle_herb.4bpp.lz");
+const u32 gItemIconPalette_WhiteHerb[] = INCBIN_U32("graphics/items/icon_palettes/white_herb.gbapal.lz");
-const u8 gItemIcon_MachoBrace[] = INCBIN_U8("graphics/items/icons/macho_brace.4bpp.lz");
-const u8 gItemIconPalette_MachoBrace[] = INCBIN_U8("graphics/items/icon_palettes/macho_brace.gbapal.lz");
+const u32 gItemIcon_MachoBrace[] = INCBIN_U32("graphics/items/icons/macho_brace.4bpp.lz");
+const u32 gItemIconPalette_MachoBrace[] = INCBIN_U32("graphics/items/icon_palettes/macho_brace.gbapal.lz");
-const u8 gItemIcon_ExpShare[] = INCBIN_U8("graphics/items/icons/exp_share.4bpp.lz");
-const u8 gItemIconPalette_ExpShare[] = INCBIN_U8("graphics/items/icon_palettes/exp_share.gbapal.lz");
+const u32 gItemIcon_ExpShare[] = INCBIN_U32("graphics/items/icons/exp_share.4bpp.lz");
+const u32 gItemIconPalette_ExpShare[] = INCBIN_U32("graphics/items/icon_palettes/exp_share.gbapal.lz");
-const u8 gItemIcon_QuickClaw[] = INCBIN_U8("graphics/items/icons/quick_claw.4bpp.lz");
-const u8 gItemIconPalette_QuickClaw[] = INCBIN_U8("graphics/items/icon_palettes/quick_claw.gbapal.lz");
+const u32 gItemIcon_QuickClaw[] = INCBIN_U32("graphics/items/icons/quick_claw.4bpp.lz");
+const u32 gItemIconPalette_QuickClaw[] = INCBIN_U32("graphics/items/icon_palettes/quick_claw.gbapal.lz");
-const u8 gItemIcon_SootheBell[] = INCBIN_U8("graphics/items/icons/soothe_bell.4bpp.lz");
-const u8 gItemIconPalette_SootheBell[] = INCBIN_U8("graphics/items/icon_palettes/soothe_bell.gbapal.lz");
+const u32 gItemIcon_SootheBell[] = INCBIN_U32("graphics/items/icons/soothe_bell.4bpp.lz");
+const u32 gItemIconPalette_SootheBell[] = INCBIN_U32("graphics/items/icon_palettes/soothe_bell.gbapal.lz");
-const u8 gItemIconPalette_MentalHerb[] = INCBIN_U8("graphics/items/icon_palettes/mental_herb.gbapal.lz");
+const u32 gItemIconPalette_MentalHerb[] = INCBIN_U32("graphics/items/icon_palettes/mental_herb.gbapal.lz");
-const u8 gItemIcon_ChoiceBand[] = INCBIN_U8("graphics/items/icons/choice_band.4bpp.lz");
-const u8 gItemIconPalette_ChoiceBand[] = INCBIN_U8("graphics/items/icon_palettes/choice_band.gbapal.lz");
+const u32 gItemIcon_ChoiceBand[] = INCBIN_U32("graphics/items/icons/choice_band.4bpp.lz");
+const u32 gItemIconPalette_ChoiceBand[] = INCBIN_U32("graphics/items/icon_palettes/choice_band.gbapal.lz");
-const u8 gItemIcon_KingsRock[] = INCBIN_U8("graphics/items/icons/kings_rock.4bpp.lz");
-const u8 gItemIconPalette_KingsRock[] = INCBIN_U8("graphics/items/icon_palettes/kings_rock.gbapal.lz");
+const u32 gItemIcon_KingsRock[] = INCBIN_U32("graphics/items/icons/kings_rock.4bpp.lz");
+const u32 gItemIconPalette_KingsRock[] = INCBIN_U32("graphics/items/icon_palettes/kings_rock.gbapal.lz");
-const u8 gItemIcon_SilverPowder[] = INCBIN_U8("graphics/items/icons/silver_powder.4bpp.lz");
-const u8 gItemIconPalette_SilverPowder[] = INCBIN_U8("graphics/items/icon_palettes/silver_powder.gbapal.lz");
+const u32 gItemIcon_SilverPowder[] = INCBIN_U32("graphics/items/icons/silver_powder.4bpp.lz");
+const u32 gItemIconPalette_SilverPowder[] = INCBIN_U32("graphics/items/icon_palettes/silver_powder.gbapal.lz");
-const u8 gItemIcon_AmuletCoin[] = INCBIN_U8("graphics/items/icons/amulet_coin.4bpp.lz");
-const u8 gItemIconPalette_AmuletCoin[] = INCBIN_U8("graphics/items/icon_palettes/amulet_coin.gbapal.lz");
+const u32 gItemIcon_AmuletCoin[] = INCBIN_U32("graphics/items/icons/amulet_coin.4bpp.lz");
+const u32 gItemIconPalette_AmuletCoin[] = INCBIN_U32("graphics/items/icon_palettes/amulet_coin.gbapal.lz");
-const u8 gItemIcon_CleanseTag[] = INCBIN_U8("graphics/items/icons/cleanse_tag.4bpp.lz");
-const u8 gItemIconPalette_CleanseTag[] = INCBIN_U8("graphics/items/icon_palettes/cleanse_tag.gbapal.lz");
+const u32 gItemIcon_CleanseTag[] = INCBIN_U32("graphics/items/icons/cleanse_tag.4bpp.lz");
+const u32 gItemIconPalette_CleanseTag[] = INCBIN_U32("graphics/items/icon_palettes/cleanse_tag.gbapal.lz");
-const u8 gItemIcon_SoulDew[] = INCBIN_U8("graphics/items/icons/soul_dew.4bpp.lz");
-const u8 gItemIconPalette_SoulDew[] = INCBIN_U8("graphics/items/icon_palettes/soul_dew.gbapal.lz");
+const u32 gItemIcon_SoulDew[] = INCBIN_U32("graphics/items/icons/soul_dew.4bpp.lz");
+const u32 gItemIconPalette_SoulDew[] = INCBIN_U32("graphics/items/icon_palettes/soul_dew.gbapal.lz");
-const u8 gItemIcon_DeepSeaTooth[] = INCBIN_U8("graphics/items/icons/deep_sea_tooth.4bpp.lz");
-const u8 gItemIconPalette_DeepSeaTooth[] = INCBIN_U8("graphics/items/icon_palettes/deep_sea_tooth.gbapal.lz");
+const u32 gItemIcon_DeepSeaTooth[] = INCBIN_U32("graphics/items/icons/deep_sea_tooth.4bpp.lz");
+const u32 gItemIconPalette_DeepSeaTooth[] = INCBIN_U32("graphics/items/icon_palettes/deep_sea_tooth.gbapal.lz");
-const u8 gItemIcon_DeepSeaScale[] = INCBIN_U8("graphics/items/icons/deep_sea_scale.4bpp.lz");
-const u8 gItemIconPalette_DeepSeaScale[] = INCBIN_U8("graphics/items/icon_palettes/deep_sea_scale.gbapal.lz");
+const u32 gItemIcon_DeepSeaScale[] = INCBIN_U32("graphics/items/icons/deep_sea_scale.4bpp.lz");
+const u32 gItemIconPalette_DeepSeaScale[] = INCBIN_U32("graphics/items/icon_palettes/deep_sea_scale.gbapal.lz");
-const u8 gItemIcon_SmokeBall[] = INCBIN_U8("graphics/items/icons/smoke_ball.4bpp.lz");
-const u8 gItemIconPalette_SmokeBall[] = INCBIN_U8("graphics/items/icon_palettes/smoke_ball.gbapal.lz");
+const u32 gItemIcon_SmokeBall[] = INCBIN_U32("graphics/items/icons/smoke_ball.4bpp.lz");
+const u32 gItemIconPalette_SmokeBall[] = INCBIN_U32("graphics/items/icon_palettes/smoke_ball.gbapal.lz");
-const u8 gItemIcon_Everstone[] = INCBIN_U8("graphics/items/icons/everstone.4bpp.lz");
-const u8 gItemIconPalette_Everstone[] = INCBIN_U8("graphics/items/icon_palettes/everstone.gbapal.lz");
+const u32 gItemIcon_Everstone[] = INCBIN_U32("graphics/items/icons/everstone.4bpp.lz");
+const u32 gItemIconPalette_Everstone[] = INCBIN_U32("graphics/items/icon_palettes/everstone.gbapal.lz");
-const u8 gItemIcon_FocusBand[] = INCBIN_U8("graphics/items/icons/focus_band.4bpp.lz");
-const u8 gItemIconPalette_FocusBand[] = INCBIN_U8("graphics/items/icon_palettes/focus_band.gbapal.lz");
+const u32 gItemIcon_FocusBand[] = INCBIN_U32("graphics/items/icons/focus_band.4bpp.lz");
+const u32 gItemIconPalette_FocusBand[] = INCBIN_U32("graphics/items/icon_palettes/focus_band.gbapal.lz");
-const u8 gItemIcon_LuckyEgg[] = INCBIN_U8("graphics/items/icons/lucky_egg.4bpp.lz");
-const u8 gItemIconPalette_LuckyEgg[] = INCBIN_U8("graphics/items/icon_palettes/lucky_egg.gbapal.lz");
+const u32 gItemIcon_LuckyEgg[] = INCBIN_U32("graphics/items/icons/lucky_egg.4bpp.lz");
+const u32 gItemIconPalette_LuckyEgg[] = INCBIN_U32("graphics/items/icon_palettes/lucky_egg.gbapal.lz");
-const u8 gItemIcon_ScopeLens[] = INCBIN_U8("graphics/items/icons/scope_lens.4bpp.lz");
-const u8 gItemIconPalette_ScopeLens[] = INCBIN_U8("graphics/items/icon_palettes/scope_lens.gbapal.lz");
+const u32 gItemIcon_ScopeLens[] = INCBIN_U32("graphics/items/icons/scope_lens.4bpp.lz");
+const u32 gItemIconPalette_ScopeLens[] = INCBIN_U32("graphics/items/icon_palettes/scope_lens.gbapal.lz");
-const u8 gItemIcon_MetalCoat[] = INCBIN_U8("graphics/items/icons/metal_coat.4bpp.lz");
-const u8 gItemIconPalette_MetalCoat[] = INCBIN_U8("graphics/items/icon_palettes/metal_coat.gbapal.lz");
+const u32 gItemIcon_MetalCoat[] = INCBIN_U32("graphics/items/icons/metal_coat.4bpp.lz");
+const u32 gItemIconPalette_MetalCoat[] = INCBIN_U32("graphics/items/icon_palettes/metal_coat.gbapal.lz");
-const u8 gItemIcon_Leftovers[] = INCBIN_U8("graphics/items/icons/leftovers.4bpp.lz");
-const u8 gItemIconPalette_Leftovers[] = INCBIN_U8("graphics/items/icon_palettes/leftovers.gbapal.lz");
+const u32 gItemIcon_Leftovers[] = INCBIN_U32("graphics/items/icons/leftovers.4bpp.lz");
+const u32 gItemIconPalette_Leftovers[] = INCBIN_U32("graphics/items/icon_palettes/leftovers.gbapal.lz");
-const u8 gItemIcon_DragonScale[] = INCBIN_U8("graphics/items/icons/dragon_scale.4bpp.lz");
-const u8 gItemIconPalette_DragonScale[] = INCBIN_U8("graphics/items/icon_palettes/dragon_scale.gbapal.lz");
+const u32 gItemIcon_DragonScale[] = INCBIN_U32("graphics/items/icons/dragon_scale.4bpp.lz");
+const u32 gItemIconPalette_DragonScale[] = INCBIN_U32("graphics/items/icon_palettes/dragon_scale.gbapal.lz");
-const u8 gItemIcon_LightBall[] = INCBIN_U8("graphics/items/icons/light_ball.4bpp.lz");
-const u8 gItemIconPalette_LightBall[] = INCBIN_U8("graphics/items/icon_palettes/light_ball.gbapal.lz");
+const u32 gItemIcon_LightBall[] = INCBIN_U32("graphics/items/icons/light_ball.4bpp.lz");
+const u32 gItemIconPalette_LightBall[] = INCBIN_U32("graphics/items/icon_palettes/light_ball.gbapal.lz");
-const u8 gItemIcon_SoftSand[] = INCBIN_U8("graphics/items/icons/soft_sand.4bpp.lz");
-const u8 gItemIconPalette_SoftSand[] = INCBIN_U8("graphics/items/icon_palettes/soft_sand.gbapal.lz");
+const u32 gItemIcon_SoftSand[] = INCBIN_U32("graphics/items/icons/soft_sand.4bpp.lz");
+const u32 gItemIconPalette_SoftSand[] = INCBIN_U32("graphics/items/icon_palettes/soft_sand.gbapal.lz");
-const u8 gItemIcon_HardStone[] = INCBIN_U8("graphics/items/icons/hard_stone.4bpp.lz");
-const u8 gItemIconPalette_HardStone[] = INCBIN_U8("graphics/items/icon_palettes/hard_stone.gbapal.lz");
+const u32 gItemIcon_HardStone[] = INCBIN_U32("graphics/items/icons/hard_stone.4bpp.lz");
+const u32 gItemIconPalette_HardStone[] = INCBIN_U32("graphics/items/icon_palettes/hard_stone.gbapal.lz");
-const u8 gItemIcon_MiracleSeed[] = INCBIN_U8("graphics/items/icons/miracle_seed.4bpp.lz");
-const u8 gItemIconPalette_MiracleSeed[] = INCBIN_U8("graphics/items/icon_palettes/miracle_seed.gbapal.lz");
+const u32 gItemIcon_MiracleSeed[] = INCBIN_U32("graphics/items/icons/miracle_seed.4bpp.lz");
+const u32 gItemIconPalette_MiracleSeed[] = INCBIN_U32("graphics/items/icon_palettes/miracle_seed.gbapal.lz");
-const u8 gItemIcon_BlackGlasses[] = INCBIN_U8("graphics/items/icons/black_glasses.4bpp.lz");
-const u8 gItemIconPalette_BlackTypeEnhancingItem[] = INCBIN_U8("graphics/items/icon_palettes/black_type_enhancing_item.gbapal.lz");
+const u32 gItemIcon_BlackGlasses[] = INCBIN_U32("graphics/items/icons/black_glasses.4bpp.lz");
+const u32 gItemIconPalette_BlackTypeEnhancingItem[] = INCBIN_U32("graphics/items/icon_palettes/black_type_enhancing_item.gbapal.lz");
-const u8 gItemIcon_BlackBelt[] = INCBIN_U8("graphics/items/icons/black_belt.4bpp.lz");
+const u32 gItemIcon_BlackBelt[] = INCBIN_U32("graphics/items/icons/black_belt.4bpp.lz");
-const u8 gItemIcon_Magnet[] = INCBIN_U8("graphics/items/icons/magnet.4bpp.lz");
-const u8 gItemIconPalette_Magnet[] = INCBIN_U8("graphics/items/icon_palettes/magnet.gbapal.lz");
+const u32 gItemIcon_Magnet[] = INCBIN_U32("graphics/items/icons/magnet.4bpp.lz");
+const u32 gItemIconPalette_Magnet[] = INCBIN_U32("graphics/items/icon_palettes/magnet.gbapal.lz");
-const u8 gItemIcon_MysticWater[] = INCBIN_U8("graphics/items/icons/mystic_water.4bpp.lz");
-const u8 gItemIconPalette_MysticWater[] = INCBIN_U8("graphics/items/icon_palettes/mystic_water.gbapal.lz");
+const u32 gItemIcon_MysticWater[] = INCBIN_U32("graphics/items/icons/mystic_water.4bpp.lz");
+const u32 gItemIconPalette_MysticWater[] = INCBIN_U32("graphics/items/icon_palettes/mystic_water.gbapal.lz");
-const u8 gItemIcon_SharpBeak[] = INCBIN_U8("graphics/items/icons/sharp_beak.4bpp.lz");
-const u8 gItemIconPalette_SharpBeak[] = INCBIN_U8("graphics/items/icon_palettes/sharp_beak.gbapal.lz");
+const u32 gItemIcon_SharpBeak[] = INCBIN_U32("graphics/items/icons/sharp_beak.4bpp.lz");
+const u32 gItemIconPalette_SharpBeak[] = INCBIN_U32("graphics/items/icon_palettes/sharp_beak.gbapal.lz");
-const u8 gItemIcon_PoisonBarb[] = INCBIN_U8("graphics/items/icons/poison_barb.4bpp.lz");
-const u8 gItemIconPalette_PoisonBarb[] = INCBIN_U8("graphics/items/icon_palettes/poison_barb.gbapal.lz");
+const u32 gItemIcon_PoisonBarb[] = INCBIN_U32("graphics/items/icons/poison_barb.4bpp.lz");
+const u32 gItemIconPalette_PoisonBarb[] = INCBIN_U32("graphics/items/icon_palettes/poison_barb.gbapal.lz");
-const u8 gItemIcon_NeverMeltIce[] = INCBIN_U8("graphics/items/icons/never_melt_ice.4bpp.lz");
-const u8 gItemIconPalette_NeverMeltIce[] = INCBIN_U8("graphics/items/icon_palettes/never_melt_ice.gbapal.lz");
+const u32 gItemIcon_NeverMeltIce[] = INCBIN_U32("graphics/items/icons/never_melt_ice.4bpp.lz");
+const u32 gItemIconPalette_NeverMeltIce[] = INCBIN_U32("graphics/items/icon_palettes/never_melt_ice.gbapal.lz");
-const u8 gItemIcon_SpellTag[] = INCBIN_U8("graphics/items/icons/spell_tag.4bpp.lz");
-const u8 gItemIconPalette_SpellTag[] = INCBIN_U8("graphics/items/icon_palettes/spell_tag.gbapal.lz");
+const u32 gItemIcon_SpellTag[] = INCBIN_U32("graphics/items/icons/spell_tag.4bpp.lz");
+const u32 gItemIconPalette_SpellTag[] = INCBIN_U32("graphics/items/icon_palettes/spell_tag.gbapal.lz");
-const u8 gItemIcon_TwistedSpoon[] = INCBIN_U8("graphics/items/icons/twisted_spoon.4bpp.lz");
-const u8 gItemIconPalette_TwistedSpoon[] = INCBIN_U8("graphics/items/icon_palettes/twisted_spoon.gbapal.lz");
+const u32 gItemIcon_TwistedSpoon[] = INCBIN_U32("graphics/items/icons/twisted_spoon.4bpp.lz");
+const u32 gItemIconPalette_TwistedSpoon[] = INCBIN_U32("graphics/items/icon_palettes/twisted_spoon.gbapal.lz");
-const u8 gItemIcon_Charcoal[] = INCBIN_U8("graphics/items/icons/charcoal.4bpp.lz");
-const u8 gItemIconPalette_Charcoal[] = INCBIN_U8("graphics/items/icon_palettes/charcoal.gbapal.lz");
+const u32 gItemIcon_Charcoal[] = INCBIN_U32("graphics/items/icons/charcoal.4bpp.lz");
+const u32 gItemIconPalette_Charcoal[] = INCBIN_U32("graphics/items/icon_palettes/charcoal.gbapal.lz");
-const u8 gItemIcon_DragonFang[] = INCBIN_U8("graphics/items/icons/dragon_fang.4bpp.lz");
-const u8 gItemIconPalette_DragonFang[] = INCBIN_U8("graphics/items/icon_palettes/dragon_fang.gbapal.lz");
+const u32 gItemIcon_DragonFang[] = INCBIN_U32("graphics/items/icons/dragon_fang.4bpp.lz");
+const u32 gItemIconPalette_DragonFang[] = INCBIN_U32("graphics/items/icon_palettes/dragon_fang.gbapal.lz");
-const u8 gItemIcon_SilkScarf[] = INCBIN_U8("graphics/items/icons/silk_scarf.4bpp.lz");
-const u8 gItemIconPalette_SilkScarf[] = INCBIN_U8("graphics/items/icon_palettes/silk_scarf.gbapal.lz");
+const u32 gItemIcon_SilkScarf[] = INCBIN_U32("graphics/items/icons/silk_scarf.4bpp.lz");
+const u32 gItemIconPalette_SilkScarf[] = INCBIN_U32("graphics/items/icon_palettes/silk_scarf.gbapal.lz");
-const u8 gItemIcon_UpGrade[] = INCBIN_U8("graphics/items/icons/up_grade.4bpp.lz");
-const u8 gItemIconPalette_UpGrade[] = INCBIN_U8("graphics/items/icon_palettes/up_grade.gbapal.lz");
+const u32 gItemIcon_UpGrade[] = INCBIN_U32("graphics/items/icons/up_grade.4bpp.lz");
+const u32 gItemIconPalette_UpGrade[] = INCBIN_U32("graphics/items/icon_palettes/up_grade.gbapal.lz");
-const u8 gItemIcon_ShellBell[] = INCBIN_U8("graphics/items/icons/shell_bell.4bpp.lz");
+const u32 gItemIcon_ShellBell[] = INCBIN_U32("graphics/items/icons/shell_bell.4bpp.lz");
-const u8 gItemIcon_SeaIncense[] = INCBIN_U8("graphics/items/icons/sea_incense.4bpp.lz");
-const u8 gItemIconPalette_SeaIncense[] = INCBIN_U8("graphics/items/icon_palettes/sea_incense.gbapal.lz");
+const u32 gItemIcon_SeaIncense[] = INCBIN_U32("graphics/items/icons/sea_incense.4bpp.lz");
+const u32 gItemIconPalette_SeaIncense[] = INCBIN_U32("graphics/items/icon_palettes/sea_incense.gbapal.lz");
-const u8 gItemIcon_LaxIncense[] = INCBIN_U8("graphics/items/icons/lax_incense.4bpp.lz");
-const u8 gItemIconPalette_LaxIncense[] = INCBIN_U8("graphics/items/icon_palettes/lax_incense.gbapal.lz");
+const u32 gItemIcon_LaxIncense[] = INCBIN_U32("graphics/items/icons/lax_incense.4bpp.lz");
+const u32 gItemIconPalette_LaxIncense[] = INCBIN_U32("graphics/items/icon_palettes/lax_incense.gbapal.lz");
-const u8 gItemIcon_LuckyPunch[] = INCBIN_U8("graphics/items/icons/lucky_punch.4bpp.lz");
-const u8 gItemIconPalette_LuckyPunch[] = INCBIN_U8("graphics/items/icon_palettes/lucky_punch.gbapal.lz");
+const u32 gItemIcon_LuckyPunch[] = INCBIN_U32("graphics/items/icons/lucky_punch.4bpp.lz");
+const u32 gItemIconPalette_LuckyPunch[] = INCBIN_U32("graphics/items/icon_palettes/lucky_punch.gbapal.lz");
-const u8 gItemIcon_MetalPowder[] = INCBIN_U8("graphics/items/icons/metal_powder.4bpp.lz");
-const u8 gItemIconPalette_MetalPowder[] = INCBIN_U8("graphics/items/icon_palettes/metal_powder.gbapal.lz");
+const u32 gItemIcon_MetalPowder[] = INCBIN_U32("graphics/items/icons/metal_powder.4bpp.lz");
+const u32 gItemIconPalette_MetalPowder[] = INCBIN_U32("graphics/items/icon_palettes/metal_powder.gbapal.lz");
-const u8 gItemIcon_ThickClub[] = INCBIN_U8("graphics/items/icons/thick_club.4bpp.lz");
-const u8 gItemIconPalette_ThickClub[] = INCBIN_U8("graphics/items/icon_palettes/thick_club.gbapal.lz");
+const u32 gItemIcon_ThickClub[] = INCBIN_U32("graphics/items/icons/thick_club.4bpp.lz");
+const u32 gItemIconPalette_ThickClub[] = INCBIN_U32("graphics/items/icon_palettes/thick_club.gbapal.lz");
-const u8 gItemIcon_Stick[] = INCBIN_U8("graphics/items/icons/stick.4bpp.lz");
-const u8 gItemIconPalette_Stick[] = INCBIN_U8("graphics/items/icon_palettes/stick.gbapal.lz");
+const u32 gItemIcon_Stick[] = INCBIN_U32("graphics/items/icons/stick.4bpp.lz");
+const u32 gItemIconPalette_Stick[] = INCBIN_U32("graphics/items/icon_palettes/stick.gbapal.lz");
-const u8 gItemIcon_Scarf[] = INCBIN_U8("graphics/items/icons/scarf.4bpp.lz");
-const u8 gItemIconPalette_RedScarf[] = INCBIN_U8("graphics/items/icon_palettes/red_scarf.gbapal.lz");
-const u8 gItemIconPalette_BlueScarf[] = INCBIN_U8("graphics/items/icon_palettes/blue_scarf.gbapal.lz");
-const u8 gItemIconPalette_PinkScarf[] = INCBIN_U8("graphics/items/icon_palettes/pink_scarf.gbapal.lz");
-const u8 gItemIconPalette_GreenScarf[] = INCBIN_U8("graphics/items/icon_palettes/green_scarf.gbapal.lz");
-const u8 gItemIconPalette_YellowScarf[] = INCBIN_U8("graphics/items/icon_palettes/yellow_scarf.gbapal.lz");
+const u32 gItemIcon_Scarf[] = INCBIN_U32("graphics/items/icons/scarf.4bpp.lz");
+const u32 gItemIconPalette_RedScarf[] = INCBIN_U32("graphics/items/icon_palettes/red_scarf.gbapal.lz");
+const u32 gItemIconPalette_BlueScarf[] = INCBIN_U32("graphics/items/icon_palettes/blue_scarf.gbapal.lz");
+const u32 gItemIconPalette_PinkScarf[] = INCBIN_U32("graphics/items/icon_palettes/pink_scarf.gbapal.lz");
+const u32 gItemIconPalette_GreenScarf[] = INCBIN_U32("graphics/items/icon_palettes/green_scarf.gbapal.lz");
+const u32 gItemIconPalette_YellowScarf[] = INCBIN_U32("graphics/items/icon_palettes/yellow_scarf.gbapal.lz");
// Key items
-const u8 gItemIcon_MachBike[] = INCBIN_U8("graphics/items/icons/mach_bike.4bpp.lz");
-const u8 gItemIconPalette_MachBike[] = INCBIN_U8("graphics/items/icon_palettes/mach_bike.gbapal.lz");
+const u32 gItemIcon_MachBike[] = INCBIN_U32("graphics/items/icons/mach_bike.4bpp.lz");
+const u32 gItemIconPalette_MachBike[] = INCBIN_U32("graphics/items/icon_palettes/mach_bike.gbapal.lz");
-const u8 gItemIcon_CoinCase[] = INCBIN_U8("graphics/items/icons/coin_case.4bpp.lz");
-const u8 gItemIconPalette_CoinCase[] = INCBIN_U8("graphics/items/icon_palettes/coin_case.gbapal.lz");
+const u32 gItemIcon_CoinCase[] = INCBIN_U32("graphics/items/icons/coin_case.4bpp.lz");
+const u32 gItemIconPalette_CoinCase[] = INCBIN_U32("graphics/items/icon_palettes/coin_case.gbapal.lz");
-const u8 gItemIcon_Itemfinder[] = INCBIN_U8("graphics/items/icons/itemfinder.4bpp.lz");
-const u8 gItemIconPalette_Itemfinder[] = INCBIN_U8("graphics/items/icon_palettes/itemfinder.gbapal.lz");
+const u32 gItemIcon_Itemfinder[] = INCBIN_U32("graphics/items/icons/itemfinder.4bpp.lz");
+const u32 gItemIconPalette_Itemfinder[] = INCBIN_U32("graphics/items/icon_palettes/itemfinder.gbapal.lz");
-const u8 gItemIcon_OldRod[] = INCBIN_U8("graphics/items/icons/old_rod.4bpp.lz");
-const u8 gItemIconPalette_OldRod[] = INCBIN_U8("graphics/items/icon_palettes/old_rod.gbapal.lz");
+const u32 gItemIcon_OldRod[] = INCBIN_U32("graphics/items/icons/old_rod.4bpp.lz");
+const u32 gItemIconPalette_OldRod[] = INCBIN_U32("graphics/items/icon_palettes/old_rod.gbapal.lz");
-const u8 gItemIcon_GoodRod[] = INCBIN_U8("graphics/items/icons/good_rod.4bpp.lz");
-const u8 gItemIconPalette_GoodRod[] = INCBIN_U8("graphics/items/icon_palettes/good_rod.gbapal.lz");
+const u32 gItemIcon_GoodRod[] = INCBIN_U32("graphics/items/icons/good_rod.4bpp.lz");
+const u32 gItemIconPalette_GoodRod[] = INCBIN_U32("graphics/items/icon_palettes/good_rod.gbapal.lz");
-const u8 gItemIcon_SuperRod[] = INCBIN_U8("graphics/items/icons/super_rod.4bpp.lz");
-const u8 gItemIconPalette_SuperRod[] = INCBIN_U8("graphics/items/icon_palettes/super_rod.gbapal.lz");
+const u32 gItemIcon_SuperRod[] = INCBIN_U32("graphics/items/icons/super_rod.4bpp.lz");
+const u32 gItemIconPalette_SuperRod[] = INCBIN_U32("graphics/items/icon_palettes/super_rod.gbapal.lz");
-const u8 gItemIcon_SSTicket[] = INCBIN_U8("graphics/items/icons/ss_ticket.4bpp.lz");
-const u8 gItemIconPalette_SSTicket[] = INCBIN_U8("graphics/items/icon_palettes/ss_ticket.gbapal.lz");
+const u32 gItemIcon_SSTicket[] = INCBIN_U32("graphics/items/icons/ss_ticket.4bpp.lz");
+const u32 gItemIconPalette_SSTicket[] = INCBIN_U32("graphics/items/icon_palettes/ss_ticket.gbapal.lz");
-const u8 gItemIcon_ContestPass[] = INCBIN_U8("graphics/items/icons/contest_pass.4bpp.lz");
-const u8 gItemIconPalette_ContestPass[] = INCBIN_U8("graphics/items/icon_palettes/contest_pass.gbapal.lz");
+const u32 gItemIcon_ContestPass[] = INCBIN_U32("graphics/items/icons/contest_pass.4bpp.lz");
+const u32 gItemIconPalette_ContestPass[] = INCBIN_U32("graphics/items/icon_palettes/contest_pass.gbapal.lz");
-const u8 gItemIcon_WailmerPail[] = INCBIN_U8("graphics/items/icons/wailmer_pail.4bpp.lz");
-const u8 gItemIconPalette_WailmerPail[] = INCBIN_U8("graphics/items/icon_palettes/wailmer_pail.gbapal.lz");
+const u32 gItemIcon_WailmerPail[] = INCBIN_U32("graphics/items/icons/wailmer_pail.4bpp.lz");
+const u32 gItemIconPalette_WailmerPail[] = INCBIN_U32("graphics/items/icon_palettes/wailmer_pail.gbapal.lz");
-const u8 gItemIcon_DevonGoods[] = INCBIN_U8("graphics/items/icons/devon_goods.4bpp.lz");
-const u8 gItemIconPalette_DevonGoods[] = INCBIN_U8("graphics/items/icon_palettes/devon_goods.gbapal.lz");
+const u32 gItemIcon_DevonGoods[] = INCBIN_U32("graphics/items/icons/devon_goods.4bpp.lz");
+const u32 gItemIconPalette_DevonGoods[] = INCBIN_U32("graphics/items/icon_palettes/devon_goods.gbapal.lz");
-const u8 gItemIcon_SootSack[] = INCBIN_U8("graphics/items/icons/soot_sack.4bpp.lz");
-const u8 gItemIconPalette_SootSack[] = INCBIN_U8("graphics/items/icon_palettes/soot_sack.gbapal.lz");
+const u32 gItemIcon_SootSack[] = INCBIN_U32("graphics/items/icons/soot_sack.4bpp.lz");
+const u32 gItemIconPalette_SootSack[] = INCBIN_U32("graphics/items/icon_palettes/soot_sack.gbapal.lz");
-const u8 gItemIcon_BasementKey[] = INCBIN_U8("graphics/items/icons/basement_key.4bpp.lz");
-const u8 gItemIconPalette_OldKey[] = INCBIN_U8("graphics/items/icon_palettes/old_key.gbapal.lz");
+const u32 gItemIcon_BasementKey[] = INCBIN_U32("graphics/items/icons/basement_key.4bpp.lz");
+const u32 gItemIconPalette_OldKey[] = INCBIN_U32("graphics/items/icon_palettes/old_key.gbapal.lz");
-const u8 gItemIcon_AcroBike[] = INCBIN_U8("graphics/items/icons/acro_bike.4bpp.lz");
-const u8 gItemIconPalette_AcroBike[] = INCBIN_U8("graphics/items/icon_palettes/acro_bike.gbapal.lz");
+const u32 gItemIcon_AcroBike[] = INCBIN_U32("graphics/items/icons/acro_bike.4bpp.lz");
+const u32 gItemIconPalette_AcroBike[] = INCBIN_U32("graphics/items/icon_palettes/acro_bike.gbapal.lz");
-const u8 gItemIcon_PokeblockCase[] = INCBIN_U8("graphics/items/icons/pokeblock_case.4bpp.lz");
-const u8 gItemIconPalette_PokeblockCase[] = INCBIN_U8("graphics/items/icon_palettes/pokeblock_case.gbapal.lz");
+const u32 gItemIcon_PokeblockCase[] = INCBIN_U32("graphics/items/icons/pokeblock_case.4bpp.lz");
+const u32 gItemIconPalette_PokeblockCase[] = INCBIN_U32("graphics/items/icon_palettes/pokeblock_case.gbapal.lz");
-const u8 gItemIcon_Letter[] = INCBIN_U8("graphics/items/icons/letter.4bpp.lz");
-const u8 gItemIcon_EonTicket[] = INCBIN_U8("graphics/items/icons/eon_ticket.4bpp.lz");
+const u32 gItemIcon_Letter[] = INCBIN_U32("graphics/items/icons/letter.4bpp.lz");
+const u32 gItemIcon_EonTicket[] = INCBIN_U32("graphics/items/icons/eon_ticket.4bpp.lz");
-const u8 gItemIconPalette_EonTicket[] = INCBIN_U8("graphics/items/icon_palettes/eon_ticket.gbapal.lz");
+const u32 gItemIconPalette_EonTicket[] = INCBIN_U32("graphics/items/icon_palettes/eon_ticket.gbapal.lz");
-const u8 gItemIcon_Orb[] = INCBIN_U8("graphics/items/icons/orb.4bpp.lz");
-const u8 gItemIconPalette_RedOrb[] = INCBIN_U8("graphics/items/icon_palettes/red_orb.gbapal.lz");
-const u8 gItemIconPalette_BlueOrb[] = INCBIN_U8("graphics/items/icon_palettes/blue_orb.gbapal.lz");
+const u32 gItemIcon_Orb[] = INCBIN_U32("graphics/items/icons/orb.4bpp.lz");
+const u32 gItemIconPalette_RedOrb[] = INCBIN_U32("graphics/items/icon_palettes/red_orb.gbapal.lz");
+const u32 gItemIconPalette_BlueOrb[] = INCBIN_U32("graphics/items/icon_palettes/blue_orb.gbapal.lz");
-const u8 gItemIcon_Scanner[] = INCBIN_U8("graphics/items/icons/scanner.4bpp.lz");
-const u8 gItemIconPalette_Scanner[] = INCBIN_U8("graphics/items/icon_palettes/scanner.gbapal.lz");
+const u32 gItemIcon_Scanner[] = INCBIN_U32("graphics/items/icons/scanner.4bpp.lz");
+const u32 gItemIconPalette_Scanner[] = INCBIN_U32("graphics/items/icon_palettes/scanner.gbapal.lz");
-const u8 gItemIcon_GoGoggles[] = INCBIN_U8("graphics/items/icons/go_goggles.4bpp.lz");
-const u8 gItemIconPalette_GoGoggles[] = INCBIN_U8("graphics/items/icon_palettes/go_goggles.gbapal.lz");
+const u32 gItemIcon_GoGoggles[] = INCBIN_U32("graphics/items/icons/go_goggles.4bpp.lz");
+const u32 gItemIconPalette_GoGoggles[] = INCBIN_U32("graphics/items/icon_palettes/go_goggles.gbapal.lz");
-const u8 gItemIcon_Meteorite[] = INCBIN_U8("graphics/items/icons/meteorite.4bpp.lz");
-const u8 gItemIconPalette_Meteorite[] = INCBIN_U8("graphics/items/icon_palettes/meteorite.gbapal.lz");
+const u32 gItemIcon_Meteorite[] = INCBIN_U32("graphics/items/icons/meteorite.4bpp.lz");
+const u32 gItemIconPalette_Meteorite[] = INCBIN_U32("graphics/items/icon_palettes/meteorite.gbapal.lz");
-const u8 gItemIcon_Room1Key[] = INCBIN_U8("graphics/items/icons/room1_key.4bpp.lz");
+const u32 gItemIcon_Room1Key[] = INCBIN_U32("graphics/items/icons/room1_key.4bpp.lz");
-const u8 gItemIcon_Room2Key[] = INCBIN_U8("graphics/items/icons/room2_key.4bpp.lz");
+const u32 gItemIcon_Room2Key[] = INCBIN_U32("graphics/items/icons/room2_key.4bpp.lz");
-const u8 gItemIcon_Room4Key[] = INCBIN_U8("graphics/items/icons/room4_key.4bpp.lz");
+const u32 gItemIcon_Room4Key[] = INCBIN_U32("graphics/items/icons/room4_key.4bpp.lz");
-const u8 gItemIcon_Room6Key[] = INCBIN_U8("graphics/items/icons/room6_key.4bpp.lz");
+const u32 gItemIcon_Room6Key[] = INCBIN_U32("graphics/items/icons/room6_key.4bpp.lz");
-const u8 gItemIcon_StorageKey[] = INCBIN_U8("graphics/items/icons/storage_key.4bpp.lz");
+const u32 gItemIcon_StorageKey[] = INCBIN_U32("graphics/items/icons/storage_key.4bpp.lz");
-const u8 gItemIcon_RootFossil[] = INCBIN_U8("graphics/items/icons/root_fossil.4bpp.lz");
-const u8 gItemIconPalette_HoennFossil[] = INCBIN_U8("graphics/items/icon_palettes/hoenn_fossil.gbapal.lz");
-const u8 gItemIcon_ClawFossil[] = INCBIN_U8("graphics/items/icons/claw_fossil.4bpp.lz");
+const u32 gItemIcon_RootFossil[] = INCBIN_U32("graphics/items/icons/root_fossil.4bpp.lz");
+const u32 gItemIconPalette_HoennFossil[] = INCBIN_U32("graphics/items/icon_palettes/hoenn_fossil.gbapal.lz");
+const u32 gItemIcon_ClawFossil[] = INCBIN_U32("graphics/items/icons/claw_fossil.4bpp.lz");
-const u8 gItemIcon_DevonScope[] = INCBIN_U8("graphics/items/icons/devon_scope.4bpp.lz");
-const u8 gItemIconPalette_DevonScope[] = INCBIN_U8("graphics/items/icon_palettes/devon_scope.gbapal.lz");
+const u32 gItemIcon_DevonScope[] = INCBIN_U32("graphics/items/icons/devon_scope.4bpp.lz");
+const u32 gItemIconPalette_DevonScope[] = INCBIN_U32("graphics/items/icon_palettes/devon_scope.gbapal.lz");
// TMs/HMs
-const u8 gItemIcon_TM[] = INCBIN_U8("graphics/items/icons/tm.4bpp.lz");
+const u32 gItemIcon_TM[] = INCBIN_U32("graphics/items/icons/tm.4bpp.lz");
-const u8 gItemIconPalette_FightingTMHM[] = INCBIN_U8("graphics/items/icon_palettes/fighting_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_FightingTMHM[] = INCBIN_U32("graphics/items/icon_palettes/fighting_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_DragonTMHM[] = INCBIN_U8("graphics/items/icon_palettes/dragon_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_DragonTMHM[] = INCBIN_U32("graphics/items/icon_palettes/dragon_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_WaterTMHM[] = INCBIN_U8("graphics/items/icon_palettes/water_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_WaterTMHM[] = INCBIN_U32("graphics/items/icon_palettes/water_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_PsychicTMHM[] = INCBIN_U8("graphics/items/icon_palettes/psychic_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_PsychicTMHM[] = INCBIN_U32("graphics/items/icon_palettes/psychic_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_NormalTMHM[] = INCBIN_U8("graphics/items/icon_palettes/normal_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_NormalTMHM[] = INCBIN_U32("graphics/items/icon_palettes/normal_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_PoisonTMHM[] = INCBIN_U8("graphics/items/icon_palettes/poison_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_PoisonTMHM[] = INCBIN_U32("graphics/items/icon_palettes/poison_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_IceTMHM[] = INCBIN_U8("graphics/items/icon_palettes/ice_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_IceTMHM[] = INCBIN_U32("graphics/items/icon_palettes/ice_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_GrassTMHM[] = INCBIN_U8("graphics/items/icon_palettes/grass_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_GrassTMHM[] = INCBIN_U32("graphics/items/icon_palettes/grass_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_FireTMHM[] = INCBIN_U8("graphics/items/icon_palettes/fire_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_FireTMHM[] = INCBIN_U32("graphics/items/icon_palettes/fire_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_DarkTMHM[] = INCBIN_U8("graphics/items/icon_palettes/dark_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_DarkTMHM[] = INCBIN_U32("graphics/items/icon_palettes/dark_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_SteelTMHM[] = INCBIN_U8("graphics/items/icon_palettes/steel_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_SteelTMHM[] = INCBIN_U32("graphics/items/icon_palettes/steel_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_ElectricTMHM[] = INCBIN_U8("graphics/items/icon_palettes/electric_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_ElectricTMHM[] = INCBIN_U32("graphics/items/icon_palettes/electric_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_GroundTMHM[] = INCBIN_U8("graphics/items/icon_palettes/ground_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_GroundTMHM[] = INCBIN_U32("graphics/items/icon_palettes/ground_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_GhostTMHM[] = INCBIN_U8("graphics/items/icon_palettes/ghost_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_GhostTMHM[] = INCBIN_U32("graphics/items/icon_palettes/ghost_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_RockTMHM[] = INCBIN_U8("graphics/items/icon_palettes/rock_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_RockTMHM[] = INCBIN_U32("graphics/items/icon_palettes/rock_tm_hm.gbapal.lz");
-const u8 gItemIconPalette_FlyingTMHM[] = INCBIN_U8("graphics/items/icon_palettes/flying_tm_hm.gbapal.lz");
+const u32 gItemIconPalette_FlyingTMHM[] = INCBIN_U32("graphics/items/icon_palettes/flying_tm_hm.gbapal.lz");
-const u8 gItemIcon_HM[] = INCBIN_U8("graphics/items/icons/hm.4bpp.lz");
+const u32 gItemIcon_HM[] = INCBIN_U32("graphics/items/icons/hm.4bpp.lz");
// FireRed/LeafGreen key items
-const u8 gItemIcon_OaksParcel[] = INCBIN_U8("graphics/items/icons/oaks_parcel.4bpp.lz");
-const u8 gItemIconPalette_OaksParcel[] = INCBIN_U8("graphics/items/icon_palettes/oaks_parcel.gbapal.lz");
+const u32 gItemIcon_OaksParcel[] = INCBIN_U32("graphics/items/icons/oaks_parcel.4bpp.lz");
+const u32 gItemIconPalette_OaksParcel[] = INCBIN_U32("graphics/items/icon_palettes/oaks_parcel.gbapal.lz");
-const u8 gItemIcon_PokeFlute[] = INCBIN_U8("graphics/items/icons/poke_flute.4bpp.lz");
-const u8 gItemIconPalette_PokeFlute[] = INCBIN_U8("graphics/items/icon_palettes/poke_flute.gbapal.lz");
+const u32 gItemIcon_PokeFlute[] = INCBIN_U32("graphics/items/icons/poke_flute.4bpp.lz");
+const u32 gItemIconPalette_PokeFlute[] = INCBIN_U32("graphics/items/icon_palettes/poke_flute.gbapal.lz");
-const u8 gItemIcon_SecretKey[] = INCBIN_U8("graphics/items/icons/secret_key.4bpp.lz");
-const u8 gItemIconPalette_SecretKey[] = INCBIN_U8("graphics/items/icon_palettes/secret_key.gbapal.lz");
+const u32 gItemIcon_SecretKey[] = INCBIN_U32("graphics/items/icons/secret_key.4bpp.lz");
+const u32 gItemIconPalette_SecretKey[] = INCBIN_U32("graphics/items/icon_palettes/secret_key.gbapal.lz");
-const u8 gItemIcon_BikeVoucher[] = INCBIN_U8("graphics/items/icons/bike_voucher.4bpp.lz");
-const u8 gItemIconPalette_BikeVoucher[] = INCBIN_U8("graphics/items/icon_palettes/bike_voucher.gbapal.lz");
+const u32 gItemIcon_BikeVoucher[] = INCBIN_U32("graphics/items/icons/bike_voucher.4bpp.lz");
+const u32 gItemIconPalette_BikeVoucher[] = INCBIN_U32("graphics/items/icon_palettes/bike_voucher.gbapal.lz");
-const u8 gItemIcon_GoldTeeth[] = INCBIN_U8("graphics/items/icons/gold_teeth.4bpp.lz");
-const u8 gItemIconPalette_GoldTeeth[] = INCBIN_U8("graphics/items/icon_palettes/gold_teeth.gbapal.lz");
+const u32 gItemIcon_GoldTeeth[] = INCBIN_U32("graphics/items/icons/gold_teeth.4bpp.lz");
+const u32 gItemIconPalette_GoldTeeth[] = INCBIN_U32("graphics/items/icon_palettes/gold_teeth.gbapal.lz");
-const u8 gItemIcon_OldAmber[] = INCBIN_U8("graphics/items/icons/old_amber.4bpp.lz");
-const u8 gItemIconPalette_OldAmber[] = INCBIN_U8("graphics/items/icon_palettes/old_amber.gbapal.lz");
+const u32 gItemIcon_OldAmber[] = INCBIN_U32("graphics/items/icons/old_amber.4bpp.lz");
+const u32 gItemIconPalette_OldAmber[] = INCBIN_U32("graphics/items/icon_palettes/old_amber.gbapal.lz");
-const u8 gItemIcon_CardKey[] = INCBIN_U8("graphics/items/icons/card_key.4bpp.lz");
-const u8 gItemIconPalette_CardKey[] = INCBIN_U8("graphics/items/icon_palettes/card_key.gbapal.lz");
+const u32 gItemIcon_CardKey[] = INCBIN_U32("graphics/items/icons/card_key.4bpp.lz");
+const u32 gItemIconPalette_CardKey[] = INCBIN_U32("graphics/items/icon_palettes/card_key.gbapal.lz");
-const u8 gItemIcon_LiftKey[] = INCBIN_U8("graphics/items/icons/lift_key.4bpp.lz");
-const u8 gItemIconPalette_Key[] = INCBIN_U8("graphics/items/icon_palettes/key.gbapal.lz");
+const u32 gItemIcon_LiftKey[] = INCBIN_U32("graphics/items/icons/lift_key.4bpp.lz");
+const u32 gItemIconPalette_Key[] = INCBIN_U32("graphics/items/icon_palettes/key.gbapal.lz");
-const u8 gItemIcon_HelixFossil[] = INCBIN_U8("graphics/items/icons/helix_fossil.4bpp.lz");
-const u8 gItemIconPalette_KantoFossil[] = INCBIN_U8("graphics/items/icon_palettes/kanto_fossil.gbapal.lz");
-const u8 gItemIcon_DomeFossil[] = INCBIN_U8("graphics/items/icons/dome_fossil.4bpp.lz");
+const u32 gItemIcon_HelixFossil[] = INCBIN_U32("graphics/items/icons/helix_fossil.4bpp.lz");
+const u32 gItemIconPalette_KantoFossil[] = INCBIN_U32("graphics/items/icon_palettes/kanto_fossil.gbapal.lz");
+const u32 gItemIcon_DomeFossil[] = INCBIN_U32("graphics/items/icons/dome_fossil.4bpp.lz");
-const u8 gItemIcon_SilphScope[] = INCBIN_U8("graphics/items/icons/silph_scope.4bpp.lz");
-const u8 gItemIconPalette_SilphScope[] = INCBIN_U8("graphics/items/icon_palettes/silph_scope.gbapal.lz");
+const u32 gItemIcon_SilphScope[] = INCBIN_U32("graphics/items/icons/silph_scope.4bpp.lz");
+const u32 gItemIconPalette_SilphScope[] = INCBIN_U32("graphics/items/icon_palettes/silph_scope.gbapal.lz");
-const u8 gItemIcon_Bicycle[] = INCBIN_U8("graphics/items/icons/bicycle.4bpp.lz");
-const u8 gItemIconPalette_Bicycle[] = INCBIN_U8("graphics/items/icon_palettes/bicycle.gbapal.lz");
+const u32 gItemIcon_Bicycle[] = INCBIN_U32("graphics/items/icons/bicycle.4bpp.lz");
+const u32 gItemIconPalette_Bicycle[] = INCBIN_U32("graphics/items/icon_palettes/bicycle.gbapal.lz");
-const u8 gItemIcon_TownMap[] = INCBIN_U8("graphics/items/icons/town_map.4bpp.lz");
-const u8 gItemIconPalette_TownMap[] = INCBIN_U8("graphics/items/icon_palettes/town_map.gbapal.lz");
+const u32 gItemIcon_TownMap[] = INCBIN_U32("graphics/items/icons/town_map.4bpp.lz");
+const u32 gItemIconPalette_TownMap[] = INCBIN_U32("graphics/items/icon_palettes/town_map.gbapal.lz");
-const u8 gItemIcon_VSSeeker[] = INCBIN_U8("graphics/items/icons/vs_seeker.4bpp.lz");
-const u8 gItemIconPalette_VSSeeker[] = INCBIN_U8("graphics/items/icon_palettes/vs_seeker.gbapal.lz");
+const u32 gItemIcon_VSSeeker[] = INCBIN_U32("graphics/items/icons/vs_seeker.4bpp.lz");
+const u32 gItemIconPalette_VSSeeker[] = INCBIN_U32("graphics/items/icon_palettes/vs_seeker.gbapal.lz");
-const u8 gItemIcon_FameChecker[] = INCBIN_U8("graphics/items/icons/fame_checker.4bpp.lz");
-const u8 gItemIconPalette_FameChecker[] = INCBIN_U8("graphics/items/icon_palettes/fame_checker.gbapal.lz");
+const u32 gItemIcon_FameChecker[] = INCBIN_U32("graphics/items/icons/fame_checker.4bpp.lz");
+const u32 gItemIconPalette_FameChecker[] = INCBIN_U32("graphics/items/icon_palettes/fame_checker.gbapal.lz");
-const u8 gItemIcon_TMCase[] = INCBIN_U8("graphics/items/icons/tm_case.4bpp.lz");
-const u8 gItemIconPalette_TMCase[] = INCBIN_U8("graphics/items/icon_palettes/tm_case.gbapal.lz");
+const u32 gItemIcon_TMCase[] = INCBIN_U32("graphics/items/icons/tm_case.4bpp.lz");
+const u32 gItemIconPalette_TMCase[] = INCBIN_U32("graphics/items/icon_palettes/tm_case.gbapal.lz");
-const u8 gItemIcon_BerryPouch[] = INCBIN_U8("graphics/items/icons/berry_pouch.4bpp.lz");
-const u8 gItemIconPalette_BerryPouch[] = INCBIN_U8("graphics/items/icon_palettes/berry_pouch.gbapal.lz");
+const u32 gItemIcon_BerryPouch[] = INCBIN_U32("graphics/items/icons/berry_pouch.4bpp.lz");
+const u32 gItemIconPalette_BerryPouch[] = INCBIN_U32("graphics/items/icon_palettes/berry_pouch.gbapal.lz");
-const u8 gItemIcon_TeachyTV[] = INCBIN_U8("graphics/items/icons/teachy_tv.4bpp.lz");
-const u8 gItemIconPalette_TeachyTV[] = INCBIN_U8("graphics/items/icon_palettes/teachy_tv.gbapal.lz");
+const u32 gItemIcon_TeachyTV[] = INCBIN_U32("graphics/items/icons/teachy_tv.4bpp.lz");
+const u32 gItemIconPalette_TeachyTV[] = INCBIN_U32("graphics/items/icon_palettes/teachy_tv.gbapal.lz");
-const u8 gItemIcon_TriPass[] = INCBIN_U8("graphics/items/icons/tri_pass.4bpp.lz");
-const u8 gItemIconPalette_TriPass[] = INCBIN_U8("graphics/items/icon_palettes/tri_pass.gbapal.lz");
+const u32 gItemIcon_TriPass[] = INCBIN_U32("graphics/items/icons/tri_pass.4bpp.lz");
+const u32 gItemIconPalette_TriPass[] = INCBIN_U32("graphics/items/icon_palettes/tri_pass.gbapal.lz");
-const u8 gItemIcon_RainbowPass[] = INCBIN_U8("graphics/items/icons/rainbow_pass.4bpp.lz");
-const u8 gItemIconPalette_RainbowPass[] = INCBIN_U8("graphics/items/icon_palettes/rainbow_pass.gbapal.lz");
+const u32 gItemIcon_RainbowPass[] = INCBIN_U32("graphics/items/icons/rainbow_pass.4bpp.lz");
+const u32 gItemIconPalette_RainbowPass[] = INCBIN_U32("graphics/items/icon_palettes/rainbow_pass.gbapal.lz");
-const u8 gItemIcon_Tea[] = INCBIN_U8("graphics/items/icons/tea.4bpp.lz");
-const u8 gItemIconPalette_Tea[] = INCBIN_U8("graphics/items/icon_palettes/tea.gbapal.lz");
+const u32 gItemIcon_Tea[] = INCBIN_U32("graphics/items/icons/tea.4bpp.lz");
+const u32 gItemIconPalette_Tea[] = INCBIN_U32("graphics/items/icon_palettes/tea.gbapal.lz");
-const u8 gItemIcon_MysticTicket[] = INCBIN_U8("graphics/items/icons/mystic_ticket.4bpp.lz");
-const u8 gItemIconPalette_MysticTicket[] = INCBIN_U8("graphics/items/icon_palettes/mystic_ticket.gbapal.lz");
+const u32 gItemIcon_MysticTicket[] = INCBIN_U32("graphics/items/icons/mystic_ticket.4bpp.lz");
+const u32 gItemIconPalette_MysticTicket[] = INCBIN_U32("graphics/items/icon_palettes/mystic_ticket.gbapal.lz");
-const u8 gItemIcon_AuroraTicket[] = INCBIN_U8("graphics/items/icons/aurora_ticket.4bpp.lz");
-const u8 gItemIconPalette_AuroraTicket[] = INCBIN_U8("graphics/items/icon_palettes/aurora_ticket.gbapal.lz");
+const u32 gItemIcon_AuroraTicket[] = INCBIN_U32("graphics/items/icons/aurora_ticket.4bpp.lz");
+const u32 gItemIconPalette_AuroraTicket[] = INCBIN_U32("graphics/items/icon_palettes/aurora_ticket.gbapal.lz");
-const u8 gItemIcon_PowderJar[] = INCBIN_U8("graphics/items/icons/powder_jar.4bpp.lz");
-const u8 gItemIconPalette_PowderJar[] = INCBIN_U8("graphics/items/icon_palettes/powder_jar.gbapal.lz");
+const u32 gItemIcon_PowderJar[] = INCBIN_U32("graphics/items/icons/powder_jar.4bpp.lz");
+const u32 gItemIconPalette_PowderJar[] = INCBIN_U32("graphics/items/icon_palettes/powder_jar.gbapal.lz");
-const u8 gItemIconPalette_Ruby[] = INCBIN_U8("graphics/items/icon_palettes/ruby.gbapal.lz");
-const u8 gItemIcon_Gem[] = INCBIN_U8("graphics/items/icons/gem.4bpp.lz");
-const u8 gItemIconPalette_Sapphire[] = INCBIN_U8("graphics/items/icon_palettes/sapphire.gbapal.lz");
+const u32 gItemIconPalette_Ruby[] = INCBIN_U32("graphics/items/icon_palettes/ruby.gbapal.lz");
+const u32 gItemIcon_Gem[] = INCBIN_U32("graphics/items/icons/gem.4bpp.lz");
+const u32 gItemIconPalette_Sapphire[] = INCBIN_U32("graphics/items/icon_palettes/sapphire.gbapal.lz");
// Emerald-only key items
-const u8 gItemIcon_MagmaEmblem[] = INCBIN_U8("graphics/items/icons/magma_emblem.4bpp.lz");
-const u8 gItemIconPalette_MagmaEmblem[] = INCBIN_U8("graphics/items/icon_palettes/magma_emblem.gbapal.lz");
+const u32 gItemIcon_MagmaEmblem[] = INCBIN_U32("graphics/items/icons/magma_emblem.4bpp.lz");
+const u32 gItemIconPalette_MagmaEmblem[] = INCBIN_U32("graphics/items/icon_palettes/magma_emblem.gbapal.lz");
-const u8 gItemIcon_OldSeaMap[] = INCBIN_U8("graphics/items/icons/old_sea_map.4bpp.lz");
-const u8 gItemIconPalette_OldSeaMap[] = INCBIN_U8("graphics/items/icon_palettes/old_sea_map.gbapal.lz");
+const u32 gItemIcon_OldSeaMap[] = INCBIN_U32("graphics/items/icons/old_sea_map.4bpp.lz");
+const u32 gItemIconPalette_OldSeaMap[] = INCBIN_U32("graphics/items/icon_palettes/old_sea_map.gbapal.lz");
diff --git a/src/data/graphics/mail.h b/src/data/graphics/mail.h
index 53497347a..05e65be1c 100644
--- a/src/data/graphics/mail.h
+++ b/src/data/graphics/mail.h
@@ -11,28 +11,28 @@ const u16 gMailPalette_Dream[] = INCBIN_U16("graphics/mail/dream/palette.gbapal"
const u16 gMailPalette_Fab[] = INCBIN_U16("graphics/mail/fab/palette.gbapal");
const u16 gMailPalette_Retro[] = INCBIN_U16("graphics/mail/retro/palette.gbapal");
-const u8 gMailTiles_Orange[] = INCBIN_U8("graphics/mail/orange/tiles.4bpp.lz");
-const u8 gMailTiles_Harbor[] = INCBIN_U8("graphics/mail/harbor/tiles.4bpp.lz");
-const u8 gMailTiles_Glitter[] = INCBIN_U8("graphics/mail/glitter/tiles.4bpp.lz");
-const u8 gMailTiles_Mech[] = INCBIN_U8("graphics/mail/mech/tiles.4bpp.lz");
-const u8 gMailTiles_Wood[] = INCBIN_U8("graphics/mail/wood/tiles.4bpp.lz");
-const u8 gMailTiles_Wave[] = INCBIN_U8("graphics/mail/wave/tiles.4bpp.lz");
-const u8 gMailTiles_Bead[] = INCBIN_U8("graphics/mail/bead/tiles.4bpp.lz");
-const u8 gMailTiles_Shadow[] = INCBIN_U8("graphics/mail/shadow/tiles.4bpp.lz");
-const u8 gMailTiles_Tropic[] = INCBIN_U8("graphics/mail/tropic/tiles.4bpp.lz");
-const u8 gMailTiles_Dream[] = INCBIN_U8("graphics/mail/dream/tiles.4bpp.lz");
-const u8 gMailTiles_Fab[] = INCBIN_U8("graphics/mail/fab/tiles.4bpp.lz");
-const u8 gMailTiles_Retro[] = INCBIN_U8("graphics/mail/retro/tiles.4bpp.lz");
+const u32 gMailTiles_Orange[] = INCBIN_U32("graphics/mail/orange/tiles.4bpp.lz");
+const u32 gMailTiles_Harbor[] = INCBIN_U32("graphics/mail/harbor/tiles.4bpp.lz");
+const u32 gMailTiles_Glitter[] = INCBIN_U32("graphics/mail/glitter/tiles.4bpp.lz");
+const u32 gMailTiles_Mech[] = INCBIN_U32("graphics/mail/mech/tiles.4bpp.lz");
+const u32 gMailTiles_Wood[] = INCBIN_U32("graphics/mail/wood/tiles.4bpp.lz");
+const u32 gMailTiles_Wave[] = INCBIN_U32("graphics/mail/wave/tiles.4bpp.lz");
+const u32 gMailTiles_Bead[] = INCBIN_U32("graphics/mail/bead/tiles.4bpp.lz");
+const u32 gMailTiles_Shadow[] = INCBIN_U32("graphics/mail/shadow/tiles.4bpp.lz");
+const u32 gMailTiles_Tropic[] = INCBIN_U32("graphics/mail/tropic/tiles.4bpp.lz");
+const u32 gMailTiles_Dream[] = INCBIN_U32("graphics/mail/dream/tiles.4bpp.lz");
+const u32 gMailTiles_Fab[] = INCBIN_U32("graphics/mail/fab/tiles.4bpp.lz");
+const u32 gMailTiles_Retro[] = INCBIN_U32("graphics/mail/retro/tiles.4bpp.lz");
-const u16 gMailTilemap_Orange[] = INCBIN_U16("graphics/mail/orange/map.bin.lz");
-const u16 gMailTilemap_Harbor[] = INCBIN_U16("graphics/mail/harbor/map.bin.lz");
-const u16 gMailTilemap_Glitter[] = INCBIN_U16("graphics/mail/glitter/map.bin.lz");
-const u16 gMailTilemap_Mech[] = INCBIN_U16("graphics/mail/mech/map.bin.lz");
-const u16 gMailTilemap_Wood[] = INCBIN_U16("graphics/mail/wood/map.bin.lz");
-const u16 gMailTilemap_Wave[] = INCBIN_U16("graphics/mail/wave/map.bin.lz");
-const u16 gMailTilemap_Bead[] = INCBIN_U16("graphics/mail/bead/map.bin.lz");
-const u16 gMailTilemap_Shadow[] = INCBIN_U16("graphics/mail/shadow/map.bin.lz");
-const u16 gMailTilemap_Tropic[] = INCBIN_U16("graphics/mail/tropic/map.bin.lz");
-const u16 gMailTilemap_Dream[] = INCBIN_U16("graphics/mail/dream/map.bin.lz");
-const u16 gMailTilemap_Fab[] = INCBIN_U16("graphics/mail/fab/map.bin.lz");
-const u16 gMailTilemap_Retro[] = INCBIN_U16("graphics/mail/retro/map.bin.lz");
+const u32 gMailTilemap_Orange[] = INCBIN_U32("graphics/mail/orange/map.bin.lz");
+const u32 gMailTilemap_Harbor[] = INCBIN_U32("graphics/mail/harbor/map.bin.lz");
+const u32 gMailTilemap_Glitter[] = INCBIN_U32("graphics/mail/glitter/map.bin.lz");
+const u32 gMailTilemap_Mech[] = INCBIN_U32("graphics/mail/mech/map.bin.lz");
+const u32 gMailTilemap_Wood[] = INCBIN_U32("graphics/mail/wood/map.bin.lz");
+const u32 gMailTilemap_Wave[] = INCBIN_U32("graphics/mail/wave/map.bin.lz");
+const u32 gMailTilemap_Bead[] = INCBIN_U32("graphics/mail/bead/map.bin.lz");
+const u32 gMailTilemap_Shadow[] = INCBIN_U32("graphics/mail/shadow/map.bin.lz");
+const u32 gMailTilemap_Tropic[] = INCBIN_U32("graphics/mail/tropic/map.bin.lz");
+const u32 gMailTilemap_Dream[] = INCBIN_U32("graphics/mail/dream/map.bin.lz");
+const u32 gMailTilemap_Fab[] = INCBIN_U32("graphics/mail/fab/map.bin.lz");
+const u32 gMailTilemap_Retro[] = INCBIN_U32("graphics/mail/retro/map.bin.lz");
diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h
index 2c0345f59..40ebdf9e4 100644
--- a/src/data/graphics/pokemon.h
+++ b/src/data/graphics/pokemon.h
@@ -1,2699 +1,2699 @@
-const u8 gMonStillFrontPic_Bulbasaur[] = INCBIN_U8("graphics/pokemon/front_pics/bulbasaur_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Bulbasaur[] = INCBIN_U8("graphics/pokemon/palettes/bulbasaur_palette.gbapal.lz");
-const u8 gMonBackPic_Bulbasaur[] = INCBIN_U8("graphics/pokemon/back_pics/bulbasaur_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Bulbasaur[] = INCBIN_U8("graphics/pokemon/palettes/bulbasaur_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/front_pics/bulbasaur_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/palettes/bulbasaur_palette.gbapal.lz");
+const u32 gMonBackPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/back_pics/bulbasaur_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/palettes/bulbasaur_shiny_palette.gbapal.lz");
const u8 gMonIcon_Bulbasaur[] = INCBIN_U8("graphics/pokemon/icons/bulbasaur_icon.4bpp");
const u8 gMonFootprint_Bulbasaur[] = INCBIN_U8("graphics/pokemon/footprints/bulbasaur_footprint.1bpp");
-const u8 gMonStillFrontPic_Ivysaur[] = INCBIN_U8("graphics/pokemon/front_pics/ivysaur_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ivysaur[] = INCBIN_U8("graphics/pokemon/palettes/ivysaur_palette.gbapal.lz");
-const u8 gMonBackPic_Ivysaur[] = INCBIN_U8("graphics/pokemon/back_pics/ivysaur_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ivysaur[] = INCBIN_U8("graphics/pokemon/palettes/ivysaur_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/front_pics/ivysaur_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/palettes/ivysaur_palette.gbapal.lz");
+const u32 gMonBackPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/back_pics/ivysaur_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/palettes/ivysaur_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ivysaur[] = INCBIN_U8("graphics/pokemon/icons/ivysaur_icon.4bpp");
const u8 gMonFootprint_Ivysaur[] = INCBIN_U8("graphics/pokemon/footprints/ivysaur_footprint.1bpp");
-const u8 gMonStillFrontPic_Venusaur[] = INCBIN_U8("graphics/pokemon/front_pics/venusaur_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Venusaur[] = INCBIN_U8("graphics/pokemon/palettes/venusaur_palette.gbapal.lz");
-const u8 gMonBackPic_Venusaur[] = INCBIN_U8("graphics/pokemon/back_pics/venusaur_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Venusaur[] = INCBIN_U8("graphics/pokemon/palettes/venusaur_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Venusaur[] = INCBIN_U32("graphics/pokemon/front_pics/venusaur_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/palettes/venusaur_palette.gbapal.lz");
+const u32 gMonBackPic_Venusaur[] = INCBIN_U32("graphics/pokemon/back_pics/venusaur_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/palettes/venusaur_shiny_palette.gbapal.lz");
const u8 gMonIcon_Venusaur[] = INCBIN_U8("graphics/pokemon/icons/venusaur_icon.4bpp");
const u8 gMonFootprint_Venusaur[] = INCBIN_U8("graphics/pokemon/footprints/venusaur_footprint.1bpp");
-const u8 gMonStillFrontPic_Charmander[] = INCBIN_U8("graphics/pokemon/front_pics/charmander_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Charmander[] = INCBIN_U8("graphics/pokemon/palettes/charmander_palette.gbapal.lz");
-const u8 gMonBackPic_Charmander[] = INCBIN_U8("graphics/pokemon/back_pics/charmander_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Charmander[] = INCBIN_U8("graphics/pokemon/palettes/charmander_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Charmander[] = INCBIN_U32("graphics/pokemon/front_pics/charmander_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Charmander[] = INCBIN_U32("graphics/pokemon/palettes/charmander_palette.gbapal.lz");
+const u32 gMonBackPic_Charmander[] = INCBIN_U32("graphics/pokemon/back_pics/charmander_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Charmander[] = INCBIN_U32("graphics/pokemon/palettes/charmander_shiny_palette.gbapal.lz");
const u8 gMonIcon_Charmander[] = INCBIN_U8("graphics/pokemon/icons/charmander_icon.4bpp");
const u8 gMonFootprint_Charmander[] = INCBIN_U8("graphics/pokemon/footprints/charmander_footprint.1bpp");
-const u8 gMonStillFrontPic_Charmeleon[] = INCBIN_U8("graphics/pokemon/front_pics/charmeleon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Charmeleon[] = INCBIN_U8("graphics/pokemon/palettes/charmeleon_palette.gbapal.lz");
-const u8 gMonBackPic_Charmeleon[] = INCBIN_U8("graphics/pokemon/back_pics/charmeleon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Charmeleon[] = INCBIN_U8("graphics/pokemon/palettes/charmeleon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/front_pics/charmeleon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/palettes/charmeleon_palette.gbapal.lz");
+const u32 gMonBackPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/back_pics/charmeleon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/palettes/charmeleon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Charmeleon[] = INCBIN_U8("graphics/pokemon/icons/charmeleon_icon.4bpp");
const u8 gMonFootprint_Charmeleon[] = INCBIN_U8("graphics/pokemon/footprints/charmeleon_footprint.1bpp");
-const u8 gMonStillFrontPic_Charizard[] = INCBIN_U8("graphics/pokemon/front_pics/charizard_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Charizard[] = INCBIN_U8("graphics/pokemon/palettes/charizard_palette.gbapal.lz");
-const u8 gMonBackPic_Charizard[] = INCBIN_U8("graphics/pokemon/back_pics/charizard_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Charizard[] = INCBIN_U8("graphics/pokemon/palettes/charizard_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Charizard[] = INCBIN_U32("graphics/pokemon/front_pics/charizard_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Charizard[] = INCBIN_U32("graphics/pokemon/palettes/charizard_palette.gbapal.lz");
+const u32 gMonBackPic_Charizard[] = INCBIN_U32("graphics/pokemon/back_pics/charizard_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Charizard[] = INCBIN_U32("graphics/pokemon/palettes/charizard_shiny_palette.gbapal.lz");
const u8 gMonIcon_Charizard[] = INCBIN_U8("graphics/pokemon/icons/charizard_icon.4bpp");
const u8 gMonFootprint_Charizard[] = INCBIN_U8("graphics/pokemon/footprints/charizard_footprint.1bpp");
-const u8 gMonStillFrontPic_Squirtle[] = INCBIN_U8("graphics/pokemon/front_pics/squirtle_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Squirtle[] = INCBIN_U8("graphics/pokemon/palettes/squirtle_palette.gbapal.lz");
-const u8 gMonBackPic_Squirtle[] = INCBIN_U8("graphics/pokemon/back_pics/squirtle_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Squirtle[] = INCBIN_U8("graphics/pokemon/palettes/squirtle_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Squirtle[] = INCBIN_U32("graphics/pokemon/front_pics/squirtle_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/palettes/squirtle_palette.gbapal.lz");
+const u32 gMonBackPic_Squirtle[] = INCBIN_U32("graphics/pokemon/back_pics/squirtle_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/palettes/squirtle_shiny_palette.gbapal.lz");
const u8 gMonIcon_Squirtle[] = INCBIN_U8("graphics/pokemon/icons/squirtle_icon.4bpp");
const u8 gMonFootprint_Squirtle[] = INCBIN_U8("graphics/pokemon/footprints/squirtle_footprint.1bpp");
-const u8 gMonStillFrontPic_Wartortle[] = INCBIN_U8("graphics/pokemon/front_pics/wartortle_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Wartortle[] = INCBIN_U8("graphics/pokemon/palettes/wartortle_palette.gbapal.lz");
-const u8 gMonBackPic_Wartortle[] = INCBIN_U8("graphics/pokemon/back_pics/wartortle_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Wartortle[] = INCBIN_U8("graphics/pokemon/palettes/wartortle_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Wartortle[] = INCBIN_U32("graphics/pokemon/front_pics/wartortle_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/palettes/wartortle_palette.gbapal.lz");
+const u32 gMonBackPic_Wartortle[] = INCBIN_U32("graphics/pokemon/back_pics/wartortle_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/palettes/wartortle_shiny_palette.gbapal.lz");
const u8 gMonIcon_Wartortle[] = INCBIN_U8("graphics/pokemon/icons/wartortle_icon.4bpp");
const u8 gMonFootprint_Wartortle[] = INCBIN_U8("graphics/pokemon/footprints/wartortle_footprint.1bpp");
-const u8 gMonStillFrontPic_Blastoise[] = INCBIN_U8("graphics/pokemon/front_pics/blastoise_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Blastoise[] = INCBIN_U8("graphics/pokemon/palettes/blastoise_palette.gbapal.lz");
-const u8 gMonBackPic_Blastoise[] = INCBIN_U8("graphics/pokemon/back_pics/blastoise_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Blastoise[] = INCBIN_U8("graphics/pokemon/palettes/blastoise_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Blastoise[] = INCBIN_U32("graphics/pokemon/front_pics/blastoise_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/palettes/blastoise_palette.gbapal.lz");
+const u32 gMonBackPic_Blastoise[] = INCBIN_U32("graphics/pokemon/back_pics/blastoise_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/palettes/blastoise_shiny_palette.gbapal.lz");
const u8 gMonIcon_Blastoise[] = INCBIN_U8("graphics/pokemon/icons/blastoise_icon.4bpp");
const u8 gMonFootprint_Blastoise[] = INCBIN_U8("graphics/pokemon/footprints/blastoise_footprint.1bpp");
-const u8 gMonStillFrontPic_Caterpie[] = INCBIN_U8("graphics/pokemon/front_pics/caterpie_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Caterpie[] = INCBIN_U8("graphics/pokemon/palettes/caterpie_palette.gbapal.lz");
-const u8 gMonBackPic_Caterpie[] = INCBIN_U8("graphics/pokemon/back_pics/caterpie_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Caterpie[] = INCBIN_U8("graphics/pokemon/palettes/caterpie_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Caterpie[] = INCBIN_U32("graphics/pokemon/front_pics/caterpie_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/palettes/caterpie_palette.gbapal.lz");
+const u32 gMonBackPic_Caterpie[] = INCBIN_U32("graphics/pokemon/back_pics/caterpie_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/palettes/caterpie_shiny_palette.gbapal.lz");
const u8 gMonIcon_Caterpie[] = INCBIN_U8("graphics/pokemon/icons/caterpie_icon.4bpp");
const u8 gMonFootprint_Caterpie[] = INCBIN_U8("graphics/pokemon/footprints/caterpie_footprint.1bpp");
-const u8 gMonStillFrontPic_Metapod[] = INCBIN_U8("graphics/pokemon/front_pics/metapod_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Metapod[] = INCBIN_U8("graphics/pokemon/palettes/metapod_palette.gbapal.lz");
-const u8 gMonBackPic_Metapod[] = INCBIN_U8("graphics/pokemon/back_pics/metapod_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Metapod[] = INCBIN_U8("graphics/pokemon/palettes/metapod_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Metapod[] = INCBIN_U32("graphics/pokemon/front_pics/metapod_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Metapod[] = INCBIN_U32("graphics/pokemon/palettes/metapod_palette.gbapal.lz");
+const u32 gMonBackPic_Metapod[] = INCBIN_U32("graphics/pokemon/back_pics/metapod_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Metapod[] = INCBIN_U32("graphics/pokemon/palettes/metapod_shiny_palette.gbapal.lz");
const u8 gMonIcon_Metapod[] = INCBIN_U8( "graphics/pokemon/icons/metapod_icon.4bpp");
const u8 gMonFootprint_Metapod[] = INCBIN_U8("graphics/pokemon/footprints/metapod_footprint.1bpp");
-const u8 gMonStillFrontPic_Butterfree[] = INCBIN_U8("graphics/pokemon/front_pics/butterfree_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Butterfree[] = INCBIN_U8("graphics/pokemon/palettes/butterfree_palette.gbapal.lz");
-const u8 gMonBackPic_Butterfree[] = INCBIN_U8("graphics/pokemon/back_pics/butterfree_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Butterfree[] = INCBIN_U8("graphics/pokemon/palettes/butterfree_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Butterfree[] = INCBIN_U32("graphics/pokemon/front_pics/butterfree_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/palettes/butterfree_palette.gbapal.lz");
+const u32 gMonBackPic_Butterfree[] = INCBIN_U32("graphics/pokemon/back_pics/butterfree_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/palettes/butterfree_shiny_palette.gbapal.lz");
const u8 gMonIcon_Butterfree[] = INCBIN_U8("graphics/pokemon/icons/butterfree_icon.4bpp");
const u8 gMonFootprint_Butterfree[] = INCBIN_U8("graphics/pokemon/footprints/butterfree_footprint.1bpp");
-const u8 gMonStillFrontPic_Weedle[] = INCBIN_U8("graphics/pokemon/front_pics/weedle_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Weedle[] = INCBIN_U8("graphics/pokemon/palettes/weedle_palette.gbapal.lz");
-const u8 gMonBackPic_Weedle[] = INCBIN_U8("graphics/pokemon/back_pics/weedle_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Weedle[] = INCBIN_U8("graphics/pokemon/palettes/weedle_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Weedle[] = INCBIN_U32("graphics/pokemon/front_pics/weedle_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Weedle[] = INCBIN_U32("graphics/pokemon/palettes/weedle_palette.gbapal.lz");
+const u32 gMonBackPic_Weedle[] = INCBIN_U32("graphics/pokemon/back_pics/weedle_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Weedle[] = INCBIN_U32("graphics/pokemon/palettes/weedle_shiny_palette.gbapal.lz");
const u8 gMonIcon_Weedle[] = INCBIN_U8("graphics/pokemon/icons/weedle_icon.4bpp");
const u8 gMonFootprint_Weedle[] = INCBIN_U8("graphics/pokemon/footprints/weedle_footprint.1bpp");
-const u8 gMonStillFrontPic_Kakuna[] = INCBIN_U8("graphics/pokemon/front_pics/kakuna_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Kakuna[] = INCBIN_U8("graphics/pokemon/palettes/kakuna_palette.gbapal.lz");
-const u8 gMonBackPic_Kakuna[] = INCBIN_U8("graphics/pokemon/back_pics/kakuna_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Kakuna[] = INCBIN_U8("graphics/pokemon/palettes/kakuna_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Kakuna[] = INCBIN_U32("graphics/pokemon/front_pics/kakuna_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/palettes/kakuna_palette.gbapal.lz");
+const u32 gMonBackPic_Kakuna[] = INCBIN_U32("graphics/pokemon/back_pics/kakuna_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/palettes/kakuna_shiny_palette.gbapal.lz");
const u8 gMonIcon_Kakuna[] = INCBIN_U8("graphics/pokemon/icons/kakuna_icon.4bpp");
const u8 gMonFootprint_Kakuna[] = INCBIN_U8("graphics/pokemon/footprints/kakuna_footprint.1bpp");
-const u8 gMonStillFrontPic_Beedrill[] = INCBIN_U8("graphics/pokemon/front_pics/beedrill_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Beedrill[] = INCBIN_U8("graphics/pokemon/palettes/beedrill_palette.gbapal.lz");
-const u8 gMonBackPic_Beedrill[] = INCBIN_U8("graphics/pokemon/back_pics/beedrill_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Beedrill[] = INCBIN_U8("graphics/pokemon/palettes/beedrill_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Beedrill[] = INCBIN_U32("graphics/pokemon/front_pics/beedrill_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/palettes/beedrill_palette.gbapal.lz");
+const u32 gMonBackPic_Beedrill[] = INCBIN_U32("graphics/pokemon/back_pics/beedrill_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/palettes/beedrill_shiny_palette.gbapal.lz");
const u8 gMonIcon_Beedrill[] = INCBIN_U8("graphics/pokemon/icons/beedrill_icon.4bpp");
const u8 gMonFootprint_Beedrill[] = INCBIN_U8("graphics/pokemon/footprints/beedrill_footprint.1bpp");
-const u8 gMonStillFrontPic_Pidgey[] = INCBIN_U8("graphics/pokemon/front_pics/pidgey_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Pidgey[] = INCBIN_U8("graphics/pokemon/palettes/pidgey_palette.gbapal.lz");
-const u8 gMonBackPic_Pidgey[] = INCBIN_U8("graphics/pokemon/back_pics/pidgey_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Pidgey[] = INCBIN_U8("graphics/pokemon/palettes/pidgey_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Pidgey[] = INCBIN_U32("graphics/pokemon/front_pics/pidgey_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/palettes/pidgey_palette.gbapal.lz");
+const u32 gMonBackPic_Pidgey[] = INCBIN_U32("graphics/pokemon/back_pics/pidgey_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/palettes/pidgey_shiny_palette.gbapal.lz");
const u8 gMonIcon_Pidgey[] = INCBIN_U8("graphics/pokemon/icons/pidgey_icon.4bpp");
const u8 gMonFootprint_Pidgey[] = INCBIN_U8("graphics/pokemon/footprints/pidgey_footprint.1bpp");
-const u8 gMonStillFrontPic_Pidgeotto[] = INCBIN_U8("graphics/pokemon/front_pics/pidgeotto_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Pidgeotto[] = INCBIN_U8("graphics/pokemon/palettes/pidgeotto_palette.gbapal.lz");
-const u8 gMonBackPic_Pidgeotto[] = INCBIN_U8("graphics/pokemon/back_pics/pidgeotto_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Pidgeotto[] = INCBIN_U8("graphics/pokemon/palettes/pidgeotto_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/front_pics/pidgeotto_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/palettes/pidgeotto_palette.gbapal.lz");
+const u32 gMonBackPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/back_pics/pidgeotto_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/palettes/pidgeotto_shiny_palette.gbapal.lz");
const u8 gMonIcon_Pidgeotto[] = INCBIN_U8("graphics/pokemon/icons/pidgeotto_icon.4bpp");
const u8 gMonFootprint_Pidgeotto[] = INCBIN_U8("graphics/pokemon/footprints/pidgeotto_footprint.1bpp");
-const u8 gMonStillFrontPic_Pidgeot[] = INCBIN_U8("graphics/pokemon/front_pics/pidgeot_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Pidgeot[] = INCBIN_U8("graphics/pokemon/palettes/pidgeot_palette.gbapal.lz");
-const u8 gMonBackPic_Pidgeot[] = INCBIN_U8("graphics/pokemon/back_pics/pidgeot_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Pidgeot[] = INCBIN_U8("graphics/pokemon/palettes/pidgeot_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/front_pics/pidgeot_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/palettes/pidgeot_palette.gbapal.lz");
+const u32 gMonBackPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/back_pics/pidgeot_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/palettes/pidgeot_shiny_palette.gbapal.lz");
const u8 gMonIcon_Pidgeot[] = INCBIN_U8("graphics/pokemon/icons/pidgeot_icon.4bpp");
const u8 gMonFootprint_Pidgeot[] = INCBIN_U8("graphics/pokemon/footprints/pidgeot_footprint.1bpp");
-const u8 gMonStillFrontPic_Rattata[] = INCBIN_U8("graphics/pokemon/front_pics/rattata_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Rattata[] = INCBIN_U8("graphics/pokemon/palettes/rattata_palette.gbapal.lz");
-const u8 gMonBackPic_Rattata[] = INCBIN_U8("graphics/pokemon/back_pics/rattata_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Rattata[] = INCBIN_U8("graphics/pokemon/palettes/rattata_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Rattata[] = INCBIN_U32("graphics/pokemon/front_pics/rattata_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Rattata[] = INCBIN_U32("graphics/pokemon/palettes/rattata_palette.gbapal.lz");
+const u32 gMonBackPic_Rattata[] = INCBIN_U32("graphics/pokemon/back_pics/rattata_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Rattata[] = INCBIN_U32("graphics/pokemon/palettes/rattata_shiny_palette.gbapal.lz");
const u8 gMonIcon_Rattata[] = INCBIN_U8("graphics/pokemon/icons/rattata_icon.4bpp");
const u8 gMonFootprint_Rattata[] = INCBIN_U8("graphics/pokemon/footprints/rattata_footprint.1bpp");
-const u8 gMonStillFrontPic_Raticate[] = INCBIN_U8("graphics/pokemon/front_pics/raticate_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Raticate[] = INCBIN_U8("graphics/pokemon/palettes/raticate_palette.gbapal.lz");
-const u8 gMonBackPic_Raticate[] = INCBIN_U8("graphics/pokemon/back_pics/raticate_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Raticate[] = INCBIN_U8("graphics/pokemon/palettes/raticate_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Raticate[] = INCBIN_U32("graphics/pokemon/front_pics/raticate_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Raticate[] = INCBIN_U32("graphics/pokemon/palettes/raticate_palette.gbapal.lz");
+const u32 gMonBackPic_Raticate[] = INCBIN_U32("graphics/pokemon/back_pics/raticate_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Raticate[] = INCBIN_U32("graphics/pokemon/palettes/raticate_shiny_palette.gbapal.lz");
const u8 gMonIcon_Raticate[] = INCBIN_U8("graphics/pokemon/icons/raticate_icon.4bpp");
const u8 gMonFootprint_Raticate[] = INCBIN_U8("graphics/pokemon/footprints/raticate_footprint.1bpp");
-const u8 gMonStillFrontPic_Spearow[] = INCBIN_U8("graphics/pokemon/front_pics/spearow_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Spearow[] = INCBIN_U8("graphics/pokemon/palettes/spearow_palette.gbapal.lz");
-const u8 gMonBackPic_Spearow[] = INCBIN_U8("graphics/pokemon/back_pics/spearow_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Spearow[] = INCBIN_U8("graphics/pokemon/palettes/spearow_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Spearow[] = INCBIN_U32("graphics/pokemon/front_pics/spearow_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Spearow[] = INCBIN_U32("graphics/pokemon/palettes/spearow_palette.gbapal.lz");
+const u32 gMonBackPic_Spearow[] = INCBIN_U32("graphics/pokemon/back_pics/spearow_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Spearow[] = INCBIN_U32("graphics/pokemon/palettes/spearow_shiny_palette.gbapal.lz");
const u8 gMonIcon_Spearow[] = INCBIN_U8("graphics/pokemon/icons/spearow_icon.4bpp");
const u8 gMonFootprint_Spearow[] = INCBIN_U8("graphics/pokemon/footprints/spearow_footprint.1bpp");
-const u8 gMonStillFrontPic_Fearow[] = INCBIN_U8("graphics/pokemon/front_pics/fearow_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Fearow[] = INCBIN_U8("graphics/pokemon/palettes/fearow_palette.gbapal.lz");
-const u8 gMonBackPic_Fearow[] = INCBIN_U8("graphics/pokemon/back_pics/fearow_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Fearow[] = INCBIN_U8("graphics/pokemon/palettes/fearow_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Fearow[] = INCBIN_U32("graphics/pokemon/front_pics/fearow_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Fearow[] = INCBIN_U32("graphics/pokemon/palettes/fearow_palette.gbapal.lz");
+const u32 gMonBackPic_Fearow[] = INCBIN_U32("graphics/pokemon/back_pics/fearow_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Fearow[] = INCBIN_U32("graphics/pokemon/palettes/fearow_shiny_palette.gbapal.lz");
const u8 gMonIcon_Fearow[] = INCBIN_U8("graphics/pokemon/icons/fearow_icon.4bpp");
const u8 gMonFootprint_Fearow[] = INCBIN_U8("graphics/pokemon/footprints/fearow_footprint.1bpp");
-const u8 gMonStillFrontPic_Ekans[] = INCBIN_U8("graphics/pokemon/front_pics/ekans_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ekans[] = INCBIN_U8("graphics/pokemon/palettes/ekans_palette.gbapal.lz");
-const u8 gMonBackPic_Ekans[] = INCBIN_U8("graphics/pokemon/back_pics/ekans_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ekans[] = INCBIN_U8("graphics/pokemon/palettes/ekans_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ekans[] = INCBIN_U32("graphics/pokemon/front_pics/ekans_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ekans[] = INCBIN_U32("graphics/pokemon/palettes/ekans_palette.gbapal.lz");
+const u32 gMonBackPic_Ekans[] = INCBIN_U32("graphics/pokemon/back_pics/ekans_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ekans[] = INCBIN_U32("graphics/pokemon/palettes/ekans_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ekans[] = INCBIN_U8("graphics/pokemon/icons/ekans_icon.4bpp");
const u8 gMonFootprint_Ekans[] = INCBIN_U8("graphics/pokemon/footprints/ekans_footprint.1bpp");
-const u8 gMonStillFrontPic_Arbok[] = INCBIN_U8("graphics/pokemon/front_pics/arbok_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Arbok[] = INCBIN_U8("graphics/pokemon/palettes/arbok_palette.gbapal.lz");
-const u8 gMonBackPic_Arbok[] = INCBIN_U8("graphics/pokemon/back_pics/arbok_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Arbok[] = INCBIN_U8("graphics/pokemon/palettes/arbok_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Arbok[] = INCBIN_U32("graphics/pokemon/front_pics/arbok_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Arbok[] = INCBIN_U32("graphics/pokemon/palettes/arbok_palette.gbapal.lz");
+const u32 gMonBackPic_Arbok[] = INCBIN_U32("graphics/pokemon/back_pics/arbok_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Arbok[] = INCBIN_U32("graphics/pokemon/palettes/arbok_shiny_palette.gbapal.lz");
const u8 gMonIcon_Arbok[] = INCBIN_U8("graphics/pokemon/icons/arbok_icon.4bpp");
const u8 gMonFootprint_Arbok[] = INCBIN_U8("graphics/pokemon/footprints/arbok_footprint.1bpp");
-const u8 gMonStillFrontPic_Pikachu[] = INCBIN_U8("graphics/pokemon/front_pics/pikachu_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Pikachu[] = INCBIN_U8("graphics/pokemon/palettes/pikachu_palette.gbapal.lz");
-const u8 gMonBackPic_Pikachu[] = INCBIN_U8("graphics/pokemon/back_pics/pikachu_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Pikachu[] = INCBIN_U8("graphics/pokemon/palettes/pikachu_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Pikachu[] = INCBIN_U32("graphics/pokemon/front_pics/pikachu_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/palettes/pikachu_palette.gbapal.lz");
+const u32 gMonBackPic_Pikachu[] = INCBIN_U32("graphics/pokemon/back_pics/pikachu_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/palettes/pikachu_shiny_palette.gbapal.lz");
const u8 gMonIcon_Pikachu[] = INCBIN_U8("graphics/pokemon/icons/pikachu_icon.4bpp");
const u8 gMonFootprint_Pikachu[] = INCBIN_U8("graphics/pokemon/footprints/pikachu_footprint.1bpp");
-const u8 gMonStillFrontPic_Raichu[] = INCBIN_U8("graphics/pokemon/front_pics/raichu_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Raichu[] = INCBIN_U8("graphics/pokemon/palettes/raichu_palette.gbapal.lz");
-const u8 gMonBackPic_Raichu[] = INCBIN_U8("graphics/pokemon/back_pics/raichu_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Raichu[] = INCBIN_U8("graphics/pokemon/palettes/raichu_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Raichu[] = INCBIN_U32("graphics/pokemon/front_pics/raichu_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Raichu[] = INCBIN_U32("graphics/pokemon/palettes/raichu_palette.gbapal.lz");
+const u32 gMonBackPic_Raichu[] = INCBIN_U32("graphics/pokemon/back_pics/raichu_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Raichu[] = INCBIN_U32("graphics/pokemon/palettes/raichu_shiny_palette.gbapal.lz");
const u8 gMonIcon_Raichu[] = INCBIN_U8("graphics/pokemon/icons/raichu_icon.4bpp");
const u8 gMonFootprint_Raichu[] = INCBIN_U8("graphics/pokemon/footprints/raichu_footprint.1bpp");
-const u8 gMonStillFrontPic_Sandshrew[] = INCBIN_U8("graphics/pokemon/front_pics/sandshrew_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Sandshrew[] = INCBIN_U8("graphics/pokemon/palettes/sandshrew_palette.gbapal.lz");
-const u8 gMonBackPic_Sandshrew[] = INCBIN_U8("graphics/pokemon/back_pics/sandshrew_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Sandshrew[] = INCBIN_U8("graphics/pokemon/palettes/sandshrew_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/front_pics/sandshrew_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/palettes/sandshrew_palette.gbapal.lz");
+const u32 gMonBackPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/back_pics/sandshrew_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/palettes/sandshrew_shiny_palette.gbapal.lz");
const u8 gMonIcon_Sandshrew[] = INCBIN_U8("graphics/pokemon/icons/sandshrew_icon.4bpp");
const u8 gMonFootprint_Sandshrew[] = INCBIN_U8("graphics/pokemon/footprints/sandshrew_footprint.1bpp");
-const u8 gMonStillFrontPic_Sandslash[] = INCBIN_U8("graphics/pokemon/front_pics/sandslash_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Sandslash[] = INCBIN_U8("graphics/pokemon/palettes/sandslash_palette.gbapal.lz");
-const u8 gMonBackPic_Sandslash[] = INCBIN_U8("graphics/pokemon/back_pics/sandslash_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Sandslash[] = INCBIN_U8("graphics/pokemon/palettes/sandslash_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Sandslash[] = INCBIN_U32("graphics/pokemon/front_pics/sandslash_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/palettes/sandslash_palette.gbapal.lz");
+const u32 gMonBackPic_Sandslash[] = INCBIN_U32("graphics/pokemon/back_pics/sandslash_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/palettes/sandslash_shiny_palette.gbapal.lz");
const u8 gMonIcon_Sandslash[] = INCBIN_U8("graphics/pokemon/icons/sandslash_icon.4bpp");
const u8 gMonFootprint_Sandslash[] = INCBIN_U8("graphics/pokemon/footprints/sandslash_footprint.1bpp");
-const u8 gMonStillFrontPic_NidoranF[] = INCBIN_U8("graphics/pokemon/front_pics/nidoran_f_still_front_pic.4bpp.lz");
-const u8 gMonPalette_NidoranF[] = INCBIN_U8("graphics/pokemon/palettes/nidoran_f_palette.gbapal.lz");
-const u8 gMonBackPic_NidoranF[] = INCBIN_U8("graphics/pokemon/back_pics/nidoran_f_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_NidoranF[] = INCBIN_U8("graphics/pokemon/palettes/nidoran_f_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_NidoranF[] = INCBIN_U32("graphics/pokemon/front_pics/nidoran_f_still_front_pic.4bpp.lz");
+const u32 gMonPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/palettes/nidoran_f_palette.gbapal.lz");
+const u32 gMonBackPic_NidoranF[] = INCBIN_U32("graphics/pokemon/back_pics/nidoran_f_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/palettes/nidoran_f_shiny_palette.gbapal.lz");
const u8 gMonIcon_NidoranF[] = INCBIN_U8("graphics/pokemon/icons/nidoran_f_icon.4bpp");
const u8 gMonFootprint_NidoranF[] = INCBIN_U8("graphics/pokemon/footprints/nidoran_f_footprint.1bpp");
-const u8 gMonStillFrontPic_Nidorina[] = INCBIN_U8("graphics/pokemon/front_pics/nidorina_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Nidorina[] = INCBIN_U8("graphics/pokemon/palettes/nidorina_palette.gbapal.lz");
-const u8 gMonBackPic_Nidorina[] = INCBIN_U8("graphics/pokemon/back_pics/nidorina_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Nidorina[] = INCBIN_U8("graphics/pokemon/palettes/nidorina_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Nidorina[] = INCBIN_U32("graphics/pokemon/front_pics/nidorina_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/palettes/nidorina_palette.gbapal.lz");
+const u32 gMonBackPic_Nidorina[] = INCBIN_U32("graphics/pokemon/back_pics/nidorina_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/palettes/nidorina_shiny_palette.gbapal.lz");
const u8 gMonIcon_Nidorina[] = INCBIN_U8("graphics/pokemon/icons/nidorina_icon.4bpp");
const u8 gMonFootprint_Nidorina[] = INCBIN_U8("graphics/pokemon/footprints/nidorina_footprint.1bpp");
-const u8 gMonStillFrontPic_Nidoqueen[] = INCBIN_U8("graphics/pokemon/front_pics/nidoqueen_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Nidoqueen[] = INCBIN_U8("graphics/pokemon/palettes/nidoqueen_palette.gbapal.lz");
-const u8 gMonBackPic_Nidoqueen[] = INCBIN_U8("graphics/pokemon/back_pics/nidoqueen_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Nidoqueen[] = INCBIN_U8("graphics/pokemon/palettes/nidoqueen_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/front_pics/nidoqueen_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/palettes/nidoqueen_palette.gbapal.lz");
+const u32 gMonBackPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/back_pics/nidoqueen_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/palettes/nidoqueen_shiny_palette.gbapal.lz");
const u8 gMonIcon_Nidoqueen[] = INCBIN_U8("graphics/pokemon/icons/nidoqueen_icon.4bpp");
const u8 gMonFootprint_Nidoqueen[] = INCBIN_U8("graphics/pokemon/footprints/nidoqueen_footprint.1bpp");
-const u8 gMonStillFrontPic_NidoranM[] = INCBIN_U8("graphics/pokemon/front_pics/nidoran_m_still_front_pic.4bpp.lz");
-const u8 gMonPalette_NidoranM[] = INCBIN_U8("graphics/pokemon/palettes/nidoran_m_palette.gbapal.lz");
-const u8 gMonBackPic_NidoranM[] = INCBIN_U8("graphics/pokemon/back_pics/nidoran_m_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_NidoranM[] = INCBIN_U8("graphics/pokemon/palettes/nidoran_m_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_NidoranM[] = INCBIN_U32("graphics/pokemon/front_pics/nidoran_m_still_front_pic.4bpp.lz");
+const u32 gMonPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/palettes/nidoran_m_palette.gbapal.lz");
+const u32 gMonBackPic_NidoranM[] = INCBIN_U32("graphics/pokemon/back_pics/nidoran_m_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/palettes/nidoran_m_shiny_palette.gbapal.lz");
const u8 gMonIcon_NidoranM[] = INCBIN_U8("graphics/pokemon/icons/nidoran_m_icon.4bpp");
const u8 gMonFootprint_NidoranM[] = INCBIN_U8("graphics/pokemon/footprints/nidoran_m_footprint.1bpp");
-const u8 gMonStillFrontPic_Nidorino[] = INCBIN_U8("graphics/pokemon/front_pics/nidorino_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Nidorino[] = INCBIN_U8("graphics/pokemon/palettes/nidorino_palette.gbapal.lz");
-const u8 gMonBackPic_Nidorino[] = INCBIN_U8("graphics/pokemon/back_pics/nidorino_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Nidorino[] = INCBIN_U8("graphics/pokemon/palettes/nidorino_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Nidorino[] = INCBIN_U32("graphics/pokemon/front_pics/nidorino_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/palettes/nidorino_palette.gbapal.lz");
+const u32 gMonBackPic_Nidorino[] = INCBIN_U32("graphics/pokemon/back_pics/nidorino_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/palettes/nidorino_shiny_palette.gbapal.lz");
const u8 gMonIcon_Nidorino[] = INCBIN_U8("graphics/pokemon/icons/nidorino_icon.4bpp");
const u8 gMonFootprint_Nidorino[] = INCBIN_U8("graphics/pokemon/footprints/nidorino_footprint.1bpp");
-const u8 gMonStillFrontPic_Nidoking[] = INCBIN_U8("graphics/pokemon/front_pics/nidoking_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Nidoking[] = INCBIN_U8("graphics/pokemon/palettes/nidoking_palette.gbapal.lz");
-const u8 gMonBackPic_Nidoking[] = INCBIN_U8("graphics/pokemon/back_pics/nidoking_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Nidoking[] = INCBIN_U8("graphics/pokemon/palettes/nidoking_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Nidoking[] = INCBIN_U32("graphics/pokemon/front_pics/nidoking_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/palettes/nidoking_palette.gbapal.lz");
+const u32 gMonBackPic_Nidoking[] = INCBIN_U32("graphics/pokemon/back_pics/nidoking_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/palettes/nidoking_shiny_palette.gbapal.lz");
const u8 gMonIcon_Nidoking[] = INCBIN_U8("graphics/pokemon/icons/nidoking_icon.4bpp");
const u8 gMonFootprint_Nidoking[] = INCBIN_U8("graphics/pokemon/footprints/nidoking_footprint.1bpp");
-const u8 gMonStillFrontPic_Clefairy[] = INCBIN_U8("graphics/pokemon/front_pics/clefairy_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Clefairy[] = INCBIN_U8("graphics/pokemon/palettes/clefairy_palette.gbapal.lz");
-const u8 gMonBackPic_Clefairy[] = INCBIN_U8("graphics/pokemon/back_pics/clefairy_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Clefairy[] = INCBIN_U8("graphics/pokemon/palettes/clefairy_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Clefairy[] = INCBIN_U32("graphics/pokemon/front_pics/clefairy_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/palettes/clefairy_palette.gbapal.lz");
+const u32 gMonBackPic_Clefairy[] = INCBIN_U32("graphics/pokemon/back_pics/clefairy_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/palettes/clefairy_shiny_palette.gbapal.lz");
const u8 gMonIcon_Clefairy[] = INCBIN_U8("graphics/pokemon/icons/clefairy_icon.4bpp");
const u8 gMonFootprint_Clefairy[] = INCBIN_U8("graphics/pokemon/footprints/clefairy_footprint.1bpp");
-const u8 gMonStillFrontPic_Clefable[] = INCBIN_U8("graphics/pokemon/front_pics/clefable_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Clefable[] = INCBIN_U8("graphics/pokemon/palettes/clefable_palette.gbapal.lz");
-const u8 gMonBackPic_Clefable[] = INCBIN_U8("graphics/pokemon/back_pics/clefable_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Clefable[] = INCBIN_U8("graphics/pokemon/palettes/clefable_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Clefable[] = INCBIN_U32("graphics/pokemon/front_pics/clefable_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Clefable[] = INCBIN_U32("graphics/pokemon/palettes/clefable_palette.gbapal.lz");
+const u32 gMonBackPic_Clefable[] = INCBIN_U32("graphics/pokemon/back_pics/clefable_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Clefable[] = INCBIN_U32("graphics/pokemon/palettes/clefable_shiny_palette.gbapal.lz");
const u8 gMonIcon_Clefable[] = INCBIN_U8("graphics/pokemon/icons/clefable_icon.4bpp");
const u8 gMonFootprint_Clefable[] = INCBIN_U8("graphics/pokemon/footprints/clefable_footprint.1bpp");
-const u8 gMonStillFrontPic_Vulpix[] = INCBIN_U8("graphics/pokemon/front_pics/vulpix_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Vulpix[] = INCBIN_U8("graphics/pokemon/palettes/vulpix_palette.gbapal.lz");
-const u8 gMonBackPic_Vulpix[] = INCBIN_U8("graphics/pokemon/back_pics/vulpix_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Vulpix[] = INCBIN_U8("graphics/pokemon/palettes/vulpix_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Vulpix[] = INCBIN_U32("graphics/pokemon/front_pics/vulpix_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/palettes/vulpix_palette.gbapal.lz");
+const u32 gMonBackPic_Vulpix[] = INCBIN_U32("graphics/pokemon/back_pics/vulpix_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/palettes/vulpix_shiny_palette.gbapal.lz");
const u8 gMonIcon_Vulpix[] = INCBIN_U8("graphics/pokemon/icons/vulpix_icon.4bpp");
const u8 gMonFootprint_Vulpix[] = INCBIN_U8("graphics/pokemon/footprints/vulpix_footprint.1bpp");
-const u8 gMonStillFrontPic_Ninetales[] = INCBIN_U8("graphics/pokemon/front_pics/ninetales_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ninetales[] = INCBIN_U8("graphics/pokemon/palettes/ninetales_palette.gbapal.lz");
-const u8 gMonBackPic_Ninetales[] = INCBIN_U8("graphics/pokemon/back_pics/ninetales_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ninetales[] = INCBIN_U8("graphics/pokemon/palettes/ninetales_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ninetales[] = INCBIN_U32("graphics/pokemon/front_pics/ninetales_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/palettes/ninetales_palette.gbapal.lz");
+const u32 gMonBackPic_Ninetales[] = INCBIN_U32("graphics/pokemon/back_pics/ninetales_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/palettes/ninetales_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ninetales[] = INCBIN_U8("graphics/pokemon/icons/ninetales_icon.4bpp");
const u8 gMonFootprint_Ninetales[] = INCBIN_U8("graphics/pokemon/footprints/ninetales_footprint.1bpp");
-const u8 gMonStillFrontPic_Jigglypuff[] = INCBIN_U8("graphics/pokemon/front_pics/jigglypuff_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Jigglypuff[] = INCBIN_U8("graphics/pokemon/palettes/jigglypuff_palette.gbapal.lz");
-const u8 gMonBackPic_Jigglypuff[] = INCBIN_U8("graphics/pokemon/back_pics/jigglypuff_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Jigglypuff[] = INCBIN_U8("graphics/pokemon/palettes/jigglypuff_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/front_pics/jigglypuff_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/palettes/jigglypuff_palette.gbapal.lz");
+const u32 gMonBackPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/back_pics/jigglypuff_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/palettes/jigglypuff_shiny_palette.gbapal.lz");
const u8 gMonIcon_Jigglypuff[] = INCBIN_U8("graphics/pokemon/icons/jigglypuff_icon.4bpp");
const u8 gMonFootprint_Jigglypuff[] = INCBIN_U8("graphics/pokemon/footprints/jigglypuff_footprint.1bpp");
-const u8 gMonStillFrontPic_Wigglytuff[] = INCBIN_U8("graphics/pokemon/front_pics/wigglytuff_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Wigglytuff[] = INCBIN_U8("graphics/pokemon/palettes/wigglytuff_palette.gbapal.lz");
-const u8 gMonBackPic_Wigglytuff[] = INCBIN_U8("graphics/pokemon/back_pics/wigglytuff_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Wigglytuff[] = INCBIN_U8("graphics/pokemon/palettes/wigglytuff_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/front_pics/wigglytuff_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/palettes/wigglytuff_palette.gbapal.lz");
+const u32 gMonBackPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/back_pics/wigglytuff_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/palettes/wigglytuff_shiny_palette.gbapal.lz");
const u8 gMonIcon_Wigglytuff[] = INCBIN_U8("graphics/pokemon/icons/wigglytuff_icon.4bpp");
const u8 gMonFootprint_Wigglytuff[] = INCBIN_U8("graphics/pokemon/footprints/wigglytuff_footprint.1bpp");
-const u8 gMonStillFrontPic_Zubat[] = INCBIN_U8("graphics/pokemon/front_pics/zubat_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Zubat[] = INCBIN_U8("graphics/pokemon/palettes/zubat_palette.gbapal.lz");
-const u8 gMonBackPic_Zubat[] = INCBIN_U8("graphics/pokemon/back_pics/zubat_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Zubat[] = INCBIN_U8("graphics/pokemon/palettes/zubat_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Zubat[] = INCBIN_U32("graphics/pokemon/front_pics/zubat_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Zubat[] = INCBIN_U32("graphics/pokemon/palettes/zubat_palette.gbapal.lz");
+const u32 gMonBackPic_Zubat[] = INCBIN_U32("graphics/pokemon/back_pics/zubat_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Zubat[] = INCBIN_U32("graphics/pokemon/palettes/zubat_shiny_palette.gbapal.lz");
const u8 gMonIcon_Zubat[] = INCBIN_U8("graphics/pokemon/icons/zubat_icon.4bpp");
const u8 gMonFootprint_Zubat[] = INCBIN_U8("graphics/pokemon/footprints/zubat_footprint.1bpp");
-const u8 gMonStillFrontPic_Golbat[] = INCBIN_U8("graphics/pokemon/front_pics/golbat_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Golbat[] = INCBIN_U8("graphics/pokemon/palettes/golbat_palette.gbapal.lz");
-const u8 gMonBackPic_Golbat[] = INCBIN_U8("graphics/pokemon/back_pics/golbat_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Golbat[] = INCBIN_U8("graphics/pokemon/palettes/golbat_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Golbat[] = INCBIN_U32("graphics/pokemon/front_pics/golbat_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Golbat[] = INCBIN_U32("graphics/pokemon/palettes/golbat_palette.gbapal.lz");
+const u32 gMonBackPic_Golbat[] = INCBIN_U32("graphics/pokemon/back_pics/golbat_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Golbat[] = INCBIN_U32("graphics/pokemon/palettes/golbat_shiny_palette.gbapal.lz");
const u8 gMonIcon_Golbat[] = INCBIN_U8("graphics/pokemon/icons/golbat_icon.4bpp");
const u8 gMonFootprint_Golbat[] = INCBIN_U8("graphics/pokemon/footprints/golbat_footprint.1bpp");
-const u8 gMonStillFrontPic_Oddish[] = INCBIN_U8("graphics/pokemon/front_pics/oddish_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Oddish[] = INCBIN_U8("graphics/pokemon/palettes/oddish_palette.gbapal.lz");
-const u8 gMonBackPic_Oddish[] = INCBIN_U8("graphics/pokemon/back_pics/oddish_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Oddish[] = INCBIN_U8("graphics/pokemon/palettes/oddish_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Oddish[] = INCBIN_U32("graphics/pokemon/front_pics/oddish_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Oddish[] = INCBIN_U32("graphics/pokemon/palettes/oddish_palette.gbapal.lz");
+const u32 gMonBackPic_Oddish[] = INCBIN_U32("graphics/pokemon/back_pics/oddish_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Oddish[] = INCBIN_U32("graphics/pokemon/palettes/oddish_shiny_palette.gbapal.lz");
const u8 gMonIcon_Oddish[] = INCBIN_U8("graphics/pokemon/icons/oddish_icon.4bpp");
const u8 gMonFootprint_Oddish[] = INCBIN_U8("graphics/pokemon/footprints/oddish_footprint.1bpp");
-const u8 gMonStillFrontPic_Gloom[] = INCBIN_U8("graphics/pokemon/front_pics/gloom_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Gloom[] = INCBIN_U8("graphics/pokemon/palettes/gloom_palette.gbapal.lz");
-const u8 gMonBackPic_Gloom[] = INCBIN_U8("graphics/pokemon/back_pics/gloom_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Gloom[] = INCBIN_U8("graphics/pokemon/palettes/gloom_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Gloom[] = INCBIN_U32("graphics/pokemon/front_pics/gloom_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Gloom[] = INCBIN_U32("graphics/pokemon/palettes/gloom_palette.gbapal.lz");
+const u32 gMonBackPic_Gloom[] = INCBIN_U32("graphics/pokemon/back_pics/gloom_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Gloom[] = INCBIN_U32("graphics/pokemon/palettes/gloom_shiny_palette.gbapal.lz");
const u8 gMonIcon_Gloom[] = INCBIN_U8("graphics/pokemon/icons/gloom_icon.4bpp");
const u8 gMonFootprint_Gloom[] = INCBIN_U8("graphics/pokemon/footprints/gloom_footprint.1bpp");
-const u8 gMonStillFrontPic_Vileplume[] = INCBIN_U8("graphics/pokemon/front_pics/vileplume_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Vileplume[] = INCBIN_U8("graphics/pokemon/palettes/vileplume_palette.gbapal.lz");
-const u8 gMonBackPic_Vileplume[] = INCBIN_U8("graphics/pokemon/back_pics/vileplume_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Vileplume[] = INCBIN_U8("graphics/pokemon/palettes/vileplume_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Vileplume[] = INCBIN_U32("graphics/pokemon/front_pics/vileplume_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/palettes/vileplume_palette.gbapal.lz");
+const u32 gMonBackPic_Vileplume[] = INCBIN_U32("graphics/pokemon/back_pics/vileplume_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/palettes/vileplume_shiny_palette.gbapal.lz");
const u8 gMonIcon_Vileplume[] = INCBIN_U8("graphics/pokemon/icons/vileplume_icon.4bpp");
const u8 gMonFootprint_Vileplume[] = INCBIN_U8("graphics/pokemon/footprints/vileplume_footprint.1bpp");
-const u8 gMonStillFrontPic_Paras[] = INCBIN_U8("graphics/pokemon/front_pics/paras_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Paras[] = INCBIN_U8("graphics/pokemon/palettes/paras_palette.gbapal.lz");
-const u8 gMonBackPic_Paras[] = INCBIN_U8("graphics/pokemon/back_pics/paras_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Paras[] = INCBIN_U8("graphics/pokemon/palettes/paras_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Paras[] = INCBIN_U32("graphics/pokemon/front_pics/paras_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Paras[] = INCBIN_U32("graphics/pokemon/palettes/paras_palette.gbapal.lz");
+const u32 gMonBackPic_Paras[] = INCBIN_U32("graphics/pokemon/back_pics/paras_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Paras[] = INCBIN_U32("graphics/pokemon/palettes/paras_shiny_palette.gbapal.lz");
const u8 gMonIcon_Paras[] = INCBIN_U8("graphics/pokemon/icons/paras_icon.4bpp");
const u8 gMonFootprint_Paras[] = INCBIN_U8("graphics/pokemon/footprints/paras_footprint.1bpp");
-const u8 gMonStillFrontPic_Parasect[] = INCBIN_U8("graphics/pokemon/front_pics/parasect_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Parasect[] = INCBIN_U8("graphics/pokemon/palettes/parasect_palette.gbapal.lz");
-const u8 gMonBackPic_Parasect[] = INCBIN_U8("graphics/pokemon/back_pics/parasect_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Parasect[] = INCBIN_U8("graphics/pokemon/palettes/parasect_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Parasect[] = INCBIN_U32("graphics/pokemon/front_pics/parasect_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Parasect[] = INCBIN_U32("graphics/pokemon/palettes/parasect_palette.gbapal.lz");
+const u32 gMonBackPic_Parasect[] = INCBIN_U32("graphics/pokemon/back_pics/parasect_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Parasect[] = INCBIN_U32("graphics/pokemon/palettes/parasect_shiny_palette.gbapal.lz");
const u8 gMonIcon_Parasect[] = INCBIN_U8("graphics/pokemon/icons/parasect_icon.4bpp");
const u8 gMonFootprint_Parasect[] = INCBIN_U8("graphics/pokemon/footprints/parasect_footprint.1bpp");
-const u8 gMonStillFrontPic_Venonat[] = INCBIN_U8("graphics/pokemon/front_pics/venonat_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Venonat[] = INCBIN_U8("graphics/pokemon/palettes/venonat_palette.gbapal.lz");
-const u8 gMonBackPic_Venonat[] = INCBIN_U8("graphics/pokemon/back_pics/venonat_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Venonat[] = INCBIN_U8("graphics/pokemon/palettes/venonat_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Venonat[] = INCBIN_U32("graphics/pokemon/front_pics/venonat_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Venonat[] = INCBIN_U32("graphics/pokemon/palettes/venonat_palette.gbapal.lz");
+const u32 gMonBackPic_Venonat[] = INCBIN_U32("graphics/pokemon/back_pics/venonat_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Venonat[] = INCBIN_U32("graphics/pokemon/palettes/venonat_shiny_palette.gbapal.lz");
const u8 gMonIcon_Venonat[] = INCBIN_U8("graphics/pokemon/icons/venonat_icon.4bpp");
const u8 gMonFootprint_Venonat[] = INCBIN_U8("graphics/pokemon/footprints/venonat_footprint.1bpp");
-const u8 gMonStillFrontPic_Venomoth[] = INCBIN_U8("graphics/pokemon/front_pics/venomoth_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Venomoth[] = INCBIN_U8("graphics/pokemon/palettes/venomoth_palette.gbapal.lz");
-const u8 gMonBackPic_Venomoth[] = INCBIN_U8("graphics/pokemon/back_pics/venomoth_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Venomoth[] = INCBIN_U8("graphics/pokemon/palettes/venomoth_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Venomoth[] = INCBIN_U32("graphics/pokemon/front_pics/venomoth_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/palettes/venomoth_palette.gbapal.lz");
+const u32 gMonBackPic_Venomoth[] = INCBIN_U32("graphics/pokemon/back_pics/venomoth_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/palettes/venomoth_shiny_palette.gbapal.lz");
const u8 gMonIcon_Venomoth[] = INCBIN_U8("graphics/pokemon/icons/venomoth_icon.4bpp");
const u8 gMonFootprint_Venomoth[] = INCBIN_U8("graphics/pokemon/footprints/venomoth_footprint.1bpp");
-const u8 gMonStillFrontPic_Diglett[] = INCBIN_U8("graphics/pokemon/front_pics/diglett_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Diglett[] = INCBIN_U8("graphics/pokemon/palettes/diglett_palette.gbapal.lz");
-const u8 gMonBackPic_Diglett[] = INCBIN_U8("graphics/pokemon/back_pics/diglett_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Diglett[] = INCBIN_U8("graphics/pokemon/palettes/diglett_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Diglett[] = INCBIN_U32("graphics/pokemon/front_pics/diglett_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Diglett[] = INCBIN_U32("graphics/pokemon/palettes/diglett_palette.gbapal.lz");
+const u32 gMonBackPic_Diglett[] = INCBIN_U32("graphics/pokemon/back_pics/diglett_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Diglett[] = INCBIN_U32("graphics/pokemon/palettes/diglett_shiny_palette.gbapal.lz");
const u8 gMonIcon_Diglett[] = INCBIN_U8("graphics/pokemon/icons/diglett_icon.4bpp");
const u8 gMonFootprint_Diglett[] = INCBIN_U8("graphics/pokemon/footprints/diglett_footprint.1bpp");
-const u8 gMonStillFrontPic_Dugtrio[] = INCBIN_U8("graphics/pokemon/front_pics/dugtrio_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Dugtrio[] = INCBIN_U8("graphics/pokemon/palettes/dugtrio_palette.gbapal.lz");
-const u8 gMonBackPic_Dugtrio[] = INCBIN_U8("graphics/pokemon/back_pics/dugtrio_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Dugtrio[] = INCBIN_U8("graphics/pokemon/palettes/dugtrio_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/front_pics/dugtrio_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/palettes/dugtrio_palette.gbapal.lz");
+const u32 gMonBackPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/back_pics/dugtrio_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/palettes/dugtrio_shiny_palette.gbapal.lz");
const u8 gMonIcon_Dugtrio[] = INCBIN_U8("graphics/pokemon/icons/dugtrio_icon.4bpp");
const u8 gMonFootprint_Dugtrio[] = INCBIN_U8("graphics/pokemon/footprints/dugtrio_footprint.1bpp");
-const u8 gMonStillFrontPic_Meowth[] = INCBIN_U8("graphics/pokemon/front_pics/meowth_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Meowth[] = INCBIN_U8("graphics/pokemon/palettes/meowth_palette.gbapal.lz");
-const u8 gMonBackPic_Meowth[] = INCBIN_U8("graphics/pokemon/back_pics/meowth_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Meowth[] = INCBIN_U8("graphics/pokemon/palettes/meowth_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Meowth[] = INCBIN_U32("graphics/pokemon/front_pics/meowth_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Meowth[] = INCBIN_U32("graphics/pokemon/palettes/meowth_palette.gbapal.lz");
+const u32 gMonBackPic_Meowth[] = INCBIN_U32("graphics/pokemon/back_pics/meowth_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Meowth[] = INCBIN_U32("graphics/pokemon/palettes/meowth_shiny_palette.gbapal.lz");
const u8 gMonIcon_Meowth[] = INCBIN_U8("graphics/pokemon/icons/meowth_icon.4bpp");
const u8 gMonFootprint_Meowth[] = INCBIN_U8("graphics/pokemon/footprints/meowth_footprint.1bpp");
-const u8 gMonStillFrontPic_Persian[] = INCBIN_U8("graphics/pokemon/front_pics/persian_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Persian[] = INCBIN_U8("graphics/pokemon/palettes/persian_palette.gbapal.lz");
-const u8 gMonBackPic_Persian[] = INCBIN_U8("graphics/pokemon/back_pics/persian_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Persian[] = INCBIN_U8("graphics/pokemon/palettes/persian_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Persian[] = INCBIN_U32("graphics/pokemon/front_pics/persian_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Persian[] = INCBIN_U32("graphics/pokemon/palettes/persian_palette.gbapal.lz");
+const u32 gMonBackPic_Persian[] = INCBIN_U32("graphics/pokemon/back_pics/persian_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Persian[] = INCBIN_U32("graphics/pokemon/palettes/persian_shiny_palette.gbapal.lz");
const u8 gMonIcon_Persian[] = INCBIN_U8("graphics/pokemon/icons/persian_icon.4bpp");
const u8 gMonFootprint_Persian[] = INCBIN_U8("graphics/pokemon/footprints/persian_footprint.1bpp");
-const u8 gMonStillFrontPic_Psyduck[] = INCBIN_U8("graphics/pokemon/front_pics/psyduck_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Psyduck[] = INCBIN_U8("graphics/pokemon/palettes/psyduck_palette.gbapal.lz");
-const u8 gMonBackPic_Psyduck[] = INCBIN_U8("graphics/pokemon/back_pics/psyduck_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Psyduck[] = INCBIN_U8("graphics/pokemon/palettes/psyduck_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Psyduck[] = INCBIN_U32("graphics/pokemon/front_pics/psyduck_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/palettes/psyduck_palette.gbapal.lz");
+const u32 gMonBackPic_Psyduck[] = INCBIN_U32("graphics/pokemon/back_pics/psyduck_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/palettes/psyduck_shiny_palette.gbapal.lz");
const u8 gMonIcon_Psyduck[] = INCBIN_U8("graphics/pokemon/icons/psyduck_icon.4bpp");
const u8 gMonFootprint_Psyduck[] = INCBIN_U8("graphics/pokemon/footprints/psyduck_footprint.1bpp");
-const u8 gMonStillFrontPic_Golduck[] = INCBIN_U8("graphics/pokemon/front_pics/golduck_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Golduck[] = INCBIN_U8("graphics/pokemon/palettes/golduck_palette.gbapal.lz");
-const u8 gMonBackPic_Golduck[] = INCBIN_U8("graphics/pokemon/back_pics/golduck_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Golduck[] = INCBIN_U8("graphics/pokemon/palettes/golduck_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Golduck[] = INCBIN_U32("graphics/pokemon/front_pics/golduck_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Golduck[] = INCBIN_U32("graphics/pokemon/palettes/golduck_palette.gbapal.lz");
+const u32 gMonBackPic_Golduck[] = INCBIN_U32("graphics/pokemon/back_pics/golduck_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Golduck[] = INCBIN_U32("graphics/pokemon/palettes/golduck_shiny_palette.gbapal.lz");
const u8 gMonIcon_Golduck[] = INCBIN_U8("graphics/pokemon/icons/golduck_icon.4bpp");
const u8 gMonFootprint_Golduck[] = INCBIN_U8("graphics/pokemon/footprints/golduck_footprint.1bpp");
-const u8 gMonStillFrontPic_Mankey[] = INCBIN_U8("graphics/pokemon/front_pics/mankey_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Mankey[] = INCBIN_U8("graphics/pokemon/palettes/mankey_palette.gbapal.lz");
-const u8 gMonBackPic_Mankey[] = INCBIN_U8("graphics/pokemon/back_pics/mankey_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Mankey[] = INCBIN_U8("graphics/pokemon/palettes/mankey_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Mankey[] = INCBIN_U32("graphics/pokemon/front_pics/mankey_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Mankey[] = INCBIN_U32("graphics/pokemon/palettes/mankey_palette.gbapal.lz");
+const u32 gMonBackPic_Mankey[] = INCBIN_U32("graphics/pokemon/back_pics/mankey_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Mankey[] = INCBIN_U32("graphics/pokemon/palettes/mankey_shiny_palette.gbapal.lz");
const u8 gMonIcon_Mankey[] = INCBIN_U8("graphics/pokemon/icons/mankey_icon.4bpp");
const u8 gMonFootprint_Mankey[] = INCBIN_U8("graphics/pokemon/footprints/mankey_footprint.1bpp");
-const u8 gMonStillFrontPic_Primeape[] = INCBIN_U8("graphics/pokemon/front_pics/primeape_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Primeape[] = INCBIN_U8("graphics/pokemon/palettes/primeape_palette.gbapal.lz");
-const u8 gMonBackPic_Primeape[] = INCBIN_U8("graphics/pokemon/back_pics/primeape_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Primeape[] = INCBIN_U8("graphics/pokemon/palettes/primeape_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Primeape[] = INCBIN_U32("graphics/pokemon/front_pics/primeape_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Primeape[] = INCBIN_U32("graphics/pokemon/palettes/primeape_palette.gbapal.lz");
+const u32 gMonBackPic_Primeape[] = INCBIN_U32("graphics/pokemon/back_pics/primeape_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Primeape[] = INCBIN_U32("graphics/pokemon/palettes/primeape_shiny_palette.gbapal.lz");
const u8 gMonIcon_Primeape[] = INCBIN_U8("graphics/pokemon/icons/primeape_icon.4bpp");
const u8 gMonFootprint_Primeape[] = INCBIN_U8("graphics/pokemon/footprints/primeape_footprint.1bpp");
-const u8 gMonStillFrontPic_Growlithe[] = INCBIN_U8("graphics/pokemon/front_pics/growlithe_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Growlithe[] = INCBIN_U8("graphics/pokemon/palettes/growlithe_palette.gbapal.lz");
-const u8 gMonBackPic_Growlithe[] = INCBIN_U8("graphics/pokemon/back_pics/growlithe_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Growlithe[] = INCBIN_U8("graphics/pokemon/palettes/growlithe_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Growlithe[] = INCBIN_U32("graphics/pokemon/front_pics/growlithe_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/palettes/growlithe_palette.gbapal.lz");
+const u32 gMonBackPic_Growlithe[] = INCBIN_U32("graphics/pokemon/back_pics/growlithe_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/palettes/growlithe_shiny_palette.gbapal.lz");
const u8 gMonIcon_Growlithe[] = INCBIN_U8("graphics/pokemon/icons/growlithe_icon.4bpp");
const u8 gMonFootprint_Growlithe[] = INCBIN_U8("graphics/pokemon/footprints/growlithe_footprint.1bpp");
-const u8 gMonStillFrontPic_Arcanine[] = INCBIN_U8("graphics/pokemon/front_pics/arcanine_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Arcanine[] = INCBIN_U8("graphics/pokemon/palettes/arcanine_palette.gbapal.lz");
-const u8 gMonBackPic_Arcanine[] = INCBIN_U8("graphics/pokemon/back_pics/arcanine_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Arcanine[] = INCBIN_U8("graphics/pokemon/palettes/arcanine_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Arcanine[] = INCBIN_U32("graphics/pokemon/front_pics/arcanine_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/palettes/arcanine_palette.gbapal.lz");
+const u32 gMonBackPic_Arcanine[] = INCBIN_U32("graphics/pokemon/back_pics/arcanine_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/palettes/arcanine_shiny_palette.gbapal.lz");
const u8 gMonIcon_Arcanine[] = INCBIN_U8("graphics/pokemon/icons/arcanine_icon.4bpp");
const u8 gMonFootprint_Arcanine[] = INCBIN_U8("graphics/pokemon/footprints/arcanine_footprint.1bpp");
-const u8 gMonStillFrontPic_Poliwag[] = INCBIN_U8("graphics/pokemon/front_pics/poliwag_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Poliwag[] = INCBIN_U8("graphics/pokemon/palettes/poliwag_palette.gbapal.lz");
-const u8 gMonBackPic_Poliwag[] = INCBIN_U8("graphics/pokemon/back_pics/poliwag_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Poliwag[] = INCBIN_U8("graphics/pokemon/palettes/poliwag_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Poliwag[] = INCBIN_U32("graphics/pokemon/front_pics/poliwag_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/palettes/poliwag_palette.gbapal.lz");
+const u32 gMonBackPic_Poliwag[] = INCBIN_U32("graphics/pokemon/back_pics/poliwag_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/palettes/poliwag_shiny_palette.gbapal.lz");
const u8 gMonIcon_Poliwag[] = INCBIN_U8("graphics/pokemon/icons/poliwag_icon.4bpp");
const u8 gMonFootprint_Poliwag[] = INCBIN_U8("graphics/pokemon/footprints/poliwag_footprint.1bpp");
-const u8 gMonStillFrontPic_Poliwhirl[] = INCBIN_U8("graphics/pokemon/front_pics/poliwhirl_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Poliwhirl[] = INCBIN_U8("graphics/pokemon/palettes/poliwhirl_palette.gbapal.lz");
-const u8 gMonBackPic_Poliwhirl[] = INCBIN_U8("graphics/pokemon/back_pics/poliwhirl_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Poliwhirl[] = INCBIN_U8("graphics/pokemon/palettes/poliwhirl_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/front_pics/poliwhirl_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/palettes/poliwhirl_palette.gbapal.lz");
+const u32 gMonBackPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/back_pics/poliwhirl_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/palettes/poliwhirl_shiny_palette.gbapal.lz");
const u8 gMonIcon_Poliwhirl[] = INCBIN_U8("graphics/pokemon/icons/poliwhirl_icon.4bpp");
const u8 gMonFootprint_Poliwhirl[] = INCBIN_U8("graphics/pokemon/footprints/poliwhirl_footprint.1bpp");
-const u8 gMonStillFrontPic_Poliwrath[] = INCBIN_U8("graphics/pokemon/front_pics/poliwrath_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Poliwrath[] = INCBIN_U8("graphics/pokemon/palettes/poliwrath_palette.gbapal.lz");
-const u8 gMonBackPic_Poliwrath[] = INCBIN_U8("graphics/pokemon/back_pics/poliwrath_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Poliwrath[] = INCBIN_U8("graphics/pokemon/palettes/poliwrath_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/front_pics/poliwrath_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/palettes/poliwrath_palette.gbapal.lz");
+const u32 gMonBackPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/back_pics/poliwrath_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/palettes/poliwrath_shiny_palette.gbapal.lz");
const u8 gMonIcon_Poliwrath[] = INCBIN_U8("graphics/pokemon/icons/poliwrath_icon.4bpp");
const u8 gMonFootprint_Poliwrath[] = INCBIN_U8("graphics/pokemon/footprints/poliwrath_footprint.1bpp");
-const u8 gMonStillFrontPic_Abra[] = INCBIN_U8("graphics/pokemon/front_pics/abra_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Abra[] = INCBIN_U8("graphics/pokemon/palettes/abra_palette.gbapal.lz");
-const u8 gMonBackPic_Abra[] = INCBIN_U8("graphics/pokemon/back_pics/abra_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Abra[] = INCBIN_U8("graphics/pokemon/palettes/abra_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Abra[] = INCBIN_U32("graphics/pokemon/front_pics/abra_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Abra[] = INCBIN_U32("graphics/pokemon/palettes/abra_palette.gbapal.lz");
+const u32 gMonBackPic_Abra[] = INCBIN_U32("graphics/pokemon/back_pics/abra_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Abra[] = INCBIN_U32("graphics/pokemon/palettes/abra_shiny_palette.gbapal.lz");
const u8 gMonIcon_Abra[] = INCBIN_U8("graphics/pokemon/icons/abra_icon.4bpp");
const u8 gMonFootprint_Abra[] = INCBIN_U8("graphics/pokemon/footprints/abra_footprint.1bpp");
-const u8 gMonStillFrontPic_Kadabra[] = INCBIN_U8("graphics/pokemon/front_pics/kadabra_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Kadabra[] = INCBIN_U8("graphics/pokemon/palettes/kadabra_palette.gbapal.lz");
-const u8 gMonBackPic_Kadabra[] = INCBIN_U8("graphics/pokemon/back_pics/kadabra_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Kadabra[] = INCBIN_U8("graphics/pokemon/palettes/kadabra_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Kadabra[] = INCBIN_U32("graphics/pokemon/front_pics/kadabra_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/palettes/kadabra_palette.gbapal.lz");
+const u32 gMonBackPic_Kadabra[] = INCBIN_U32("graphics/pokemon/back_pics/kadabra_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/palettes/kadabra_shiny_palette.gbapal.lz");
const u8 gMonIcon_Kadabra[] = INCBIN_U8("graphics/pokemon/icons/kadabra_icon.4bpp");
const u8 gMonFootprint_Kadabra[] = INCBIN_U8("graphics/pokemon/footprints/kadabra_footprint.1bpp");
-const u8 gMonStillFrontPic_Alakazam[] = INCBIN_U8("graphics/pokemon/front_pics/alakazam_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Alakazam[] = INCBIN_U8("graphics/pokemon/palettes/alakazam_palette.gbapal.lz");
-const u8 gMonBackPic_Alakazam[] = INCBIN_U8("graphics/pokemon/back_pics/alakazam_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Alakazam[] = INCBIN_U8("graphics/pokemon/palettes/alakazam_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Alakazam[] = INCBIN_U32("graphics/pokemon/front_pics/alakazam_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/palettes/alakazam_palette.gbapal.lz");
+const u32 gMonBackPic_Alakazam[] = INCBIN_U32("graphics/pokemon/back_pics/alakazam_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/palettes/alakazam_shiny_palette.gbapal.lz");
const u8 gMonIcon_Alakazam[] = INCBIN_U8("graphics/pokemon/icons/alakazam_icon.4bpp");
const u8 gMonFootprint_Alakazam[] = INCBIN_U8("graphics/pokemon/footprints/alakazam_footprint.1bpp");
-const u8 gMonStillFrontPic_Machop[] = INCBIN_U8("graphics/pokemon/front_pics/machop_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Machop[] = INCBIN_U8("graphics/pokemon/palettes/machop_palette.gbapal.lz");
-const u8 gMonBackPic_Machop[] = INCBIN_U8("graphics/pokemon/back_pics/machop_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Machop[] = INCBIN_U8("graphics/pokemon/palettes/machop_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Machop[] = INCBIN_U32("graphics/pokemon/front_pics/machop_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Machop[] = INCBIN_U32("graphics/pokemon/palettes/machop_palette.gbapal.lz");
+const u32 gMonBackPic_Machop[] = INCBIN_U32("graphics/pokemon/back_pics/machop_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Machop[] = INCBIN_U32("graphics/pokemon/palettes/machop_shiny_palette.gbapal.lz");
const u8 gMonIcon_Machop[] = INCBIN_U8("graphics/pokemon/icons/machop_icon.4bpp");
const u8 gMonFootprint_Machop[] = INCBIN_U8("graphics/pokemon/footprints/machop_footprint.1bpp");
-const u8 gMonStillFrontPic_Machoke[] = INCBIN_U8("graphics/pokemon/front_pics/machoke_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Machoke[] = INCBIN_U8("graphics/pokemon/palettes/machoke_palette.gbapal.lz");
-const u8 gMonBackPic_Machoke[] = INCBIN_U8("graphics/pokemon/back_pics/machoke_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Machoke[] = INCBIN_U8("graphics/pokemon/palettes/machoke_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Machoke[] = INCBIN_U32("graphics/pokemon/front_pics/machoke_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Machoke[] = INCBIN_U32("graphics/pokemon/palettes/machoke_palette.gbapal.lz");
+const u32 gMonBackPic_Machoke[] = INCBIN_U32("graphics/pokemon/back_pics/machoke_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Machoke[] = INCBIN_U32("graphics/pokemon/palettes/machoke_shiny_palette.gbapal.lz");
const u8 gMonIcon_Machoke[] = INCBIN_U8("graphics/pokemon/icons/machoke_icon.4bpp");
const u8 gMonFootprint_Machoke[] = INCBIN_U8("graphics/pokemon/footprints/machoke_footprint.1bpp");
-const u8 gMonStillFrontPic_Machamp[] = INCBIN_U8("graphics/pokemon/front_pics/machamp_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Machamp[] = INCBIN_U8("graphics/pokemon/palettes/machamp_palette.gbapal.lz");
-const u8 gMonBackPic_Machamp[] = INCBIN_U8("graphics/pokemon/back_pics/machamp_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Machamp[] = INCBIN_U8("graphics/pokemon/palettes/machamp_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Machamp[] = INCBIN_U32("graphics/pokemon/front_pics/machamp_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Machamp[] = INCBIN_U32("graphics/pokemon/palettes/machamp_palette.gbapal.lz");
+const u32 gMonBackPic_Machamp[] = INCBIN_U32("graphics/pokemon/back_pics/machamp_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Machamp[] = INCBIN_U32("graphics/pokemon/palettes/machamp_shiny_palette.gbapal.lz");
const u8 gMonIcon_Machamp[] = INCBIN_U8("graphics/pokemon/icons/machamp_icon.4bpp");
const u8 gMonFootprint_Machamp[] = INCBIN_U8("graphics/pokemon/footprints/machamp_footprint.1bpp");
-const u8 gMonStillFrontPic_Bellsprout[] = INCBIN_U8("graphics/pokemon/front_pics/bellsprout_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Bellsprout[] = INCBIN_U8("graphics/pokemon/palettes/bellsprout_palette.gbapal.lz");
-const u8 gMonBackPic_Bellsprout[] = INCBIN_U8("graphics/pokemon/back_pics/bellsprout_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Bellsprout[] = INCBIN_U8("graphics/pokemon/palettes/bellsprout_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/front_pics/bellsprout_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/palettes/bellsprout_palette.gbapal.lz");
+const u32 gMonBackPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/back_pics/bellsprout_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/palettes/bellsprout_shiny_palette.gbapal.lz");
const u8 gMonIcon_Bellsprout[] = INCBIN_U8("graphics/pokemon/icons/bellsprout_icon.4bpp");
const u8 gMonFootprint_Bellsprout[] = INCBIN_U8("graphics/pokemon/footprints/bellsprout_footprint.1bpp");
-const u8 gMonStillFrontPic_Weepinbell[] = INCBIN_U8("graphics/pokemon/front_pics/weepinbell_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Weepinbell[] = INCBIN_U8("graphics/pokemon/palettes/weepinbell_palette.gbapal.lz");
-const u8 gMonBackPic_Weepinbell[] = INCBIN_U8("graphics/pokemon/back_pics/weepinbell_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Weepinbell[] = INCBIN_U8("graphics/pokemon/palettes/weepinbell_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/front_pics/weepinbell_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/palettes/weepinbell_palette.gbapal.lz");
+const u32 gMonBackPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/back_pics/weepinbell_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/palettes/weepinbell_shiny_palette.gbapal.lz");
const u8 gMonIcon_Weepinbell[] = INCBIN_U8("graphics/pokemon/icons/weepinbell_icon.4bpp");
const u8 gMonFootprint_Weepinbell[] = INCBIN_U8("graphics/pokemon/footprints/weepinbell_footprint.1bpp");
-const u8 gMonStillFrontPic_Victreebel[] = INCBIN_U8("graphics/pokemon/front_pics/victreebel_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Victreebel[] = INCBIN_U8("graphics/pokemon/palettes/victreebel_palette.gbapal.lz");
-const u8 gMonBackPic_Victreebel[] = INCBIN_U8("graphics/pokemon/back_pics/victreebel_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Victreebel[] = INCBIN_U8("graphics/pokemon/palettes/victreebel_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Victreebel[] = INCBIN_U32("graphics/pokemon/front_pics/victreebel_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/palettes/victreebel_palette.gbapal.lz");
+const u32 gMonBackPic_Victreebel[] = INCBIN_U32("graphics/pokemon/back_pics/victreebel_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/palettes/victreebel_shiny_palette.gbapal.lz");
const u8 gMonIcon_Victreebel[] = INCBIN_U8("graphics/pokemon/icons/victreebel_icon.4bpp");
const u8 gMonFootprint_Victreebel[] = INCBIN_U8("graphics/pokemon/footprints/victreebel_footprint.1bpp");
-const u8 gMonStillFrontPic_Tentacool[] = INCBIN_U8("graphics/pokemon/front_pics/tentacool_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Tentacool[] = INCBIN_U8("graphics/pokemon/palettes/tentacool_palette.gbapal.lz");
-const u8 gMonBackPic_Tentacool[] = INCBIN_U8("graphics/pokemon/back_pics/tentacool_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Tentacool[] = INCBIN_U8("graphics/pokemon/palettes/tentacool_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Tentacool[] = INCBIN_U32("graphics/pokemon/front_pics/tentacool_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/palettes/tentacool_palette.gbapal.lz");
+const u32 gMonBackPic_Tentacool[] = INCBIN_U32("graphics/pokemon/back_pics/tentacool_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/palettes/tentacool_shiny_palette.gbapal.lz");
const u8 gMonIcon_Tentacool[] = INCBIN_U8("graphics/pokemon/icons/tentacool_icon.4bpp");
const u8 gMonFootprint_Tentacool[] = INCBIN_U8("graphics/pokemon/footprints/tentacool_footprint.1bpp");
-const u8 gMonStillFrontPic_Tentacruel[] = INCBIN_U8("graphics/pokemon/front_pics/tentacruel_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Tentacruel[] = INCBIN_U8("graphics/pokemon/palettes/tentacruel_palette.gbapal.lz");
-const u8 gMonBackPic_Tentacruel[] = INCBIN_U8("graphics/pokemon/back_pics/tentacruel_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Tentacruel[] = INCBIN_U8("graphics/pokemon/palettes/tentacruel_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/front_pics/tentacruel_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/palettes/tentacruel_palette.gbapal.lz");
+const u32 gMonBackPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/back_pics/tentacruel_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/palettes/tentacruel_shiny_palette.gbapal.lz");
const u8 gMonIcon_Tentacruel[] = INCBIN_U8("graphics/pokemon/icons/tentacruel_icon.4bpp");
const u8 gMonFootprint_Tentacruel[] = INCBIN_U8("graphics/pokemon/footprints/tentacruel_footprint.1bpp");
-const u8 gMonStillFrontPic_Geodude[] = INCBIN_U8("graphics/pokemon/front_pics/geodude_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Geodude[] = INCBIN_U8("graphics/pokemon/palettes/geodude_palette.gbapal.lz");
-const u8 gMonBackPic_Geodude[] = INCBIN_U8("graphics/pokemon/back_pics/geodude_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Geodude[] = INCBIN_U8("graphics/pokemon/palettes/geodude_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Geodude[] = INCBIN_U32("graphics/pokemon/front_pics/geodude_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Geodude[] = INCBIN_U32("graphics/pokemon/palettes/geodude_palette.gbapal.lz");
+const u32 gMonBackPic_Geodude[] = INCBIN_U32("graphics/pokemon/back_pics/geodude_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Geodude[] = INCBIN_U32("graphics/pokemon/palettes/geodude_shiny_palette.gbapal.lz");
const u8 gMonIcon_Geodude[] = INCBIN_U8("graphics/pokemon/icons/geodude_icon.4bpp");
const u8 gMonFootprint_Geodude[] = INCBIN_U8("graphics/pokemon/footprints/geodude_footprint.1bpp");
-const u8 gMonStillFrontPic_Graveler[] = INCBIN_U8("graphics/pokemon/front_pics/graveler_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Graveler[] = INCBIN_U8("graphics/pokemon/palettes/graveler_palette.gbapal.lz");
-const u8 gMonBackPic_Graveler[] = INCBIN_U8("graphics/pokemon/back_pics/graveler_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Graveler[] = INCBIN_U8("graphics/pokemon/palettes/graveler_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Graveler[] = INCBIN_U32("graphics/pokemon/front_pics/graveler_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Graveler[] = INCBIN_U32("graphics/pokemon/palettes/graveler_palette.gbapal.lz");
+const u32 gMonBackPic_Graveler[] = INCBIN_U32("graphics/pokemon/back_pics/graveler_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Graveler[] = INCBIN_U32("graphics/pokemon/palettes/graveler_shiny_palette.gbapal.lz");
const u8 gMonIcon_Graveler[] = INCBIN_U8("graphics/pokemon/icons/graveler_icon.4bpp");
const u8 gMonFootprint_Graveler[] = INCBIN_U8("graphics/pokemon/footprints/graveler_footprint.1bpp");
-const u8 gMonStillFrontPic_Golem[] = INCBIN_U8("graphics/pokemon/front_pics/golem_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Golem[] = INCBIN_U8("graphics/pokemon/palettes/golem_palette.gbapal.lz");
-const u8 gMonBackPic_Golem[] = INCBIN_U8("graphics/pokemon/back_pics/golem_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Golem[] = INCBIN_U8("graphics/pokemon/palettes/golem_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Golem[] = INCBIN_U32("graphics/pokemon/front_pics/golem_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Golem[] = INCBIN_U32("graphics/pokemon/palettes/golem_palette.gbapal.lz");
+const u32 gMonBackPic_Golem[] = INCBIN_U32("graphics/pokemon/back_pics/golem_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Golem[] = INCBIN_U32("graphics/pokemon/palettes/golem_shiny_palette.gbapal.lz");
const u8 gMonIcon_Golem[] = INCBIN_U8("graphics/pokemon/icons/golem_icon.4bpp");
const u8 gMonFootprint_Golem[] = INCBIN_U8("graphics/pokemon/footprints/golem_footprint.1bpp");
-const u8 gMonStillFrontPic_Ponyta[] = INCBIN_U8("graphics/pokemon/front_pics/ponyta_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ponyta[] = INCBIN_U8("graphics/pokemon/palettes/ponyta_palette.gbapal.lz");
-const u8 gMonBackPic_Ponyta[] = INCBIN_U8("graphics/pokemon/back_pics/ponyta_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ponyta[] = INCBIN_U8("graphics/pokemon/palettes/ponyta_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ponyta[] = INCBIN_U32("graphics/pokemon/front_pics/ponyta_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/palettes/ponyta_palette.gbapal.lz");
+const u32 gMonBackPic_Ponyta[] = INCBIN_U32("graphics/pokemon/back_pics/ponyta_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/palettes/ponyta_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ponyta[] = INCBIN_U8("graphics/pokemon/icons/ponyta_icon.4bpp");
const u8 gMonFootprint_Ponyta[] = INCBIN_U8("graphics/pokemon/footprints/ponyta_footprint.1bpp");
-const u8 gMonStillFrontPic_Rapidash[] = INCBIN_U8("graphics/pokemon/front_pics/rapidash_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Rapidash[] = INCBIN_U8("graphics/pokemon/palettes/rapidash_palette.gbapal.lz");
-const u8 gMonBackPic_Rapidash[] = INCBIN_U8("graphics/pokemon/back_pics/rapidash_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Rapidash[] = INCBIN_U8("graphics/pokemon/palettes/rapidash_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Rapidash[] = INCBIN_U32("graphics/pokemon/front_pics/rapidash_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/palettes/rapidash_palette.gbapal.lz");
+const u32 gMonBackPic_Rapidash[] = INCBIN_U32("graphics/pokemon/back_pics/rapidash_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/palettes/rapidash_shiny_palette.gbapal.lz");
const u8 gMonIcon_Rapidash[] = INCBIN_U8("graphics/pokemon/icons/rapidash_icon.4bpp");
const u8 gMonFootprint_Rapidash[] = INCBIN_U8("graphics/pokemon/footprints/rapidash_footprint.1bpp");
-const u8 gMonStillFrontPic_Slowpoke[] = INCBIN_U8("graphics/pokemon/front_pics/slowpoke_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Slowpoke[] = INCBIN_U8("graphics/pokemon/palettes/slowpoke_palette.gbapal.lz");
-const u8 gMonBackPic_Slowpoke[] = INCBIN_U8("graphics/pokemon/back_pics/slowpoke_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Slowpoke[] = INCBIN_U8("graphics/pokemon/palettes/slowpoke_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/front_pics/slowpoke_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/palettes/slowpoke_palette.gbapal.lz");
+const u32 gMonBackPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/back_pics/slowpoke_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/palettes/slowpoke_shiny_palette.gbapal.lz");
const u8 gMonIcon_Slowpoke[] = INCBIN_U8("graphics/pokemon/icons/slowpoke_icon.4bpp");
const u8 gMonFootprint_Slowpoke[] = INCBIN_U8("graphics/pokemon/footprints/slowpoke_footprint.1bpp");
-const u8 gMonStillFrontPic_Slowbro[] = INCBIN_U8("graphics/pokemon/front_pics/slowbro_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Slowbro[] = INCBIN_U8("graphics/pokemon/palettes/slowbro_palette.gbapal.lz");
-const u8 gMonBackPic_Slowbro[] = INCBIN_U8("graphics/pokemon/back_pics/slowbro_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Slowbro[] = INCBIN_U8("graphics/pokemon/palettes/slowbro_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Slowbro[] = INCBIN_U32("graphics/pokemon/front_pics/slowbro_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/palettes/slowbro_palette.gbapal.lz");
+const u32 gMonBackPic_Slowbro[] = INCBIN_U32("graphics/pokemon/back_pics/slowbro_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/palettes/slowbro_shiny_palette.gbapal.lz");
const u8 gMonIcon_Slowbro[] = INCBIN_U8("graphics/pokemon/icons/slowbro_icon.4bpp");
const u8 gMonFootprint_Slowbro[] = INCBIN_U8("graphics/pokemon/footprints/slowbro_footprint.1bpp");
-const u8 gMonStillFrontPic_Magnemite[] = INCBIN_U8("graphics/pokemon/front_pics/magnemite_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Magnemite[] = INCBIN_U8("graphics/pokemon/palettes/magnemite_palette.gbapal.lz");
-const u8 gMonBackPic_Magnemite[] = INCBIN_U8("graphics/pokemon/back_pics/magnemite_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Magnemite[] = INCBIN_U8("graphics/pokemon/palettes/magnemite_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Magnemite[] = INCBIN_U32("graphics/pokemon/front_pics/magnemite_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/palettes/magnemite_palette.gbapal.lz");
+const u32 gMonBackPic_Magnemite[] = INCBIN_U32("graphics/pokemon/back_pics/magnemite_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/palettes/magnemite_shiny_palette.gbapal.lz");
const u8 gMonIcon_Magnemite[] = INCBIN_U8("graphics/pokemon/icons/magnemite_icon.4bpp");
const u8 gMonFootprint_Magnemite[] = INCBIN_U8("graphics/pokemon/footprints/magnemite_footprint.1bpp");
-const u8 gMonStillFrontPic_Magneton[] = INCBIN_U8("graphics/pokemon/front_pics/magneton_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Magneton[] = INCBIN_U8("graphics/pokemon/palettes/magneton_palette.gbapal.lz");
-const u8 gMonBackPic_Magneton[] = INCBIN_U8("graphics/pokemon/back_pics/magneton_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Magneton[] = INCBIN_U8("graphics/pokemon/palettes/magneton_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Magneton[] = INCBIN_U32("graphics/pokemon/front_pics/magneton_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Magneton[] = INCBIN_U32("graphics/pokemon/palettes/magneton_palette.gbapal.lz");
+const u32 gMonBackPic_Magneton[] = INCBIN_U32("graphics/pokemon/back_pics/magneton_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Magneton[] = INCBIN_U32("graphics/pokemon/palettes/magneton_shiny_palette.gbapal.lz");
const u8 gMonIcon_Magneton[] = INCBIN_U8("graphics/pokemon/icons/magneton_icon.4bpp");
const u8 gMonFootprint_Magneton[] = INCBIN_U8("graphics/pokemon/footprints/magneton_footprint.1bpp");
-const u8 gMonStillFrontPic_Farfetchd[] = INCBIN_U8("graphics/pokemon/front_pics/farfetch_d_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Farfetchd[] = INCBIN_U8("graphics/pokemon/palettes/farfetch_d_palette.gbapal.lz");
-const u8 gMonBackPic_Farfetchd[] = INCBIN_U8("graphics/pokemon/back_pics/farfetch_d_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Farfetchd[] = INCBIN_U8("graphics/pokemon/palettes/farfetch_d_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/front_pics/farfetch_d_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/palettes/farfetch_d_palette.gbapal.lz");
+const u32 gMonBackPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/back_pics/farfetch_d_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/palettes/farfetch_d_shiny_palette.gbapal.lz");
const u8 gMonIcon_Farfetchd[] = INCBIN_U8("graphics/pokemon/icons/farfetch_d_icon.4bpp");
const u8 gMonFootprint_Farfetchd[] = INCBIN_U8("graphics/pokemon/footprints/farfetch_d_footprint.1bpp");
-const u8 gMonStillFrontPic_Doduo[] = INCBIN_U8("graphics/pokemon/front_pics/doduo_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Doduo[] = INCBIN_U8("graphics/pokemon/palettes/doduo_palette.gbapal.lz");
-const u8 gMonBackPic_Doduo[] = INCBIN_U8("graphics/pokemon/back_pics/doduo_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Doduo[] = INCBIN_U8("graphics/pokemon/palettes/doduo_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Doduo[] = INCBIN_U32("graphics/pokemon/front_pics/doduo_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Doduo[] = INCBIN_U32("graphics/pokemon/palettes/doduo_palette.gbapal.lz");
+const u32 gMonBackPic_Doduo[] = INCBIN_U32("graphics/pokemon/back_pics/doduo_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Doduo[] = INCBIN_U32("graphics/pokemon/palettes/doduo_shiny_palette.gbapal.lz");
const u8 gMonIcon_Doduo[] = INCBIN_U8("graphics/pokemon/icons/doduo_icon.4bpp");
const u8 gMonFootprint_Doduo[] = INCBIN_U8("graphics/pokemon/footprints/doduo_footprint.1bpp");
-const u8 gMonStillFrontPic_Dodrio[] = INCBIN_U8("graphics/pokemon/front_pics/dodrio_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Dodrio[] = INCBIN_U8("graphics/pokemon/palettes/dodrio_palette.gbapal.lz");
-const u8 gMonBackPic_Dodrio[] = INCBIN_U8("graphics/pokemon/back_pics/dodrio_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Dodrio[] = INCBIN_U8("graphics/pokemon/palettes/dodrio_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Dodrio[] = INCBIN_U32("graphics/pokemon/front_pics/dodrio_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/palettes/dodrio_palette.gbapal.lz");
+const u32 gMonBackPic_Dodrio[] = INCBIN_U32("graphics/pokemon/back_pics/dodrio_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/palettes/dodrio_shiny_palette.gbapal.lz");
const u8 gMonIcon_Dodrio[] = INCBIN_U8("graphics/pokemon/icons/dodrio_icon.4bpp");
const u8 gMonFootprint_Dodrio[] = INCBIN_U8("graphics/pokemon/footprints/dodrio_footprint.1bpp");
-const u8 gMonStillFrontPic_Seel[] = INCBIN_U8("graphics/pokemon/front_pics/seel_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Seel[] = INCBIN_U8("graphics/pokemon/palettes/seel_palette.gbapal.lz");
-const u8 gMonBackPic_Seel[] = INCBIN_U8("graphics/pokemon/back_pics/seel_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Seel[] = INCBIN_U8("graphics/pokemon/palettes/seel_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Seel[] = INCBIN_U32("graphics/pokemon/front_pics/seel_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Seel[] = INCBIN_U32("graphics/pokemon/palettes/seel_palette.gbapal.lz");
+const u32 gMonBackPic_Seel[] = INCBIN_U32("graphics/pokemon/back_pics/seel_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Seel[] = INCBIN_U32("graphics/pokemon/palettes/seel_shiny_palette.gbapal.lz");
const u8 gMonIcon_Seel[] = INCBIN_U8("graphics/pokemon/icons/seel_icon.4bpp");
const u8 gMonFootprint_Seel[] = INCBIN_U8("graphics/pokemon/footprints/seel_footprint.1bpp");
-const u8 gMonStillFrontPic_Dewgong[] = INCBIN_U8("graphics/pokemon/front_pics/dewgong_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Dewgong[] = INCBIN_U8("graphics/pokemon/palettes/dewgong_palette.gbapal.lz");
-const u8 gMonBackPic_Dewgong[] = INCBIN_U8("graphics/pokemon/back_pics/dewgong_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Dewgong[] = INCBIN_U8("graphics/pokemon/palettes/dewgong_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Dewgong[] = INCBIN_U32("graphics/pokemon/front_pics/dewgong_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/palettes/dewgong_palette.gbapal.lz");
+const u32 gMonBackPic_Dewgong[] = INCBIN_U32("graphics/pokemon/back_pics/dewgong_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/palettes/dewgong_shiny_palette.gbapal.lz");
const u8 gMonIcon_Dewgong[] = INCBIN_U8("graphics/pokemon/icons/dewgong_icon.4bpp");
const u8 gMonFootprint_Dewgong[] = INCBIN_U8("graphics/pokemon/footprints/dewgong_footprint.1bpp");
-const u8 gMonStillFrontPic_Grimer[] = INCBIN_U8("graphics/pokemon/front_pics/grimer_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Grimer[] = INCBIN_U8("graphics/pokemon/palettes/grimer_palette.gbapal.lz");
-const u8 gMonBackPic_Grimer[] = INCBIN_U8("graphics/pokemon/back_pics/grimer_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Grimer[] = INCBIN_U8("graphics/pokemon/palettes/grimer_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Grimer[] = INCBIN_U32("graphics/pokemon/front_pics/grimer_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Grimer[] = INCBIN_U32("graphics/pokemon/palettes/grimer_palette.gbapal.lz");
+const u32 gMonBackPic_Grimer[] = INCBIN_U32("graphics/pokemon/back_pics/grimer_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Grimer[] = INCBIN_U32("graphics/pokemon/palettes/grimer_shiny_palette.gbapal.lz");
const u8 gMonIcon_Grimer[] = INCBIN_U8("graphics/pokemon/icons/grimer_icon.4bpp");
const u8 gMonFootprint_Grimer[] = INCBIN_U8("graphics/pokemon/footprints/grimer_footprint.1bpp");
-const u8 gMonStillFrontPic_Muk[] = INCBIN_U8("graphics/pokemon/front_pics/muk_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Muk[] = INCBIN_U8("graphics/pokemon/palettes/muk_palette.gbapal.lz");
-const u8 gMonBackPic_Muk[] = INCBIN_U8("graphics/pokemon/back_pics/muk_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Muk[] = INCBIN_U8("graphics/pokemon/palettes/muk_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Muk[] = INCBIN_U32("graphics/pokemon/front_pics/muk_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Muk[] = INCBIN_U32("graphics/pokemon/palettes/muk_palette.gbapal.lz");
+const u32 gMonBackPic_Muk[] = INCBIN_U32("graphics/pokemon/back_pics/muk_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Muk[] = INCBIN_U32("graphics/pokemon/palettes/muk_shiny_palette.gbapal.lz");
const u8 gMonIcon_Muk[] = INCBIN_U8("graphics/pokemon/icons/muk_icon.4bpp");
const u8 gMonFootprint_Muk[] = INCBIN_U8("graphics/pokemon/footprints/muk_footprint.1bpp");
-const u8 gMonStillFrontPic_Shellder[] = INCBIN_U8("graphics/pokemon/front_pics/shellder_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Shellder[] = INCBIN_U8("graphics/pokemon/palettes/shellder_palette.gbapal.lz");
-const u8 gMonBackPic_Shellder[] = INCBIN_U8("graphics/pokemon/back_pics/shellder_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Shellder[] = INCBIN_U8("graphics/pokemon/palettes/shellder_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Shellder[] = INCBIN_U32("graphics/pokemon/front_pics/shellder_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Shellder[] = INCBIN_U32("graphics/pokemon/palettes/shellder_palette.gbapal.lz");
+const u32 gMonBackPic_Shellder[] = INCBIN_U32("graphics/pokemon/back_pics/shellder_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Shellder[] = INCBIN_U32("graphics/pokemon/palettes/shellder_shiny_palette.gbapal.lz");
const u8 gMonIcon_Shellder[] = INCBIN_U8("graphics/pokemon/icons/shellder_icon.4bpp");
const u8 gMonFootprint_Shellder[] = INCBIN_U8("graphics/pokemon/footprints/shellder_footprint.1bpp");
-const u8 gMonStillFrontPic_Cloyster[] = INCBIN_U8("graphics/pokemon/front_pics/cloyster_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Cloyster[] = INCBIN_U8("graphics/pokemon/palettes/cloyster_palette.gbapal.lz");
-const u8 gMonBackPic_Cloyster[] = INCBIN_U8("graphics/pokemon/back_pics/cloyster_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Cloyster[] = INCBIN_U8("graphics/pokemon/palettes/cloyster_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Cloyster[] = INCBIN_U32("graphics/pokemon/front_pics/cloyster_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/palettes/cloyster_palette.gbapal.lz");
+const u32 gMonBackPic_Cloyster[] = INCBIN_U32("graphics/pokemon/back_pics/cloyster_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/palettes/cloyster_shiny_palette.gbapal.lz");
const u8 gMonIcon_Cloyster[] = INCBIN_U8("graphics/pokemon/icons/cloyster_icon.4bpp");
const u8 gMonFootprint_Cloyster[] = INCBIN_U8("graphics/pokemon/footprints/cloyster_footprint.1bpp");
-const u8 gMonStillFrontPic_Gastly[] = INCBIN_U8("graphics/pokemon/front_pics/gastly_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Gastly[] = INCBIN_U8("graphics/pokemon/palettes/gastly_palette.gbapal.lz");
-const u8 gMonBackPic_Gastly[] = INCBIN_U8("graphics/pokemon/back_pics/gastly_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Gastly[] = INCBIN_U8("graphics/pokemon/palettes/gastly_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Gastly[] = INCBIN_U32("graphics/pokemon/front_pics/gastly_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Gastly[] = INCBIN_U32("graphics/pokemon/palettes/gastly_palette.gbapal.lz");
+const u32 gMonBackPic_Gastly[] = INCBIN_U32("graphics/pokemon/back_pics/gastly_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Gastly[] = INCBIN_U32("graphics/pokemon/palettes/gastly_shiny_palette.gbapal.lz");
const u8 gMonIcon_Gastly[] = INCBIN_U8("graphics/pokemon/icons/gastly_icon.4bpp");
const u8 gMonFootprint_Gastly[] = INCBIN_U8("graphics/pokemon/footprints/gastly_footprint.1bpp");
-const u8 gMonStillFrontPic_Haunter[] = INCBIN_U8("graphics/pokemon/front_pics/haunter_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Haunter[] = INCBIN_U8("graphics/pokemon/palettes/haunter_palette.gbapal.lz");
-const u8 gMonBackPic_Haunter[] = INCBIN_U8("graphics/pokemon/back_pics/haunter_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Haunter[] = INCBIN_U8("graphics/pokemon/palettes/haunter_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Haunter[] = INCBIN_U32("graphics/pokemon/front_pics/haunter_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Haunter[] = INCBIN_U32("graphics/pokemon/palettes/haunter_palette.gbapal.lz");
+const u32 gMonBackPic_Haunter[] = INCBIN_U32("graphics/pokemon/back_pics/haunter_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Haunter[] = INCBIN_U32("graphics/pokemon/palettes/haunter_shiny_palette.gbapal.lz");
const u8 gMonIcon_Haunter[] = INCBIN_U8("graphics/pokemon/icons/haunter_icon.4bpp");
const u8 gMonFootprint_Haunter[] = INCBIN_U8("graphics/pokemon/footprints/haunter_footprint.1bpp");
-const u8 gMonStillFrontPic_Gengar[] = INCBIN_U8("graphics/pokemon/front_pics/gengar_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Gengar[] = INCBIN_U8("graphics/pokemon/palettes/gengar_palette.gbapal.lz");
-const u8 gMonBackPic_Gengar[] = INCBIN_U8("graphics/pokemon/back_pics/gengar_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Gengar[] = INCBIN_U8("graphics/pokemon/palettes/gengar_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Gengar[] = INCBIN_U32("graphics/pokemon/front_pics/gengar_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Gengar[] = INCBIN_U32("graphics/pokemon/palettes/gengar_palette.gbapal.lz");
+const u32 gMonBackPic_Gengar[] = INCBIN_U32("graphics/pokemon/back_pics/gengar_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Gengar[] = INCBIN_U32("graphics/pokemon/palettes/gengar_shiny_palette.gbapal.lz");
const u8 gMonIcon_Gengar[] = INCBIN_U8("graphics/pokemon/icons/gengar_icon.4bpp");
const u8 gMonFootprint_Gengar[] = INCBIN_U8("graphics/pokemon/footprints/gengar_footprint.1bpp");
-const u8 gMonStillFrontPic_Onix[] = INCBIN_U8("graphics/pokemon/front_pics/onix_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Onix[] = INCBIN_U8("graphics/pokemon/palettes/onix_palette.gbapal.lz");
-const u8 gMonBackPic_Onix[] = INCBIN_U8("graphics/pokemon/back_pics/onix_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Onix[] = INCBIN_U8("graphics/pokemon/palettes/onix_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Onix[] = INCBIN_U32("graphics/pokemon/front_pics/onix_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Onix[] = INCBIN_U32("graphics/pokemon/palettes/onix_palette.gbapal.lz");
+const u32 gMonBackPic_Onix[] = INCBIN_U32("graphics/pokemon/back_pics/onix_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Onix[] = INCBIN_U32("graphics/pokemon/palettes/onix_shiny_palette.gbapal.lz");
const u8 gMonIcon_Onix[] = INCBIN_U8("graphics/pokemon/icons/onix_icon.4bpp");
const u8 gMonFootprint_Onix[] = INCBIN_U8("graphics/pokemon/footprints/onix_footprint.1bpp");
-const u8 gMonStillFrontPic_Drowzee[] = INCBIN_U8("graphics/pokemon/front_pics/drowzee_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Drowzee[] = INCBIN_U8("graphics/pokemon/palettes/drowzee_palette.gbapal.lz");
-const u8 gMonBackPic_Drowzee[] = INCBIN_U8("graphics/pokemon/back_pics/drowzee_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Drowzee[] = INCBIN_U8("graphics/pokemon/palettes/drowzee_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Drowzee[] = INCBIN_U32("graphics/pokemon/front_pics/drowzee_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/palettes/drowzee_palette.gbapal.lz");
+const u32 gMonBackPic_Drowzee[] = INCBIN_U32("graphics/pokemon/back_pics/drowzee_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/palettes/drowzee_shiny_palette.gbapal.lz");
const u8 gMonIcon_Drowzee[] = INCBIN_U8("graphics/pokemon/icons/drowzee_icon.4bpp");
const u8 gMonFootprint_Drowzee[] = INCBIN_U8("graphics/pokemon/footprints/drowzee_footprint.1bpp");
-const u8 gMonStillFrontPic_Hypno[] = INCBIN_U8("graphics/pokemon/front_pics/hypno_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Hypno[] = INCBIN_U8("graphics/pokemon/palettes/hypno_palette.gbapal.lz");
-const u8 gMonBackPic_Hypno[] = INCBIN_U8("graphics/pokemon/back_pics/hypno_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Hypno[] = INCBIN_U8("graphics/pokemon/palettes/hypno_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Hypno[] = INCBIN_U32("graphics/pokemon/front_pics/hypno_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Hypno[] = INCBIN_U32("graphics/pokemon/palettes/hypno_palette.gbapal.lz");
+const u32 gMonBackPic_Hypno[] = INCBIN_U32("graphics/pokemon/back_pics/hypno_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Hypno[] = INCBIN_U32("graphics/pokemon/palettes/hypno_shiny_palette.gbapal.lz");
const u8 gMonIcon_Hypno[] = INCBIN_U8("graphics/pokemon/icons/hypno_icon.4bpp");
const u8 gMonFootprint_Hypno[] = INCBIN_U8("graphics/pokemon/footprints/hypno_footprint.1bpp");
-const u8 gMonStillFrontPic_Krabby[] = INCBIN_U8("graphics/pokemon/front_pics/krabby_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Krabby[] = INCBIN_U8("graphics/pokemon/palettes/krabby_palette.gbapal.lz");
-const u8 gMonBackPic_Krabby[] = INCBIN_U8("graphics/pokemon/back_pics/krabby_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Krabby[] = INCBIN_U8("graphics/pokemon/palettes/krabby_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Krabby[] = INCBIN_U32("graphics/pokemon/front_pics/krabby_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Krabby[] = INCBIN_U32("graphics/pokemon/palettes/krabby_palette.gbapal.lz");
+const u32 gMonBackPic_Krabby[] = INCBIN_U32("graphics/pokemon/back_pics/krabby_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Krabby[] = INCBIN_U32("graphics/pokemon/palettes/krabby_shiny_palette.gbapal.lz");
const u8 gMonIcon_Krabby[] = INCBIN_U8("graphics/pokemon/icons/krabby_icon.4bpp");
const u8 gMonFootprint_Krabby[] = INCBIN_U8("graphics/pokemon/footprints/krabby_footprint.1bpp");
-const u8 gMonStillFrontPic_Kingler[] = INCBIN_U8("graphics/pokemon/front_pics/kingler_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Kingler[] = INCBIN_U8("graphics/pokemon/palettes/kingler_palette.gbapal.lz");
-const u8 gMonBackPic_Kingler[] = INCBIN_U8("graphics/pokemon/back_pics/kingler_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Kingler[] = INCBIN_U8("graphics/pokemon/palettes/kingler_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Kingler[] = INCBIN_U32("graphics/pokemon/front_pics/kingler_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Kingler[] = INCBIN_U32("graphics/pokemon/palettes/kingler_palette.gbapal.lz");
+const u32 gMonBackPic_Kingler[] = INCBIN_U32("graphics/pokemon/back_pics/kingler_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Kingler[] = INCBIN_U32("graphics/pokemon/palettes/kingler_shiny_palette.gbapal.lz");
const u8 gMonIcon_Kingler[] = INCBIN_U8("graphics/pokemon/icons/kingler_icon.4bpp");
const u8 gMonFootprint_Kingler[] = INCBIN_U8("graphics/pokemon/footprints/kingler_footprint.1bpp");
-const u8 gMonStillFrontPic_Voltorb[] = INCBIN_U8("graphics/pokemon/front_pics/voltorb_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Voltorb[] = INCBIN_U8("graphics/pokemon/palettes/voltorb_palette.gbapal.lz");
-const u8 gMonBackPic_Voltorb[] = INCBIN_U8("graphics/pokemon/back_pics/voltorb_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Voltorb[] = INCBIN_U8("graphics/pokemon/palettes/voltorb_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Voltorb[] = INCBIN_U32("graphics/pokemon/front_pics/voltorb_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/palettes/voltorb_palette.gbapal.lz");
+const u32 gMonBackPic_Voltorb[] = INCBIN_U32("graphics/pokemon/back_pics/voltorb_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/palettes/voltorb_shiny_palette.gbapal.lz");
const u8 gMonIcon_Voltorb[] = INCBIN_U8("graphics/pokemon/icons/voltorb_icon.4bpp");
const u8 gMonFootprint_Voltorb[] = INCBIN_U8("graphics/pokemon/footprints/voltorb_footprint.1bpp");
-const u8 gMonStillFrontPic_Electrode[] = INCBIN_U8("graphics/pokemon/front_pics/electrode_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Electrode[] = INCBIN_U8("graphics/pokemon/palettes/electrode_palette.gbapal.lz");
-const u8 gMonBackPic_Electrode[] = INCBIN_U8("graphics/pokemon/back_pics/electrode_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Electrode[] = INCBIN_U8("graphics/pokemon/palettes/electrode_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Electrode[] = INCBIN_U32("graphics/pokemon/front_pics/electrode_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Electrode[] = INCBIN_U32("graphics/pokemon/palettes/electrode_palette.gbapal.lz");
+const u32 gMonBackPic_Electrode[] = INCBIN_U32("graphics/pokemon/back_pics/electrode_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Electrode[] = INCBIN_U32("graphics/pokemon/palettes/electrode_shiny_palette.gbapal.lz");
const u8 gMonIcon_Electrode[] = INCBIN_U8("graphics/pokemon/icons/electrode_icon.4bpp");
const u8 gMonFootprint_Electrode[] = INCBIN_U8("graphics/pokemon/footprints/electrode_footprint.1bpp");
-const u8 gMonStillFrontPic_Exeggcute[] = INCBIN_U8("graphics/pokemon/front_pics/exeggcute_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Exeggcute[] = INCBIN_U8("graphics/pokemon/palettes/exeggcute_palette.gbapal.lz");
-const u8 gMonBackPic_Exeggcute[] = INCBIN_U8("graphics/pokemon/back_pics/exeggcute_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Exeggcute[] = INCBIN_U8("graphics/pokemon/palettes/exeggcute_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/front_pics/exeggcute_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/palettes/exeggcute_palette.gbapal.lz");
+const u32 gMonBackPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/back_pics/exeggcute_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/palettes/exeggcute_shiny_palette.gbapal.lz");
const u8 gMonIcon_Exeggcute[] = INCBIN_U8("graphics/pokemon/icons/exeggcute_icon.4bpp");
const u8 gMonFootprint_Exeggcute[] = INCBIN_U8("graphics/pokemon/footprints/exeggcute_footprint.1bpp");
-const u8 gMonStillFrontPic_Exeggutor[] = INCBIN_U8("graphics/pokemon/front_pics/exeggutor_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Exeggutor[] = INCBIN_U8("graphics/pokemon/palettes/exeggutor_palette.gbapal.lz");
-const u8 gMonBackPic_Exeggutor[] = INCBIN_U8("graphics/pokemon/back_pics/exeggutor_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Exeggutor[] = INCBIN_U8("graphics/pokemon/palettes/exeggutor_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/front_pics/exeggutor_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/palettes/exeggutor_palette.gbapal.lz");
+const u32 gMonBackPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/back_pics/exeggutor_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/palettes/exeggutor_shiny_palette.gbapal.lz");
const u8 gMonIcon_Exeggutor[] = INCBIN_U8("graphics/pokemon/icons/exeggutor_icon.4bpp");
const u8 gMonFootprint_Exeggutor[] = INCBIN_U8("graphics/pokemon/footprints/exeggutor_footprint.1bpp");
-const u8 gMonStillFrontPic_Cubone[] = INCBIN_U8("graphics/pokemon/front_pics/cubone_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Cubone[] = INCBIN_U8("graphics/pokemon/palettes/cubone_palette.gbapal.lz");
-const u8 gMonBackPic_Cubone[] = INCBIN_U8("graphics/pokemon/back_pics/cubone_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Cubone[] = INCBIN_U8("graphics/pokemon/palettes/cubone_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Cubone[] = INCBIN_U32("graphics/pokemon/front_pics/cubone_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Cubone[] = INCBIN_U32("graphics/pokemon/palettes/cubone_palette.gbapal.lz");
+const u32 gMonBackPic_Cubone[] = INCBIN_U32("graphics/pokemon/back_pics/cubone_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Cubone[] = INCBIN_U32("graphics/pokemon/palettes/cubone_shiny_palette.gbapal.lz");
const u8 gMonIcon_Cubone[] = INCBIN_U8("graphics/pokemon/icons/cubone_icon.4bpp");
const u8 gMonFootprint_Cubone[] = INCBIN_U8("graphics/pokemon/footprints/cubone_footprint.1bpp");
-const u8 gMonStillFrontPic_Marowak[] = INCBIN_U8("graphics/pokemon/front_pics/marowak_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Marowak[] = INCBIN_U8("graphics/pokemon/palettes/marowak_palette.gbapal.lz");
-const u8 gMonBackPic_Marowak[] = INCBIN_U8("graphics/pokemon/back_pics/marowak_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Marowak[] = INCBIN_U8("graphics/pokemon/palettes/marowak_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Marowak[] = INCBIN_U32("graphics/pokemon/front_pics/marowak_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Marowak[] = INCBIN_U32("graphics/pokemon/palettes/marowak_palette.gbapal.lz");
+const u32 gMonBackPic_Marowak[] = INCBIN_U32("graphics/pokemon/back_pics/marowak_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Marowak[] = INCBIN_U32("graphics/pokemon/palettes/marowak_shiny_palette.gbapal.lz");
const u8 gMonIcon_Marowak[] = INCBIN_U8("graphics/pokemon/icons/marowak_icon.4bpp");
const u8 gMonFootprint_Marowak[] = INCBIN_U8("graphics/pokemon/footprints/marowak_footprint.1bpp");
-const u8 gMonStillFrontPic_Hitmonlee[] = INCBIN_U8("graphics/pokemon/front_pics/hitmonlee_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Hitmonlee[] = INCBIN_U8("graphics/pokemon/palettes/hitmonlee_palette.gbapal.lz");
-const u8 gMonBackPic_Hitmonlee[] = INCBIN_U8("graphics/pokemon/back_pics/hitmonlee_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Hitmonlee[] = INCBIN_U8("graphics/pokemon/palettes/hitmonlee_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/front_pics/hitmonlee_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/palettes/hitmonlee_palette.gbapal.lz");
+const u32 gMonBackPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/back_pics/hitmonlee_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/palettes/hitmonlee_shiny_palette.gbapal.lz");
const u8 gMonIcon_Hitmonlee[] = INCBIN_U8("graphics/pokemon/icons/hitmonlee_icon.4bpp");
const u8 gMonFootprint_Hitmonlee[] = INCBIN_U8("graphics/pokemon/footprints/hitmonlee_footprint.1bpp");
-const u8 gMonStillFrontPic_Hitmonchan[] = INCBIN_U8("graphics/pokemon/front_pics/hitmonchan_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Hitmonchan[] = INCBIN_U8("graphics/pokemon/palettes/hitmonchan_palette.gbapal.lz");
-const u8 gMonBackPic_Hitmonchan[] = INCBIN_U8("graphics/pokemon/back_pics/hitmonchan_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Hitmonchan[] = INCBIN_U8("graphics/pokemon/palettes/hitmonchan_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/front_pics/hitmonchan_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/palettes/hitmonchan_palette.gbapal.lz");
+const u32 gMonBackPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/back_pics/hitmonchan_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/palettes/hitmonchan_shiny_palette.gbapal.lz");
const u8 gMonIcon_Hitmonchan[] = INCBIN_U8("graphics/pokemon/icons/hitmonchan_icon.4bpp");
const u8 gMonFootprint_Hitmonchan[] = INCBIN_U8("graphics/pokemon/footprints/hitmonchan_footprint.1bpp");
-const u8 gMonStillFrontPic_Lickitung[] = INCBIN_U8("graphics/pokemon/front_pics/lickitung_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Lickitung[] = INCBIN_U8("graphics/pokemon/palettes/lickitung_palette.gbapal.lz");
-const u8 gMonBackPic_Lickitung[] = INCBIN_U8("graphics/pokemon/back_pics/lickitung_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Lickitung[] = INCBIN_U8("graphics/pokemon/palettes/lickitung_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Lickitung[] = INCBIN_U32("graphics/pokemon/front_pics/lickitung_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/palettes/lickitung_palette.gbapal.lz");
+const u32 gMonBackPic_Lickitung[] = INCBIN_U32("graphics/pokemon/back_pics/lickitung_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/palettes/lickitung_shiny_palette.gbapal.lz");
const u8 gMonIcon_Lickitung[] = INCBIN_U8("graphics/pokemon/icons/lickitung_icon.4bpp");
const u8 gMonFootprint_Lickitung[] = INCBIN_U8("graphics/pokemon/footprints/lickitung_footprint.1bpp");
-const u8 gMonStillFrontPic_Koffing[] = INCBIN_U8("graphics/pokemon/front_pics/koffing_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Koffing[] = INCBIN_U8("graphics/pokemon/palettes/koffing_palette.gbapal.lz");
-const u8 gMonBackPic_Koffing[] = INCBIN_U8("graphics/pokemon/back_pics/koffing_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Koffing[] = INCBIN_U8("graphics/pokemon/palettes/koffing_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Koffing[] = INCBIN_U32("graphics/pokemon/front_pics/koffing_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Koffing[] = INCBIN_U32("graphics/pokemon/palettes/koffing_palette.gbapal.lz");
+const u32 gMonBackPic_Koffing[] = INCBIN_U32("graphics/pokemon/back_pics/koffing_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Koffing[] = INCBIN_U32("graphics/pokemon/palettes/koffing_shiny_palette.gbapal.lz");
const u8 gMonIcon_Koffing[] = INCBIN_U8("graphics/pokemon/icons/koffing_icon.4bpp");
const u8 gMonFootprint_Koffing[] = INCBIN_U8("graphics/pokemon/footprints/koffing_footprint.1bpp");
-const u8 gMonStillFrontPic_Weezing[] = INCBIN_U8("graphics/pokemon/front_pics/weezing_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Weezing[] = INCBIN_U8("graphics/pokemon/palettes/weezing_palette.gbapal.lz");
-const u8 gMonBackPic_Weezing[] = INCBIN_U8("graphics/pokemon/back_pics/weezing_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Weezing[] = INCBIN_U8("graphics/pokemon/palettes/weezing_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Weezing[] = INCBIN_U32("graphics/pokemon/front_pics/weezing_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Weezing[] = INCBIN_U32("graphics/pokemon/palettes/weezing_palette.gbapal.lz");
+const u32 gMonBackPic_Weezing[] = INCBIN_U32("graphics/pokemon/back_pics/weezing_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Weezing[] = INCBIN_U32("graphics/pokemon/palettes/weezing_shiny_palette.gbapal.lz");
const u8 gMonIcon_Weezing[] = INCBIN_U8("graphics/pokemon/icons/weezing_icon.4bpp");
const u8 gMonFootprint_Weezing[] = INCBIN_U8("graphics/pokemon/footprints/weezing_footprint.1bpp");
-const u8 gMonStillFrontPic_Rhyhorn[] = INCBIN_U8("graphics/pokemon/front_pics/rhyhorn_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Rhyhorn[] = INCBIN_U8("graphics/pokemon/palettes/rhyhorn_palette.gbapal.lz");
-const u8 gMonBackPic_Rhyhorn[] = INCBIN_U8("graphics/pokemon/back_pics/rhyhorn_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Rhyhorn[] = INCBIN_U8("graphics/pokemon/palettes/rhyhorn_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/front_pics/rhyhorn_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/palettes/rhyhorn_palette.gbapal.lz");
+const u32 gMonBackPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/back_pics/rhyhorn_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/palettes/rhyhorn_shiny_palette.gbapal.lz");
const u8 gMonIcon_Rhyhorn[] = INCBIN_U8("graphics/pokemon/icons/rhyhorn_icon.4bpp");
const u8 gMonFootprint_Rhyhorn[] = INCBIN_U8("graphics/pokemon/footprints/rhyhorn_footprint.1bpp");
-const u8 gMonStillFrontPic_Rhydon[] = INCBIN_U8("graphics/pokemon/front_pics/rhydon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Rhydon[] = INCBIN_U8("graphics/pokemon/palettes/rhydon_palette.gbapal.lz");
-const u8 gMonBackPic_Rhydon[] = INCBIN_U8("graphics/pokemon/back_pics/rhydon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Rhydon[] = INCBIN_U8("graphics/pokemon/palettes/rhydon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Rhydon[] = INCBIN_U32("graphics/pokemon/front_pics/rhydon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/palettes/rhydon_palette.gbapal.lz");
+const u32 gMonBackPic_Rhydon[] = INCBIN_U32("graphics/pokemon/back_pics/rhydon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/palettes/rhydon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Rhydon[] = INCBIN_U8("graphics/pokemon/icons/rhydon_icon.4bpp");
const u8 gMonFootprint_Rhydon[] = INCBIN_U8("graphics/pokemon/footprints/rhydon_footprint.1bpp");
-const u8 gMonStillFrontPic_Chansey[] = INCBIN_U8("graphics/pokemon/front_pics/chansey_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Chansey[] = INCBIN_U8("graphics/pokemon/palettes/chansey_palette.gbapal.lz");
-const u8 gMonBackPic_Chansey[] = INCBIN_U8("graphics/pokemon/back_pics/chansey_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Chansey[] = INCBIN_U8("graphics/pokemon/palettes/chansey_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Chansey[] = INCBIN_U32("graphics/pokemon/front_pics/chansey_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Chansey[] = INCBIN_U32("graphics/pokemon/palettes/chansey_palette.gbapal.lz");
+const u32 gMonBackPic_Chansey[] = INCBIN_U32("graphics/pokemon/back_pics/chansey_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Chansey[] = INCBIN_U32("graphics/pokemon/palettes/chansey_shiny_palette.gbapal.lz");
const u8 gMonIcon_Chansey[] = INCBIN_U8("graphics/pokemon/icons/chansey_icon.4bpp");
const u8 gMonFootprint_Chansey[] = INCBIN_U8("graphics/pokemon/footprints/chansey_footprint.1bpp");
-const u8 gMonStillFrontPic_Tangela[] = INCBIN_U8("graphics/pokemon/front_pics/tangela_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Tangela[] = INCBIN_U8("graphics/pokemon/palettes/tangela_palette.gbapal.lz");
-const u8 gMonBackPic_Tangela[] = INCBIN_U8("graphics/pokemon/back_pics/tangela_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Tangela[] = INCBIN_U8("graphics/pokemon/palettes/tangela_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Tangela[] = INCBIN_U32("graphics/pokemon/front_pics/tangela_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Tangela[] = INCBIN_U32("graphics/pokemon/palettes/tangela_palette.gbapal.lz");
+const u32 gMonBackPic_Tangela[] = INCBIN_U32("graphics/pokemon/back_pics/tangela_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Tangela[] = INCBIN_U32("graphics/pokemon/palettes/tangela_shiny_palette.gbapal.lz");
const u8 gMonIcon_Tangela[] = INCBIN_U8("graphics/pokemon/icons/tangela_icon.4bpp");
const u8 gMonFootprint_Tangela[] = INCBIN_U8("graphics/pokemon/footprints/tangela_footprint.1bpp");
-const u8 gMonStillFrontPic_Kangaskhan[] = INCBIN_U8("graphics/pokemon/front_pics/kangaskhan_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Kangaskhan[] = INCBIN_U8("graphics/pokemon/palettes/kangaskhan_palette.gbapal.lz");
-const u8 gMonBackPic_Kangaskhan[] = INCBIN_U8("graphics/pokemon/back_pics/kangaskhan_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Kangaskhan[] = INCBIN_U8("graphics/pokemon/palettes/kangaskhan_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/front_pics/kangaskhan_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/palettes/kangaskhan_palette.gbapal.lz");
+const u32 gMonBackPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/back_pics/kangaskhan_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/palettes/kangaskhan_shiny_palette.gbapal.lz");
const u8 gMonIcon_Kangaskhan[] = INCBIN_U8("graphics/pokemon/icons/kangaskhan_icon.4bpp");
const u8 gMonFootprint_Kangaskhan[] = INCBIN_U8("graphics/pokemon/footprints/kangaskhan_footprint.1bpp");
-const u8 gMonStillFrontPic_Horsea[] = INCBIN_U8("graphics/pokemon/front_pics/horsea_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Horsea[] = INCBIN_U8("graphics/pokemon/palettes/horsea_palette.gbapal.lz");
-const u8 gMonBackPic_Horsea[] = INCBIN_U8("graphics/pokemon/back_pics/horsea_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Horsea[] = INCBIN_U8("graphics/pokemon/palettes/horsea_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Horsea[] = INCBIN_U32("graphics/pokemon/front_pics/horsea_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Horsea[] = INCBIN_U32("graphics/pokemon/palettes/horsea_palette.gbapal.lz");
+const u32 gMonBackPic_Horsea[] = INCBIN_U32("graphics/pokemon/back_pics/horsea_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Horsea[] = INCBIN_U32("graphics/pokemon/palettes/horsea_shiny_palette.gbapal.lz");
const u8 gMonIcon_Horsea[] = INCBIN_U8("graphics/pokemon/icons/horsea_icon.4bpp");
const u8 gMonFootprint_Horsea[] = INCBIN_U8("graphics/pokemon/footprints/horsea_footprint.1bpp");
-const u8 gMonStillFrontPic_Seadra[] = INCBIN_U8("graphics/pokemon/front_pics/seadra_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Seadra[] = INCBIN_U8("graphics/pokemon/palettes/seadra_palette.gbapal.lz");
-const u8 gMonBackPic_Seadra[] = INCBIN_U8("graphics/pokemon/back_pics/seadra_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Seadra[] = INCBIN_U8("graphics/pokemon/palettes/seadra_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Seadra[] = INCBIN_U32("graphics/pokemon/front_pics/seadra_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Seadra[] = INCBIN_U32("graphics/pokemon/palettes/seadra_palette.gbapal.lz");
+const u32 gMonBackPic_Seadra[] = INCBIN_U32("graphics/pokemon/back_pics/seadra_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Seadra[] = INCBIN_U32("graphics/pokemon/palettes/seadra_shiny_palette.gbapal.lz");
const u8 gMonIcon_Seadra[] = INCBIN_U8("graphics/pokemon/icons/seadra_icon.4bpp");
const u8 gMonFootprint_Seadra[] = INCBIN_U8("graphics/pokemon/footprints/seadra_footprint.1bpp");
-const u8 gMonStillFrontPic_Goldeen[] = INCBIN_U8("graphics/pokemon/front_pics/goldeen_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Goldeen[] = INCBIN_U8("graphics/pokemon/palettes/goldeen_palette.gbapal.lz");
-const u8 gMonBackPic_Goldeen[] = INCBIN_U8("graphics/pokemon/back_pics/goldeen_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Goldeen[] = INCBIN_U8("graphics/pokemon/palettes/goldeen_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Goldeen[] = INCBIN_U32("graphics/pokemon/front_pics/goldeen_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/palettes/goldeen_palette.gbapal.lz");
+const u32 gMonBackPic_Goldeen[] = INCBIN_U32("graphics/pokemon/back_pics/goldeen_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/palettes/goldeen_shiny_palette.gbapal.lz");
const u8 gMonIcon_Goldeen[] = INCBIN_U8("graphics/pokemon/icons/goldeen_icon.4bpp");
const u8 gMonFootprint_Goldeen[] = INCBIN_U8("graphics/pokemon/footprints/goldeen_footprint.1bpp");
-const u8 gMonStillFrontPic_Seaking[] = INCBIN_U8("graphics/pokemon/front_pics/seaking_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Seaking[] = INCBIN_U8("graphics/pokemon/palettes/seaking_palette.gbapal.lz");
-const u8 gMonBackPic_Seaking[] = INCBIN_U8("graphics/pokemon/back_pics/seaking_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Seaking[] = INCBIN_U8("graphics/pokemon/palettes/seaking_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Seaking[] = INCBIN_U32("graphics/pokemon/front_pics/seaking_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Seaking[] = INCBIN_U32("graphics/pokemon/palettes/seaking_palette.gbapal.lz");
+const u32 gMonBackPic_Seaking[] = INCBIN_U32("graphics/pokemon/back_pics/seaking_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Seaking[] = INCBIN_U32("graphics/pokemon/palettes/seaking_shiny_palette.gbapal.lz");
const u8 gMonIcon_Seaking[] = INCBIN_U8("graphics/pokemon/icons/seaking_icon.4bpp");
const u8 gMonFootprint_Seaking[] = INCBIN_U8("graphics/pokemon/footprints/seaking_footprint.1bpp");
-const u8 gMonStillFrontPic_Staryu[] = INCBIN_U8("graphics/pokemon/front_pics/staryu_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Staryu[] = INCBIN_U8("graphics/pokemon/palettes/staryu_palette.gbapal.lz");
-const u8 gMonBackPic_Staryu[] = INCBIN_U8("graphics/pokemon/back_pics/staryu_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Staryu[] = INCBIN_U8("graphics/pokemon/palettes/staryu_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Staryu[] = INCBIN_U32("graphics/pokemon/front_pics/staryu_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Staryu[] = INCBIN_U32("graphics/pokemon/palettes/staryu_palette.gbapal.lz");
+const u32 gMonBackPic_Staryu[] = INCBIN_U32("graphics/pokemon/back_pics/staryu_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Staryu[] = INCBIN_U32("graphics/pokemon/palettes/staryu_shiny_palette.gbapal.lz");
const u8 gMonIcon_Staryu[] = INCBIN_U8("graphics/pokemon/icons/staryu_icon.4bpp");
const u8 gMonFootprint_Staryu[] = INCBIN_U8("graphics/pokemon/footprints/staryu_footprint.1bpp");
-const u8 gMonStillFrontPic_Starmie[] = INCBIN_U8("graphics/pokemon/front_pics/starmie_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Starmie[] = INCBIN_U8("graphics/pokemon/palettes/starmie_palette.gbapal.lz");
-const u8 gMonBackPic_Starmie[] = INCBIN_U8("graphics/pokemon/back_pics/starmie_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Starmie[] = INCBIN_U8("graphics/pokemon/palettes/starmie_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Starmie[] = INCBIN_U32("graphics/pokemon/front_pics/starmie_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Starmie[] = INCBIN_U32("graphics/pokemon/palettes/starmie_palette.gbapal.lz");
+const u32 gMonBackPic_Starmie[] = INCBIN_U32("graphics/pokemon/back_pics/starmie_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Starmie[] = INCBIN_U32("graphics/pokemon/palettes/starmie_shiny_palette.gbapal.lz");
const u8 gMonIcon_Starmie[] = INCBIN_U8("graphics/pokemon/icons/starmie_icon.4bpp");
const u8 gMonFootprint_Starmie[] = INCBIN_U8("graphics/pokemon/footprints/starmie_footprint.1bpp");
-const u8 gMonStillFrontPic_Mrmime[] = INCBIN_U8("graphics/pokemon/front_pics/mr_mime_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Mrmime[] = INCBIN_U8("graphics/pokemon/palettes/mr_mime_palette.gbapal.lz");
-const u8 gMonBackPic_Mrmime[] = INCBIN_U8("graphics/pokemon/back_pics/mr_mime_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Mrmime[] = INCBIN_U8("graphics/pokemon/palettes/mr_mime_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Mrmime[] = INCBIN_U32("graphics/pokemon/front_pics/mr_mime_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Mrmime[] = INCBIN_U32("graphics/pokemon/palettes/mr_mime_palette.gbapal.lz");
+const u32 gMonBackPic_Mrmime[] = INCBIN_U32("graphics/pokemon/back_pics/mr_mime_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Mrmime[] = INCBIN_U32("graphics/pokemon/palettes/mr_mime_shiny_palette.gbapal.lz");
const u8 gMonIcon_Mrmime[] = INCBIN_U8("graphics/pokemon/icons/mr_mime_icon.4bpp");
const u8 gMonFootprint_Mrmime[] = INCBIN_U8("graphics/pokemon/footprints/mr_mime_footprint.1bpp");
-const u8 gMonStillFrontPic_Scyther[] = INCBIN_U8("graphics/pokemon/front_pics/scyther_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Scyther[] = INCBIN_U8("graphics/pokemon/palettes/scyther_palette.gbapal.lz");
-const u8 gMonBackPic_Scyther[] = INCBIN_U8("graphics/pokemon/back_pics/scyther_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Scyther[] = INCBIN_U8("graphics/pokemon/palettes/scyther_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Scyther[] = INCBIN_U32("graphics/pokemon/front_pics/scyther_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Scyther[] = INCBIN_U32("graphics/pokemon/palettes/scyther_palette.gbapal.lz");
+const u32 gMonBackPic_Scyther[] = INCBIN_U32("graphics/pokemon/back_pics/scyther_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Scyther[] = INCBIN_U32("graphics/pokemon/palettes/scyther_shiny_palette.gbapal.lz");
const u8 gMonIcon_Scyther[] = INCBIN_U8("graphics/pokemon/icons/scyther_icon.4bpp");
const u8 gMonFootprint_Scyther[] = INCBIN_U8("graphics/pokemon/footprints/scyther_footprint.1bpp");
-const u8 gMonStillFrontPic_Jynx[] = INCBIN_U8("graphics/pokemon/front_pics/jynx_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Jynx[] = INCBIN_U8("graphics/pokemon/palettes/jynx_palette.gbapal.lz");
-const u8 gMonBackPic_Jynx[] = INCBIN_U8("graphics/pokemon/back_pics/jynx_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Jynx[] = INCBIN_U8("graphics/pokemon/palettes/jynx_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Jynx[] = INCBIN_U32("graphics/pokemon/front_pics/jynx_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Jynx[] = INCBIN_U32("graphics/pokemon/palettes/jynx_palette.gbapal.lz");
+const u32 gMonBackPic_Jynx[] = INCBIN_U32("graphics/pokemon/back_pics/jynx_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Jynx[] = INCBIN_U32("graphics/pokemon/palettes/jynx_shiny_palette.gbapal.lz");
const u8 gMonIcon_Jynx[] = INCBIN_U8("graphics/pokemon/icons/jynx_icon.4bpp");
const u8 gMonFootprint_Jynx[] = INCBIN_U8("graphics/pokemon/footprints/jynx_footprint.1bpp");
-const u8 gMonStillFrontPic_Electabuzz[] = INCBIN_U8("graphics/pokemon/front_pics/electabuzz_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Electabuzz[] = INCBIN_U8("graphics/pokemon/palettes/electabuzz_palette.gbapal.lz");
-const u8 gMonBackPic_Electabuzz[] = INCBIN_U8("graphics/pokemon/back_pics/electabuzz_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Electabuzz[] = INCBIN_U8("graphics/pokemon/palettes/electabuzz_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/front_pics/electabuzz_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/palettes/electabuzz_palette.gbapal.lz");
+const u32 gMonBackPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/back_pics/electabuzz_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/palettes/electabuzz_shiny_palette.gbapal.lz");
const u8 gMonIcon_Electabuzz[] = INCBIN_U8("graphics/pokemon/icons/electabuzz_icon.4bpp");
const u8 gMonFootprint_Electabuzz[] = INCBIN_U8("graphics/pokemon/footprints/electabuzz_footprint.1bpp");
-const u8 gMonStillFrontPic_Magmar[] = INCBIN_U8("graphics/pokemon/front_pics/magmar_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Magmar[] = INCBIN_U8("graphics/pokemon/palettes/magmar_palette.gbapal.lz");
-const u8 gMonBackPic_Magmar[] = INCBIN_U8("graphics/pokemon/back_pics/magmar_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Magmar[] = INCBIN_U8("graphics/pokemon/palettes/magmar_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Magmar[] = INCBIN_U32("graphics/pokemon/front_pics/magmar_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Magmar[] = INCBIN_U32("graphics/pokemon/palettes/magmar_palette.gbapal.lz");
+const u32 gMonBackPic_Magmar[] = INCBIN_U32("graphics/pokemon/back_pics/magmar_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Magmar[] = INCBIN_U32("graphics/pokemon/palettes/magmar_shiny_palette.gbapal.lz");
const u8 gMonIcon_Magmar[] = INCBIN_U8("graphics/pokemon/icons/magmar_icon.4bpp");
const u8 gMonFootprint_Magmar[] = INCBIN_U8("graphics/pokemon/footprints/magmar_footprint.1bpp");
-const u8 gMonStillFrontPic_Pinsir[] = INCBIN_U8("graphics/pokemon/front_pics/pinsir_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Pinsir[] = INCBIN_U8("graphics/pokemon/palettes/pinsir_palette.gbapal.lz");
-const u8 gMonBackPic_Pinsir[] = INCBIN_U8("graphics/pokemon/back_pics/pinsir_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Pinsir[] = INCBIN_U8("graphics/pokemon/palettes/pinsir_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Pinsir[] = INCBIN_U32("graphics/pokemon/front_pics/pinsir_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/palettes/pinsir_palette.gbapal.lz");
+const u32 gMonBackPic_Pinsir[] = INCBIN_U32("graphics/pokemon/back_pics/pinsir_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/palettes/pinsir_shiny_palette.gbapal.lz");
const u8 gMonIcon_Pinsir[] = INCBIN_U8("graphics/pokemon/icons/pinsir_icon.4bpp");
const u8 gMonFootprint_Pinsir[] = INCBIN_U8("graphics/pokemon/footprints/pinsir_footprint.1bpp");
-const u8 gMonStillFrontPic_Tauros[] = INCBIN_U8("graphics/pokemon/front_pics/tauros_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Tauros[] = INCBIN_U8("graphics/pokemon/palettes/tauros_palette.gbapal.lz");
-const u8 gMonBackPic_Tauros[] = INCBIN_U8("graphics/pokemon/back_pics/tauros_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Tauros[] = INCBIN_U8("graphics/pokemon/palettes/tauros_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Tauros[] = INCBIN_U32("graphics/pokemon/front_pics/tauros_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Tauros[] = INCBIN_U32("graphics/pokemon/palettes/tauros_palette.gbapal.lz");
+const u32 gMonBackPic_Tauros[] = INCBIN_U32("graphics/pokemon/back_pics/tauros_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Tauros[] = INCBIN_U32("graphics/pokemon/palettes/tauros_shiny_palette.gbapal.lz");
const u8 gMonIcon_Tauros[] = INCBIN_U8("graphics/pokemon/icons/tauros_icon.4bpp");
const u8 gMonFootprint_Tauros[] = INCBIN_U8("graphics/pokemon/footprints/tauros_footprint.1bpp");
-const u8 gMonStillFrontPic_Magikarp[] = INCBIN_U8("graphics/pokemon/front_pics/magikarp_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Magikarp[] = INCBIN_U8("graphics/pokemon/palettes/magikarp_palette.gbapal.lz");
-const u8 gMonBackPic_Magikarp[] = INCBIN_U8("graphics/pokemon/back_pics/magikarp_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Magikarp[] = INCBIN_U8("graphics/pokemon/palettes/magikarp_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Magikarp[] = INCBIN_U32("graphics/pokemon/front_pics/magikarp_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/palettes/magikarp_palette.gbapal.lz");
+const u32 gMonBackPic_Magikarp[] = INCBIN_U32("graphics/pokemon/back_pics/magikarp_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/palettes/magikarp_shiny_palette.gbapal.lz");
const u8 gMonIcon_Magikarp[] = INCBIN_U8("graphics/pokemon/icons/magikarp_icon.4bpp");
const u8 gMonFootprint_Magikarp[] = INCBIN_U8("graphics/pokemon/footprints/magikarp_footprint.1bpp");
-const u8 gMonStillFrontPic_Gyarados[] = INCBIN_U8("graphics/pokemon/front_pics/gyarados_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Gyarados[] = INCBIN_U8("graphics/pokemon/palettes/gyarados_palette.gbapal.lz");
-const u8 gMonBackPic_Gyarados[] = INCBIN_U8("graphics/pokemon/back_pics/gyarados_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Gyarados[] = INCBIN_U8("graphics/pokemon/palettes/gyarados_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Gyarados[] = INCBIN_U32("graphics/pokemon/front_pics/gyarados_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/palettes/gyarados_palette.gbapal.lz");
+const u32 gMonBackPic_Gyarados[] = INCBIN_U32("graphics/pokemon/back_pics/gyarados_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/palettes/gyarados_shiny_palette.gbapal.lz");
const u8 gMonIcon_Gyarados[] = INCBIN_U8("graphics/pokemon/icons/gyarados_icon.4bpp");
const u8 gMonFootprint_Gyarados[] = INCBIN_U8("graphics/pokemon/footprints/gyarados_footprint.1bpp");
-const u8 gMonStillFrontPic_Lapras[] = INCBIN_U8("graphics/pokemon/front_pics/lapras_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Lapras[] = INCBIN_U8("graphics/pokemon/palettes/lapras_palette.gbapal.lz");
-const u8 gMonBackPic_Lapras[] = INCBIN_U8("graphics/pokemon/back_pics/lapras_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Lapras[] = INCBIN_U8("graphics/pokemon/palettes/lapras_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Lapras[] = INCBIN_U32("graphics/pokemon/front_pics/lapras_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Lapras[] = INCBIN_U32("graphics/pokemon/palettes/lapras_palette.gbapal.lz");
+const u32 gMonBackPic_Lapras[] = INCBIN_U32("graphics/pokemon/back_pics/lapras_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Lapras[] = INCBIN_U32("graphics/pokemon/palettes/lapras_shiny_palette.gbapal.lz");
const u8 gMonIcon_Lapras[] = INCBIN_U8("graphics/pokemon/icons/lapras_icon.4bpp");
const u8 gMonFootprint_Lapras[] = INCBIN_U8("graphics/pokemon/footprints/lapras_footprint.1bpp");
-const u8 gMonStillFrontPic_Ditto[] = INCBIN_U8("graphics/pokemon/front_pics/ditto_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ditto[] = INCBIN_U8("graphics/pokemon/palettes/ditto_palette.gbapal.lz");
-const u8 gMonBackPic_Ditto[] = INCBIN_U8("graphics/pokemon/back_pics/ditto_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ditto[] = INCBIN_U8("graphics/pokemon/palettes/ditto_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ditto[] = INCBIN_U32("graphics/pokemon/front_pics/ditto_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ditto[] = INCBIN_U32("graphics/pokemon/palettes/ditto_palette.gbapal.lz");
+const u32 gMonBackPic_Ditto[] = INCBIN_U32("graphics/pokemon/back_pics/ditto_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ditto[] = INCBIN_U32("graphics/pokemon/palettes/ditto_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ditto[] = INCBIN_U8("graphics/pokemon/icons/ditto_icon.4bpp");
const u8 gMonFootprint_Ditto[] = INCBIN_U8("graphics/pokemon/footprints/ditto_footprint.1bpp");
-const u8 gMonStillFrontPic_Eevee[] = INCBIN_U8("graphics/pokemon/front_pics/eevee_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Eevee[] = INCBIN_U8("graphics/pokemon/palettes/eevee_palette.gbapal.lz");
-const u8 gMonBackPic_Eevee[] = INCBIN_U8("graphics/pokemon/back_pics/eevee_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Eevee[] = INCBIN_U8("graphics/pokemon/palettes/eevee_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Eevee[] = INCBIN_U32("graphics/pokemon/front_pics/eevee_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Eevee[] = INCBIN_U32("graphics/pokemon/palettes/eevee_palette.gbapal.lz");
+const u32 gMonBackPic_Eevee[] = INCBIN_U32("graphics/pokemon/back_pics/eevee_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Eevee[] = INCBIN_U32("graphics/pokemon/palettes/eevee_shiny_palette.gbapal.lz");
const u8 gMonIcon_Eevee[] = INCBIN_U8("graphics/pokemon/icons/eevee_icon.4bpp");
const u8 gMonFootprint_Eevee[] = INCBIN_U8("graphics/pokemon/footprints/eevee_footprint.1bpp");
-const u8 gMonStillFrontPic_Vaporeon[] = INCBIN_U8("graphics/pokemon/front_pics/vaporeon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Vaporeon[] = INCBIN_U8("graphics/pokemon/palettes/vaporeon_palette.gbapal.lz");
-const u8 gMonBackPic_Vaporeon[] = INCBIN_U8("graphics/pokemon/back_pics/vaporeon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Vaporeon[] = INCBIN_U8("graphics/pokemon/palettes/vaporeon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/front_pics/vaporeon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/palettes/vaporeon_palette.gbapal.lz");
+const u32 gMonBackPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/back_pics/vaporeon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/palettes/vaporeon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Vaporeon[] = INCBIN_U8("graphics/pokemon/icons/vaporeon_icon.4bpp");
const u8 gMonFootprint_Vaporeon[] = INCBIN_U8("graphics/pokemon/footprints/vaporeon_footprint.1bpp");
-const u8 gMonStillFrontPic_Jolteon[] = INCBIN_U8("graphics/pokemon/front_pics/jolteon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Jolteon[] = INCBIN_U8("graphics/pokemon/palettes/jolteon_palette.gbapal.lz");
-const u8 gMonBackPic_Jolteon[] = INCBIN_U8("graphics/pokemon/back_pics/jolteon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Jolteon[] = INCBIN_U8("graphics/pokemon/palettes/jolteon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Jolteon[] = INCBIN_U32("graphics/pokemon/front_pics/jolteon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/palettes/jolteon_palette.gbapal.lz");
+const u32 gMonBackPic_Jolteon[] = INCBIN_U32("graphics/pokemon/back_pics/jolteon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/palettes/jolteon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Jolteon[] = INCBIN_U8("graphics/pokemon/icons/jolteon_icon.4bpp");
const u8 gMonFootprint_Jolteon[] = INCBIN_U8("graphics/pokemon/footprints/jolteon_footprint.1bpp");
-const u8 gMonStillFrontPic_Flareon[] = INCBIN_U8("graphics/pokemon/front_pics/flareon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Flareon[] = INCBIN_U8("graphics/pokemon/palettes/flareon_palette.gbapal.lz");
-const u8 gMonBackPic_Flareon[] = INCBIN_U8("graphics/pokemon/back_pics/flareon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Flareon[] = INCBIN_U8("graphics/pokemon/palettes/flareon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Flareon[] = INCBIN_U32("graphics/pokemon/front_pics/flareon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Flareon[] = INCBIN_U32("graphics/pokemon/palettes/flareon_palette.gbapal.lz");
+const u32 gMonBackPic_Flareon[] = INCBIN_U32("graphics/pokemon/back_pics/flareon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Flareon[] = INCBIN_U32("graphics/pokemon/palettes/flareon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Flareon[] = INCBIN_U8("graphics/pokemon/icons/flareon_icon.4bpp");
const u8 gMonFootprint_Flareon[] = INCBIN_U8("graphics/pokemon/footprints/flareon_footprint.1bpp");
-const u8 gMonStillFrontPic_Porygon[] = INCBIN_U8("graphics/pokemon/front_pics/porygon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Porygon[] = INCBIN_U8("graphics/pokemon/palettes/porygon_palette.gbapal.lz");
-const u8 gMonBackPic_Porygon[] = INCBIN_U8("graphics/pokemon/back_pics/porygon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Porygon[] = INCBIN_U8("graphics/pokemon/palettes/porygon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Porygon[] = INCBIN_U32("graphics/pokemon/front_pics/porygon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Porygon[] = INCBIN_U32("graphics/pokemon/palettes/porygon_palette.gbapal.lz");
+const u32 gMonBackPic_Porygon[] = INCBIN_U32("graphics/pokemon/back_pics/porygon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Porygon[] = INCBIN_U32("graphics/pokemon/palettes/porygon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Porygon[] = INCBIN_U8("graphics/pokemon/icons/porygon_icon.4bpp");
const u8 gMonFootprint_Porygon[] = INCBIN_U8("graphics/pokemon/footprints/porygon_footprint.1bpp");
-const u8 gMonStillFrontPic_Omanyte[] = INCBIN_U8("graphics/pokemon/front_pics/omanyte_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Omanyte[] = INCBIN_U8("graphics/pokemon/palettes/omanyte_palette.gbapal.lz");
-const u8 gMonBackPic_Omanyte[] = INCBIN_U8("graphics/pokemon/back_pics/omanyte_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Omanyte[] = INCBIN_U8("graphics/pokemon/palettes/omanyte_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Omanyte[] = INCBIN_U32("graphics/pokemon/front_pics/omanyte_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/palettes/omanyte_palette.gbapal.lz");
+const u32 gMonBackPic_Omanyte[] = INCBIN_U32("graphics/pokemon/back_pics/omanyte_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/palettes/omanyte_shiny_palette.gbapal.lz");
const u8 gMonIcon_Omanyte[] = INCBIN_U8("graphics/pokemon/icons/omanyte_icon.4bpp");
const u8 gMonFootprint_Omanyte[] = INCBIN_U8("graphics/pokemon/footprints/omanyte_footprint.1bpp");
-const u8 gMonStillFrontPic_Omastar[] = INCBIN_U8("graphics/pokemon/front_pics/omastar_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Omastar[] = INCBIN_U8("graphics/pokemon/palettes/omastar_palette.gbapal.lz");
-const u8 gMonBackPic_Omastar[] = INCBIN_U8("graphics/pokemon/back_pics/omastar_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Omastar[] = INCBIN_U8("graphics/pokemon/palettes/omastar_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Omastar[] = INCBIN_U32("graphics/pokemon/front_pics/omastar_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Omastar[] = INCBIN_U32("graphics/pokemon/palettes/omastar_palette.gbapal.lz");
+const u32 gMonBackPic_Omastar[] = INCBIN_U32("graphics/pokemon/back_pics/omastar_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Omastar[] = INCBIN_U32("graphics/pokemon/palettes/omastar_shiny_palette.gbapal.lz");
const u8 gMonIcon_Omastar[] = INCBIN_U8("graphics/pokemon/icons/omastar_icon.4bpp");
const u8 gMonFootprint_Omastar[] = INCBIN_U8("graphics/pokemon/footprints/omastar_footprint.1bpp");
-const u8 gMonStillFrontPic_Kabuto[] = INCBIN_U8("graphics/pokemon/front_pics/kabuto_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Kabuto[] = INCBIN_U8("graphics/pokemon/palettes/kabuto_palette.gbapal.lz");
-const u8 gMonBackPic_Kabuto[] = INCBIN_U8("graphics/pokemon/back_pics/kabuto_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Kabuto[] = INCBIN_U8("graphics/pokemon/palettes/kabuto_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Kabuto[] = INCBIN_U32("graphics/pokemon/front_pics/kabuto_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/palettes/kabuto_palette.gbapal.lz");
+const u32 gMonBackPic_Kabuto[] = INCBIN_U32("graphics/pokemon/back_pics/kabuto_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/palettes/kabuto_shiny_palette.gbapal.lz");
const u8 gMonIcon_Kabuto[] = INCBIN_U8("graphics/pokemon/icons/kabuto_icon.4bpp");
const u8 gMonFootprint_Kabuto[] = INCBIN_U8("graphics/pokemon/footprints/kabuto_footprint.1bpp");
-const u8 gMonStillFrontPic_Kabutops[] = INCBIN_U8("graphics/pokemon/front_pics/kabutops_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Kabutops[] = INCBIN_U8("graphics/pokemon/palettes/kabutops_palette.gbapal.lz");
-const u8 gMonBackPic_Kabutops[] = INCBIN_U8("graphics/pokemon/back_pics/kabutops_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Kabutops[] = INCBIN_U8("graphics/pokemon/palettes/kabutops_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Kabutops[] = INCBIN_U32("graphics/pokemon/front_pics/kabutops_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/palettes/kabutops_palette.gbapal.lz");
+const u32 gMonBackPic_Kabutops[] = INCBIN_U32("graphics/pokemon/back_pics/kabutops_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/palettes/kabutops_shiny_palette.gbapal.lz");
const u8 gMonIcon_Kabutops[] = INCBIN_U8("graphics/pokemon/icons/kabutops_icon.4bpp");
const u8 gMonFootprint_Kabutops[] = INCBIN_U8("graphics/pokemon/footprints/kabutops_footprint.1bpp");
-const u8 gMonStillFrontPic_Aerodactyl[] = INCBIN_U8("graphics/pokemon/front_pics/aerodactyl_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Aerodactyl[] = INCBIN_U8("graphics/pokemon/palettes/aerodactyl_palette.gbapal.lz");
-const u8 gMonBackPic_Aerodactyl[] = INCBIN_U8("graphics/pokemon/back_pics/aerodactyl_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Aerodactyl[] = INCBIN_U8("graphics/pokemon/palettes/aerodactyl_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/front_pics/aerodactyl_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/palettes/aerodactyl_palette.gbapal.lz");
+const u32 gMonBackPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/back_pics/aerodactyl_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/palettes/aerodactyl_shiny_palette.gbapal.lz");
const u8 gMonIcon_Aerodactyl[] = INCBIN_U8("graphics/pokemon/icons/aerodactyl_icon.4bpp");
const u8 gMonFootprint_Aerodactyl[] = INCBIN_U8("graphics/pokemon/footprints/aerodactyl_footprint.1bpp");
-const u8 gMonStillFrontPic_Snorlax[] = INCBIN_U8("graphics/pokemon/front_pics/snorlax_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Snorlax[] = INCBIN_U8("graphics/pokemon/palettes/snorlax_palette.gbapal.lz");
-const u8 gMonBackPic_Snorlax[] = INCBIN_U8("graphics/pokemon/back_pics/snorlax_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Snorlax[] = INCBIN_U8("graphics/pokemon/palettes/snorlax_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Snorlax[] = INCBIN_U32("graphics/pokemon/front_pics/snorlax_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/palettes/snorlax_palette.gbapal.lz");
+const u32 gMonBackPic_Snorlax[] = INCBIN_U32("graphics/pokemon/back_pics/snorlax_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/palettes/snorlax_shiny_palette.gbapal.lz");
const u8 gMonIcon_Snorlax[] = INCBIN_U8("graphics/pokemon/icons/snorlax_icon.4bpp");
const u8 gMonFootprint_Snorlax[] = INCBIN_U8("graphics/pokemon/footprints/snorlax_footprint.1bpp");
-const u8 gMonStillFrontPic_Articuno[] = INCBIN_U8("graphics/pokemon/front_pics/articuno_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Articuno[] = INCBIN_U8("graphics/pokemon/palettes/articuno_palette.gbapal.lz");
-const u8 gMonBackPic_Articuno[] = INCBIN_U8("graphics/pokemon/back_pics/articuno_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Articuno[] = INCBIN_U8("graphics/pokemon/palettes/articuno_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Articuno[] = INCBIN_U32("graphics/pokemon/front_pics/articuno_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Articuno[] = INCBIN_U32("graphics/pokemon/palettes/articuno_palette.gbapal.lz");
+const u32 gMonBackPic_Articuno[] = INCBIN_U32("graphics/pokemon/back_pics/articuno_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Articuno[] = INCBIN_U32("graphics/pokemon/palettes/articuno_shiny_palette.gbapal.lz");
const u8 gMonIcon_Articuno[] = INCBIN_U8("graphics/pokemon/icons/articuno_icon.4bpp");
const u8 gMonFootprint_Articuno[] = INCBIN_U8("graphics/pokemon/footprints/articuno_footprint.1bpp");
-const u8 gMonStillFrontPic_Zapdos[] = INCBIN_U8("graphics/pokemon/front_pics/zapdos_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Zapdos[] = INCBIN_U8("graphics/pokemon/palettes/zapdos_palette.gbapal.lz");
-const u8 gMonBackPic_Zapdos[] = INCBIN_U8("graphics/pokemon/back_pics/zapdos_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Zapdos[] = INCBIN_U8("graphics/pokemon/palettes/zapdos_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Zapdos[] = INCBIN_U32("graphics/pokemon/front_pics/zapdos_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/palettes/zapdos_palette.gbapal.lz");
+const u32 gMonBackPic_Zapdos[] = INCBIN_U32("graphics/pokemon/back_pics/zapdos_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/palettes/zapdos_shiny_palette.gbapal.lz");
const u8 gMonIcon_Zapdos[] = INCBIN_U8("graphics/pokemon/icons/zapdos_icon.4bpp");
const u8 gMonFootprint_Zapdos[] = INCBIN_U8("graphics/pokemon/footprints/zapdos_footprint.1bpp");
-const u8 gMonStillFrontPic_Moltres[] = INCBIN_U8("graphics/pokemon/front_pics/moltres_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Moltres[] = INCBIN_U8("graphics/pokemon/palettes/moltres_palette.gbapal.lz");
-const u8 gMonBackPic_Moltres[] = INCBIN_U8("graphics/pokemon/back_pics/moltres_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Moltres[] = INCBIN_U8("graphics/pokemon/palettes/moltres_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Moltres[] = INCBIN_U32("graphics/pokemon/front_pics/moltres_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Moltres[] = INCBIN_U32("graphics/pokemon/palettes/moltres_palette.gbapal.lz");
+const u32 gMonBackPic_Moltres[] = INCBIN_U32("graphics/pokemon/back_pics/moltres_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Moltres[] = INCBIN_U32("graphics/pokemon/palettes/moltres_shiny_palette.gbapal.lz");
const u8 gMonIcon_Moltres[] = INCBIN_U8("graphics/pokemon/icons/moltres_icon.4bpp");
const u8 gMonFootprint_Moltres[] = INCBIN_U8("graphics/pokemon/footprints/moltres_footprint.1bpp");
-const u8 gMonStillFrontPic_Dratini[] = INCBIN_U8("graphics/pokemon/front_pics/dratini_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Dratini[] = INCBIN_U8("graphics/pokemon/palettes/dratini_palette.gbapal.lz");
-const u8 gMonBackPic_Dratini[] = INCBIN_U8("graphics/pokemon/back_pics/dratini_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Dratini[] = INCBIN_U8("graphics/pokemon/palettes/dratini_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Dratini[] = INCBIN_U32("graphics/pokemon/front_pics/dratini_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Dratini[] = INCBIN_U32("graphics/pokemon/palettes/dratini_palette.gbapal.lz");
+const u32 gMonBackPic_Dratini[] = INCBIN_U32("graphics/pokemon/back_pics/dratini_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Dratini[] = INCBIN_U32("graphics/pokemon/palettes/dratini_shiny_palette.gbapal.lz");
const u8 gMonIcon_Dratini[] = INCBIN_U8("graphics/pokemon/icons/dratini_icon.4bpp");
const u8 gMonFootprint_Dratini[] = INCBIN_U8("graphics/pokemon/footprints/dratini_footprint.1bpp");
-const u8 gMonStillFrontPic_Dragonair[] = INCBIN_U8("graphics/pokemon/front_pics/dragonair_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Dragonair[] = INCBIN_U8("graphics/pokemon/palettes/dragonair_palette.gbapal.lz");
-const u8 gMonBackPic_Dragonair[] = INCBIN_U8("graphics/pokemon/back_pics/dragonair_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Dragonair[] = INCBIN_U8("graphics/pokemon/palettes/dragonair_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Dragonair[] = INCBIN_U32("graphics/pokemon/front_pics/dragonair_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/palettes/dragonair_palette.gbapal.lz");
+const u32 gMonBackPic_Dragonair[] = INCBIN_U32("graphics/pokemon/back_pics/dragonair_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/palettes/dragonair_shiny_palette.gbapal.lz");
const u8 gMonIcon_Dragonair[] = INCBIN_U8("graphics/pokemon/icons/dragonair_icon.4bpp");
const u8 gMonFootprint_Dragonair[] = INCBIN_U8("graphics/pokemon/footprints/dragonair_footprint.1bpp");
-const u8 gMonStillFrontPic_Dragonite[] = INCBIN_U8("graphics/pokemon/front_pics/dragonite_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Dragonite[] = INCBIN_U8("graphics/pokemon/palettes/dragonite_palette.gbapal.lz");
-const u8 gMonBackPic_Dragonite[] = INCBIN_U8("graphics/pokemon/back_pics/dragonite_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Dragonite[] = INCBIN_U8("graphics/pokemon/palettes/dragonite_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Dragonite[] = INCBIN_U32("graphics/pokemon/front_pics/dragonite_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/palettes/dragonite_palette.gbapal.lz");
+const u32 gMonBackPic_Dragonite[] = INCBIN_U32("graphics/pokemon/back_pics/dragonite_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/palettes/dragonite_shiny_palette.gbapal.lz");
const u8 gMonIcon_Dragonite[] = INCBIN_U8("graphics/pokemon/icons/dragonite_icon.4bpp");
const u8 gMonFootprint_Dragonite[] = INCBIN_U8("graphics/pokemon/footprints/dragonite_footprint.1bpp");
-const u8 gMonStillFrontPic_Mewtwo[] = INCBIN_U8("graphics/pokemon/front_pics/mewtwo_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Mewtwo[] = INCBIN_U8("graphics/pokemon/palettes/mewtwo_palette.gbapal.lz");
-const u8 gMonBackPic_Mewtwo[] = INCBIN_U8("graphics/pokemon/back_pics/mewtwo_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Mewtwo[] = INCBIN_U8("graphics/pokemon/palettes/mewtwo_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/front_pics/mewtwo_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/palettes/mewtwo_palette.gbapal.lz");
+const u32 gMonBackPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/back_pics/mewtwo_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/palettes/mewtwo_shiny_palette.gbapal.lz");
const u8 gMonIcon_Mewtwo[] = INCBIN_U8("graphics/pokemon/icons/mewtwo_icon.4bpp");
const u8 gMonFootprint_Mewtwo[] = INCBIN_U8("graphics/pokemon/footprints/mewtwo_footprint.1bpp");
-const u8 gMonStillFrontPic_Mew[] = INCBIN_U8("graphics/pokemon/front_pics/mew_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Mew[] = INCBIN_U8("graphics/pokemon/palettes/mew_palette.gbapal.lz");
-const u8 gMonBackPic_Mew[] = INCBIN_U8("graphics/pokemon/back_pics/mew_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Mew[] = INCBIN_U8("graphics/pokemon/palettes/mew_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Mew[] = INCBIN_U32("graphics/pokemon/front_pics/mew_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Mew[] = INCBIN_U32("graphics/pokemon/palettes/mew_palette.gbapal.lz");
+const u32 gMonBackPic_Mew[] = INCBIN_U32("graphics/pokemon/back_pics/mew_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Mew[] = INCBIN_U32("graphics/pokemon/palettes/mew_shiny_palette.gbapal.lz");
const u8 gMonIcon_Mew[] = INCBIN_U8("graphics/pokemon/icons/mew_icon.4bpp");
const u8 gMonFootprint_Mew[] = INCBIN_U8("graphics/pokemon/footprints/mew_footprint.1bpp");
-const u8 gMonStillFrontPic_Chikorita[] = INCBIN_U8("graphics/pokemon/front_pics/chikorita_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Chikorita[] = INCBIN_U8("graphics/pokemon/palettes/chikorita_palette.gbapal.lz");
-const u8 gMonBackPic_Chikorita[] = INCBIN_U8("graphics/pokemon/back_pics/chikorita_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Chikorita[] = INCBIN_U8("graphics/pokemon/palettes/chikorita_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Chikorita[] = INCBIN_U32("graphics/pokemon/front_pics/chikorita_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/palettes/chikorita_palette.gbapal.lz");
+const u32 gMonBackPic_Chikorita[] = INCBIN_U32("graphics/pokemon/back_pics/chikorita_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/palettes/chikorita_shiny_palette.gbapal.lz");
const u8 gMonIcon_Chikorita[] = INCBIN_U8("graphics/pokemon/icons/chikorita_icon.4bpp");
const u8 gMonFootprint_Chikorita[] = INCBIN_U8("graphics/pokemon/footprints/chikorita_footprint.1bpp");
-const u8 gMonStillFrontPic_Bayleef[] = INCBIN_U8("graphics/pokemon/front_pics/bayleef_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Bayleef[] = INCBIN_U8("graphics/pokemon/palettes/bayleef_palette.gbapal.lz");
-const u8 gMonBackPic_Bayleef[] = INCBIN_U8("graphics/pokemon/back_pics/bayleef_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Bayleef[] = INCBIN_U8("graphics/pokemon/palettes/bayleef_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Bayleef[] = INCBIN_U32("graphics/pokemon/front_pics/bayleef_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/palettes/bayleef_palette.gbapal.lz");
+const u32 gMonBackPic_Bayleef[] = INCBIN_U32("graphics/pokemon/back_pics/bayleef_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/palettes/bayleef_shiny_palette.gbapal.lz");
const u8 gMonIcon_Bayleef[] = INCBIN_U8("graphics/pokemon/icons/bayleef_icon.4bpp");
const u8 gMonFootprint_Bayleef[] = INCBIN_U8("graphics/pokemon/footprints/bayleef_footprint.1bpp");
-const u8 gMonStillFrontPic_Meganium[] = INCBIN_U8("graphics/pokemon/front_pics/meganium_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Meganium[] = INCBIN_U8("graphics/pokemon/palettes/meganium_palette.gbapal.lz");
-const u8 gMonBackPic_Meganium[] = INCBIN_U8("graphics/pokemon/back_pics/meganium_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Meganium[] = INCBIN_U8("graphics/pokemon/palettes/meganium_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Meganium[] = INCBIN_U32("graphics/pokemon/front_pics/meganium_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Meganium[] = INCBIN_U32("graphics/pokemon/palettes/meganium_palette.gbapal.lz");
+const u32 gMonBackPic_Meganium[] = INCBIN_U32("graphics/pokemon/back_pics/meganium_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Meganium[] = INCBIN_U32("graphics/pokemon/palettes/meganium_shiny_palette.gbapal.lz");
const u8 gMonIcon_Meganium[] = INCBIN_U8("graphics/pokemon/icons/meganium_icon.4bpp");
const u8 gMonFootprint_Meganium[] = INCBIN_U8("graphics/pokemon/footprints/meganium_footprint.1bpp");
-const u8 gMonStillFrontPic_Cyndaquil[] = INCBIN_U8("graphics/pokemon/front_pics/cyndaquil_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Cyndaquil[] = INCBIN_U8("graphics/pokemon/palettes/cyndaquil_palette.gbapal.lz");
-const u8 gMonBackPic_Cyndaquil[] = INCBIN_U8("graphics/pokemon/back_pics/cyndaquil_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Cyndaquil[] = INCBIN_U8("graphics/pokemon/palettes/cyndaquil_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/front_pics/cyndaquil_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/palettes/cyndaquil_palette.gbapal.lz");
+const u32 gMonBackPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/back_pics/cyndaquil_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/palettes/cyndaquil_shiny_palette.gbapal.lz");
const u8 gMonIcon_Cyndaquil[] = INCBIN_U8("graphics/pokemon/icons/cyndaquil_icon.4bpp");
const u8 gMonFootprint_Cyndaquil[] = INCBIN_U8("graphics/pokemon/footprints/cyndaquil_footprint.1bpp");
-const u8 gMonStillFrontPic_Quilava[] = INCBIN_U8("graphics/pokemon/front_pics/quilava_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Quilava[] = INCBIN_U8("graphics/pokemon/palettes/quilava_palette.gbapal.lz");
-const u8 gMonBackPic_Quilava[] = INCBIN_U8("graphics/pokemon/back_pics/quilava_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Quilava[] = INCBIN_U8("graphics/pokemon/palettes/quilava_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Quilava[] = INCBIN_U32("graphics/pokemon/front_pics/quilava_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Quilava[] = INCBIN_U32("graphics/pokemon/palettes/quilava_palette.gbapal.lz");
+const u32 gMonBackPic_Quilava[] = INCBIN_U32("graphics/pokemon/back_pics/quilava_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Quilava[] = INCBIN_U32("graphics/pokemon/palettes/quilava_shiny_palette.gbapal.lz");
const u8 gMonIcon_Quilava[] = INCBIN_U8("graphics/pokemon/icons/quilava_icon.4bpp");
const u8 gMonFootprint_Quilava[] = INCBIN_U8("graphics/pokemon/footprints/quilava_footprint.1bpp");
-const u8 gMonStillFrontPic_Typhlosion[] = INCBIN_U8("graphics/pokemon/front_pics/typhlosion_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Typhlosion[] = INCBIN_U8("graphics/pokemon/palettes/typhlosion_palette.gbapal.lz");
-const u8 gMonBackPic_Typhlosion[] = INCBIN_U8("graphics/pokemon/back_pics/typhlosion_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Typhlosion[] = INCBIN_U8("graphics/pokemon/palettes/typhlosion_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/front_pics/typhlosion_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/palettes/typhlosion_palette.gbapal.lz");
+const u32 gMonBackPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/back_pics/typhlosion_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/palettes/typhlosion_shiny_palette.gbapal.lz");
const u8 gMonIcon_Typhlosion[] = INCBIN_U8("graphics/pokemon/icons/typhlosion_icon.4bpp");
const u8 gMonFootprint_Typhlosion[] = INCBIN_U8("graphics/pokemon/footprints/typhlosion_footprint.1bpp");
-const u8 gMonStillFrontPic_Totodile[] = INCBIN_U8("graphics/pokemon/front_pics/totodile_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Totodile[] = INCBIN_U8("graphics/pokemon/palettes/totodile_palette.gbapal.lz");
-const u8 gMonBackPic_Totodile[] = INCBIN_U8("graphics/pokemon/back_pics/totodile_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Totodile[] = INCBIN_U8("graphics/pokemon/palettes/totodile_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Totodile[] = INCBIN_U32("graphics/pokemon/front_pics/totodile_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Totodile[] = INCBIN_U32("graphics/pokemon/palettes/totodile_palette.gbapal.lz");
+const u32 gMonBackPic_Totodile[] = INCBIN_U32("graphics/pokemon/back_pics/totodile_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Totodile[] = INCBIN_U32("graphics/pokemon/palettes/totodile_shiny_palette.gbapal.lz");
const u8 gMonIcon_Totodile[] = INCBIN_U8("graphics/pokemon/icons/totodile_icon.4bpp");
const u8 gMonFootprint_Totodile[] = INCBIN_U8("graphics/pokemon/footprints/totodile_footprint.1bpp");
-const u8 gMonStillFrontPic_Croconaw[] = INCBIN_U8("graphics/pokemon/front_pics/croconaw_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Croconaw[] = INCBIN_U8("graphics/pokemon/palettes/croconaw_palette.gbapal.lz");
-const u8 gMonBackPic_Croconaw[] = INCBIN_U8("graphics/pokemon/back_pics/croconaw_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Croconaw[] = INCBIN_U8("graphics/pokemon/palettes/croconaw_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Croconaw[] = INCBIN_U32("graphics/pokemon/front_pics/croconaw_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/palettes/croconaw_palette.gbapal.lz");
+const u32 gMonBackPic_Croconaw[] = INCBIN_U32("graphics/pokemon/back_pics/croconaw_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/palettes/croconaw_shiny_palette.gbapal.lz");
const u8 gMonIcon_Croconaw[] = INCBIN_U8("graphics/pokemon/icons/croconaw_icon.4bpp");
const u8 gMonFootprint_Croconaw[] = INCBIN_U8("graphics/pokemon/footprints/croconaw_footprint.1bpp");
-const u8 gMonStillFrontPic_Feraligatr[] = INCBIN_U8("graphics/pokemon/front_pics/feraligatr_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Feraligatr[] = INCBIN_U8("graphics/pokemon/palettes/feraligatr_palette.gbapal.lz");
-const u8 gMonBackPic_Feraligatr[] = INCBIN_U8("graphics/pokemon/back_pics/feraligatr_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Feraligatr[] = INCBIN_U8("graphics/pokemon/palettes/feraligatr_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/front_pics/feraligatr_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/palettes/feraligatr_palette.gbapal.lz");
+const u32 gMonBackPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/back_pics/feraligatr_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/palettes/feraligatr_shiny_palette.gbapal.lz");
const u8 gMonIcon_Feraligatr[] = INCBIN_U8("graphics/pokemon/icons/feraligatr_icon.4bpp");
const u8 gMonFootprint_Feraligatr[] = INCBIN_U8("graphics/pokemon/footprints/feraligatr_footprint.1bpp");
-const u8 gMonStillFrontPic_Sentret[] = INCBIN_U8("graphics/pokemon/front_pics/sentret_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Sentret[] = INCBIN_U8("graphics/pokemon/palettes/sentret_palette.gbapal.lz");
-const u8 gMonBackPic_Sentret[] = INCBIN_U8("graphics/pokemon/back_pics/sentret_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Sentret[] = INCBIN_U8("graphics/pokemon/palettes/sentret_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Sentret[] = INCBIN_U32("graphics/pokemon/front_pics/sentret_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Sentret[] = INCBIN_U32("graphics/pokemon/palettes/sentret_palette.gbapal.lz");
+const u32 gMonBackPic_Sentret[] = INCBIN_U32("graphics/pokemon/back_pics/sentret_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Sentret[] = INCBIN_U32("graphics/pokemon/palettes/sentret_shiny_palette.gbapal.lz");
const u8 gMonIcon_Sentret[] = INCBIN_U8("graphics/pokemon/icons/sentret_icon.4bpp");
const u8 gMonFootprint_Sentret[] = INCBIN_U8("graphics/pokemon/footprints/sentret_footprint.1bpp");
-const u8 gMonStillFrontPic_Furret[] = INCBIN_U8("graphics/pokemon/front_pics/furret_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Furret[] = INCBIN_U8("graphics/pokemon/palettes/furret_palette.gbapal.lz");
-const u8 gMonBackPic_Furret[] = INCBIN_U8("graphics/pokemon/back_pics/furret_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Furret[] = INCBIN_U8("graphics/pokemon/palettes/furret_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Furret[] = INCBIN_U32("graphics/pokemon/front_pics/furret_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Furret[] = INCBIN_U32("graphics/pokemon/palettes/furret_palette.gbapal.lz");
+const u32 gMonBackPic_Furret[] = INCBIN_U32("graphics/pokemon/back_pics/furret_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Furret[] = INCBIN_U32("graphics/pokemon/palettes/furret_shiny_palette.gbapal.lz");
const u8 gMonIcon_Furret[] = INCBIN_U8("graphics/pokemon/icons/furret_icon.4bpp");
const u8 gMonFootprint_Furret[] = INCBIN_U8("graphics/pokemon/footprints/furret_footprint.1bpp");
-const u8 gMonStillFrontPic_Hoothoot[] = INCBIN_U8("graphics/pokemon/front_pics/hoothoot_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Hoothoot[] = INCBIN_U8("graphics/pokemon/palettes/hoothoot_palette.gbapal.lz");
-const u8 gMonBackPic_Hoothoot[] = INCBIN_U8("graphics/pokemon/back_pics/hoothoot_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Hoothoot[] = INCBIN_U8("graphics/pokemon/palettes/hoothoot_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/front_pics/hoothoot_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/palettes/hoothoot_palette.gbapal.lz");
+const u32 gMonBackPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/back_pics/hoothoot_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/palettes/hoothoot_shiny_palette.gbapal.lz");
const u8 gMonIcon_Hoothoot[] = INCBIN_U8("graphics/pokemon/icons/hoothoot_icon.4bpp");
const u8 gMonFootprint_Hoothoot[] = INCBIN_U8("graphics/pokemon/footprints/hoothoot_footprint.1bpp");
-const u8 gMonStillFrontPic_Noctowl[] = INCBIN_U8("graphics/pokemon/front_pics/noctowl_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Noctowl[] = INCBIN_U8("graphics/pokemon/palettes/noctowl_palette.gbapal.lz");
-const u8 gMonBackPic_Noctowl[] = INCBIN_U8("graphics/pokemon/back_pics/noctowl_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Noctowl[] = INCBIN_U8("graphics/pokemon/palettes/noctowl_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Noctowl[] = INCBIN_U32("graphics/pokemon/front_pics/noctowl_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/palettes/noctowl_palette.gbapal.lz");
+const u32 gMonBackPic_Noctowl[] = INCBIN_U32("graphics/pokemon/back_pics/noctowl_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/palettes/noctowl_shiny_palette.gbapal.lz");
const u8 gMonIcon_Noctowl[] = INCBIN_U8("graphics/pokemon/icons/noctowl_icon.4bpp");
const u8 gMonFootprint_Noctowl[] = INCBIN_U8("graphics/pokemon/footprints/noctowl_footprint.1bpp");
-const u8 gMonStillFrontPic_Ledyba[] = INCBIN_U8("graphics/pokemon/front_pics/ledyba_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ledyba[] = INCBIN_U8("graphics/pokemon/palettes/ledyba_palette.gbapal.lz");
-const u8 gMonBackPic_Ledyba[] = INCBIN_U8("graphics/pokemon/back_pics/ledyba_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ledyba[] = INCBIN_U8("graphics/pokemon/palettes/ledyba_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ledyba[] = INCBIN_U32("graphics/pokemon/front_pics/ledyba_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/palettes/ledyba_palette.gbapal.lz");
+const u32 gMonBackPic_Ledyba[] = INCBIN_U32("graphics/pokemon/back_pics/ledyba_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/palettes/ledyba_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ledyba[] = INCBIN_U8("graphics/pokemon/icons/ledyba_icon.4bpp");
const u8 gMonFootprint_Ledyba[] = INCBIN_U8("graphics/pokemon/footprints/ledyba_footprint.1bpp");
-const u8 gMonStillFrontPic_Ledian[] = INCBIN_U8("graphics/pokemon/front_pics/ledian_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ledian[] = INCBIN_U8("graphics/pokemon/palettes/ledian_palette.gbapal.lz");
-const u8 gMonBackPic_Ledian[] = INCBIN_U8("graphics/pokemon/back_pics/ledian_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ledian[] = INCBIN_U8("graphics/pokemon/palettes/ledian_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ledian[] = INCBIN_U32("graphics/pokemon/front_pics/ledian_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ledian[] = INCBIN_U32("graphics/pokemon/palettes/ledian_palette.gbapal.lz");
+const u32 gMonBackPic_Ledian[] = INCBIN_U32("graphics/pokemon/back_pics/ledian_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ledian[] = INCBIN_U32("graphics/pokemon/palettes/ledian_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ledian[] = INCBIN_U8("graphics/pokemon/icons/ledian_icon.4bpp");
const u8 gMonFootprint_Ledian[] = INCBIN_U8("graphics/pokemon/footprints/ledian_footprint.1bpp");
-const u8 gMonStillFrontPic_Spinarak[] = INCBIN_U8("graphics/pokemon/front_pics/spinarak_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Spinarak[] = INCBIN_U8("graphics/pokemon/palettes/spinarak_palette.gbapal.lz");
-const u8 gMonBackPic_Spinarak[] = INCBIN_U8("graphics/pokemon/back_pics/spinarak_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Spinarak[] = INCBIN_U8("graphics/pokemon/palettes/spinarak_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Spinarak[] = INCBIN_U32("graphics/pokemon/front_pics/spinarak_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/palettes/spinarak_palette.gbapal.lz");
+const u32 gMonBackPic_Spinarak[] = INCBIN_U32("graphics/pokemon/back_pics/spinarak_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/palettes/spinarak_shiny_palette.gbapal.lz");
const u8 gMonIcon_Spinarak[] = INCBIN_U8("graphics/pokemon/icons/spinarak_icon.4bpp");
const u8 gMonFootprint_Spinarak[] = INCBIN_U8("graphics/pokemon/footprints/spinarak_footprint.1bpp");
-const u8 gMonStillFrontPic_Ariados[] = INCBIN_U8("graphics/pokemon/front_pics/ariados_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ariados[] = INCBIN_U8("graphics/pokemon/palettes/ariados_palette.gbapal.lz");
-const u8 gMonBackPic_Ariados[] = INCBIN_U8("graphics/pokemon/back_pics/ariados_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ariados[] = INCBIN_U8("graphics/pokemon/palettes/ariados_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ariados[] = INCBIN_U32("graphics/pokemon/front_pics/ariados_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ariados[] = INCBIN_U32("graphics/pokemon/palettes/ariados_palette.gbapal.lz");
+const u32 gMonBackPic_Ariados[] = INCBIN_U32("graphics/pokemon/back_pics/ariados_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ariados[] = INCBIN_U32("graphics/pokemon/palettes/ariados_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ariados[] = INCBIN_U8("graphics/pokemon/icons/ariados_icon.4bpp");
const u8 gMonFootprint_Ariados[] = INCBIN_U8("graphics/pokemon/footprints/ariados_footprint.1bpp");
-const u8 gMonStillFrontPic_Crobat[] = INCBIN_U8("graphics/pokemon/front_pics/crobat_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Crobat[] = INCBIN_U8("graphics/pokemon/palettes/crobat_palette.gbapal.lz");
-const u8 gMonBackPic_Crobat[] = INCBIN_U8("graphics/pokemon/back_pics/crobat_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Crobat[] = INCBIN_U8("graphics/pokemon/palettes/crobat_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Crobat[] = INCBIN_U32("graphics/pokemon/front_pics/crobat_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Crobat[] = INCBIN_U32("graphics/pokemon/palettes/crobat_palette.gbapal.lz");
+const u32 gMonBackPic_Crobat[] = INCBIN_U32("graphics/pokemon/back_pics/crobat_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Crobat[] = INCBIN_U32("graphics/pokemon/palettes/crobat_shiny_palette.gbapal.lz");
const u8 gMonIcon_Crobat[] = INCBIN_U8("graphics/pokemon/icons/crobat_icon.4bpp");
const u8 gMonFootprint_Crobat[] = INCBIN_U8("graphics/pokemon/footprints/crobat_footprint.1bpp");
-const u8 gMonStillFrontPic_Chinchou[] = INCBIN_U8("graphics/pokemon/front_pics/chinchou_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Chinchou[] = INCBIN_U8("graphics/pokemon/palettes/chinchou_palette.gbapal.lz");
-const u8 gMonBackPic_Chinchou[] = INCBIN_U8("graphics/pokemon/back_pics/chinchou_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Chinchou[] = INCBIN_U8("graphics/pokemon/palettes/chinchou_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Chinchou[] = INCBIN_U32("graphics/pokemon/front_pics/chinchou_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/palettes/chinchou_palette.gbapal.lz");
+const u32 gMonBackPic_Chinchou[] = INCBIN_U32("graphics/pokemon/back_pics/chinchou_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/palettes/chinchou_shiny_palette.gbapal.lz");
const u8 gMonIcon_Chinchou[] = INCBIN_U8("graphics/pokemon/icons/chinchou_icon.4bpp");
const u8 gMonFootprint_Chinchou[] = INCBIN_U8("graphics/pokemon/footprints/chinchou_footprint.1bpp");
-const u8 gMonStillFrontPic_Lanturn[] = INCBIN_U8("graphics/pokemon/front_pics/lanturn_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Lanturn[] = INCBIN_U8("graphics/pokemon/palettes/lanturn_palette.gbapal.lz");
-const u8 gMonBackPic_Lanturn[] = INCBIN_U8("graphics/pokemon/back_pics/lanturn_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Lanturn[] = INCBIN_U8("graphics/pokemon/palettes/lanturn_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Lanturn[] = INCBIN_U32("graphics/pokemon/front_pics/lanturn_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/palettes/lanturn_palette.gbapal.lz");
+const u32 gMonBackPic_Lanturn[] = INCBIN_U32("graphics/pokemon/back_pics/lanturn_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/palettes/lanturn_shiny_palette.gbapal.lz");
const u8 gMonIcon_Lanturn[] = INCBIN_U8("graphics/pokemon/icons/lanturn_icon.4bpp");
const u8 gMonFootprint_Lanturn[] = INCBIN_U8("graphics/pokemon/footprints/lanturn_footprint.1bpp");
-const u8 gMonStillFrontPic_Pichu[] = INCBIN_U8("graphics/pokemon/front_pics/pichu_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Pichu[] = INCBIN_U8("graphics/pokemon/palettes/pichu_palette.gbapal.lz");
-const u8 gMonBackPic_Pichu[] = INCBIN_U8("graphics/pokemon/back_pics/pichu_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Pichu[] = INCBIN_U8("graphics/pokemon/palettes/pichu_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Pichu[] = INCBIN_U32("graphics/pokemon/front_pics/pichu_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Pichu[] = INCBIN_U32("graphics/pokemon/palettes/pichu_palette.gbapal.lz");
+const u32 gMonBackPic_Pichu[] = INCBIN_U32("graphics/pokemon/back_pics/pichu_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Pichu[] = INCBIN_U32("graphics/pokemon/palettes/pichu_shiny_palette.gbapal.lz");
const u8 gMonIcon_Pichu[] = INCBIN_U8("graphics/pokemon/icons/pichu_icon.4bpp");
const u8 gMonFootprint_Pichu[] = INCBIN_U8("graphics/pokemon/footprints/pichu_footprint.1bpp");
-const u8 gMonStillFrontPic_Cleffa[] = INCBIN_U8("graphics/pokemon/front_pics/cleffa_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Cleffa[] = INCBIN_U8("graphics/pokemon/palettes/cleffa_palette.gbapal.lz");
-const u8 gMonBackPic_Cleffa[] = INCBIN_U8("graphics/pokemon/back_pics/cleffa_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Cleffa[] = INCBIN_U8("graphics/pokemon/palettes/cleffa_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Cleffa[] = INCBIN_U32("graphics/pokemon/front_pics/cleffa_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/palettes/cleffa_palette.gbapal.lz");
+const u32 gMonBackPic_Cleffa[] = INCBIN_U32("graphics/pokemon/back_pics/cleffa_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/palettes/cleffa_shiny_palette.gbapal.lz");
const u8 gMonIcon_Cleffa[] = INCBIN_U8("graphics/pokemon/icons/cleffa_icon.4bpp");
const u8 gMonFootprint_Cleffa[] = INCBIN_U8("graphics/pokemon/footprints/cleffa_footprint.1bpp");
-const u8 gMonStillFrontPic_Igglybuff[] = INCBIN_U8("graphics/pokemon/front_pics/igglybuff_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Igglybuff[] = INCBIN_U8("graphics/pokemon/palettes/igglybuff_palette.gbapal.lz");
-const u8 gMonBackPic_Igglybuff[] = INCBIN_U8("graphics/pokemon/back_pics/igglybuff_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Igglybuff[] = INCBIN_U8("graphics/pokemon/palettes/igglybuff_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/front_pics/igglybuff_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/palettes/igglybuff_palette.gbapal.lz");
+const u32 gMonBackPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/back_pics/igglybuff_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/palettes/igglybuff_shiny_palette.gbapal.lz");
const u8 gMonIcon_Igglybuff[] = INCBIN_U8("graphics/pokemon/icons/igglybuff_icon.4bpp");
const u8 gMonFootprint_Igglybuff[] = INCBIN_U8("graphics/pokemon/footprints/igglybuff_footprint.1bpp");
-const u8 gMonStillFrontPic_Togepi[] = INCBIN_U8("graphics/pokemon/front_pics/togepi_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Togepi[] = INCBIN_U8("graphics/pokemon/palettes/togepi_palette.gbapal.lz");
-const u8 gMonBackPic_Togepi[] = INCBIN_U8("graphics/pokemon/back_pics/togepi_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Togepi[] = INCBIN_U8("graphics/pokemon/palettes/togepi_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Togepi[] = INCBIN_U32("graphics/pokemon/front_pics/togepi_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Togepi[] = INCBIN_U32("graphics/pokemon/palettes/togepi_palette.gbapal.lz");
+const u32 gMonBackPic_Togepi[] = INCBIN_U32("graphics/pokemon/back_pics/togepi_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Togepi[] = INCBIN_U32("graphics/pokemon/palettes/togepi_shiny_palette.gbapal.lz");
const u8 gMonIcon_Togepi[] = INCBIN_U8("graphics/pokemon/icons/togepi_icon.4bpp");
const u8 gMonFootprint_Togepi[] = INCBIN_U8("graphics/pokemon/footprints/togepi_footprint.1bpp");
-const u8 gMonStillFrontPic_Togetic[] = INCBIN_U8("graphics/pokemon/front_pics/togetic_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Togetic[] = INCBIN_U8("graphics/pokemon/palettes/togetic_palette.gbapal.lz");
-const u8 gMonBackPic_Togetic[] = INCBIN_U8("graphics/pokemon/back_pics/togetic_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Togetic[] = INCBIN_U8("graphics/pokemon/palettes/togetic_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Togetic[] = INCBIN_U32("graphics/pokemon/front_pics/togetic_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Togetic[] = INCBIN_U32("graphics/pokemon/palettes/togetic_palette.gbapal.lz");
+const u32 gMonBackPic_Togetic[] = INCBIN_U32("graphics/pokemon/back_pics/togetic_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Togetic[] = INCBIN_U32("graphics/pokemon/palettes/togetic_shiny_palette.gbapal.lz");
const u8 gMonIcon_Togetic[] = INCBIN_U8("graphics/pokemon/icons/togetic_icon.4bpp");
const u8 gMonFootprint_Togetic[] = INCBIN_U8("graphics/pokemon/footprints/togetic_footprint.1bpp");
-const u8 gMonStillFrontPic_Natu[] = INCBIN_U8("graphics/pokemon/front_pics/natu_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Natu[] = INCBIN_U8("graphics/pokemon/palettes/natu_palette.gbapal.lz");
-const u8 gMonBackPic_Natu[] = INCBIN_U8("graphics/pokemon/back_pics/natu_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Natu[] = INCBIN_U8("graphics/pokemon/palettes/natu_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Natu[] = INCBIN_U32("graphics/pokemon/front_pics/natu_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Natu[] = INCBIN_U32("graphics/pokemon/palettes/natu_palette.gbapal.lz");
+const u32 gMonBackPic_Natu[] = INCBIN_U32("graphics/pokemon/back_pics/natu_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Natu[] = INCBIN_U32("graphics/pokemon/palettes/natu_shiny_palette.gbapal.lz");
const u8 gMonIcon_Natu[] = INCBIN_U8("graphics/pokemon/icons/natu_icon.4bpp");
const u8 gMonFootprint_Natu[] = INCBIN_U8("graphics/pokemon/footprints/natu_footprint.1bpp");
-const u8 gMonStillFrontPic_Xatu[] = INCBIN_U8("graphics/pokemon/front_pics/xatu_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Xatu[] = INCBIN_U8("graphics/pokemon/palettes/xatu_palette.gbapal.lz");
-const u8 gMonBackPic_Xatu[] = INCBIN_U8("graphics/pokemon/back_pics/xatu_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Xatu[] = INCBIN_U8("graphics/pokemon/palettes/xatu_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Xatu[] = INCBIN_U32("graphics/pokemon/front_pics/xatu_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Xatu[] = INCBIN_U32("graphics/pokemon/palettes/xatu_palette.gbapal.lz");
+const u32 gMonBackPic_Xatu[] = INCBIN_U32("graphics/pokemon/back_pics/xatu_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Xatu[] = INCBIN_U32("graphics/pokemon/palettes/xatu_shiny_palette.gbapal.lz");
const u8 gMonIcon_Xatu[] = INCBIN_U8("graphics/pokemon/icons/xatu_icon.4bpp");
const u8 gMonFootprint_Xatu[] = INCBIN_U8("graphics/pokemon/footprints/xatu_footprint.1bpp");
-const u8 gMonStillFrontPic_Mareep[] = INCBIN_U8("graphics/pokemon/front_pics/mareep_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Mareep[] = INCBIN_U8("graphics/pokemon/palettes/mareep_palette.gbapal.lz");
-const u8 gMonBackPic_Mareep[] = INCBIN_U8("graphics/pokemon/back_pics/mareep_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Mareep[] = INCBIN_U8("graphics/pokemon/palettes/mareep_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Mareep[] = INCBIN_U32("graphics/pokemon/front_pics/mareep_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Mareep[] = INCBIN_U32("graphics/pokemon/palettes/mareep_palette.gbapal.lz");
+const u32 gMonBackPic_Mareep[] = INCBIN_U32("graphics/pokemon/back_pics/mareep_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Mareep[] = INCBIN_U32("graphics/pokemon/palettes/mareep_shiny_palette.gbapal.lz");
const u8 gMonIcon_Mareep[] = INCBIN_U8("graphics/pokemon/icons/mareep_icon.4bpp");
const u8 gMonFootprint_Mareep[] = INCBIN_U8("graphics/pokemon/footprints/mareep_footprint.1bpp");
-const u8 gMonStillFrontPic_Flaaffy[] = INCBIN_U8("graphics/pokemon/front_pics/flaaffy_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Flaaffy[] = INCBIN_U8("graphics/pokemon/palettes/flaaffy_palette.gbapal.lz");
-const u8 gMonBackPic_Flaaffy[] = INCBIN_U8("graphics/pokemon/back_pics/flaaffy_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Flaaffy[] = INCBIN_U8("graphics/pokemon/palettes/flaaffy_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/front_pics/flaaffy_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/palettes/flaaffy_palette.gbapal.lz");
+const u32 gMonBackPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/back_pics/flaaffy_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/palettes/flaaffy_shiny_palette.gbapal.lz");
const u8 gMonIcon_Flaaffy[] = INCBIN_U8("graphics/pokemon/icons/flaaffy_icon.4bpp");
const u8 gMonFootprint_Flaaffy[] = INCBIN_U8("graphics/pokemon/footprints/flaaffy_footprint.1bpp");
-const u8 gMonStillFrontPic_Ampharos[] = INCBIN_U8("graphics/pokemon/front_pics/ampharos_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ampharos[] = INCBIN_U8("graphics/pokemon/palettes/ampharos_palette.gbapal.lz");
-const u8 gMonBackPic_Ampharos[] = INCBIN_U8("graphics/pokemon/back_pics/ampharos_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ampharos[] = INCBIN_U8("graphics/pokemon/palettes/ampharos_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ampharos[] = INCBIN_U32("graphics/pokemon/front_pics/ampharos_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/palettes/ampharos_palette.gbapal.lz");
+const u32 gMonBackPic_Ampharos[] = INCBIN_U32("graphics/pokemon/back_pics/ampharos_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/palettes/ampharos_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ampharos[] = INCBIN_U8("graphics/pokemon/icons/ampharos_icon.4bpp");
const u8 gMonFootprint_Ampharos[] = INCBIN_U8("graphics/pokemon/footprints/ampharos_footprint.1bpp");
-const u8 gMonStillFrontPic_Bellossom[] = INCBIN_U8("graphics/pokemon/front_pics/bellossom_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Bellossom[] = INCBIN_U8("graphics/pokemon/palettes/bellossom_palette.gbapal.lz");
-const u8 gMonBackPic_Bellossom[] = INCBIN_U8("graphics/pokemon/back_pics/bellossom_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Bellossom[] = INCBIN_U8("graphics/pokemon/palettes/bellossom_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Bellossom[] = INCBIN_U32("graphics/pokemon/front_pics/bellossom_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/palettes/bellossom_palette.gbapal.lz");
+const u32 gMonBackPic_Bellossom[] = INCBIN_U32("graphics/pokemon/back_pics/bellossom_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/palettes/bellossom_shiny_palette.gbapal.lz");
const u8 gMonIcon_Bellossom[] = INCBIN_U8("graphics/pokemon/icons/bellossom_icon.4bpp");
const u8 gMonFootprint_Bellossom[] = INCBIN_U8("graphics/pokemon/footprints/bellossom_footprint.1bpp");
-const u8 gMonStillFrontPic_Marill[] = INCBIN_U8("graphics/pokemon/front_pics/marill_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Marill[] = INCBIN_U8("graphics/pokemon/palettes/marill_palette.gbapal.lz");
-const u8 gMonBackPic_Marill[] = INCBIN_U8("graphics/pokemon/back_pics/marill_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Marill[] = INCBIN_U8("graphics/pokemon/palettes/marill_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Marill[] = INCBIN_U32("graphics/pokemon/front_pics/marill_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Marill[] = INCBIN_U32("graphics/pokemon/palettes/marill_palette.gbapal.lz");
+const u32 gMonBackPic_Marill[] = INCBIN_U32("graphics/pokemon/back_pics/marill_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Marill[] = INCBIN_U32("graphics/pokemon/palettes/marill_shiny_palette.gbapal.lz");
const u8 gMonIcon_Marill[] = INCBIN_U8("graphics/pokemon/icons/marill_icon.4bpp");
const u8 gMonFootprint_Marill[] = INCBIN_U8("graphics/pokemon/footprints/marill_footprint.1bpp");
-const u8 gMonStillFrontPic_Azumarill[] = INCBIN_U8("graphics/pokemon/front_pics/azumarill_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Azumarill[] = INCBIN_U8("graphics/pokemon/palettes/azumarill_palette.gbapal.lz");
-const u8 gMonBackPic_Azumarill[] = INCBIN_U8("graphics/pokemon/back_pics/azumarill_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Azumarill[] = INCBIN_U8("graphics/pokemon/palettes/azumarill_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Azumarill[] = INCBIN_U32("graphics/pokemon/front_pics/azumarill_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/palettes/azumarill_palette.gbapal.lz");
+const u32 gMonBackPic_Azumarill[] = INCBIN_U32("graphics/pokemon/back_pics/azumarill_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/palettes/azumarill_shiny_palette.gbapal.lz");
const u8 gMonIcon_Azumarill[] = INCBIN_U8("graphics/pokemon/icons/azumarill_icon.4bpp");
const u8 gMonFootprint_Azumarill[] = INCBIN_U8("graphics/pokemon/footprints/azumarill_footprint.1bpp");
-const u8 gMonStillFrontPic_Sudowoodo[] = INCBIN_U8("graphics/pokemon/front_pics/sudowoodo_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Sudowoodo[] = INCBIN_U8("graphics/pokemon/palettes/sudowoodo_palette.gbapal.lz");
-const u8 gMonBackPic_Sudowoodo[] = INCBIN_U8("graphics/pokemon/back_pics/sudowoodo_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Sudowoodo[] = INCBIN_U8("graphics/pokemon/palettes/sudowoodo_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/front_pics/sudowoodo_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/palettes/sudowoodo_palette.gbapal.lz");
+const u32 gMonBackPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/back_pics/sudowoodo_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/palettes/sudowoodo_shiny_palette.gbapal.lz");
const u8 gMonIcon_Sudowoodo[] = INCBIN_U8("graphics/pokemon/icons/sudowoodo_icon.4bpp");
const u8 gMonFootprint_Sudowoodo[] = INCBIN_U8("graphics/pokemon/footprints/sudowoodo_footprint.1bpp");
-const u8 gMonStillFrontPic_Politoed[] = INCBIN_U8("graphics/pokemon/front_pics/politoed_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Politoed[] = INCBIN_U8("graphics/pokemon/palettes/politoed_palette.gbapal.lz");
-const u8 gMonBackPic_Politoed[] = INCBIN_U8("graphics/pokemon/back_pics/politoed_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Politoed[] = INCBIN_U8("graphics/pokemon/palettes/politoed_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Politoed[] = INCBIN_U32("graphics/pokemon/front_pics/politoed_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Politoed[] = INCBIN_U32("graphics/pokemon/palettes/politoed_palette.gbapal.lz");
+const u32 gMonBackPic_Politoed[] = INCBIN_U32("graphics/pokemon/back_pics/politoed_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Politoed[] = INCBIN_U32("graphics/pokemon/palettes/politoed_shiny_palette.gbapal.lz");
const u8 gMonIcon_Politoed[] = INCBIN_U8("graphics/pokemon/icons/politoed_icon.4bpp");
const u8 gMonFootprint_Politoed[] = INCBIN_U8("graphics/pokemon/footprints/politoed_footprint.1bpp");
-const u8 gMonStillFrontPic_Hoppip[] = INCBIN_U8("graphics/pokemon/front_pics/hoppip_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Hoppip[] = INCBIN_U8("graphics/pokemon/palettes/hoppip_palette.gbapal.lz");
-const u8 gMonBackPic_Hoppip[] = INCBIN_U8("graphics/pokemon/back_pics/hoppip_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Hoppip[] = INCBIN_U8("graphics/pokemon/palettes/hoppip_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Hoppip[] = INCBIN_U32("graphics/pokemon/front_pics/hoppip_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/palettes/hoppip_palette.gbapal.lz");
+const u32 gMonBackPic_Hoppip[] = INCBIN_U32("graphics/pokemon/back_pics/hoppip_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/palettes/hoppip_shiny_palette.gbapal.lz");
const u8 gMonIcon_Hoppip[] = INCBIN_U8("graphics/pokemon/icons/hoppip_icon.4bpp");
const u8 gMonFootprint_Hoppip[] = INCBIN_U8("graphics/pokemon/footprints/hoppip_footprint.1bpp");
-const u8 gMonStillFrontPic_Skiploom[] = INCBIN_U8("graphics/pokemon/front_pics/skiploom_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Skiploom[] = INCBIN_U8("graphics/pokemon/palettes/skiploom_palette.gbapal.lz");
-const u8 gMonBackPic_Skiploom[] = INCBIN_U8("graphics/pokemon/back_pics/skiploom_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Skiploom[] = INCBIN_U8("graphics/pokemon/palettes/skiploom_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Skiploom[] = INCBIN_U32("graphics/pokemon/front_pics/skiploom_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/palettes/skiploom_palette.gbapal.lz");
+const u32 gMonBackPic_Skiploom[] = INCBIN_U32("graphics/pokemon/back_pics/skiploom_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/palettes/skiploom_shiny_palette.gbapal.lz");
const u8 gMonIcon_Skiploom[] = INCBIN_U8("graphics/pokemon/icons/skiploom_icon.4bpp");
const u8 gMonFootprint_Skiploom[] = INCBIN_U8("graphics/pokemon/footprints/skiploom_footprint.1bpp");
-const u8 gMonStillFrontPic_Jumpluff[] = INCBIN_U8("graphics/pokemon/front_pics/jumpluff_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Jumpluff[] = INCBIN_U8("graphics/pokemon/palettes/jumpluff_palette.gbapal.lz");
-const u8 gMonBackPic_Jumpluff[] = INCBIN_U8("graphics/pokemon/back_pics/jumpluff_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Jumpluff[] = INCBIN_U8("graphics/pokemon/palettes/jumpluff_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/front_pics/jumpluff_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/palettes/jumpluff_palette.gbapal.lz");
+const u32 gMonBackPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/back_pics/jumpluff_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/palettes/jumpluff_shiny_palette.gbapal.lz");
const u8 gMonIcon_Jumpluff[] = INCBIN_U8("graphics/pokemon/icons/jumpluff_icon.4bpp");
const u8 gMonFootprint_Jumpluff[] = INCBIN_U8("graphics/pokemon/footprints/jumpluff_footprint.1bpp");
-const u8 gMonStillFrontPic_Aipom[] = INCBIN_U8("graphics/pokemon/front_pics/aipom_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Aipom[] = INCBIN_U8("graphics/pokemon/palettes/aipom_palette.gbapal.lz");
-const u8 gMonBackPic_Aipom[] = INCBIN_U8("graphics/pokemon/back_pics/aipom_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Aipom[] = INCBIN_U8("graphics/pokemon/palettes/aipom_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Aipom[] = INCBIN_U32("graphics/pokemon/front_pics/aipom_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Aipom[] = INCBIN_U32("graphics/pokemon/palettes/aipom_palette.gbapal.lz");
+const u32 gMonBackPic_Aipom[] = INCBIN_U32("graphics/pokemon/back_pics/aipom_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Aipom[] = INCBIN_U32("graphics/pokemon/palettes/aipom_shiny_palette.gbapal.lz");
const u8 gMonIcon_Aipom[] = INCBIN_U8("graphics/pokemon/icons/aipom_icon.4bpp");
const u8 gMonFootprint_Aipom[] = INCBIN_U8("graphics/pokemon/footprints/aipom_footprint.1bpp");
-const u8 gMonStillFrontPic_Sunkern[] = INCBIN_U8("graphics/pokemon/front_pics/sunkern_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Sunkern[] = INCBIN_U8("graphics/pokemon/palettes/sunkern_palette.gbapal.lz");
-const u8 gMonBackPic_Sunkern[] = INCBIN_U8("graphics/pokemon/back_pics/sunkern_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Sunkern[] = INCBIN_U8("graphics/pokemon/palettes/sunkern_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Sunkern[] = INCBIN_U32("graphics/pokemon/front_pics/sunkern_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/palettes/sunkern_palette.gbapal.lz");
+const u32 gMonBackPic_Sunkern[] = INCBIN_U32("graphics/pokemon/back_pics/sunkern_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/palettes/sunkern_shiny_palette.gbapal.lz");
const u8 gMonIcon_Sunkern[] = INCBIN_U8("graphics/pokemon/icons/sunkern_icon.4bpp");
const u8 gMonFootprint_Sunkern[] = INCBIN_U8("graphics/pokemon/footprints/sunkern_footprint.1bpp");
-const u8 gMonStillFrontPic_Sunflora[] = INCBIN_U8("graphics/pokemon/front_pics/sunflora_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Sunflora[] = INCBIN_U8("graphics/pokemon/palettes/sunflora_palette.gbapal.lz");
-const u8 gMonBackPic_Sunflora[] = INCBIN_U8("graphics/pokemon/back_pics/sunflora_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Sunflora[] = INCBIN_U8("graphics/pokemon/palettes/sunflora_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Sunflora[] = INCBIN_U32("graphics/pokemon/front_pics/sunflora_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/palettes/sunflora_palette.gbapal.lz");
+const u32 gMonBackPic_Sunflora[] = INCBIN_U32("graphics/pokemon/back_pics/sunflora_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/palettes/sunflora_shiny_palette.gbapal.lz");
const u8 gMonIcon_Sunflora[] = INCBIN_U8("graphics/pokemon/icons/sunflora_icon.4bpp");
const u8 gMonFootprint_Sunflora[] = INCBIN_U8("graphics/pokemon/footprints/sunflora_footprint.1bpp");
-const u8 gMonStillFrontPic_Yanma[] = INCBIN_U8("graphics/pokemon/front_pics/yanma_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Yanma[] = INCBIN_U8("graphics/pokemon/palettes/yanma_palette.gbapal.lz");
-const u8 gMonBackPic_Yanma[] = INCBIN_U8("graphics/pokemon/back_pics/yanma_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Yanma[] = INCBIN_U8("graphics/pokemon/palettes/yanma_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Yanma[] = INCBIN_U32("graphics/pokemon/front_pics/yanma_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Yanma[] = INCBIN_U32("graphics/pokemon/palettes/yanma_palette.gbapal.lz");
+const u32 gMonBackPic_Yanma[] = INCBIN_U32("graphics/pokemon/back_pics/yanma_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Yanma[] = INCBIN_U32("graphics/pokemon/palettes/yanma_shiny_palette.gbapal.lz");
const u8 gMonIcon_Yanma[] = INCBIN_U8("graphics/pokemon/icons/yanma_icon.4bpp");
const u8 gMonFootprint_Yanma[] = INCBIN_U8("graphics/pokemon/footprints/yanma_footprint.1bpp");
-const u8 gMonStillFrontPic_Wooper[] = INCBIN_U8("graphics/pokemon/front_pics/wooper_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Wooper[] = INCBIN_U8("graphics/pokemon/palettes/wooper_palette.gbapal.lz");
-const u8 gMonBackPic_Wooper[] = INCBIN_U8("graphics/pokemon/back_pics/wooper_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Wooper[] = INCBIN_U8("graphics/pokemon/palettes/wooper_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Wooper[] = INCBIN_U32("graphics/pokemon/front_pics/wooper_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Wooper[] = INCBIN_U32("graphics/pokemon/palettes/wooper_palette.gbapal.lz");
+const u32 gMonBackPic_Wooper[] = INCBIN_U32("graphics/pokemon/back_pics/wooper_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Wooper[] = INCBIN_U32("graphics/pokemon/palettes/wooper_shiny_palette.gbapal.lz");
const u8 gMonIcon_Wooper[] = INCBIN_U8("graphics/pokemon/icons/wooper_icon.4bpp");
const u8 gMonFootprint_Wooper[] = INCBIN_U8("graphics/pokemon/footprints/wooper_footprint.1bpp");
-const u8 gMonStillFrontPic_Quagsire[] = INCBIN_U8("graphics/pokemon/front_pics/quagsire_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Quagsire[] = INCBIN_U8("graphics/pokemon/palettes/quagsire_palette.gbapal.lz");
-const u8 gMonBackPic_Quagsire[] = INCBIN_U8("graphics/pokemon/back_pics/quagsire_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Quagsire[] = INCBIN_U8("graphics/pokemon/palettes/quagsire_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Quagsire[] = INCBIN_U32("graphics/pokemon/front_pics/quagsire_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/palettes/quagsire_palette.gbapal.lz");
+const u32 gMonBackPic_Quagsire[] = INCBIN_U32("graphics/pokemon/back_pics/quagsire_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/palettes/quagsire_shiny_palette.gbapal.lz");
const u8 gMonIcon_Quagsire[] = INCBIN_U8("graphics/pokemon/icons/quagsire_icon.4bpp");
const u8 gMonFootprint_Quagsire[] = INCBIN_U8("graphics/pokemon/footprints/quagsire_footprint.1bpp");
-const u8 gMonStillFrontPic_Espeon[] = INCBIN_U8("graphics/pokemon/front_pics/espeon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Espeon[] = INCBIN_U8("graphics/pokemon/palettes/espeon_palette.gbapal.lz");
-const u8 gMonBackPic_Espeon[] = INCBIN_U8("graphics/pokemon/back_pics/espeon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Espeon[] = INCBIN_U8("graphics/pokemon/palettes/espeon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Espeon[] = INCBIN_U32("graphics/pokemon/front_pics/espeon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Espeon[] = INCBIN_U32("graphics/pokemon/palettes/espeon_palette.gbapal.lz");
+const u32 gMonBackPic_Espeon[] = INCBIN_U32("graphics/pokemon/back_pics/espeon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Espeon[] = INCBIN_U32("graphics/pokemon/palettes/espeon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Espeon[] = INCBIN_U8("graphics/pokemon/icons/espeon_icon.4bpp");
const u8 gMonFootprint_Espeon[] = INCBIN_U8("graphics/pokemon/footprints/espeon_footprint.1bpp");
-const u8 gMonStillFrontPic_Umbreon[] = INCBIN_U8("graphics/pokemon/front_pics/umbreon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Umbreon[] = INCBIN_U8("graphics/pokemon/palettes/umbreon_palette.gbapal.lz");
-const u8 gMonBackPic_Umbreon[] = INCBIN_U8("graphics/pokemon/back_pics/umbreon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Umbreon[] = INCBIN_U8("graphics/pokemon/palettes/umbreon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Umbreon[] = INCBIN_U32("graphics/pokemon/front_pics/umbreon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/palettes/umbreon_palette.gbapal.lz");
+const u32 gMonBackPic_Umbreon[] = INCBIN_U32("graphics/pokemon/back_pics/umbreon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/palettes/umbreon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Umbreon[] = INCBIN_U8("graphics/pokemon/icons/umbreon_icon.4bpp");
const u8 gMonFootprint_Umbreon[] = INCBIN_U8("graphics/pokemon/footprints/umbreon_footprint.1bpp");
-const u8 gMonStillFrontPic_Murkrow[] = INCBIN_U8("graphics/pokemon/front_pics/murkrow_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Murkrow[] = INCBIN_U8("graphics/pokemon/palettes/murkrow_palette.gbapal.lz");
-const u8 gMonBackPic_Murkrow[] = INCBIN_U8("graphics/pokemon/back_pics/murkrow_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Murkrow[] = INCBIN_U8("graphics/pokemon/palettes/murkrow_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Murkrow[] = INCBIN_U32("graphics/pokemon/front_pics/murkrow_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/palettes/murkrow_palette.gbapal.lz");
+const u32 gMonBackPic_Murkrow[] = INCBIN_U32("graphics/pokemon/back_pics/murkrow_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/palettes/murkrow_shiny_palette.gbapal.lz");
const u8 gMonIcon_Murkrow[] = INCBIN_U8("graphics/pokemon/icons/murkrow_icon.4bpp");
const u8 gMonFootprint_Murkrow[] = INCBIN_U8("graphics/pokemon/footprints/murkrow_footprint.1bpp");
-const u8 gMonStillFrontPic_Slowking[] = INCBIN_U8("graphics/pokemon/front_pics/slowking_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Slowking[] = INCBIN_U8("graphics/pokemon/palettes/slowking_palette.gbapal.lz");
-const u8 gMonBackPic_Slowking[] = INCBIN_U8("graphics/pokemon/back_pics/slowking_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Slowking[] = INCBIN_U8("graphics/pokemon/palettes/slowking_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Slowking[] = INCBIN_U32("graphics/pokemon/front_pics/slowking_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Slowking[] = INCBIN_U32("graphics/pokemon/palettes/slowking_palette.gbapal.lz");
+const u32 gMonBackPic_Slowking[] = INCBIN_U32("graphics/pokemon/back_pics/slowking_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Slowking[] = INCBIN_U32("graphics/pokemon/palettes/slowking_shiny_palette.gbapal.lz");
const u8 gMonIcon_Slowking[] = INCBIN_U8("graphics/pokemon/icons/slowking_icon.4bpp");
const u8 gMonFootprint_Slowking[] = INCBIN_U8("graphics/pokemon/footprints/slowking_footprint.1bpp");
-const u8 gMonStillFrontPic_Misdreavus[] = INCBIN_U8("graphics/pokemon/front_pics/misdreavus_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Misdreavus[] = INCBIN_U8("graphics/pokemon/palettes/misdreavus_palette.gbapal.lz");
-const u8 gMonBackPic_Misdreavus[] = INCBIN_U8("graphics/pokemon/back_pics/misdreavus_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Misdreavus[] = INCBIN_U8("graphics/pokemon/palettes/misdreavus_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/front_pics/misdreavus_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/palettes/misdreavus_palette.gbapal.lz");
+const u32 gMonBackPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/back_pics/misdreavus_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/palettes/misdreavus_shiny_palette.gbapal.lz");
const u8 gMonIcon_Misdreavus[] = INCBIN_U8("graphics/pokemon/icons/misdreavus_icon.4bpp");
const u8 gMonFootprint_Misdreavus[] = INCBIN_U8("graphics/pokemon/footprints/misdreavus_footprint.1bpp");
-const u8 gMonStillFrontPic_UnownA[] = INCBIN_U8("graphics/pokemon/front_pics/unown_a_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Unown[] = INCBIN_U8("graphics/pokemon/palettes/unown_palette.gbapal.lz");
-const u8 gMonBackPic_UnownA[] = INCBIN_U8("graphics/pokemon/back_pics/unown_a_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Unown[] = INCBIN_U8("graphics/pokemon/palettes/unown_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_UnownA[] = INCBIN_U32("graphics/pokemon/front_pics/unown_a_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Unown[] = INCBIN_U32("graphics/pokemon/palettes/unown_palette.gbapal.lz");
+const u32 gMonBackPic_UnownA[] = INCBIN_U32("graphics/pokemon/back_pics/unown_a_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Unown[] = INCBIN_U32("graphics/pokemon/palettes/unown_shiny_palette.gbapal.lz");
const u8 gMonIcon_UnownA[] = INCBIN_U8("graphics/pokemon/icons/unown_a_icon.4bpp");
const u8 gMonFootprint_Unown[] = INCBIN_U8("graphics/pokemon/footprints/unown_footprint.1bpp");
-const u8 gMonStillFrontPic_Wobbuffet[] = INCBIN_U8("graphics/pokemon/front_pics/wobbuffet_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Wobbuffet[] = INCBIN_U8("graphics/pokemon/palettes/wobbuffet_palette.gbapal.lz");
-const u8 gMonBackPic_Wobbuffet[] = INCBIN_U8("graphics/pokemon/back_pics/wobbuffet_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Wobbuffet[] = INCBIN_U8("graphics/pokemon/palettes/wobbuffet_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/front_pics/wobbuffet_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/palettes/wobbuffet_palette.gbapal.lz");
+const u32 gMonBackPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/back_pics/wobbuffet_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/palettes/wobbuffet_shiny_palette.gbapal.lz");
const u8 gMonIcon_Wobbuffet[] = INCBIN_U8("graphics/pokemon/icons/wobbuffet_icon.4bpp");
const u8 gMonFootprint_Wobbuffet[] = INCBIN_U8("graphics/pokemon/footprints/wobbuffet_footprint.1bpp");
-const u8 gMonStillFrontPic_Girafarig[] = INCBIN_U8("graphics/pokemon/front_pics/girafarig_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Girafarig[] = INCBIN_U8("graphics/pokemon/palettes/girafarig_palette.gbapal.lz");
-const u8 gMonBackPic_Girafarig[] = INCBIN_U8("graphics/pokemon/back_pics/girafarig_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Girafarig[] = INCBIN_U8("graphics/pokemon/palettes/girafarig_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Girafarig[] = INCBIN_U32("graphics/pokemon/front_pics/girafarig_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/palettes/girafarig_palette.gbapal.lz");
+const u32 gMonBackPic_Girafarig[] = INCBIN_U32("graphics/pokemon/back_pics/girafarig_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/palettes/girafarig_shiny_palette.gbapal.lz");
const u8 gMonIcon_Girafarig[] = INCBIN_U8("graphics/pokemon/icons/girafarig_icon.4bpp");
const u8 gMonFootprint_Girafarig[] = INCBIN_U8("graphics/pokemon/footprints/girafarig_footprint.1bpp");
-const u8 gMonStillFrontPic_Pineco[] = INCBIN_U8("graphics/pokemon/front_pics/pineco_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Pineco[] = INCBIN_U8("graphics/pokemon/palettes/pineco_palette.gbapal.lz");
-const u8 gMonBackPic_Pineco[] = INCBIN_U8("graphics/pokemon/back_pics/pineco_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Pineco[] = INCBIN_U8("graphics/pokemon/palettes/pineco_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Pineco[] = INCBIN_U32("graphics/pokemon/front_pics/pineco_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Pineco[] = INCBIN_U32("graphics/pokemon/palettes/pineco_palette.gbapal.lz");
+const u32 gMonBackPic_Pineco[] = INCBIN_U32("graphics/pokemon/back_pics/pineco_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Pineco[] = INCBIN_U32("graphics/pokemon/palettes/pineco_shiny_palette.gbapal.lz");
const u8 gMonIcon_Pineco[] = INCBIN_U8("graphics/pokemon/icons/pineco_icon.4bpp");
const u8 gMonFootprint_Pineco[] = INCBIN_U8("graphics/pokemon/footprints/pineco_footprint.1bpp");
-const u8 gMonStillFrontPic_Forretress[] = INCBIN_U8("graphics/pokemon/front_pics/forretress_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Forretress[] = INCBIN_U8("graphics/pokemon/palettes/forretress_palette.gbapal.lz");
-const u8 gMonBackPic_Forretress[] = INCBIN_U8("graphics/pokemon/back_pics/forretress_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Forretress[] = INCBIN_U8("graphics/pokemon/palettes/forretress_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Forretress[] = INCBIN_U32("graphics/pokemon/front_pics/forretress_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Forretress[] = INCBIN_U32("graphics/pokemon/palettes/forretress_palette.gbapal.lz");
+const u32 gMonBackPic_Forretress[] = INCBIN_U32("graphics/pokemon/back_pics/forretress_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Forretress[] = INCBIN_U32("graphics/pokemon/palettes/forretress_shiny_palette.gbapal.lz");
const u8 gMonIcon_Forretress[] = INCBIN_U8("graphics/pokemon/icons/forretress_icon.4bpp");
const u8 gMonFootprint_Forretress[] = INCBIN_U8("graphics/pokemon/footprints/forretress_footprint.1bpp");
-const u8 gMonStillFrontPic_Dunsparce[] = INCBIN_U8("graphics/pokemon/front_pics/dunsparce_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Dunsparce[] = INCBIN_U8("graphics/pokemon/palettes/dunsparce_palette.gbapal.lz");
-const u8 gMonBackPic_Dunsparce[] = INCBIN_U8("graphics/pokemon/back_pics/dunsparce_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Dunsparce[] = INCBIN_U8("graphics/pokemon/palettes/dunsparce_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/front_pics/dunsparce_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/palettes/dunsparce_palette.gbapal.lz");
+const u32 gMonBackPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/back_pics/dunsparce_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/palettes/dunsparce_shiny_palette.gbapal.lz");
const u8 gMonIcon_Dunsparce[] = INCBIN_U8("graphics/pokemon/icons/dunsparce_icon.4bpp");
const u8 gMonFootprint_Dunsparce[] = INCBIN_U8("graphics/pokemon/footprints/dunsparce_footprint.1bpp");
-const u8 gMonStillFrontPic_Gligar[] = INCBIN_U8("graphics/pokemon/front_pics/gligar_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Gligar[] = INCBIN_U8("graphics/pokemon/palettes/gligar_palette.gbapal.lz");
-const u8 gMonBackPic_Gligar[] = INCBIN_U8("graphics/pokemon/back_pics/gligar_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Gligar[] = INCBIN_U8("graphics/pokemon/palettes/gligar_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Gligar[] = INCBIN_U32("graphics/pokemon/front_pics/gligar_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Gligar[] = INCBIN_U32("graphics/pokemon/palettes/gligar_palette.gbapal.lz");
+const u32 gMonBackPic_Gligar[] = INCBIN_U32("graphics/pokemon/back_pics/gligar_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Gligar[] = INCBIN_U32("graphics/pokemon/palettes/gligar_shiny_palette.gbapal.lz");
const u8 gMonIcon_Gligar[] = INCBIN_U8("graphics/pokemon/icons/gligar_icon.4bpp");
const u8 gMonFootprint_Gligar[] = INCBIN_U8("graphics/pokemon/footprints/gligar_footprint.1bpp");
-const u8 gMonStillFrontPic_Steelix[] = INCBIN_U8("graphics/pokemon/front_pics/steelix_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Steelix[] = INCBIN_U8("graphics/pokemon/palettes/steelix_palette.gbapal.lz");
-const u8 gMonBackPic_Steelix[] = INCBIN_U8("graphics/pokemon/back_pics/steelix_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Steelix[] = INCBIN_U8("graphics/pokemon/palettes/steelix_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Steelix[] = INCBIN_U32("graphics/pokemon/front_pics/steelix_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Steelix[] = INCBIN_U32("graphics/pokemon/palettes/steelix_palette.gbapal.lz");
+const u32 gMonBackPic_Steelix[] = INCBIN_U32("graphics/pokemon/back_pics/steelix_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Steelix[] = INCBIN_U32("graphics/pokemon/palettes/steelix_shiny_palette.gbapal.lz");
const u8 gMonIcon_Steelix[] = INCBIN_U8("graphics/pokemon/icons/steelix_icon.4bpp");
const u8 gMonFootprint_Steelix[] = INCBIN_U8("graphics/pokemon/footprints/steelix_footprint.1bpp");
-const u8 gMonStillFrontPic_Snubbull[] = INCBIN_U8("graphics/pokemon/front_pics/snubbull_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Snubbull[] = INCBIN_U8("graphics/pokemon/palettes/snubbull_palette.gbapal.lz");
-const u8 gMonBackPic_Snubbull[] = INCBIN_U8("graphics/pokemon/back_pics/snubbull_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Snubbull[] = INCBIN_U8("graphics/pokemon/palettes/snubbull_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Snubbull[] = INCBIN_U32("graphics/pokemon/front_pics/snubbull_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/palettes/snubbull_palette.gbapal.lz");
+const u32 gMonBackPic_Snubbull[] = INCBIN_U32("graphics/pokemon/back_pics/snubbull_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/palettes/snubbull_shiny_palette.gbapal.lz");
const u8 gMonIcon_Snubbull[] = INCBIN_U8("graphics/pokemon/icons/snubbull_icon.4bpp");
const u8 gMonFootprint_Snubbull[] = INCBIN_U8("graphics/pokemon/footprints/snubbull_footprint.1bpp");
-const u8 gMonStillFrontPic_Granbull[] = INCBIN_U8("graphics/pokemon/front_pics/granbull_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Granbull[] = INCBIN_U8("graphics/pokemon/palettes/granbull_palette.gbapal.lz");
-const u8 gMonBackPic_Granbull[] = INCBIN_U8("graphics/pokemon/back_pics/granbull_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Granbull[] = INCBIN_U8("graphics/pokemon/palettes/granbull_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Granbull[] = INCBIN_U32("graphics/pokemon/front_pics/granbull_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Granbull[] = INCBIN_U32("graphics/pokemon/palettes/granbull_palette.gbapal.lz");
+const u32 gMonBackPic_Granbull[] = INCBIN_U32("graphics/pokemon/back_pics/granbull_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Granbull[] = INCBIN_U32("graphics/pokemon/palettes/granbull_shiny_palette.gbapal.lz");
const u8 gMonIcon_Granbull[] = INCBIN_U8("graphics/pokemon/icons/granbull_icon.4bpp");
const u8 gMonFootprint_Granbull[] = INCBIN_U8("graphics/pokemon/footprints/granbull_footprint.1bpp");
-const u8 gMonStillFrontPic_Qwilfish[] = INCBIN_U8("graphics/pokemon/front_pics/qwilfish_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Qwilfish[] = INCBIN_U8("graphics/pokemon/palettes/qwilfish_palette.gbapal.lz");
-const u8 gMonBackPic_Qwilfish[] = INCBIN_U8("graphics/pokemon/back_pics/qwilfish_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Qwilfish[] = INCBIN_U8("graphics/pokemon/palettes/qwilfish_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/front_pics/qwilfish_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/palettes/qwilfish_palette.gbapal.lz");
+const u32 gMonBackPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/back_pics/qwilfish_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/palettes/qwilfish_shiny_palette.gbapal.lz");
const u8 gMonIcon_Qwilfish[] = INCBIN_U8("graphics/pokemon/icons/qwilfish_icon.4bpp");
const u8 gMonFootprint_Qwilfish[] = INCBIN_U8("graphics/pokemon/footprints/qwilfish_footprint.1bpp");
-const u8 gMonStillFrontPic_Scizor[] = INCBIN_U8("graphics/pokemon/front_pics/scizor_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Scizor[] = INCBIN_U8("graphics/pokemon/palettes/scizor_palette.gbapal.lz");
-const u8 gMonBackPic_Scizor[] = INCBIN_U8("graphics/pokemon/back_pics/scizor_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Scizor[] = INCBIN_U8("graphics/pokemon/palettes/scizor_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Scizor[] = INCBIN_U32("graphics/pokemon/front_pics/scizor_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Scizor[] = INCBIN_U32("graphics/pokemon/palettes/scizor_palette.gbapal.lz");
+const u32 gMonBackPic_Scizor[] = INCBIN_U32("graphics/pokemon/back_pics/scizor_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Scizor[] = INCBIN_U32("graphics/pokemon/palettes/scizor_shiny_palette.gbapal.lz");
const u8 gMonIcon_Scizor[] = INCBIN_U8("graphics/pokemon/icons/scizor_icon.4bpp");
const u8 gMonFootprint_Scizor[] = INCBIN_U8("graphics/pokemon/footprints/scizor_footprint.1bpp");
-const u8 gMonStillFrontPic_Shuckle[] = INCBIN_U8("graphics/pokemon/front_pics/shuckle_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Shuckle[] = INCBIN_U8("graphics/pokemon/palettes/shuckle_palette.gbapal.lz");
-const u8 gMonBackPic_Shuckle[] = INCBIN_U8("graphics/pokemon/back_pics/shuckle_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Shuckle[] = INCBIN_U8("graphics/pokemon/palettes/shuckle_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Shuckle[] = INCBIN_U32("graphics/pokemon/front_pics/shuckle_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/palettes/shuckle_palette.gbapal.lz");
+const u32 gMonBackPic_Shuckle[] = INCBIN_U32("graphics/pokemon/back_pics/shuckle_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/palettes/shuckle_shiny_palette.gbapal.lz");
const u8 gMonIcon_Shuckle[] = INCBIN_U8("graphics/pokemon/icons/shuckle_icon.4bpp");
const u8 gMonFootprint_Shuckle[] = INCBIN_U8("graphics/pokemon/footprints/shuckle_footprint.1bpp");
-const u8 gMonStillFrontPic_Heracross[] = INCBIN_U8("graphics/pokemon/front_pics/heracross_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Heracross[] = INCBIN_U8("graphics/pokemon/palettes/heracross_palette.gbapal.lz");
-const u8 gMonBackPic_Heracross[] = INCBIN_U8("graphics/pokemon/back_pics/heracross_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Heracross[] = INCBIN_U8("graphics/pokemon/palettes/heracross_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Heracross[] = INCBIN_U32("graphics/pokemon/front_pics/heracross_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Heracross[] = INCBIN_U32("graphics/pokemon/palettes/heracross_palette.gbapal.lz");
+const u32 gMonBackPic_Heracross[] = INCBIN_U32("graphics/pokemon/back_pics/heracross_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Heracross[] = INCBIN_U32("graphics/pokemon/palettes/heracross_shiny_palette.gbapal.lz");
const u8 gMonIcon_Heracross[] = INCBIN_U8("graphics/pokemon/icons/heracross_icon.4bpp");
const u8 gMonFootprint_Heracross[] = INCBIN_U8("graphics/pokemon/footprints/heracross_footprint.1bpp");
-const u8 gMonStillFrontPic_Sneasel[] = INCBIN_U8("graphics/pokemon/front_pics/sneasel_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Sneasel[] = INCBIN_U8("graphics/pokemon/palettes/sneasel_palette.gbapal.lz");
-const u8 gMonBackPic_Sneasel[] = INCBIN_U8("graphics/pokemon/back_pics/sneasel_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Sneasel[] = INCBIN_U8("graphics/pokemon/palettes/sneasel_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Sneasel[] = INCBIN_U32("graphics/pokemon/front_pics/sneasel_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/palettes/sneasel_palette.gbapal.lz");
+const u32 gMonBackPic_Sneasel[] = INCBIN_U32("graphics/pokemon/back_pics/sneasel_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/palettes/sneasel_shiny_palette.gbapal.lz");
const u8 gMonIcon_Sneasel[] = INCBIN_U8("graphics/pokemon/icons/sneasel_icon.4bpp");
const u8 gMonFootprint_Sneasel[] = INCBIN_U8("graphics/pokemon/footprints/sneasel_footprint.1bpp");
-const u8 gMonStillFrontPic_Teddiursa[] = INCBIN_U8("graphics/pokemon/front_pics/teddiursa_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Teddiursa[] = INCBIN_U8("graphics/pokemon/palettes/teddiursa_palette.gbapal.lz");
-const u8 gMonBackPic_Teddiursa[] = INCBIN_U8("graphics/pokemon/back_pics/teddiursa_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Teddiursa[] = INCBIN_U8("graphics/pokemon/palettes/teddiursa_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/front_pics/teddiursa_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/palettes/teddiursa_palette.gbapal.lz");
+const u32 gMonBackPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/back_pics/teddiursa_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/palettes/teddiursa_shiny_palette.gbapal.lz");
const u8 gMonIcon_Teddiursa[] = INCBIN_U8("graphics/pokemon/icons/teddiursa_icon.4bpp");
const u8 gMonFootprint_Teddiursa[] = INCBIN_U8("graphics/pokemon/footprints/teddiursa_footprint.1bpp");
-const u8 gMonStillFrontPic_Ursaring[] = INCBIN_U8("graphics/pokemon/front_pics/ursaring_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ursaring[] = INCBIN_U8("graphics/pokemon/palettes/ursaring_palette.gbapal.lz");
-const u8 gMonBackPic_Ursaring[] = INCBIN_U8("graphics/pokemon/back_pics/ursaring_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ursaring[] = INCBIN_U8("graphics/pokemon/palettes/ursaring_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ursaring[] = INCBIN_U32("graphics/pokemon/front_pics/ursaring_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/palettes/ursaring_palette.gbapal.lz");
+const u32 gMonBackPic_Ursaring[] = INCBIN_U32("graphics/pokemon/back_pics/ursaring_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/palettes/ursaring_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ursaring[] = INCBIN_U8("graphics/pokemon/icons/ursaring_icon.4bpp");
const u8 gMonFootprint_Ursaring[] = INCBIN_U8("graphics/pokemon/footprints/ursaring_footprint.1bpp");
-const u8 gMonStillFrontPic_Slugma[] = INCBIN_U8("graphics/pokemon/front_pics/slugma_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Slugma[] = INCBIN_U8("graphics/pokemon/palettes/slugma_palette.gbapal.lz");
-const u8 gMonBackPic_Slugma[] = INCBIN_U8("graphics/pokemon/back_pics/slugma_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Slugma[] = INCBIN_U8("graphics/pokemon/palettes/slugma_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Slugma[] = INCBIN_U32("graphics/pokemon/front_pics/slugma_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Slugma[] = INCBIN_U32("graphics/pokemon/palettes/slugma_palette.gbapal.lz");
+const u32 gMonBackPic_Slugma[] = INCBIN_U32("graphics/pokemon/back_pics/slugma_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Slugma[] = INCBIN_U32("graphics/pokemon/palettes/slugma_shiny_palette.gbapal.lz");
const u8 gMonIcon_Slugma[] = INCBIN_U8("graphics/pokemon/icons/slugma_icon.4bpp");
const u8 gMonFootprint_Slugma[] = INCBIN_U8("graphics/pokemon/footprints/slugma_footprint.1bpp");
-const u8 gMonStillFrontPic_Magcargo[] = INCBIN_U8("graphics/pokemon/front_pics/magcargo_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Magcargo[] = INCBIN_U8("graphics/pokemon/palettes/magcargo_palette.gbapal.lz");
-const u8 gMonBackPic_Magcargo[] = INCBIN_U8("graphics/pokemon/back_pics/magcargo_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Magcargo[] = INCBIN_U8("graphics/pokemon/palettes/magcargo_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Magcargo[] = INCBIN_U32("graphics/pokemon/front_pics/magcargo_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/palettes/magcargo_palette.gbapal.lz");
+const u32 gMonBackPic_Magcargo[] = INCBIN_U32("graphics/pokemon/back_pics/magcargo_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/palettes/magcargo_shiny_palette.gbapal.lz");
const u8 gMonIcon_Magcargo[] = INCBIN_U8("graphics/pokemon/icons/magcargo_icon.4bpp");
const u8 gMonFootprint_Magcargo[] = INCBIN_U8("graphics/pokemon/footprints/magcargo_footprint.1bpp");
-const u8 gMonStillFrontPic_Swinub[] = INCBIN_U8("graphics/pokemon/front_pics/swinub_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Swinub[] = INCBIN_U8("graphics/pokemon/palettes/swinub_palette.gbapal.lz");
-const u8 gMonBackPic_Swinub[] = INCBIN_U8("graphics/pokemon/back_pics/swinub_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Swinub[] = INCBIN_U8("graphics/pokemon/palettes/swinub_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Swinub[] = INCBIN_U32("graphics/pokemon/front_pics/swinub_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Swinub[] = INCBIN_U32("graphics/pokemon/palettes/swinub_palette.gbapal.lz");
+const u32 gMonBackPic_Swinub[] = INCBIN_U32("graphics/pokemon/back_pics/swinub_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Swinub[] = INCBIN_U32("graphics/pokemon/palettes/swinub_shiny_palette.gbapal.lz");
const u8 gMonIcon_Swinub[] = INCBIN_U8("graphics/pokemon/icons/swinub_icon.4bpp");
const u8 gMonFootprint_Swinub[] = INCBIN_U8("graphics/pokemon/footprints/swinub_footprint.1bpp");
-const u8 gMonStillFrontPic_Piloswine[] = INCBIN_U8("graphics/pokemon/front_pics/piloswine_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Piloswine[] = INCBIN_U8("graphics/pokemon/palettes/piloswine_palette.gbapal.lz");
-const u8 gMonBackPic_Piloswine[] = INCBIN_U8("graphics/pokemon/back_pics/piloswine_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Piloswine[] = INCBIN_U8("graphics/pokemon/palettes/piloswine_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Piloswine[] = INCBIN_U32("graphics/pokemon/front_pics/piloswine_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/palettes/piloswine_palette.gbapal.lz");
+const u32 gMonBackPic_Piloswine[] = INCBIN_U32("graphics/pokemon/back_pics/piloswine_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/palettes/piloswine_shiny_palette.gbapal.lz");
const u8 gMonIcon_Piloswine[] = INCBIN_U8("graphics/pokemon/icons/piloswine_icon.4bpp");
const u8 gMonFootprint_Piloswine[] = INCBIN_U8("graphics/pokemon/footprints/piloswine_footprint.1bpp");
-const u8 gMonStillFrontPic_Corsola[] = INCBIN_U8("graphics/pokemon/front_pics/corsola_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Corsola[] = INCBIN_U8("graphics/pokemon/palettes/corsola_palette.gbapal.lz");
-const u8 gMonBackPic_Corsola[] = INCBIN_U8("graphics/pokemon/back_pics/corsola_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Corsola[] = INCBIN_U8("graphics/pokemon/palettes/corsola_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Corsola[] = INCBIN_U32("graphics/pokemon/front_pics/corsola_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Corsola[] = INCBIN_U32("graphics/pokemon/palettes/corsola_palette.gbapal.lz");
+const u32 gMonBackPic_Corsola[] = INCBIN_U32("graphics/pokemon/back_pics/corsola_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Corsola[] = INCBIN_U32("graphics/pokemon/palettes/corsola_shiny_palette.gbapal.lz");
const u8 gMonIcon_Corsola[] = INCBIN_U8("graphics/pokemon/icons/corsola_icon.4bpp");
const u8 gMonFootprint_Corsola[] = INCBIN_U8("graphics/pokemon/footprints/corsola_footprint.1bpp");
-const u8 gMonStillFrontPic_Remoraid[] = INCBIN_U8("graphics/pokemon/front_pics/remoraid_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Remoraid[] = INCBIN_U8("graphics/pokemon/palettes/remoraid_palette.gbapal.lz");
-const u8 gMonBackPic_Remoraid[] = INCBIN_U8("graphics/pokemon/back_pics/remoraid_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Remoraid[] = INCBIN_U8("graphics/pokemon/palettes/remoraid_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Remoraid[] = INCBIN_U32("graphics/pokemon/front_pics/remoraid_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/palettes/remoraid_palette.gbapal.lz");
+const u32 gMonBackPic_Remoraid[] = INCBIN_U32("graphics/pokemon/back_pics/remoraid_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/palettes/remoraid_shiny_palette.gbapal.lz");
const u8 gMonIcon_Remoraid[] = INCBIN_U8("graphics/pokemon/icons/remoraid_icon.4bpp");
const u8 gMonFootprint_Remoraid[] = INCBIN_U8("graphics/pokemon/footprints/remoraid_footprint.1bpp");
-const u8 gMonStillFrontPic_Octillery[] = INCBIN_U8("graphics/pokemon/front_pics/octillery_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Octillery[] = INCBIN_U8("graphics/pokemon/palettes/octillery_palette.gbapal.lz");
-const u8 gMonBackPic_Octillery[] = INCBIN_U8("graphics/pokemon/back_pics/octillery_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Octillery[] = INCBIN_U8("graphics/pokemon/palettes/octillery_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Octillery[] = INCBIN_U32("graphics/pokemon/front_pics/octillery_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Octillery[] = INCBIN_U32("graphics/pokemon/palettes/octillery_palette.gbapal.lz");
+const u32 gMonBackPic_Octillery[] = INCBIN_U32("graphics/pokemon/back_pics/octillery_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Octillery[] = INCBIN_U32("graphics/pokemon/palettes/octillery_shiny_palette.gbapal.lz");
const u8 gMonIcon_Octillery[] = INCBIN_U8("graphics/pokemon/icons/octillery_icon.4bpp");
const u8 gMonFootprint_Octillery[] = INCBIN_U8("graphics/pokemon/footprints/octillery_footprint.1bpp");
-const u8 gMonStillFrontPic_Delibird[] = INCBIN_U8("graphics/pokemon/front_pics/delibird_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Delibird[] = INCBIN_U8("graphics/pokemon/palettes/delibird_palette.gbapal.lz");
-const u8 gMonBackPic_Delibird[] = INCBIN_U8("graphics/pokemon/back_pics/delibird_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Delibird[] = INCBIN_U8("graphics/pokemon/palettes/delibird_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Delibird[] = INCBIN_U32("graphics/pokemon/front_pics/delibird_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Delibird[] = INCBIN_U32("graphics/pokemon/palettes/delibird_palette.gbapal.lz");
+const u32 gMonBackPic_Delibird[] = INCBIN_U32("graphics/pokemon/back_pics/delibird_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Delibird[] = INCBIN_U32("graphics/pokemon/palettes/delibird_shiny_palette.gbapal.lz");
const u8 gMonIcon_Delibird[] = INCBIN_U8("graphics/pokemon/icons/delibird_icon.4bpp");
const u8 gMonFootprint_Delibird[] = INCBIN_U8("graphics/pokemon/footprints/delibird_footprint.1bpp");
-const u8 gMonStillFrontPic_Mantine[] = INCBIN_U8("graphics/pokemon/front_pics/mantine_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Mantine[] = INCBIN_U8("graphics/pokemon/palettes/mantine_palette.gbapal.lz");
-const u8 gMonBackPic_Mantine[] = INCBIN_U8("graphics/pokemon/back_pics/mantine_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Mantine[] = INCBIN_U8("graphics/pokemon/palettes/mantine_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Mantine[] = INCBIN_U32("graphics/pokemon/front_pics/mantine_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Mantine[] = INCBIN_U32("graphics/pokemon/palettes/mantine_palette.gbapal.lz");
+const u32 gMonBackPic_Mantine[] = INCBIN_U32("graphics/pokemon/back_pics/mantine_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Mantine[] = INCBIN_U32("graphics/pokemon/palettes/mantine_shiny_palette.gbapal.lz");
const u8 gMonIcon_Mantine[] = INCBIN_U8("graphics/pokemon/icons/mantine_icon.4bpp");
const u8 gMonFootprint_Mantine[] = INCBIN_U8("graphics/pokemon/footprints/mantine_footprint.1bpp");
-const u8 gMonStillFrontPic_Skarmory[] = INCBIN_U8("graphics/pokemon/front_pics/skarmory_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Skarmory[] = INCBIN_U8("graphics/pokemon/palettes/skarmory_palette.gbapal.lz");
-const u8 gMonBackPic_Skarmory[] = INCBIN_U8("graphics/pokemon/back_pics/skarmory_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Skarmory[] = INCBIN_U8("graphics/pokemon/palettes/skarmory_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Skarmory[] = INCBIN_U32("graphics/pokemon/front_pics/skarmory_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/palettes/skarmory_palette.gbapal.lz");
+const u32 gMonBackPic_Skarmory[] = INCBIN_U32("graphics/pokemon/back_pics/skarmory_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/palettes/skarmory_shiny_palette.gbapal.lz");
const u8 gMonIcon_Skarmory[] = INCBIN_U8("graphics/pokemon/icons/skarmory_icon.4bpp");
const u8 gMonFootprint_Skarmory[] = INCBIN_U8("graphics/pokemon/footprints/skarmory_footprint.1bpp");
-const u8 gMonStillFrontPic_Houndour[] = INCBIN_U8("graphics/pokemon/front_pics/houndour_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Houndour[] = INCBIN_U8("graphics/pokemon/palettes/houndour_palette.gbapal.lz");
-const u8 gMonBackPic_Houndour[] = INCBIN_U8("graphics/pokemon/back_pics/houndour_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Houndour[] = INCBIN_U8("graphics/pokemon/palettes/houndour_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Houndour[] = INCBIN_U32("graphics/pokemon/front_pics/houndour_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Houndour[] = INCBIN_U32("graphics/pokemon/palettes/houndour_palette.gbapal.lz");
+const u32 gMonBackPic_Houndour[] = INCBIN_U32("graphics/pokemon/back_pics/houndour_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Houndour[] = INCBIN_U32("graphics/pokemon/palettes/houndour_shiny_palette.gbapal.lz");
const u8 gMonIcon_Houndour[] = INCBIN_U8("graphics/pokemon/icons/houndour_icon.4bpp");
const u8 gMonFootprint_Houndour[] = INCBIN_U8("graphics/pokemon/footprints/houndour_footprint.1bpp");
-const u8 gMonStillFrontPic_Houndoom[] = INCBIN_U8("graphics/pokemon/front_pics/houndoom_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Houndoom[] = INCBIN_U8("graphics/pokemon/palettes/houndoom_palette.gbapal.lz");
-const u8 gMonBackPic_Houndoom[] = INCBIN_U8("graphics/pokemon/back_pics/houndoom_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Houndoom[] = INCBIN_U8("graphics/pokemon/palettes/houndoom_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Houndoom[] = INCBIN_U32("graphics/pokemon/front_pics/houndoom_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/palettes/houndoom_palette.gbapal.lz");
+const u32 gMonBackPic_Houndoom[] = INCBIN_U32("graphics/pokemon/back_pics/houndoom_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/palettes/houndoom_shiny_palette.gbapal.lz");
const u8 gMonIcon_Houndoom[] = INCBIN_U8("graphics/pokemon/icons/houndoom_icon.4bpp");
const u8 gMonFootprint_Houndoom[] = INCBIN_U8("graphics/pokemon/footprints/houndoom_footprint.1bpp");
-const u8 gMonStillFrontPic_Kingdra[] = INCBIN_U8("graphics/pokemon/front_pics/kingdra_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Kingdra[] = INCBIN_U8("graphics/pokemon/palettes/kingdra_palette.gbapal.lz");
-const u8 gMonBackPic_Kingdra[] = INCBIN_U8("graphics/pokemon/back_pics/kingdra_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Kingdra[] = INCBIN_U8("graphics/pokemon/palettes/kingdra_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Kingdra[] = INCBIN_U32("graphics/pokemon/front_pics/kingdra_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/palettes/kingdra_palette.gbapal.lz");
+const u32 gMonBackPic_Kingdra[] = INCBIN_U32("graphics/pokemon/back_pics/kingdra_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/palettes/kingdra_shiny_palette.gbapal.lz");
const u8 gMonIcon_Kingdra[] = INCBIN_U8("graphics/pokemon/icons/kingdra_icon.4bpp");
const u8 gMonFootprint_Kingdra[] = INCBIN_U8("graphics/pokemon/footprints/kingdra_footprint.1bpp");
-const u8 gMonStillFrontPic_Phanpy[] = INCBIN_U8("graphics/pokemon/front_pics/phanpy_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Phanpy[] = INCBIN_U8("graphics/pokemon/palettes/phanpy_palette.gbapal.lz");
-const u8 gMonBackPic_Phanpy[] = INCBIN_U8("graphics/pokemon/back_pics/phanpy_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Phanpy[] = INCBIN_U8("graphics/pokemon/palettes/phanpy_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Phanpy[] = INCBIN_U32("graphics/pokemon/front_pics/phanpy_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/palettes/phanpy_palette.gbapal.lz");
+const u32 gMonBackPic_Phanpy[] = INCBIN_U32("graphics/pokemon/back_pics/phanpy_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/palettes/phanpy_shiny_palette.gbapal.lz");
const u8 gMonIcon_Phanpy[] = INCBIN_U8("graphics/pokemon/icons/phanpy_icon.4bpp");
const u8 gMonFootprint_Phanpy[] = INCBIN_U8("graphics/pokemon/footprints/phanpy_footprint.1bpp");
-const u8 gMonStillFrontPic_Donphan[] = INCBIN_U8("graphics/pokemon/front_pics/donphan_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Donphan[] = INCBIN_U8("graphics/pokemon/palettes/donphan_palette.gbapal.lz");
-const u8 gMonBackPic_Donphan[] = INCBIN_U8("graphics/pokemon/back_pics/donphan_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Donphan[] = INCBIN_U8("graphics/pokemon/palettes/donphan_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Donphan[] = INCBIN_U32("graphics/pokemon/front_pics/donphan_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Donphan[] = INCBIN_U32("graphics/pokemon/palettes/donphan_palette.gbapal.lz");
+const u32 gMonBackPic_Donphan[] = INCBIN_U32("graphics/pokemon/back_pics/donphan_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Donphan[] = INCBIN_U32("graphics/pokemon/palettes/donphan_shiny_palette.gbapal.lz");
const u8 gMonIcon_Donphan[] = INCBIN_U8("graphics/pokemon/icons/donphan_icon.4bpp");
const u8 gMonFootprint_Donphan[] = INCBIN_U8("graphics/pokemon/footprints/donphan_footprint.1bpp");
-const u8 gMonStillFrontPic_Porygon2[] = INCBIN_U8("graphics/pokemon/front_pics/porygon2_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Porygon2[] = INCBIN_U8("graphics/pokemon/palettes/porygon2_palette.gbapal.lz");
-const u8 gMonBackPic_Porygon2[] = INCBIN_U8("graphics/pokemon/back_pics/porygon2_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Porygon2[] = INCBIN_U8("graphics/pokemon/palettes/porygon2_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Porygon2[] = INCBIN_U32("graphics/pokemon/front_pics/porygon2_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/palettes/porygon2_palette.gbapal.lz");
+const u32 gMonBackPic_Porygon2[] = INCBIN_U32("graphics/pokemon/back_pics/porygon2_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/palettes/porygon2_shiny_palette.gbapal.lz");
const u8 gMonIcon_Porygon2[] = INCBIN_U8("graphics/pokemon/icons/porygon2_icon.4bpp");
const u8 gMonFootprint_Porygon2[] = INCBIN_U8("graphics/pokemon/footprints/porygon2_footprint.1bpp");
-const u8 gMonStillFrontPic_Stantler[] = INCBIN_U8("graphics/pokemon/front_pics/stantler_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Stantler[] = INCBIN_U8("graphics/pokemon/palettes/stantler_palette.gbapal.lz");
-const u8 gMonBackPic_Stantler[] = INCBIN_U8("graphics/pokemon/back_pics/stantler_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Stantler[] = INCBIN_U8("graphics/pokemon/palettes/stantler_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Stantler[] = INCBIN_U32("graphics/pokemon/front_pics/stantler_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Stantler[] = INCBIN_U32("graphics/pokemon/palettes/stantler_palette.gbapal.lz");
+const u32 gMonBackPic_Stantler[] = INCBIN_U32("graphics/pokemon/back_pics/stantler_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Stantler[] = INCBIN_U32("graphics/pokemon/palettes/stantler_shiny_palette.gbapal.lz");
const u8 gMonIcon_Stantler[] = INCBIN_U8("graphics/pokemon/icons/stantler_icon.4bpp");
const u8 gMonFootprint_Stantler[] = INCBIN_U8("graphics/pokemon/footprints/stantler_footprint.1bpp");
-const u8 gMonStillFrontPic_Smeargle[] = INCBIN_U8("graphics/pokemon/front_pics/smeargle_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Smeargle[] = INCBIN_U8("graphics/pokemon/palettes/smeargle_palette.gbapal.lz");
-const u8 gMonBackPic_Smeargle[] = INCBIN_U8("graphics/pokemon/back_pics/smeargle_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Smeargle[] = INCBIN_U8("graphics/pokemon/palettes/smeargle_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Smeargle[] = INCBIN_U32("graphics/pokemon/front_pics/smeargle_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/palettes/smeargle_palette.gbapal.lz");
+const u32 gMonBackPic_Smeargle[] = INCBIN_U32("graphics/pokemon/back_pics/smeargle_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/palettes/smeargle_shiny_palette.gbapal.lz");
const u8 gMonIcon_Smeargle[] = INCBIN_U8("graphics/pokemon/icons/smeargle_icon.4bpp");
const u8 gMonFootprint_Smeargle[] = INCBIN_U8("graphics/pokemon/footprints/smeargle_footprint.1bpp");
-const u8 gMonStillFrontPic_Tyrogue[] = INCBIN_U8("graphics/pokemon/front_pics/tyrogue_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Tyrogue[] = INCBIN_U8("graphics/pokemon/palettes/tyrogue_palette.gbapal.lz");
-const u8 gMonBackPic_Tyrogue[] = INCBIN_U8("graphics/pokemon/back_pics/tyrogue_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Tyrogue[] = INCBIN_U8("graphics/pokemon/palettes/tyrogue_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/front_pics/tyrogue_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/palettes/tyrogue_palette.gbapal.lz");
+const u32 gMonBackPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/back_pics/tyrogue_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/palettes/tyrogue_shiny_palette.gbapal.lz");
const u8 gMonIcon_Tyrogue[] = INCBIN_U8("graphics/pokemon/icons/tyrogue_icon.4bpp");
const u8 gMonFootprint_Tyrogue[] = INCBIN_U8("graphics/pokemon/footprints/tyrogue_footprint.1bpp");
-const u8 gMonStillFrontPic_Hitmontop[] = INCBIN_U8("graphics/pokemon/front_pics/hitmontop_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Hitmontop[] = INCBIN_U8("graphics/pokemon/palettes/hitmontop_palette.gbapal.lz");
-const u8 gMonBackPic_Hitmontop[] = INCBIN_U8("graphics/pokemon/back_pics/hitmontop_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Hitmontop[] = INCBIN_U8("graphics/pokemon/palettes/hitmontop_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/front_pics/hitmontop_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/palettes/hitmontop_palette.gbapal.lz");
+const u32 gMonBackPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/back_pics/hitmontop_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/palettes/hitmontop_shiny_palette.gbapal.lz");
const u8 gMonIcon_Hitmontop[] = INCBIN_U8("graphics/pokemon/icons/hitmontop_icon.4bpp");
const u8 gMonFootprint_Hitmontop[] = INCBIN_U8("graphics/pokemon/footprints/hitmontop_footprint.1bpp");
-const u8 gMonStillFrontPic_Smoochum[] = INCBIN_U8("graphics/pokemon/front_pics/smoochum_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Smoochum[] = INCBIN_U8("graphics/pokemon/palettes/smoochum_palette.gbapal.lz");
-const u8 gMonBackPic_Smoochum[] = INCBIN_U8("graphics/pokemon/back_pics/smoochum_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Smoochum[] = INCBIN_U8("graphics/pokemon/palettes/smoochum_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Smoochum[] = INCBIN_U32("graphics/pokemon/front_pics/smoochum_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/palettes/smoochum_palette.gbapal.lz");
+const u32 gMonBackPic_Smoochum[] = INCBIN_U32("graphics/pokemon/back_pics/smoochum_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/palettes/smoochum_shiny_palette.gbapal.lz");
const u8 gMonIcon_Smoochum[] = INCBIN_U8("graphics/pokemon/icons/smoochum_icon.4bpp");
const u8 gMonFootprint_Smoochum[] = INCBIN_U8("graphics/pokemon/footprints/smoochum_footprint.1bpp");
-const u8 gMonStillFrontPic_Elekid[] = INCBIN_U8("graphics/pokemon/front_pics/elekid_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Elekid[] = INCBIN_U8("graphics/pokemon/palettes/elekid_palette.gbapal.lz");
-const u8 gMonBackPic_Elekid[] = INCBIN_U8("graphics/pokemon/back_pics/elekid_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Elekid[] = INCBIN_U8("graphics/pokemon/palettes/elekid_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Elekid[] = INCBIN_U32("graphics/pokemon/front_pics/elekid_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Elekid[] = INCBIN_U32("graphics/pokemon/palettes/elekid_palette.gbapal.lz");
+const u32 gMonBackPic_Elekid[] = INCBIN_U32("graphics/pokemon/back_pics/elekid_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Elekid[] = INCBIN_U32("graphics/pokemon/palettes/elekid_shiny_palette.gbapal.lz");
const u8 gMonIcon_Elekid[] = INCBIN_U8("graphics/pokemon/icons/elekid_icon.4bpp");
const u8 gMonFootprint_Elekid[] = INCBIN_U8("graphics/pokemon/footprints/elekid_footprint.1bpp");
-const u8 gMonStillFrontPic_Magby[] = INCBIN_U8("graphics/pokemon/front_pics/magby_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Magby[] = INCBIN_U8("graphics/pokemon/palettes/magby_palette.gbapal.lz");
-const u8 gMonBackPic_Magby[] = INCBIN_U8("graphics/pokemon/back_pics/magby_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Magby[] = INCBIN_U8("graphics/pokemon/palettes/magby_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Magby[] = INCBIN_U32("graphics/pokemon/front_pics/magby_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Magby[] = INCBIN_U32("graphics/pokemon/palettes/magby_palette.gbapal.lz");
+const u32 gMonBackPic_Magby[] = INCBIN_U32("graphics/pokemon/back_pics/magby_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Magby[] = INCBIN_U32("graphics/pokemon/palettes/magby_shiny_palette.gbapal.lz");
const u8 gMonIcon_Magby[] = INCBIN_U8("graphics/pokemon/icons/magby_icon.4bpp");
const u8 gMonFootprint_Magby[] = INCBIN_U8("graphics/pokemon/footprints/magby_footprint.1bpp");
-const u8 gMonStillFrontPic_Miltank[] = INCBIN_U8("graphics/pokemon/front_pics/miltank_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Miltank[] = INCBIN_U8("graphics/pokemon/palettes/miltank_palette.gbapal.lz");
-const u8 gMonBackPic_Miltank[] = INCBIN_U8("graphics/pokemon/back_pics/miltank_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Miltank[] = INCBIN_U8("graphics/pokemon/palettes/miltank_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Miltank[] = INCBIN_U32("graphics/pokemon/front_pics/miltank_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Miltank[] = INCBIN_U32("graphics/pokemon/palettes/miltank_palette.gbapal.lz");
+const u32 gMonBackPic_Miltank[] = INCBIN_U32("graphics/pokemon/back_pics/miltank_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Miltank[] = INCBIN_U32("graphics/pokemon/palettes/miltank_shiny_palette.gbapal.lz");
const u8 gMonIcon_Miltank[] = INCBIN_U8("graphics/pokemon/icons/miltank_icon.4bpp");
const u8 gMonFootprint_Miltank[] = INCBIN_U8("graphics/pokemon/footprints/miltank_footprint.1bpp");
-const u8 gMonStillFrontPic_Blissey[] = INCBIN_U8("graphics/pokemon/front_pics/blissey_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Blissey[] = INCBIN_U8("graphics/pokemon/palettes/blissey_palette.gbapal.lz");
-const u8 gMonBackPic_Blissey[] = INCBIN_U8("graphics/pokemon/back_pics/blissey_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Blissey[] = INCBIN_U8("graphics/pokemon/palettes/blissey_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Blissey[] = INCBIN_U32("graphics/pokemon/front_pics/blissey_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Blissey[] = INCBIN_U32("graphics/pokemon/palettes/blissey_palette.gbapal.lz");
+const u32 gMonBackPic_Blissey[] = INCBIN_U32("graphics/pokemon/back_pics/blissey_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Blissey[] = INCBIN_U32("graphics/pokemon/palettes/blissey_shiny_palette.gbapal.lz");
const u8 gMonIcon_Blissey[] = INCBIN_U8("graphics/pokemon/icons/blissey_icon.4bpp");
const u8 gMonFootprint_Blissey[] = INCBIN_U8("graphics/pokemon/footprints/blissey_footprint.1bpp");
-const u8 gMonStillFrontPic_Raikou[] = INCBIN_U8("graphics/pokemon/front_pics/raikou_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Raikou[] = INCBIN_U8("graphics/pokemon/palettes/raikou_palette.gbapal.lz");
-const u8 gMonBackPic_Raikou[] = INCBIN_U8("graphics/pokemon/back_pics/raikou_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Raikou[] = INCBIN_U8("graphics/pokemon/palettes/raikou_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Raikou[] = INCBIN_U32("graphics/pokemon/front_pics/raikou_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Raikou[] = INCBIN_U32("graphics/pokemon/palettes/raikou_palette.gbapal.lz");
+const u32 gMonBackPic_Raikou[] = INCBIN_U32("graphics/pokemon/back_pics/raikou_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Raikou[] = INCBIN_U32("graphics/pokemon/palettes/raikou_shiny_palette.gbapal.lz");
const u8 gMonIcon_Raikou[] = INCBIN_U8("graphics/pokemon/icons/raikou_icon.4bpp");
const u8 gMonFootprint_Raikou[] = INCBIN_U8("graphics/pokemon/footprints/raikou_footprint.1bpp");
-const u8 gMonStillFrontPic_Entei[] = INCBIN_U8("graphics/pokemon/front_pics/entei_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Entei[] = INCBIN_U8("graphics/pokemon/palettes/entei_palette.gbapal.lz");
-const u8 gMonBackPic_Entei[] = INCBIN_U8("graphics/pokemon/back_pics/entei_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Entei[] = INCBIN_U8("graphics/pokemon/palettes/entei_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Entei[] = INCBIN_U32("graphics/pokemon/front_pics/entei_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Entei[] = INCBIN_U32("graphics/pokemon/palettes/entei_palette.gbapal.lz");
+const u32 gMonBackPic_Entei[] = INCBIN_U32("graphics/pokemon/back_pics/entei_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Entei[] = INCBIN_U32("graphics/pokemon/palettes/entei_shiny_palette.gbapal.lz");
const u8 gMonIcon_Entei[] = INCBIN_U8("graphics/pokemon/icons/entei_icon.4bpp");
const u8 gMonFootprint_Entei[] = INCBIN_U8("graphics/pokemon/footprints/entei_footprint.1bpp");
-const u8 gMonStillFrontPic_Suicune[] = INCBIN_U8("graphics/pokemon/front_pics/suicune_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Suicune[] = INCBIN_U8("graphics/pokemon/palettes/suicune_palette.gbapal.lz");
-const u8 gMonBackPic_Suicune[] = INCBIN_U8("graphics/pokemon/back_pics/suicune_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Suicune[] = INCBIN_U8("graphics/pokemon/palettes/suicune_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Suicune[] = INCBIN_U32("graphics/pokemon/front_pics/suicune_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Suicune[] = INCBIN_U32("graphics/pokemon/palettes/suicune_palette.gbapal.lz");
+const u32 gMonBackPic_Suicune[] = INCBIN_U32("graphics/pokemon/back_pics/suicune_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Suicune[] = INCBIN_U32("graphics/pokemon/palettes/suicune_shiny_palette.gbapal.lz");
const u8 gMonIcon_Suicune[] = INCBIN_U8("graphics/pokemon/icons/suicune_icon.4bpp");
const u8 gMonFootprint_Suicune[] = INCBIN_U8("graphics/pokemon/footprints/suicune_footprint.1bpp");
-const u8 gMonStillFrontPic_Larvitar[] = INCBIN_U8("graphics/pokemon/front_pics/larvitar_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Larvitar[] = INCBIN_U8("graphics/pokemon/palettes/larvitar_palette.gbapal.lz");
-const u8 gMonBackPic_Larvitar[] = INCBIN_U8("graphics/pokemon/back_pics/larvitar_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Larvitar[] = INCBIN_U8("graphics/pokemon/palettes/larvitar_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Larvitar[] = INCBIN_U32("graphics/pokemon/front_pics/larvitar_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/palettes/larvitar_palette.gbapal.lz");
+const u32 gMonBackPic_Larvitar[] = INCBIN_U32("graphics/pokemon/back_pics/larvitar_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/palettes/larvitar_shiny_palette.gbapal.lz");
const u8 gMonIcon_Larvitar[] = INCBIN_U8("graphics/pokemon/icons/larvitar_icon.4bpp");
const u8 gMonFootprint_Larvitar[] = INCBIN_U8("graphics/pokemon/footprints/larvitar_footprint.1bpp");
-const u8 gMonStillFrontPic_Pupitar[] = INCBIN_U8("graphics/pokemon/front_pics/pupitar_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Pupitar[] = INCBIN_U8("graphics/pokemon/palettes/pupitar_palette.gbapal.lz");
-const u8 gMonBackPic_Pupitar[] = INCBIN_U8("graphics/pokemon/back_pics/pupitar_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Pupitar[] = INCBIN_U8("graphics/pokemon/palettes/pupitar_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Pupitar[] = INCBIN_U32("graphics/pokemon/front_pics/pupitar_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/palettes/pupitar_palette.gbapal.lz");
+const u32 gMonBackPic_Pupitar[] = INCBIN_U32("graphics/pokemon/back_pics/pupitar_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/palettes/pupitar_shiny_palette.gbapal.lz");
const u8 gMonIcon_Pupitar[] = INCBIN_U8("graphics/pokemon/icons/pupitar_icon.4bpp");
const u8 gMonFootprint_Pupitar[] = INCBIN_U8("graphics/pokemon/footprints/pupitar_footprint.1bpp");
-const u8 gMonStillFrontPic_Tyranitar[] = INCBIN_U8("graphics/pokemon/front_pics/tyranitar_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Tyranitar[] = INCBIN_U8("graphics/pokemon/palettes/tyranitar_palette.gbapal.lz");
-const u8 gMonBackPic_Tyranitar[] = INCBIN_U8("graphics/pokemon/back_pics/tyranitar_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Tyranitar[] = INCBIN_U8("graphics/pokemon/palettes/tyranitar_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/front_pics/tyranitar_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/palettes/tyranitar_palette.gbapal.lz");
+const u32 gMonBackPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/back_pics/tyranitar_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/palettes/tyranitar_shiny_palette.gbapal.lz");
const u8 gMonIcon_Tyranitar[] = INCBIN_U8("graphics/pokemon/icons/tyranitar_icon.4bpp");
const u8 gMonFootprint_Tyranitar[] = INCBIN_U8("graphics/pokemon/footprints/tyranitar_footprint.1bpp");
-const u8 gMonStillFrontPic_Lugia[] = INCBIN_U8("graphics/pokemon/front_pics/lugia_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Lugia[] = INCBIN_U8("graphics/pokemon/palettes/lugia_palette.gbapal.lz");
-const u8 gMonBackPic_Lugia[] = INCBIN_U8("graphics/pokemon/back_pics/lugia_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Lugia[] = INCBIN_U8("graphics/pokemon/palettes/lugia_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Lugia[] = INCBIN_U32("graphics/pokemon/front_pics/lugia_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Lugia[] = INCBIN_U32("graphics/pokemon/palettes/lugia_palette.gbapal.lz");
+const u32 gMonBackPic_Lugia[] = INCBIN_U32("graphics/pokemon/back_pics/lugia_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Lugia[] = INCBIN_U32("graphics/pokemon/palettes/lugia_shiny_palette.gbapal.lz");
const u8 gMonIcon_Lugia[] = INCBIN_U8("graphics/pokemon/icons/lugia_icon.4bpp");
const u8 gMonFootprint_Lugia[] = INCBIN_U8("graphics/pokemon/footprints/lugia_footprint.1bpp");
-const u8 gMonStillFrontPic_HoOh[] = INCBIN_U8("graphics/pokemon/front_pics/ho_oh_still_front_pic.4bpp.lz");
-const u8 gMonPalette_HoOh[] = INCBIN_U8("graphics/pokemon/palettes/ho_oh_palette.gbapal.lz");
-const u8 gMonBackPic_HoOh[] = INCBIN_U8("graphics/pokemon/back_pics/ho_oh_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_HoOh[] = INCBIN_U8("graphics/pokemon/palettes/ho_oh_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_HoOh[] = INCBIN_U32("graphics/pokemon/front_pics/ho_oh_still_front_pic.4bpp.lz");
+const u32 gMonPalette_HoOh[] = INCBIN_U32("graphics/pokemon/palettes/ho_oh_palette.gbapal.lz");
+const u32 gMonBackPic_HoOh[] = INCBIN_U32("graphics/pokemon/back_pics/ho_oh_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_HoOh[] = INCBIN_U32("graphics/pokemon/palettes/ho_oh_shiny_palette.gbapal.lz");
const u8 gMonIcon_HoOh[] = INCBIN_U8("graphics/pokemon/icons/ho_oh_icon.4bpp");
const u8 gMonFootprint_HoOh[] = INCBIN_U8("graphics/pokemon/footprints/ho_oh_footprint.1bpp");
-const u8 gMonStillFrontPic_Celebi[] = INCBIN_U8("graphics/pokemon/front_pics/celebi_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Celebi[] = INCBIN_U8("graphics/pokemon/palettes/celebi_palette.gbapal.lz");
-const u8 gMonBackPic_Celebi[] = INCBIN_U8("graphics/pokemon/back_pics/celebi_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Celebi[] = INCBIN_U8("graphics/pokemon/palettes/celebi_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Celebi[] = INCBIN_U32("graphics/pokemon/front_pics/celebi_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Celebi[] = INCBIN_U32("graphics/pokemon/palettes/celebi_palette.gbapal.lz");
+const u32 gMonBackPic_Celebi[] = INCBIN_U32("graphics/pokemon/back_pics/celebi_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Celebi[] = INCBIN_U32("graphics/pokemon/palettes/celebi_shiny_palette.gbapal.lz");
const u8 gMonIcon_Celebi[] = INCBIN_U8("graphics/pokemon/icons/celebi_icon.4bpp");
const u8 gMonFootprint_Celebi[] = INCBIN_U8("graphics/pokemon/footprints/celebi_footprint.1bpp");
-const u8 gMonStillFrontPic_DoubleQuestionMark[] = INCBIN_U8("graphics/pokemon/front_pics/double_question_mark_still_front_pic.4bpp.lz");
-const u8 gMonPalette_DoubleQuestionMark[] = INCBIN_U8("graphics/pokemon/palettes/double_question_mark_palette.gbapal.lz");
-const u8 gMonBackPic_DoubleQuestionMark[] = INCBIN_U8("graphics/pokemon/back_pics/double_question_mark_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_DoubleQuestionMark[] = INCBIN_U8("graphics/pokemon/palettes/double_question_mark_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/front_pics/double_question_mark_still_front_pic.4bpp.lz");
+const u32 gMonPalette_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/palettes/double_question_mark_palette.gbapal.lz");
+const u32 gMonBackPic_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/back_pics/double_question_mark_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/palettes/double_question_mark_shiny_palette.gbapal.lz");
-const u8 gMonStillFrontPic_Treecko[] = INCBIN_U8("graphics/pokemon/front_pics/treecko_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Treecko[] = INCBIN_U8("graphics/pokemon/palettes/treecko_palette.gbapal.lz");
-const u8 gMonBackPic_Treecko[] = INCBIN_U8("graphics/pokemon/back_pics/treecko_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Treecko[] = INCBIN_U8("graphics/pokemon/palettes/treecko_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Treecko[] = INCBIN_U32("graphics/pokemon/front_pics/treecko_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Treecko[] = INCBIN_U32("graphics/pokemon/palettes/treecko_palette.gbapal.lz");
+const u32 gMonBackPic_Treecko[] = INCBIN_U32("graphics/pokemon/back_pics/treecko_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Treecko[] = INCBIN_U32("graphics/pokemon/palettes/treecko_shiny_palette.gbapal.lz");
const u8 gMonIcon_Treecko[] = INCBIN_U8("graphics/pokemon/icons/treecko_icon.4bpp");
const u8 gMonFootprint_Treecko[] = INCBIN_U8("graphics/pokemon/footprints/treecko_footprint.1bpp");
-const u8 gMonStillFrontPic_Grovyle[] = INCBIN_U8("graphics/pokemon/front_pics/grovyle_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Grovyle[] = INCBIN_U8("graphics/pokemon/palettes/grovyle_palette.gbapal.lz");
-const u8 gMonBackPic_Grovyle[] = INCBIN_U8("graphics/pokemon/back_pics/grovyle_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Grovyle[] = INCBIN_U8("graphics/pokemon/palettes/grovyle_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Grovyle[] = INCBIN_U32("graphics/pokemon/front_pics/grovyle_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/palettes/grovyle_palette.gbapal.lz");
+const u32 gMonBackPic_Grovyle[] = INCBIN_U32("graphics/pokemon/back_pics/grovyle_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/palettes/grovyle_shiny_palette.gbapal.lz");
const u8 gMonIcon_Grovyle[] = INCBIN_U8("graphics/pokemon/icons/grovyle_icon.4bpp");
const u8 gMonFootprint_Grovyle[] = INCBIN_U8("graphics/pokemon/footprints/grovyle_footprint.1bpp");
-const u8 gMonStillFrontPic_Sceptile[] = INCBIN_U8("graphics/pokemon/front_pics/sceptile_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Sceptile[] = INCBIN_U8("graphics/pokemon/palettes/sceptile_palette.gbapal.lz");
-const u8 gMonBackPic_Sceptile[] = INCBIN_U8("graphics/pokemon/back_pics/sceptile_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Sceptile[] = INCBIN_U8("graphics/pokemon/palettes/sceptile_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Sceptile[] = INCBIN_U32("graphics/pokemon/front_pics/sceptile_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/palettes/sceptile_palette.gbapal.lz");
+const u32 gMonBackPic_Sceptile[] = INCBIN_U32("graphics/pokemon/back_pics/sceptile_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/palettes/sceptile_shiny_palette.gbapal.lz");
const u8 gMonIcon_Sceptile[] = INCBIN_U8("graphics/pokemon/icons/sceptile_icon.4bpp");
const u8 gMonFootprint_Sceptile[] = INCBIN_U8("graphics/pokemon/footprints/sceptile_footprint.1bpp");
-const u8 gMonStillFrontPic_Torchic[] = INCBIN_U8("graphics/pokemon/front_pics/torchic_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Torchic[] = INCBIN_U8("graphics/pokemon/palettes/torchic_palette.gbapal.lz");
-const u8 gMonBackPic_Torchic[] = INCBIN_U8("graphics/pokemon/back_pics/torchic_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Torchic[] = INCBIN_U8("graphics/pokemon/palettes/torchic_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Torchic[] = INCBIN_U32("graphics/pokemon/front_pics/torchic_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Torchic[] = INCBIN_U32("graphics/pokemon/palettes/torchic_palette.gbapal.lz");
+const u32 gMonBackPic_Torchic[] = INCBIN_U32("graphics/pokemon/back_pics/torchic_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Torchic[] = INCBIN_U32("graphics/pokemon/palettes/torchic_shiny_palette.gbapal.lz");
const u8 gMonIcon_Torchic[] = INCBIN_U8("graphics/pokemon/icons/torchic_icon.4bpp");
const u8 gMonFootprint_Torchic[] = INCBIN_U8("graphics/pokemon/footprints/torchic_footprint.1bpp");
-const u8 gMonStillFrontPic_Combusken[] = INCBIN_U8("graphics/pokemon/front_pics/combusken_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Combusken[] = INCBIN_U8("graphics/pokemon/palettes/combusken_palette.gbapal.lz");
-const u8 gMonBackPic_Combusken[] = INCBIN_U8("graphics/pokemon/back_pics/combusken_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Combusken[] = INCBIN_U8("graphics/pokemon/palettes/combusken_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Combusken[] = INCBIN_U32("graphics/pokemon/front_pics/combusken_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Combusken[] = INCBIN_U32("graphics/pokemon/palettes/combusken_palette.gbapal.lz");
+const u32 gMonBackPic_Combusken[] = INCBIN_U32("graphics/pokemon/back_pics/combusken_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Combusken[] = INCBIN_U32("graphics/pokemon/palettes/combusken_shiny_palette.gbapal.lz");
const u8 gMonIcon_Combusken[] = INCBIN_U8("graphics/pokemon/icons/combusken_icon.4bpp");
const u8 gMonFootprint_Combusken[] = INCBIN_U8("graphics/pokemon/footprints/combusken_footprint.1bpp");
-const u8 gMonStillFrontPic_Blaziken[] = INCBIN_U8("graphics/pokemon/front_pics/blaziken_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Blaziken[] = INCBIN_U8("graphics/pokemon/palettes/blaziken_palette.gbapal.lz");
-const u8 gMonBackPic_Blaziken[] = INCBIN_U8("graphics/pokemon/back_pics/blaziken_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Blaziken[] = INCBIN_U8("graphics/pokemon/palettes/blaziken_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Blaziken[] = INCBIN_U32("graphics/pokemon/front_pics/blaziken_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/palettes/blaziken_palette.gbapal.lz");
+const u32 gMonBackPic_Blaziken[] = INCBIN_U32("graphics/pokemon/back_pics/blaziken_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/palettes/blaziken_shiny_palette.gbapal.lz");
const u8 gMonIcon_Blaziken[] = INCBIN_U8("graphics/pokemon/icons/blaziken_icon.4bpp");
const u8 gMonFootprint_Blaziken[] = INCBIN_U8("graphics/pokemon/footprints/blaziken_footprint.1bpp");
-const u8 gMonStillFrontPic_Mudkip[] = INCBIN_U8("graphics/pokemon/front_pics/mudkip_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Mudkip[] = INCBIN_U8("graphics/pokemon/palettes/mudkip_palette.gbapal.lz");
-const u8 gMonBackPic_Mudkip[] = INCBIN_U8("graphics/pokemon/back_pics/mudkip_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Mudkip[] = INCBIN_U8("graphics/pokemon/palettes/mudkip_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Mudkip[] = INCBIN_U32("graphics/pokemon/front_pics/mudkip_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/palettes/mudkip_palette.gbapal.lz");
+const u32 gMonBackPic_Mudkip[] = INCBIN_U32("graphics/pokemon/back_pics/mudkip_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/palettes/mudkip_shiny_palette.gbapal.lz");
const u8 gMonIcon_Mudkip[] = INCBIN_U8("graphics/pokemon/icons/mudkip_icon.4bpp");
const u8 gMonFootprint_Mudkip[] = INCBIN_U8("graphics/pokemon/footprints/mudkip_footprint.1bpp");
-const u8 gMonStillFrontPic_Marshtomp[] = INCBIN_U8("graphics/pokemon/front_pics/marshtomp_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Marshtomp[] = INCBIN_U8("graphics/pokemon/palettes/marshtomp_palette.gbapal.lz");
-const u8 gMonBackPic_Marshtomp[] = INCBIN_U8("graphics/pokemon/back_pics/marshtomp_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Marshtomp[] = INCBIN_U8("graphics/pokemon/palettes/marshtomp_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/front_pics/marshtomp_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/palettes/marshtomp_palette.gbapal.lz");
+const u32 gMonBackPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/back_pics/marshtomp_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/palettes/marshtomp_shiny_palette.gbapal.lz");
const u8 gMonIcon_Marshtomp[] = INCBIN_U8("graphics/pokemon/icons/marshtomp_icon.4bpp");
const u8 gMonFootprint_Marshtomp[] = INCBIN_U8("graphics/pokemon/footprints/marshtomp_footprint.1bpp");
-const u8 gMonStillFrontPic_Swampert[] = INCBIN_U8("graphics/pokemon/front_pics/swampert_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Swampert[] = INCBIN_U8("graphics/pokemon/palettes/swampert_palette.gbapal.lz");
-const u8 gMonBackPic_Swampert[] = INCBIN_U8("graphics/pokemon/back_pics/swampert_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Swampert[] = INCBIN_U8("graphics/pokemon/palettes/swampert_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Swampert[] = INCBIN_U32("graphics/pokemon/front_pics/swampert_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Swampert[] = INCBIN_U32("graphics/pokemon/palettes/swampert_palette.gbapal.lz");
+const u32 gMonBackPic_Swampert[] = INCBIN_U32("graphics/pokemon/back_pics/swampert_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Swampert[] = INCBIN_U32("graphics/pokemon/palettes/swampert_shiny_palette.gbapal.lz");
const u8 gMonIcon_Swampert[] = INCBIN_U8("graphics/pokemon/icons/swampert_icon.4bpp");
const u8 gMonFootprint_Swampert[] = INCBIN_U8("graphics/pokemon/footprints/swampert_footprint.1bpp");
-const u8 gMonStillFrontPic_Poochyena[] = INCBIN_U8("graphics/pokemon/front_pics/poochyena_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Poochyena[] = INCBIN_U8("graphics/pokemon/palettes/poochyena_palette.gbapal.lz");
-const u8 gMonBackPic_Poochyena[] = INCBIN_U8("graphics/pokemon/back_pics/poochyena_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Poochyena[] = INCBIN_U8("graphics/pokemon/palettes/poochyena_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Poochyena[] = INCBIN_U32("graphics/pokemon/front_pics/poochyena_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/palettes/poochyena_palette.gbapal.lz");
+const u32 gMonBackPic_Poochyena[] = INCBIN_U32("graphics/pokemon/back_pics/poochyena_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/palettes/poochyena_shiny_palette.gbapal.lz");
const u8 gMonIcon_Poochyena[] = INCBIN_U8("graphics/pokemon/icons/poochyena_icon.4bpp");
const u8 gMonFootprint_Poochyena[] = INCBIN_U8("graphics/pokemon/footprints/poochyena_footprint.1bpp");
-const u8 gMonStillFrontPic_Mightyena[] = INCBIN_U8("graphics/pokemon/front_pics/mightyena_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Mightyena[] = INCBIN_U8("graphics/pokemon/palettes/mightyena_palette.gbapal.lz");
-const u8 gMonBackPic_Mightyena[] = INCBIN_U8("graphics/pokemon/back_pics/mightyena_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Mightyena[] = INCBIN_U8("graphics/pokemon/palettes/mightyena_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Mightyena[] = INCBIN_U32("graphics/pokemon/front_pics/mightyena_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/palettes/mightyena_palette.gbapal.lz");
+const u32 gMonBackPic_Mightyena[] = INCBIN_U32("graphics/pokemon/back_pics/mightyena_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/palettes/mightyena_shiny_palette.gbapal.lz");
const u8 gMonIcon_Mightyena[] = INCBIN_U8("graphics/pokemon/icons/mightyena_icon.4bpp");
const u8 gMonFootprint_Mightyena[] = INCBIN_U8("graphics/pokemon/footprints/mightyena_footprint.1bpp");
-const u8 gMonStillFrontPic_Zigzagoon[] = INCBIN_U8("graphics/pokemon/front_pics/zigzagoon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Zigzagoon[] = INCBIN_U8("graphics/pokemon/palettes/zigzagoon_palette.gbapal.lz");
-const u8 gMonBackPic_Zigzagoon[] = INCBIN_U8("graphics/pokemon/back_pics/zigzagoon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Zigzagoon[] = INCBIN_U8("graphics/pokemon/palettes/zigzagoon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/front_pics/zigzagoon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/palettes/zigzagoon_palette.gbapal.lz");
+const u32 gMonBackPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/back_pics/zigzagoon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/palettes/zigzagoon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Zigzagoon[] = INCBIN_U8("graphics/pokemon/icons/zigzagoon_icon.4bpp");
const u8 gMonFootprint_Zigzagoon[] = INCBIN_U8("graphics/pokemon/footprints/zigzagoon_footprint.1bpp");
-const u8 gMonStillFrontPic_Linoone[] = INCBIN_U8("graphics/pokemon/front_pics/linoone_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Linoone[] = INCBIN_U8("graphics/pokemon/palettes/linoone_palette.gbapal.lz");
-const u8 gMonBackPic_Linoone[] = INCBIN_U8("graphics/pokemon/back_pics/linoone_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Linoone[] = INCBIN_U8("graphics/pokemon/palettes/linoone_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Linoone[] = INCBIN_U32("graphics/pokemon/front_pics/linoone_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Linoone[] = INCBIN_U32("graphics/pokemon/palettes/linoone_palette.gbapal.lz");
+const u32 gMonBackPic_Linoone[] = INCBIN_U32("graphics/pokemon/back_pics/linoone_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Linoone[] = INCBIN_U32("graphics/pokemon/palettes/linoone_shiny_palette.gbapal.lz");
const u8 gMonIcon_Linoone[] = INCBIN_U8("graphics/pokemon/icons/linoone_icon.4bpp");
const u8 gMonFootprint_Linoone[] = INCBIN_U8("graphics/pokemon/footprints/linoone_footprint.1bpp");
-const u8 gMonStillFrontPic_Wurmple[] = INCBIN_U8("graphics/pokemon/front_pics/wurmple_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Wurmple[] = INCBIN_U8("graphics/pokemon/palettes/wurmple_palette.gbapal.lz");
-const u8 gMonBackPic_Wurmple[] = INCBIN_U8("graphics/pokemon/back_pics/wurmple_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Wurmple[] = INCBIN_U8("graphics/pokemon/palettes/wurmple_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Wurmple[] = INCBIN_U32("graphics/pokemon/front_pics/wurmple_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/palettes/wurmple_palette.gbapal.lz");
+const u32 gMonBackPic_Wurmple[] = INCBIN_U32("graphics/pokemon/back_pics/wurmple_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/palettes/wurmple_shiny_palette.gbapal.lz");
const u8 gMonIcon_Wurmple[] = INCBIN_U8("graphics/pokemon/icons/wurmple_icon.4bpp");
const u8 gMonFootprint_Wurmple[] = INCBIN_U8("graphics/pokemon/footprints/wurmple_footprint.1bpp");
-const u8 gMonStillFrontPic_Silcoon[] = INCBIN_U8("graphics/pokemon/front_pics/silcoon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Silcoon[] = INCBIN_U8("graphics/pokemon/palettes/silcoon_palette.gbapal.lz");
-const u8 gMonBackPic_Silcoon[] = INCBIN_U8("graphics/pokemon/back_pics/silcoon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Silcoon[] = INCBIN_U8("graphics/pokemon/palettes/silcoon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Silcoon[] = INCBIN_U32("graphics/pokemon/front_pics/silcoon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/palettes/silcoon_palette.gbapal.lz");
+const u32 gMonBackPic_Silcoon[] = INCBIN_U32("graphics/pokemon/back_pics/silcoon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/palettes/silcoon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Silcoon[] = INCBIN_U8("graphics/pokemon/icons/silcoon_icon.4bpp");
const u8 gMonFootprint_Silcoon[] = INCBIN_U8("graphics/pokemon/footprints/silcoon_footprint.1bpp");
-const u8 gMonStillFrontPic_Beautifly[] = INCBIN_U8("graphics/pokemon/front_pics/beautifly_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Beautifly[] = INCBIN_U8("graphics/pokemon/palettes/beautifly_palette.gbapal.lz");
-const u8 gMonBackPic_Beautifly[] = INCBIN_U8("graphics/pokemon/back_pics/beautifly_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Beautifly[] = INCBIN_U8("graphics/pokemon/palettes/beautifly_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Beautifly[] = INCBIN_U32("graphics/pokemon/front_pics/beautifly_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/palettes/beautifly_palette.gbapal.lz");
+const u32 gMonBackPic_Beautifly[] = INCBIN_U32("graphics/pokemon/back_pics/beautifly_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/palettes/beautifly_shiny_palette.gbapal.lz");
const u8 gMonIcon_Beautifly[] = INCBIN_U8("graphics/pokemon/icons/beautifly_icon.4bpp");
const u8 gMonFootprint_Beautifly[] = INCBIN_U8("graphics/pokemon/footprints/beautifly_footprint.1bpp");
-const u8 gMonStillFrontPic_Cascoon[] = INCBIN_U8("graphics/pokemon/front_pics/cascoon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Cascoon[] = INCBIN_U8("graphics/pokemon/palettes/cascoon_palette.gbapal.lz");
-const u8 gMonBackPic_Cascoon[] = INCBIN_U8("graphics/pokemon/back_pics/cascoon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Cascoon[] = INCBIN_U8("graphics/pokemon/palettes/cascoon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Cascoon[] = INCBIN_U32("graphics/pokemon/front_pics/cascoon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/palettes/cascoon_palette.gbapal.lz");
+const u32 gMonBackPic_Cascoon[] = INCBIN_U32("graphics/pokemon/back_pics/cascoon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/palettes/cascoon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Cascoon[] = INCBIN_U8("graphics/pokemon/icons/cascoon_icon.4bpp");
const u8 gMonFootprint_Cascoon[] = INCBIN_U8("graphics/pokemon/footprints/cascoon_footprint.1bpp");
-const u8 gMonStillFrontPic_Dustox[] = INCBIN_U8("graphics/pokemon/front_pics/dustox_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Dustox[] = INCBIN_U8("graphics/pokemon/palettes/dustox_palette.gbapal.lz");
-const u8 gMonBackPic_Dustox[] = INCBIN_U8("graphics/pokemon/back_pics/dustox_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Dustox[] = INCBIN_U8("graphics/pokemon/palettes/dustox_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Dustox[] = INCBIN_U32("graphics/pokemon/front_pics/dustox_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Dustox[] = INCBIN_U32("graphics/pokemon/palettes/dustox_palette.gbapal.lz");
+const u32 gMonBackPic_Dustox[] = INCBIN_U32("graphics/pokemon/back_pics/dustox_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Dustox[] = INCBIN_U32("graphics/pokemon/palettes/dustox_shiny_palette.gbapal.lz");
const u8 gMonIcon_Dustox[] = INCBIN_U8("graphics/pokemon/icons/dustox_icon.4bpp");
const u8 gMonFootprint_Dustox[] = INCBIN_U8("graphics/pokemon/footprints/dustox_footprint.1bpp");
-const u8 gMonStillFrontPic_Lotad[] = INCBIN_U8("graphics/pokemon/front_pics/lotad_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Lotad[] = INCBIN_U8("graphics/pokemon/palettes/lotad_palette.gbapal.lz");
-const u8 gMonBackPic_Lotad[] = INCBIN_U8("graphics/pokemon/back_pics/lotad_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Lotad[] = INCBIN_U8("graphics/pokemon/palettes/lotad_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Lotad[] = INCBIN_U32("graphics/pokemon/front_pics/lotad_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Lotad[] = INCBIN_U32("graphics/pokemon/palettes/lotad_palette.gbapal.lz");
+const u32 gMonBackPic_Lotad[] = INCBIN_U32("graphics/pokemon/back_pics/lotad_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Lotad[] = INCBIN_U32("graphics/pokemon/palettes/lotad_shiny_palette.gbapal.lz");
const u8 gMonIcon_Lotad[] = INCBIN_U8("graphics/pokemon/icons/lotad_icon.4bpp");
const u8 gMonFootprint_Lotad[] = INCBIN_U8("graphics/pokemon/footprints/lotad_footprint.1bpp");
-const u8 gMonStillFrontPic_Lombre[] = INCBIN_U8("graphics/pokemon/front_pics/lombre_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Lombre[] = INCBIN_U8("graphics/pokemon/palettes/lombre_palette.gbapal.lz");
-const u8 gMonBackPic_Lombre[] = INCBIN_U8("graphics/pokemon/back_pics/lombre_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Lombre[] = INCBIN_U8("graphics/pokemon/palettes/lombre_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Lombre[] = INCBIN_U32("graphics/pokemon/front_pics/lombre_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Lombre[] = INCBIN_U32("graphics/pokemon/palettes/lombre_palette.gbapal.lz");
+const u32 gMonBackPic_Lombre[] = INCBIN_U32("graphics/pokemon/back_pics/lombre_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Lombre[] = INCBIN_U32("graphics/pokemon/palettes/lombre_shiny_palette.gbapal.lz");
const u8 gMonIcon_Lombre[] = INCBIN_U8("graphics/pokemon/icons/lombre_icon.4bpp");
const u8 gMonFootprint_Lombre[] = INCBIN_U8("graphics/pokemon/footprints/lombre_footprint.1bpp");
-const u8 gMonStillFrontPic_Ludicolo[] = INCBIN_U8("graphics/pokemon/front_pics/ludicolo_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ludicolo[] = INCBIN_U8("graphics/pokemon/palettes/ludicolo_palette.gbapal.lz");
-const u8 gMonBackPic_Ludicolo[] = INCBIN_U8("graphics/pokemon/back_pics/ludicolo_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ludicolo[] = INCBIN_U8("graphics/pokemon/palettes/ludicolo_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/front_pics/ludicolo_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/palettes/ludicolo_palette.gbapal.lz");
+const u32 gMonBackPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/back_pics/ludicolo_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/palettes/ludicolo_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ludicolo[] = INCBIN_U8("graphics/pokemon/icons/ludicolo_icon.4bpp");
const u8 gMonFootprint_Ludicolo[] = INCBIN_U8("graphics/pokemon/footprints/ludicolo_footprint.1bpp");
-const u8 gMonStillFrontPic_Seedot[] = INCBIN_U8("graphics/pokemon/front_pics/seedot_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Seedot[] = INCBIN_U8("graphics/pokemon/palettes/seedot_palette.gbapal.lz");
-const u8 gMonBackPic_Seedot[] = INCBIN_U8("graphics/pokemon/back_pics/seedot_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Seedot[] = INCBIN_U8("graphics/pokemon/palettes/seedot_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Seedot[] = INCBIN_U32("graphics/pokemon/front_pics/seedot_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Seedot[] = INCBIN_U32("graphics/pokemon/palettes/seedot_palette.gbapal.lz");
+const u32 gMonBackPic_Seedot[] = INCBIN_U32("graphics/pokemon/back_pics/seedot_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Seedot[] = INCBIN_U32("graphics/pokemon/palettes/seedot_shiny_palette.gbapal.lz");
const u8 gMonIcon_Seedot[] = INCBIN_U8("graphics/pokemon/icons/seedot_icon.4bpp");
const u8 gMonFootprint_Seedot[] = INCBIN_U8("graphics/pokemon/footprints/seedot_footprint.1bpp");
-const u8 gMonStillFrontPic_Nuzleaf[] = INCBIN_U8("graphics/pokemon/front_pics/nuzleaf_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Nuzleaf[] = INCBIN_U8("graphics/pokemon/palettes/nuzleaf_palette.gbapal.lz");
-const u8 gMonBackPic_Nuzleaf[] = INCBIN_U8("graphics/pokemon/back_pics/nuzleaf_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Nuzleaf[] = INCBIN_U8("graphics/pokemon/palettes/nuzleaf_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/front_pics/nuzleaf_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/palettes/nuzleaf_palette.gbapal.lz");
+const u32 gMonBackPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/back_pics/nuzleaf_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/palettes/nuzleaf_shiny_palette.gbapal.lz");
const u8 gMonIcon_Nuzleaf[] = INCBIN_U8("graphics/pokemon/icons/nuzleaf_icon.4bpp");
const u8 gMonFootprint_Nuzleaf[] = INCBIN_U8("graphics/pokemon/footprints/nuzleaf_footprint.1bpp");
-const u8 gMonStillFrontPic_Shiftry[] = INCBIN_U8("graphics/pokemon/front_pics/shiftry_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Shiftry[] = INCBIN_U8("graphics/pokemon/palettes/shiftry_palette.gbapal.lz");
-const u8 gMonBackPic_Shiftry[] = INCBIN_U8("graphics/pokemon/back_pics/shiftry_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Shiftry[] = INCBIN_U8("graphics/pokemon/palettes/shiftry_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Shiftry[] = INCBIN_U32("graphics/pokemon/front_pics/shiftry_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/palettes/shiftry_palette.gbapal.lz");
+const u32 gMonBackPic_Shiftry[] = INCBIN_U32("graphics/pokemon/back_pics/shiftry_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/palettes/shiftry_shiny_palette.gbapal.lz");
const u8 gMonIcon_Shiftry[] = INCBIN_U8("graphics/pokemon/icons/shiftry_icon.4bpp");
const u8 gMonFootprint_Shiftry[] = INCBIN_U8("graphics/pokemon/footprints/shiftry_footprint.1bpp");
-const u8 gMonStillFrontPic_Nincada[] = INCBIN_U8("graphics/pokemon/front_pics/nincada_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Nincada[] = INCBIN_U8("graphics/pokemon/palettes/nincada_palette.gbapal.lz");
-const u8 gMonBackPic_Nincada[] = INCBIN_U8("graphics/pokemon/back_pics/nincada_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Nincada[] = INCBIN_U8("graphics/pokemon/palettes/nincada_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Nincada[] = INCBIN_U32("graphics/pokemon/front_pics/nincada_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Nincada[] = INCBIN_U32("graphics/pokemon/palettes/nincada_palette.gbapal.lz");
+const u32 gMonBackPic_Nincada[] = INCBIN_U32("graphics/pokemon/back_pics/nincada_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Nincada[] = INCBIN_U32("graphics/pokemon/palettes/nincada_shiny_palette.gbapal.lz");
const u8 gMonIcon_Nincada[] = INCBIN_U8("graphics/pokemon/icons/nincada_icon.4bpp");
const u8 gMonFootprint_Nincada[] = INCBIN_U8("graphics/pokemon/footprints/nincada_footprint.1bpp");
-const u8 gMonStillFrontPic_Ninjask[] = INCBIN_U8("graphics/pokemon/front_pics/ninjask_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ninjask[] = INCBIN_U8("graphics/pokemon/palettes/ninjask_palette.gbapal.lz");
-const u8 gMonBackPic_Ninjask[] = INCBIN_U8("graphics/pokemon/back_pics/ninjask_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ninjask[] = INCBIN_U8("graphics/pokemon/palettes/ninjask_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ninjask[] = INCBIN_U32("graphics/pokemon/front_pics/ninjask_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/palettes/ninjask_palette.gbapal.lz");
+const u32 gMonBackPic_Ninjask[] = INCBIN_U32("graphics/pokemon/back_pics/ninjask_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/palettes/ninjask_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ninjask[] = INCBIN_U8("graphics/pokemon/icons/ninjask_icon.4bpp");
const u8 gMonFootprint_Ninjask[] = INCBIN_U8("graphics/pokemon/footprints/ninjask_footprint.1bpp");
-const u8 gMonStillFrontPic_Shedinja[] = INCBIN_U8("graphics/pokemon/front_pics/shedinja_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Shedinja[] = INCBIN_U8("graphics/pokemon/palettes/shedinja_palette.gbapal.lz");
-const u8 gMonBackPic_Shedinja[] = INCBIN_U8("graphics/pokemon/back_pics/shedinja_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Shedinja[] = INCBIN_U8("graphics/pokemon/palettes/shedinja_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Shedinja[] = INCBIN_U32("graphics/pokemon/front_pics/shedinja_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/palettes/shedinja_palette.gbapal.lz");
+const u32 gMonBackPic_Shedinja[] = INCBIN_U32("graphics/pokemon/back_pics/shedinja_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/palettes/shedinja_shiny_palette.gbapal.lz");
const u8 gMonIcon_Shedinja[] = INCBIN_U8("graphics/pokemon/icons/shedinja_icon.4bpp");
const u8 gMonFootprint_Shedinja[] = INCBIN_U8("graphics/pokemon/footprints/shedinja_footprint.1bpp");
-const u8 gMonStillFrontPic_Taillow[] = INCBIN_U8("graphics/pokemon/front_pics/taillow_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Taillow[] = INCBIN_U8("graphics/pokemon/palettes/taillow_palette.gbapal.lz");
-const u8 gMonBackPic_Taillow[] = INCBIN_U8("graphics/pokemon/back_pics/taillow_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Taillow[] = INCBIN_U8("graphics/pokemon/palettes/taillow_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Taillow[] = INCBIN_U32("graphics/pokemon/front_pics/taillow_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Taillow[] = INCBIN_U32("graphics/pokemon/palettes/taillow_palette.gbapal.lz");
+const u32 gMonBackPic_Taillow[] = INCBIN_U32("graphics/pokemon/back_pics/taillow_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Taillow[] = INCBIN_U32("graphics/pokemon/palettes/taillow_shiny_palette.gbapal.lz");
const u8 gMonIcon_Taillow[] = INCBIN_U8("graphics/pokemon/icons/taillow_icon.4bpp");
const u8 gMonFootprint_Taillow[] = INCBIN_U8("graphics/pokemon/footprints/taillow_footprint.1bpp");
-const u8 gMonStillFrontPic_Swellow[] = INCBIN_U8("graphics/pokemon/front_pics/swellow_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Swellow[] = INCBIN_U8("graphics/pokemon/palettes/swellow_palette.gbapal.lz");
-const u8 gMonBackPic_Swellow[] = INCBIN_U8("graphics/pokemon/back_pics/swellow_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Swellow[] = INCBIN_U8("graphics/pokemon/palettes/swellow_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Swellow[] = INCBIN_U32("graphics/pokemon/front_pics/swellow_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Swellow[] = INCBIN_U32("graphics/pokemon/palettes/swellow_palette.gbapal.lz");
+const u32 gMonBackPic_Swellow[] = INCBIN_U32("graphics/pokemon/back_pics/swellow_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Swellow[] = INCBIN_U32("graphics/pokemon/palettes/swellow_shiny_palette.gbapal.lz");
const u8 gMonIcon_Swellow[] = INCBIN_U8("graphics/pokemon/icons/swellow_icon.4bpp");
const u8 gMonFootprint_Swellow[] = INCBIN_U8("graphics/pokemon/footprints/swellow_footprint.1bpp");
-const u8 gMonStillFrontPic_Shroomish[] = INCBIN_U8("graphics/pokemon/front_pics/shroomish_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Shroomish[] = INCBIN_U8("graphics/pokemon/palettes/shroomish_palette.gbapal.lz");
-const u8 gMonBackPic_Shroomish[] = INCBIN_U8("graphics/pokemon/back_pics/shroomish_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Shroomish[] = INCBIN_U8("graphics/pokemon/palettes/shroomish_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Shroomish[] = INCBIN_U32("graphics/pokemon/front_pics/shroomish_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/palettes/shroomish_palette.gbapal.lz");
+const u32 gMonBackPic_Shroomish[] = INCBIN_U32("graphics/pokemon/back_pics/shroomish_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/palettes/shroomish_shiny_palette.gbapal.lz");
const u8 gMonIcon_Shroomish[] = INCBIN_U8("graphics/pokemon/icons/shroomish_icon.4bpp");
const u8 gMonFootprint_Shroomish[] = INCBIN_U8("graphics/pokemon/footprints/shroomish_footprint.1bpp");
-const u8 gMonStillFrontPic_Breloom[] = INCBIN_U8("graphics/pokemon/front_pics/breloom_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Breloom[] = INCBIN_U8("graphics/pokemon/palettes/breloom_palette.gbapal.lz");
-const u8 gMonBackPic_Breloom[] = INCBIN_U8("graphics/pokemon/back_pics/breloom_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Breloom[] = INCBIN_U8("graphics/pokemon/palettes/breloom_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Breloom[] = INCBIN_U32("graphics/pokemon/front_pics/breloom_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Breloom[] = INCBIN_U32("graphics/pokemon/palettes/breloom_palette.gbapal.lz");
+const u32 gMonBackPic_Breloom[] = INCBIN_U32("graphics/pokemon/back_pics/breloom_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Breloom[] = INCBIN_U32("graphics/pokemon/palettes/breloom_shiny_palette.gbapal.lz");
const u8 gMonIcon_Breloom[] = INCBIN_U8("graphics/pokemon/icons/breloom_icon.4bpp");
const u8 gMonFootprint_Breloom[] = INCBIN_U8("graphics/pokemon/footprints/breloom_footprint.1bpp");
-const u8 gMonStillFrontPic_Spinda[] = INCBIN_U8("graphics/pokemon/front_pics/spinda_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Spinda[] = INCBIN_U8("graphics/pokemon/palettes/spinda_palette.gbapal.lz");
-const u8 gMonBackPic_Spinda[] = INCBIN_U8("graphics/pokemon/back_pics/spinda_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Spinda[] = INCBIN_U8("graphics/pokemon/palettes/spinda_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Spinda[] = INCBIN_U32("graphics/pokemon/front_pics/spinda_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Spinda[] = INCBIN_U32("graphics/pokemon/palettes/spinda_palette.gbapal.lz");
+const u32 gMonBackPic_Spinda[] = INCBIN_U32("graphics/pokemon/back_pics/spinda_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Spinda[] = INCBIN_U32("graphics/pokemon/palettes/spinda_shiny_palette.gbapal.lz");
const u8 gMonIcon_Spinda[] = INCBIN_U8("graphics/pokemon/icons/spinda_icon.4bpp");
const u8 gMonFootprint_Spinda[] = INCBIN_U8("graphics/pokemon/footprints/spinda_footprint.1bpp");
-const u8 gMonStillFrontPic_Wingull[] = INCBIN_U8("graphics/pokemon/front_pics/wingull_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Wingull[] = INCBIN_U8("graphics/pokemon/palettes/wingull_palette.gbapal.lz");
-const u8 gMonBackPic_Wingull[] = INCBIN_U8("graphics/pokemon/back_pics/wingull_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Wingull[] = INCBIN_U8("graphics/pokemon/palettes/wingull_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Wingull[] = INCBIN_U32("graphics/pokemon/front_pics/wingull_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Wingull[] = INCBIN_U32("graphics/pokemon/palettes/wingull_palette.gbapal.lz");
+const u32 gMonBackPic_Wingull[] = INCBIN_U32("graphics/pokemon/back_pics/wingull_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Wingull[] = INCBIN_U32("graphics/pokemon/palettes/wingull_shiny_palette.gbapal.lz");
const u8 gMonIcon_Wingull[] = INCBIN_U8("graphics/pokemon/icons/wingull_icon.4bpp");
const u8 gMonFootprint_Wingull[] = INCBIN_U8("graphics/pokemon/footprints/wingull_footprint.1bpp");
-const u8 gMonStillFrontPic_Pelipper[] = INCBIN_U8("graphics/pokemon/front_pics/pelipper_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Pelipper[] = INCBIN_U8("graphics/pokemon/palettes/pelipper_palette.gbapal.lz");
-const u8 gMonBackPic_Pelipper[] = INCBIN_U8("graphics/pokemon/back_pics/pelipper_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Pelipper[] = INCBIN_U8("graphics/pokemon/palettes/pelipper_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Pelipper[] = INCBIN_U32("graphics/pokemon/front_pics/pelipper_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/palettes/pelipper_palette.gbapal.lz");
+const u32 gMonBackPic_Pelipper[] = INCBIN_U32("graphics/pokemon/back_pics/pelipper_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/palettes/pelipper_shiny_palette.gbapal.lz");
const u8 gMonIcon_Pelipper[] = INCBIN_U8("graphics/pokemon/icons/pelipper_icon.4bpp");
const u8 gMonFootprint_Pelipper[] = INCBIN_U8("graphics/pokemon/footprints/pelipper_footprint.1bpp");
-const u8 gMonStillFrontPic_Surskit[] = INCBIN_U8("graphics/pokemon/front_pics/surskit_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Surskit[] = INCBIN_U8("graphics/pokemon/palettes/surskit_palette.gbapal.lz");
-const u8 gMonBackPic_Surskit[] = INCBIN_U8("graphics/pokemon/back_pics/surskit_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Surskit[] = INCBIN_U8("graphics/pokemon/palettes/surskit_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Surskit[] = INCBIN_U32("graphics/pokemon/front_pics/surskit_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Surskit[] = INCBIN_U32("graphics/pokemon/palettes/surskit_palette.gbapal.lz");
+const u32 gMonBackPic_Surskit[] = INCBIN_U32("graphics/pokemon/back_pics/surskit_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Surskit[] = INCBIN_U32("graphics/pokemon/palettes/surskit_shiny_palette.gbapal.lz");
const u8 gMonIcon_Surskit[] = INCBIN_U8("graphics/pokemon/icons/surskit_icon.4bpp");
const u8 gMonFootprint_Surskit[] = INCBIN_U8("graphics/pokemon/footprints/surskit_footprint.1bpp");
-const u8 gMonStillFrontPic_Masquerain[] = INCBIN_U8("graphics/pokemon/front_pics/masquerain_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Masquerain[] = INCBIN_U8("graphics/pokemon/palettes/masquerain_palette.gbapal.lz");
-const u8 gMonBackPic_Masquerain[] = INCBIN_U8("graphics/pokemon/back_pics/masquerain_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Masquerain[] = INCBIN_U8("graphics/pokemon/palettes/masquerain_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Masquerain[] = INCBIN_U32("graphics/pokemon/front_pics/masquerain_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/palettes/masquerain_palette.gbapal.lz");
+const u32 gMonBackPic_Masquerain[] = INCBIN_U32("graphics/pokemon/back_pics/masquerain_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/palettes/masquerain_shiny_palette.gbapal.lz");
const u8 gMonIcon_Masquerain[] = INCBIN_U8("graphics/pokemon/icons/masquerain_icon.4bpp");
const u8 gMonFootprint_Masquerain[] = INCBIN_U8("graphics/pokemon/footprints/masquerain_footprint.1bpp");
-const u8 gMonStillFrontPic_Wailmer[] = INCBIN_U8("graphics/pokemon/front_pics/wailmer_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Wailmer[] = INCBIN_U8("graphics/pokemon/palettes/wailmer_palette.gbapal.lz");
-const u8 gMonBackPic_Wailmer[] = INCBIN_U8("graphics/pokemon/back_pics/wailmer_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Wailmer[] = INCBIN_U8("graphics/pokemon/palettes/wailmer_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Wailmer[] = INCBIN_U32("graphics/pokemon/front_pics/wailmer_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/palettes/wailmer_palette.gbapal.lz");
+const u32 gMonBackPic_Wailmer[] = INCBIN_U32("graphics/pokemon/back_pics/wailmer_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/palettes/wailmer_shiny_palette.gbapal.lz");
const u8 gMonIcon_Wailmer[] = INCBIN_U8("graphics/pokemon/icons/wailmer_icon.4bpp");
const u8 gMonFootprint_Wailmer[] = INCBIN_U8("graphics/pokemon/footprints/wailmer_footprint.1bpp");
-const u8 gMonStillFrontPic_Wailord[] = INCBIN_U8("graphics/pokemon/front_pics/wailord_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Wailord[] = INCBIN_U8("graphics/pokemon/palettes/wailord_palette.gbapal.lz");
-const u8 gMonBackPic_Wailord[] = INCBIN_U8("graphics/pokemon/back_pics/wailord_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Wailord[] = INCBIN_U8("graphics/pokemon/palettes/wailord_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Wailord[] = INCBIN_U32("graphics/pokemon/front_pics/wailord_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Wailord[] = INCBIN_U32("graphics/pokemon/palettes/wailord_palette.gbapal.lz");
+const u32 gMonBackPic_Wailord[] = INCBIN_U32("graphics/pokemon/back_pics/wailord_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Wailord[] = INCBIN_U32("graphics/pokemon/palettes/wailord_shiny_palette.gbapal.lz");
const u8 gMonIcon_Wailord[] = INCBIN_U8("graphics/pokemon/icons/wailord_icon.4bpp");
const u8 gMonFootprint_Wailord[] = INCBIN_U8("graphics/pokemon/footprints/wailord_footprint.1bpp");
-const u8 gMonStillFrontPic_Skitty[] = INCBIN_U8("graphics/pokemon/front_pics/skitty_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Skitty[] = INCBIN_U8("graphics/pokemon/palettes/skitty_palette.gbapal.lz");
-const u8 gMonBackPic_Skitty[] = INCBIN_U8("graphics/pokemon/back_pics/skitty_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Skitty[] = INCBIN_U8("graphics/pokemon/palettes/skitty_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Skitty[] = INCBIN_U32("graphics/pokemon/front_pics/skitty_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Skitty[] = INCBIN_U32("graphics/pokemon/palettes/skitty_palette.gbapal.lz");
+const u32 gMonBackPic_Skitty[] = INCBIN_U32("graphics/pokemon/back_pics/skitty_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Skitty[] = INCBIN_U32("graphics/pokemon/palettes/skitty_shiny_palette.gbapal.lz");
const u8 gMonIcon_Skitty[] = INCBIN_U8("graphics/pokemon/icons/skitty_icon.4bpp");
const u8 gMonFootprint_Skitty[] = INCBIN_U8("graphics/pokemon/footprints/skitty_footprint.1bpp");
-const u8 gMonStillFrontPic_Delcatty[] = INCBIN_U8("graphics/pokemon/front_pics/delcatty_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Delcatty[] = INCBIN_U8("graphics/pokemon/palettes/delcatty_palette.gbapal.lz");
-const u8 gMonBackPic_Delcatty[] = INCBIN_U8("graphics/pokemon/back_pics/delcatty_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Delcatty[] = INCBIN_U8("graphics/pokemon/palettes/delcatty_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Delcatty[] = INCBIN_U32("graphics/pokemon/front_pics/delcatty_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/palettes/delcatty_palette.gbapal.lz");
+const u32 gMonBackPic_Delcatty[] = INCBIN_U32("graphics/pokemon/back_pics/delcatty_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/palettes/delcatty_shiny_palette.gbapal.lz");
const u8 gMonIcon_Delcatty[] = INCBIN_U8("graphics/pokemon/icons/delcatty_icon.4bpp");
const u8 gMonFootprint_Delcatty[] = INCBIN_U8("graphics/pokemon/footprints/delcatty_footprint.1bpp");
-const u8 gMonStillFrontPic_Kecleon[] = INCBIN_U8("graphics/pokemon/front_pics/kecleon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Kecleon[] = INCBIN_U8("graphics/pokemon/palettes/kecleon_palette.gbapal.lz");
-const u8 gMonBackPic_Kecleon[] = INCBIN_U8("graphics/pokemon/back_pics/kecleon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Kecleon[] = INCBIN_U8("graphics/pokemon/palettes/kecleon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Kecleon[] = INCBIN_U32("graphics/pokemon/front_pics/kecleon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/palettes/kecleon_palette.gbapal.lz");
+const u32 gMonBackPic_Kecleon[] = INCBIN_U32("graphics/pokemon/back_pics/kecleon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/palettes/kecleon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Kecleon[] = INCBIN_U8("graphics/pokemon/icons/kecleon_icon.4bpp");
const u8 gMonFootprint_Kecleon[] = INCBIN_U8("graphics/pokemon/footprints/kecleon_footprint.1bpp");
-const u8 gMonStillFrontPic_Baltoy[] = INCBIN_U8("graphics/pokemon/front_pics/baltoy_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Baltoy[] = INCBIN_U8("graphics/pokemon/palettes/baltoy_palette.gbapal.lz");
-const u8 gMonBackPic_Baltoy[] = INCBIN_U8("graphics/pokemon/back_pics/baltoy_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Baltoy[] = INCBIN_U8("graphics/pokemon/palettes/baltoy_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Baltoy[] = INCBIN_U32("graphics/pokemon/front_pics/baltoy_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/palettes/baltoy_palette.gbapal.lz");
+const u32 gMonBackPic_Baltoy[] = INCBIN_U32("graphics/pokemon/back_pics/baltoy_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/palettes/baltoy_shiny_palette.gbapal.lz");
const u8 gMonIcon_Baltoy[] = INCBIN_U8("graphics/pokemon/icons/baltoy_icon.4bpp");
const u8 gMonFootprint_Baltoy[] = INCBIN_U8("graphics/pokemon/footprints/baltoy_footprint.1bpp");
-const u8 gMonStillFrontPic_Claydol[] = INCBIN_U8("graphics/pokemon/front_pics/claydol_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Claydol[] = INCBIN_U8("graphics/pokemon/palettes/claydol_palette.gbapal.lz");
-const u8 gMonBackPic_Claydol[] = INCBIN_U8("graphics/pokemon/back_pics/claydol_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Claydol[] = INCBIN_U8("graphics/pokemon/palettes/claydol_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Claydol[] = INCBIN_U32("graphics/pokemon/front_pics/claydol_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Claydol[] = INCBIN_U32("graphics/pokemon/palettes/claydol_palette.gbapal.lz");
+const u32 gMonBackPic_Claydol[] = INCBIN_U32("graphics/pokemon/back_pics/claydol_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Claydol[] = INCBIN_U32("graphics/pokemon/palettes/claydol_shiny_palette.gbapal.lz");
const u8 gMonIcon_Claydol[] = INCBIN_U8("graphics/pokemon/icons/claydol_icon.4bpp");
const u8 gMonFootprint_Claydol[] = INCBIN_U8("graphics/pokemon/footprints/claydol_footprint.1bpp");
-const u8 gMonStillFrontPic_Nosepass[] = INCBIN_U8("graphics/pokemon/front_pics/nosepass_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Nosepass[] = INCBIN_U8("graphics/pokemon/palettes/nosepass_palette.gbapal.lz");
-const u8 gMonBackPic_Nosepass[] = INCBIN_U8("graphics/pokemon/back_pics/nosepass_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Nosepass[] = INCBIN_U8("graphics/pokemon/palettes/nosepass_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Nosepass[] = INCBIN_U32("graphics/pokemon/front_pics/nosepass_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/palettes/nosepass_palette.gbapal.lz");
+const u32 gMonBackPic_Nosepass[] = INCBIN_U32("graphics/pokemon/back_pics/nosepass_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/palettes/nosepass_shiny_palette.gbapal.lz");
const u8 gMonIcon_Nosepass[] = INCBIN_U8("graphics/pokemon/icons/nosepass_icon.4bpp");
const u8 gMonFootprint_Nosepass[] = INCBIN_U8("graphics/pokemon/footprints/nosepass_footprint.1bpp");
-const u8 gMonStillFrontPic_Torkoal[] = INCBIN_U8("graphics/pokemon/front_pics/torkoal_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Torkoal[] = INCBIN_U8("graphics/pokemon/palettes/torkoal_palette.gbapal.lz");
-const u8 gMonBackPic_Torkoal[] = INCBIN_U8("graphics/pokemon/back_pics/torkoal_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Torkoal[] = INCBIN_U8("graphics/pokemon/palettes/torkoal_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Torkoal[] = INCBIN_U32("graphics/pokemon/front_pics/torkoal_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/palettes/torkoal_palette.gbapal.lz");
+const u32 gMonBackPic_Torkoal[] = INCBIN_U32("graphics/pokemon/back_pics/torkoal_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/palettes/torkoal_shiny_palette.gbapal.lz");
const u8 gMonIcon_Torkoal[] = INCBIN_U8("graphics/pokemon/icons/torkoal_icon.4bpp");
const u8 gMonFootprint_Torkoal[] = INCBIN_U8("graphics/pokemon/footprints/torkoal_footprint.1bpp");
-const u8 gMonStillFrontPic_Sableye[] = INCBIN_U8("graphics/pokemon/front_pics/sableye_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Sableye[] = INCBIN_U8("graphics/pokemon/palettes/sableye_palette.gbapal.lz");
-const u8 gMonBackPic_Sableye[] = INCBIN_U8("graphics/pokemon/back_pics/sableye_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Sableye[] = INCBIN_U8("graphics/pokemon/palettes/sableye_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Sableye[] = INCBIN_U32("graphics/pokemon/front_pics/sableye_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Sableye[] = INCBIN_U32("graphics/pokemon/palettes/sableye_palette.gbapal.lz");
+const u32 gMonBackPic_Sableye[] = INCBIN_U32("graphics/pokemon/back_pics/sableye_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Sableye[] = INCBIN_U32("graphics/pokemon/palettes/sableye_shiny_palette.gbapal.lz");
const u8 gMonIcon_Sableye[] = INCBIN_U8("graphics/pokemon/icons/sableye_icon.4bpp");
const u8 gMonFootprint_Sableye[] = INCBIN_U8("graphics/pokemon/footprints/sableye_footprint.1bpp");
-const u8 gMonStillFrontPic_Barboach[] = INCBIN_U8("graphics/pokemon/front_pics/barboach_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Barboach[] = INCBIN_U8("graphics/pokemon/palettes/barboach_palette.gbapal.lz");
-const u8 gMonBackPic_Barboach[] = INCBIN_U8("graphics/pokemon/back_pics/barboach_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Barboach[] = INCBIN_U8("graphics/pokemon/palettes/barboach_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Barboach[] = INCBIN_U32("graphics/pokemon/front_pics/barboach_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Barboach[] = INCBIN_U32("graphics/pokemon/palettes/barboach_palette.gbapal.lz");
+const u32 gMonBackPic_Barboach[] = INCBIN_U32("graphics/pokemon/back_pics/barboach_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Barboach[] = INCBIN_U32("graphics/pokemon/palettes/barboach_shiny_palette.gbapal.lz");
const u8 gMonIcon_Barboach[] = INCBIN_U8("graphics/pokemon/icons/barboach_icon.4bpp");
const u8 gMonFootprint_Barboach[] = INCBIN_U8("graphics/pokemon/footprints/barboach_footprint.1bpp");
-const u8 gMonStillFrontPic_Whiscash[] = INCBIN_U8("graphics/pokemon/front_pics/whiscash_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Whiscash[] = INCBIN_U8("graphics/pokemon/palettes/whiscash_palette.gbapal.lz");
-const u8 gMonBackPic_Whiscash[] = INCBIN_U8("graphics/pokemon/back_pics/whiscash_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Whiscash[] = INCBIN_U8("graphics/pokemon/palettes/whiscash_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Whiscash[] = INCBIN_U32("graphics/pokemon/front_pics/whiscash_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/palettes/whiscash_palette.gbapal.lz");
+const u32 gMonBackPic_Whiscash[] = INCBIN_U32("graphics/pokemon/back_pics/whiscash_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/palettes/whiscash_shiny_palette.gbapal.lz");
const u8 gMonIcon_Whiscash[] = INCBIN_U8("graphics/pokemon/icons/whiscash_icon.4bpp");
const u8 gMonFootprint_Whiscash[] = INCBIN_U8("graphics/pokemon/footprints/whiscash_footprint.1bpp");
-const u8 gMonStillFrontPic_Luvdisc[] = INCBIN_U8("graphics/pokemon/front_pics/luvdisc_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Luvdisc[] = INCBIN_U8("graphics/pokemon/palettes/luvdisc_palette.gbapal.lz");
-const u8 gMonBackPic_Luvdisc[] = INCBIN_U8("graphics/pokemon/back_pics/luvdisc_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Luvdisc[] = INCBIN_U8("graphics/pokemon/palettes/luvdisc_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/front_pics/luvdisc_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/palettes/luvdisc_palette.gbapal.lz");
+const u32 gMonBackPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/back_pics/luvdisc_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/palettes/luvdisc_shiny_palette.gbapal.lz");
const u8 gMonIcon_Luvdisc[] = INCBIN_U8("graphics/pokemon/icons/luvdisc_icon.4bpp");
const u8 gMonFootprint_Luvdisc[] = INCBIN_U8("graphics/pokemon/footprints/luvdisc_footprint.1bpp");
-const u8 gMonStillFrontPic_Corphish[] = INCBIN_U8("graphics/pokemon/front_pics/corphish_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Corphish[] = INCBIN_U8("graphics/pokemon/palettes/corphish_palette.gbapal.lz");
-const u8 gMonBackPic_Corphish[] = INCBIN_U8("graphics/pokemon/back_pics/corphish_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Corphish[] = INCBIN_U8("graphics/pokemon/palettes/corphish_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Corphish[] = INCBIN_U32("graphics/pokemon/front_pics/corphish_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Corphish[] = INCBIN_U32("graphics/pokemon/palettes/corphish_palette.gbapal.lz");
+const u32 gMonBackPic_Corphish[] = INCBIN_U32("graphics/pokemon/back_pics/corphish_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Corphish[] = INCBIN_U32("graphics/pokemon/palettes/corphish_shiny_palette.gbapal.lz");
const u8 gMonIcon_Corphish[] = INCBIN_U8("graphics/pokemon/icons/corphish_icon.4bpp");
const u8 gMonFootprint_Corphish[] = INCBIN_U8("graphics/pokemon/footprints/corphish_footprint.1bpp");
-const u8 gMonStillFrontPic_Crawdaunt[] = INCBIN_U8("graphics/pokemon/front_pics/crawdaunt_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Crawdaunt[] = INCBIN_U8("graphics/pokemon/palettes/crawdaunt_palette.gbapal.lz");
-const u8 gMonBackPic_Crawdaunt[] = INCBIN_U8("graphics/pokemon/back_pics/crawdaunt_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Crawdaunt[] = INCBIN_U8("graphics/pokemon/palettes/crawdaunt_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/front_pics/crawdaunt_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/palettes/crawdaunt_palette.gbapal.lz");
+const u32 gMonBackPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/back_pics/crawdaunt_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/palettes/crawdaunt_shiny_palette.gbapal.lz");
const u8 gMonIcon_Crawdaunt[] = INCBIN_U8("graphics/pokemon/icons/crawdaunt_icon.4bpp");
const u8 gMonFootprint_Crawdaunt[] = INCBIN_U8("graphics/pokemon/footprints/crawdaunt_footprint.1bpp");
-const u8 gMonStillFrontPic_Feebas[] = INCBIN_U8("graphics/pokemon/front_pics/feebas_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Feebas[] = INCBIN_U8("graphics/pokemon/palettes/feebas_palette.gbapal.lz");
-const u8 gMonBackPic_Feebas[] = INCBIN_U8("graphics/pokemon/back_pics/feebas_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Feebas[] = INCBIN_U8("graphics/pokemon/palettes/feebas_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Feebas[] = INCBIN_U32("graphics/pokemon/front_pics/feebas_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Feebas[] = INCBIN_U32("graphics/pokemon/palettes/feebas_palette.gbapal.lz");
+const u32 gMonBackPic_Feebas[] = INCBIN_U32("graphics/pokemon/back_pics/feebas_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Feebas[] = INCBIN_U32("graphics/pokemon/palettes/feebas_shiny_palette.gbapal.lz");
const u8 gMonIcon_Feebas[] = INCBIN_U8("graphics/pokemon/icons/feebas_icon.4bpp");
const u8 gMonFootprint_Feebas[] = INCBIN_U8("graphics/pokemon/footprints/feebas_footprint.1bpp");
-const u8 gMonStillFrontPic_Milotic[] = INCBIN_U8("graphics/pokemon/front_pics/milotic_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Milotic[] = INCBIN_U8("graphics/pokemon/palettes/milotic_palette.gbapal.lz");
-const u8 gMonBackPic_Milotic[] = INCBIN_U8("graphics/pokemon/back_pics/milotic_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Milotic[] = INCBIN_U8("graphics/pokemon/palettes/milotic_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Milotic[] = INCBIN_U32("graphics/pokemon/front_pics/milotic_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Milotic[] = INCBIN_U32("graphics/pokemon/palettes/milotic_palette.gbapal.lz");
+const u32 gMonBackPic_Milotic[] = INCBIN_U32("graphics/pokemon/back_pics/milotic_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Milotic[] = INCBIN_U32("graphics/pokemon/palettes/milotic_shiny_palette.gbapal.lz");
const u8 gMonIcon_Milotic[] = INCBIN_U8("graphics/pokemon/icons/milotic_icon.4bpp");
const u8 gMonFootprint_Milotic[] = INCBIN_U8("graphics/pokemon/footprints/milotic_footprint.1bpp");
-const u8 gMonStillFrontPic_Carvanha[] = INCBIN_U8("graphics/pokemon/front_pics/carvanha_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Carvanha[] = INCBIN_U8("graphics/pokemon/palettes/carvanha_palette.gbapal.lz");
-const u8 gMonBackPic_Carvanha[] = INCBIN_U8("graphics/pokemon/back_pics/carvanha_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Carvanha[] = INCBIN_U8("graphics/pokemon/palettes/carvanha_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Carvanha[] = INCBIN_U32("graphics/pokemon/front_pics/carvanha_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/palettes/carvanha_palette.gbapal.lz");
+const u32 gMonBackPic_Carvanha[] = INCBIN_U32("graphics/pokemon/back_pics/carvanha_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/palettes/carvanha_shiny_palette.gbapal.lz");
const u8 gMonIcon_Carvanha[] = INCBIN_U8("graphics/pokemon/icons/carvanha_icon.4bpp");
const u8 gMonFootprint_Carvanha[] = INCBIN_U8("graphics/pokemon/footprints/carvanha_footprint.1bpp");
-const u8 gMonStillFrontPic_Sharpedo[] = INCBIN_U8("graphics/pokemon/front_pics/sharpedo_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Sharpedo[] = INCBIN_U8("graphics/pokemon/palettes/sharpedo_palette.gbapal.lz");
-const u8 gMonBackPic_Sharpedo[] = INCBIN_U8("graphics/pokemon/back_pics/sharpedo_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Sharpedo[] = INCBIN_U8("graphics/pokemon/palettes/sharpedo_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/front_pics/sharpedo_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/palettes/sharpedo_palette.gbapal.lz");
+const u32 gMonBackPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/back_pics/sharpedo_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/palettes/sharpedo_shiny_palette.gbapal.lz");
const u8 gMonIcon_Sharpedo[] = INCBIN_U8("graphics/pokemon/icons/sharpedo_icon.4bpp");
const u8 gMonFootprint_Sharpedo[] = INCBIN_U8("graphics/pokemon/footprints/sharpedo_footprint.1bpp");
-const u8 gMonStillFrontPic_Trapinch[] = INCBIN_U8("graphics/pokemon/front_pics/trapinch_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Trapinch[] = INCBIN_U8("graphics/pokemon/palettes/trapinch_palette.gbapal.lz");
-const u8 gMonBackPic_Trapinch[] = INCBIN_U8("graphics/pokemon/back_pics/trapinch_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Trapinch[] = INCBIN_U8("graphics/pokemon/palettes/trapinch_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Trapinch[] = INCBIN_U32("graphics/pokemon/front_pics/trapinch_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/palettes/trapinch_palette.gbapal.lz");
+const u32 gMonBackPic_Trapinch[] = INCBIN_U32("graphics/pokemon/back_pics/trapinch_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/palettes/trapinch_shiny_palette.gbapal.lz");
const u8 gMonIcon_Trapinch[] = INCBIN_U8("graphics/pokemon/icons/trapinch_icon.4bpp");
const u8 gMonFootprint_Trapinch[] = INCBIN_U8("graphics/pokemon/footprints/trapinch_footprint.1bpp");
-const u8 gMonStillFrontPic_Vibrava[] = INCBIN_U8("graphics/pokemon/front_pics/vibrava_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Vibrava[] = INCBIN_U8("graphics/pokemon/palettes/vibrava_palette.gbapal.lz");
-const u8 gMonBackPic_Vibrava[] = INCBIN_U8("graphics/pokemon/back_pics/vibrava_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Vibrava[] = INCBIN_U8("graphics/pokemon/palettes/vibrava_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Vibrava[] = INCBIN_U32("graphics/pokemon/front_pics/vibrava_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/palettes/vibrava_palette.gbapal.lz");
+const u32 gMonBackPic_Vibrava[] = INCBIN_U32("graphics/pokemon/back_pics/vibrava_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/palettes/vibrava_shiny_palette.gbapal.lz");
const u8 gMonIcon_Vibrava[] = INCBIN_U8("graphics/pokemon/icons/vibrava_icon.4bpp");
const u8 gMonFootprint_Vibrava[] = INCBIN_U8("graphics/pokemon/footprints/vibrava_footprint.1bpp");
-const u8 gMonStillFrontPic_Flygon[] = INCBIN_U8("graphics/pokemon/front_pics/flygon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Flygon[] = INCBIN_U8("graphics/pokemon/palettes/flygon_palette.gbapal.lz");
-const u8 gMonBackPic_Flygon[] = INCBIN_U8("graphics/pokemon/back_pics/flygon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Flygon[] = INCBIN_U8("graphics/pokemon/palettes/flygon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Flygon[] = INCBIN_U32("graphics/pokemon/front_pics/flygon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Flygon[] = INCBIN_U32("graphics/pokemon/palettes/flygon_palette.gbapal.lz");
+const u32 gMonBackPic_Flygon[] = INCBIN_U32("graphics/pokemon/back_pics/flygon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Flygon[] = INCBIN_U32("graphics/pokemon/palettes/flygon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Flygon[] = INCBIN_U8("graphics/pokemon/icons/flygon_icon.4bpp");
const u8 gMonFootprint_Flygon[] = INCBIN_U8("graphics/pokemon/footprints/flygon_footprint.1bpp");
-const u8 gMonStillFrontPic_Makuhita[] = INCBIN_U8("graphics/pokemon/front_pics/makuhita_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Makuhita[] = INCBIN_U8("graphics/pokemon/palettes/makuhita_palette.gbapal.lz");
-const u8 gMonBackPic_Makuhita[] = INCBIN_U8("graphics/pokemon/back_pics/makuhita_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Makuhita[] = INCBIN_U8("graphics/pokemon/palettes/makuhita_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Makuhita[] = INCBIN_U32("graphics/pokemon/front_pics/makuhita_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/palettes/makuhita_palette.gbapal.lz");
+const u32 gMonBackPic_Makuhita[] = INCBIN_U32("graphics/pokemon/back_pics/makuhita_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/palettes/makuhita_shiny_palette.gbapal.lz");
const u8 gMonIcon_Makuhita[] = INCBIN_U8("graphics/pokemon/icons/makuhita_icon.4bpp");
const u8 gMonFootprint_Makuhita[] = INCBIN_U8("graphics/pokemon/footprints/makuhita_footprint.1bpp");
-const u8 gMonStillFrontPic_Hariyama[] = INCBIN_U8("graphics/pokemon/front_pics/hariyama_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Hariyama[] = INCBIN_U8("graphics/pokemon/palettes/hariyama_palette.gbapal.lz");
-const u8 gMonBackPic_Hariyama[] = INCBIN_U8("graphics/pokemon/back_pics/hariyama_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Hariyama[] = INCBIN_U8("graphics/pokemon/palettes/hariyama_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Hariyama[] = INCBIN_U32("graphics/pokemon/front_pics/hariyama_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/palettes/hariyama_palette.gbapal.lz");
+const u32 gMonBackPic_Hariyama[] = INCBIN_U32("graphics/pokemon/back_pics/hariyama_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/palettes/hariyama_shiny_palette.gbapal.lz");
const u8 gMonIcon_Hariyama[] = INCBIN_U8("graphics/pokemon/icons/hariyama_icon.4bpp");
const u8 gMonFootprint_Hariyama[] = INCBIN_U8("graphics/pokemon/footprints/hariyama_footprint.1bpp");
-const u8 gMonStillFrontPic_Electrike[] = INCBIN_U8("graphics/pokemon/front_pics/electrike_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Electrike[] = INCBIN_U8("graphics/pokemon/palettes/electrike_palette.gbapal.lz");
-const u8 gMonBackPic_Electrike[] = INCBIN_U8("graphics/pokemon/back_pics/electrike_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Electrike[] = INCBIN_U8("graphics/pokemon/palettes/electrike_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Electrike[] = INCBIN_U32("graphics/pokemon/front_pics/electrike_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Electrike[] = INCBIN_U32("graphics/pokemon/palettes/electrike_palette.gbapal.lz");
+const u32 gMonBackPic_Electrike[] = INCBIN_U32("graphics/pokemon/back_pics/electrike_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Electrike[] = INCBIN_U32("graphics/pokemon/palettes/electrike_shiny_palette.gbapal.lz");
const u8 gMonIcon_Electrike[] = INCBIN_U8("graphics/pokemon/icons/electrike_icon.4bpp");
const u8 gMonFootprint_Electrike[] = INCBIN_U8("graphics/pokemon/footprints/electrike_footprint.1bpp");
-const u8 gMonStillFrontPic_Manectric[] = INCBIN_U8("graphics/pokemon/front_pics/manectric_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Manectric[] = INCBIN_U8("graphics/pokemon/palettes/manectric_palette.gbapal.lz");
-const u8 gMonBackPic_Manectric[] = INCBIN_U8("graphics/pokemon/back_pics/manectric_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Manectric[] = INCBIN_U8("graphics/pokemon/palettes/manectric_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Manectric[] = INCBIN_U32("graphics/pokemon/front_pics/manectric_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Manectric[] = INCBIN_U32("graphics/pokemon/palettes/manectric_palette.gbapal.lz");
+const u32 gMonBackPic_Manectric[] = INCBIN_U32("graphics/pokemon/back_pics/manectric_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Manectric[] = INCBIN_U32("graphics/pokemon/palettes/manectric_shiny_palette.gbapal.lz");
const u8 gMonIcon_Manectric[] = INCBIN_U8("graphics/pokemon/icons/manectric_icon.4bpp");
const u8 gMonFootprint_Manectric[] = INCBIN_U8("graphics/pokemon/footprints/manectric_footprint.1bpp");
-const u8 gMonStillFrontPic_Numel[] = INCBIN_U8("graphics/pokemon/front_pics/numel_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Numel[] = INCBIN_U8("graphics/pokemon/palettes/numel_palette.gbapal.lz");
-const u8 gMonBackPic_Numel[] = INCBIN_U8("graphics/pokemon/back_pics/numel_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Numel[] = INCBIN_U8("graphics/pokemon/palettes/numel_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Numel[] = INCBIN_U32("graphics/pokemon/front_pics/numel_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Numel[] = INCBIN_U32("graphics/pokemon/palettes/numel_palette.gbapal.lz");
+const u32 gMonBackPic_Numel[] = INCBIN_U32("graphics/pokemon/back_pics/numel_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Numel[] = INCBIN_U32("graphics/pokemon/palettes/numel_shiny_palette.gbapal.lz");
const u8 gMonIcon_Numel[] = INCBIN_U8("graphics/pokemon/icons/numel_icon.4bpp");
const u8 gMonFootprint_Numel[] = INCBIN_U8("graphics/pokemon/footprints/numel_footprint.1bpp");
-const u8 gMonStillFrontPic_Camerupt[] = INCBIN_U8("graphics/pokemon/front_pics/camerupt_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Camerupt[] = INCBIN_U8("graphics/pokemon/palettes/camerupt_palette.gbapal.lz");
-const u8 gMonBackPic_Camerupt[] = INCBIN_U8("graphics/pokemon/back_pics/camerupt_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Camerupt[] = INCBIN_U8("graphics/pokemon/palettes/camerupt_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Camerupt[] = INCBIN_U32("graphics/pokemon/front_pics/camerupt_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/palettes/camerupt_palette.gbapal.lz");
+const u32 gMonBackPic_Camerupt[] = INCBIN_U32("graphics/pokemon/back_pics/camerupt_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/palettes/camerupt_shiny_palette.gbapal.lz");
const u8 gMonIcon_Camerupt[] = INCBIN_U8("graphics/pokemon/icons/camerupt_icon.4bpp");
const u8 gMonFootprint_Camerupt[] = INCBIN_U8("graphics/pokemon/footprints/camerupt_footprint.1bpp");
-const u8 gMonStillFrontPic_Spheal[] = INCBIN_U8("graphics/pokemon/front_pics/spheal_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Spheal[] = INCBIN_U8("graphics/pokemon/palettes/spheal_palette.gbapal.lz");
-const u8 gMonBackPic_Spheal[] = INCBIN_U8("graphics/pokemon/back_pics/spheal_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Spheal[] = INCBIN_U8("graphics/pokemon/palettes/spheal_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Spheal[] = INCBIN_U32("graphics/pokemon/front_pics/spheal_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Spheal[] = INCBIN_U32("graphics/pokemon/palettes/spheal_palette.gbapal.lz");
+const u32 gMonBackPic_Spheal[] = INCBIN_U32("graphics/pokemon/back_pics/spheal_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Spheal[] = INCBIN_U32("graphics/pokemon/palettes/spheal_shiny_palette.gbapal.lz");
const u8 gMonIcon_Spheal[] = INCBIN_U8("graphics/pokemon/icons/spheal_icon.4bpp");
const u8 gMonFootprint_Spheal[] = INCBIN_U8("graphics/pokemon/footprints/spheal_footprint.1bpp");
-const u8 gMonStillFrontPic_Sealeo[] = INCBIN_U8("graphics/pokemon/front_pics/sealeo_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Sealeo[] = INCBIN_U8("graphics/pokemon/palettes/sealeo_palette.gbapal.lz");
-const u8 gMonBackPic_Sealeo[] = INCBIN_U8("graphics/pokemon/back_pics/sealeo_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Sealeo[] = INCBIN_U8("graphics/pokemon/palettes/sealeo_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Sealeo[] = INCBIN_U32("graphics/pokemon/front_pics/sealeo_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/palettes/sealeo_palette.gbapal.lz");
+const u32 gMonBackPic_Sealeo[] = INCBIN_U32("graphics/pokemon/back_pics/sealeo_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/palettes/sealeo_shiny_palette.gbapal.lz");
const u8 gMonIcon_Sealeo[] = INCBIN_U8("graphics/pokemon/icons/sealeo_icon.4bpp");
const u8 gMonFootprint_Sealeo[] = INCBIN_U8("graphics/pokemon/footprints/sealeo_footprint.1bpp");
-const u8 gMonStillFrontPic_Walrein[] = INCBIN_U8("graphics/pokemon/front_pics/walrein_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Walrein[] = INCBIN_U8("graphics/pokemon/palettes/walrein_palette.gbapal.lz");
-const u8 gMonBackPic_Walrein[] = INCBIN_U8("graphics/pokemon/back_pics/walrein_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Walrein[] = INCBIN_U8("graphics/pokemon/palettes/walrein_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Walrein[] = INCBIN_U32("graphics/pokemon/front_pics/walrein_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Walrein[] = INCBIN_U32("graphics/pokemon/palettes/walrein_palette.gbapal.lz");
+const u32 gMonBackPic_Walrein[] = INCBIN_U32("graphics/pokemon/back_pics/walrein_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Walrein[] = INCBIN_U32("graphics/pokemon/palettes/walrein_shiny_palette.gbapal.lz");
const u8 gMonIcon_Walrein[] = INCBIN_U8("graphics/pokemon/icons/walrein_icon.4bpp");
const u8 gMonFootprint_Walrein[] = INCBIN_U8("graphics/pokemon/footprints/walrein_footprint.1bpp");
-const u8 gMonStillFrontPic_Cacnea[] = INCBIN_U8("graphics/pokemon/front_pics/cacnea_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Cacnea[] = INCBIN_U8("graphics/pokemon/palettes/cacnea_palette.gbapal.lz");
-const u8 gMonBackPic_Cacnea[] = INCBIN_U8("graphics/pokemon/back_pics/cacnea_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Cacnea[] = INCBIN_U8("graphics/pokemon/palettes/cacnea_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Cacnea[] = INCBIN_U32("graphics/pokemon/front_pics/cacnea_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/palettes/cacnea_palette.gbapal.lz");
+const u32 gMonBackPic_Cacnea[] = INCBIN_U32("graphics/pokemon/back_pics/cacnea_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/palettes/cacnea_shiny_palette.gbapal.lz");
const u8 gMonIcon_Cacnea[] = INCBIN_U8("graphics/pokemon/icons/cacnea_icon.4bpp");
const u8 gMonFootprint_Cacnea[] = INCBIN_U8("graphics/pokemon/footprints/cacnea_footprint.1bpp");
-const u8 gMonStillFrontPic_Cacturne[] = INCBIN_U8("graphics/pokemon/front_pics/cacturne_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Cacturne[] = INCBIN_U8("graphics/pokemon/palettes/cacturne_palette.gbapal.lz");
-const u8 gMonBackPic_Cacturne[] = INCBIN_U8("graphics/pokemon/back_pics/cacturne_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Cacturne[] = INCBIN_U8("graphics/pokemon/palettes/cacturne_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Cacturne[] = INCBIN_U32("graphics/pokemon/front_pics/cacturne_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/palettes/cacturne_palette.gbapal.lz");
+const u32 gMonBackPic_Cacturne[] = INCBIN_U32("graphics/pokemon/back_pics/cacturne_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/palettes/cacturne_shiny_palette.gbapal.lz");
const u8 gMonIcon_Cacturne[] = INCBIN_U8("graphics/pokemon/icons/cacturne_icon.4bpp");
const u8 gMonFootprint_Cacturne[] = INCBIN_U8("graphics/pokemon/footprints/cacturne_footprint.1bpp");
-const u8 gMonStillFrontPic_Snorunt[] = INCBIN_U8("graphics/pokemon/front_pics/snorunt_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Snorunt[] = INCBIN_U8("graphics/pokemon/palettes/snorunt_palette.gbapal.lz");
-const u8 gMonBackPic_Snorunt[] = INCBIN_U8("graphics/pokemon/back_pics/snorunt_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Snorunt[] = INCBIN_U8("graphics/pokemon/palettes/snorunt_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Snorunt[] = INCBIN_U32("graphics/pokemon/front_pics/snorunt_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/palettes/snorunt_palette.gbapal.lz");
+const u32 gMonBackPic_Snorunt[] = INCBIN_U32("graphics/pokemon/back_pics/snorunt_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/palettes/snorunt_shiny_palette.gbapal.lz");
const u8 gMonIcon_Snorunt[] = INCBIN_U8("graphics/pokemon/icons/snorunt_icon.4bpp");
const u8 gMonFootprint_Snorunt[] = INCBIN_U8("graphics/pokemon/footprints/snorunt_footprint.1bpp");
-const u8 gMonStillFrontPic_Glalie[] = INCBIN_U8("graphics/pokemon/front_pics/glalie_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Glalie[] = INCBIN_U8("graphics/pokemon/palettes/glalie_palette.gbapal.lz");
-const u8 gMonBackPic_Glalie[] = INCBIN_U8("graphics/pokemon/back_pics/glalie_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Glalie[] = INCBIN_U8("graphics/pokemon/palettes/glalie_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Glalie[] = INCBIN_U32("graphics/pokemon/front_pics/glalie_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Glalie[] = INCBIN_U32("graphics/pokemon/palettes/glalie_palette.gbapal.lz");
+const u32 gMonBackPic_Glalie[] = INCBIN_U32("graphics/pokemon/back_pics/glalie_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Glalie[] = INCBIN_U32("graphics/pokemon/palettes/glalie_shiny_palette.gbapal.lz");
const u8 gMonIcon_Glalie[] = INCBIN_U8("graphics/pokemon/icons/glalie_icon.4bpp");
const u8 gMonFootprint_Glalie[] = INCBIN_U8("graphics/pokemon/footprints/glalie_footprint.1bpp");
-const u8 gMonStillFrontPic_Lunatone[] = INCBIN_U8("graphics/pokemon/front_pics/lunatone_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Lunatone[] = INCBIN_U8("graphics/pokemon/palettes/lunatone_palette.gbapal.lz");
-const u8 gMonBackPic_Lunatone[] = INCBIN_U8("graphics/pokemon/back_pics/lunatone_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Lunatone[] = INCBIN_U8("graphics/pokemon/palettes/lunatone_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Lunatone[] = INCBIN_U32("graphics/pokemon/front_pics/lunatone_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/palettes/lunatone_palette.gbapal.lz");
+const u32 gMonBackPic_Lunatone[] = INCBIN_U32("graphics/pokemon/back_pics/lunatone_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/palettes/lunatone_shiny_palette.gbapal.lz");
const u8 gMonIcon_Lunatone[] = INCBIN_U8("graphics/pokemon/icons/lunatone_icon.4bpp");
const u8 gMonFootprint_Lunatone[] = INCBIN_U8("graphics/pokemon/footprints/lunatone_footprint.1bpp");
-const u8 gMonStillFrontPic_Solrock[] = INCBIN_U8("graphics/pokemon/front_pics/solrock_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Solrock[] = INCBIN_U8("graphics/pokemon/palettes/solrock_palette.gbapal.lz");
-const u8 gMonBackPic_Solrock[] = INCBIN_U8("graphics/pokemon/back_pics/solrock_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Solrock[] = INCBIN_U8("graphics/pokemon/palettes/solrock_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Solrock[] = INCBIN_U32("graphics/pokemon/front_pics/solrock_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Solrock[] = INCBIN_U32("graphics/pokemon/palettes/solrock_palette.gbapal.lz");
+const u32 gMonBackPic_Solrock[] = INCBIN_U32("graphics/pokemon/back_pics/solrock_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Solrock[] = INCBIN_U32("graphics/pokemon/palettes/solrock_shiny_palette.gbapal.lz");
const u8 gMonIcon_Solrock[] = INCBIN_U8("graphics/pokemon/icons/solrock_icon.4bpp");
const u8 gMonFootprint_Solrock[] = INCBIN_U8("graphics/pokemon/footprints/solrock_footprint.1bpp");
-const u8 gMonStillFrontPic_Azurill[] = INCBIN_U8("graphics/pokemon/front_pics/azurill_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Azurill[] = INCBIN_U8("graphics/pokemon/palettes/azurill_palette.gbapal.lz");
-const u8 gMonBackPic_Azurill[] = INCBIN_U8("graphics/pokemon/back_pics/azurill_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Azurill[] = INCBIN_U8("graphics/pokemon/palettes/azurill_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Azurill[] = INCBIN_U32("graphics/pokemon/front_pics/azurill_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Azurill[] = INCBIN_U32("graphics/pokemon/palettes/azurill_palette.gbapal.lz");
+const u32 gMonBackPic_Azurill[] = INCBIN_U32("graphics/pokemon/back_pics/azurill_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Azurill[] = INCBIN_U32("graphics/pokemon/palettes/azurill_shiny_palette.gbapal.lz");
const u8 gMonIcon_Azurill[] = INCBIN_U8("graphics/pokemon/icons/azurill_icon.4bpp");
const u8 gMonFootprint_Azurill[] = INCBIN_U8("graphics/pokemon/footprints/azurill_footprint.1bpp");
-const u8 gMonStillFrontPic_Spoink[] = INCBIN_U8("graphics/pokemon/front_pics/spoink_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Spoink[] = INCBIN_U8("graphics/pokemon/palettes/spoink_palette.gbapal.lz");
-const u8 gMonBackPic_Spoink[] = INCBIN_U8("graphics/pokemon/back_pics/spoink_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Spoink[] = INCBIN_U8("graphics/pokemon/palettes/spoink_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Spoink[] = INCBIN_U32("graphics/pokemon/front_pics/spoink_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Spoink[] = INCBIN_U32("graphics/pokemon/palettes/spoink_palette.gbapal.lz");
+const u32 gMonBackPic_Spoink[] = INCBIN_U32("graphics/pokemon/back_pics/spoink_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Spoink[] = INCBIN_U32("graphics/pokemon/palettes/spoink_shiny_palette.gbapal.lz");
const u8 gMonIcon_Spoink[] = INCBIN_U8("graphics/pokemon/icons/spoink_icon.4bpp");
const u8 gMonFootprint_Spoink[] = INCBIN_U8("graphics/pokemon/footprints/spoink_footprint.1bpp");
-const u8 gMonStillFrontPic_Grumpig[] = INCBIN_U8("graphics/pokemon/front_pics/grumpig_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Grumpig[] = INCBIN_U8("graphics/pokemon/palettes/grumpig_palette.gbapal.lz");
-const u8 gMonBackPic_Grumpig[] = INCBIN_U8("graphics/pokemon/back_pics/grumpig_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Grumpig[] = INCBIN_U8("graphics/pokemon/palettes/grumpig_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Grumpig[] = INCBIN_U32("graphics/pokemon/front_pics/grumpig_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/palettes/grumpig_palette.gbapal.lz");
+const u32 gMonBackPic_Grumpig[] = INCBIN_U32("graphics/pokemon/back_pics/grumpig_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/palettes/grumpig_shiny_palette.gbapal.lz");
const u8 gMonIcon_Grumpig[] = INCBIN_U8("graphics/pokemon/icons/grumpig_icon.4bpp");
const u8 gMonFootprint_Grumpig[] = INCBIN_U8("graphics/pokemon/footprints/grumpig_footprint.1bpp");
-const u8 gMonStillFrontPic_Plusle[] = INCBIN_U8("graphics/pokemon/front_pics/plusle_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Plusle[] = INCBIN_U8("graphics/pokemon/palettes/plusle_palette.gbapal.lz");
-const u8 gMonBackPic_Plusle[] = INCBIN_U8("graphics/pokemon/back_pics/plusle_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Plusle[] = INCBIN_U8("graphics/pokemon/palettes/plusle_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Plusle[] = INCBIN_U32("graphics/pokemon/front_pics/plusle_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Plusle[] = INCBIN_U32("graphics/pokemon/palettes/plusle_palette.gbapal.lz");
+const u32 gMonBackPic_Plusle[] = INCBIN_U32("graphics/pokemon/back_pics/plusle_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Plusle[] = INCBIN_U32("graphics/pokemon/palettes/plusle_shiny_palette.gbapal.lz");
const u8 gMonIcon_Plusle[] = INCBIN_U8("graphics/pokemon/icons/plusle_icon.4bpp");
const u8 gMonFootprint_Plusle[] = INCBIN_U8("graphics/pokemon/footprints/plusle_footprint.1bpp");
-const u8 gMonStillFrontPic_Minun[] = INCBIN_U8("graphics/pokemon/front_pics/minun_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Minun[] = INCBIN_U8("graphics/pokemon/palettes/minun_palette.gbapal.lz");
-const u8 gMonBackPic_Minun[] = INCBIN_U8("graphics/pokemon/back_pics/minun_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Minun[] = INCBIN_U8("graphics/pokemon/palettes/minun_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Minun[] = INCBIN_U32("graphics/pokemon/front_pics/minun_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Minun[] = INCBIN_U32("graphics/pokemon/palettes/minun_palette.gbapal.lz");
+const u32 gMonBackPic_Minun[] = INCBIN_U32("graphics/pokemon/back_pics/minun_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Minun[] = INCBIN_U32("graphics/pokemon/palettes/minun_shiny_palette.gbapal.lz");
const u8 gMonIcon_Minun[] = INCBIN_U8("graphics/pokemon/icons/minun_icon.4bpp");
const u8 gMonFootprint_Minun[] = INCBIN_U8("graphics/pokemon/footprints/minun_footprint.1bpp");
-const u8 gMonStillFrontPic_Mawile[] = INCBIN_U8("graphics/pokemon/front_pics/mawile_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Mawile[] = INCBIN_U8("graphics/pokemon/palettes/mawile_palette.gbapal.lz");
-const u8 gMonBackPic_Mawile[] = INCBIN_U8("graphics/pokemon/back_pics/mawile_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Mawile[] = INCBIN_U8("graphics/pokemon/palettes/mawile_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Mawile[] = INCBIN_U32("graphics/pokemon/front_pics/mawile_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Mawile[] = INCBIN_U32("graphics/pokemon/palettes/mawile_palette.gbapal.lz");
+const u32 gMonBackPic_Mawile[] = INCBIN_U32("graphics/pokemon/back_pics/mawile_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Mawile[] = INCBIN_U32("graphics/pokemon/palettes/mawile_shiny_palette.gbapal.lz");
const u8 gMonIcon_Mawile[] = INCBIN_U8("graphics/pokemon/icons/mawile_icon.4bpp");
const u8 gMonFootprint_Mawile[] = INCBIN_U8("graphics/pokemon/footprints/mawile_footprint.1bpp");
-const u8 gMonStillFrontPic_Meditite[] = INCBIN_U8("graphics/pokemon/front_pics/meditite_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Meditite[] = INCBIN_U8("graphics/pokemon/palettes/meditite_palette.gbapal.lz");
-const u8 gMonBackPic_Meditite[] = INCBIN_U8("graphics/pokemon/back_pics/meditite_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Meditite[] = INCBIN_U8("graphics/pokemon/palettes/meditite_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Meditite[] = INCBIN_U32("graphics/pokemon/front_pics/meditite_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Meditite[] = INCBIN_U32("graphics/pokemon/palettes/meditite_palette.gbapal.lz");
+const u32 gMonBackPic_Meditite[] = INCBIN_U32("graphics/pokemon/back_pics/meditite_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Meditite[] = INCBIN_U32("graphics/pokemon/palettes/meditite_shiny_palette.gbapal.lz");
const u8 gMonIcon_Meditite[] = INCBIN_U8("graphics/pokemon/icons/meditite_icon.4bpp");
const u8 gMonFootprint_Meditite[] = INCBIN_U8("graphics/pokemon/footprints/meditite_footprint.1bpp");
-const u8 gMonStillFrontPic_Medicham[] = INCBIN_U8("graphics/pokemon/front_pics/medicham_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Medicham[] = INCBIN_U8("graphics/pokemon/palettes/medicham_palette.gbapal.lz");
-const u8 gMonBackPic_Medicham[] = INCBIN_U8("graphics/pokemon/back_pics/medicham_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Medicham[] = INCBIN_U8("graphics/pokemon/palettes/medicham_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Medicham[] = INCBIN_U32("graphics/pokemon/front_pics/medicham_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Medicham[] = INCBIN_U32("graphics/pokemon/palettes/medicham_palette.gbapal.lz");
+const u32 gMonBackPic_Medicham[] = INCBIN_U32("graphics/pokemon/back_pics/medicham_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Medicham[] = INCBIN_U32("graphics/pokemon/palettes/medicham_shiny_palette.gbapal.lz");
const u8 gMonIcon_Medicham[] = INCBIN_U8("graphics/pokemon/icons/medicham_icon.4bpp");
const u8 gMonFootprint_Medicham[] = INCBIN_U8("graphics/pokemon/footprints/medicham_footprint.1bpp");
-const u8 gMonStillFrontPic_Swablu[] = INCBIN_U8("graphics/pokemon/front_pics/swablu_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Swablu[] = INCBIN_U8("graphics/pokemon/palettes/swablu_palette.gbapal.lz");
-const u8 gMonBackPic_Swablu[] = INCBIN_U8("graphics/pokemon/back_pics/swablu_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Swablu[] = INCBIN_U8("graphics/pokemon/palettes/swablu_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Swablu[] = INCBIN_U32("graphics/pokemon/front_pics/swablu_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Swablu[] = INCBIN_U32("graphics/pokemon/palettes/swablu_palette.gbapal.lz");
+const u32 gMonBackPic_Swablu[] = INCBIN_U32("graphics/pokemon/back_pics/swablu_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Swablu[] = INCBIN_U32("graphics/pokemon/palettes/swablu_shiny_palette.gbapal.lz");
const u8 gMonIcon_Swablu[] = INCBIN_U8("graphics/pokemon/icons/swablu_icon.4bpp");
const u8 gMonFootprint_Swablu[] = INCBIN_U8("graphics/pokemon/footprints/swablu_footprint.1bpp");
-const u8 gMonStillFrontPic_Altaria[] = INCBIN_U8("graphics/pokemon/front_pics/altaria_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Altaria[] = INCBIN_U8("graphics/pokemon/palettes/altaria_palette.gbapal.lz");
-const u8 gMonBackPic_Altaria[] = INCBIN_U8("graphics/pokemon/back_pics/altaria_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Altaria[] = INCBIN_U8("graphics/pokemon/palettes/altaria_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Altaria[] = INCBIN_U32("graphics/pokemon/front_pics/altaria_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Altaria[] = INCBIN_U32("graphics/pokemon/palettes/altaria_palette.gbapal.lz");
+const u32 gMonBackPic_Altaria[] = INCBIN_U32("graphics/pokemon/back_pics/altaria_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Altaria[] = INCBIN_U32("graphics/pokemon/palettes/altaria_shiny_palette.gbapal.lz");
const u8 gMonIcon_Altaria[] = INCBIN_U8("graphics/pokemon/icons/altaria_icon.4bpp");
const u8 gMonFootprint_Altaria[] = INCBIN_U8("graphics/pokemon/footprints/altaria_footprint.1bpp");
-const u8 gMonStillFrontPic_Wynaut[] = INCBIN_U8("graphics/pokemon/front_pics/wynaut_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Wynaut[] = INCBIN_U8("graphics/pokemon/palettes/wynaut_palette.gbapal.lz");
-const u8 gMonBackPic_Wynaut[] = INCBIN_U8("graphics/pokemon/back_pics/wynaut_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Wynaut[] = INCBIN_U8("graphics/pokemon/palettes/wynaut_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Wynaut[] = INCBIN_U32("graphics/pokemon/front_pics/wynaut_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/palettes/wynaut_palette.gbapal.lz");
+const u32 gMonBackPic_Wynaut[] = INCBIN_U32("graphics/pokemon/back_pics/wynaut_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/palettes/wynaut_shiny_palette.gbapal.lz");
const u8 gMonIcon_Wynaut[] = INCBIN_U8("graphics/pokemon/icons/wynaut_icon.4bpp");
const u8 gMonFootprint_Wynaut[] = INCBIN_U8("graphics/pokemon/footprints/wynaut_footprint.1bpp");
-const u8 gMonStillFrontPic_Duskull[] = INCBIN_U8("graphics/pokemon/front_pics/duskull_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Duskull[] = INCBIN_U8("graphics/pokemon/palettes/duskull_palette.gbapal.lz");
-const u8 gMonBackPic_Duskull[] = INCBIN_U8("graphics/pokemon/back_pics/duskull_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Duskull[] = INCBIN_U8("graphics/pokemon/palettes/duskull_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Duskull[] = INCBIN_U32("graphics/pokemon/front_pics/duskull_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Duskull[] = INCBIN_U32("graphics/pokemon/palettes/duskull_palette.gbapal.lz");
+const u32 gMonBackPic_Duskull[] = INCBIN_U32("graphics/pokemon/back_pics/duskull_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Duskull[] = INCBIN_U32("graphics/pokemon/palettes/duskull_shiny_palette.gbapal.lz");
const u8 gMonIcon_Duskull[] = INCBIN_U8("graphics/pokemon/icons/duskull_icon.4bpp");
const u8 gMonFootprint_Duskull[] = INCBIN_U8("graphics/pokemon/footprints/duskull_footprint.1bpp");
-const u8 gMonStillFrontPic_Dusclops[] = INCBIN_U8("graphics/pokemon/front_pics/dusclops_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Dusclops[] = INCBIN_U8("graphics/pokemon/palettes/dusclops_palette.gbapal.lz");
-const u8 gMonBackPic_Dusclops[] = INCBIN_U8("graphics/pokemon/back_pics/dusclops_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Dusclops[] = INCBIN_U8("graphics/pokemon/palettes/dusclops_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Dusclops[] = INCBIN_U32("graphics/pokemon/front_pics/dusclops_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/palettes/dusclops_palette.gbapal.lz");
+const u32 gMonBackPic_Dusclops[] = INCBIN_U32("graphics/pokemon/back_pics/dusclops_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/palettes/dusclops_shiny_palette.gbapal.lz");
const u8 gMonIcon_Dusclops[] = INCBIN_U8("graphics/pokemon/icons/dusclops_icon.4bpp");
const u8 gMonFootprint_Dusclops[] = INCBIN_U8("graphics/pokemon/footprints/dusclops_footprint.1bpp");
-const u8 gMonStillFrontPic_Roselia[] = INCBIN_U8("graphics/pokemon/front_pics/roselia_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Roselia[] = INCBIN_U8("graphics/pokemon/palettes/roselia_palette.gbapal.lz");
-const u8 gMonBackPic_Roselia[] = INCBIN_U8("graphics/pokemon/back_pics/roselia_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Roselia[] = INCBIN_U8("graphics/pokemon/palettes/roselia_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Roselia[] = INCBIN_U32("graphics/pokemon/front_pics/roselia_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Roselia[] = INCBIN_U32("graphics/pokemon/palettes/roselia_palette.gbapal.lz");
+const u32 gMonBackPic_Roselia[] = INCBIN_U32("graphics/pokemon/back_pics/roselia_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Roselia[] = INCBIN_U32("graphics/pokemon/palettes/roselia_shiny_palette.gbapal.lz");
const u8 gMonIcon_Roselia[] = INCBIN_U8("graphics/pokemon/icons/roselia_icon.4bpp");
const u8 gMonFootprint_Roselia[] = INCBIN_U8("graphics/pokemon/footprints/roselia_footprint.1bpp");
-const u8 gMonStillFrontPic_Slakoth[] = INCBIN_U8("graphics/pokemon/front_pics/slakoth_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Slakoth[] = INCBIN_U8("graphics/pokemon/palettes/slakoth_palette.gbapal.lz");
-const u8 gMonBackPic_Slakoth[] = INCBIN_U8("graphics/pokemon/back_pics/slakoth_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Slakoth[] = INCBIN_U8("graphics/pokemon/palettes/slakoth_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Slakoth[] = INCBIN_U32("graphics/pokemon/front_pics/slakoth_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/palettes/slakoth_palette.gbapal.lz");
+const u32 gMonBackPic_Slakoth[] = INCBIN_U32("graphics/pokemon/back_pics/slakoth_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/palettes/slakoth_shiny_palette.gbapal.lz");
const u8 gMonIcon_Slakoth[] = INCBIN_U8("graphics/pokemon/icons/slakoth_icon.4bpp");
const u8 gMonFootprint_Slakoth[] = INCBIN_U8("graphics/pokemon/footprints/slakoth_footprint.1bpp");
-const u8 gMonStillFrontPic_Vigoroth[] = INCBIN_U8("graphics/pokemon/front_pics/vigoroth_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Vigoroth[] = INCBIN_U8("graphics/pokemon/palettes/vigoroth_palette.gbapal.lz");
-const u8 gMonBackPic_Vigoroth[] = INCBIN_U8("graphics/pokemon/back_pics/vigoroth_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Vigoroth[] = INCBIN_U8("graphics/pokemon/palettes/vigoroth_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/front_pics/vigoroth_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/palettes/vigoroth_palette.gbapal.lz");
+const u32 gMonBackPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/back_pics/vigoroth_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/palettes/vigoroth_shiny_palette.gbapal.lz");
const u8 gMonIcon_Vigoroth[] = INCBIN_U8("graphics/pokemon/icons/vigoroth_icon.4bpp");
const u8 gMonFootprint_Vigoroth[] = INCBIN_U8("graphics/pokemon/footprints/vigoroth_footprint.1bpp");
-const u8 gMonStillFrontPic_Slaking[] = INCBIN_U8("graphics/pokemon/front_pics/slaking_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Slaking[] = INCBIN_U8("graphics/pokemon/palettes/slaking_palette.gbapal.lz");
-const u8 gMonBackPic_Slaking[] = INCBIN_U8("graphics/pokemon/back_pics/slaking_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Slaking[] = INCBIN_U8("graphics/pokemon/palettes/slaking_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Slaking[] = INCBIN_U32("graphics/pokemon/front_pics/slaking_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Slaking[] = INCBIN_U32("graphics/pokemon/palettes/slaking_palette.gbapal.lz");
+const u32 gMonBackPic_Slaking[] = INCBIN_U32("graphics/pokemon/back_pics/slaking_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Slaking[] = INCBIN_U32("graphics/pokemon/palettes/slaking_shiny_palette.gbapal.lz");
const u8 gMonIcon_Slaking[] = INCBIN_U8("graphics/pokemon/icons/slaking_icon.4bpp");
const u8 gMonFootprint_Slaking[] = INCBIN_U8("graphics/pokemon/footprints/slaking_footprint.1bpp");
-const u8 gMonStillFrontPic_Gulpin[] = INCBIN_U8("graphics/pokemon/front_pics/gulpin_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Gulpin[] = INCBIN_U8("graphics/pokemon/palettes/gulpin_palette.gbapal.lz");
-const u8 gMonBackPic_Gulpin[] = INCBIN_U8("graphics/pokemon/back_pics/gulpin_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Gulpin[] = INCBIN_U8("graphics/pokemon/palettes/gulpin_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Gulpin[] = INCBIN_U32("graphics/pokemon/front_pics/gulpin_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/palettes/gulpin_palette.gbapal.lz");
+const u32 gMonBackPic_Gulpin[] = INCBIN_U32("graphics/pokemon/back_pics/gulpin_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/palettes/gulpin_shiny_palette.gbapal.lz");
const u8 gMonIcon_Gulpin[] = INCBIN_U8("graphics/pokemon/icons/gulpin_icon.4bpp");
const u8 gMonFootprint_Gulpin[] = INCBIN_U8("graphics/pokemon/footprints/gulpin_footprint.1bpp");
-const u8 gMonStillFrontPic_Swalot[] = INCBIN_U8("graphics/pokemon/front_pics/swalot_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Swalot[] = INCBIN_U8("graphics/pokemon/palettes/swalot_palette.gbapal.lz");
-const u8 gMonBackPic_Swalot[] = INCBIN_U8("graphics/pokemon/back_pics/swalot_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Swalot[] = INCBIN_U8("graphics/pokemon/palettes/swalot_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Swalot[] = INCBIN_U32("graphics/pokemon/front_pics/swalot_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Swalot[] = INCBIN_U32("graphics/pokemon/palettes/swalot_palette.gbapal.lz");
+const u32 gMonBackPic_Swalot[] = INCBIN_U32("graphics/pokemon/back_pics/swalot_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Swalot[] = INCBIN_U32("graphics/pokemon/palettes/swalot_shiny_palette.gbapal.lz");
const u8 gMonIcon_Swalot[] = INCBIN_U8("graphics/pokemon/icons/swalot_icon.4bpp");
const u8 gMonFootprint_Swalot[] = INCBIN_U8("graphics/pokemon/footprints/swalot_footprint.1bpp");
-const u8 gMonStillFrontPic_Tropius[] = INCBIN_U8("graphics/pokemon/front_pics/tropius_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Tropius[] = INCBIN_U8("graphics/pokemon/palettes/tropius_palette.gbapal.lz");
-const u8 gMonBackPic_Tropius[] = INCBIN_U8("graphics/pokemon/back_pics/tropius_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Tropius[] = INCBIN_U8("graphics/pokemon/palettes/tropius_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Tropius[] = INCBIN_U32("graphics/pokemon/front_pics/tropius_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Tropius[] = INCBIN_U32("graphics/pokemon/palettes/tropius_palette.gbapal.lz");
+const u32 gMonBackPic_Tropius[] = INCBIN_U32("graphics/pokemon/back_pics/tropius_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Tropius[] = INCBIN_U32("graphics/pokemon/palettes/tropius_shiny_palette.gbapal.lz");
const u8 gMonIcon_Tropius[] = INCBIN_U8("graphics/pokemon/icons/tropius_icon.4bpp");
const u8 gMonFootprint_Tropius[] = INCBIN_U8("graphics/pokemon/footprints/tropius_footprint.1bpp");
-const u8 gMonStillFrontPic_Whismur[] = INCBIN_U8("graphics/pokemon/front_pics/whismur_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Whismur[] = INCBIN_U8("graphics/pokemon/palettes/whismur_palette.gbapal.lz");
-const u8 gMonBackPic_Whismur[] = INCBIN_U8("graphics/pokemon/back_pics/whismur_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Whismur[] = INCBIN_U8("graphics/pokemon/palettes/whismur_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Whismur[] = INCBIN_U32("graphics/pokemon/front_pics/whismur_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Whismur[] = INCBIN_U32("graphics/pokemon/palettes/whismur_palette.gbapal.lz");
+const u32 gMonBackPic_Whismur[] = INCBIN_U32("graphics/pokemon/back_pics/whismur_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Whismur[] = INCBIN_U32("graphics/pokemon/palettes/whismur_shiny_palette.gbapal.lz");
const u8 gMonIcon_Whismur[] = INCBIN_U8("graphics/pokemon/icons/whismur_icon.4bpp");
const u8 gMonFootprint_Whismur[] = INCBIN_U8("graphics/pokemon/footprints/whismur_footprint.1bpp");
-const u8 gMonStillFrontPic_Loudred[] = INCBIN_U8("graphics/pokemon/front_pics/loudred_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Loudred[] = INCBIN_U8("graphics/pokemon/palettes/loudred_palette.gbapal.lz");
-const u8 gMonBackPic_Loudred[] = INCBIN_U8("graphics/pokemon/back_pics/loudred_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Loudred[] = INCBIN_U8("graphics/pokemon/palettes/loudred_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Loudred[] = INCBIN_U32("graphics/pokemon/front_pics/loudred_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Loudred[] = INCBIN_U32("graphics/pokemon/palettes/loudred_palette.gbapal.lz");
+const u32 gMonBackPic_Loudred[] = INCBIN_U32("graphics/pokemon/back_pics/loudred_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Loudred[] = INCBIN_U32("graphics/pokemon/palettes/loudred_shiny_palette.gbapal.lz");
const u8 gMonIcon_Loudred[] = INCBIN_U8("graphics/pokemon/icons/loudred_icon.4bpp");
const u8 gMonFootprint_Loudred[] = INCBIN_U8("graphics/pokemon/footprints/loudred_footprint.1bpp");
-const u8 gMonStillFrontPic_Exploud[] = INCBIN_U8("graphics/pokemon/front_pics/exploud_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Exploud[] = INCBIN_U8("graphics/pokemon/palettes/exploud_palette.gbapal.lz");
-const u8 gMonBackPic_Exploud[] = INCBIN_U8("graphics/pokemon/back_pics/exploud_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Exploud[] = INCBIN_U8("graphics/pokemon/palettes/exploud_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Exploud[] = INCBIN_U32("graphics/pokemon/front_pics/exploud_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Exploud[] = INCBIN_U32("graphics/pokemon/palettes/exploud_palette.gbapal.lz");
+const u32 gMonBackPic_Exploud[] = INCBIN_U32("graphics/pokemon/back_pics/exploud_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Exploud[] = INCBIN_U32("graphics/pokemon/palettes/exploud_shiny_palette.gbapal.lz");
const u8 gMonIcon_Exploud[] = INCBIN_U8("graphics/pokemon/icons/exploud_icon.4bpp");
const u8 gMonFootprint_Exploud[] = INCBIN_U8("graphics/pokemon/footprints/exploud_footprint.1bpp");
-const u8 gMonStillFrontPic_Clamperl[] = INCBIN_U8("graphics/pokemon/front_pics/clamperl_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Clamperl[] = INCBIN_U8("graphics/pokemon/palettes/clamperl_palette.gbapal.lz");
-const u8 gMonBackPic_Clamperl[] = INCBIN_U8("graphics/pokemon/back_pics/clamperl_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Clamperl[] = INCBIN_U8("graphics/pokemon/palettes/clamperl_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Clamperl[] = INCBIN_U32("graphics/pokemon/front_pics/clamperl_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/palettes/clamperl_palette.gbapal.lz");
+const u32 gMonBackPic_Clamperl[] = INCBIN_U32("graphics/pokemon/back_pics/clamperl_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/palettes/clamperl_shiny_palette.gbapal.lz");
const u8 gMonIcon_Clamperl[] = INCBIN_U8("graphics/pokemon/icons/clamperl_icon.4bpp");
const u8 gMonFootprint_Clamperl[] = INCBIN_U8("graphics/pokemon/footprints/clamperl_footprint.1bpp");
-const u8 gMonStillFrontPic_Huntail[] = INCBIN_U8("graphics/pokemon/front_pics/huntail_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Huntail[] = INCBIN_U8("graphics/pokemon/palettes/huntail_palette.gbapal.lz");
-const u8 gMonBackPic_Huntail[] = INCBIN_U8("graphics/pokemon/back_pics/huntail_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Huntail[] = INCBIN_U8("graphics/pokemon/palettes/huntail_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Huntail[] = INCBIN_U32("graphics/pokemon/front_pics/huntail_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Huntail[] = INCBIN_U32("graphics/pokemon/palettes/huntail_palette.gbapal.lz");
+const u32 gMonBackPic_Huntail[] = INCBIN_U32("graphics/pokemon/back_pics/huntail_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Huntail[] = INCBIN_U32("graphics/pokemon/palettes/huntail_shiny_palette.gbapal.lz");
const u8 gMonIcon_Huntail[] = INCBIN_U8("graphics/pokemon/icons/huntail_icon.4bpp");
const u8 gMonFootprint_Huntail[] = INCBIN_U8("graphics/pokemon/footprints/huntail_footprint.1bpp");
-const u8 gMonStillFrontPic_Gorebyss[] = INCBIN_U8("graphics/pokemon/front_pics/gorebyss_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Gorebyss[] = INCBIN_U8("graphics/pokemon/palettes/gorebyss_palette.gbapal.lz");
-const u8 gMonBackPic_Gorebyss[] = INCBIN_U8("graphics/pokemon/back_pics/gorebyss_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Gorebyss[] = INCBIN_U8("graphics/pokemon/palettes/gorebyss_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/front_pics/gorebyss_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/palettes/gorebyss_palette.gbapal.lz");
+const u32 gMonBackPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/back_pics/gorebyss_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/palettes/gorebyss_shiny_palette.gbapal.lz");
const u8 gMonIcon_Gorebyss[] = INCBIN_U8("graphics/pokemon/icons/gorebyss_icon.4bpp");
const u8 gMonFootprint_Gorebyss[] = INCBIN_U8("graphics/pokemon/footprints/gorebyss_footprint.1bpp");
-const u8 gMonStillFrontPic_Absol[] = INCBIN_U8("graphics/pokemon/front_pics/absol_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Absol[] = INCBIN_U8("graphics/pokemon/palettes/absol_palette.gbapal.lz");
-const u8 gMonBackPic_Absol[] = INCBIN_U8("graphics/pokemon/back_pics/absol_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Absol[] = INCBIN_U8("graphics/pokemon/palettes/absol_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Absol[] = INCBIN_U32("graphics/pokemon/front_pics/absol_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Absol[] = INCBIN_U32("graphics/pokemon/palettes/absol_palette.gbapal.lz");
+const u32 gMonBackPic_Absol[] = INCBIN_U32("graphics/pokemon/back_pics/absol_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Absol[] = INCBIN_U32("graphics/pokemon/palettes/absol_shiny_palette.gbapal.lz");
const u8 gMonIcon_Absol[] = INCBIN_U8("graphics/pokemon/icons/absol_icon.4bpp");
const u8 gMonFootprint_Absol[] = INCBIN_U8("graphics/pokemon/footprints/absol_footprint.1bpp");
-const u8 gMonStillFrontPic_Shuppet[] = INCBIN_U8("graphics/pokemon/front_pics/shuppet_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Shuppet[] = INCBIN_U8("graphics/pokemon/palettes/shuppet_palette.gbapal.lz");
-const u8 gMonBackPic_Shuppet[] = INCBIN_U8("graphics/pokemon/back_pics/shuppet_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Shuppet[] = INCBIN_U8("graphics/pokemon/palettes/shuppet_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Shuppet[] = INCBIN_U32("graphics/pokemon/front_pics/shuppet_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/palettes/shuppet_palette.gbapal.lz");
+const u32 gMonBackPic_Shuppet[] = INCBIN_U32("graphics/pokemon/back_pics/shuppet_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/palettes/shuppet_shiny_palette.gbapal.lz");
const u8 gMonIcon_Shuppet[] = INCBIN_U8("graphics/pokemon/icons/shuppet_icon.4bpp");
const u8 gMonFootprint_Shuppet[] = INCBIN_U8("graphics/pokemon/footprints/shuppet_footprint.1bpp");
-const u8 gMonStillFrontPic_Banette[] = INCBIN_U8("graphics/pokemon/front_pics/banette_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Banette[] = INCBIN_U8("graphics/pokemon/palettes/banette_palette.gbapal.lz");
-const u8 gMonBackPic_Banette[] = INCBIN_U8("graphics/pokemon/back_pics/banette_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Banette[] = INCBIN_U8("graphics/pokemon/palettes/banette_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Banette[] = INCBIN_U32("graphics/pokemon/front_pics/banette_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Banette[] = INCBIN_U32("graphics/pokemon/palettes/banette_palette.gbapal.lz");
+const u32 gMonBackPic_Banette[] = INCBIN_U32("graphics/pokemon/back_pics/banette_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Banette[] = INCBIN_U32("graphics/pokemon/palettes/banette_shiny_palette.gbapal.lz");
const u8 gMonIcon_Banette[] = INCBIN_U8("graphics/pokemon/icons/banette_icon.4bpp");
const u8 gMonFootprint_Banette[] = INCBIN_U8("graphics/pokemon/footprints/banette_footprint.1bpp");
-const u8 gMonStillFrontPic_Seviper[] = INCBIN_U8("graphics/pokemon/front_pics/seviper_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Seviper[] = INCBIN_U8("graphics/pokemon/palettes/seviper_palette.gbapal.lz");
-const u8 gMonBackPic_Seviper[] = INCBIN_U8("graphics/pokemon/back_pics/seviper_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Seviper[] = INCBIN_U8("graphics/pokemon/palettes/seviper_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Seviper[] = INCBIN_U32("graphics/pokemon/front_pics/seviper_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Seviper[] = INCBIN_U32("graphics/pokemon/palettes/seviper_palette.gbapal.lz");
+const u32 gMonBackPic_Seviper[] = INCBIN_U32("graphics/pokemon/back_pics/seviper_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Seviper[] = INCBIN_U32("graphics/pokemon/palettes/seviper_shiny_palette.gbapal.lz");
const u8 gMonIcon_Seviper[] = INCBIN_U8("graphics/pokemon/icons/seviper_icon.4bpp");
const u8 gMonFootprint_Seviper[] = INCBIN_U8("graphics/pokemon/footprints/seviper_footprint.1bpp");
-const u8 gMonStillFrontPic_Zangoose[] = INCBIN_U8("graphics/pokemon/front_pics/zangoose_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Zangoose[] = INCBIN_U8("graphics/pokemon/palettes/zangoose_palette.gbapal.lz");
-const u8 gMonBackPic_Zangoose[] = INCBIN_U8("graphics/pokemon/back_pics/zangoose_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Zangoose[] = INCBIN_U8("graphics/pokemon/palettes/zangoose_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Zangoose[] = INCBIN_U32("graphics/pokemon/front_pics/zangoose_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/palettes/zangoose_palette.gbapal.lz");
+const u32 gMonBackPic_Zangoose[] = INCBIN_U32("graphics/pokemon/back_pics/zangoose_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/palettes/zangoose_shiny_palette.gbapal.lz");
const u8 gMonIcon_Zangoose[] = INCBIN_U8("graphics/pokemon/icons/zangoose_icon.4bpp");
const u8 gMonFootprint_Zangoose[] = INCBIN_U8("graphics/pokemon/footprints/zangoose_footprint.1bpp");
-const u8 gMonStillFrontPic_Relicanth[] = INCBIN_U8("graphics/pokemon/front_pics/relicanth_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Relicanth[] = INCBIN_U8("graphics/pokemon/palettes/relicanth_palette.gbapal.lz");
-const u8 gMonBackPic_Relicanth[] = INCBIN_U8("graphics/pokemon/back_pics/relicanth_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Relicanth[] = INCBIN_U8("graphics/pokemon/palettes/relicanth_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Relicanth[] = INCBIN_U32("graphics/pokemon/front_pics/relicanth_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/palettes/relicanth_palette.gbapal.lz");
+const u32 gMonBackPic_Relicanth[] = INCBIN_U32("graphics/pokemon/back_pics/relicanth_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/palettes/relicanth_shiny_palette.gbapal.lz");
const u8 gMonIcon_Relicanth[] = INCBIN_U8("graphics/pokemon/icons/relicanth_icon.4bpp");
const u8 gMonFootprint_Relicanth[] = INCBIN_U8("graphics/pokemon/footprints/relicanth_footprint.1bpp");
-const u8 gMonStillFrontPic_Aron[] = INCBIN_U8("graphics/pokemon/front_pics/aron_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Aron[] = INCBIN_U8("graphics/pokemon/palettes/aron_palette.gbapal.lz");
-const u8 gMonBackPic_Aron[] = INCBIN_U8("graphics/pokemon/back_pics/aron_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Aron[] = INCBIN_U8("graphics/pokemon/palettes/aron_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Aron[] = INCBIN_U32("graphics/pokemon/front_pics/aron_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Aron[] = INCBIN_U32("graphics/pokemon/palettes/aron_palette.gbapal.lz");
+const u32 gMonBackPic_Aron[] = INCBIN_U32("graphics/pokemon/back_pics/aron_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Aron[] = INCBIN_U32("graphics/pokemon/palettes/aron_shiny_palette.gbapal.lz");
const u8 gMonIcon_Aron[] = INCBIN_U8("graphics/pokemon/icons/aron_icon.4bpp");
const u8 gMonFootprint_Aron[] = INCBIN_U8("graphics/pokemon/footprints/aron_footprint.1bpp");
-const u8 gMonStillFrontPic_Lairon[] = INCBIN_U8("graphics/pokemon/front_pics/lairon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Lairon[] = INCBIN_U8("graphics/pokemon/palettes/lairon_palette.gbapal.lz");
-const u8 gMonBackPic_Lairon[] = INCBIN_U8("graphics/pokemon/back_pics/lairon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Lairon[] = INCBIN_U8("graphics/pokemon/palettes/lairon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Lairon[] = INCBIN_U32("graphics/pokemon/front_pics/lairon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Lairon[] = INCBIN_U32("graphics/pokemon/palettes/lairon_palette.gbapal.lz");
+const u32 gMonBackPic_Lairon[] = INCBIN_U32("graphics/pokemon/back_pics/lairon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Lairon[] = INCBIN_U32("graphics/pokemon/palettes/lairon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Lairon[] = INCBIN_U8("graphics/pokemon/icons/lairon_icon.4bpp");
const u8 gMonFootprint_Lairon[] = INCBIN_U8("graphics/pokemon/footprints/lairon_footprint.1bpp");
-const u8 gMonStillFrontPic_Aggron[] = INCBIN_U8("graphics/pokemon/front_pics/aggron_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Aggron[] = INCBIN_U8("graphics/pokemon/palettes/aggron_palette.gbapal.lz");
-const u8 gMonBackPic_Aggron[] = INCBIN_U8("graphics/pokemon/back_pics/aggron_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Aggron[] = INCBIN_U8("graphics/pokemon/palettes/aggron_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Aggron[] = INCBIN_U32("graphics/pokemon/front_pics/aggron_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Aggron[] = INCBIN_U32("graphics/pokemon/palettes/aggron_palette.gbapal.lz");
+const u32 gMonBackPic_Aggron[] = INCBIN_U32("graphics/pokemon/back_pics/aggron_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Aggron[] = INCBIN_U32("graphics/pokemon/palettes/aggron_shiny_palette.gbapal.lz");
const u8 gMonIcon_Aggron[] = INCBIN_U8("graphics/pokemon/icons/aggron_icon.4bpp");
const u8 gMonFootprint_Aggron[] = INCBIN_U8("graphics/pokemon/footprints/aggron_footprint.1bpp");
-const u8 gMonStillFrontPic_Castform[] = INCBIN_U8("graphics/pokemon/front_pics/castform_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Castform[] = INCBIN_U8("graphics/pokemon/palettes/castform_palette.gbapal.lz");
-const u8 gMonBackPic_Castform[] = INCBIN_U8("graphics/pokemon/back_pics/castform_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Castform[] = INCBIN_U8("graphics/pokemon/palettes/castform_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Castform[] = INCBIN_U32("graphics/pokemon/front_pics/castform_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Castform[] = INCBIN_U32("graphics/pokemon/palettes/castform_palette.gbapal.lz");
+const u32 gMonBackPic_Castform[] = INCBIN_U32("graphics/pokemon/back_pics/castform_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Castform[] = INCBIN_U32("graphics/pokemon/palettes/castform_shiny_palette.gbapal.lz");
const u8 gMonIcon_Castform[] = INCBIN_U8("graphics/pokemon/icons/castform_icon.4bpp");
const u8 gMonFootprint_Castform[] = INCBIN_U8("graphics/pokemon/footprints/castform_footprint.1bpp");
-const u8 gMonStillFrontPic_Volbeat[] = INCBIN_U8("graphics/pokemon/front_pics/volbeat_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Volbeat[] = INCBIN_U8("graphics/pokemon/palettes/volbeat_palette.gbapal.lz");
-const u8 gMonBackPic_Volbeat[] = INCBIN_U8("graphics/pokemon/back_pics/volbeat_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Volbeat[] = INCBIN_U8("graphics/pokemon/palettes/volbeat_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Volbeat[] = INCBIN_U32("graphics/pokemon/front_pics/volbeat_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/palettes/volbeat_palette.gbapal.lz");
+const u32 gMonBackPic_Volbeat[] = INCBIN_U32("graphics/pokemon/back_pics/volbeat_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/palettes/volbeat_shiny_palette.gbapal.lz");
const u8 gMonIcon_Volbeat[] = INCBIN_U8("graphics/pokemon/icons/volbeat_icon.4bpp");
const u8 gMonFootprint_Volbeat[] = INCBIN_U8("graphics/pokemon/footprints/volbeat_footprint.1bpp");
-const u8 gMonStillFrontPic_Illumise[] = INCBIN_U8("graphics/pokemon/front_pics/illumise_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Illumise[] = INCBIN_U8("graphics/pokemon/palettes/illumise_palette.gbapal.lz");
-const u8 gMonBackPic_Illumise[] = INCBIN_U8("graphics/pokemon/back_pics/illumise_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Illumise[] = INCBIN_U8("graphics/pokemon/palettes/illumise_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Illumise[] = INCBIN_U32("graphics/pokemon/front_pics/illumise_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Illumise[] = INCBIN_U32("graphics/pokemon/palettes/illumise_palette.gbapal.lz");
+const u32 gMonBackPic_Illumise[] = INCBIN_U32("graphics/pokemon/back_pics/illumise_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Illumise[] = INCBIN_U32("graphics/pokemon/palettes/illumise_shiny_palette.gbapal.lz");
const u8 gMonIcon_Illumise[] = INCBIN_U8("graphics/pokemon/icons/illumise_icon.4bpp");
const u8 gMonFootprint_Illumise[] = INCBIN_U8("graphics/pokemon/footprints/illumise_footprint.1bpp");
-const u8 gMonStillFrontPic_Lileep[] = INCBIN_U8("graphics/pokemon/front_pics/lileep_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Lileep[] = INCBIN_U8("graphics/pokemon/palettes/lileep_palette.gbapal.lz");
-const u8 gMonBackPic_Lileep[] = INCBIN_U8("graphics/pokemon/back_pics/lileep_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Lileep[] = INCBIN_U8("graphics/pokemon/palettes/lileep_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Lileep[] = INCBIN_U32("graphics/pokemon/front_pics/lileep_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Lileep[] = INCBIN_U32("graphics/pokemon/palettes/lileep_palette.gbapal.lz");
+const u32 gMonBackPic_Lileep[] = INCBIN_U32("graphics/pokemon/back_pics/lileep_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Lileep[] = INCBIN_U32("graphics/pokemon/palettes/lileep_shiny_palette.gbapal.lz");
const u8 gMonIcon_Lileep[] = INCBIN_U8("graphics/pokemon/icons/lileep_icon.4bpp");
const u8 gMonFootprint_Lileep[] = INCBIN_U8("graphics/pokemon/footprints/lileep_footprint.1bpp");
-const u8 gMonStillFrontPic_Cradily[] = INCBIN_U8("graphics/pokemon/front_pics/cradily_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Cradily[] = INCBIN_U8("graphics/pokemon/palettes/cradily_palette.gbapal.lz");
-const u8 gMonBackPic_Cradily[] = INCBIN_U8("graphics/pokemon/back_pics/cradily_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Cradily[] = INCBIN_U8("graphics/pokemon/palettes/cradily_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Cradily[] = INCBIN_U32("graphics/pokemon/front_pics/cradily_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Cradily[] = INCBIN_U32("graphics/pokemon/palettes/cradily_palette.gbapal.lz");
+const u32 gMonBackPic_Cradily[] = INCBIN_U32("graphics/pokemon/back_pics/cradily_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Cradily[] = INCBIN_U32("graphics/pokemon/palettes/cradily_shiny_palette.gbapal.lz");
const u8 gMonIcon_Cradily[] = INCBIN_U8("graphics/pokemon/icons/cradily_icon.4bpp");
const u8 gMonFootprint_Cradily[] = INCBIN_U8("graphics/pokemon/footprints/cradily_footprint.1bpp");
-const u8 gMonStillFrontPic_Anorith[] = INCBIN_U8("graphics/pokemon/front_pics/anorith_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Anorith[] = INCBIN_U8("graphics/pokemon/palettes/anorith_palette.gbapal.lz");
-const u8 gMonBackPic_Anorith[] = INCBIN_U8("graphics/pokemon/back_pics/anorith_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Anorith[] = INCBIN_U8("graphics/pokemon/palettes/anorith_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Anorith[] = INCBIN_U32("graphics/pokemon/front_pics/anorith_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Anorith[] = INCBIN_U32("graphics/pokemon/palettes/anorith_palette.gbapal.lz");
+const u32 gMonBackPic_Anorith[] = INCBIN_U32("graphics/pokemon/back_pics/anorith_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Anorith[] = INCBIN_U32("graphics/pokemon/palettes/anorith_shiny_palette.gbapal.lz");
const u8 gMonIcon_Anorith[] = INCBIN_U8("graphics/pokemon/icons/anorith_icon.4bpp");
const u8 gMonFootprint_Anorith[] = INCBIN_U8("graphics/pokemon/footprints/anorith_footprint.1bpp");
-const u8 gMonStillFrontPic_Armaldo[] = INCBIN_U8("graphics/pokemon/front_pics/armaldo_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Armaldo[] = INCBIN_U8("graphics/pokemon/palettes/armaldo_palette.gbapal.lz");
-const u8 gMonBackPic_Armaldo[] = INCBIN_U8("graphics/pokemon/back_pics/armaldo_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Armaldo[] = INCBIN_U8("graphics/pokemon/palettes/armaldo_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Armaldo[] = INCBIN_U32("graphics/pokemon/front_pics/armaldo_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/palettes/armaldo_palette.gbapal.lz");
+const u32 gMonBackPic_Armaldo[] = INCBIN_U32("graphics/pokemon/back_pics/armaldo_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/palettes/armaldo_shiny_palette.gbapal.lz");
const u8 gMonIcon_Armaldo[] = INCBIN_U8("graphics/pokemon/icons/armaldo_icon.4bpp");
const u8 gMonFootprint_Armaldo[] = INCBIN_U8("graphics/pokemon/footprints/armaldo_footprint.1bpp");
-const u8 gMonStillFrontPic_Ralts[] = INCBIN_U8("graphics/pokemon/front_pics/ralts_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Ralts[] = INCBIN_U8("graphics/pokemon/palettes/ralts_palette.gbapal.lz");
-const u8 gMonBackPic_Ralts[] = INCBIN_U8("graphics/pokemon/back_pics/ralts_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Ralts[] = INCBIN_U8("graphics/pokemon/palettes/ralts_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Ralts[] = INCBIN_U32("graphics/pokemon/front_pics/ralts_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Ralts[] = INCBIN_U32("graphics/pokemon/palettes/ralts_palette.gbapal.lz");
+const u32 gMonBackPic_Ralts[] = INCBIN_U32("graphics/pokemon/back_pics/ralts_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Ralts[] = INCBIN_U32("graphics/pokemon/palettes/ralts_shiny_palette.gbapal.lz");
const u8 gMonIcon_Ralts[] = INCBIN_U8("graphics/pokemon/icons/ralts_icon.4bpp");
const u8 gMonFootprint_Ralts[] = INCBIN_U8("graphics/pokemon/footprints/ralts_footprint.1bpp");
-const u8 gMonStillFrontPic_Kirlia[] = INCBIN_U8("graphics/pokemon/front_pics/kirlia_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Kirlia[] = INCBIN_U8("graphics/pokemon/palettes/kirlia_palette.gbapal.lz");
-const u8 gMonBackPic_Kirlia[] = INCBIN_U8("graphics/pokemon/back_pics/kirlia_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Kirlia[] = INCBIN_U8("graphics/pokemon/palettes/kirlia_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Kirlia[] = INCBIN_U32("graphics/pokemon/front_pics/kirlia_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/palettes/kirlia_palette.gbapal.lz");
+const u32 gMonBackPic_Kirlia[] = INCBIN_U32("graphics/pokemon/back_pics/kirlia_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/palettes/kirlia_shiny_palette.gbapal.lz");
const u8 gMonIcon_Kirlia[] = INCBIN_U8("graphics/pokemon/icons/kirlia_icon.4bpp");
const u8 gMonFootprint_Kirlia[] = INCBIN_U8("graphics/pokemon/footprints/kirlia_footprint.1bpp");
-const u8 gMonStillFrontPic_Gardevoir[] = INCBIN_U8("graphics/pokemon/front_pics/gardevoir_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Gardevoir[] = INCBIN_U8("graphics/pokemon/palettes/gardevoir_palette.gbapal.lz");
-const u8 gMonBackPic_Gardevoir[] = INCBIN_U8("graphics/pokemon/back_pics/gardevoir_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Gardevoir[] = INCBIN_U8("graphics/pokemon/palettes/gardevoir_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/front_pics/gardevoir_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/palettes/gardevoir_palette.gbapal.lz");
+const u32 gMonBackPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/back_pics/gardevoir_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/palettes/gardevoir_shiny_palette.gbapal.lz");
const u8 gMonIcon_Gardevoir[] = INCBIN_U8("graphics/pokemon/icons/gardevoir_icon.4bpp");
const u8 gMonFootprint_Gardevoir[] = INCBIN_U8("graphics/pokemon/footprints/gardevoir_footprint.1bpp");
-const u8 gMonStillFrontPic_Bagon[] = INCBIN_U8("graphics/pokemon/front_pics/bagon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Bagon[] = INCBIN_U8("graphics/pokemon/palettes/bagon_palette.gbapal.lz");
-const u8 gMonBackPic_Bagon[] = INCBIN_U8("graphics/pokemon/back_pics/bagon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Bagon[] = INCBIN_U8("graphics/pokemon/palettes/bagon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Bagon[] = INCBIN_U32("graphics/pokemon/front_pics/bagon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Bagon[] = INCBIN_U32("graphics/pokemon/palettes/bagon_palette.gbapal.lz");
+const u32 gMonBackPic_Bagon[] = INCBIN_U32("graphics/pokemon/back_pics/bagon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Bagon[] = INCBIN_U32("graphics/pokemon/palettes/bagon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Bagon[] = INCBIN_U8("graphics/pokemon/icons/bagon_icon.4bpp");
const u8 gMonFootprint_Bagon[] = INCBIN_U8("graphics/pokemon/footprints/bagon_footprint.1bpp");
-const u8 gMonStillFrontPic_Shelgon[] = INCBIN_U8("graphics/pokemon/front_pics/shelgon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Shelgon[] = INCBIN_U8("graphics/pokemon/palettes/shelgon_palette.gbapal.lz");
-const u8 gMonBackPic_Shelgon[] = INCBIN_U8("graphics/pokemon/back_pics/shelgon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Shelgon[] = INCBIN_U8("graphics/pokemon/palettes/shelgon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Shelgon[] = INCBIN_U32("graphics/pokemon/front_pics/shelgon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/palettes/shelgon_palette.gbapal.lz");
+const u32 gMonBackPic_Shelgon[] = INCBIN_U32("graphics/pokemon/back_pics/shelgon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/palettes/shelgon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Shelgon[] = INCBIN_U8("graphics/pokemon/icons/shelgon_icon.4bpp");
const u8 gMonFootprint_Shelgon[] = INCBIN_U8("graphics/pokemon/footprints/shelgon_footprint.1bpp");
-const u8 gMonStillFrontPic_Salamence[] = INCBIN_U8("graphics/pokemon/front_pics/salamence_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Salamence[] = INCBIN_U8("graphics/pokemon/palettes/salamence_palette.gbapal.lz");
-const u8 gMonBackPic_Salamence[] = INCBIN_U8("graphics/pokemon/back_pics/salamence_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Salamence[] = INCBIN_U8("graphics/pokemon/palettes/salamence_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Salamence[] = INCBIN_U32("graphics/pokemon/front_pics/salamence_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Salamence[] = INCBIN_U32("graphics/pokemon/palettes/salamence_palette.gbapal.lz");
+const u32 gMonBackPic_Salamence[] = INCBIN_U32("graphics/pokemon/back_pics/salamence_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Salamence[] = INCBIN_U32("graphics/pokemon/palettes/salamence_shiny_palette.gbapal.lz");
const u8 gMonIcon_Salamence[] = INCBIN_U8("graphics/pokemon/icons/salamence_icon.4bpp");
const u8 gMonFootprint_Salamence[] = INCBIN_U8("graphics/pokemon/footprints/salamence_footprint.1bpp");
-const u8 gMonStillFrontPic_Beldum[] = INCBIN_U8("graphics/pokemon/front_pics/beldum_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Beldum[] = INCBIN_U8("graphics/pokemon/palettes/beldum_palette.gbapal.lz");
-const u8 gMonBackPic_Beldum[] = INCBIN_U8("graphics/pokemon/back_pics/beldum_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Beldum[] = INCBIN_U8("graphics/pokemon/palettes/beldum_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Beldum[] = INCBIN_U32("graphics/pokemon/front_pics/beldum_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Beldum[] = INCBIN_U32("graphics/pokemon/palettes/beldum_palette.gbapal.lz");
+const u32 gMonBackPic_Beldum[] = INCBIN_U32("graphics/pokemon/back_pics/beldum_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Beldum[] = INCBIN_U32("graphics/pokemon/palettes/beldum_shiny_palette.gbapal.lz");
const u8 gMonIcon_Beldum[] = INCBIN_U8("graphics/pokemon/icons/beldum_icon.4bpp");
const u8 gMonFootprint_Beldum[] = INCBIN_U8("graphics/pokemon/footprints/beldum_footprint.1bpp");
-const u8 gMonStillFrontPic_Metang[] = INCBIN_U8("graphics/pokemon/front_pics/metang_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Metang[] = INCBIN_U8("graphics/pokemon/palettes/metang_palette.gbapal.lz");
-const u8 gMonBackPic_Metang[] = INCBIN_U8("graphics/pokemon/back_pics/metang_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Metang[] = INCBIN_U8("graphics/pokemon/palettes/metang_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Metang[] = INCBIN_U32("graphics/pokemon/front_pics/metang_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Metang[] = INCBIN_U32("graphics/pokemon/palettes/metang_palette.gbapal.lz");
+const u32 gMonBackPic_Metang[] = INCBIN_U32("graphics/pokemon/back_pics/metang_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Metang[] = INCBIN_U32("graphics/pokemon/palettes/metang_shiny_palette.gbapal.lz");
const u8 gMonIcon_Metang[] = INCBIN_U8("graphics/pokemon/icons/metang_icon.4bpp");
const u8 gMonFootprint_Metang[] = INCBIN_U8("graphics/pokemon/footprints/metang_footprint.1bpp");
-const u8 gMonStillFrontPic_Metagross[] = INCBIN_U8("graphics/pokemon/front_pics/metagross_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Metagross[] = INCBIN_U8("graphics/pokemon/palettes/metagross_palette.gbapal.lz");
-const u8 gMonBackPic_Metagross[] = INCBIN_U8("graphics/pokemon/back_pics/metagross_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Metagross[] = INCBIN_U8("graphics/pokemon/palettes/metagross_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Metagross[] = INCBIN_U32("graphics/pokemon/front_pics/metagross_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Metagross[] = INCBIN_U32("graphics/pokemon/palettes/metagross_palette.gbapal.lz");
+const u32 gMonBackPic_Metagross[] = INCBIN_U32("graphics/pokemon/back_pics/metagross_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Metagross[] = INCBIN_U32("graphics/pokemon/palettes/metagross_shiny_palette.gbapal.lz");
const u8 gMonIcon_Metagross[] = INCBIN_U8("graphics/pokemon/icons/metagross_icon.4bpp");
const u8 gMonFootprint_Metagross[] = INCBIN_U8("graphics/pokemon/footprints/metagross_footprint.1bpp");
-const u8 gMonStillFrontPic_Regirock[] = INCBIN_U8("graphics/pokemon/front_pics/regirock_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Regirock[] = INCBIN_U8("graphics/pokemon/palettes/regirock_palette.gbapal.lz");
-const u8 gMonBackPic_Regirock[] = INCBIN_U8("graphics/pokemon/back_pics/regirock_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Regirock[] = INCBIN_U8("graphics/pokemon/palettes/regirock_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Regirock[] = INCBIN_U32("graphics/pokemon/front_pics/regirock_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Regirock[] = INCBIN_U32("graphics/pokemon/palettes/regirock_palette.gbapal.lz");
+const u32 gMonBackPic_Regirock[] = INCBIN_U32("graphics/pokemon/back_pics/regirock_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Regirock[] = INCBIN_U32("graphics/pokemon/palettes/regirock_shiny_palette.gbapal.lz");
const u8 gMonIcon_Regirock[] = INCBIN_U8("graphics/pokemon/icons/regirock_icon.4bpp");
const u8 gMonFootprint_Regirock[] = INCBIN_U8("graphics/pokemon/footprints/regirock_footprint.1bpp");
-const u8 gMonStillFrontPic_Regice[] = INCBIN_U8("graphics/pokemon/front_pics/regice_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Regice[] = INCBIN_U8("graphics/pokemon/palettes/regice_palette.gbapal.lz");
-const u8 gMonBackPic_Regice[] = INCBIN_U8("graphics/pokemon/back_pics/regice_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Regice[] = INCBIN_U8("graphics/pokemon/palettes/regice_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Regice[] = INCBIN_U32("graphics/pokemon/front_pics/regice_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Regice[] = INCBIN_U32("graphics/pokemon/palettes/regice_palette.gbapal.lz");
+const u32 gMonBackPic_Regice[] = INCBIN_U32("graphics/pokemon/back_pics/regice_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Regice[] = INCBIN_U32("graphics/pokemon/palettes/regice_shiny_palette.gbapal.lz");
const u8 gMonIcon_Regice[] = INCBIN_U8("graphics/pokemon/icons/regice_icon.4bpp");
const u8 gMonFootprint_Regice[] = INCBIN_U8("graphics/pokemon/footprints/regice_footprint.1bpp");
-const u8 gMonStillFrontPic_Registeel[] = INCBIN_U8("graphics/pokemon/front_pics/registeel_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Registeel[] = INCBIN_U8("graphics/pokemon/palettes/registeel_palette.gbapal.lz");
-const u8 gMonBackPic_Registeel[] = INCBIN_U8("graphics/pokemon/back_pics/registeel_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Registeel[] = INCBIN_U8("graphics/pokemon/palettes/registeel_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Registeel[] = INCBIN_U32("graphics/pokemon/front_pics/registeel_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Registeel[] = INCBIN_U32("graphics/pokemon/palettes/registeel_palette.gbapal.lz");
+const u32 gMonBackPic_Registeel[] = INCBIN_U32("graphics/pokemon/back_pics/registeel_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Registeel[] = INCBIN_U32("graphics/pokemon/palettes/registeel_shiny_palette.gbapal.lz");
const u8 gMonIcon_Registeel[] = INCBIN_U8("graphics/pokemon/icons/registeel_icon.4bpp");
const u8 gMonFootprint_Registeel[] = INCBIN_U8("graphics/pokemon/footprints/registeel_footprint.1bpp");
-const u8 gMonStillFrontPic_Kyogre[] = INCBIN_U8("graphics/pokemon/front_pics/kyogre_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Kyogre[] = INCBIN_U8("graphics/pokemon/palettes/kyogre_palette.gbapal.lz");
-const u8 gMonBackPic_Kyogre[] = INCBIN_U8("graphics/pokemon/back_pics/kyogre_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Kyogre[] = INCBIN_U8("graphics/pokemon/palettes/kyogre_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Kyogre[] = INCBIN_U32("graphics/pokemon/front_pics/kyogre_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/palettes/kyogre_palette.gbapal.lz");
+const u32 gMonBackPic_Kyogre[] = INCBIN_U32("graphics/pokemon/back_pics/kyogre_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/palettes/kyogre_shiny_palette.gbapal.lz");
const u8 gMonIcon_Kyogre[] = INCBIN_U8("graphics/pokemon/icons/kyogre_icon.4bpp");
const u8 gMonFootprint_Kyogre[] = INCBIN_U8("graphics/pokemon/footprints/kyogre_footprint.1bpp");
-const u8 gMonStillFrontPic_Groudon[] = INCBIN_U8("graphics/pokemon/front_pics/groudon_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Groudon[] = INCBIN_U8("graphics/pokemon/palettes/groudon_palette.gbapal.lz");
-const u8 gMonBackPic_Groudon[] = INCBIN_U8("graphics/pokemon/back_pics/groudon_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Groudon[] = INCBIN_U8("graphics/pokemon/palettes/groudon_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Groudon[] = INCBIN_U32("graphics/pokemon/front_pics/groudon_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Groudon[] = INCBIN_U32("graphics/pokemon/palettes/groudon_palette.gbapal.lz");
+const u32 gMonBackPic_Groudon[] = INCBIN_U32("graphics/pokemon/back_pics/groudon_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Groudon[] = INCBIN_U32("graphics/pokemon/palettes/groudon_shiny_palette.gbapal.lz");
const u8 gMonIcon_Groudon[] = INCBIN_U8("graphics/pokemon/icons/groudon_icon.4bpp");
const u8 gMonFootprint_Groudon[] = INCBIN_U8("graphics/pokemon/footprints/groudon_footprint.1bpp");
-const u8 gMonStillFrontPic_Rayquaza[] = INCBIN_U8("graphics/pokemon/front_pics/rayquaza_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Rayquaza[] = INCBIN_U8("graphics/pokemon/palettes/rayquaza_palette.gbapal.lz");
-const u8 gMonBackPic_Rayquaza[] = INCBIN_U8("graphics/pokemon/back_pics/rayquaza_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Rayquaza[] = INCBIN_U8("graphics/pokemon/palettes/rayquaza_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/front_pics/rayquaza_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/palettes/rayquaza_palette.gbapal.lz");
+const u32 gMonBackPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/back_pics/rayquaza_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/palettes/rayquaza_shiny_palette.gbapal.lz");
const u8 gMonIcon_Rayquaza[] = INCBIN_U8("graphics/pokemon/icons/rayquaza_icon.4bpp");
const u8 gMonFootprint_Rayquaza[] = INCBIN_U8("graphics/pokemon/footprints/rayquaza_footprint.1bpp");
-const u8 gMonStillFrontPic_Latias[] = INCBIN_U8("graphics/pokemon/front_pics/latias_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Latias[] = INCBIN_U8("graphics/pokemon/palettes/latias_palette.gbapal.lz");
-const u8 gMonBackPic_Latias[] = INCBIN_U8("graphics/pokemon/back_pics/latias_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Latias[] = INCBIN_U8("graphics/pokemon/palettes/latias_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Latias[] = INCBIN_U32("graphics/pokemon/front_pics/latias_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Latias[] = INCBIN_U32("graphics/pokemon/palettes/latias_palette.gbapal.lz");
+const u32 gMonBackPic_Latias[] = INCBIN_U32("graphics/pokemon/back_pics/latias_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Latias[] = INCBIN_U32("graphics/pokemon/palettes/latias_shiny_palette.gbapal.lz");
const u8 gMonIcon_Latias[] = INCBIN_U8("graphics/pokemon/icons/latias_icon.4bpp");
const u8 gMonFootprint_Latias[] = INCBIN_U8("graphics/pokemon/footprints/latias_footprint.1bpp");
-const u8 gMonStillFrontPic_Latios[] = INCBIN_U8("graphics/pokemon/front_pics/latios_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Latios[] = INCBIN_U8("graphics/pokemon/palettes/latios_palette.gbapal.lz");
-const u8 gMonBackPic_Latios[] = INCBIN_U8("graphics/pokemon/back_pics/latios_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Latios[] = INCBIN_U8("graphics/pokemon/palettes/latios_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Latios[] = INCBIN_U32("graphics/pokemon/front_pics/latios_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Latios[] = INCBIN_U32("graphics/pokemon/palettes/latios_palette.gbapal.lz");
+const u32 gMonBackPic_Latios[] = INCBIN_U32("graphics/pokemon/back_pics/latios_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Latios[] = INCBIN_U32("graphics/pokemon/palettes/latios_shiny_palette.gbapal.lz");
const u8 gMonIcon_Latios[] = INCBIN_U8("graphics/pokemon/icons/latios_icon.4bpp");
const u8 gMonFootprint_Latios[] = INCBIN_U8("graphics/pokemon/footprints/latios_footprint.1bpp");
-const u8 gMonStillFrontPic_Jirachi[] = INCBIN_U8("graphics/pokemon/front_pics/jirachi_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Jirachi[] = INCBIN_U8("graphics/pokemon/palettes/jirachi_palette.gbapal.lz");
-const u8 gMonBackPic_Jirachi[] = INCBIN_U8("graphics/pokemon/back_pics/jirachi_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Jirachi[] = INCBIN_U8("graphics/pokemon/palettes/jirachi_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Jirachi[] = INCBIN_U32("graphics/pokemon/front_pics/jirachi_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/palettes/jirachi_palette.gbapal.lz");
+const u32 gMonBackPic_Jirachi[] = INCBIN_U32("graphics/pokemon/back_pics/jirachi_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/palettes/jirachi_shiny_palette.gbapal.lz");
const u8 gMonIcon_Jirachi[] = INCBIN_U8("graphics/pokemon/icons/jirachi_icon.4bpp");
const u8 gMonFootprint_Jirachi[] = INCBIN_U8("graphics/pokemon/footprints/jirachi_footprint.1bpp");
-const u8 gMonStillFrontPic_Deoxys[] = INCBIN_U8("graphics/pokemon/front_pics/deoxys_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Deoxys[] = INCBIN_U8("graphics/pokemon/palettes/deoxys_palette.gbapal.lz");
-const u8 gMonBackPic_Deoxys[] = INCBIN_U8("graphics/pokemon/back_pics/deoxys_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Deoxys[] = INCBIN_U8("graphics/pokemon/palettes/deoxys_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Deoxys[] = INCBIN_U32("graphics/pokemon/front_pics/deoxys_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Deoxys[] = INCBIN_U32("graphics/pokemon/palettes/deoxys_palette.gbapal.lz");
+const u32 gMonBackPic_Deoxys[] = INCBIN_U32("graphics/pokemon/back_pics/deoxys_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Deoxys[] = INCBIN_U32("graphics/pokemon/palettes/deoxys_shiny_palette.gbapal.lz");
const u8 gMonIcon_Deoxys[] = INCBIN_U8("graphics/pokemon/icons/deoxys_icon.4bpp");
const u8 gMonIcon_DeoxysSpeed[] = INCBIN_U8("graphics/pokemon/icons/deoxys_speed_icon.4bpp");
const u8 gMonIcon_DeoxysSpeedWide[] = INCBIN_U8("graphics/unused/deoxys_speed_icon_wide.4bpp");
@@ -2704,120 +2704,120 @@ const u16 gUnknown_D437F8[] = INCBIN_U16("graphics/unknown/unknown_D437F8.bin");
const u8 gMonFootprint_Deoxys[] = INCBIN_U8("graphics/pokemon/footprints/deoxys_footprint.1bpp");
-const u8 gMonStillFrontPic_Chimecho[] = INCBIN_U8("graphics/pokemon/front_pics/chimecho_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Chimecho[] = INCBIN_U8("graphics/pokemon/palettes/chimecho_palette.gbapal.lz");
-const u8 gMonBackPic_Chimecho[] = INCBIN_U8("graphics/pokemon/back_pics/chimecho_back_pic.4bpp.lz");
-const u8 gMonShinyPalette_Chimecho[] = INCBIN_U8("graphics/pokemon/palettes/chimecho_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Chimecho[] = INCBIN_U32("graphics/pokemon/front_pics/chimecho_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/palettes/chimecho_palette.gbapal.lz");
+const u32 gMonBackPic_Chimecho[] = INCBIN_U32("graphics/pokemon/back_pics/chimecho_back_pic.4bpp.lz");
+const u32 gMonShinyPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/palettes/chimecho_shiny_palette.gbapal.lz");
const u8 gMonIcon_Chimecho[] = INCBIN_U8("graphics/pokemon/icons/chimecho_icon.4bpp");
const u8 gMonFootprint_Chimecho[] = INCBIN_U8("graphics/pokemon/footprints/chimecho_footprint.1bpp");
-const u8 gMonStillFrontPic_Egg[] = INCBIN_U8("graphics/pokemon/front_pics/egg_still_front_pic.4bpp.lz");
-const u8 gMonPalette_Egg[] = INCBIN_U8("graphics/pokemon/palettes/egg_palette.gbapal.lz");
+const u32 gMonStillFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/front_pics/egg_still_front_pic.4bpp.lz");
+const u32 gMonPalette_Egg[] = INCBIN_U32("graphics/pokemon/palettes/egg_palette.gbapal.lz");
-const u8 gMonStillFrontPic_UnownB[] = INCBIN_U8("graphics/pokemon/front_pics/unown_b_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownB[] = INCBIN_U8("graphics/pokemon/back_pics/unown_b_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownB[] = INCBIN_U32("graphics/pokemon/front_pics/unown_b_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownB[] = INCBIN_U32("graphics/pokemon/back_pics/unown_b_back_pic.4bpp.lz");
const u8 gMonIcon_UnownB[] = INCBIN_U8("graphics/pokemon/icons/unown_B_icon.4bpp");
-const u8 gMonStillFrontPic_UnownC[] = INCBIN_U8("graphics/pokemon/front_pics/unown_c_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownC[] = INCBIN_U8("graphics/pokemon/back_pics/unown_c_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownC[] = INCBIN_U32("graphics/pokemon/front_pics/unown_c_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownC[] = INCBIN_U32("graphics/pokemon/back_pics/unown_c_back_pic.4bpp.lz");
const u8 gMonIcon_UnownC[] = INCBIN_U8("graphics/pokemon/icons/unown_C_icon.4bpp");
-const u8 gMonStillFrontPic_UnownD[] = INCBIN_U8("graphics/pokemon/front_pics/unown_d_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownD[] = INCBIN_U8("graphics/pokemon/back_pics/unown_d_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownD[] = INCBIN_U32("graphics/pokemon/front_pics/unown_d_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownD[] = INCBIN_U32("graphics/pokemon/back_pics/unown_d_back_pic.4bpp.lz");
const u8 gMonIcon_UnownD[] = INCBIN_U8("graphics/pokemon/icons/unown_D_icon.4bpp");
-const u8 gMonStillFrontPic_UnownE[] = INCBIN_U8("graphics/pokemon/front_pics/unown_e_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownE[] = INCBIN_U8("graphics/pokemon/back_pics/unown_e_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownE[] = INCBIN_U32("graphics/pokemon/front_pics/unown_e_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownE[] = INCBIN_U32("graphics/pokemon/back_pics/unown_e_back_pic.4bpp.lz");
const u8 gMonIcon_UnownE[] = INCBIN_U8("graphics/pokemon/icons/unown_E_icon.4bpp");
-const u8 gMonStillFrontPic_UnownF[] = INCBIN_U8("graphics/pokemon/front_pics/unown_f_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownF[] = INCBIN_U8("graphics/pokemon/back_pics/unown_f_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownF[] = INCBIN_U32("graphics/pokemon/front_pics/unown_f_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownF[] = INCBIN_U32("graphics/pokemon/back_pics/unown_f_back_pic.4bpp.lz");
const u8 gMonIcon_UnownF[] = INCBIN_U8("graphics/pokemon/icons/unown_F_icon.4bpp");
-const u8 gMonStillFrontPic_UnownG[] = INCBIN_U8("graphics/pokemon/front_pics/unown_g_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownG[] = INCBIN_U8("graphics/pokemon/back_pics/unown_g_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownG[] = INCBIN_U32("graphics/pokemon/front_pics/unown_g_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownG[] = INCBIN_U32("graphics/pokemon/back_pics/unown_g_back_pic.4bpp.lz");
const u8 gMonIcon_UnownG[] = INCBIN_U8("graphics/pokemon/icons/unown_G_icon.4bpp");
-const u8 gMonStillFrontPic_UnownH[] = INCBIN_U8("graphics/pokemon/front_pics/unown_h_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownH[] = INCBIN_U8("graphics/pokemon/back_pics/unown_h_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownH[] = INCBIN_U32("graphics/pokemon/front_pics/unown_h_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownH[] = INCBIN_U32("graphics/pokemon/back_pics/unown_h_back_pic.4bpp.lz");
const u8 gMonIcon_UnownH[] = INCBIN_U8("graphics/pokemon/icons/unown_H_icon.4bpp");
-const u8 gMonStillFrontPic_UnownI[] = INCBIN_U8("graphics/pokemon/front_pics/unown_i_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownI[] = INCBIN_U8("graphics/pokemon/back_pics/unown_i_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownI[] = INCBIN_U32("graphics/pokemon/front_pics/unown_i_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownI[] = INCBIN_U32("graphics/pokemon/back_pics/unown_i_back_pic.4bpp.lz");
const u8 gMonIcon_UnownI[] = INCBIN_U8("graphics/pokemon/icons/unown_I_icon.4bpp");
-const u8 gMonStillFrontPic_UnownJ[] = INCBIN_U8("graphics/pokemon/front_pics/unown_j_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownJ[] = INCBIN_U8("graphics/pokemon/back_pics/unown_j_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownJ[] = INCBIN_U32("graphics/pokemon/front_pics/unown_j_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownJ[] = INCBIN_U32("graphics/pokemon/back_pics/unown_j_back_pic.4bpp.lz");
const u8 gMonIcon_UnownJ[] = INCBIN_U8("graphics/pokemon/icons/unown_J_icon.4bpp");
-const u8 gMonStillFrontPic_UnownK[] = INCBIN_U8("graphics/pokemon/front_pics/unown_k_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownK[] = INCBIN_U8("graphics/pokemon/back_pics/unown_k_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownK[] = INCBIN_U32("graphics/pokemon/front_pics/unown_k_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownK[] = INCBIN_U32("graphics/pokemon/back_pics/unown_k_back_pic.4bpp.lz");
const u8 gMonIcon_UnownK[] = INCBIN_U8("graphics/pokemon/icons/unown_K_icon.4bpp");
-const u8 gMonStillFrontPic_UnownL[] = INCBIN_U8("graphics/pokemon/front_pics/unown_l_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownL[] = INCBIN_U8("graphics/pokemon/back_pics/unown_l_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownL[] = INCBIN_U32("graphics/pokemon/front_pics/unown_l_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownL[] = INCBIN_U32("graphics/pokemon/back_pics/unown_l_back_pic.4bpp.lz");
const u8 gMonIcon_UnownL[] = INCBIN_U8("graphics/pokemon/icons/unown_L_icon.4bpp");
-const u8 gMonStillFrontPic_UnownM[] = INCBIN_U8("graphics/pokemon/front_pics/unown_m_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownM[] = INCBIN_U8("graphics/pokemon/back_pics/unown_m_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownM[] = INCBIN_U32("graphics/pokemon/front_pics/unown_m_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownM[] = INCBIN_U32("graphics/pokemon/back_pics/unown_m_back_pic.4bpp.lz");
const u8 gMonIcon_UnownM[] = INCBIN_U8("graphics/pokemon/icons/unown_M_icon.4bpp");
-const u8 gMonStillFrontPic_UnownN[] = INCBIN_U8("graphics/pokemon/front_pics/unown_n_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownN[] = INCBIN_U8("graphics/pokemon/back_pics/unown_n_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownN[] = INCBIN_U32("graphics/pokemon/front_pics/unown_n_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownN[] = INCBIN_U32("graphics/pokemon/back_pics/unown_n_back_pic.4bpp.lz");
const u8 gMonIcon_UnownN[] = INCBIN_U8("graphics/pokemon/icons/unown_N_icon.4bpp");
-const u8 gMonStillFrontPic_UnownO[] = INCBIN_U8("graphics/pokemon/front_pics/unown_o_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownO[] = INCBIN_U8("graphics/pokemon/back_pics/unown_o_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownO[] = INCBIN_U32("graphics/pokemon/front_pics/unown_o_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownO[] = INCBIN_U32("graphics/pokemon/back_pics/unown_o_back_pic.4bpp.lz");
const u8 gMonIcon_UnownO[] = INCBIN_U8("graphics/pokemon/icons/unown_O_icon.4bpp");
-const u8 gMonStillFrontPic_UnownP[] = INCBIN_U8("graphics/pokemon/front_pics/unown_p_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownP[] = INCBIN_U8("graphics/pokemon/back_pics/unown_p_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownP[] = INCBIN_U32("graphics/pokemon/front_pics/unown_p_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownP[] = INCBIN_U32("graphics/pokemon/back_pics/unown_p_back_pic.4bpp.lz");
const u8 gMonIcon_UnownP[] = INCBIN_U8("graphics/pokemon/icons/unown_P_icon.4bpp");
-const u8 gMonStillFrontPic_UnownQ[] = INCBIN_U8("graphics/pokemon/front_pics/unown_q_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownQ[] = INCBIN_U8("graphics/pokemon/back_pics/unown_q_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownQ[] = INCBIN_U32("graphics/pokemon/front_pics/unown_q_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownQ[] = INCBIN_U32("graphics/pokemon/back_pics/unown_q_back_pic.4bpp.lz");
const u8 gMonIcon_UnownQ[] = INCBIN_U8("graphics/pokemon/icons/unown_Q_icon.4bpp");
-const u8 gMonStillFrontPic_UnownR[] = INCBIN_U8("graphics/pokemon/front_pics/unown_r_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownR[] = INCBIN_U8("graphics/pokemon/back_pics/unown_r_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownR[] = INCBIN_U32("graphics/pokemon/front_pics/unown_r_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownR[] = INCBIN_U32("graphics/pokemon/back_pics/unown_r_back_pic.4bpp.lz");
const u8 gMonIcon_UnownR[] = INCBIN_U8("graphics/pokemon/icons/unown_R_icon.4bpp");
-const u8 gMonStillFrontPic_UnownS[] = INCBIN_U8("graphics/pokemon/front_pics/unown_s_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownS[] = INCBIN_U8("graphics/pokemon/back_pics/unown_s_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownS[] = INCBIN_U32("graphics/pokemon/front_pics/unown_s_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownS[] = INCBIN_U32("graphics/pokemon/back_pics/unown_s_back_pic.4bpp.lz");
const u8 gMonIcon_UnownS[] = INCBIN_U8("graphics/pokemon/icons/unown_S_icon.4bpp");
-const u8 gMonStillFrontPic_UnownT[] = INCBIN_U8("graphics/pokemon/front_pics/unown_t_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownT[] = INCBIN_U8("graphics/pokemon/back_pics/unown_t_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownT[] = INCBIN_U32("graphics/pokemon/front_pics/unown_t_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownT[] = INCBIN_U32("graphics/pokemon/back_pics/unown_t_back_pic.4bpp.lz");
const u8 gMonIcon_UnownT[] = INCBIN_U8("graphics/pokemon/icons/unown_T_icon.4bpp");
-const u8 gMonStillFrontPic_UnownU[] = INCBIN_U8("graphics/pokemon/front_pics/unown_u_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownU[] = INCBIN_U8("graphics/pokemon/back_pics/unown_u_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownU[] = INCBIN_U32("graphics/pokemon/front_pics/unown_u_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownU[] = INCBIN_U32("graphics/pokemon/back_pics/unown_u_back_pic.4bpp.lz");
const u8 gMonIcon_UnownU[] = INCBIN_U8("graphics/pokemon/icons/unown_U_icon.4bpp");
-const u8 gMonStillFrontPic_UnownV[] = INCBIN_U8("graphics/pokemon/front_pics/unown_v_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownV[] = INCBIN_U8("graphics/pokemon/back_pics/unown_v_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownV[] = INCBIN_U32("graphics/pokemon/front_pics/unown_v_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownV[] = INCBIN_U32("graphics/pokemon/back_pics/unown_v_back_pic.4bpp.lz");
const u8 gMonIcon_UnownV[] = INCBIN_U8("graphics/pokemon/icons/unown_V_icon.4bpp");
-const u8 gMonStillFrontPic_UnownW[] = INCBIN_U8("graphics/pokemon/front_pics/unown_w_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownW[] = INCBIN_U8("graphics/pokemon/back_pics/unown_w_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownW[] = INCBIN_U32("graphics/pokemon/front_pics/unown_w_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownW[] = INCBIN_U32("graphics/pokemon/back_pics/unown_w_back_pic.4bpp.lz");
const u8 gMonIcon_UnownW[] = INCBIN_U8("graphics/pokemon/icons/unown_W_icon.4bpp");
-const u8 gMonStillFrontPic_UnownX[] = INCBIN_U8("graphics/pokemon/front_pics/unown_x_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownX[] = INCBIN_U8("graphics/pokemon/back_pics/unown_x_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownX[] = INCBIN_U32("graphics/pokemon/front_pics/unown_x_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownX[] = INCBIN_U32("graphics/pokemon/back_pics/unown_x_back_pic.4bpp.lz");
const u8 gMonIcon_UnownX[] = INCBIN_U8("graphics/pokemon/icons/unown_X_icon.4bpp");
-const u8 gMonStillFrontPic_UnownY[] = INCBIN_U8("graphics/pokemon/front_pics/unown_y_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownY[] = INCBIN_U8("graphics/pokemon/back_pics/unown_y_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownY[] = INCBIN_U32("graphics/pokemon/front_pics/unown_y_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownY[] = INCBIN_U32("graphics/pokemon/back_pics/unown_y_back_pic.4bpp.lz");
const u8 gMonIcon_UnownY[] = INCBIN_U8("graphics/pokemon/icons/unown_Y_icon.4bpp");
-const u8 gMonStillFrontPic_UnownZ[] = INCBIN_U8("graphics/pokemon/front_pics/unown_z_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownZ[] = INCBIN_U8("graphics/pokemon/back_pics/unown_z_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownZ[] = INCBIN_U32("graphics/pokemon/front_pics/unown_z_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownZ[] = INCBIN_U32("graphics/pokemon/back_pics/unown_z_back_pic.4bpp.lz");
const u8 gMonIcon_UnownZ[] = INCBIN_U8("graphics/pokemon/icons/unown_Z_icon.4bpp");
-const u8 gMonStillFrontPic_UnownExclamationMark[] = INCBIN_U8("graphics/pokemon/front_pics/unown_exclamation_mark_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownExclamationMark[] = INCBIN_U8("graphics/pokemon/back_pics/unown_exclamation_mark_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownExclamationMark[] = INCBIN_U32("graphics/pokemon/front_pics/unown_exclamation_mark_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownExclamationMark[] = INCBIN_U32("graphics/pokemon/back_pics/unown_exclamation_mark_back_pic.4bpp.lz");
const u8 gMonIcon_UnownExclamationMark[] = INCBIN_U8("graphics/pokemon/icons/unown_exclamation_mark_icon.4bpp");
-const u8 gMonStillFrontPic_UnownQuestionMark[] = INCBIN_U8("graphics/pokemon/front_pics/unown_question_mark_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_UnownQuestionMark[] = INCBIN_U8("graphics/pokemon/back_pics/unown_question_mark_back_pic.4bpp.lz");
+const u32 gMonStillFrontPic_UnownQuestionMark[] = INCBIN_U32("graphics/pokemon/front_pics/unown_question_mark_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_UnownQuestionMark[] = INCBIN_U32("graphics/pokemon/back_pics/unown_question_mark_back_pic.4bpp.lz");
const u8 gMonIcon_UnownQuestionMark[] = INCBIN_U8("graphics/pokemon/icons/unown_question_mark_icon.4bpp");
diff --git a/src/data/graphics/rayquaza_scene.h b/src/data/graphics/rayquaza_scene.h
index 928a4f6f0..d0269980c 100644
--- a/src/data/graphics/rayquaza_scene.h
+++ b/src/data/graphics/rayquaza_scene.h
@@ -1,73 +1,73 @@
-const u8 gRaySceneGroudon_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/groudon.4bpp.lz");
-const u8 gRaySceneGroudon2_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/groudon_shoulder.4bpp.lz");
-const u8 gRaySceneGroudon3_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/groudon_claw.4bpp.lz");
+const u32 gRaySceneGroudon_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/groudon.4bpp.lz");
+const u32 gRaySceneGroudon2_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/groudon_shoulder.4bpp.lz");
+const u32 gRaySceneGroudon3_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/groudon_claw.4bpp.lz");
-const u8 gRaySceneKyogre_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/kyogre.4bpp.lz");
-const u8 gRaySceneKyogre2_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/kyogre_shoulder.4bpp.lz");
-const u8 gRaySceneKyogre3_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/kyogre_fin.4bpp.lz");
+const u32 gRaySceneKyogre_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/kyogre.4bpp.lz");
+const u32 gRaySceneKyogre2_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/kyogre_shoulder.4bpp.lz");
+const u32 gRaySceneKyogre3_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/kyogre_fin.4bpp.lz");
-const u8 gRaySceneGroudon_Pal[] = INCBIN_U8("graphics/rayquaza_scene/groudon.gbapal.lz");
-const u8 gRaySceneKyogre_Pal[] = INCBIN_U8("graphics/rayquaza_scene/kyogre.gbapal.lz");
+const u32 gRaySceneGroudon_Pal[] = INCBIN_U32("graphics/rayquaza_scene/groudon.gbapal.lz");
+const u32 gRaySceneKyogre_Pal[] = INCBIN_U32("graphics/rayquaza_scene/kyogre.gbapal.lz");
-const u8 gRaySceneClouds_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/clouds.4bpp.lz");
-const u8 gRaySceneClouds_Pal[] = INCBIN_U8("graphics/rayquaza_scene/clouds.gbapal.lz"); // pal 1 clouds, pal 2 rain
-const u16 gRaySceneClouds1_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/clouds1.bin.lz");
-const u16 gRaySceneClouds2_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/clouds2.bin.lz");
-const u16 gRaySceneClouds3_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/clouds3.bin.lz");
+const u32 gRaySceneClouds_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/clouds.4bpp.lz");
+const u32 gRaySceneClouds_Pal[] = INCBIN_U32("graphics/rayquaza_scene/clouds.gbapal.lz"); // pal 1 clouds, pal 2 rain
+const u32 gRaySceneClouds1_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/clouds1.bin.lz");
+const u32 gRaySceneClouds2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/clouds2.bin.lz");
+const u32 gRaySceneClouds3_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/clouds3.bin.lz");
-const u8 gRaySceneSmoke_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/smoke.4bpp.lz");
-const u8 gRaySceneSmoke_Pal[] = INCBIN_U8("graphics/rayquaza_scene/smoke.gbapal.lz");
+const u32 gRaySceneSmoke_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/smoke.4bpp.lz");
+const u32 gRaySceneSmoke_Pal[] = INCBIN_U32("graphics/rayquaza_scene/smoke.gbapal.lz");
-const u16 gRaySceneRayquaza_Gfx[] = INCBIN_U16("graphics/rayquaza_scene/rayquaza.8bpp.lz");
-const u8 gRaySceneRayquaza_Pal[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza.gbapal.lz");
-const u16 gRaySceneRayquaza_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/rayquaza.bin.lz");
+const u32 gRaySceneRayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza.8bpp.lz");
+const u32 gRaySceneRayquaza_Pal[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza.gbapal.lz");
+const u32 gRaySceneRayquaza_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza.bin.lz");
-const u8 gRaySceneOvercast_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/overcast.4bpp.lz"); // uses pal 2 of gRaySceneRayquaza_Pal
-const u16 gRaySceneOvercast_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/overcast.bin.lz");
+const u32 gRaySceneOvercast_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/overcast.4bpp.lz"); // uses pal 2 of gRaySceneRayquaza_Pal
+const u32 gRaySceneOvercast_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/overcast.bin.lz");
-const u8 gRaySceneRayquazaFly1_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_fly1.4bpp.lz");
-const u8 gRaySceneRayquazaTail_Gfx[] = INCBIN_U8( "graphics/rayquaza_scene/rayquaza_tail_fix.4bpp.lz"); // for some reason there are an extra 0xC bytes at the end of the original 4bpp, so in order to produce the correct lz, we have to cat the bytes at the end with a make rule. not sure why those bytes are there, it may have been a bug in Game Freak's software.
+const u32 gRaySceneRayquazaFly1_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_fly1.4bpp.lz");
+const u32 gRaySceneRayquazaTail_Gfx[] = INCBIN_U32( "graphics/rayquaza_scene/rayquaza_tail_fix.4bpp.lz"); // for some reason there are an extra 0xC bytes at the end of the original 4bpp, so in order to produce the correct lz, we have to cat the bytes at the end with a make rule. not sure why those bytes are there, it may have been a bug in Game Freak's software.
-const u8 gRaySceneOvercast2_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/overcast2.4bpp.lz");
+const u32 gRaySceneOvercast2_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/overcast2.4bpp.lz");
-const u8 gRaySceneRayquazaLight_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_light.4bpp.lz"); // uses pal 2 of gRaySceneOvercast2_Pal
+const u32 gRaySceneRayquazaLight_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_light.4bpp.lz"); // uses pal 2 of gRaySceneOvercast2_Pal
-const u8 gRaySceneOvercast2_Pal[] = INCBIN_U8("graphics/rayquaza_scene/overcast2.gbapal.lz");
-const u16 gRaySceneOvercast2_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/overcast2.bin.lz");
+const u32 gRaySceneOvercast2_Pal[] = INCBIN_U32("graphics/rayquaza_scene/overcast2.gbapal.lz");
+const u32 gRaySceneOvercast2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/overcast2.bin.lz");
-const u8 gRaySceneRayquazaLight_Tilemap[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_light.bin.lz");
+const u32 gRaySceneRayquazaLight_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_light.bin.lz");
-const u8 gRaySceneChaseBg_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/chase_bg.4bpp.lz");
-const u16 gRaySceneChaseBg_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/chase_bg.bin.lz");
+const u32 gRaySceneChaseBg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/chase_bg.4bpp.lz");
+const u32 gRaySceneChaseBg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/chase_bg.bin.lz");
-const u8 gRaySceneChaseStreaks_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/chase_streaks.4bpp.lz");
-const u16 gRaySceneChaseStreaks_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/chase_streaks.bin.lz");
+const u32 gRaySceneChaseStreaks_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/chase_streaks.4bpp.lz");
+const u32 gRaySceneChaseStreaks_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/chase_streaks.bin.lz");
-const u8 gRaySceneRayquazaChase_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_chase.4bpp.lz");
-const u16 gRayChaseRayquazaChase_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/rayquaza_chase.bin.lz");
-const u16 gRayChaseRayquazaChase2_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/rayquaza_chase2.bin.lz");
+const u32 gRaySceneRayquazaChase_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_chase.4bpp.lz");
+const u32 gRayChaseRayquazaChase_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_chase.bin.lz");
+const u32 gRayChaseRayquazaChase2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_chase2.bin.lz");
-const u8 gRaySceneChase_Pal[] = INCBIN_U8("graphics/rayquaza_scene/chase.gbapal.lz");
+const u32 gRaySceneChase_Pal[] = INCBIN_U32("graphics/rayquaza_scene/chase.gbapal.lz");
-const u8 gRaySceneGroudonLeft_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/groudon_left.4bpp.lz");
-const u8 gRaySceneGroudonTail_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/groudon_tail.4bpp.lz");
+const u32 gRaySceneGroudonLeft_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/groudon_left.4bpp.lz");
+const u32 gRaySceneGroudonTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/groudon_tail.4bpp.lz");
-const u8 gRaySceneKyogreRight_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/kyogre_right.4bpp.lz");
+const u32 gRaySceneKyogreRight_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/kyogre_right.4bpp.lz");
-const u8 gRaySceneRayquazaHover_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_hover.4bpp.lz");
-const u8 gRaySceneRayquazaFlyIn_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_flyin.4bpp.lz");
+const u32 gRaySceneRayquazaHover_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_hover.4bpp.lz");
+const u32 gRaySceneRayquazaFlyIn_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_flyin.4bpp.lz");
-const u8 gRaySceneSplash_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/splash.4bpp.lz");
+const u32 gRaySceneSplash_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/splash.4bpp.lz");
-const u8 gRaySceneGroudonLeft_Pal[] = INCBIN_U8("graphics/rayquaza_scene/groudon_left.gbapal.lz");
-const u8 gRaySceneKyogreRight_Pal[] = INCBIN_U8("graphics/rayquaza_scene/kyogre_right.gbapal.lz");
-const u8 gRaySceneRayquazaHover_Pal[] = INCBIN_U8("graphics/rayquaza_scene/rayquaza_hover.gbapal.lz");
+const u32 gRaySceneGroudonLeft_Pal[] = INCBIN_U32("graphics/rayquaza_scene/groudon_left.gbapal.lz");
+const u32 gRaySceneKyogreRight_Pal[] = INCBIN_U32("graphics/rayquaza_scene/kyogre_right.gbapal.lz");
+const u32 gRaySceneRayquazaHover_Pal[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_hover.gbapal.lz");
-const u8 gRaySceneSplash_Pal[] = INCBIN_U8("graphics/rayquaza_scene/splash.gbapal.lz");
+const u32 gRaySceneSplash_Pal[] = INCBIN_U32("graphics/rayquaza_scene/splash.gbapal.lz");
-const u8 gRaySceneHushBg_Gfx[] = INCBIN_U8("graphics/rayquaza_scene/hush_bg.4bpp.lz");
-const u16 gRaySceneHushRing_Gfx[] = INCBIN_U16("graphics/rayquaza_scene/hush_ring.8bpp.lz");
-const u16 gRaySceneHushBg_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/hush_bg.bin.lz");
-const u16 gRaySceneHushRing_Tilemap[] = INCBIN_U16("graphics/rayquaza_scene/hush_ring.bin.lz");
-const u16 gRaySceneHushRing_Map[] = INCBIN_U16("graphics/rayquaza_scene/hush_ring_map.bin.lz");
-const u8 gRaySceneHushBg_Pal[] = INCBIN_U8("graphics/rayquaza_scene/hush_bg.gbapal.lz");
+const u32 gRaySceneHushBg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/hush_bg.4bpp.lz");
+const u32 gRaySceneHushRing_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/hush_ring.8bpp.lz");
+const u32 gRaySceneHushBg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/hush_bg.bin.lz");
+const u32 gRaySceneHushRing_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/hush_ring.bin.lz");
+const u32 gRaySceneHushRing_Map[] = INCBIN_U32("graphics/rayquaza_scene/hush_ring_map.bin.lz");
+const u32 gRaySceneHushBg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/hush_bg.gbapal.lz");
diff --git a/src/data/graphics/slot_machine.h b/src/data/graphics/slot_machine.h
index f673874e3..3f351f7ba 100644
--- a/src/data/graphics/slot_machine.h
+++ b/src/data/graphics/slot_machine.h
@@ -1,5 +1,5 @@
const u16 gSlotMachineMenu_Pal[] = INCBIN_U16("graphics/slot_machine/menu.gbapal");
-const u8 gSlotMachineMenu_Gfx[] = INCBIN_U8("graphics/slot_machine/menu.4bpp.lz");
+const u32 gSlotMachineMenu_Gfx[] = INCBIN_U32("graphics/slot_machine/menu.4bpp.lz");
const u16 gSlotMachineMenu_Tilemap[] = INCBIN_U16("graphics/slot_machine/menu.bin");
const u16 gUnknown_08DCEC70[] = INCBIN_U16("graphics/slot_machine/slots_layout.bin");
@@ -26,7 +26,7 @@ const u8 gSlotMachineReelSymbol5Tiles[] = INCBIN_U8("graphics/slot_machine/reel_
const u8 gSlotMachineReelSymbol6Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/6.4bpp");
const u8 gSlotMachineReelSymbol7Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/7.4bpp");
-const u8 gSlotMachineReelTime_Gfx[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz");
+const u32 gSlotMachineReelTime_Gfx[] = INCBIN_U32("graphics/slot_machine/reel_time.4bpp.lz");
const u8 gSlotMachineNumber0Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/0.4bpp");
const u8 gSlotMachineNumber1Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/1.4bpp");
diff --git a/src/data/graphics/trainers.h b/src/data/graphics/trainers.h
index 98a5471ef..3de77d6ec 100644
--- a/src/data/graphics/trainers.h
+++ b/src/data/graphics/trainers.h
@@ -1,281 +1,281 @@
-const u8 gTrainerFrontPic_Hiker[] = INCBIN_U8("graphics/trainers/front_pics/hiker_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Hiker[] = INCBIN_U8("graphics/trainers/palettes/hiker.gbapal.lz");
+const u32 gTrainerFrontPic_Hiker[] = INCBIN_U32("graphics/trainers/front_pics/hiker_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Hiker[] = INCBIN_U32("graphics/trainers/palettes/hiker.gbapal.lz");
-const u8 gTrainerFrontPic_AquaGruntM[] = INCBIN_U8("graphics/trainers/front_pics/aqua_grunt_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_AquaGruntM[] = INCBIN_U8("graphics/trainers/palettes/aqua_grunt_m.gbapal.lz");
+const u32 gTrainerFrontPic_AquaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_AquaGruntM[] = INCBIN_U32("graphics/trainers/palettes/aqua_grunt_m.gbapal.lz");
-const u8 gTrainerFrontPic_PokemonBreederF[] = INCBIN_U8("graphics/trainers/front_pics/pokemon_breeder_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_PokemonBreederF[] = INCBIN_U8("graphics/trainers/palettes/pokemon_breeder_f.gbapal.lz");
+const u32 gTrainerFrontPic_PokemonBreederF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_PokemonBreederF[] = INCBIN_U32("graphics/trainers/palettes/pokemon_breeder_f.gbapal.lz");
-const u8 gTrainerFrontPic_CoolTrainerM[] = INCBIN_U8("graphics/trainers/front_pics/cool_trainer_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_CoolTrainerM[] = INCBIN_U8("graphics/trainers/palettes/cool_trainer_m.gbapal.lz");
+const u32 gTrainerFrontPic_CoolTrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cool_trainer_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_CoolTrainerM[] = INCBIN_U32("graphics/trainers/palettes/cool_trainer_m.gbapal.lz");
-const u8 gTrainerFrontPic_BirdKeeper[] = INCBIN_U8("graphics/trainers/front_pics/bird_keeper_front_pic.4bpp.lz");
-const u8 gTrainerPalette_BirdKeeper[] = INCBIN_U8("graphics/trainers/palettes/bird_keeper.gbapal.lz");
+const u32 gTrainerFrontPic_BirdKeeper[] = INCBIN_U32("graphics/trainers/front_pics/bird_keeper_front_pic.4bpp.lz");
+const u32 gTrainerPalette_BirdKeeper[] = INCBIN_U32("graphics/trainers/palettes/bird_keeper.gbapal.lz");
-const u8 gTrainerFrontPic_Collector[] = INCBIN_U8("graphics/trainers/front_pics/collector_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Collector[] = INCBIN_U8("graphics/trainers/palettes/collector.gbapal.lz");
+const u32 gTrainerFrontPic_Collector[] = INCBIN_U32("graphics/trainers/front_pics/collector_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Collector[] = INCBIN_U32("graphics/trainers/palettes/collector.gbapal.lz");
-const u8 gTrainerFrontPic_AquaGruntF[] = INCBIN_U8("graphics/trainers/front_pics/aqua_grunt_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_AquaGruntF[] = INCBIN_U8("graphics/trainers/palettes/aqua_grunt_f.gbapal.lz");
+const u32 gTrainerFrontPic_AquaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_AquaGruntF[] = INCBIN_U32("graphics/trainers/palettes/aqua_grunt_f.gbapal.lz");
-const u8 gTrainerFrontPic_SwimmerM[] = INCBIN_U8("graphics/trainers/front_pics/swimmer_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_SwimmerM[] = INCBIN_U8("graphics/trainers/palettes/swimmer_m.gbapal.lz");
+const u32 gTrainerFrontPic_SwimmerM[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_SwimmerM[] = INCBIN_U32("graphics/trainers/palettes/swimmer_m.gbapal.lz");
-const u8 gTrainerFrontPic_MagmaGruntM[] = INCBIN_U8("graphics/trainers/front_pics/magma_grunt_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_MagmaGruntM[] = INCBIN_U8("graphics/trainers/palettes/magma_grunt_m.gbapal.lz");
+const u32 gTrainerFrontPic_MagmaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_MagmaGruntM[] = INCBIN_U32("graphics/trainers/palettes/magma_grunt_m.gbapal.lz");
-const u8 gTrainerFrontPic_ExpertM[] = INCBIN_U8("graphics/trainers/front_pics/expert_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_ExpertM[] = INCBIN_U8("graphics/trainers/palettes/expert_m.gbapal.lz");
+const u32 gTrainerFrontPic_ExpertM[] = INCBIN_U32("graphics/trainers/front_pics/expert_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_ExpertM[] = INCBIN_U32("graphics/trainers/palettes/expert_m.gbapal.lz");
-const u8 gTrainerFrontPic_AquaAdminM[] = INCBIN_U8("graphics/trainers/front_pics/aqua_admin_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_AquaAdminM[] = INCBIN_U8("graphics/trainers/palettes/aqua_admin_m.gbapal.lz");
+const u32 gTrainerFrontPic_AquaAdminM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_AquaAdminM[] = INCBIN_U32("graphics/trainers/palettes/aqua_admin_m.gbapal.lz");
-const u8 gTrainerFrontPic_BlackBelt[] = INCBIN_U8("graphics/trainers/front_pics/black_belt_front_pic.4bpp.lz");
-const u8 gTrainerPalette_BlackBelt[] = INCBIN_U8("graphics/trainers/palettes/black_belt.gbapal.lz");
+const u32 gTrainerFrontPic_BlackBelt[] = INCBIN_U32("graphics/trainers/front_pics/black_belt_front_pic.4bpp.lz");
+const u32 gTrainerPalette_BlackBelt[] = INCBIN_U32("graphics/trainers/palettes/black_belt.gbapal.lz");
-const u8 gTrainerFrontPic_AquaAdminF[] = INCBIN_U8("graphics/trainers/front_pics/aqua_admin_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_AquaAdminF[] = INCBIN_U8("graphics/trainers/palettes/aqua_admin_f.gbapal.lz");
+const u32 gTrainerFrontPic_AquaAdminF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_AquaAdminF[] = INCBIN_U32("graphics/trainers/palettes/aqua_admin_f.gbapal.lz");
-const u8 gTrainerFrontPic_AquaLeaderArchie[] = INCBIN_U8("graphics/trainers/front_pics/aqua_leader_archie_front_pic.4bpp.lz");
-const u8 gTrainerPalette_AquaLeaderArchie[] = INCBIN_U8("graphics/trainers/palettes/aqua_leader_archie.gbapal.lz");
+const u32 gTrainerFrontPic_AquaLeaderArchie[] = INCBIN_U32("graphics/trainers/front_pics/aqua_leader_archie_front_pic.4bpp.lz");
+const u32 gTrainerPalette_AquaLeaderArchie[] = INCBIN_U32("graphics/trainers/palettes/aqua_leader_archie.gbapal.lz");
-const u8 gTrainerFrontPic_HexManiac[] = INCBIN_U8("graphics/trainers/front_pics/hex_maniac_front_pic.4bpp.lz");
-const u8 gTrainerPalette_HexManiac[] = INCBIN_U8("graphics/trainers/palettes/hex_maniac.gbapal.lz");
+const u32 gTrainerFrontPic_HexManiac[] = INCBIN_U32("graphics/trainers/front_pics/hex_maniac_front_pic.4bpp.lz");
+const u32 gTrainerPalette_HexManiac[] = INCBIN_U32("graphics/trainers/palettes/hex_maniac.gbapal.lz");
-const u8 gTrainerFrontPic_AromaLady[] = INCBIN_U8("graphics/trainers/front_pics/aroma_lady_front_pic.4bpp.lz");
-const u8 gTrainerPalette_AromaLady[] = INCBIN_U8("graphics/trainers/palettes/aroma_lady.gbapal.lz");
+const u32 gTrainerFrontPic_AromaLady[] = INCBIN_U32("graphics/trainers/front_pics/aroma_lady_front_pic.4bpp.lz");
+const u32 gTrainerPalette_AromaLady[] = INCBIN_U32("graphics/trainers/palettes/aroma_lady.gbapal.lz");
-const u8 gTrainerFrontPic_RuinManiac[] = INCBIN_U8("graphics/trainers/front_pics/ruin_maniac_front_pic.4bpp.lz");
-const u8 gTrainerPalette_RuinManiac[] = INCBIN_U8("graphics/trainers/palettes/ruin_maniac.gbapal.lz");
+const u32 gTrainerFrontPic_RuinManiac[] = INCBIN_U32("graphics/trainers/front_pics/ruin_maniac_front_pic.4bpp.lz");
+const u32 gTrainerPalette_RuinManiac[] = INCBIN_U32("graphics/trainers/palettes/ruin_maniac.gbapal.lz");
-const u8 gTrainerFrontPic_Interviewer[] = INCBIN_U8("graphics/trainers/front_pics/interviewer_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Interviewer[] = INCBIN_U8("graphics/trainers/palettes/interviewer.gbapal.lz");
+const u32 gTrainerFrontPic_Interviewer[] = INCBIN_U32("graphics/trainers/front_pics/interviewer_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Interviewer[] = INCBIN_U32("graphics/trainers/palettes/interviewer.gbapal.lz");
-const u8 gTrainerFrontPic_TuberF[] = INCBIN_U8("graphics/trainers/front_pics/tuber_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_TuberF[] = INCBIN_U8("graphics/trainers/palettes/tuber_f.gbapal.lz");
+const u32 gTrainerFrontPic_TuberF[] = INCBIN_U32("graphics/trainers/front_pics/tuber_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_TuberF[] = INCBIN_U32("graphics/trainers/palettes/tuber_f.gbapal.lz");
-const u8 gTrainerFrontPic_TuberM[] = INCBIN_U8("graphics/trainers/front_pics/tuber_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_TuberM[] = INCBIN_U8("graphics/trainers/palettes/tuber_m.gbapal.lz");
+const u32 gTrainerFrontPic_TuberM[] = INCBIN_U32("graphics/trainers/front_pics/tuber_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_TuberM[] = INCBIN_U32("graphics/trainers/palettes/tuber_m.gbapal.lz");
-const u8 gTrainerFrontPic_CoolTrainerF[] = INCBIN_U8("graphics/trainers/front_pics/cool_trainer_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_CoolTrainerF[] = INCBIN_U8("graphics/trainers/palettes/cool_trainer_f.gbapal.lz");
+const u32 gTrainerFrontPic_CoolTrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cool_trainer_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_CoolTrainerF[] = INCBIN_U32("graphics/trainers/palettes/cool_trainer_f.gbapal.lz");
-const u8 gTrainerFrontPic_Lady[] = INCBIN_U8("graphics/trainers/front_pics/lady_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Lady[] = INCBIN_U8("graphics/trainers/palettes/lady.gbapal.lz");
+const u32 gTrainerFrontPic_Lady[] = INCBIN_U32("graphics/trainers/front_pics/lady_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Lady[] = INCBIN_U32("graphics/trainers/palettes/lady.gbapal.lz");
-const u8 gTrainerFrontPic_Beauty[] = INCBIN_U8("graphics/trainers/front_pics/beauty_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Beauty[] = INCBIN_U8("graphics/trainers/palettes/beauty.gbapal.lz");
+const u32 gTrainerFrontPic_Beauty[] = INCBIN_U32("graphics/trainers/front_pics/beauty_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Beauty[] = INCBIN_U32("graphics/trainers/palettes/beauty.gbapal.lz");
-const u8 gTrainerFrontPic_RichBoy[] = INCBIN_U8("graphics/trainers/front_pics/rich_boy_front_pic.4bpp.lz");
-const u8 gTrainerPalette_RichBoy[] = INCBIN_U8("graphics/trainers/palettes/rich_boy.gbapal.lz");
+const u32 gTrainerFrontPic_RichBoy[] = INCBIN_U32("graphics/trainers/front_pics/rich_boy_front_pic.4bpp.lz");
+const u32 gTrainerPalette_RichBoy[] = INCBIN_U32("graphics/trainers/palettes/rich_boy.gbapal.lz");
-const u8 gTrainerFrontPic_ExpertF[] = INCBIN_U8("graphics/trainers/front_pics/expert_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_ExpertF[] = INCBIN_U8("graphics/trainers/palettes/expert_f.gbapal.lz");
+const u32 gTrainerFrontPic_ExpertF[] = INCBIN_U32("graphics/trainers/front_pics/expert_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_ExpertF[] = INCBIN_U32("graphics/trainers/palettes/expert_f.gbapal.lz");
-const u8 gTrainerFrontPic_Pokemaniac[] = INCBIN_U8("graphics/trainers/front_pics/pokemaniac_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Pokemaniac[] = INCBIN_U8("graphics/trainers/palettes/pokemaniac.gbapal.lz");
+const u32 gTrainerFrontPic_Pokemaniac[] = INCBIN_U32("graphics/trainers/front_pics/pokemaniac_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Pokemaniac[] = INCBIN_U32("graphics/trainers/palettes/pokemaniac.gbapal.lz");
-const u8 gTrainerFrontPic_MagmaGruntF[] = INCBIN_U8("graphics/trainers/front_pics/magma_grunt_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_MagmaGruntF[] = INCBIN_U8("graphics/trainers/palettes/magma_grunt_f.gbapal.lz");
+const u32 gTrainerFrontPic_MagmaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_MagmaGruntF[] = INCBIN_U32("graphics/trainers/palettes/magma_grunt_f.gbapal.lz");
-const u8 gTrainerFrontPic_Guitarist[] = INCBIN_U8("graphics/trainers/front_pics/guitarist_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Guitarist[] = INCBIN_U8("graphics/trainers/palettes/guitarist.gbapal.lz");
+const u32 gTrainerFrontPic_Guitarist[] = INCBIN_U32("graphics/trainers/front_pics/guitarist_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Guitarist[] = INCBIN_U32("graphics/trainers/palettes/guitarist.gbapal.lz");
-const u8 gTrainerFrontPic_Kindler[] = INCBIN_U8("graphics/trainers/front_pics/kindler_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Kindler[] = INCBIN_U8("graphics/trainers/palettes/kindler.gbapal.lz");
+const u32 gTrainerFrontPic_Kindler[] = INCBIN_U32("graphics/trainers/front_pics/kindler_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Kindler[] = INCBIN_U32("graphics/trainers/palettes/kindler.gbapal.lz");
-const u8 gTrainerFrontPic_Camper[] = INCBIN_U8("graphics/trainers/front_pics/camper_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Camper[] = INCBIN_U8("graphics/trainers/palettes/camper.gbapal.lz");
+const u32 gTrainerFrontPic_Camper[] = INCBIN_U32("graphics/trainers/front_pics/camper_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Camper[] = INCBIN_U32("graphics/trainers/palettes/camper.gbapal.lz");
-const u8 gTrainerFrontPic_Picnicker[] = INCBIN_U8("graphics/trainers/front_pics/picnicker_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Picnicker[] = INCBIN_U8("graphics/trainers/palettes/picnicker.gbapal.lz");
+const u32 gTrainerFrontPic_Picnicker[] = INCBIN_U32("graphics/trainers/front_pics/picnicker_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Picnicker[] = INCBIN_U32("graphics/trainers/palettes/picnicker.gbapal.lz");
-const u8 gTrainerFrontPic_BugManiac[] = INCBIN_U8("graphics/trainers/front_pics/bug_maniac_front_pic.4bpp.lz");
-const u8 gTrainerPalette_BugManiac[] = INCBIN_U8("graphics/trainers/palettes/bug_maniac.gbapal.lz");
+const u32 gTrainerFrontPic_BugManiac[] = INCBIN_U32("graphics/trainers/front_pics/bug_maniac_front_pic.4bpp.lz");
+const u32 gTrainerPalette_BugManiac[] = INCBIN_U32("graphics/trainers/palettes/bug_maniac.gbapal.lz");
-const u8 gTrainerFrontPic_PokemonBreederM[] = INCBIN_U8("graphics/trainers/front_pics/pokemon_breeder_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_PokemonBreederM[] = INCBIN_U8("graphics/trainers/palettes/pokemon_breeder_m.gbapal.lz");
+const u32 gTrainerFrontPic_PokemonBreederM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_PokemonBreederM[] = INCBIN_U32("graphics/trainers/palettes/pokemon_breeder_m.gbapal.lz");
-const u8 gTrainerFrontPic_PsychicM[] = INCBIN_U8("graphics/trainers/front_pics/psychic_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_PsychicM[] = INCBIN_U8("graphics/trainers/palettes/psychic_m.gbapal.lz");
+const u32 gTrainerFrontPic_PsychicM[] = INCBIN_U32("graphics/trainers/front_pics/psychic_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_PsychicM[] = INCBIN_U32("graphics/trainers/palettes/psychic_m.gbapal.lz");
-const u8 gTrainerFrontPic_PsychicF[] = INCBIN_U8("graphics/trainers/front_pics/psychic_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_PsychicF[] = INCBIN_U8("graphics/trainers/palettes/psychic_f.gbapal.lz");
+const u32 gTrainerFrontPic_PsychicF[] = INCBIN_U32("graphics/trainers/front_pics/psychic_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_PsychicF[] = INCBIN_U32("graphics/trainers/palettes/psychic_f.gbapal.lz");
-const u8 gTrainerFrontPic_Gentleman[] = INCBIN_U8("graphics/trainers/front_pics/gentleman_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Gentleman[] = INCBIN_U8("graphics/trainers/palettes/gentleman.gbapal.lz");
+const u32 gTrainerFrontPic_Gentleman[] = INCBIN_U32("graphics/trainers/front_pics/gentleman_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Gentleman[] = INCBIN_U32("graphics/trainers/palettes/gentleman.gbapal.lz");
-const u8 gTrainerFrontPic_EliteFourSidney[] = INCBIN_U8("graphics/trainers/front_pics/elite_four_sidney_front_pic.4bpp.lz");
-const u8 gTrainerPalette_EliteFourSidney[] = INCBIN_U8("graphics/trainers/palettes/elite_four_sidney.gbapal.lz");
+const u32 gTrainerFrontPic_EliteFourSidney[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_sidney_front_pic.4bpp.lz");
+const u32 gTrainerPalette_EliteFourSidney[] = INCBIN_U32("graphics/trainers/palettes/elite_four_sidney.gbapal.lz");
-const u8 gTrainerFrontPic_EliteFourPhoebe[] = INCBIN_U8("graphics/trainers/front_pics/elite_four_phoebe_front_pic.4bpp.lz");
-const u8 gTrainerPalette_EliteFourPhoebe[] = INCBIN_U8("graphics/trainers/palettes/elite_four_phoebe.gbapal.lz");
+const u32 gTrainerFrontPic_EliteFourPhoebe[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_phoebe_front_pic.4bpp.lz");
+const u32 gTrainerPalette_EliteFourPhoebe[] = INCBIN_U32("graphics/trainers/palettes/elite_four_phoebe.gbapal.lz");
-const u8 gTrainerFrontPic_EliteFourGlacia[] = INCBIN_U8("graphics/trainers/front_pics/elite_four_glacia_front_pic.4bpp.lz");
-const u8 gTrainerPalette_EliteFourGlacia[] = INCBIN_U8("graphics/trainers/palettes/elite_four_glacia.gbapal.lz");
+const u32 gTrainerFrontPic_EliteFourGlacia[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_glacia_front_pic.4bpp.lz");
+const u32 gTrainerPalette_EliteFourGlacia[] = INCBIN_U32("graphics/trainers/palettes/elite_four_glacia.gbapal.lz");
-const u8 gTrainerFrontPic_EliteFourDrake[] = INCBIN_U8("graphics/trainers/front_pics/elite_four_drake_front_pic.4bpp.lz");
-const u8 gTrainerPalette_EliteFourDrake[] = INCBIN_U8("graphics/trainers/palettes/elite_four_drake.gbapal.lz");
+const u32 gTrainerFrontPic_EliteFourDrake[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_drake_front_pic.4bpp.lz");
+const u32 gTrainerPalette_EliteFourDrake[] = INCBIN_U32("graphics/trainers/palettes/elite_four_drake.gbapal.lz");
-const u8 gTrainerFrontPic_LeaderRoxanne[] = INCBIN_U8("graphics/trainers/front_pics/leader_roxanne_front_pic.4bpp.lz");
-const u8 gTrainerPalette_LeaderRoxanne[] = INCBIN_U8("graphics/trainers/palettes/leader_roxanne.gbapal.lz");
+const u32 gTrainerFrontPic_LeaderRoxanne[] = INCBIN_U32("graphics/trainers/front_pics/leader_roxanne_front_pic.4bpp.lz");
+const u32 gTrainerPalette_LeaderRoxanne[] = INCBIN_U32("graphics/trainers/palettes/leader_roxanne.gbapal.lz");
-const u8 gTrainerFrontPic_LeaderBrawly[] = INCBIN_U8("graphics/trainers/front_pics/leader_brawly_front_pic.4bpp.lz");
-const u8 gTrainerPalette_LeaderBrawly[] = INCBIN_U8("graphics/trainers/palettes/leader_brawly.gbapal.lz");
+const u32 gTrainerFrontPic_LeaderBrawly[] = INCBIN_U32("graphics/trainers/front_pics/leader_brawly_front_pic.4bpp.lz");
+const u32 gTrainerPalette_LeaderBrawly[] = INCBIN_U32("graphics/trainers/palettes/leader_brawly.gbapal.lz");
-const u8 gTrainerFrontPic_LeaderWattson[] = INCBIN_U8("graphics/trainers/front_pics/leader_wattson_front_pic.4bpp.lz");
-const u8 gTrainerPalette_LeaderWattson[] = INCBIN_U8("graphics/trainers/palettes/leader_wattson.gbapal.lz");
+const u32 gTrainerFrontPic_LeaderWattson[] = INCBIN_U32("graphics/trainers/front_pics/leader_wattson_front_pic.4bpp.lz");
+const u32 gTrainerPalette_LeaderWattson[] = INCBIN_U32("graphics/trainers/palettes/leader_wattson.gbapal.lz");
-const u8 gTrainerFrontPic_LeaderFlannery[] = INCBIN_U8("graphics/trainers/front_pics/leader_flannery_front_pic.4bpp.lz");
-const u8 gTrainerPalette_LeaderFlannery[] = INCBIN_U8("graphics/trainers/palettes/leader_flannery.gbapal.lz");
+const u32 gTrainerFrontPic_LeaderFlannery[] = INCBIN_U32("graphics/trainers/front_pics/leader_flannery_front_pic.4bpp.lz");
+const u32 gTrainerPalette_LeaderFlannery[] = INCBIN_U32("graphics/trainers/palettes/leader_flannery.gbapal.lz");
-const u8 gTrainerFrontPic_LeaderNorman[] = INCBIN_U8("graphics/trainers/front_pics/leader_norman_front_pic.4bpp.lz");
-const u8 gTrainerPalette_LeaderNorman[] = INCBIN_U8("graphics/trainers/palettes/leader_norman.gbapal.lz");
+const u32 gTrainerFrontPic_LeaderNorman[] = INCBIN_U32("graphics/trainers/front_pics/leader_norman_front_pic.4bpp.lz");
+const u32 gTrainerPalette_LeaderNorman[] = INCBIN_U32("graphics/trainers/palettes/leader_norman.gbapal.lz");
-const u8 gTrainerFrontPic_LeaderWinona[] = INCBIN_U8("graphics/trainers/front_pics/leader_winona_front_pic.4bpp.lz");
-const u8 gTrainerPalette_LeaderWinona[] = INCBIN_U8("graphics/trainers/palettes/leader_winona.gbapal.lz");
+const u32 gTrainerFrontPic_LeaderWinona[] = INCBIN_U32("graphics/trainers/front_pics/leader_winona_front_pic.4bpp.lz");
+const u32 gTrainerPalette_LeaderWinona[] = INCBIN_U32("graphics/trainers/palettes/leader_winona.gbapal.lz");
-const u8 gTrainerFrontPic_LeaderTateAndLiza[] = INCBIN_U8("graphics/trainers/front_pics/leader_tate_and_liza_front_pic.4bpp.lz");
-const u8 gTrainerPalette_LeaderTateAndLiza[] = INCBIN_U8("graphics/trainers/palettes/leader_tate_and_liza.gbapal.lz");
+const u32 gTrainerFrontPic_LeaderTateAndLiza[] = INCBIN_U32("graphics/trainers/front_pics/leader_tate_and_liza_front_pic.4bpp.lz");
+const u32 gTrainerPalette_LeaderTateAndLiza[] = INCBIN_U32("graphics/trainers/palettes/leader_tate_and_liza.gbapal.lz");
-const u8 gTrainerFrontPic_LeaderJuan[] = INCBIN_U8("graphics/trainers/front_pics/leader_juan_front_pic.4bpp.lz");
-const u8 gTrainerPalette_LeaderJuan[] = INCBIN_U8("graphics/trainers/palettes/leader_juan.gbapal.lz");
+const u32 gTrainerFrontPic_LeaderJuan[] = INCBIN_U32("graphics/trainers/front_pics/leader_juan_front_pic.4bpp.lz");
+const u32 gTrainerPalette_LeaderJuan[] = INCBIN_U32("graphics/trainers/palettes/leader_juan.gbapal.lz");
-const u8 gTrainerFrontPic_SchoolKidM[] = INCBIN_U8("graphics/trainers/front_pics/school_kid_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_SchoolKidM[] = INCBIN_U8("graphics/trainers/palettes/school_kid_m.gbapal.lz");
+const u32 gTrainerFrontPic_SchoolKidM[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_SchoolKidM[] = INCBIN_U32("graphics/trainers/palettes/school_kid_m.gbapal.lz");
-const u8 gTrainerFrontPic_SchoolKidF[] = INCBIN_U8("graphics/trainers/front_pics/school_kid_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_SchoolKidF[] = INCBIN_U8("graphics/trainers/palettes/school_kid_f.gbapal.lz");
+const u32 gTrainerFrontPic_SchoolKidF[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_SchoolKidF[] = INCBIN_U32("graphics/trainers/palettes/school_kid_f.gbapal.lz");
-const u8 gTrainerFrontPic_SrAndJr[] = INCBIN_U8("graphics/trainers/front_pics/sr_and_jr_front_pic.4bpp.lz");
-const u8 gTrainerPalette_SrAndJr[] = INCBIN_U8("graphics/trainers/palettes/sr_and_jr.gbapal.lz");
+const u32 gTrainerFrontPic_SrAndJr[] = INCBIN_U32("graphics/trainers/front_pics/sr_and_jr_front_pic.4bpp.lz");
+const u32 gTrainerPalette_SrAndJr[] = INCBIN_U32("graphics/trainers/palettes/sr_and_jr.gbapal.lz");
-const u8 gTrainerFrontPic_WinstrateM[] = INCBIN_U8("graphics/trainers/front_pics/winstrate_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_WinstrateM[] = INCBIN_U8("graphics/trainers/palettes/winstrate_m.gbapal.lz");
+const u32 gTrainerFrontPic_PokefanM[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_PokefanM[] = INCBIN_U32("graphics/trainers/palettes/pokefan_m.gbapal.lz");
-const u8 gTrainerFrontPic_WinstrateF[] = INCBIN_U8("graphics/trainers/front_pics/winstrate_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_WinstrateF[] = INCBIN_U8("graphics/trainers/palettes/winstrate_f.gbapal.lz");
+const u32 gTrainerFrontPic_PokefanF[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_PokefanF[] = INCBIN_U32("graphics/trainers/palettes/pokefan_f.gbapal.lz");
-const u8 gTrainerFrontPic_Youngster[] = INCBIN_U8("graphics/trainers/front_pics/youngster_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Youngster[] = INCBIN_U8("graphics/trainers/palettes/youngster.gbapal.lz");
+const u32 gTrainerFrontPic_Youngster[] = INCBIN_U32("graphics/trainers/front_pics/youngster_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Youngster[] = INCBIN_U32("graphics/trainers/palettes/youngster.gbapal.lz");
-const u8 gTrainerFrontPic_ChampionWallace[] = INCBIN_U8("graphics/trainers/front_pics/champion_wallace_front_pic.4bpp.lz");
-const u8 gTrainerPalette_ChampionWallace[] = INCBIN_U8("graphics/trainers/palettes/champion_wallace.gbapal.lz");
+const u32 gTrainerFrontPic_ChampionWallace[] = INCBIN_U32("graphics/trainers/front_pics/champion_wallace_front_pic.4bpp.lz");
+const u32 gTrainerPalette_ChampionWallace[] = INCBIN_U32("graphics/trainers/palettes/champion_wallace.gbapal.lz");
-const u8 gTrainerFrontPic_Fisherman[] = INCBIN_U8("graphics/trainers/front_pics/fisherman_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Fisherman[] = INCBIN_U8("graphics/trainers/palettes/fisherman.gbapal.lz");
+const u32 gTrainerFrontPic_Fisherman[] = INCBIN_U32("graphics/trainers/front_pics/fisherman_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Fisherman[] = INCBIN_U32("graphics/trainers/palettes/fisherman.gbapal.lz");
-const u8 gTrainerFrontPic_CyclingTriathleteM[] = INCBIN_U8("graphics/trainers/front_pics/cycling_triathlete_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_CyclingTriathleteM[] = INCBIN_U8("graphics/trainers/palettes/cycling_triathlete_m.gbapal.lz");
+const u32 gTrainerFrontPic_CyclingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_CyclingTriathleteM[] = INCBIN_U32("graphics/trainers/palettes/cycling_triathlete_m.gbapal.lz");
-const u8 gTrainerFrontPic_CyclingTriathleteF[] = INCBIN_U8("graphics/trainers/front_pics/cycling_triathlete_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_CyclingTriathleteF[] = INCBIN_U8("graphics/trainers/palettes/cycling_triathlete_f.gbapal.lz");
+const u32 gTrainerFrontPic_CyclingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_CyclingTriathleteF[] = INCBIN_U32("graphics/trainers/palettes/cycling_triathlete_f.gbapal.lz");
-const u8 gTrainerFrontPic_RunningTriathleteM[] = INCBIN_U8("graphics/trainers/front_pics/running_triathlete_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_RunningTriathleteM[] = INCBIN_U8("graphics/trainers/palettes/running_triathlete_m.gbapal.lz");
+const u32 gTrainerFrontPic_RunningTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_RunningTriathleteM[] = INCBIN_U32("graphics/trainers/palettes/running_triathlete_m.gbapal.lz");
-const u8 gTrainerFrontPic_RunningTriathleteF[] = INCBIN_U8("graphics/trainers/front_pics/running_triathlete_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_RunningTriathleteF[] = INCBIN_U8("graphics/trainers/palettes/running_triathlete_f.gbapal.lz");
+const u32 gTrainerFrontPic_RunningTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_RunningTriathleteF[] = INCBIN_U32("graphics/trainers/palettes/running_triathlete_f.gbapal.lz");
-const u8 gTrainerFrontPic_SwimmingTriathleteM[] = INCBIN_U8("graphics/trainers/front_pics/swimming_triathlete_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_SwimmingTriathleteM[] = INCBIN_U8("graphics/trainers/palettes/swimming_triathlete_m.gbapal.lz");
+const u32 gTrainerFrontPic_SwimmingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_SwimmingTriathleteM[] = INCBIN_U32("graphics/trainers/palettes/swimming_triathlete_m.gbapal.lz");
-const u8 gTrainerFrontPic_SwimmingTriathleteF[] = INCBIN_U8("graphics/trainers/front_pics/swimming_triathlete_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_SwimmingTriathleteF[] = INCBIN_U8("graphics/trainers/palettes/swimming_triathlete_f.gbapal.lz");
+const u32 gTrainerFrontPic_SwimmingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_SwimmingTriathleteF[] = INCBIN_U32("graphics/trainers/palettes/swimming_triathlete_f.gbapal.lz");
-const u8 gTrainerFrontPic_DragonTamer[] = INCBIN_U8("graphics/trainers/front_pics/dragon_tamer_front_pic.4bpp.lz");
-const u8 gTrainerPalette_DragonTamer[] = INCBIN_U8("graphics/trainers/palettes/dragon_tamer.gbapal.lz");
+const u32 gTrainerFrontPic_DragonTamer[] = INCBIN_U32("graphics/trainers/front_pics/dragon_tamer_front_pic.4bpp.lz");
+const u32 gTrainerPalette_DragonTamer[] = INCBIN_U32("graphics/trainers/palettes/dragon_tamer.gbapal.lz");
-const u8 gTrainerFrontPic_NinjaBoy[] = INCBIN_U8("graphics/trainers/front_pics/ninja_boy_front_pic.4bpp.lz");
-const u8 gTrainerPalette_NinjaBoy[] = INCBIN_U8("graphics/trainers/palettes/ninja_boy.gbapal.lz");
+const u32 gTrainerFrontPic_NinjaBoy[] = INCBIN_U32("graphics/trainers/front_pics/ninja_boy_front_pic.4bpp.lz");
+const u32 gTrainerPalette_NinjaBoy[] = INCBIN_U32("graphics/trainers/palettes/ninja_boy.gbapal.lz");
-const u8 gTrainerFrontPic_BattleGirl[] = INCBIN_U8("graphics/trainers/front_pics/battle_girl_front_pic.4bpp.lz");
-const u8 gTrainerPalette_BattleGirl[] = INCBIN_U8("graphics/trainers/palettes/battle_girl.gbapal.lz");
+const u32 gTrainerFrontPic_BattleGirl[] = INCBIN_U32("graphics/trainers/front_pics/battle_girl_front_pic.4bpp.lz");
+const u32 gTrainerPalette_BattleGirl[] = INCBIN_U32("graphics/trainers/palettes/battle_girl.gbapal.lz");
-const u8 gTrainerFrontPic_ParasolLady[] = INCBIN_U8("graphics/trainers/front_pics/parasol_lady_front_pic.4bpp.lz");
-const u8 gTrainerPalette_ParasolLady[] = INCBIN_U8("graphics/trainers/palettes/parasol_lady.gbapal.lz");
+const u32 gTrainerFrontPic_ParasolLady[] = INCBIN_U32("graphics/trainers/front_pics/parasol_lady_front_pic.4bpp.lz");
+const u32 gTrainerPalette_ParasolLady[] = INCBIN_U32("graphics/trainers/palettes/parasol_lady.gbapal.lz");
-const u8 gTrainerFrontPic_SwimmerF[] = INCBIN_U8("graphics/trainers/front_pics/swimmer_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_SwimmerF[] = INCBIN_U8("graphics/trainers/palettes/swimmer_f.gbapal.lz");
+const u32 gTrainerFrontPic_SwimmerF[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_SwimmerF[] = INCBIN_U32("graphics/trainers/palettes/swimmer_f.gbapal.lz");
-const u8 gTrainerFrontPic_Twins[] = INCBIN_U8("graphics/trainers/front_pics/twins_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Twins[] = INCBIN_U8("graphics/trainers/palettes/twins.gbapal.lz");
+const u32 gTrainerFrontPic_Twins[] = INCBIN_U32("graphics/trainers/front_pics/twins_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Twins[] = INCBIN_U32("graphics/trainers/palettes/twins.gbapal.lz");
-const u8 gTrainerFrontPic_Sailor[] = INCBIN_U8("graphics/trainers/front_pics/sailor_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Sailor[] = INCBIN_U8("graphics/trainers/palettes/sailor.gbapal.lz");
+const u32 gTrainerFrontPic_Sailor[] = INCBIN_U32("graphics/trainers/front_pics/sailor_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Sailor[] = INCBIN_U32("graphics/trainers/palettes/sailor.gbapal.lz");
-const u8 gTrainerFrontPic_MagmaAdmin[] = INCBIN_U8("graphics/trainers/front_pics/magma_admin_front_pic.4bpp.lz");
-const u8 gTrainerPalette_MagmaAdmin[] = INCBIN_U8("graphics/trainers/palettes/magma_admin.gbapal.lz");
+const u32 gTrainerFrontPic_MagmaAdmin[] = INCBIN_U32("graphics/trainers/front_pics/magma_admin_front_pic.4bpp.lz");
+const u32 gTrainerPalette_MagmaAdmin[] = INCBIN_U32("graphics/trainers/palettes/magma_admin.gbapal.lz");
-const u8 gTrainerFrontPic_Wally[] = INCBIN_U8("graphics/trainers/front_pics/wally_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Wally[] = INCBIN_U8("graphics/trainers/palettes/wally.gbapal.lz");
+const u32 gTrainerFrontPic_Wally[] = INCBIN_U32("graphics/trainers/front_pics/wally_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Wally[] = INCBIN_U32("graphics/trainers/palettes/wally.gbapal.lz");
-const u8 gTrainerFrontPic_Brendan[] = INCBIN_U8("graphics/trainers/front_pics/brendan_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Brendan[] = INCBIN_U8("graphics/trainers/palettes/brendan.gbapal.lz");
+const u32 gTrainerFrontPic_Brendan[] = INCBIN_U32("graphics/trainers/front_pics/brendan_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Brendan[] = INCBIN_U32("graphics/trainers/palettes/brendan.gbapal.lz");
-const u8 gTrainerFrontPic_May[] = INCBIN_U8("graphics/trainers/front_pics/may_front_pic.4bpp.lz");
-const u8 gTrainerPalette_May[] = INCBIN_U8("graphics/trainers/palettes/may.gbapal.lz");
+const u32 gTrainerFrontPic_May[] = INCBIN_U32("graphics/trainers/front_pics/may_front_pic.4bpp.lz");
+const u32 gTrainerPalette_May[] = INCBIN_U32("graphics/trainers/palettes/may.gbapal.lz");
-const u8 gTrainerFrontPic_BugCatcher[] = INCBIN_U8("graphics/trainers/front_pics/bug_catcher_front_pic.4bpp.lz");
-const u8 gTrainerPalette_BugCatcher[] = INCBIN_U8("graphics/trainers/palettes/bug_catcher.gbapal.lz");
+const u32 gTrainerFrontPic_BugCatcher[] = INCBIN_U32("graphics/trainers/front_pics/bug_catcher_front_pic.4bpp.lz");
+const u32 gTrainerPalette_BugCatcher[] = INCBIN_U32("graphics/trainers/palettes/bug_catcher.gbapal.lz");
-const u8 gTrainerFrontPic_PokemonRangerM[] = INCBIN_U8("graphics/trainers/front_pics/pokemon_ranger_m_front_pic.4bpp.lz");
-const u8 gTrainerPalette_PokemonRangerM[] = INCBIN_U8("graphics/trainers/palettes/pokemon_ranger_m.gbapal.lz");
+const u32 gTrainerFrontPic_PokemonRangerM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_PokemonRangerM[] = INCBIN_U32("graphics/trainers/palettes/pokemon_ranger_m.gbapal.lz");
-const u8 gTrainerFrontPic_PokemonRangerF[] = INCBIN_U8("graphics/trainers/front_pics/pokemon_ranger_f_front_pic.4bpp.lz");
-const u8 gTrainerPalette_PokemonRangerF[] = INCBIN_U8("graphics/trainers/palettes/pokemon_ranger_f.gbapal.lz");
+const u32 gTrainerFrontPic_PokemonRangerF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_PokemonRangerF[] = INCBIN_U32("graphics/trainers/palettes/pokemon_ranger_f.gbapal.lz");
-const u8 gTrainerFrontPic_MagmaLeaderMaxie[] = INCBIN_U8("graphics/trainers/front_pics/magma_leader_maxie_front_pic.4bpp.lz");
-const u8 gTrainerPalette_MagmaLeaderMaxie[] = INCBIN_U8("graphics/trainers/palettes/magma_leader_maxie.gbapal.lz");
+const u32 gTrainerFrontPic_MagmaLeaderMaxie[] = INCBIN_U32("graphics/trainers/front_pics/magma_leader_maxie_front_pic.4bpp.lz");
+const u32 gTrainerPalette_MagmaLeaderMaxie[] = INCBIN_U32("graphics/trainers/palettes/magma_leader_maxie.gbapal.lz");
-const u8 gTrainerFrontPic_Lass[] = INCBIN_U8("graphics/trainers/front_pics/lass_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Lass[] = INCBIN_U8("graphics/trainers/palettes/lass.gbapal.lz");
+const u32 gTrainerFrontPic_Lass[] = INCBIN_U32("graphics/trainers/front_pics/lass_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Lass[] = INCBIN_U32("graphics/trainers/palettes/lass.gbapal.lz");
-const u8 gTrainerFrontPic_YoungCouple[] = INCBIN_U8("graphics/trainers/front_pics/young_couple_front_pic.4bpp.lz");
-const u8 gTrainerPalette_YoungCouple[] = INCBIN_U8("graphics/trainers/palettes/young_couple.gbapal.lz");
+const u32 gTrainerFrontPic_YoungCouple[] = INCBIN_U32("graphics/trainers/front_pics/young_couple_front_pic.4bpp.lz");
+const u32 gTrainerPalette_YoungCouple[] = INCBIN_U32("graphics/trainers/palettes/young_couple.gbapal.lz");
-const u8 gTrainerFrontPic_OldCouple[] = INCBIN_U8("graphics/trainers/front_pics/old_couple_front_pic.4bpp.lz");
-const u8 gTrainerPalette_OldCouple[] = INCBIN_U8("graphics/trainers/palettes/old_couple.gbapal.lz");
+const u32 gTrainerFrontPic_OldCouple[] = INCBIN_U32("graphics/trainers/front_pics/old_couple_front_pic.4bpp.lz");
+const u32 gTrainerPalette_OldCouple[] = INCBIN_U32("graphics/trainers/palettes/old_couple.gbapal.lz");
-const u8 gTrainerFrontPic_SisAndBro[] = INCBIN_U8("graphics/trainers/front_pics/sis_and_bro_front_pic.4bpp.lz");
-const u8 gTrainerPalette_SisAndBro[] = INCBIN_U8("graphics/trainers/palettes/sis_and_bro.gbapal.lz");
+const u32 gTrainerFrontPic_SisAndBro[] = INCBIN_U32("graphics/trainers/front_pics/sis_and_bro_front_pic.4bpp.lz");
+const u32 gTrainerPalette_SisAndBro[] = INCBIN_U32("graphics/trainers/palettes/sis_and_bro.gbapal.lz");
-const u8 gTrainerFrontPic_Steven[] = INCBIN_U8("graphics/trainers/front_pics/steven_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Steven[] = INCBIN_U8("graphics/trainers/palettes/steven.gbapal.lz");
+const u32 gTrainerFrontPic_Steven[] = INCBIN_U32("graphics/trainers/front_pics/steven_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Steven[] = INCBIN_U32("graphics/trainers/palettes/steven.gbapal.lz");
-const u8 gTrainerFrontPic_SalonMaidenAnabel[] = INCBIN_U8("graphics/trainers/front_pics/salon_maiden_anabel_front_pic.4bpp.lz");
-const u8 gTrainerPalette_SalonMaidenAnabel[] = INCBIN_U8("graphics/trainers/palettes/salon_maiden_anabel.gbapal.lz");
+const u32 gTrainerFrontPic_SalonMaidenAnabel[] = INCBIN_U32("graphics/trainers/front_pics/salon_maiden_anabel_front_pic.4bpp.lz");
+const u32 gTrainerPalette_SalonMaidenAnabel[] = INCBIN_U32("graphics/trainers/palettes/salon_maiden_anabel.gbapal.lz");
-const u8 gTrainerFrontPic_DomeAceTucker[] = INCBIN_U8("graphics/trainers/front_pics/dome_ace_tucker_front_pic.4bpp.lz");
-const u8 gTrainerPalette_DomeAceTucker[] = INCBIN_U8("graphics/trainers/palettes/dome_ace_tucker.gbapal.lz");
+const u32 gTrainerFrontPic_DomeAceTucker[] = INCBIN_U32("graphics/trainers/front_pics/dome_ace_tucker_front_pic.4bpp.lz");
+const u32 gTrainerPalette_DomeAceTucker[] = INCBIN_U32("graphics/trainers/palettes/dome_ace_tucker.gbapal.lz");
-const u8 gTrainerFrontPic_PalaceMavenSpenser[] = INCBIN_U8("graphics/trainers/front_pics/palace_maven_spenser_front_pic.4bpp.lz");
-const u8 gTrainerPalette_PalaceMavenSpenser[] = INCBIN_U8("graphics/trainers/palettes/palace_maven_spenser.gbapal.lz");
+const u32 gTrainerFrontPic_PalaceMavenSpenser[] = INCBIN_U32("graphics/trainers/front_pics/palace_maven_spenser_front_pic.4bpp.lz");
+const u32 gTrainerPalette_PalaceMavenSpenser[] = INCBIN_U32("graphics/trainers/palettes/palace_maven_spenser.gbapal.lz");
-const u8 gTrainerFrontPic_ArenaTycoonGreta[] = INCBIN_U8("graphics/trainers/front_pics/arena_tycoon_greta_front_pic.4bpp.lz");
-const u8 gTrainerPalette_ArenaTycoonGreta[] = INCBIN_U8("graphics/trainers/palettes/arena_tycoon_greta.gbapal.lz");
+const u32 gTrainerFrontPic_ArenaTycoonGreta[] = INCBIN_U32("graphics/trainers/front_pics/arena_tycoon_greta_front_pic.4bpp.lz");
+const u32 gTrainerPalette_ArenaTycoonGreta[] = INCBIN_U32("graphics/trainers/palettes/arena_tycoon_greta.gbapal.lz");
-const u8 gTrainerFrontPic_FactoryHeadNoland[] = INCBIN_U8("graphics/trainers/front_pics/factory_head_noland_front_pic.4bpp.lz");
-const u8 gTrainerPalette_FactoryHeadNoland[] = INCBIN_U8("graphics/trainers/palettes/factory_head_noland.gbapal.lz");
+const u32 gTrainerFrontPic_FactoryHeadNoland[] = INCBIN_U32("graphics/trainers/front_pics/factory_head_noland_front_pic.4bpp.lz");
+const u32 gTrainerPalette_FactoryHeadNoland[] = INCBIN_U32("graphics/trainers/palettes/factory_head_noland.gbapal.lz");
-const u8 gTrainerFrontPic_PikeQueenLucy[] = INCBIN_U8("graphics/trainers/front_pics/pike_queen_lucy_front_pic.4bpp.lz");
-const u8 gTrainerPalette_PikeQueenLucy[] = INCBIN_U8("graphics/trainers/palettes/pike_queen_lucy.gbapal.lz");
+const u32 gTrainerFrontPic_PikeQueenLucy[] = INCBIN_U32("graphics/trainers/front_pics/pike_queen_lucy_front_pic.4bpp.lz");
+const u32 gTrainerPalette_PikeQueenLucy[] = INCBIN_U32("graphics/trainers/palettes/pike_queen_lucy.gbapal.lz");
-const u8 gTrainerFrontPic_PyramidKingBrandon[] = INCBIN_U8("graphics/trainers/front_pics/pyramid_king_brandon_front_pic.4bpp.lz");
-const u8 gTrainerPalette_PyramidKingBrandon[] = INCBIN_U8("graphics/trainers/palettes/pyramid_king_brandon.gbapal.lz");
+const u32 gTrainerFrontPic_PyramidKingBrandon[] = INCBIN_U32("graphics/trainers/front_pics/pyramid_king_brandon_front_pic.4bpp.lz");
+const u32 gTrainerPalette_PyramidKingBrandon[] = INCBIN_U32("graphics/trainers/palettes/pyramid_king_brandon.gbapal.lz");
-const u8 gTrainerFrontPic_Red[] = INCBIN_U8("graphics/trainers/front_pics/red_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Red[] = INCBIN_U8("graphics/trainers/palettes/red.gbapal.lz");
+const u32 gTrainerFrontPic_Red[] = INCBIN_U32("graphics/trainers/front_pics/red_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Red[] = INCBIN_U32("graphics/trainers/palettes/red.gbapal.lz");
-const u8 gTrainerFrontPic_Leaf[] = INCBIN_U8("graphics/trainers/front_pics/leaf_front_pic.4bpp.lz");
-const u8 gTrainerPalette_Leaf[] = INCBIN_U8("graphics/trainers/palettes/leaf.gbapal.lz");
+const u32 gTrainerFrontPic_Leaf[] = INCBIN_U32("graphics/trainers/front_pics/leaf_front_pic.4bpp.lz");
+const u32 gTrainerPalette_Leaf[] = INCBIN_U32("graphics/trainers/palettes/leaf.gbapal.lz");
-const u8 gTrainerFrontPic_RubySapphireBrendan[] = INCBIN_U8("graphics/trainers/front_pics/ruby_sapphire_brendan_front_pic.4bpp.lz");
-const u8 gTrainerPalette_RubySapphireBrendan[] = INCBIN_U8("graphics/trainers/palettes/ruby_sapphire_brendan.gbapal.lz");
+const u32 gTrainerFrontPic_RubySapphireBrendan[] = INCBIN_U32("graphics/trainers/front_pics/ruby_sapphire_brendan_front_pic.4bpp.lz");
+const u32 gTrainerPalette_RubySapphireBrendan[] = INCBIN_U32("graphics/trainers/palettes/ruby_sapphire_brendan.gbapal.lz");
-const u8 gTrainerFrontPic_RubySapphireMay[] = INCBIN_U8("graphics/trainers/front_pics/ruby_sapphire_may_front_pic.4bpp.lz");
-const u8 gTrainerPalette_RubySapphireMay[] = INCBIN_U8("graphics/trainers/palettes/ruby_sapphire_may.gbapal.lz");
+const u32 gTrainerFrontPic_RubySapphireMay[] = INCBIN_U32("graphics/trainers/front_pics/ruby_sapphire_may_front_pic.4bpp.lz");
+const u32 gTrainerPalette_RubySapphireMay[] = INCBIN_U32("graphics/trainers/palettes/ruby_sapphire_may.gbapal.lz");
const u8 gTrainerBackPic_Brendan[] = INCBIN_U8("graphics/trainers/back_pics/brendan_back_pic.4bpp");
const u8 gTrainerBackPic_May[] = INCBIN_U8("graphics/trainers/back_pics/may_back_pic.4bpp");
@@ -286,5 +286,5 @@ const u8 gTrainerBackPic_RubySapphireMay[] = INCBIN_U8("graphics/trainers/back_p
const u8 gTrainerBackPic_Wally[] = INCBIN_U8("graphics/trainers/back_pics/wally_back_pic.4bpp");
const u8 gTrainerBackPic_Steven[] = INCBIN_U8("graphics/trainers/back_pics/steven_back_pic.4bpp");
-const u8 gTrainerBackPicPalette_Red[] = INCBIN_U8("graphics/trainers/palettes/red_back_pic.gbapal.lz");
-const u8 gTrainerBackPicPalette_Leaf[] = INCBIN_U8("graphics/trainers/palettes/leaf_back_pic.gbapal.lz");
+const u32 gTrainerBackPicPalette_Red[] = INCBIN_U32("graphics/trainers/palettes/red_back_pic.gbapal.lz");
+const u32 gTrainerBackPicPalette_Leaf[] = INCBIN_U32("graphics/trainers/palettes/leaf_back_pic.gbapal.lz");
diff --git a/src/data/item_icon_table.h b/src/data/item_icon_table.h
index 0a24c0572..f55a8468e 100644
--- a/src/data/item_icon_table.h
+++ b/src/data/item_icon_table.h
@@ -1,414 +1,407 @@
-#ifndef GUARD_DATA_ITEM_ICON_TABLE_H
-#define GUARD_DATA_ITEM_ICON_TABLE_H
-
-#include "global.h"
-#include "graphics.h"
-
-const u8 * const gItemIconTable[][2] =
+const u32 *const gItemIconTable[][2] =
{
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
-// Pokeballs
- gItemIcon_MasterBall, gItemIconPalette_MasterBall,
- gItemIcon_UltraBall, gItemIconPalette_UltraBall,
- gItemIcon_GreatBall, gItemIconPalette_GreatBall,
- gItemIcon_PokeBall, gItemIconPalette_PokeBall,
- gItemIcon_SafariBall, gItemIconPalette_SafariBall,
- gItemIcon_NetBall, gItemIconPalette_NetBall,
- gItemIcon_DiveBall, gItemIconPalette_DiveBall,
- gItemIcon_NestBall, gItemIconPalette_NestBall,
- gItemIcon_RepeatBall, gItemIconPalette_RepeatBall,
- gItemIcon_TimerBall, gItemIconPalette_RepeatBall,
- gItemIcon_LuxuryBall, gItemIconPalette_LuxuryBall,
- gItemIcon_PremierBall, gItemIconPalette_LuxuryBall,
-// Medicine
- gItemIcon_Potion, gItemIconPalette_Potion,
- gItemIcon_Antidote, gItemIconPalette_Antidote,
- gItemIcon_StatusHeal, gItemIconPalette_BurnHeal,
- gItemIcon_StatusHeal, gItemIconPalette_IceHeal,
- gItemIcon_StatusHeal, gItemIconPalette_Awakening,
- gItemIcon_StatusHeal, gItemIconPalette_ParalyzeHeal,
- gItemIcon_LargePotion, gItemIconPalette_FullRestore,
- gItemIcon_LargePotion, gItemIconPalette_MaxPotion,
- gItemIcon_Potion, gItemIconPalette_HyperPotion,
- gItemIcon_Potion, gItemIconPalette_SuperPotion,
- gItemIcon_FullHeal, gItemIconPalette_FullHeal,
- gItemIcon_Revive, gItemIconPalette_Revive,
- gItemIcon_MaxRevive, gItemIconPalette_Revive,
- gItemIcon_FreshWater, gItemIconPalette_FreshWater,
- gItemIcon_SodaPop, gItemIconPalette_SodaPop,
- gItemIcon_Lemonade, gItemIconPalette_Lemonade,
- gItemIcon_MoomooMilk, gItemIconPalette_MoomooMilk,
- gItemIcon_Powder, gItemIconPalette_EnergyPowder,
- gItemIcon_EnergyRoot, gItemIconPalette_EnergyRoot,
- gItemIcon_Powder, gItemIconPalette_HealPowder,
- gItemIcon_RevivalHerb, gItemIconPalette_RevivalHerb,
- gItemIcon_Ether, gItemIconPalette_Ether,
- gItemIcon_Ether, gItemIconPalette_MaxEther,
- gItemIcon_Ether, gItemIconPalette_Elixir,
- gItemIcon_Ether, gItemIconPalette_MaxElixir,
- gItemIcon_LavaCookie, gItemIconPalette_LavaCookieAndLetter,
- gItemIcon_Flute, gItemIconPalette_BlueFlute,
- gItemIcon_Flute, gItemIconPalette_YellowFlute,
- gItemIcon_Flute, gItemIconPalette_RedFlute,
- gItemIcon_Flute, gItemIconPalette_BlackFlute,
- gItemIcon_Flute, gItemIconPalette_WhiteFlute,
- gItemIcon_BerryJuice, gItemIconPalette_BerryJuice,
- gItemIcon_SacredAsh, gItemIconPalette_SacredAsh,
-// Collectibles
- gItemIcon_Powder, gItemIconPalette_ShoalSalt,
- gItemIcon_ShoalShell, gItemIconPalette_Shell,
- gItemIcon_Shard, gItemIconPalette_RedShard,
- gItemIcon_Shard, gItemIconPalette_BlueShard,
- gItemIcon_Shard, gItemIconPalette_YellowShard,
- gItemIcon_Shard, gItemIconPalette_GreenShard,
-// ????????
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
-// Vitamins
- gItemIcon_HPUp, gItemIconPalette_HPUp,
- gItemIcon_Vitamin, gItemIconPalette_Protein,
- gItemIcon_Vitamin, gItemIconPalette_Iron,
- gItemIcon_Vitamin, gItemIconPalette_Carbos,
- gItemIcon_Vitamin, gItemIconPalette_Calcium,
- gItemIcon_RareCandy, gItemIconPalette_RareCandy,
- gItemIcon_PPUp, gItemIconPalette_PPUp,
- gItemIcon_Vitamin, gItemIconPalette_Zinc,
- gItemIcon_PPMax, gItemIconPalette_PPMax,
-// ????????
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
-// Battle items
- gItemIcon_BattleStatItem, gItemIconPalette_GuardSpec,
- gItemIcon_BattleStatItem, gItemIconPalette_DireHit,
- gItemIcon_BattleStatItem, gItemIconPalette_XAttack,
- gItemIcon_BattleStatItem, gItemIconPalette_XDefend,
- gItemIcon_BattleStatItem, gItemIconPalette_XSpeed,
- gItemIcon_BattleStatItem, gItemIconPalette_XAccuracy,
- gItemIcon_BattleStatItem, gItemIconPalette_XSpecial,
- gItemIcon_PokeDoll, gItemIconPalette_PokeDoll,
- gItemIcon_FluffyTail, gItemIconPalette_FluffyTail,
-// ????????
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
-// Field items
- gItemIcon_Repel, gItemIconPalette_SuperRepel,
- gItemIcon_Repel, gItemIconPalette_MaxRepel,
- gItemIcon_EscapeRope, gItemIconPalette_EscapeRope,
- gItemIcon_Repel, gItemIconPalette_Repel,
-// ????????
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
-// Evolution stones
- gItemIcon_SunStone, gItemIconPalette_SunStone,
- gItemIcon_MoonStone, gItemIconPalette_MoonStone,
- gItemIcon_FireStone, gItemIconPalette_FireStone,
- gItemIcon_ThunderStone, gItemIconPalette_ThunderStone,
- gItemIcon_WaterStone, gItemIconPalette_WaterStone,
- gItemIcon_LeafStone, gItemIconPalette_LeafStone,
-// ????????
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
-// Valuables
- gItemIcon_TinyMushroom, gItemIconPalette_Mushroom,
- gItemIcon_BigMushroom, gItemIconPalette_Mushroom,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_Pearl, gItemIconPalette_Pearl,
- gItemIcon_BigPearl, gItemIconPalette_Pearl,
- gItemIcon_Stardust, gItemIconPalette_Star,
- gItemIcon_StarPiece, gItemIconPalette_Star,
- gItemIcon_Nugget, gItemIconPalette_Nugget,
- gItemIcon_HeartScale, gItemIconPalette_HeartScale,
-// ????????
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
-// Mail
- gItemIcon_OrangeMail, gItemIconPalette_OrangeMail,
- gItemIcon_HarborMail, gItemIconPalette_HarborMail,
- gItemIcon_GlitterMail, gItemIconPalette_GlitterMail,
- gItemIcon_MechMail, gItemIconPalette_MechMail,
- gItemIcon_WoodMail, gItemIconPalette_WoodMail,
- gItemIcon_WaveMail, gItemIconPalette_WaveMail,
- gItemIcon_BeadMail, gItemIconPalette_BeadMail,
- gItemIcon_ShadowMail, gItemIconPalette_ShadowMail,
- gItemIcon_TropicMail, gItemIconPalette_TropicMail,
- gItemIcon_DreamMail, gItemIconPalette_DreamMail,
- gItemIcon_FabMail, gItemIconPalette_FabMail,
- gItemIcon_RetroMail, gItemIconPalette_RetroMail,
-// Berries
- gItemIcon_CheriBerry, gItemIconPalette_CheriBerry,
- gItemIcon_ChestoBerry, gItemIconPalette_ChestoBerry,
- gItemIcon_PechaBerry, gItemIconPalette_PechaBerry,
- gItemIcon_RawstBerry, gItemIconPalette_RawstBerry,
- gItemIcon_AspearBerry, gItemIconPalette_AspearBerry,
- gItemIcon_LeppaBerry, gItemIconPalette_LeppaBerry,
- gItemIcon_OranBerry, gItemIconPalette_OranBerry,
- gItemIcon_PersimBerry, gItemIconPalette_PersimBerry,
- gItemIcon_LumBerry, gItemIconPalette_LumBerry,
- gItemIcon_SitrusBerry, gItemIconPalette_SitrusBerry,
- gItemIcon_FigyBerry, gItemIconPalette_FigyBerry,
- gItemIcon_WikiBerry, gItemIconPalette_WikiBerry,
- gItemIcon_MagoBerry, gItemIconPalette_MagoBerry,
- gItemIcon_AguavBerry, gItemIconPalette_AguavBerry,
- gItemIcon_IapapaBerry, gItemIconPalette_IapapaBerry,
- gItemIcon_RazzBerry, gItemIconPalette_RazzBerry,
- gItemIcon_BlukBerry, gItemIconPalette_BlukBerry,
- gItemIcon_NanabBerry, gItemIconPalette_NanabBerry,
- gItemIcon_WepearBerry, gItemIconPalette_WepearBerry,
- gItemIcon_PinapBerry, gItemIconPalette_PinapBerry,
- gItemIcon_PomegBerry, gItemIconPalette_PomegBerry,
- gItemIcon_KelpsyBerry, gItemIconPalette_KelpsyBerry,
- gItemIcon_QualotBerry, gItemIconPalette_QualotBerry,
- gItemIcon_HondewBerry, gItemIconPalette_HondewBerry,
- gItemIcon_GrepaBerry, gItemIconPalette_GrepaBerry,
- gItemIcon_TamatoBerry, gItemIconPalette_TamatoBerry,
- gItemIcon_CornnBerry, gItemIconPalette_CornnBerry,
- gItemIcon_MagostBerry, gItemIconPalette_MagostBerry,
- gItemIcon_RabutaBerry, gItemIconPalette_RabutaBerry,
- gItemIcon_NomelBerry, gItemIconPalette_NomelBerry,
- gItemIcon_SpelonBerry, gItemIconPalette_SpelonBerry,
- gItemIcon_PamtreBerry, gItemIconPalette_PamtreBerry,
- gItemIcon_WatmelBerry, gItemIconPalette_WatmelBerry,
- gItemIcon_DurinBerry, gItemIconPalette_DurinBerry,
- gItemIcon_BelueBerry, gItemIconPalette_BelueBerry,
- gItemIcon_LiechiBerry, gItemIconPalette_LiechiBerry,
- gItemIcon_GanlonBerry, gItemIconPalette_GanlonBerry,
- gItemIcon_SalacBerry, gItemIconPalette_SalacBerry,
- gItemIcon_PetayaBerry, gItemIconPalette_PetayaBerry,
- gItemIcon_ApicotBerry, gItemIconPalette_ApicotBerry,
- gItemIcon_LansatBerry, gItemIconPalette_LansatBerry,
- gItemIcon_StarfBerry, gItemIconPalette_StarfBerry,
- gItemIcon_EnigmaBerry, gItemIconPalette_EnigmaBerry,
-// ????????
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
-// Hold items
- gItemIcon_BrightPowder, gItemIconPalette_BrightPowder,
- gItemIcon_InBattleHerb, gItemIconPalette_WhiteHerb,
- gItemIcon_MachoBrace, gItemIconPalette_MachoBrace,
- gItemIcon_ExpShare, gItemIconPalette_ExpShare,
- gItemIcon_QuickClaw, gItemIconPalette_QuickClaw,
- gItemIcon_SootheBell, gItemIconPalette_SootheBell,
- gItemIcon_InBattleHerb, gItemIconPalette_MentalHerb,
- gItemIcon_ChoiceBand, gItemIconPalette_ChoiceBand,
- gItemIcon_KingsRock, gItemIconPalette_KingsRock,
- gItemIcon_SilverPowder, gItemIconPalette_SilverPowder,
- gItemIcon_AmuletCoin, gItemIconPalette_AmuletCoin,
- gItemIcon_CleanseTag, gItemIconPalette_CleanseTag,
- gItemIcon_SoulDew, gItemIconPalette_SoulDew,
- gItemIcon_DeepSeaTooth, gItemIconPalette_DeepSeaTooth,
- gItemIcon_DeepSeaScale, gItemIconPalette_DeepSeaScale,
- gItemIcon_SmokeBall, gItemIconPalette_SmokeBall,
- gItemIcon_Everstone, gItemIconPalette_Everstone,
- gItemIcon_FocusBand, gItemIconPalette_FocusBand,
- gItemIcon_LuckyEgg, gItemIconPalette_LuckyEgg,
- gItemIcon_ScopeLens, gItemIconPalette_ScopeLens,
- gItemIcon_MetalCoat, gItemIconPalette_MetalCoat,
- gItemIcon_Leftovers, gItemIconPalette_Leftovers,
- gItemIcon_DragonScale, gItemIconPalette_DragonScale,
- gItemIcon_LightBall, gItemIconPalette_LightBall,
- gItemIcon_SoftSand, gItemIconPalette_SoftSand,
- gItemIcon_HardStone, gItemIconPalette_HardStone,
- gItemIcon_MiracleSeed, gItemIconPalette_MiracleSeed,
- gItemIcon_BlackGlasses, gItemIconPalette_BlackTypeEnhancingItem,
- gItemIcon_BlackBelt, gItemIconPalette_BlackTypeEnhancingItem,
- gItemIcon_Magnet, gItemIconPalette_Magnet,
- gItemIcon_MysticWater, gItemIconPalette_MysticWater,
- gItemIcon_SharpBeak, gItemIconPalette_SharpBeak,
- gItemIcon_PoisonBarb, gItemIconPalette_PoisonBarb,
- gItemIcon_NeverMeltIce, gItemIconPalette_NeverMeltIce,
- gItemIcon_SpellTag, gItemIconPalette_SpellTag,
- gItemIcon_TwistedSpoon, gItemIconPalette_TwistedSpoon,
- gItemIcon_Charcoal, gItemIconPalette_Charcoal,
- gItemIcon_DragonFang, gItemIconPalette_DragonFang,
- gItemIcon_SilkScarf, gItemIconPalette_SilkScarf,
- gItemIcon_UpGrade, gItemIconPalette_UpGrade,
- gItemIcon_ShellBell, gItemIconPalette_Shell,
- gItemIcon_SeaIncense, gItemIconPalette_SeaIncense,
- gItemIcon_LaxIncense, gItemIconPalette_LaxIncense,
- gItemIcon_LuckyPunch, gItemIconPalette_LuckyPunch,
- gItemIcon_MetalPowder, gItemIconPalette_MetalPowder,
- gItemIcon_ThickClub, gItemIconPalette_ThickClub,
- gItemIcon_Stick, gItemIconPalette_Stick,
-// ????????
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
-// Contest hold items
- gItemIcon_Scarf, gItemIconPalette_RedScarf,
- gItemIcon_Scarf, gItemIconPalette_BlueScarf,
- gItemIcon_Scarf, gItemIconPalette_PinkScarf,
- gItemIcon_Scarf, gItemIconPalette_GreenScarf,
- gItemIcon_Scarf, gItemIconPalette_YellowScarf,
-// Key items
- gItemIcon_MachBike, gItemIconPalette_MachBike,
- gItemIcon_CoinCase, gItemIconPalette_CoinCase,
- gItemIcon_Itemfinder, gItemIconPalette_Itemfinder,
- gItemIcon_OldRod, gItemIconPalette_OldRod,
- gItemIcon_GoodRod, gItemIconPalette_GoodRod,
- gItemIcon_SuperRod, gItemIconPalette_SuperRod,
- gItemIcon_SSTicket, gItemIconPalette_SSTicket,
- gItemIcon_ContestPass, gItemIconPalette_ContestPass,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_WailmerPail, gItemIconPalette_WailmerPail,
- gItemIcon_DevonGoods, gItemIconPalette_DevonGoods,
- gItemIcon_SootSack, gItemIconPalette_SootSack,
- gItemIcon_BasementKey, gItemIconPalette_OldKey,
- gItemIcon_AcroBike, gItemIconPalette_AcroBike,
- gItemIcon_PokeblockCase, gItemIconPalette_PokeblockCase,
- gItemIcon_Letter, gItemIconPalette_LavaCookieAndLetter,
- gItemIcon_EonTicket, gItemIconPalette_EonTicket,
- gItemIcon_Orb, gItemIconPalette_RedOrb,
- gItemIcon_Orb, gItemIconPalette_BlueOrb,
- gItemIcon_Scanner, gItemIconPalette_Scanner,
- gItemIcon_GoGoggles, gItemIconPalette_GoGoggles,
- gItemIcon_Meteorite, gItemIconPalette_Meteorite,
- gItemIcon_Room1Key, gItemIconPalette_Key,
- gItemIcon_Room2Key, gItemIconPalette_Key,
- gItemIcon_Room4Key, gItemIconPalette_Key,
- gItemIcon_Room6Key, gItemIconPalette_Key,
- gItemIcon_StorageKey, gItemIconPalette_OldKey,
- gItemIcon_RootFossil, gItemIconPalette_HoennFossil,
- gItemIcon_ClawFossil, gItemIconPalette_HoennFossil,
- gItemIcon_DevonScope, gItemIconPalette_DevonScope,
-// TMs/HMs
- gItemIcon_TM, gItemIconPalette_FightingTMHM, // TM01
- gItemIcon_TM, gItemIconPalette_DragonTMHM, // TM02
- gItemIcon_TM, gItemIconPalette_WaterTMHM, // TM03
- gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM04
- gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM05
- gItemIcon_TM, gItemIconPalette_PoisonTMHM, // TM06
- gItemIcon_TM, gItemIconPalette_IceTMHM, // TM07
- gItemIcon_TM, gItemIconPalette_FightingTMHM, // TM08
- gItemIcon_TM, gItemIconPalette_GrassTMHM, // TM09
- gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM10
- gItemIcon_TM, gItemIconPalette_FireTMHM, // TM11
- gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM12
- gItemIcon_TM, gItemIconPalette_IceTMHM, // TM13
- gItemIcon_TM, gItemIconPalette_IceTMHM, // TM14
- gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM15
- gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM16
- gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM17
- gItemIcon_TM, gItemIconPalette_WaterTMHM, // TM18
- gItemIcon_TM, gItemIconPalette_GrassTMHM, // TM19
- gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM20
- gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM21
- gItemIcon_TM, gItemIconPalette_GrassTMHM, // TM22
- gItemIcon_TM, gItemIconPalette_SteelTMHM, // TM23
- gItemIcon_TM, gItemIconPalette_ElectricTMHM, // TM24
- gItemIcon_TM, gItemIconPalette_ElectricTMHM, // TM25
- gItemIcon_TM, gItemIconPalette_GroundTMHM, // TM26
- gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM27
- gItemIcon_TM, gItemIconPalette_GroundTMHM, // TM28
- gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM29
- gItemIcon_TM, gItemIconPalette_GhostTMHM, // TM30
- gItemIcon_TM, gItemIconPalette_FightingTMHM, // TM31
- gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM32
- gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM33
- gItemIcon_TM, gItemIconPalette_ElectricTMHM, // TM34
- gItemIcon_TM, gItemIconPalette_FireTMHM, // TM35
- gItemIcon_TM, gItemIconPalette_PoisonTMHM, // TM36
- gItemIcon_TM, gItemIconPalette_RockTMHM, // TM37
- gItemIcon_TM, gItemIconPalette_FireTMHM, // TM38
- gItemIcon_TM, gItemIconPalette_RockTMHM, // TM39
- gItemIcon_TM, gItemIconPalette_FlyingTMHM, // TM40
- gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM41
- gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM42
- gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM43
- gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM44
- gItemIcon_TM, gItemIconPalette_NormalTMHM, // TM45
- gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM46
- gItemIcon_TM, gItemIconPalette_SteelTMHM, // TM47
- gItemIcon_TM, gItemIconPalette_PsychicTMHM, // TM48
- gItemIcon_TM, gItemIconPalette_DarkTMHM, // TM49
- gItemIcon_TM, gItemIconPalette_FireTMHM, // TM50
- gItemIcon_HM, gItemIconPalette_NormalTMHM, // HM01
- gItemIcon_HM, gItemIconPalette_FlyingTMHM, // HM02
- gItemIcon_HM, gItemIconPalette_WaterTMHM, // HM03
- gItemIcon_HM, gItemIconPalette_NormalTMHM, // HM04
- gItemIcon_HM, gItemIconPalette_NormalTMHM, // HM05
- gItemIcon_HM, gItemIconPalette_FightingTMHM, // HM06
- gItemIcon_HM, gItemIconPalette_WaterTMHM, // HM07
- gItemIcon_HM, gItemIconPalette_WaterTMHM, // HM08
-// ????????
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
- gItemIcon_QuestionMark, gItemIconPalette_QuestionMark,
-// FireRed/LeafGreen key items
- gItemIcon_OaksParcel, gItemIconPalette_OaksParcel,
- gItemIcon_PokeFlute, gItemIconPalette_PokeFlute,
- gItemIcon_SecretKey, gItemIconPalette_SecretKey,
- gItemIcon_BikeVoucher, gItemIconPalette_BikeVoucher,
- gItemIcon_GoldTeeth, gItemIconPalette_GoldTeeth,
- gItemIcon_OldAmber, gItemIconPalette_OldAmber,
- gItemIcon_CardKey, gItemIconPalette_CardKey,
- gItemIcon_LiftKey, gItemIconPalette_Key,
- gItemIcon_HelixFossil, gItemIconPalette_KantoFossil,
- gItemIcon_DomeFossil, gItemIconPalette_KantoFossil,
- gItemIcon_SilphScope, gItemIconPalette_SilphScope,
- gItemIcon_Bicycle, gItemIconPalette_Bicycle,
- gItemIcon_TownMap, gItemIconPalette_TownMap,
- gItemIcon_VSSeeker, gItemIconPalette_VSSeeker,
- gItemIcon_FameChecker, gItemIconPalette_FameChecker,
- gItemIcon_TMCase, gItemIconPalette_TMCase,
- gItemIcon_BerryPouch, gItemIconPalette_BerryPouch,
- gItemIcon_TeachyTV, gItemIconPalette_TeachyTV,
- gItemIcon_TriPass, gItemIconPalette_TriPass,
- gItemIcon_RainbowPass, gItemIconPalette_RainbowPass,
- gItemIcon_Tea, gItemIconPalette_Tea,
- gItemIcon_MysticTicket, gItemIconPalette_MysticTicket,
- gItemIcon_AuroraTicket, gItemIconPalette_AuroraTicket,
- gItemIcon_PowderJar, gItemIconPalette_PowderJar,
- gItemIcon_Gem, gItemIconPalette_Ruby,
- gItemIcon_Gem, gItemIconPalette_Sapphire,
-// Emerald-only key items
- gItemIcon_MagmaEmblem, gItemIconPalette_MagmaEmblem,
- gItemIcon_OldSeaMap, gItemIconPalette_OldSeaMap,
-// Return to field arrow
- gItemIcon_ReturnToFieldArrow, gItemIconPalette_ReturnToFieldArrow,
+ [ITEM_NONE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ // Pokeballs
+ [ITEM_MASTER_BALL] = {gItemIcon_MasterBall, gItemIconPalette_MasterBall},
+ [ITEM_ULTRA_BALL] = {gItemIcon_UltraBall, gItemIconPalette_UltraBall},
+ [ITEM_GREAT_BALL] = {gItemIcon_GreatBall, gItemIconPalette_GreatBall},
+ [ITEM_POKE_BALL] = {gItemIcon_PokeBall, gItemIconPalette_PokeBall},
+ [ITEM_SAFARI_BALL] = {gItemIcon_SafariBall, gItemIconPalette_SafariBall},
+ [ITEM_NET_BALL] = {gItemIcon_NetBall, gItemIconPalette_NetBall},
+ [ITEM_DIVE_BALL] = {gItemIcon_DiveBall, gItemIconPalette_DiveBall},
+ [ITEM_NEST_BALL] = {gItemIcon_NestBall, gItemIconPalette_NestBall},
+ [ITEM_REPEAT_BALL] = {gItemIcon_RepeatBall, gItemIconPalette_RepeatBall},
+ [ITEM_TIMER_BALL] = {gItemIcon_TimerBall, gItemIconPalette_RepeatBall},
+ [ITEM_LUXURY_BALL] = {gItemIcon_LuxuryBall, gItemIconPalette_LuxuryBall},
+ [ITEM_PREMIER_BALL] = {gItemIcon_PremierBall, gItemIconPalette_LuxuryBall},
+ // Medicine
+ [ITEM_POTION] = {gItemIcon_Potion, gItemIconPalette_Potion},
+ [ITEM_ANTIDOTE] = {gItemIcon_Antidote, gItemIconPalette_Antidote},
+ [ITEM_BURN_HEAL] = {gItemIcon_StatusHeal, gItemIconPalette_BurnHeal},
+ [ITEM_ICE_HEAL] = {gItemIcon_StatusHeal, gItemIconPalette_IceHeal},
+ [ITEM_AWAKENING] = {gItemIcon_StatusHeal, gItemIconPalette_Awakening},
+ [ITEM_PARALYZE_HEAL] = {gItemIcon_StatusHeal, gItemIconPalette_ParalyzeHeal},
+ [ITEM_FULL_RESTORE] = {gItemIcon_LargePotion, gItemIconPalette_FullRestore},
+ [ITEM_MAX_POTION] = {gItemIcon_LargePotion, gItemIconPalette_MaxPotion},
+ [ITEM_HYPER_POTION] = {gItemIcon_Potion, gItemIconPalette_HyperPotion},
+ [ITEM_SUPER_POTION] = {gItemIcon_Potion, gItemIconPalette_SuperPotion},
+ [ITEM_FULL_HEAL] = {gItemIcon_FullHeal, gItemIconPalette_FullHeal},
+ [ITEM_REVIVE] = {gItemIcon_Revive, gItemIconPalette_Revive},
+ [ITEM_MAX_REVIVE] = {gItemIcon_MaxRevive, gItemIconPalette_Revive},
+ [ITEM_FRESH_WATER] = {gItemIcon_FreshWater, gItemIconPalette_FreshWater},
+ [ITEM_SODA_POP] = {gItemIcon_SodaPop, gItemIconPalette_SodaPop},
+ [ITEM_LEMONADE] = {gItemIcon_Lemonade, gItemIconPalette_Lemonade},
+ [ITEM_MOOMOO_MILK] = {gItemIcon_MoomooMilk, gItemIconPalette_MoomooMilk},
+ [ITEM_ENERGY_POWDER] = {gItemIcon_Powder, gItemIconPalette_EnergyPowder},
+ [ITEM_ENERGY_ROOT] = {gItemIcon_EnergyRoot, gItemIconPalette_EnergyRoot},
+ [ITEM_HEAL_POWDER] = {gItemIcon_Powder, gItemIconPalette_HealPowder},
+ [ITEM_REVIVAL_HERB] = {gItemIcon_RevivalHerb, gItemIconPalette_RevivalHerb},
+ [ITEM_ETHER] = {gItemIcon_Ether, gItemIconPalette_Ether},
+ [ITEM_MAX_ETHER] = {gItemIcon_Ether, gItemIconPalette_MaxEther},
+ [ITEM_ELIXIR] = {gItemIcon_Ether, gItemIconPalette_Elixir},
+ [ITEM_MAX_ELIXIR] = {gItemIcon_Ether, gItemIconPalette_MaxElixir},
+ [ITEM_LAVA_COOKIE] = {gItemIcon_LavaCookie, gItemIconPalette_LavaCookieAndLetter},
+ [ITEM_BLUE_FLUTE] = {gItemIcon_Flute, gItemIconPalette_BlueFlute},
+ [ITEM_YELLOW_FLUTE] = {gItemIcon_Flute, gItemIconPalette_YellowFlute},
+ [ITEM_RED_FLUTE] = {gItemIcon_Flute, gItemIconPalette_RedFlute},
+ [ITEM_BLACK_FLUTE] = {gItemIcon_Flute, gItemIconPalette_BlackFlute},
+ [ITEM_WHITE_FLUTE] = {gItemIcon_Flute, gItemIconPalette_WhiteFlute},
+ [ITEM_BERRY_JUICE] = {gItemIcon_BerryJuice, gItemIconPalette_BerryJuice},
+ [ITEM_SACRED_ASH] = {gItemIcon_SacredAsh, gItemIconPalette_SacredAsh},
+ // Collectibles
+ [ITEM_SHOAL_SALT] = {gItemIcon_Powder, gItemIconPalette_ShoalSalt},
+ [ITEM_SHOAL_SHELL] = {gItemIcon_ShoalShell, gItemIconPalette_Shell},
+ [ITEM_RED_SHARD] = {gItemIcon_Shard, gItemIconPalette_RedShard},
+ [ITEM_BLUE_SHARD] = {gItemIcon_Shard, gItemIconPalette_BlueShard},
+ [ITEM_YELLOW_SHARD] = {gItemIcon_Shard, gItemIconPalette_YellowShard},
+ [ITEM_GREEN_SHARD] = {gItemIcon_Shard, gItemIconPalette_GreenShard},
+ // ????????
+ [ITEM_034] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_035] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_036] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_037] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_038] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_039] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_03A] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_03B] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_03C] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_03D] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_03E] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ // Vitamins
+ [ITEM_HP_UP] = {gItemIcon_HPUp, gItemIconPalette_HPUp},
+ [ITEM_PROTEIN] = {gItemIcon_Vitamin, gItemIconPalette_Protein},
+ [ITEM_IRON] = {gItemIcon_Vitamin, gItemIconPalette_Iron},
+ [ITEM_CARBOS] = {gItemIcon_Vitamin, gItemIconPalette_Carbos},
+ [ITEM_CALCIUM] = {gItemIcon_Vitamin, gItemIconPalette_Calcium},
+ [ITEM_RARE_CANDY] = {gItemIcon_RareCandy, gItemIconPalette_RareCandy},
+ [ITEM_PP_UP] = {gItemIcon_PPUp, gItemIconPalette_PPUp},
+ [ITEM_ZINC] = {gItemIcon_Vitamin, gItemIconPalette_Zinc},
+ [ITEM_PP_MAX] = {gItemIcon_PPMax, gItemIconPalette_PPMax},
+ // ????????
+ [ITEM_048] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ // Battle items
+ [ITEM_GUARD_SPEC] = {gItemIcon_BattleStatItem, gItemIconPalette_GuardSpec},
+ [ITEM_DIRE_HIT] = {gItemIcon_BattleStatItem, gItemIconPalette_DireHit},
+ [ITEM_X_ATTACK] = {gItemIcon_BattleStatItem, gItemIconPalette_XAttack},
+ [ITEM_X_DEFEND] = {gItemIcon_BattleStatItem, gItemIconPalette_XDefend},
+ [ITEM_X_SPEED] = {gItemIcon_BattleStatItem, gItemIconPalette_XSpeed},
+ [ITEM_X_ACCURACY] = {gItemIcon_BattleStatItem, gItemIconPalette_XAccuracy},
+ [ITEM_X_SPECIAL] = {gItemIcon_BattleStatItem, gItemIconPalette_XSpecial},
+ [ITEM_POKE_DOLL] = {gItemIcon_PokeDoll, gItemIconPalette_PokeDoll},
+ [ITEM_FLUFFY_TAIL] = {gItemIcon_FluffyTail, gItemIconPalette_FluffyTail},
+ // ????????
+ [ITEM_052] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ // Field items
+ [ITEM_SUPER_REPEL] = {gItemIcon_Repel, gItemIconPalette_SuperRepel},
+ [ITEM_MAX_REPEL] = {gItemIcon_Repel, gItemIconPalette_MaxRepel},
+ [ITEM_ESCAPE_ROPE] = {gItemIcon_EscapeRope, gItemIconPalette_EscapeRope},
+ [ITEM_REPEL] = {gItemIcon_Repel, gItemIconPalette_Repel},
+ // ????????
+ [ITEM_057] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_058] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_059] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_05A] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_05B] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_05C] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ // Evolution stones
+ [ITEM_SUN_STONE] = {gItemIcon_SunStone, gItemIconPalette_SunStone},
+ [ITEM_MOON_STONE] = {gItemIcon_MoonStone, gItemIconPalette_MoonStone},
+ [ITEM_FIRE_STONE] = {gItemIcon_FireStone, gItemIconPalette_FireStone},
+ [ITEM_THUNDER_STONE] = {gItemIcon_ThunderStone, gItemIconPalette_ThunderStone},
+ [ITEM_WATER_STONE] = {gItemIcon_WaterStone, gItemIconPalette_WaterStone},
+ [ITEM_LEAF_STONE] = {gItemIcon_LeafStone, gItemIconPalette_LeafStone},
+ // ????????
+ [ITEM_063] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_064] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_065] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_066] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ // Valuables
+ [ITEM_TINY_MUSHROOM] = {gItemIcon_TinyMushroom, gItemIconPalette_Mushroom},
+ [ITEM_BIG_MUSHROOM] = {gItemIcon_BigMushroom, gItemIconPalette_Mushroom},
+ [ITEM_069] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_PEARL] = {gItemIcon_Pearl, gItemIconPalette_Pearl},
+ [ITEM_BIG_PEARL] = {gItemIcon_BigPearl, gItemIconPalette_Pearl},
+ [ITEM_STARDUST] = {gItemIcon_Stardust, gItemIconPalette_Star},
+ [ITEM_STAR_PIECE] = {gItemIcon_StarPiece, gItemIconPalette_Star},
+ [ITEM_NUGGET] = {gItemIcon_Nugget, gItemIconPalette_Nugget},
+ [ITEM_HEART_SCALE] = {gItemIcon_HeartScale, gItemIconPalette_HeartScale},
+ // ????????
+ [ITEM_070] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_071] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_072] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_073] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_074] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_075] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_076] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_077] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_078] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ // Mail
+ [ITEM_ORANGE_MAIL] = {gItemIcon_OrangeMail, gItemIconPalette_OrangeMail},
+ [ITEM_HARBOR_MAIL] = {gItemIcon_HarborMail, gItemIconPalette_HarborMail},
+ [ITEM_GLITTER_MAIL] = {gItemIcon_GlitterMail, gItemIconPalette_GlitterMail},
+ [ITEM_MECH_MAIL] = {gItemIcon_MechMail, gItemIconPalette_MechMail},
+ [ITEM_WOOD_MAIL] = {gItemIcon_WoodMail, gItemIconPalette_WoodMail},
+ [ITEM_WAVE_MAIL] = {gItemIcon_WaveMail, gItemIconPalette_WaveMail},
+ [ITEM_BEAD_MAIL] = {gItemIcon_BeadMail, gItemIconPalette_BeadMail},
+ [ITEM_SHADOW_MAIL] = {gItemIcon_ShadowMail, gItemIconPalette_ShadowMail},
+ [ITEM_TROPIC_MAIL] = {gItemIcon_TropicMail, gItemIconPalette_TropicMail},
+ [ITEM_DREAM_MAIL] = {gItemIcon_DreamMail, gItemIconPalette_DreamMail},
+ [ITEM_FAB_MAIL] = {gItemIcon_FabMail, gItemIconPalette_FabMail},
+ [ITEM_RETRO_MAIL] = {gItemIcon_RetroMail, gItemIconPalette_RetroMail},
+ // Berries
+ [ITEM_CHERI_BERRY] = {gItemIcon_CheriBerry, gItemIconPalette_CheriBerry},
+ [ITEM_CHESTO_BERRY] = {gItemIcon_ChestoBerry, gItemIconPalette_ChestoBerry},
+ [ITEM_PECHA_BERRY] = {gItemIcon_PechaBerry, gItemIconPalette_PechaBerry},
+ [ITEM_RAWST_BERRY] = {gItemIcon_RawstBerry, gItemIconPalette_RawstBerry},
+ [ITEM_ASPEAR_BERRY] = {gItemIcon_AspearBerry, gItemIconPalette_AspearBerry},
+ [ITEM_LEPPA_BERRY] = {gItemIcon_LeppaBerry, gItemIconPalette_LeppaBerry},
+ [ITEM_ORAN_BERRY] = {gItemIcon_OranBerry, gItemIconPalette_OranBerry},
+ [ITEM_PERSIM_BERRY] = {gItemIcon_PersimBerry, gItemIconPalette_PersimBerry},
+ [ITEM_LUM_BERRY] = {gItemIcon_LumBerry, gItemIconPalette_LumBerry},
+ [ITEM_SITRUS_BERRY] = {gItemIcon_SitrusBerry, gItemIconPalette_SitrusBerry},
+ [ITEM_FIGY_BERRY] = {gItemIcon_FigyBerry, gItemIconPalette_FigyBerry},
+ [ITEM_WIKI_BERRY] = {gItemIcon_WikiBerry, gItemIconPalette_WikiBerry},
+ [ITEM_MAGO_BERRY] = {gItemIcon_MagoBerry, gItemIconPalette_MagoBerry},
+ [ITEM_AGUAV_BERRY] = {gItemIcon_AguavBerry, gItemIconPalette_AguavBerry},
+ [ITEM_IAPAPA_BERRY] = {gItemIcon_IapapaBerry, gItemIconPalette_IapapaBerry},
+ [ITEM_RAZZ_BERRY] = {gItemIcon_RazzBerry, gItemIconPalette_RazzBerry},
+ [ITEM_BLUK_BERRY] = {gItemIcon_BlukBerry, gItemIconPalette_BlukBerry},
+ [ITEM_NANAB_BERRY] = {gItemIcon_NanabBerry, gItemIconPalette_NanabBerry},
+ [ITEM_WEPEAR_BERRY] = {gItemIcon_WepearBerry, gItemIconPalette_WepearBerry},
+ [ITEM_PINAP_BERRY] = {gItemIcon_PinapBerry, gItemIconPalette_PinapBerry},
+ [ITEM_POMEG_BERRY] = {gItemIcon_PomegBerry, gItemIconPalette_PomegBerry},
+ [ITEM_KELPSY_BERRY] = {gItemIcon_KelpsyBerry, gItemIconPalette_KelpsyBerry},
+ [ITEM_QUALOT_BERRY] = {gItemIcon_QualotBerry, gItemIconPalette_QualotBerry},
+ [ITEM_HONDEW_BERRY] = {gItemIcon_HondewBerry, gItemIconPalette_HondewBerry},
+ [ITEM_GREPA_BERRY] = {gItemIcon_GrepaBerry, gItemIconPalette_GrepaBerry},
+ [ITEM_TAMATO_BERRY] = {gItemIcon_TamatoBerry, gItemIconPalette_TamatoBerry},
+ [ITEM_CORNN_BERRY] = {gItemIcon_CornnBerry, gItemIconPalette_CornnBerry},
+ [ITEM_MAGOST_BERRY] = {gItemIcon_MagostBerry, gItemIconPalette_MagostBerry},
+ [ITEM_RABUTA_BERRY] = {gItemIcon_RabutaBerry, gItemIconPalette_RabutaBerry},
+ [ITEM_NOMEL_BERRY] = {gItemIcon_NomelBerry, gItemIconPalette_NomelBerry},
+ [ITEM_SPELON_BERRY] = {gItemIcon_SpelonBerry, gItemIconPalette_SpelonBerry},
+ [ITEM_PAMTRE_BERRY] = {gItemIcon_PamtreBerry, gItemIconPalette_PamtreBerry},
+ [ITEM_WATMEL_BERRY] = {gItemIcon_WatmelBerry, gItemIconPalette_WatmelBerry},
+ [ITEM_DURIN_BERRY] = {gItemIcon_DurinBerry, gItemIconPalette_DurinBerry},
+ [ITEM_BELUE_BERRY] = {gItemIcon_BelueBerry, gItemIconPalette_BelueBerry},
+ [ITEM_LIECHI_BERRY] = {gItemIcon_LiechiBerry, gItemIconPalette_LiechiBerry},
+ [ITEM_GANLON_BERRY] = {gItemIcon_GanlonBerry, gItemIconPalette_GanlonBerry},
+ [ITEM_SALAC_BERRY] = {gItemIcon_SalacBerry, gItemIconPalette_SalacBerry},
+ [ITEM_PETAYA_BERRY] = {gItemIcon_PetayaBerry, gItemIconPalette_PetayaBerry},
+ [ITEM_APICOT_BERRY] = {gItemIcon_ApicotBerry, gItemIconPalette_ApicotBerry},
+ [ITEM_LANSAT_BERRY] = {gItemIcon_LansatBerry, gItemIconPalette_LansatBerry},
+ [ITEM_STARF_BERRY] = {gItemIcon_StarfBerry, gItemIconPalette_StarfBerry},
+ [ITEM_ENIGMA_BERRY] = {gItemIcon_EnigmaBerry, gItemIconPalette_EnigmaBerry},
+ // ????????
+ [ITEM_0B0] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0B1] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0B2] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ // Hold items
+ [ITEM_BRIGHT_POWDER] = {gItemIcon_BrightPowder, gItemIconPalette_BrightPowder},
+ [ITEM_WHITE_HERB] = {gItemIcon_InBattleHerb, gItemIconPalette_WhiteHerb},
+ [ITEM_MACHO_BRACE] = {gItemIcon_MachoBrace, gItemIconPalette_MachoBrace},
+ [ITEM_EXP_SHARE] = {gItemIcon_ExpShare, gItemIconPalette_ExpShare},
+ [ITEM_QUICK_CLAW] = {gItemIcon_QuickClaw, gItemIconPalette_QuickClaw},
+ [ITEM_SOOTHE_BELL] = {gItemIcon_SootheBell, gItemIconPalette_SootheBell},
+ [ITEM_MENTAL_HERB] = {gItemIcon_InBattleHerb, gItemIconPalette_MentalHerb},
+ [ITEM_CHOICE_BAND] = {gItemIcon_ChoiceBand, gItemIconPalette_ChoiceBand},
+ [ITEM_KINGS_ROCK] = {gItemIcon_KingsRock, gItemIconPalette_KingsRock},
+ [ITEM_SILVER_POWDER] = {gItemIcon_SilverPowder, gItemIconPalette_SilverPowder},
+ [ITEM_AMULET_COIN] = {gItemIcon_AmuletCoin, gItemIconPalette_AmuletCoin},
+ [ITEM_CLEANSE_TAG] = {gItemIcon_CleanseTag, gItemIconPalette_CleanseTag},
+ [ITEM_SOUL_DEW] = {gItemIcon_SoulDew, gItemIconPalette_SoulDew},
+ [ITEM_DEEP_SEA_TOOTH] = {gItemIcon_DeepSeaTooth, gItemIconPalette_DeepSeaTooth},
+ [ITEM_DEEP_SEA_SCALE] = {gItemIcon_DeepSeaScale, gItemIconPalette_DeepSeaScale},
+ [ITEM_SMOKE_BALL] = {gItemIcon_SmokeBall, gItemIconPalette_SmokeBall},
+ [ITEM_EVERSTONE] = {gItemIcon_Everstone, gItemIconPalette_Everstone},
+ [ITEM_FOCUS_BAND] = {gItemIcon_FocusBand, gItemIconPalette_FocusBand},
+ [ITEM_LUCKY_EGG] = {gItemIcon_LuckyEgg, gItemIconPalette_LuckyEgg},
+ [ITEM_SCOPE_LENS] = {gItemIcon_ScopeLens, gItemIconPalette_ScopeLens},
+ [ITEM_METAL_COAT] = {gItemIcon_MetalCoat, gItemIconPalette_MetalCoat},
+ [ITEM_LEFTOVERS] = {gItemIcon_Leftovers, gItemIconPalette_Leftovers},
+ [ITEM_DRAGON_SCALE] = {gItemIcon_DragonScale, gItemIconPalette_DragonScale},
+ [ITEM_LIGHT_BALL] = {gItemIcon_LightBall, gItemIconPalette_LightBall},
+ [ITEM_SOFT_SAND] = {gItemIcon_SoftSand, gItemIconPalette_SoftSand},
+ [ITEM_HARD_STONE] = {gItemIcon_HardStone, gItemIconPalette_HardStone},
+ [ITEM_MIRACLE_SEED] = {gItemIcon_MiracleSeed, gItemIconPalette_MiracleSeed},
+ [ITEM_BLACK_GLASSES] = {gItemIcon_BlackGlasses, gItemIconPalette_BlackTypeEnhancingItem},
+ [ITEM_BLACK_BELT] = {gItemIcon_BlackBelt, gItemIconPalette_BlackTypeEnhancingItem},
+ [ITEM_MAGNET] = {gItemIcon_Magnet, gItemIconPalette_Magnet},
+ [ITEM_MYSTIC_WATER] = {gItemIcon_MysticWater, gItemIconPalette_MysticWater},
+ [ITEM_SHARP_BEAK] = {gItemIcon_SharpBeak, gItemIconPalette_SharpBeak},
+ [ITEM_POISON_BARB] = {gItemIcon_PoisonBarb, gItemIconPalette_PoisonBarb},
+ [ITEM_NEVER_MELT_ICE] = {gItemIcon_NeverMeltIce, gItemIconPalette_NeverMeltIce},
+ [ITEM_SPELL_TAG] = {gItemIcon_SpellTag, gItemIconPalette_SpellTag},
+ [ITEM_TWISTED_SPOON] = {gItemIcon_TwistedSpoon, gItemIconPalette_TwistedSpoon},
+ [ITEM_CHARCOAL] = {gItemIcon_Charcoal, gItemIconPalette_Charcoal},
+ [ITEM_DRAGON_FANG] = {gItemIcon_DragonFang, gItemIconPalette_DragonFang},
+ [ITEM_SILK_SCARF] = {gItemIcon_SilkScarf, gItemIconPalette_SilkScarf},
+ [ITEM_UP_GRADE] = {gItemIcon_UpGrade, gItemIconPalette_UpGrade},
+ [ITEM_SHELL_BELL] = {gItemIcon_ShellBell, gItemIconPalette_Shell},
+ [ITEM_SEA_INCENSE] = {gItemIcon_SeaIncense, gItemIconPalette_SeaIncense},
+ [ITEM_LAX_INCENSE] = {gItemIcon_LaxIncense, gItemIconPalette_LaxIncense},
+ [ITEM_LUCKY_PUNCH] = {gItemIcon_LuckyPunch, gItemIconPalette_LuckyPunch},
+ [ITEM_METAL_POWDER] = {gItemIcon_MetalPowder, gItemIconPalette_MetalPowder},
+ [ITEM_THICK_CLUB] = {gItemIcon_ThickClub, gItemIconPalette_ThickClub},
+ [ITEM_STICK] = {gItemIcon_Stick, gItemIconPalette_Stick},
+ // ????????
+ [ITEM_0E2] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0E3] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0E4] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0E5] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0E6] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0E7] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0E8] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0E9] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0EA] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0EB] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0EC] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0ED] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0EE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0EF] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0F0] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0F1] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0F2] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0F3] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0F4] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0F5] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0F6] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0F7] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0F8] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0F9] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0FA] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0FB] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0FC] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_0FD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ // Contest hold items
+ [ITEM_RED_SCARF] = {gItemIcon_Scarf, gItemIconPalette_RedScarf},
+ [ITEM_BLUE_SCARF] = {gItemIcon_Scarf, gItemIconPalette_BlueScarf},
+ [ITEM_PINK_SCARF] = {gItemIcon_Scarf, gItemIconPalette_PinkScarf},
+ [ITEM_GREEN_SCARF] = {gItemIcon_Scarf, gItemIconPalette_GreenScarf},
+ [ITEM_YELLOW_SCARF] = {gItemIcon_Scarf, gItemIconPalette_YellowScarf},
+ // Key items
+ [ITEM_MACH_BIKE] = {gItemIcon_MachBike, gItemIconPalette_MachBike},
+ [ITEM_COIN_CASE] = {gItemIcon_CoinCase, gItemIconPalette_CoinCase},
+ [ITEM_ITEMFINDER] = {gItemIcon_Itemfinder, gItemIconPalette_Itemfinder},
+ [ITEM_OLD_ROD] = {gItemIcon_OldRod, gItemIconPalette_OldRod},
+ [ITEM_GOOD_ROD] = {gItemIcon_GoodRod, gItemIconPalette_GoodRod},
+ [ITEM_SUPER_ROD] = {gItemIcon_SuperRod, gItemIconPalette_SuperRod},
+ [ITEM_SS_TICKET] = {gItemIcon_SSTicket, gItemIconPalette_SSTicket},
+ [ITEM_CONTEST_PASS] = {gItemIcon_ContestPass, gItemIconPalette_ContestPass},
+ [ITEM_10B] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_WAILMER_PAIL] = {gItemIcon_WailmerPail, gItemIconPalette_WailmerPail},
+ [ITEM_DEVON_GOODS] = {gItemIcon_DevonGoods, gItemIconPalette_DevonGoods},
+ [ITEM_SOOT_SACK] = {gItemIcon_SootSack, gItemIconPalette_SootSack},
+ [ITEM_BASEMENT_KEY] = {gItemIcon_BasementKey, gItemIconPalette_OldKey},
+ [ITEM_ACRO_BIKE] = {gItemIcon_AcroBike, gItemIconPalette_AcroBike},
+ [ITEM_POKEBLOCK_CASE] = {gItemIcon_PokeblockCase, gItemIconPalette_PokeblockCase},
+ [ITEM_LETTER] = {gItemIcon_Letter, gItemIconPalette_LavaCookieAndLetter},
+ [ITEM_EON_TICKET] = {gItemIcon_EonTicket, gItemIconPalette_EonTicket},
+ [ITEM_RED_ORB] = {gItemIcon_Orb, gItemIconPalette_RedOrb},
+ [ITEM_BLUE_ORB] = {gItemIcon_Orb, gItemIconPalette_BlueOrb},
+ [ITEM_SCANNER] = {gItemIcon_Scanner, gItemIconPalette_Scanner},
+ [ITEM_GO_GOGGLES] = {gItemIcon_GoGoggles, gItemIconPalette_GoGoggles},
+ [ITEM_METEORITE] = {gItemIcon_Meteorite, gItemIconPalette_Meteorite},
+ [ITEM_ROOM_1_KEY] = {gItemIcon_Room1Key, gItemIconPalette_Key},
+ [ITEM_ROOM_2_KEY] = {gItemIcon_Room2Key, gItemIconPalette_Key},
+ [ITEM_ROOM_4_KEY] = {gItemIcon_Room4Key, gItemIconPalette_Key},
+ [ITEM_ROOM_6_KEY] = {gItemIcon_Room6Key, gItemIconPalette_Key},
+ [ITEM_STORAGE_KEY] = {gItemIcon_StorageKey, gItemIconPalette_OldKey},
+ [ITEM_ROOT_FOSSIL] = {gItemIcon_RootFossil, gItemIconPalette_HoennFossil},
+ [ITEM_CLAW_FOSSIL] = {gItemIcon_ClawFossil, gItemIconPalette_HoennFossil},
+ [ITEM_DEVON_SCOPE] = {gItemIcon_DevonScope, gItemIconPalette_DevonScope},
+ // TMs / HMs
+ [ITEM_TM01] = {gItemIcon_TM, gItemIconPalette_FightingTMHM}, // TM01
+ [ITEM_TM02] = {gItemIcon_TM, gItemIconPalette_DragonTMHM}, // TM02
+ [ITEM_TM03] = {gItemIcon_TM, gItemIconPalette_WaterTMHM}, // TM03
+ [ITEM_TM04] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, // TM04
+ [ITEM_TM05] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // TM05
+ [ITEM_TM06] = {gItemIcon_TM, gItemIconPalette_PoisonTMHM}, // TM06
+ [ITEM_TM07] = {gItemIcon_TM, gItemIconPalette_IceTMHM}, // TM07
+ [ITEM_TM08] = {gItemIcon_TM, gItemIconPalette_FightingTMHM}, // TM08
+ [ITEM_TM09] = {gItemIcon_TM, gItemIconPalette_GrassTMHM}, // TM09
+ [ITEM_TM10] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // TM10
+ [ITEM_TM11] = {gItemIcon_TM, gItemIconPalette_FireTMHM}, // TM11
+ [ITEM_TM12] = {gItemIcon_TM, gItemIconPalette_DarkTMHM}, // TM12
+ [ITEM_TM13] = {gItemIcon_TM, gItemIconPalette_IceTMHM}, // TM13
+ [ITEM_TM14] = {gItemIcon_TM, gItemIconPalette_IceTMHM}, // TM14
+ [ITEM_TM15] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // TM15
+ [ITEM_TM16] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, // TM16
+ [ITEM_TM17] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // TM17
+ [ITEM_TM18] = {gItemIcon_TM, gItemIconPalette_WaterTMHM}, // TM18
+ [ITEM_TM19] = {gItemIcon_TM, gItemIconPalette_GrassTMHM}, // TM19
+ [ITEM_TM20] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // TM20
+ [ITEM_TM21] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // TM21
+ [ITEM_TM22] = {gItemIcon_TM, gItemIconPalette_GrassTMHM}, // TM22
+ [ITEM_TM23] = {gItemIcon_TM, gItemIconPalette_SteelTMHM}, // TM23
+ [ITEM_TM24] = {gItemIcon_TM, gItemIconPalette_ElectricTMHM}, // TM24
+ [ITEM_TM25] = {gItemIcon_TM, gItemIconPalette_ElectricTMHM}, // TM25
+ [ITEM_TM26] = {gItemIcon_TM, gItemIconPalette_GroundTMHM}, // TM26
+ [ITEM_TM27] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // TM27
+ [ITEM_TM28] = {gItemIcon_TM, gItemIconPalette_GroundTMHM}, // TM28
+ [ITEM_TM29] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, // TM29
+ [ITEM_TM30] = {gItemIcon_TM, gItemIconPalette_GhostTMHM}, // TM30
+ [ITEM_TM31] = {gItemIcon_TM, gItemIconPalette_FightingTMHM}, // TM31
+ [ITEM_TM32] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // TM32
+ [ITEM_TM33] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, // TM33
+ [ITEM_TM34] = {gItemIcon_TM, gItemIconPalette_ElectricTMHM}, // TM34
+ [ITEM_TM35] = {gItemIcon_TM, gItemIconPalette_FireTMHM}, // TM35
+ [ITEM_TM36] = {gItemIcon_TM, gItemIconPalette_PoisonTMHM}, // TM36
+ [ITEM_TM37] = {gItemIcon_TM, gItemIconPalette_RockTMHM}, // TM37
+ [ITEM_TM38] = {gItemIcon_TM, gItemIconPalette_FireTMHM}, // TM38
+ [ITEM_TM39] = {gItemIcon_TM, gItemIconPalette_RockTMHM}, // TM39
+ [ITEM_TM40] = {gItemIcon_TM, gItemIconPalette_FlyingTMHM}, // TM40
+ [ITEM_TM41] = {gItemIcon_TM, gItemIconPalette_DarkTMHM}, // TM41
+ [ITEM_TM42] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // TM42
+ [ITEM_TM43] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // TM43
+ [ITEM_TM44] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, // TM44
+ [ITEM_TM45] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // TM45
+ [ITEM_TM46] = {gItemIcon_TM, gItemIconPalette_DarkTMHM}, // TM46
+ [ITEM_TM47] = {gItemIcon_TM, gItemIconPalette_SteelTMHM}, // TM47
+ [ITEM_TM48] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, // TM48
+ [ITEM_TM49] = {gItemIcon_TM, gItemIconPalette_DarkTMHM}, // TM49
+ [ITEM_TM50] = {gItemIcon_TM, gItemIconPalette_FireTMHM}, // TM50
+ [ITEM_HM01] = {gItemIcon_HM, gItemIconPalette_NormalTMHM}, // HM01
+ [ITEM_HM02] = {gItemIcon_HM, gItemIconPalette_FlyingTMHM}, // HM02
+ [ITEM_HM03] = {gItemIcon_HM, gItemIconPalette_WaterTMHM}, // HM03
+ [ITEM_HM04] = {gItemIcon_HM, gItemIconPalette_NormalTMHM}, // HM04
+ [ITEM_HM05] = {gItemIcon_HM, gItemIconPalette_NormalTMHM}, // HM05
+ [ITEM_HM06] = {gItemIcon_HM, gItemIconPalette_FightingTMHM}, // HM06
+ [ITEM_HM07] = {gItemIcon_HM, gItemIconPalette_WaterTMHM}, // HM07
+ [ITEM_HM08] = {gItemIcon_HM, gItemIconPalette_WaterTMHM}, // HM08
+ // ????????
+ [ITEM_15B] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ [ITEM_15C] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ // FireRed/LeafGreen key items
+ [ITEM_OAKS_PARCEL] = {gItemIcon_OaksParcel, gItemIconPalette_OaksParcel},
+ [ITEM_POKE_FLUTE] = {gItemIcon_PokeFlute, gItemIconPalette_PokeFlute},
+ [ITEM_SECRET_KEY] = {gItemIcon_SecretKey, gItemIconPalette_SecretKey},
+ [ITEM_BIKE_VOUCHER] = {gItemIcon_BikeVoucher, gItemIconPalette_BikeVoucher},
+ [ITEM_GOLD_TEETH] = {gItemIcon_GoldTeeth, gItemIconPalette_GoldTeeth},
+ [ITEM_OLD_AMBER] = {gItemIcon_OldAmber, gItemIconPalette_OldAmber},
+ [ITEM_CARD_KEY] = {gItemIcon_CardKey, gItemIconPalette_CardKey},
+ [ITEM_LIFT_KEY] = {gItemIcon_LiftKey, gItemIconPalette_Key},
+ [ITEM_HELIX_FOSSIL] = {gItemIcon_HelixFossil, gItemIconPalette_KantoFossil},
+ [ITEM_DOME_FOSSIL] = {gItemIcon_DomeFossil, gItemIconPalette_KantoFossil},
+ [ITEM_SILPH_SCOPE] = {gItemIcon_SilphScope, gItemIconPalette_SilphScope},
+ [ITEM_BICYCLE] = {gItemIcon_Bicycle, gItemIconPalette_Bicycle},
+ [ITEM_TOWN_MAP] = {gItemIcon_TownMap, gItemIconPalette_TownMap},
+ [ITEM_VS_SEEKER] = {gItemIcon_VSSeeker, gItemIconPalette_VSSeeker},
+ [ITEM_FAME_CHECKER] = {gItemIcon_FameChecker, gItemIconPalette_FameChecker},
+ [ITEM_TM_CASE] = {gItemIcon_TMCase, gItemIconPalette_TMCase},
+ [ITEM_BERRY_POUCH] = {gItemIcon_BerryPouch, gItemIconPalette_BerryPouch},
+ [ITEM_TEACHY_TV] = {gItemIcon_TeachyTV, gItemIconPalette_TeachyTV},
+ [ITEM_TRI_PASS] = {gItemIcon_TriPass, gItemIconPalette_TriPass},
+ [ITEM_RAINBOW_PASS] = {gItemIcon_RainbowPass, gItemIconPalette_RainbowPass},
+ [ITEM_TEA] = {gItemIcon_Tea, gItemIconPalette_Tea},
+ [ITEM_MYSTIC_TICKET] = {gItemIcon_MysticTicket, gItemIconPalette_MysticTicket},
+ [ITEM_AURORA_TICKET] = {gItemIcon_AuroraTicket, gItemIconPalette_AuroraTicket},
+ [ITEM_POWDER_JAR] = {gItemIcon_PowderJar, gItemIconPalette_PowderJar},
+ [ITEM_RUBY] = {gItemIcon_Gem, gItemIconPalette_Ruby},
+ [ITEM_SAPPHIRE] = {gItemIcon_Gem, gItemIconPalette_Sapphire},
+ // Emerald-only key items
+ [ITEM_MAGMA_EMBLEM] = {gItemIcon_MagmaEmblem, gItemIconPalette_MagmaEmblem},
+ [ITEM_OLD_SEA_MAP] = {gItemIcon_OldSeaMap, gItemIconPalette_OldSeaMap},
+ // Return to field arrow
+ [ITEM_FIELD_ARROW] = {gItemIcon_ReturnToFieldArrow, gItemIconPalette_ReturnToFieldArrow},
};
-#endif // GUARD_DATA_ITEM_ICON_TABLE_H
diff --git a/src/data/items.h b/src/data/items.h
index 49f981faf..a36a13033 100644
--- a/src/data/items.h
+++ b/src/data/items.h
@@ -1,5 +1,6 @@
const struct Item gItems[] =
{
+ [ITEM_NONE] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -17,8 +18,9 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//Pokeballs
+// Pokeballs
+ [ITEM_MASTER_BALL] =
{
.name = _("MASTER BALL"),
.itemId = ITEM_MASTER_BALL,
@@ -35,6 +37,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 0,
},
+
+ [ITEM_ULTRA_BALL] =
{
.name = _("ULTRA BALL"),
.itemId = ITEM_ULTRA_BALL,
@@ -51,6 +55,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 1,
},
+
+ [ITEM_GREAT_BALL] =
{
.name = _("GREAT BALL"),
.itemId = ITEM_GREAT_BALL,
@@ -67,6 +73,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 2,
},
+
+ [ITEM_POKE_BALL] =
{
.name = _("POKé BALL"),
.itemId = ITEM_POKE_BALL,
@@ -83,6 +91,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 3,
},
+
+ [ITEM_SAFARI_BALL] =
{
.name = _("SAFARI BALL"),
.itemId = ITEM_SAFARI_BALL,
@@ -99,6 +109,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 4,
},
+
+ [ITEM_NET_BALL] =
{
.name = _("NET BALL"),
.itemId = ITEM_NET_BALL,
@@ -115,6 +127,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 5,
},
+
+ [ITEM_DIVE_BALL] =
{
.name = _("DIVE BALL"),
.itemId = ITEM_DIVE_BALL,
@@ -131,6 +145,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 6,
},
+
+ [ITEM_NEST_BALL] =
{
.name = _("NEST BALL"),
.itemId = ITEM_NEST_BALL,
@@ -147,6 +163,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 7,
},
+
+ [ITEM_REPEAT_BALL] =
{
.name = _("REPEAT BALL"),
.itemId = ITEM_REPEAT_BALL,
@@ -163,6 +181,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 8,
},
+
+ [ITEM_TIMER_BALL] =
{
.name = _("TIMER BALL"),
.itemId = ITEM_TIMER_BALL,
@@ -179,6 +199,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 9,
},
+
+ [ITEM_LUXURY_BALL] =
{
.name = _("LUXURY BALL"),
.itemId = ITEM_LUXURY_BALL,
@@ -195,6 +217,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PokeBall,
.secondaryId = 10,
},
+
+ [ITEM_PREMIER_BALL] =
{
.name = _("PREMIER BALL"),
.itemId = ITEM_PREMIER_BALL,
@@ -212,8 +236,9 @@ const struct Item gItems[] =
.secondaryId = 11,
},
-//Medicine
+// Medicine
+ [ITEM_POTION] =
{
.name = _("POTION"),
.itemId = ITEM_POTION,
@@ -230,6 +255,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_ANTIDOTE] =
{
.name = _("ANTIDOTE"),
.itemId = ITEM_ANTIDOTE,
@@ -246,6 +273,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_BURN_HEAL] =
{
.name = _("BURN HEAL"),
.itemId = ITEM_BURN_HEAL,
@@ -262,6 +291,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_ICE_HEAL] =
{
.name = _("ICE HEAL"),
.itemId = ITEM_ICE_HEAL,
@@ -278,6 +309,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_AWAKENING] =
{
.name = _("AWAKENING"),
.itemId = ITEM_AWAKENING,
@@ -294,6 +327,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_PARALYZE_HEAL] =
{
.name = _("PARLYZ HEAL"),
.itemId = ITEM_PARALYZE_HEAL,
@@ -310,6 +345,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_FULL_RESTORE] =
{
.name = _("FULL RESTORE"),
.itemId = ITEM_FULL_RESTORE,
@@ -326,6 +363,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_MAX_POTION] =
{
.name = _("MAX POTION"),
.itemId = ITEM_MAX_POTION,
@@ -342,6 +381,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_HYPER_POTION] =
{
.name = _("HYPER POTION"),
.itemId = ITEM_HYPER_POTION,
@@ -358,6 +399,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_SUPER_POTION] =
{
.name = _("SUPER POTION"),
.itemId = ITEM_SUPER_POTION,
@@ -374,6 +417,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_FULL_HEAL] =
{
.name = _("FULL HEAL"),
.itemId = ITEM_FULL_HEAL,
@@ -390,6 +435,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_REVIVE] =
{
.name = _("REVIVE"),
.itemId = ITEM_REVIVE,
@@ -406,6 +453,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_MAX_REVIVE] =
{
.name = _("MAX REVIVE"),
.itemId = ITEM_MAX_REVIVE,
@@ -422,6 +471,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_FRESH_WATER] =
{
.name = _("FRESH WATER"),
.itemId = ITEM_FRESH_WATER,
@@ -438,6 +489,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_SODA_POP] =
{
.name = _("SODA POP"),
.itemId = ITEM_SODA_POP,
@@ -454,6 +507,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_LEMONADE] =
{
.name = _("LEMONADE"),
.itemId = ITEM_LEMONADE,
@@ -470,6 +525,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_MOOMOO_MILK] =
{
.name = _("MOOMOO MILK"),
.itemId = ITEM_MOOMOO_MILK,
@@ -486,6 +543,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_ENERGY_POWDER] =
{
.name = _("ENERGYPOWDER"),
.itemId = ITEM_ENERGY_POWDER,
@@ -502,6 +561,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_ENERGY_ROOT] =
{
.name = _("ENERGY ROOT"),
.itemId = ITEM_ENERGY_ROOT,
@@ -518,6 +579,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_HEAL_POWDER] =
{
.name = _("HEAL POWDER"),
.itemId = ITEM_HEAL_POWDER,
@@ -534,6 +597,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_REVIVAL_HERB] =
{
.name = _("REVIVAL HERB"),
.itemId = ITEM_REVIVAL_HERB,
@@ -550,6 +615,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_ETHER] =
{
.name = _("ETHER"),
.itemId = ITEM_ETHER,
@@ -566,6 +633,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PPRecovery,
.secondaryId = 0,
},
+
+ [ITEM_MAX_ETHER] =
{
.name = _("MAX ETHER"),
.itemId = ITEM_MAX_ETHER,
@@ -582,6 +651,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PPRecovery,
.secondaryId = 0,
},
+
+ [ITEM_ELIXIR] =
{
.name = _("ELIXIR"),
.itemId = ITEM_ELIXIR,
@@ -598,6 +669,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PPRecovery,
.secondaryId = 0,
},
+
+ [ITEM_MAX_ELIXIR] =
{
.name = _("MAX ELIXIR"),
.itemId = ITEM_MAX_ELIXIR,
@@ -614,6 +687,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PPRecovery,
.secondaryId = 0,
},
+
+ [ITEM_LAVA_COOKIE] =
{
.name = _("LAVA COOKIE"),
.itemId = ITEM_LAVA_COOKIE,
@@ -630,6 +705,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_BLUE_FLUTE] =
{
.name = _("BLUE FLUTE"),
.itemId = ITEM_BLUE_FLUTE,
@@ -646,6 +723,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_YELLOW_FLUTE] =
{
.name = _("YELLOW FLUTE"),
.itemId = ITEM_YELLOW_FLUTE,
@@ -662,6 +741,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_RED_FLUTE] =
{
.name = _("RED FLUTE"),
.itemId = ITEM_RED_FLUTE,
@@ -678,6 +759,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_BLACK_FLUTE] =
{
.name = _("BLACK FLUTE"),
.itemId = ITEM_BLACK_FLUTE,
@@ -694,6 +777,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_WHITE_FLUTE] =
{
.name = _("WHITE FLUTE"),
.itemId = ITEM_WHITE_FLUTE,
@@ -710,6 +795,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BERRY_JUICE] =
{
.name = _("BERRY JUICE"),
.itemId = ITEM_BERRY_JUICE,
@@ -726,6 +813,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_SACRED_ASH] =
{
.name = _("SACRED ASH"),
.itemId = ITEM_SACRED_ASH,
@@ -743,8 +832,9 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//Collectibles
+// Collectibles
+ [ITEM_SHOAL_SALT] =
{
.name = _("SHOAL SALT"),
.itemId = ITEM_SHOAL_SALT,
@@ -761,6 +851,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SHOAL_SHELL] =
{
.name = _("SHOAL SHELL"),
.itemId = ITEM_SHOAL_SHELL,
@@ -777,6 +869,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_RED_SHARD] =
{
.name = _("RED SHARD"),
.itemId = ITEM_RED_SHARD,
@@ -793,6 +887,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BLUE_SHARD] =
{
.name = _("BLUE SHARD"),
.itemId = ITEM_BLUE_SHARD,
@@ -809,6 +905,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_YELLOW_SHARD] =
{
.name = _("YELLOW SHARD"),
.itemId = ITEM_YELLOW_SHARD,
@@ -825,6 +923,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_GREEN_SHARD] =
{
.name = _("GREEN SHARD"),
.itemId = ITEM_GREEN_SHARD,
@@ -841,6 +941,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_034] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -857,6 +959,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_035] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -873,6 +977,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_036] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -889,6 +995,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_037] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -905,6 +1013,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_038] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -921,6 +1031,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_039] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -937,6 +1049,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_03A] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -953,6 +1067,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_03B] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -969,6 +1085,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_03C] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -985,6 +1103,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_03D] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1001,6 +1121,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_03E] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1018,8 +1140,9 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//Vitamins
+// Vitamins
+ [ITEM_HP_UP] =
{
.name = _("HP UP"),
.itemId = ITEM_HP_UP,
@@ -1036,6 +1159,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_PROTEIN] =
{
.name = _("PROTEIN"),
.itemId = ITEM_PROTEIN,
@@ -1052,6 +1177,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_IRON] =
{
.name = _("IRON"),
.itemId = ITEM_IRON,
@@ -1068,6 +1195,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_CARBOS] =
{
.name = _("CARBOS"),
.itemId = ITEM_CARBOS,
@@ -1084,6 +1213,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_CALCIUM] =
{
.name = _("CALCIUM"),
.itemId = ITEM_CALCIUM,
@@ -1100,6 +1231,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_RARE_CANDY] =
{
.name = _("RARE CANDY"),
.itemId = ITEM_RARE_CANDY,
@@ -1116,6 +1249,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_PP_UP] =
{
.name = _("PP UP"),
.itemId = ITEM_PP_UP,
@@ -1132,6 +1267,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_ZINC] =
{
.name = _("ZINC"),
.itemId = ITEM_ZINC,
@@ -1148,6 +1285,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_PP_MAX] =
{
.name = _("PP MAX"),
.itemId = ITEM_PP_MAX,
@@ -1164,6 +1303,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_048] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1181,8 +1322,9 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//Battle items
+// Battle items
+ [ITEM_GUARD_SPEC] =
{
.name = _("GUARD SPEC."),
.itemId = ITEM_GUARD_SPEC,
@@ -1199,6 +1341,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_StatIncrease,
.secondaryId = 0,
},
+
+ [ITEM_DIRE_HIT] =
{
.name = _("DIRE HIT"),
.itemId = ITEM_DIRE_HIT,
@@ -1215,6 +1359,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_StatIncrease,
.secondaryId = 0,
},
+
+ [ITEM_X_ATTACK] =
{
.name = _("X ATTACK"),
.itemId = ITEM_X_ATTACK,
@@ -1231,6 +1377,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_StatIncrease,
.secondaryId = 0,
},
+
+ [ITEM_X_DEFEND] =
{
.name = _("X DEFEND"),
.itemId = ITEM_X_DEFEND,
@@ -1247,6 +1395,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_StatIncrease,
.secondaryId = 0,
},
+
+ [ITEM_X_SPEED] =
{
.name = _("X SPEED"),
.itemId = ITEM_X_SPEED,
@@ -1263,6 +1413,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_StatIncrease,
.secondaryId = 0,
},
+
+ [ITEM_X_ACCURACY] =
{
.name = _("X ACCURACY"),
.itemId = ITEM_X_ACCURACY,
@@ -1279,6 +1431,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_StatIncrease,
.secondaryId = 0,
},
+
+ [ITEM_X_SPECIAL] =
{
.name = _("X SPECIAL"),
.itemId = ITEM_X_SPECIAL,
@@ -1295,6 +1449,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_StatIncrease,
.secondaryId = 0,
},
+
+ [ITEM_POKE_DOLL] =
{
.name = _("POKé DOLL"),
.itemId = ITEM_POKE_DOLL,
@@ -1311,6 +1467,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Escape,
.secondaryId = 0,
},
+
+ [ITEM_FLUFFY_TAIL] =
{
.name = _("FLUFFY TAIL"),
.itemId = ITEM_FLUFFY_TAIL,
@@ -1327,6 +1485,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Escape,
.secondaryId = 0,
},
+
+ [ITEM_052] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1344,8 +1504,9 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//Field items
+// Field items
+ [ITEM_SUPER_REPEL] =
{
.name = _("SUPER REPEL"),
.itemId = ITEM_SUPER_REPEL,
@@ -1362,6 +1523,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_MAX_REPEL] =
{
.name = _("MAX REPEL"),
.itemId = ITEM_MAX_REPEL,
@@ -1378,6 +1541,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_ESCAPE_ROPE] =
{
.name = _("ESCAPE ROPE"),
.itemId = ITEM_ESCAPE_ROPE,
@@ -1394,6 +1559,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_REPEL] =
{
.name = _("REPEL"),
.itemId = ITEM_REPEL,
@@ -1410,6 +1577,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_057] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1426,6 +1595,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_058] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1442,6 +1613,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_059] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1458,6 +1631,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_05A] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1474,6 +1649,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_05B] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1490,6 +1667,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_05C] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1507,8 +1686,9 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//Evolution stones
+// Evolution stones
+ [ITEM_SUN_STONE] =
{
.name = _("SUN STONE"),
.itemId = ITEM_SUN_STONE,
@@ -1525,6 +1705,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_MOON_STONE] =
{
.name = _("MOON STONE"),
.itemId = ITEM_MOON_STONE,
@@ -1541,6 +1723,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_FIRE_STONE] =
{
.name = _("FIRE STONE"),
.itemId = ITEM_FIRE_STONE,
@@ -1557,6 +1741,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_THUNDER_STONE] =
{
.name = _("THUNDERSTONE"),
.itemId = ITEM_THUNDER_STONE,
@@ -1573,6 +1759,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_WATER_STONE] =
{
.name = _("WATER STONE"),
.itemId = ITEM_WATER_STONE,
@@ -1589,6 +1777,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_LEAF_STONE] =
{
.name = _("LEAF STONE"),
.itemId = ITEM_LEAF_STONE,
@@ -1605,6 +1795,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_063] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1621,6 +1813,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_064] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1637,6 +1831,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_065] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1653,6 +1849,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_066] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1670,8 +1868,9 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//Valuable items
+// Valuable items
+ [ITEM_TINY_MUSHROOM] =
{
.name = _("TINYMUSHROOM"),
.itemId = ITEM_TINY_MUSHROOM,
@@ -1688,6 +1887,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BIG_MUSHROOM] =
{
.name = _("BIG MUSHROOM"),
.itemId = ITEM_BIG_MUSHROOM,
@@ -1704,6 +1905,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_069] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1720,6 +1923,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_PEARL] =
{
.name = _("PEARL"),
.itemId = ITEM_PEARL,
@@ -1736,6 +1941,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BIG_PEARL] =
{
.name = _("BIG PEARL"),
.itemId = ITEM_BIG_PEARL,
@@ -1752,6 +1959,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_STARDUST] =
{
.name = _("STARDUST"),
.itemId = ITEM_STARDUST,
@@ -1768,6 +1977,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_STAR_PIECE] =
{
.name = _("STAR PIECE"),
.itemId = ITEM_STAR_PIECE,
@@ -1784,6 +1995,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_NUGGET] =
{
.name = _("NUGGET"),
.itemId = ITEM_NUGGET,
@@ -1800,6 +2013,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HEART_SCALE] =
{
.name = _("HEART SCALE"),
.itemId = ITEM_HEART_SCALE,
@@ -1816,6 +2031,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_070] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1832,6 +2049,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_071] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1848,6 +2067,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_072] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1864,6 +2085,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_073] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1880,6 +2103,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_074] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1896,6 +2121,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_075] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1912,6 +2139,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_076] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1928,6 +2157,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_077] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1944,6 +2175,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_078] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -1961,7 +2194,8 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//Mail
+// Mail
+ [ITEM_ORANGE_MAIL] =
{
.name = _("ORANGE MAIL"),
.itemId = ITEM_ORANGE_MAIL,
@@ -1978,6 +2212,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HARBOR_MAIL] =
{
.name = _("HARBOR MAIL"),
.itemId = ITEM_HARBOR_MAIL,
@@ -1994,6 +2230,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 1,
},
+
+ [ITEM_GLITTER_MAIL] =
{
.name = _("GLITTER MAIL"),
.itemId = ITEM_GLITTER_MAIL,
@@ -2010,6 +2248,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 2,
},
+
+ [ITEM_MECH_MAIL] =
{
.name = _("MECH MAIL"),
.itemId = ITEM_MECH_MAIL,
@@ -2026,6 +2266,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 3,
},
+
+ [ITEM_WOOD_MAIL] =
{
.name = _("WOOD MAIL"),
.itemId = ITEM_WOOD_MAIL,
@@ -2042,6 +2284,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 4,
},
+
+ [ITEM_WAVE_MAIL] =
{
.name = _("WAVE MAIL"),
.itemId = ITEM_WAVE_MAIL,
@@ -2058,6 +2302,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 5,
},
+
+ [ITEM_BEAD_MAIL] =
{
.name = _("BEAD MAIL"),
.itemId = ITEM_BEAD_MAIL,
@@ -2074,6 +2320,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 6,
},
+
+ [ITEM_SHADOW_MAIL] =
{
.name = _("SHADOW MAIL"),
.itemId = ITEM_SHADOW_MAIL,
@@ -2090,6 +2338,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 7,
},
+
+ [ITEM_TROPIC_MAIL] =
{
.name = _("TROPIC MAIL"),
.itemId = ITEM_TROPIC_MAIL,
@@ -2106,6 +2356,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 8,
},
+
+ [ITEM_DREAM_MAIL] =
{
.name = _("DREAM MAIL"),
.itemId = ITEM_DREAM_MAIL,
@@ -2122,6 +2374,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 9,
},
+
+ [ITEM_FAB_MAIL] =
{
.name = _("FAB MAIL"),
.itemId = ITEM_FAB_MAIL,
@@ -2138,6 +2392,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 10,
},
+
+ [ITEM_RETRO_MAIL] =
{
.name = _("RETRO MAIL"),
.itemId = ITEM_RETRO_MAIL,
@@ -2155,8 +2411,9 @@ const struct Item gItems[] =
.secondaryId = 11,
},
-//Berries
+// Berries
+ [ITEM_CHERI_BERRY] =
{
.name = _("CHERI BERRY"),
.itemId = ITEM_CHERI_BERRY,
@@ -2173,6 +2430,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_CHESTO_BERRY] =
{
.name = _("CHESTO BERRY"),
.itemId = ITEM_CHESTO_BERRY,
@@ -2189,6 +2448,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_PECHA_BERRY] =
{
.name = _("PECHA BERRY"),
.itemId = ITEM_PECHA_BERRY,
@@ -2205,6 +2466,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_RAWST_BERRY] =
{
.name = _("RAWST BERRY"),
.itemId = ITEM_RAWST_BERRY,
@@ -2221,6 +2484,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_ASPEAR_BERRY] =
{
.name = _("ASPEAR BERRY"),
.itemId = ITEM_ASPEAR_BERRY,
@@ -2237,6 +2502,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_LEPPA_BERRY] =
{
.name = _("LEPPA BERRY"),
.itemId = ITEM_LEPPA_BERRY,
@@ -2253,6 +2520,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_PPRecovery,
.secondaryId = 0,
},
+
+ [ITEM_ORAN_BERRY] =
{
.name = _("ORAN BERRY"),
.itemId = ITEM_ORAN_BERRY,
@@ -2269,6 +2538,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_PERSIM_BERRY] =
{
.name = _("PERSIM BERRY"),
.itemId = ITEM_PERSIM_BERRY,
@@ -2285,6 +2556,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_LUM_BERRY] =
{
.name = _("LUM BERRY"),
.itemId = ITEM_LUM_BERRY,
@@ -2301,6 +2574,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_SITRUS_BERRY] =
{
.name = _("SITRUS BERRY"),
.itemId = ITEM_SITRUS_BERRY,
@@ -2317,6 +2592,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_Medicine,
.secondaryId = 0,
},
+
+ [ITEM_FIGY_BERRY] =
{
.name = _("FIGY BERRY"),
.itemId = ITEM_FIGY_BERRY,
@@ -2333,6 +2610,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_WIKI_BERRY] =
{
.name = _("WIKI BERRY"),
.itemId = ITEM_WIKI_BERRY,
@@ -2349,6 +2628,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_MAGO_BERRY] =
{
.name = _("MAGO BERRY"),
.itemId = ITEM_MAGO_BERRY,
@@ -2365,6 +2646,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_AGUAV_BERRY] =
{
.name = _("AGUAV BERRY"),
.itemId = ITEM_AGUAV_BERRY,
@@ -2381,6 +2664,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_IAPAPA_BERRY] =
{
.name = _("IAPAPA BERRY"),
.itemId = ITEM_IAPAPA_BERRY,
@@ -2397,6 +2682,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_RAZZ_BERRY] =
{
.name = _("RAZZ BERRY"),
.itemId = ITEM_RAZZ_BERRY,
@@ -2413,6 +2700,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BLUK_BERRY] =
{
.name = _("BLUK BERRY"),
.itemId = ITEM_BLUK_BERRY,
@@ -2429,6 +2718,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_NANAB_BERRY] =
{
.name = _("NANAB BERRY"),
.itemId = ITEM_NANAB_BERRY,
@@ -2445,6 +2736,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_WEPEAR_BERRY] =
{
.name = _("WEPEAR BERRY"),
.itemId = ITEM_WEPEAR_BERRY,
@@ -2461,6 +2754,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_PINAP_BERRY] =
{
.name = _("PINAP BERRY"),
.itemId = ITEM_PINAP_BERRY,
@@ -2477,6 +2772,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_POMEG_BERRY] =
{
.name = _("POMEG BERRY"),
.itemId = ITEM_POMEG_BERRY,
@@ -2493,6 +2790,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_KELPSY_BERRY] =
{
.name = _("KELPSY BERRY"),
.itemId = ITEM_KELPSY_BERRY,
@@ -2509,6 +2808,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_QUALOT_BERRY] =
{
.name = _("QUALOT BERRY"),
.itemId = ITEM_QUALOT_BERRY,
@@ -2525,6 +2826,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HONDEW_BERRY] =
{
.name = _("HONDEW BERRY"),
.itemId = ITEM_HONDEW_BERRY,
@@ -2541,6 +2844,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_GREPA_BERRY] =
{
.name = _("GREPA BERRY"),
.itemId = ITEM_GREPA_BERRY,
@@ -2557,6 +2862,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TAMATO_BERRY] =
{
.name = _("TAMATO BERRY"),
.itemId = ITEM_TAMATO_BERRY,
@@ -2573,6 +2880,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_CORNN_BERRY] =
{
.name = _("CORNN BERRY"),
.itemId = ITEM_CORNN_BERRY,
@@ -2589,6 +2898,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_MAGOST_BERRY] =
{
.name = _("MAGOST BERRY"),
.itemId = ITEM_MAGOST_BERRY,
@@ -2605,6 +2916,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_RABUTA_BERRY] =
{
.name = _("RABUTA BERRY"),
.itemId = ITEM_RABUTA_BERRY,
@@ -2621,6 +2934,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_NOMEL_BERRY] =
{
.name = _("NOMEL BERRY"),
.itemId = ITEM_NOMEL_BERRY,
@@ -2637,6 +2952,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SPELON_BERRY] =
{
.name = _("SPELON BERRY"),
.itemId = ITEM_SPELON_BERRY,
@@ -2653,6 +2970,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_PAMTRE_BERRY] =
{
.name = _("PAMTRE BERRY"),
.itemId = ITEM_PAMTRE_BERRY,
@@ -2669,6 +2988,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_WATMEL_BERRY] =
{
.name = _("WATMEL BERRY"),
.itemId = ITEM_WATMEL_BERRY,
@@ -2685,6 +3006,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_DURIN_BERRY] =
{
.name = _("DURIN BERRY"),
.itemId = ITEM_DURIN_BERRY,
@@ -2701,6 +3024,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BELUE_BERRY] =
{
.name = _("BELUE BERRY"),
.itemId = ITEM_BELUE_BERRY,
@@ -2717,6 +3042,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_LIECHI_BERRY] =
{
.name = _("LIECHI BERRY"),
.itemId = ITEM_LIECHI_BERRY,
@@ -2733,6 +3060,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_GANLON_BERRY] =
{
.name = _("GANLON BERRY"),
.itemId = ITEM_GANLON_BERRY,
@@ -2749,6 +3078,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SALAC_BERRY] =
{
.name = _("SALAC BERRY"),
.itemId = ITEM_SALAC_BERRY,
@@ -2765,6 +3096,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_PETAYA_BERRY] =
{
.name = _("PETAYA BERRY"),
.itemId = ITEM_PETAYA_BERRY,
@@ -2781,6 +3114,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_APICOT_BERRY] =
{
.name = _("APICOT BERRY"),
.itemId = ITEM_APICOT_BERRY,
@@ -2797,6 +3132,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_LANSAT_BERRY] =
{
.name = _("LANSAT BERRY"),
.itemId = ITEM_LANSAT_BERRY,
@@ -2813,6 +3150,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_STARF_BERRY] =
{
.name = _("STARF BERRY"),
.itemId = ITEM_STARF_BERRY,
@@ -2829,6 +3168,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_ENIGMA_BERRY] =
{
.name = _("ENIGMA BERRY"),
.itemId = ITEM_ENIGMA_BERRY,
@@ -2845,6 +3186,8 @@ const struct Item gItems[] =
.battleUseFunc = ItemUseInBattle_EnigmaBerry,
.secondaryId = 0,
},
+
+ [ITEM_0B0] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -2861,6 +3204,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0B1] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -2877,6 +3222,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0B2] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -2894,8 +3241,9 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//Hold items
+// Hold items
+ [ITEM_BRIGHT_POWDER] =
{
.name = _("BRIGHTPOWDER"),
.itemId = ITEM_BRIGHT_POWDER,
@@ -2912,6 +3260,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_WHITE_HERB] =
{
.name = _("WHITE HERB"),
.itemId = ITEM_WHITE_HERB,
@@ -2928,6 +3278,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_MACHO_BRACE] =
{
.name = _("MACHO BRACE"),
.itemId = ITEM_MACHO_BRACE,
@@ -2944,6 +3296,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_EXP_SHARE] =
{
.name = _("EXP. SHARE"),
.itemId = ITEM_EXP_SHARE,
@@ -2960,6 +3314,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_QUICK_CLAW] =
{
.name = _("QUICK CLAW"),
.itemId = ITEM_QUICK_CLAW,
@@ -2976,6 +3332,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SOOTHE_BELL] =
{
.name = _("SOOTHE BELL"),
.itemId = ITEM_SOOTHE_BELL,
@@ -2992,6 +3350,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_MENTAL_HERB] =
{
.name = _("MENTAL HERB"),
.itemId = ITEM_MENTAL_HERB,
@@ -3008,6 +3368,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_CHOICE_BAND] =
{
.name = _("CHOICE BAND"),
.itemId = ITEM_CHOICE_BAND,
@@ -3024,6 +3386,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_KINGS_ROCK] =
{
.name = _("KING’S ROCK"),
.itemId = ITEM_KINGS_ROCK,
@@ -3040,6 +3404,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SILVER_POWDER] =
{
.name = _("SILVERPOWDER"),
.itemId = ITEM_SILVER_POWDER,
@@ -3056,6 +3422,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_AMULET_COIN] =
{
.name = _("AMULET COIN"),
.itemId = ITEM_AMULET_COIN,
@@ -3072,6 +3440,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_CLEANSE_TAG] =
{
.name = _("CLEANSE TAG"),
.itemId = ITEM_CLEANSE_TAG,
@@ -3088,6 +3458,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SOUL_DEW] =
{
.name = _("SOUL DEW"),
.itemId = ITEM_SOUL_DEW,
@@ -3104,6 +3476,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_DEEP_SEA_TOOTH] =
{
.name = _("DEEPSEATOOTH"),
.itemId = ITEM_DEEP_SEA_TOOTH,
@@ -3120,6 +3494,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_DEEP_SEA_SCALE] =
{
.name = _("DEEPSEASCALE"),
.itemId = ITEM_DEEP_SEA_SCALE,
@@ -3136,6 +3512,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SMOKE_BALL] =
{
.name = _("SMOKE BALL"),
.itemId = ITEM_SMOKE_BALL,
@@ -3152,6 +3530,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_EVERSTONE] =
{
.name = _("EVERSTONE"),
.itemId = ITEM_EVERSTONE,
@@ -3168,6 +3548,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_FOCUS_BAND] =
{
.name = _("FOCUS BAND"),
.itemId = ITEM_FOCUS_BAND,
@@ -3184,6 +3566,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_LUCKY_EGG] =
{
.name = _("LUCKY EGG"),
.itemId = ITEM_LUCKY_EGG,
@@ -3200,6 +3584,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SCOPE_LENS] =
{
.name = _("SCOPE LENS"),
.itemId = ITEM_SCOPE_LENS,
@@ -3216,6 +3602,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_METAL_COAT] =
{
.name = _("METAL COAT"),
.itemId = ITEM_METAL_COAT,
@@ -3232,6 +3620,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_LEFTOVERS] =
{
.name = _("LEFTOVERS"),
.itemId = ITEM_LEFTOVERS,
@@ -3248,6 +3638,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_DRAGON_SCALE] =
{
.name = _("DRAGON SCALE"),
.itemId = ITEM_DRAGON_SCALE,
@@ -3264,6 +3656,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_LIGHT_BALL] =
{
.name = _("LIGHT BALL"),
.itemId = ITEM_LIGHT_BALL,
@@ -3280,6 +3674,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SOFT_SAND] =
{
.name = _("SOFT SAND"),
.itemId = ITEM_SOFT_SAND,
@@ -3296,6 +3692,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HARD_STONE] =
{
.name = _("HARD STONE"),
.itemId = ITEM_HARD_STONE,
@@ -3312,6 +3710,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_MIRACLE_SEED] =
{
.name = _("MIRACLE SEED"),
.itemId = ITEM_MIRACLE_SEED,
@@ -3328,6 +3728,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BLACK_GLASSES] =
{
.name = _("BLACKGLASSES"),
.itemId = ITEM_BLACK_GLASSES,
@@ -3344,6 +3746,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BLACK_BELT] =
{
.name = _("BLACK BELT"),
.itemId = ITEM_BLACK_BELT,
@@ -3360,6 +3764,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_MAGNET] =
{
.name = _("MAGNET"),
.itemId = ITEM_MAGNET,
@@ -3376,6 +3782,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_MYSTIC_WATER] =
{
.name = _("MYSTIC WATER"),
.itemId = ITEM_MYSTIC_WATER,
@@ -3392,6 +3800,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SHARP_BEAK] =
{
.name = _("SHARP BEAK"),
.itemId = ITEM_SHARP_BEAK,
@@ -3408,6 +3818,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_POISON_BARB] =
{
.name = _("POISON BARB"),
.itemId = ITEM_POISON_BARB,
@@ -3424,6 +3836,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_NEVER_MELT_ICE] =
{
.name = _("NEVERMELTICE"),
.itemId = ITEM_NEVER_MELT_ICE,
@@ -3440,6 +3854,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SPELL_TAG] =
{
.name = _("SPELL TAG"),
.itemId = ITEM_SPELL_TAG,
@@ -3456,6 +3872,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TWISTED_SPOON] =
{
.name = _("TWISTEDSPOON"),
.itemId = ITEM_TWISTED_SPOON,
@@ -3472,6 +3890,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_CHARCOAL] =
{
.name = _("CHARCOAL"),
.itemId = ITEM_CHARCOAL,
@@ -3488,6 +3908,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_DRAGON_FANG] =
{
.name = _("DRAGON FANG"),
.itemId = ITEM_DRAGON_FANG,
@@ -3504,6 +3926,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SILK_SCARF] =
{
.name = _("SILK SCARF"),
.itemId = ITEM_SILK_SCARF,
@@ -3520,6 +3944,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_UP_GRADE] =
{
.name = _("UP-GRADE"),
.itemId = ITEM_UP_GRADE,
@@ -3536,6 +3962,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SHELL_BELL] =
{
.name = _("SHELL BELL"),
.itemId = ITEM_SHELL_BELL,
@@ -3552,6 +3980,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SEA_INCENSE] =
{
.name = _("SEA INCENSE"),
.itemId = ITEM_SEA_INCENSE,
@@ -3568,6 +3998,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_LAX_INCENSE] =
{
.name = _("LAX INCENSE"),
.itemId = ITEM_LAX_INCENSE,
@@ -3584,6 +4016,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_LUCKY_PUNCH] =
{
.name = _("LUCKY PUNCH"),
.itemId = ITEM_LUCKY_PUNCH,
@@ -3600,6 +4034,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_METAL_POWDER] =
{
.name = _("METAL POWDER"),
.itemId = ITEM_METAL_POWDER,
@@ -3616,6 +4052,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_THICK_CLUB] =
{
.name = _("THICK CLUB"),
.itemId = ITEM_THICK_CLUB,
@@ -3632,6 +4070,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_STICK] =
{
.name = _("STICK"),
.itemId = ITEM_STICK,
@@ -3648,6 +4088,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0E2] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3664,6 +4106,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0E3] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3680,6 +4124,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0E4] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3696,6 +4142,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0E5] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3712,6 +4160,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0E6] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3728,6 +4178,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0E7] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3744,6 +4196,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0E8] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3760,6 +4214,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0E9] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3776,6 +4232,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0EA] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3792,6 +4250,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0EB] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3808,6 +4268,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0EC] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3824,6 +4286,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0ED] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3840,6 +4304,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0EE] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3856,6 +4322,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0EF] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3872,6 +4340,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0F0] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3888,6 +4358,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0F1] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3904,6 +4376,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0F2] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3920,6 +4394,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0F3] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3936,6 +4412,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0F4] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3952,6 +4430,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0F5] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3968,6 +4448,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0F6] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -3984,6 +4466,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0F7] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -4000,6 +4484,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0F8] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -4016,6 +4502,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0F9] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -4032,6 +4520,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0FA] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -4048,6 +4538,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0FB] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -4064,6 +4556,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0FC] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -4080,6 +4574,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_0FD] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -4096,6 +4592,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_RED_SCARF] =
{
.name = _("RED SCARF"),
.itemId = ITEM_RED_SCARF,
@@ -4112,6 +4610,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BLUE_SCARF] =
{
.name = _("BLUE SCARF"),
.itemId = ITEM_BLUE_SCARF,
@@ -4128,6 +4628,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_PINK_SCARF] =
{
.name = _("PINK SCARF"),
.itemId = ITEM_PINK_SCARF,
@@ -4144,6 +4646,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_GREEN_SCARF] =
{
.name = _("GREEN SCARF"),
.itemId = ITEM_GREEN_SCARF,
@@ -4160,6 +4664,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_YELLOW_SCARF] =
{
.name = _("YELLOW SCARF"),
.itemId = ITEM_YELLOW_SCARF,
@@ -4177,8 +4683,9 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//Key items
+// Key items
+ [ITEM_MACH_BIKE] =
{
.name = _("MACH BIKE"),
.itemId = ITEM_MACH_BIKE,
@@ -4195,6 +4702,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_COIN_CASE] =
{
.name = _("COIN CASE"),
.itemId = ITEM_COIN_CASE,
@@ -4211,6 +4720,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_ITEMFINDER] =
{
.name = _("ITEMFINDER"),
.itemId = ITEM_ITEMFINDER,
@@ -4227,6 +4738,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_OLD_ROD] =
{
.name = _("OLD ROD"),
.itemId = ITEM_OLD_ROD,
@@ -4243,6 +4756,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_GOOD_ROD] =
{
.name = _("GOOD ROD"),
.itemId = ITEM_GOOD_ROD,
@@ -4259,6 +4774,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 1,
},
+
+ [ITEM_SUPER_ROD] =
{
.name = _("SUPER ROD"),
.itemId = ITEM_SUPER_ROD,
@@ -4275,6 +4792,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 2,
},
+
+ [ITEM_SS_TICKET] =
{
.name = _("S.S. TICKET"),
.itemId = ITEM_SS_TICKET,
@@ -4291,6 +4810,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_CONTEST_PASS] =
{
.name = _("CONTEST PASS"),
.itemId = ITEM_CONTEST_PASS,
@@ -4307,6 +4828,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_10B] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -4323,6 +4846,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_WAILMER_PAIL] =
{
.name = _("WAILMER PAIL"),
.itemId = ITEM_WAILMER_PAIL,
@@ -4339,6 +4864,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_DEVON_GOODS] =
{
.name = _("DEVON GOODS"),
.itemId = ITEM_DEVON_GOODS,
@@ -4355,6 +4882,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SOOT_SACK] =
{
.name = _("SOOT SACK"),
.itemId = ITEM_SOOT_SACK,
@@ -4371,6 +4900,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BASEMENT_KEY] =
{
.name = _("BASEMENT KEY"),
.itemId = ITEM_BASEMENT_KEY,
@@ -4387,6 +4918,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_ACRO_BIKE] =
{
.name = _("ACRO BIKE"),
.itemId = ITEM_ACRO_BIKE,
@@ -4403,6 +4936,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 1,
},
+
+ [ITEM_POKEBLOCK_CASE] =
{
.name = _("{POKEBLOCK} CASE"),
.itemId = ITEM_POKEBLOCK_CASE,
@@ -4419,6 +4954,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_LETTER] =
{
.name = _("LETTER"),
.itemId = ITEM_LETTER,
@@ -4435,6 +4972,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_EON_TICKET] =
{
.name = _("EON TICKET"),
.itemId = ITEM_EON_TICKET,
@@ -4451,6 +4990,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 1,
},
+
+ [ITEM_RED_ORB] =
{
.name = _("RED ORB"),
.itemId = ITEM_RED_ORB,
@@ -4467,6 +5008,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BLUE_ORB] =
{
.name = _("BLUE ORB"),
.itemId = ITEM_BLUE_ORB,
@@ -4483,6 +5026,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SCANNER] =
{
.name = _("SCANNER"),
.itemId = ITEM_SCANNER,
@@ -4499,6 +5044,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_GO_GOGGLES] =
{
.name = _("GO-GOGGLES"),
.itemId = ITEM_GO_GOGGLES,
@@ -4515,6 +5062,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_METEORITE] =
{
.name = _("METEORITE"),
.itemId = ITEM_METEORITE,
@@ -4531,6 +5080,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_ROOM_1_KEY] =
{
.name = _("RM. 1 KEY"),
.itemId = ITEM_ROOM_1_KEY,
@@ -4547,6 +5098,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_ROOM_2_KEY] =
{
.name = _("RM. 2 KEY"),
.itemId = ITEM_ROOM_2_KEY,
@@ -4563,6 +5116,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_ROOM_4_KEY] =
{
.name = _("RM. 4 KEY"),
.itemId = ITEM_ROOM_4_KEY,
@@ -4579,6 +5134,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_ROOM_6_KEY] =
{
.name = _("RM. 6 KEY"),
.itemId = ITEM_ROOM_6_KEY,
@@ -4595,6 +5152,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_STORAGE_KEY] =
{
.name = _("STORAGE KEY"),
.itemId = ITEM_STORAGE_KEY,
@@ -4611,6 +5170,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_ROOT_FOSSIL] =
{
.name = _("ROOT FOSSIL"),
.itemId = ITEM_ROOT_FOSSIL,
@@ -4627,6 +5188,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_CLAW_FOSSIL] =
{
.name = _("CLAW FOSSIL"),
.itemId = ITEM_CLAW_FOSSIL,
@@ -4643,6 +5206,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_DEVON_SCOPE] =
{
.name = _("DEVON SCOPE"),
.itemId = ITEM_DEVON_SCOPE,
@@ -4660,8 +5225,9 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//TMs/HMs
+// TMs/HMs
+ [ITEM_TM01_FOCUS_PUNCH] =
{
.name = _("TM01"),
.itemId = ITEM_TM01_FOCUS_PUNCH,
@@ -4678,6 +5244,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM02_DRAGON_CLAW] =
{
.name = _("TM02"),
.itemId = ITEM_TM02_DRAGON_CLAW,
@@ -4694,6 +5262,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM03_WATER_PULSE] =
{
.name = _("TM03"),
.itemId = ITEM_TM03_WATER_PULSE,
@@ -4710,6 +5280,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM04_CALM_MIND] =
{
.name = _("TM04"),
.itemId = ITEM_TM04_CALM_MIND,
@@ -4726,6 +5298,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM05_ROAR] =
{
.name = _("TM05"),
.itemId = ITEM_TM05_ROAR,
@@ -4742,6 +5316,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM06_TOXIC] =
{
.name = _("TM06"),
.itemId = ITEM_TM06_TOXIC,
@@ -4758,6 +5334,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM07_HAIL] =
{
.name = _("TM07"),
.itemId = ITEM_TM07_HAIL,
@@ -4774,6 +5352,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM08_BULK_UP] =
{
.name = _("TM08"),
.itemId = ITEM_TM08_BULK_UP,
@@ -4790,6 +5370,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM09_BULLET_SEED] =
{
.name = _("TM09"),
.itemId = ITEM_TM09_BULLET_SEED,
@@ -4806,6 +5388,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM10_HIDDEN_POWER] =
{
.name = _("TM10"),
.itemId = ITEM_TM10_HIDDEN_POWER,
@@ -4822,6 +5406,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM11_SUNNY_DAY] =
{
.name = _("TM11"),
.itemId = ITEM_TM11_SUNNY_DAY,
@@ -4838,6 +5424,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM12_TAUNT] =
{
.name = _("TM12"),
.itemId = ITEM_TM12_TAUNT,
@@ -4854,6 +5442,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM13_ICE_BEAM] =
{
.name = _("TM13"),
.itemId = ITEM_TM13_ICE_BEAM,
@@ -4870,6 +5460,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM14_BLIZZARD] =
{
.name = _("TM14"),
.itemId = ITEM_TM14_BLIZZARD,
@@ -4886,6 +5478,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM15_HYPER_BEAM] =
{
.name = _("TM15"),
.itemId = ITEM_TM15_HYPER_BEAM,
@@ -4902,6 +5496,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM16_LIGHT_SCREEN] =
{
.name = _("TM16"),
.itemId = ITEM_TM16_LIGHT_SCREEN,
@@ -4918,6 +5514,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM17_PROTECT] =
{
.name = _("TM17"),
.itemId = ITEM_TM17_PROTECT,
@@ -4934,6 +5532,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM18_RAIN_DANCE] =
{
.name = _("TM18"),
.itemId = ITEM_TM18_RAIN_DANCE,
@@ -4950,6 +5550,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM19_GIGA_DRAIN] =
{
.name = _("TM19"),
.itemId = ITEM_TM19_GIGA_DRAIN,
@@ -4966,6 +5568,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM20_SAFEGUARD] =
{
.name = _("TM20"),
.itemId = ITEM_TM20_SAFEGUARD,
@@ -4982,6 +5586,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM21_FRUSTRATION] =
{
.name = _("TM21"),
.itemId = ITEM_TM21_FRUSTRATION,
@@ -4998,6 +5604,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM22_SOLARBEAM] =
{
.name = _("TM22"),
.itemId = ITEM_TM22_SOLARBEAM,
@@ -5014,6 +5622,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM23_IRON_TAIL] =
{
.name = _("TM23"),
.itemId = ITEM_TM23_IRON_TAIL,
@@ -5030,6 +5640,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM24_THUNDERBOLT] =
{
.name = _("TM24"),
.itemId = ITEM_TM24_THUNDERBOLT,
@@ -5046,6 +5658,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM25_THUNDER] =
{
.name = _("TM25"),
.itemId = ITEM_TM25_THUNDER,
@@ -5062,6 +5676,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM26_EARTHQUAKE] =
{
.name = _("TM26"),
.itemId = ITEM_TM26_EARTHQUAKE,
@@ -5078,6 +5694,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM27_RETURN] =
{
.name = _("TM27"),
.itemId = ITEM_TM27_RETURN,
@@ -5094,6 +5712,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM28_DIG] =
{
.name = _("TM28"),
.itemId = ITEM_TM28_DIG,
@@ -5110,6 +5730,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM29_PSYCHIC] =
{
.name = _("TM29"),
.itemId = ITEM_TM29_PSYCHIC,
@@ -5126,6 +5748,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM30_SHADOW_BALL] =
{
.name = _("TM30"),
.itemId = ITEM_TM30_SHADOW_BALL,
@@ -5142,6 +5766,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM31_BRICK_BREAK] =
{
.name = _("TM31"),
.itemId = ITEM_TM31_BRICK_BREAK,
@@ -5158,6 +5784,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM32_DOUBLE_TEAM] =
{
.name = _("TM32"),
.itemId = ITEM_TM32_DOUBLE_TEAM,
@@ -5174,6 +5802,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM33_REFLECT] =
{
.name = _("TM33"),
.itemId = ITEM_TM33_REFLECT,
@@ -5190,6 +5820,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM34_SHOCK_WAVE] =
{
.name = _("TM34"),
.itemId = ITEM_TM34_SHOCK_WAVE,
@@ -5206,6 +5838,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM35_FLAMETHROWER] =
{
.name = _("TM35"),
.itemId = ITEM_TM35_FLAMETHROWER,
@@ -5222,6 +5856,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM36_SLUDGE_BOMB] =
{
.name = _("TM36"),
.itemId = ITEM_TM36_SLUDGE_BOMB,
@@ -5238,6 +5874,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM37_SANDSTORM] =
{
.name = _("TM37"),
.itemId = ITEM_TM37_SANDSTORM,
@@ -5254,6 +5892,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM38_FIRE_BLAST] =
{
.name = _("TM38"),
.itemId = ITEM_TM38_FIRE_BLAST,
@@ -5270,6 +5910,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM39_ROCK_TOMB] =
{
.name = _("TM39"),
.itemId = ITEM_TM39_ROCK_TOMB,
@@ -5286,6 +5928,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM40_AERIAL_ACE] =
{
.name = _("TM40"),
.itemId = ITEM_TM40_AERIAL_ACE,
@@ -5302,6 +5946,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM41_TORMENT] =
{
.name = _("TM41"),
.itemId = ITEM_TM41_TORMENT,
@@ -5318,6 +5964,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM42_FACADE] =
{
.name = _("TM42"),
.itemId = ITEM_TM42_FACADE,
@@ -5334,6 +5982,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM43_SECRET_POWER] =
{
.name = _("TM43"),
.itemId = ITEM_TM43_SECRET_POWER,
@@ -5350,6 +6000,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM44_REST] =
{
.name = _("TM44"),
.itemId = ITEM_TM44_REST,
@@ -5366,6 +6018,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM45_ATTRACT] =
{
.name = _("TM45"),
.itemId = ITEM_TM45_ATTRACT,
@@ -5382,6 +6036,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM46_THIEF] =
{
.name = _("TM46"),
.itemId = ITEM_TM46_THIEF,
@@ -5398,6 +6054,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM47_STEEL_WING] =
{
.name = _("TM47"),
.itemId = ITEM_TM47_STEEL_WING,
@@ -5414,6 +6072,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM48_SKILL_SWAP] =
{
.name = _("TM48"),
.itemId = ITEM_TM48_SKILL_SWAP,
@@ -5430,6 +6090,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM49_SNATCH] =
{
.name = _("TM49"),
.itemId = ITEM_TM49_SNATCH,
@@ -5446,6 +6108,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM50_OVERHEAT] =
{
.name = _("TM50"),
.itemId = ITEM_TM50_OVERHEAT,
@@ -5462,6 +6126,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HM01_CUT] =
{
.name = _("HM01"),
.itemId = ITEM_HM01_CUT,
@@ -5478,6 +6144,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HM02_FLY] =
{
.name = _("HM02"),
.itemId = ITEM_HM02_FLY,
@@ -5494,6 +6162,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HM03_SURF] =
{
.name = _("HM03"),
.itemId = ITEM_HM03_SURF,
@@ -5510,6 +6180,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HM04_STRENGTH] =
{
.name = _("HM04"),
.itemId = ITEM_HM04_STRENGTH,
@@ -5526,6 +6198,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HM05_FLASH] =
{
.name = _("HM05"),
.itemId = ITEM_HM05_FLASH,
@@ -5542,6 +6216,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HM06_ROCK_SMASH] =
{
.name = _("HM06"),
.itemId = ITEM_HM06_ROCK_SMASH,
@@ -5558,6 +6234,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HM07_WATERFALL] =
{
.name = _("HM07"),
.itemId = ITEM_HM07_WATERFALL,
@@ -5574,6 +6252,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HM08_DIVE] =
{
.name = _("HM08"),
.itemId = ITEM_HM08_DIVE,
@@ -5590,6 +6270,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_15B] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -5606,6 +6288,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_15C] =
{
.name = _("????????"),
.itemId = ITEM_NONE,
@@ -5623,8 +6307,9 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//FireRed/LeafGreen key items
+// FireRed/LeafGreen key items
+ [ITEM_OAKS_PARCEL] =
{
.name = _("OAK’S PARCEL"),
.itemId = ITEM_OAKS_PARCEL,
@@ -5641,6 +6326,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_POKE_FLUTE] =
{
.name = _("POKé FLUTE"),
.itemId = ITEM_POKE_FLUTE,
@@ -5657,6 +6344,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SECRET_KEY] =
{
.name = _("SECRET KEY"),
.itemId = ITEM_SECRET_KEY,
@@ -5673,6 +6362,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BIKE_VOUCHER] =
{
.name = _("BIKE VOUCHER"),
.itemId = ITEM_BIKE_VOUCHER,
@@ -5689,6 +6380,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_GOLD_TEETH] =
{
.name = _("GOLD TEETH"),
.itemId = ITEM_GOLD_TEETH,
@@ -5705,6 +6398,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_OLD_AMBER] =
{
.name = _("OLD AMBER"),
.itemId = ITEM_OLD_AMBER,
@@ -5721,6 +6416,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_CARD_KEY] =
{
.name = _("CARD KEY"),
.itemId = ITEM_CARD_KEY,
@@ -5737,6 +6434,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_LIFT_KEY] =
{
.name = _("LIFT KEY"),
.itemId = ITEM_LIFT_KEY,
@@ -5753,6 +6452,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_HELIX_FOSSIL] =
{
.name = _("HELIX FOSSIL"),
.itemId = ITEM_HELIX_FOSSIL,
@@ -5769,6 +6470,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_DOME_FOSSIL] =
{
.name = _("DOME FOSSIL"),
.itemId = ITEM_DOME_FOSSIL,
@@ -5785,6 +6488,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_SILPH_SCOPE] =
{
.name = _("SILPH SCOPE"),
.itemId = ITEM_SILPH_SCOPE,
@@ -5801,6 +6506,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BICYCLE] =
{
.name = _("BICYCLE"),
.itemId = ITEM_BICYCLE,
@@ -5817,6 +6524,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TOWN_MAP] =
{
.name = _("TOWN MAP"),
.itemId = ITEM_TOWN_MAP,
@@ -5833,6 +6542,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_VS_SEEKER] =
{
.name = _("VS SEEKER"),
.itemId = ITEM_VS_SEEKER,
@@ -5849,6 +6560,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_FAME_CHECKER] =
{
.name = _("FAME CHECKER"),
.itemId = ITEM_FAME_CHECKER,
@@ -5865,6 +6578,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TM_CASE] =
{
.name = _("TM CASE"),
.itemId = ITEM_TM_CASE,
@@ -5881,6 +6596,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_BERRY_POUCH] =
{
.name = _("BERRY POUCH"),
.itemId = ITEM_BERRY_POUCH,
@@ -5897,6 +6614,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TEACHY_TV] =
{
.name = _("TEACHY TV"),
.itemId = ITEM_TEACHY_TV,
@@ -5913,6 +6632,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TRI_PASS] =
{
.name = _("TRI-PASS"),
.itemId = ITEM_TRI_PASS,
@@ -5929,6 +6650,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_RAINBOW_PASS] =
{
.name = _("RAINBOW PASS"),
.itemId = ITEM_RAINBOW_PASS,
@@ -5945,6 +6668,8 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
+
+ [ITEM_TEA] =
{
.name = _("TEA"),
.itemId = ITEM_TEA,
@@ -5961,7 +6686,9 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
- {
+
+ [ITEM_MYSTIC_TICKET] =
+ {
.name = _("MYSTICTICKET"),
.itemId = ITEM_MYSTIC_TICKET,
.price = 0,
@@ -5977,7 +6704,9 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
- {
+
+ [ITEM_AURORA_TICKET] =
+ {
.name = _("AURORATICKET"),
.itemId = ITEM_AURORA_TICKET,
.price = 0,
@@ -5993,7 +6722,9 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
- {
+
+ [ITEM_POWDER_JAR] =
+ {
.name = _("POWDER JAR"),
.itemId = ITEM_POWDER_JAR,
.price = 0,
@@ -6009,7 +6740,9 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
- {
+
+ [ITEM_RUBY] =
+ {
.name = _("RUBY"),
.itemId = ITEM_RUBY,
.price = 0,
@@ -6025,7 +6758,9 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
- {
+
+ [ITEM_SAPPHIRE] =
+ {
.name = _("SAPPHIRE"),
.itemId = ITEM_SAPPHIRE,
.price = 0,
@@ -6042,9 +6777,10 @@ const struct Item gItems[] =
.secondaryId = 0,
},
-//Emerald-specific key items
+// Emerald-specific key items
- {
+ [ITEM_MAGMA_EMBLEM] =
+ {
.name = _("MAGMA EMBLEM"),
.itemId = ITEM_MAGMA_EMBLEM,
.price = 0,
@@ -6060,7 +6796,9 @@ const struct Item gItems[] =
.battleUseFunc = NULL,
.secondaryId = 0,
},
- {
+
+ [ITEM_OLD_SEA_MAP] =
+ {
.name = _("OLD SEA MAP"),
.itemId = ITEM_OLD_SEA_MAP,
.price = 0,
diff --git a/src/data/pokedex_orders.h b/src/data/pokedex_orders.h
deleted file mode 100644
index 61fbd289c..000000000
--- a/src/data/pokedex_orders.h
+++ /dev/null
@@ -1,1199 +0,0 @@
-#ifndef GUARD_DATA_POKEDEX_ORDERS
-#define GUARD_DATA_POKEDEX_ORDERS
-
-const u16 gPokedexOrder_Alphabetical[] =
-{
- 387,
- 388,
- 389,
- 390,
- 391,
- 392,
- 393,
- 394,
- 395,
- 396,
- 397,
- 398,
- 399,
- 400,
- 401,
- 402,
- 403,
- 404,
- 405,
- 406,
- 407,
- 408,
- 409,
- 410,
- 411,
- 63, // Abra
- 359, // Absol
- 142, // Aerodactyl
- 306, // Aggron
- 190, // Aipom
- 65, // Alakazam
- 334, // Altaria
- 181, // Ampharos
- 347, // Anorith
- 24, // Arbok
- 59, // Arcanine
- 168, // Ariados
- 348, // Armaldo
- 304, // Aron
- 144, // Articuno
- 184, // Azumarill
- 298, // Azurill
- 371, // Bagon
- 343, // Baltoy
- 354, // Banette
- 339, // Barboach
- 153, // Bayleef
- 267, // Beautifly
- 15, // Beedrill
- 374, // Beldum
- 182, // Bellossom
- 69, // Bellsprout
- 9, // Blastoise
- 257, // Blaziken
- 242, // Blissey
- 286, // Breloom
- 1, // Bulbasaur
- 12, // Butterfree
- 331, // Cacnea
- 332, // Cacturne
- 323, // Camerupt
- 318, // Carvanha
- 268, // Cascoon
- 351, // Castform
- 10, // Caterpie
- 251, // Celebi
- 113, // Chansey
- 6, // Charizard
- 4, // Charmander
- 5, // Charmeleon
- 152, // Chikorita
- 358, // Chimecho
- 170, // Chinchou
- 366, // Clamperl
- 344, // Claydol
- 36, // Clefable
- 35, // Clefairy
- 173, // Cleffa
- 91, // Cloyster
- 256, // Combusken
- 341, // Corphish
- 222, // Corsola
- 346, // Cradily
- 342, // Crawdaunt
- 169, // Crobat
- 159, // Croconaw
- 104, // Cubone
- 155, // Cyndaquil
- 301, // Delcatty
- 225, // Delibird
- 386, // Deoxys
- 87, // Dewgong
- 50, // Diglett
- 132, // Ditto
- 85, // Dodrio
- 84, // Doduo
- 232, // Donphan
- 148, // Dragonair
- 149, // Dragonite
- 147, // Dratini
- 96, // Drowzee
- 51, // Dugtrio
- 206, // Dunsparce
- 356, // Dusclops
- 355, // Duskull
- 269, // Dustox
- 133, // Eevee
- 23, // Ekans
- 125, // Electabuzz
- 309, // Electrike
- 101, // Electrode
- 239, // Elekid
- 244, // Entei
- 196, // Espeon
- 102, // Exeggcute
- 103, // Exeggutor
- 295, // Exploud
- 83, // Farfetch'd
- 22, // Fearow
- 349, // Feebas
- 160, // Feraligatr
- 180, // Flaaffy
- 136, // Flareon
- 330, // Flygon
- 205, // Forretress
- 162, // Furret
- 282, // Gardevoir
- 92, // Gastly
- 94, // Gengar
- 74, // Geodude
- 203, // Girafarig
- 362, // Glalie
- 207, // Gligar
- 44, // Gloom
- 42, // Golbat
- 118, // Goldeen
- 55, // Golduck
- 76, // Golem
- 368, // Gorebyss
- 210, // Granbull
- 75, // Graveler
- 88, // Grimer
- 383, // Groudon
- 253, // Grovyle
- 58, // Growlithe
- 326, // Grumpig
- 316, // Gulpin
- 130, // Gyarados
- 297, // Hariyama
- 93, // Haunter
- 214, // Heracross
- 107, // Hitmonchan
- 106, // Hitmonlee
- 237, // Hitmontop
- 250, // Ho-Oh
- 163, // Hoothoot
- 187, // Hoppip
- 116, // Horsea
- 229, // Houndoom
- 228, // Houndour
- 367, // Huntail
- 97, // Hypno
- 174, // Igglybuff
- 314, // Illumise
- 2, // Ivysaur
- 39, // Jigglypuff
- 385, // Jirachi
- 135, // Jolteon
- 189, // Jumpluff
- 124, // Jynx
- 140, // Kabuto
- 141, // Kabutops
- 64, // Kadabra
- 14, // Kakuna
- 115, // Kangaskhan
- 352, // Kecleon
- 230, // Kingdra
- 99, // Kingler
- 281, // Kirlia
- 109, // Koffing
- 98, // Krabby
- 382, // Kyogre
- 305, // Lairon
- 171, // Lanturn
- 131, // Lapras
- 246, // Larvitar
- 380, // Latias
- 381, // Latios
- 166, // Ledian
- 165, // Ledyba
- 108, // Lickitung
- 345, // Lileep
- 264, // Linoone
- 271, // Lombre
- 270, // Lotad
- 294, // Loudred
- 272, // Ludicolo
- 249, // Lugia
- 337, // Lunatone
- 370, // Luvdisc
- 68, // Machamp
- 67, // Machoke
- 66, // Machop
- 240, // Magby
- 219, // Magcargo
- 129, // Magikarp
- 126, // Magmar
- 81, // Magnemite
- 82, // Magneton
- 296, // Makuhita
- 310, // Manectric
- 56, // Mankey
- 226, // Mantine
- 179, // Mareep
- 183, // Marill
- 105, // Marowak
- 259, // Marshtomp
- 284, // Masquerain
- 303, // Mawile
- 308, // Medicham
- 307, // Meditite
- 154, // Meganium
- 52, // Meowth
- 376, // Metagross
- 375, // Metang
- 11, // Metapod
- 151, // Mew
- 150, // Mewtwo
- 262, // Mightyena
- 350, // Milotic
- 241, // Miltank
- 312, // Minun
- 200, // Misdreavus
- 146, // Moltres
- 122, // Mr. mime
- 258, // Mudkip
- 89, // Muk
- 198, // Murkrow
- 177, // Natu
- 34, // Nidoking
- 31, // Nidoqueen
- 29, // Nidoran?
- 32, // Nidoran?
- 30, // Nidorina
- 33, // Nidorino
- 290, // Nincada
- 38, // Ninetales
- 291, // Ninjask
- 164, // Noctowl
- 299, // Nosepass
- 322, // Numel
- 274, // Nuzleaf
- 224, // Octillery
- 43, // Oddish
- 138, // Omanyte
- 139, // Omastar
- 95, // Onix
- 46, // Paras
- 47, // Parasect
- 279, // Pelipper
- 53, // Persian
- 231, // Phanpy
- 172, // Pichu
- 18, // Pidgeot
- 17, // Pidgeotto
- 16, // Pidgey
- 25, // Pikachu
- 221, // Piloswine
- 204, // Pineco
- 127, // Pinsir
- 311, // Plusle
- 186, // Politoed
- 60, // Poliwag
- 61, // Poliwhirl
- 62, // Poliwrath
- 77, // Ponyta
- 261, // Poochyena
- 137, // Porygon
- 233, // Porygon2
- 57, // Primeape
- 54, // Psyduck
- 247, // Pupitar
- 195, // Quagsire
- 156, // Quilava
- 211, // Qwilfish
- 26, // Raichu
- 243, // Raikou
- 280, // Ralts
- 78, // Rapidash
- 20, // Raticate
- 19, // Rattata
- 384, // Rayquaza
- 378, // Regice
- 377, // Regirock
- 379, // Registeel
- 369, // Relicanth
- 223, // Remoraid
- 112, // Rhydon
- 111, // Rhyhorn
- 315, // Roselia
- 302, // Sableye
- 373, // Salamence
- 27, // Sandshrew
- 28, // Sandslash
- 254, // Sceptile
- 212, // Scizor
- 123, // Scyther
- 117, // Seadra
- 119, // Seaking
- 364, // Sealeo
- 273, // Seedot
- 86, // Seel
- 161, // Sentret
- 336, // Seviper
- 319, // Sharpedo
- 292, // Shedinja
- 372, // Shelgon
- 90, // Shellder
- 275, // Shiftry
- 285, // Shroomish
- 213, // Shuckle
- 353, // Shuppet
- 266, // Silcoon
- 227, // Skarmory
- 188, // Skiploom
- 300, // Skitty
- 289, // Slaking
- 287, // Slakoth
- 80, // Slowbro
- 199, // Slowking
- 79, // Slowpoke
- 218, // Slugma
- 235, // Smeargle
- 238, // Smoochum
- 215, // Sneasel
- 143, // Snorlax
- 361, // Snorunt
- 209, // Snubbull
- 338, // Solrock
- 21, // Spearow
- 363, // Spheal
- 167, // Spinarak
- 327, // Spinda
- 325, // Spoink
- 7, // Squirtle
- 234, // Stantler
- 121, // Starmie
- 120, // Staryu
- 208, // Steelix
- 185, // Sudowoodo
- 245, // Suicune
- 192, // Sunflora
- 191, // Sunkern
- 283, // Surskit
- 333, // Swablu
- 317, // Swalot
- 260, // Swampert
- 277, // Swellow
- 220, // Swinub
- 276, // Taillow
- 114, // Tangela
- 128, // Tauros
- 216, // Teddiursa
- 72, // Tentacool
- 73, // Tentacruel
- 175, // Togepi
- 176, // Togetic
- 255, // Torchic
- 324, // Torkoal
- 158, // Totodile
- 328, // Trapinch
- 252, // Treecko
- 357, // Tropius
- 157, // Typhlosion
- 248, // Tyranitar
- 236, // Tyrogue
- 197, // Umbreon
- 201, // Unown
- 217, // Ursaring
- 134, // Vaporeon
- 49, // Venomoth
- 48, // Venonat
- 3, // Venusaur
- 329, // Vibrava
- 71, // Victreebel
- 288, // Vigoroth
- 45, // Vileplume
- 313, // Volbeat
- 100, // Voltorb
- 37, // Vulpix
- 320, // Wailmer
- 321, // Wailord
- 365, // Walrein
- 8, // Wartortle
- 13, // Weedle
- 70, // Weepinbell
- 110, // Weezing
- 340, // Whiscash
- 293, // Whismur
- 40, // Wigglytuff
- 278, // Wingull
- 202, // Wobbuffet
- 194, // Wooper
- 265, // Wurmple
- 360, // Wynaut
- 178, // Xatu
- 193, // Yanma
- 335, // Zangoose
- 145, // Zapdos
- 263, // Zigzagoon
- 41, // Zubat
-};
-
-const u16 gPokedexOrder_Weight[] =
-{
- 92, // Gastly
- 93, // Haunter
- 187, // Hoppip
- 50, // Diglett
- 351, // Castform
- 109, // Koffing
- 174, // Igglybuff
- 200, // Misdreavus
- 358, // Chimecho
- 188, // Skiploom
- 385, // Jirachi
- 333, // Swablu
- 292, // Shedinja
- 175, // Togepi
- 283, // Surskit
- 16, // Pidgey
- 191, // Sunkern
- 339, // Barboach
- 172, // Pichu
- 298, // Azurill
- 315, // Roselia
- 177, // Natu
- 21, // Spearow
- 198, // Murkrow
- 353, // Shuppet
- 276, // Taillow
- 102, // Exeggcute
- 255, // Torchic
- 270, // Lotad
- 10, // Caterpie
- 189, // Jumpluff
- 173, // Cleffa
- 13, // Weedle
- 176, // Togetic
- 147, // Dratini
- 19, // Rattata
- 284, // Masquerain
- 265, // Wurmple
- 211, // Qwilfish
- 151, // Mew
- 90, // Shellder
- 273, // Seedot
- 132, // Ditto
- 69, // Bellsprout
- 311, // Plusle
- 52, // Meowth
- 312, // Minun
- 285, // Shroomish
- 251, // Celebi
- 222, // Corsola
- 252, // Treecko
- 327, // Spinda
- 201, // Unown
- 46, // Paras
- 43, // Oddish
- 39, // Jigglypuff
- 290, // Nincada
- 182, // Bellossom
- 81, // Magnemite
- 25, // Pikachu
- 238, // Smoochum
- 161, // Sentret
- 70, // Weepinbell
- 152, // Chikorita
- 220, // Swinub
- 133, // Eevee
- 98, // Krabby
- 104, // Cubone
- 280, // Ralts
- 1, // Bulbasaur
- 23, // Ekans
- 29, // Nidoran?
- 204, // Pineco
- 349, // Feebas
- 138, // Omanyte
- 41, // Zubat
- 35, // Clefairy
- 258, // Mudkip
- 209, // Snubbull
- 179, // Mareep
- 155, // Cyndaquil
- 116, // Horsea
- 4, // Charmander
- 192, // Sunflora
- 183, // Marill
- 194, // Wooper
- 167, // Spinarak
- 44, // Gloom
- 370, // Luvdisc
- 216, // Teddiursa
- 32, // Nidoran?
- 7, // Squirtle
- 278, // Wingull
- 158, // Totodile
- 110, // Weezing
- 37, // Vulpix
- 11, // Metapod
- 266, // Silcoon
- 129, // Magikarp
- 14, // Kakuna
- 316, // Gulpin
- 100, // Voltorb
- 165, // Ledyba
- 228, // Houndour
- 300, // Skitty
- 302, // Sableye
- 307, // Meditite
- 341, // Corphish
- 190, // Aipom
- 268, // Cascoon
- 303, // Mawile
- 140, // Kabuto
- 40, // Wigglytuff
- 27, // Sandshrew
- 223, // Remoraid
- 291, // Ninjask
- 170, // Chinchou
- 60, // Poliwag
- 347, // Anorith
- 49, // Venomoth
- 354, // Banette
- 2, // Ivysaur
- 180, // Flaaffy
- 261, // Poochyena
- 360, // Wynaut
- 206, // Dunsparce
- 178, // Xatu
- 355, // Duskull
- 83, // Farfetch'd
- 328, // Trapinch
- 118, // Goldeen
- 309, // Electrike
- 329, // Vibrava
- 71, // Victreebel
- 153, // Bayleef
- 225, // Delibird
- 293, // Whismur
- 148, // Dragonair
- 361, // Snorunt
- 263, // Zigzagoon
- 314, // Illumise
- 313, // Volbeat
- 20, // Raticate
- 45, // Vileplume
- 156, // Quilava
- 5, // Charmeleon
- 58, // Growlithe
- 256, // Combusken
- 66, // Machop
- 63, // Abra
- 33, // Nidorino
- 54, // Psyduck
- 277, // Swellow
- 38, // Ninetales
- 30, // Nidorina
- 61, // Poliwhirl
- 74, // Geodude
- 281, // Kirlia
- 213, // Shuckle
- 334, // Altaria
- 318, // Carvanha
- 236, // Tyrogue
- 163, // Hoothoot
- 240, // Magby
- 343, // Baltoy
- 253, // Grovyle
- 352, // Kecleon
- 171, // Lanturn
- 8, // Wartortle
- 368, // Gorebyss
- 369, // Relicanth
- 239, // Elekid
- 340, // Whiscash
- 345, // Lileep
- 322, // Numel
- 287, // Slakoth
- 135, // Jolteon
- 159, // Croconaw
- 136, // Flareon
- 117, // Seadra
- 196, // Espeon
- 367, // Huntail
- 197, // Umbreon
- 259, // Marshtomp
- 274, // Nuzleaf
- 215, // Sneasel
- 56, // Mankey
- 279, // Pelipper
- 267, // Beautifly
- 224, // Octillery
- 184, // Azumarill
- 202, // Wobbuffet
- 134, // Vaporeon
- 28, // Sandslash
- 47, // Parasect
- 15, // Beedrill
- 89, // Muk
- 17, // Pidgeotto
- 88, // Grimer
- 26, // Raichu
- 77, // Ponyta
- 125, // Electabuzz
- 48, // Venonat
- 325, // Spoink
- 356, // Dusclops
- 308, // Medicham
- 269, // Dustox
- 53, // Persian
- 12, // Butterfree
- 57, // Primeape
- 96, // Drowzee
- 162, // Furret
- 233, // Porygon2
- 271, // Lombre
- 264, // Linoone
- 301, // Delcatty
- 342, // Crawdaunt
- 51, // Dugtrio
- 168, // Ariados
- 231, // Phanpy
- 186, // Politoed
- 120, // Staryu
- 113, // Chansey
- 139, // Omastar
- 114, // Tangela
- 218, // Slugma
- 229, // Houndoom
- 166, // Ledian
- 79, // Slowpoke
- 137, // Porygon
- 262, // Mightyena
- 193, // Yanma
- 22, // Fearow
- 185, // Sudowoodo
- 119, // Seaking
- 286, // Breloom
- 84, // Doduo
- 18, // Pidgeot
- 363, // Spheal
- 36, // Clefable
- 380, // Latias
- 310, // Manectric
- 335, // Zangoose
- 141, // Kabutops
- 94, // Gengar
- 294, // Loudred
- 124, // Jynx
- 164, // Noctowl
- 203, // Girafarig
- 371, // Bagon
- 126, // Magmar
- 105, // Marowak
- 72, // Tentacool
- 288, // Vigoroth
- 242, // Blissey
- 359, // Absol
- 65, // Alakazam
- 237, // Hitmontop
- 282, // Gardevoir
- 210, // Granbull
- 106, // Hitmonlee
- 107, // Hitmonchan
- 227, // Skarmory
- 331, // Cacnea
- 257, // Blaziken
- 254, // Sceptile
- 336, // Seviper
- 366, // Clamperl
- 145, // Zapdos
- 214, // Heracross
- 62, // Poliwrath
- 122, // Mr. mime
- 127, // Pinsir
- 272, // Ludicolo
- 73, // Tentacruel
- 42, // Golbat
- 219, // Magcargo
- 144, // Articuno
- 221, // Piloswine
- 123, // Scyther
- 64, // Kadabra
- 235, // Smeargle
- 142, // Aerodactyl
- 275, // Shiftry
- 99, // Kingler
- 31, // Nidoqueen
- 82, // Magneton
- 304, // Aron
- 381, // Latios
- 146, // Moltres
- 346, // Cradily
- 386, // Deoxys
- 181, // Ampharos
- 34, // Nidoking
- 207, // Gligar
- 24, // Arbok
- 108, // Lickitung
- 101, // Electrode
- 348, // Armaldo
- 67, // Machoke
- 234, // Stantler
- 326, // Grumpig
- 246, // Larvitar
- 169, // Crobat
- 195, // Quagsire
- 241, // Miltank
- 97, // Hypno
- 55, // Golduck
- 332, // Cacturne
- 80, // Slowbro
- 157, // Typhlosion
- 199, // Slowking
- 115, // Kangaskhan
- 121, // Starmie
- 317, // Swalot
- 324, // Torkoal
- 260, // Swampert
- 330, // Flygon
- 295, // Exploud
- 85, // Dodrio
- 9, // Blastoise
- 296, // Makuhita
- 364, // Sealeo
- 128, // Tauros
- 319, // Sharpedo
- 160, // Feraligatr
- 86, // Seel
- 6, // Charizard
- 78, // Rapidash
- 374, // Beldum
- 299, // Nosepass
- 3, // Venusaur
- 357, // Tropius
- 154, // Meganium
- 373, // Salamence
- 75, // Graveler
- 344, // Claydol
- 372, // Shelgon
- 111, // Rhyhorn
- 212, // Scizor
- 87, // Dewgong
- 112, // Rhydon
- 232, // Donphan
- 103, // Exeggutor
- 305, // Lairon
- 150, // Mewtwo
- 217, // Ursaring
- 205, // Forretress
- 68, // Machamp
- 320, // Wailmer
- 289, // Slaking
- 91, // Cloyster
- 365, // Walrein
- 247, // Pupitar
- 230, // Kingdra
- 338, // Solrock
- 59, // Arcanine
- 350, // Milotic
- 337, // Lunatone
- 378, // Regice
- 243, // Raikou
- 245, // Suicune
- 244, // Entei
- 250, // Ho-Oh
- 248, // Tyranitar
- 375, // Metang
- 379, // Registeel
- 384, // Rayquaza
- 95, // Onix
- 149, // Dragonite
- 249, // Lugia
- 131, // Lapras
- 323, // Camerupt
- 226, // Mantine
- 377, // Regirock
- 130, // Gyarados
- 297, // Hariyama
- 362, // Glalie
- 76, // Golem
- 382, // Kyogre
- 306, // Aggron
- 321, // Wailord
- 208, // Steelix
- 143, // Snorlax
- 376, // Metagross
- 383, // Groudon
-};
-
-const u16 gPokedexOrder_Height[] =
-{
- 50, // Diglett
- 298, // Azurill
- 177, // Natu
- 13, // Weedle
- 172, // Pichu
- 173, // Cleffa
- 175, // Togepi
- 351, // Castform
- 174, // Igglybuff
- 10, // Caterpie
- 276, // Taillow
- 132, // Ditto
- 133, // Eevee
- 315, // Roselia
- 21, // Spearow
- 16, // Pidgey
- 191, // Sunkern
- 90, // Shellder
- 19, // Rattata
- 81, // Magnemite
- 46, // Paras
- 265, // Wurmple
- 385, // Jirachi
- 104, // Cubone
- 258, // Mudkip
- 194, // Wooper
- 116, // Horsea
- 52, // Meowth
- 29, // Nidoran?
- 220, // Swinub
- 151, // Mew
- 333, // Swablu
- 304, // Aron
- 311, // Plusle
- 312, // Minun
- 102, // Exeggcute
- 25, // Pikachu
- 182, // Bellossom
- 316, // Gulpin
- 263, // Zigzagoon
- 285, // Shroomish
- 138, // Omanyte
- 331, // Cacnea
- 98, // Krabby
- 280, // Ralts
- 187, // Hoppip
- 255, // Torchic
- 366, // Clamperl
- 74, // Geodude
- 183, // Marill
- 339, // Barboach
- 238, // Smoochum
- 100, // Voltorb
- 290, // Nincada
- 302, // Sableye
- 198, // Murkrow
- 211, // Qwilfish
- 7, // Squirtle
- 252, // Treecko
- 343, // Baltoy
- 43, // Oddish
- 270, // Lotad
- 39, // Jigglypuff
- 283, // Surskit
- 155, // Cyndaquil
- 140, // Kabuto
- 264, // Linoone
- 324, // Torkoal
- 32, // Nidoran?
- 167, // Spinarak
- 56, // Mankey
- 273, // Seedot
- 261, // Poochyena
- 231, // Phanpy
- 201, // Unown
- 170, // Chinchou
- 233, // Porygon2
- 60, // Poliwag
- 371, // Bagon
- 349, // Feebas
- 353, // Shuppet
- 158, // Totodile
- 251, // Celebi
- 360, // Wynaut
- 27, // Sandshrew
- 358, // Chimecho
- 370, // Luvdisc
- 228, // Houndour
- 266, // Silcoon
- 309, // Electrike
- 4, // Charmander
- 307, // Meditite
- 278, // Wingull
- 223, // Remoraid
- 341, // Corphish
- 222, // Corsola
- 314, // Illumise
- 209, // Snubbull
- 37, // Vulpix
- 246, // Larvitar
- 374, // Beldum
- 293, // Whismur
- 204, // Pineco
- 239, // Elekid
- 35, // Clefairy
- 213, // Shuckle
- 216, // Teddiursa
- 14, // Kakuna
- 300, // Skitty
- 176, // Togetic
- 118, // Goldeen
- 303, // Mawile
- 179, // Mareep
- 188, // Skiploom
- 109, // Koffing
- 51, // Dugtrio
- 268, // Cascoon
- 322, // Numel
- 347, // Anorith
- 313, // Volbeat
- 163, // Hoothoot
- 328, // Trapinch
- 325, // Spoink
- 11, // Metapod
- 69, // Bellsprout
- 361, // Snorunt
- 20, // Raticate
- 259, // Marshtomp
- 277, // Swellow
- 240, // Magby
- 58, // Growlithe
- 200, // Misdreavus
- 1, // Bulbasaur
- 236, // Tyrogue
- 218, // Slugma
- 287, // Slakoth
- 281, // Kirlia
- 190, // Aipom
- 135, // Jolteon
- 30, // Nidorina
- 184, // Azumarill
- 292, // Shedinja
- 66, // Machop
- 291, // Ninjask
- 284, // Masquerain
- 355, // Duskull
- 192, // Sunflora
- 189, // Jumpluff
- 120, // Staryu
- 180, // Flaaffy
- 363, // Spheal
- 54, // Psyduck
- 219, // Magcargo
- 83, // Farfetch'd
- 41, // Zubat
- 137, // Porygon
- 161, // Sentret
- 318, // Carvanha
- 44, // Gloom
- 26, // Raichu
- 129, // Magikarp
- 215, // Sneasel
- 305, // Lairon
- 256, // Combusken
- 224, // Octillery
- 33, // Nidorino
- 136, // Flareon
- 225, // Delibird
- 72, // Tentacool
- 63, // Abra
- 253, // Grovyle
- 340, // Whiscash
- 156, // Quilava
- 196, // Espeon
- 88, // Grimer
- 152, // Chikorita
- 326, // Grumpig
- 299, // Nosepass
- 53, // Persian
- 262, // Mightyena
- 48, // Venonat
- 82, // Magneton
- 77, // Ponyta
- 296, // Makuhita
- 337, // Lunatone
- 28, // Sandslash
- 96, // Drowzee
- 114, // Tangela
- 57, // Primeape
- 165, // Ledyba
- 40, // Wigglytuff
- 47, // Parasect
- 139, // Omastar
- 294, // Loudred
- 8, // Wartortle
- 75, // Graveler
- 197, // Umbreon
- 345, // Lileep
- 61, // Poliwhirl
- 134, // Vaporeon
- 15, // Beedrill
- 105, // Marowak
- 70, // Weepinbell
- 369, // Relicanth
- 111, // Rhyhorn
- 2, // Ivysaur
- 352, // Kecleon
- 274, // Nuzleaf
- 267, // Beautifly
- 17, // Pidgeotto
- 168, // Ariados
- 86, // Seel
- 186, // Politoed
- 159, // Croconaw
- 113, // Chansey
- 354, // Banette
- 232, // Donphan
- 121, // Starmie
- 5, // Charmeleon
- 221, // Piloswine
- 12, // Butterfree
- 329, // Vibrava
- 125, // Electabuzz
- 342, // Crawdaunt
- 301, // Delcatty
- 334, // Altaria
- 372, // Shelgon
- 38, // Ninetales
- 207, // Gligar
- 364, // Sealeo
- 327, // Spinda
- 247, // Pupitar
- 79, // Slowpoke
- 338, // Solrock
- 241, // Miltank
- 22, // Fearow
- 45, // Vileplume
- 89, // Muk
- 205, // Forretress
- 185, // Sudowoodo
- 359, // Absol
- 193, // Yanma
- 269, // Dustox
- 108, // Lickitung
- 235, // Smeargle
- 171, // Lanturn
- 101, // Electrode
- 271, // Lombre
- 286, // Breloom
- 153, // Bayleef
- 117, // Seadra
- 110, // Weezing
- 279, // Pelipper
- 375, // Metang
- 31, // Nidoqueen
- 332, // Cacturne
- 275, // Shiftry
- 308, // Medicham
- 335, // Zangoose
- 141, // Kabutops
- 99, // Kingler
- 64, // Kadabra
- 119, // Seaking
- 36, // Clefable
- 126, // Magmar
- 202, // Wobbuffet
- 92, // Gastly
- 122, // Mr. mime
- 62, // Poliwrath
- 128, // Tauros
- 380, // Latias
- 181, // Ampharos
- 288, // Vigoroth
- 166, // Ledian
- 76, // Golem
- 365, // Walrein
- 84, // Doduo
- 229, // Houndoom
- 34, // Nidoking
- 124, // Jynx
- 107, // Hitmonchan
- 234, // Stantler
- 210, // Granbull
- 237, // Hitmontop
- 195, // Quagsire
- 344, // Claydol
- 260, // Swampert
- 242, // Blissey
- 272, // Ludicolo
- 295, // Exploud
- 206, // Dunsparce
- 127, // Pinsir
- 91, // Cloyster
- 67, // Machoke
- 203, // Girafarig
- 18, // Pidgeot
- 178, // Xatu
- 346, // Cradily
- 106, // Hitmonlee
- 49, // Venomoth
- 94, // Gengar
- 214, // Heracross
- 362, // Glalie
- 123, // Scyther
- 373, // Salamence
- 310, // Manectric
- 348, // Armaldo
- 65, // Alakazam
- 97, // Hypno
- 164, // Noctowl
- 73, // Tentacruel
- 356, // Dusclops
- 145, // Zapdos
- 42, // Golbat
- 376, // Metagross
- 282, // Gardevoir
- 9, // Blastoise
- 80, // Slowbro
- 93, // Haunter
- 68, // Machamp
- 377, // Regirock
- 317, // Swalot
- 254, // Sceptile
- 227, // Skarmory
- 55, // Golduck
- 386, // Deoxys
- 71, // Victreebel
- 78, // Rapidash
- 6, // Charizard
- 367, // Huntail
- 87, // Dewgong
- 144, // Articuno
- 157, // Typhlosion
- 142, // Aerodactyl
- 368, // Gorebyss
- 217, // Ursaring
- 154, // Meganium
- 378, // Regice
- 212, // Scizor
- 230, // Kingdra
- 147, // Dratini
- 85, // Dodrio
- 319, // Sharpedo
- 169, // Crobat
- 162, // Furret
- 59, // Arcanine
- 243, // Raikou
- 257, // Blaziken
- 323, // Camerupt
- 112, // Rhydon
- 379, // Registeel
- 23, // Ekans
- 330, // Flygon
- 357, // Tropius
- 381, // Latios
- 245, // Suicune
- 146, // Moltres
- 3, // Venusaur
- 103, // Exeggutor
- 199, // Slowking
- 248, // Tyranitar
- 289, // Slaking
- 320, // Wailmer
- 150, // Mewtwo
- 306, // Aggron
- 143, // Snorlax
- 226, // Mantine
- 244, // Entei
- 149, // Dragonite
- 115, // Kangaskhan
- 297, // Hariyama
- 160, // Feraligatr
- 131, // Lapras
- 336, // Seviper
- 24, // Arbok
- 383, // Groudon
- 250, // Ho-Oh
- 148, // Dragonair
- 382, // Kyogre
- 249, // Lugia
- 350, // Milotic
- 130, // Gyarados
- 384, // Rayquaza
- 95, // Onix
- 208, // Steelix
- 321, // Wailord
-};
-
-#endif // GUARD_DATA_POKEDEX_ORDERS
diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h
index bc6572b46..078304888 100644
--- a/src/data/pokemon/base_stats.h
+++ b/src/data/pokemon/base_stats.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_BASE_STATS_H
-#define GUARD_BASE_STATS_H
-
// Maximum value for a female pokemon is 254 (MON_FEMALE) which is 100% female.
// 255 (MON_GENDERLESS) is reserved for genderless pokemon.
#define PERCENT_FEMALE(percent) min(254, ((percent * 255) / 100))
@@ -13572,5 +13569,3 @@ const struct BaseStats gBaseStats[] =
.noFlip = FALSE,
}
};
-
-#endif //GUARD_BASE_STATS_H
diff --git a/src/data/pokemon/cry_ids.h b/src/data/pokemon/cry_ids.h
index 1c1c32dde..0c7dd8dad 100644
--- a/src/data/pokemon/cry_ids.h
+++ b/src/data/pokemon/cry_ids.h
@@ -1,6 +1,3 @@
-#ifndef POKEEMERALD_CRY_IDS_H
-#define POKEEMERALD_CRY_IDS_H
-
const u16 gSpeciesIdToCryId[] =
{
273, // TREECKO
@@ -139,5 +136,3 @@ const u16 gSpeciesIdToCryId[] =
386, // DEOXYS
387 // CHIMECHO
};
-
-#endif //POKEEMERALD_CRY_IDS_H
diff --git a/src/data/pokemon/egg_moves.h b/src/data/pokemon/egg_moves.h
index 3d74868b4..f8c250c6d 100644
--- a/src/data/pokemon/egg_moves.h
+++ b/src/data/pokemon/egg_moves.h
@@ -1,12 +1,7 @@
-#ifndef POKEEMERALD_DAYCARE_H
-#define POKEEMERALD_DAYCARE_H
-
#define EGG_MOVES_SPECIES_OFFSET 20000
#define EGG_MOVES_TERMINATOR 0xFFFF
#define egg_moves(species, moves...) (SPECIES_##species + EGG_MOVES_SPECIES_OFFSET), moves
-#endif // POKEEMERALD_DAYCARE_H
-
const u16 gEggMoves[] = {
egg_moves(BULBASAUR,
MOVE_LIGHT_SCREEN,
diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h
index 8629ac9b1..c9b0cf716 100644
--- a/src/data/pokemon/evolution.h
+++ b/src/data/pokemon/evolution.h
@@ -1,6 +1,3 @@
-#ifndef POKEEMERALD_EVOLUTION_H
-#define POKEEMERALD_EVOLUTION_H
-
const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
{
[SPECIES_BULBASAUR] = {{EVO_LEVEL, 16, SPECIES_IVYSAUR}},
@@ -188,5 +185,3 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
[SPECIES_BELDUM] = {{EVO_LEVEL, 20, SPECIES_METANG}},
[SPECIES_METANG] = {{EVO_LEVEL, 45, SPECIES_METAGROSS}},
};
-
-#endif //POKEEMERALD_EVOLUTION_H
diff --git a/src/data/pokemon/experience_tables.h b/src/data/pokemon/experience_tables.h
index 9fd5a2fae..15bcadeb2 100644
--- a/src/data/pokemon/experience_tables.h
+++ b/src/data/pokemon/experience_tables.h
@@ -1,6 +1,3 @@
-#ifndef POKEEMERALD_EXPERIENCE_TABLES_H
-#define POKEEMERALD_EXPERIENCE_TABLES_H
-
#define SQUARE(n)(n * n)
#define CUBE(n)(n * n * n)
@@ -845,5 +842,3 @@ const u32 gExperienceTables[][MAX_LEVEL + 1] =
EXP_MEDIUM_FAST(100),
}
};
-
-#endif //POKEEMERALD_EXPERIENCE_TABLES_H
diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h
index 6ba0d694e..9f5720a66 100644
--- a/src/data/pokemon/item_effects.h
+++ b/src/data/pokemon/item_effects.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_ITEM_EFFECTS_H
-#define GUARD_ITEM_EFFECTS_H
-
const u8 gItemEffect_Potion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20};
const u8 gItemEffect_Antidote[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00};
const u8 gItemEffect_BurnHeal[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00};
@@ -237,5 +234,3 @@ const u8 *const gItemEffectTable[] =
NULL,
NULL
};
-
-#endif //GUARD_ITEM_EFFECTS_H
diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h
index 0f648526c..5ac7b3bd7 100644
--- a/src/data/pokemon/level_up_learnset_pointers.h
+++ b/src/data/pokemon/level_up_learnset_pointers.h
@@ -1,6 +1,3 @@
-#ifndef POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H
-#define POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H
-
const u16 *const gLevelUpLearnsets[NUM_SPECIES] =
{
[SPECIES_NONE] = sBulbasaurLevelUpLearnset,
@@ -416,5 +413,3 @@ const u16 *const gLevelUpLearnsets[NUM_SPECIES] =
[SPECIES_DEOXYS] = sDeoxysLevelUpLearnset,
[SPECIES_CHIMECHO] = sChimechoLevelUpLearnset,
};
-
-#endif //POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H
diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h
index 062873aee..727cc0959 100644
--- a/src/data/pokemon/level_up_learnsets.h
+++ b/src/data/pokemon/level_up_learnsets.h
@@ -1,6 +1,3 @@
-#ifndef POKEEMERALD_LEVEL_UP_LEARNSETS_H
-#define POKEEMERALD_LEVEL_UP_LEARNSETS_H
-
#define LEVEL_UP_MOVE(lvl, move) ((lvl << 9) | move)
#define LEVEL_UP_END 0xffff
@@ -5619,5 +5616,3 @@ static const u16 sChimechoLevelUpLearnset[] = {
LEVEL_UP_MOVE(46, MOVE_PSYCHIC),
LEVEL_UP_END
};
-
-#endif //POKEEMERALD_LEVEL_UP_LEARNSETS_H
diff --git a/src/data/pokemon/pokedex_entries.h b/src/data/pokemon/pokedex_entries.h
new file mode 100644
index 000000000..007c73248
--- /dev/null
+++ b/src/data/pokemon/pokedex_entries.h
@@ -0,0 +1,4646 @@
+const struct PokedexEntry gPokedexEntries[] =
+{
+ [NATIONAL_DEX_NONE] =
+ {
+ .categoryName = _("UNKNOWN"),
+ .height = 0,
+ .weight = 0,
+ .description = gDummyPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BULBASAUR] =
+ {
+ .categoryName = _("SEED"),
+ .height = 7,
+ .weight = 69,
+ .description = gBulbasaurPokedexText,
+ .pokemonScale = 356,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_IVYSAUR] =
+ {
+ .categoryName = _("SEED"),
+ .height = 10,
+ .weight = 130,
+ .description = gIvysaurPokedexText,
+ .pokemonScale = 335,
+ .pokemonOffset = 13,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_VENUSAUR] =
+ {
+ .categoryName = _("SEED"),
+ .height = 20,
+ .weight = 1000,
+ .description = gVenusaurPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 388,
+ .trainerOffset = 6,
+ },
+
+ [NATIONAL_DEX_CHARMANDER] =
+ {
+ .categoryName = _("LIZARD"),
+ .height = 6,
+ .weight = 85,
+ .description = gCharmanderPokedexText,
+ .pokemonScale = 444,
+ .pokemonOffset = 18,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CHARMELEON] =
+ {
+ .categoryName = _("FLAME"),
+ .height = 11,
+ .weight = 190,
+ .description = gCharmeleonPokedexText,
+ .pokemonScale = 302,
+ .pokemonOffset = 9,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CHARIZARD] =
+ {
+ .categoryName = _("FLAME"),
+ .height = 17,
+ .weight = 905,
+ .description = gCharizardPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 1,
+ .trainerScale = 302,
+ .trainerOffset = 3,
+ },
+
+ [NATIONAL_DEX_SQUIRTLE] =
+ {
+ .categoryName = _("TINY TURTLE"),
+ .height = 5,
+ .weight = 90,
+ .description = gSquirtlePokedexText,
+ .pokemonScale = 412,
+ .pokemonOffset = 18,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WARTORTLE] =
+ {
+ .categoryName = _("TURTLE"),
+ .height = 10,
+ .weight = 225,
+ .description = gWartortlePokedexText,
+ .pokemonScale = 332,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BLASTOISE] =
+ {
+ .categoryName = _("SHELLFISH"),
+ .height = 16,
+ .weight = 855,
+ .description = gBlastoisePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = -1,
+ .trainerScale = 293,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_CATERPIE] =
+ {
+ .categoryName = _("WORM"),
+ .height = 3,
+ .weight = 29,
+ .description = gCaterpiePokedexText,
+ .pokemonScale = 549,
+ .pokemonOffset = 22,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_METAPOD] =
+ {
+ .categoryName = _("COCOON"),
+ .height = 7,
+ .weight = 99,
+ .description = gMetapodPokedexText,
+ .pokemonScale = 350,
+ .pokemonOffset = 18,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BUTTERFREE] =
+ {
+ .categoryName = _("BUTTERFLY"),
+ .height = 11,
+ .weight = 320,
+ .description = gButterfreePokedexText,
+ .pokemonScale = 312,
+ .pokemonOffset = 2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WEEDLE] =
+ {
+ .categoryName = _("HAIRY BUG"),
+ .height = 3,
+ .weight = 32,
+ .description = gWeedlePokedexText,
+ .pokemonScale = 455,
+ .pokemonOffset = 22,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_KAKUNA] =
+ {
+ .categoryName = _("COCOON"),
+ .height = 6,
+ .weight = 100,
+ .description = gKakunaPokedexText,
+ .pokemonScale = 424,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BEEDRILL] =
+ {
+ .categoryName = _("POISON BEE"),
+ .height = 10,
+ .weight = 295,
+ .description = gBeedrillPokedexText,
+ .pokemonScale = 366,
+ .pokemonOffset = 2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PIDGEY] =
+ {
+ .categoryName = _("TINY BIRD"),
+ .height = 3,
+ .weight = 18,
+ .description = gPidgeyPokedexText,
+ .pokemonScale = 508,
+ .pokemonOffset = -3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PIDGEOTTO] =
+ {
+ .categoryName = _("BIRD"),
+ .height = 11,
+ .weight = 300,
+ .description = gPidgeottoPokedexText,
+ .pokemonScale = 331,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PIDGEOT] =
+ {
+ .categoryName = _("BIRD"),
+ .height = 15,
+ .weight = 395,
+ .description = gPidgeotPokedexText,
+ .pokemonScale = 269,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_RATTATA] =
+ {
+ .categoryName = _("MOUSE"),
+ .height = 3,
+ .weight = 35,
+ .description = gRattataPokedexText,
+ .pokemonScale = 481,
+ .pokemonOffset = 21,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_RATICATE] =
+ {
+ .categoryName = _("MOUSE"),
+ .height = 7,
+ .weight = 185,
+ .description = gRaticatePokedexText,
+ .pokemonScale = 459,
+ .pokemonOffset = 18,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SPEAROW] =
+ {
+ .categoryName = _("TINY BIRD"),
+ .height = 3,
+ .weight = 20,
+ .description = gSpearowPokedexText,
+ .pokemonScale = 571,
+ .pokemonOffset = 22,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_FEAROW] =
+ {
+ .categoryName = _("BEAK"),
+ .height = 12,
+ .weight = 380,
+ .description = gFearowPokedexText,
+ .pokemonScale = 278,
+ .pokemonOffset = 1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_EKANS] =
+ {
+ .categoryName = _("SNAKE"),
+ .height = 20,
+ .weight = 69,
+ .description = gEkansPokedexText,
+ .pokemonScale = 298,
+ .pokemonOffset = 12,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ARBOK] =
+ {
+ .categoryName = _("COBRA"),
+ .height = 35,
+ .weight = 650,
+ .description = gArbokPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 296,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_PIKACHU] =
+ {
+ .categoryName = _("MOUSE"),
+ .height = 4,
+ .weight = 60,
+ .description = gPikachuPokedexText,
+ .pokemonScale = 479,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_RAICHU] =
+ {
+ .categoryName = _("MOUSE"),
+ .height = 8,
+ .weight = 300,
+ .description = gRaichuPokedexText,
+ .pokemonScale = 426,
+ .pokemonOffset = 13,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SANDSHREW] =
+ {
+ .categoryName = _("MOUSE"),
+ .height = 6,
+ .weight = 120,
+ .description = gSandshrewPokedexText,
+ .pokemonScale = 365,
+ .pokemonOffset = 18,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SANDSLASH] =
+ {
+ .categoryName = _("MOUSE"),
+ .height = 10,
+ .weight = 295,
+ .description = gSandslashPokedexText,
+ .pokemonScale = 341,
+ .pokemonOffset = 11,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_NIDORAN_F] =
+ {
+ .categoryName = _("POISON PIN"),
+ .height = 4,
+ .weight = 70,
+ .description = gNidoranFPokedexText,
+ .pokemonScale = 488,
+ .pokemonOffset = 21,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_NIDORINA] =
+ {
+ .categoryName = _("POISON PIN"),
+ .height = 8,
+ .weight = 200,
+ .description = gNidorinaPokedexText,
+ .pokemonScale = 381,
+ .pokemonOffset = 15,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_NIDOQUEEN] =
+ {
+ .categoryName = _("DRILL"),
+ .height = 13,
+ .weight = 600,
+ .description = gNidoqueenPokedexText,
+ .pokemonScale = 293,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_NIDORAN_M] =
+ {
+ .categoryName = _("POISON PIN"),
+ .height = 5,
+ .weight = 90,
+ .description = gNidoranMPokedexText,
+ .pokemonScale = 511,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_NIDORINO] =
+ {
+ .categoryName = _("POISON PIN"),
+ .height = 9,
+ .weight = 195,
+ .description = gNidorinoPokedexText,
+ .pokemonScale = 408,
+ .pokemonOffset = 15,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_NIDOKING] =
+ {
+ .categoryName = _("DRILL"),
+ .height = 14,
+ .weight = 620,
+ .description = gNidokingPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CLEFAIRY] =
+ {
+ .categoryName = _("FAIRY"),
+ .height = 6,
+ .weight = 75,
+ .description = gClefairyPokedexText,
+ .pokemonScale = 441,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CLEFABLE] =
+ {
+ .categoryName = _("FAIRY"),
+ .height = 13,
+ .weight = 400,
+ .description = gClefablePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 5,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_VULPIX] =
+ {
+ .categoryName = _("FOX"),
+ .height = 6,
+ .weight = 99,
+ .description = gVulpixPokedexText,
+ .pokemonScale = 542,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_NINETALES] =
+ {
+ .categoryName = _("FOX"),
+ .height = 11,
+ .weight = 199,
+ .description = gNinetalesPokedexText,
+ .pokemonScale = 339,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_JIGGLYPUFF] =
+ {
+ .categoryName = _("BALLOON"),
+ .height = 5,
+ .weight = 55,
+ .description = gJigglypuffPokedexText,
+ .pokemonScale = 433,
+ .pokemonOffset = 2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WIGGLYTUFF] =
+ {
+ .categoryName = _("BALLOON"),
+ .height = 10,
+ .weight = 120,
+ .description = gWigglytuffPokedexText,
+ .pokemonScale = 328,
+ .pokemonOffset = 11,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ZUBAT] =
+ {
+ .categoryName = _("BAT"),
+ .height = 8,
+ .weight = 75,
+ .description = gZubatPokedexText,
+ .pokemonScale = 362,
+ .pokemonOffset = -5,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GOLBAT] =
+ {
+ .categoryName = _("BAT"),
+ .height = 16,
+ .weight = 550,
+ .description = gGolbatPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ODDISH] =
+ {
+ .categoryName = _("WEED"),
+ .height = 5,
+ .weight = 54,
+ .description = gOddishPokedexText,
+ .pokemonScale = 423,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GLOOM] =
+ {
+ .categoryName = _("WEED"),
+ .height = 8,
+ .weight = 86,
+ .description = gGloomPokedexText,
+ .pokemonScale = 329,
+ .pokemonOffset = 13,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_VILEPLUME] =
+ {
+ .categoryName = _("FLOWER"),
+ .height = 12,
+ .weight = 186,
+ .description = gVileplumePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PARAS] =
+ {
+ .categoryName = _("MUSHROOM"),
+ .height = 3,
+ .weight = 54,
+ .description = gParasPokedexText,
+ .pokemonScale = 593,
+ .pokemonOffset = 22,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PARASECT] =
+ {
+ .categoryName = _("MUSHROOM"),
+ .height = 10,
+ .weight = 295,
+ .description = gParasectPokedexText,
+ .pokemonScale = 307,
+ .pokemonOffset = 8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_VENONAT] =
+ {
+ .categoryName = _("INSECT"),
+ .height = 10,
+ .weight = 300,
+ .description = gVenonatPokedexText,
+ .pokemonScale = 360,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = -1,
+ },
+
+ [NATIONAL_DEX_VENOMOTH] =
+ {
+ .categoryName = _("POISON MOTH"),
+ .height = 15,
+ .weight = 125,
+ .description = gVenomothPokedexText,
+ .pokemonScale = 285,
+ .pokemonOffset = 2,
+ .trainerScale = 256,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_DIGLETT] =
+ {
+ .categoryName = _("MOLE"),
+ .height = 2,
+ .weight = 8,
+ .description = gDiglettPokedexText,
+ .pokemonScale = 833,
+ .pokemonOffset = 25,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_DUGTRIO] =
+ {
+ .categoryName = _("MOLE"),
+ .height = 7,
+ .weight = 333,
+ .description = gDugtrioPokedexText,
+ .pokemonScale = 406,
+ .pokemonOffset = 18,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MEOWTH] =
+ {
+ .categoryName = _("SCRATCH CAT"),
+ .height = 4,
+ .weight = 42,
+ .description = gMeowthPokedexText,
+ .pokemonScale = 480,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PERSIAN] =
+ {
+ .categoryName = _("CLASSY CAT"),
+ .height = 10,
+ .weight = 320,
+ .description = gPersianPokedexText,
+ .pokemonScale = 320,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PSYDUCK] =
+ {
+ .categoryName = _("DUCK"),
+ .height = 8,
+ .weight = 196,
+ .description = gPsyduckPokedexText,
+ .pokemonScale = 369,
+ .pokemonOffset = 15,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GOLDUCK] =
+ {
+ .categoryName = _("DUCK"),
+ .height = 17,
+ .weight = 766,
+ .description = gGolduckPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 1,
+ .trainerScale = 273,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_MANKEY] =
+ {
+ .categoryName = _("PIG MONKEY"),
+ .height = 5,
+ .weight = 280,
+ .description = gMankeyPokedexText,
+ .pokemonScale = 404,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PRIMEAPE] =
+ {
+ .categoryName = _("PIG MONKEY"),
+ .height = 10,
+ .weight = 320,
+ .description = gPrimeapePokedexText,
+ .pokemonScale = 326,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GROWLITHE] =
+ {
+ .categoryName = _("PUPPY"),
+ .height = 7,
+ .weight = 190,
+ .description = gGrowlithePokedexText,
+ .pokemonScale = 346,
+ .pokemonOffset = 14,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ARCANINE] =
+ {
+ .categoryName = _("LEGENDARY"),
+ .height = 19,
+ .weight = 1550,
+ .description = gArcaninePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 1,
+ .trainerScale = 312,
+ .trainerOffset = 4,
+ },
+
+ [NATIONAL_DEX_POLIWAG] =
+ {
+ .categoryName = _("TADPOLE"),
+ .height = 6,
+ .weight = 124,
+ .description = gPoliwagPokedexText,
+ .pokemonScale = 369,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_POLIWHIRL] =
+ {
+ .categoryName = _("TADPOLE"),
+ .height = 10,
+ .weight = 200,
+ .description = gPoliwhirlPokedexText,
+ .pokemonScale = 288,
+ .pokemonOffset = 11,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_POLIWRATH] =
+ {
+ .categoryName = _("TADPOLE"),
+ .height = 13,
+ .weight = 540,
+ .description = gPoliwrathPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 6,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ABRA] =
+ {
+ .categoryName = _("PSI"),
+ .height = 9,
+ .weight = 195,
+ .description = gAbraPokedexText,
+ .pokemonScale = 363,
+ .pokemonOffset = 14,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_KADABRA] =
+ {
+ .categoryName = _("PSI"),
+ .height = 13,
+ .weight = 565,
+ .description = gKadabraPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ALAKAZAM] =
+ {
+ .categoryName = _("PSI"),
+ .height = 15,
+ .weight = 480,
+ .description = gAlakazamPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MACHOP] =
+ {
+ .categoryName = _("SUPERPOWER"),
+ .height = 8,
+ .weight = 195,
+ .description = gMachopPokedexText,
+ .pokemonScale = 342,
+ .pokemonOffset = 14,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MACHOKE] =
+ {
+ .categoryName = _("SUPERPOWER"),
+ .height = 15,
+ .weight = 705,
+ .description = gMachokePokedexText,
+ .pokemonScale = 323,
+ .pokemonOffset = 9,
+ .trainerScale = 257,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MACHAMP] =
+ {
+ .categoryName = _("SUPERPOWER"),
+ .height = 16,
+ .weight = 1300,
+ .description = gMachampPokedexText,
+ .pokemonScale = 280,
+ .pokemonOffset = 1,
+ .trainerScale = 269,
+ .trainerOffset = -1,
+ },
+
+ [NATIONAL_DEX_BELLSPROUT] =
+ {
+ .categoryName = _("FLOWER"),
+ .height = 7,
+ .weight = 40,
+ .description = gBellsproutPokedexText,
+ .pokemonScale = 354,
+ .pokemonOffset = 16,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WEEPINBELL] =
+ {
+ .categoryName = _("FLYCATCHER"),
+ .height = 10,
+ .weight = 64,
+ .description = gWeepinbellPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_VICTREEBEL] =
+ {
+ .categoryName = _("FLYCATCHER"),
+ .height = 17,
+ .weight = 155,
+ .description = gVictreebelPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 1,
+ .trainerScale = 312,
+ .trainerOffset = 3,
+ },
+
+ [NATIONAL_DEX_TENTACOOL] =
+ {
+ .categoryName = _("JELLYFISH"),
+ .height = 9,
+ .weight = 455,
+ .description = gTentacoolPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_TENTACRUEL] =
+ {
+ .categoryName = _("JELLYFISH"),
+ .height = 16,
+ .weight = 550,
+ .description = gTentacruelPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 312,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_GEODUDE] =
+ {
+ .categoryName = _("ROCK"),
+ .height = 4,
+ .weight = 200,
+ .description = gGeodudePokedexText,
+ .pokemonScale = 347,
+ .pokemonOffset = 18,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GRAVELER] =
+ {
+ .categoryName = _("ROCK"),
+ .height = 10,
+ .weight = 1050,
+ .description = gGravelerPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GOLEM] =
+ {
+ .categoryName = _("MEGATON"),
+ .height = 14,
+ .weight = 3000,
+ .description = gGolemPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 296,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_PONYTA] =
+ {
+ .categoryName = _("FIRE HORSE"),
+ .height = 10,
+ .weight = 300,
+ .description = gPonytaPokedexText,
+ .pokemonScale = 283,
+ .pokemonOffset = 8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_RAPIDASH] =
+ {
+ .categoryName = _("FIRE HORSE"),
+ .height = 17,
+ .weight = 950,
+ .description = gRapidashPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 289,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_SLOWPOKE] =
+ {
+ .categoryName = _("DOPEY"),
+ .height = 12,
+ .weight = 360,
+ .description = gSlowpokePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SLOWBRO] =
+ {
+ .categoryName = _("HERMIT CRAB"),
+ .height = 16,
+ .weight = 785,
+ .description = gSlowbroPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 6,
+ .trainerScale = 296,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_MAGNEMITE] =
+ {
+ .categoryName = _("MAGNET"),
+ .height = 3,
+ .weight = 60,
+ .description = gMagnemitePokedexText,
+ .pokemonScale = 288,
+ .pokemonOffset = -9,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MAGNETON] =
+ {
+ .categoryName = _("MAGNET"),
+ .height = 10,
+ .weight = 600,
+ .description = gMagnetonPokedexText,
+ .pokemonScale = 292,
+ .pokemonOffset = 1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_FARFETCHD] =
+ {
+ .categoryName = _("WILD DUCK"),
+ .height = 8,
+ .weight = 150,
+ .description = gFarfetchdPokedexText,
+ .pokemonScale = 330,
+ .pokemonOffset = 2,
+ .trainerScale = 293,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_DODUO] =
+ {
+ .categoryName = _("TWIN BIRD"),
+ .height = 14,
+ .weight = 392,
+ .description = gDoduoPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 257,
+ .trainerOffset = -1,
+ },
+
+ [NATIONAL_DEX_DODRIO] =
+ {
+ .categoryName = _("TRIPLE BIRD"),
+ .height = 18,
+ .weight = 852,
+ .description = gDodrioPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 268,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SEEL] =
+ {
+ .categoryName = _("SEA LION"),
+ .height = 11,
+ .weight = 900,
+ .description = gSeelPokedexText,
+ .pokemonScale = 297,
+ .pokemonOffset = 8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_DEWGONG] =
+ {
+ .categoryName = _("SEA LION"),
+ .height = 17,
+ .weight = 1200,
+ .description = gDewgongPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 275,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GRIMER] =
+ {
+ .categoryName = _("SLUDGE"),
+ .height = 9,
+ .weight = 300,
+ .description = gGrimerPokedexText,
+ .pokemonScale = 258,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MUK] =
+ {
+ .categoryName = _("SLUDGE"),
+ .height = 12,
+ .weight = 300,
+ .description = gMukPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SHELLDER] =
+ {
+ .categoryName = _("BIVALVE"),
+ .height = 3,
+ .weight = 40,
+ .description = gShellderPokedexText,
+ .pokemonScale = 675,
+ .pokemonOffset = 24,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CLOYSTER] =
+ {
+ .categoryName = _("BIVALVE"),
+ .height = 15,
+ .weight = 1325,
+ .description = gCloysterPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 269,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_GASTLY] =
+ {
+ .categoryName = _("GAS"),
+ .height = 13,
+ .weight = 1,
+ .description = gGastlyPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_HAUNTER] =
+ {
+ .categoryName = _("GAS"),
+ .height = 16,
+ .weight = 1,
+ .description = gHaunterPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 2,
+ .trainerScale = 293,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_GENGAR] =
+ {
+ .categoryName = _("SHADOW"),
+ .height = 15,
+ .weight = 405,
+ .description = gGengarPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 2,
+ .trainerScale = 302,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_ONIX] =
+ {
+ .categoryName = _("ROCK SNAKE"),
+ .height = 88,
+ .weight = 2100,
+ .description = gOnixPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 1,
+ .trainerScale = 515,
+ .trainerOffset = 14,
+ },
+
+ [NATIONAL_DEX_DROWZEE] =
+ {
+ .categoryName = _("HYPNOSIS"),
+ .height = 10,
+ .weight = 324,
+ .description = gDrowzeePokedexText,
+ .pokemonScale = 274,
+ .pokemonOffset = 6,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_HYPNO] =
+ {
+ .categoryName = _("HYPNOSIS"),
+ .height = 16,
+ .weight = 756,
+ .description = gHypnoPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 257,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_KRABBY] =
+ {
+ .categoryName = _("RIVER CRAB"),
+ .height = 4,
+ .weight = 65,
+ .description = gKrabbyPokedexText,
+ .pokemonScale = 469,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_KINGLER] =
+ {
+ .categoryName = _("PINCER"),
+ .height = 13,
+ .weight = 600,
+ .description = gKinglerPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_VOLTORB] =
+ {
+ .categoryName = _("BALL"),
+ .height = 5,
+ .weight = 104,
+ .description = gVoltorbPokedexText,
+ .pokemonScale = 364,
+ .pokemonOffset = -8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ELECTRODE] =
+ {
+ .categoryName = _("BALL"),
+ .height = 12,
+ .weight = 666,
+ .description = gElectrodePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_EXEGGCUTE] =
+ {
+ .categoryName = _("EGG"),
+ .height = 4,
+ .weight = 25,
+ .description = gExeggcutePokedexText,
+ .pokemonScale = 489,
+ .pokemonOffset = -4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_EXEGGUTOR] =
+ {
+ .categoryName = _("COCONUT"),
+ .height = 20,
+ .weight = 1200,
+ .description = gExeggutorPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 309,
+ .trainerOffset = 5,
+ },
+
+ [NATIONAL_DEX_CUBONE] =
+ {
+ .categoryName = _("LONELY"),
+ .height = 4,
+ .weight = 65,
+ .description = gCubonePokedexText,
+ .pokemonScale = 545,
+ .pokemonOffset = 21,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MAROWAK] =
+ {
+ .categoryName = _("BONE KEEPER"),
+ .height = 10,
+ .weight = 450,
+ .description = gMarowakPokedexText,
+ .pokemonScale = 293,
+ .pokemonOffset = 12,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_HITMONLEE] =
+ {
+ .categoryName = _("KICKING"),
+ .height = 15,
+ .weight = 498,
+ .description = gHitmonleePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 259,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_HITMONCHAN] =
+ {
+ .categoryName = _("PUNCHING"),
+ .height = 14,
+ .weight = 502,
+ .description = gHitmonchanPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 2,
+ .trainerScale = 277,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_LICKITUNG] =
+ {
+ .categoryName = _("LICKING"),
+ .height = 12,
+ .weight = 655,
+ .description = gLickitungPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_KOFFING] =
+ {
+ .categoryName = _("POISON GAS"),
+ .height = 6,
+ .weight = 10,
+ .description = gKoffingPokedexText,
+ .pokemonScale = 369,
+ .pokemonOffset = -1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WEEZING] =
+ {
+ .categoryName = _("POISON GAS"),
+ .height = 12,
+ .weight = 95,
+ .description = gWeezingPokedexText,
+ .pokemonScale = 305,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_RHYHORN] =
+ {
+ .categoryName = _("SPIKES"),
+ .height = 10,
+ .weight = 1150,
+ .description = gRhyhornPokedexText,
+ .pokemonScale = 267,
+ .pokemonOffset = 6,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_RHYDON] =
+ {
+ .categoryName = _("DRILL"),
+ .height = 19,
+ .weight = 1200,
+ .description = gRhydonPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 1,
+ .trainerScale = 299,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_CHANSEY] =
+ {
+ .categoryName = _("EGG"),
+ .height = 11,
+ .weight = 346,
+ .description = gChanseyPokedexText,
+ .pokemonScale = 257,
+ .pokemonOffset = 7,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_TANGELA] =
+ {
+ .categoryName = _("VINE"),
+ .height = 10,
+ .weight = 350,
+ .description = gTangelaPokedexText,
+ .pokemonScale = 304,
+ .pokemonOffset = 1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_KANGASKHAN] =
+ {
+ .categoryName = _("PARENT"),
+ .height = 22,
+ .weight = 800,
+ .description = gKangaskhanPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 387,
+ .trainerOffset = 8,
+ },
+
+ [NATIONAL_DEX_HORSEA] =
+ {
+ .categoryName = _("DRAGON"),
+ .height = 4,
+ .weight = 80,
+ .description = gHorseaPokedexText,
+ .pokemonScale = 399,
+ .pokemonOffset = -1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SEADRA] =
+ {
+ .categoryName = _("DRAGON"),
+ .height = 12,
+ .weight = 250,
+ .description = gSeadraPokedexText,
+ .pokemonScale = 299,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GOLDEEN] =
+ {
+ .categoryName = _("GOLDFISH"),
+ .height = 6,
+ .weight = 150,
+ .description = gGoldeenPokedexText,
+ .pokemonScale = 379,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SEAKING] =
+ {
+ .categoryName = _("GOLDFISH"),
+ .height = 13,
+ .weight = 390,
+ .description = gSeakingPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_STARYU] =
+ {
+ .categoryName = _("STAR SHAPE"),
+ .height = 8,
+ .weight = 345,
+ .description = gStaryuPokedexText,
+ .pokemonScale = 326,
+ .pokemonOffset = 1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_STARMIE] =
+ {
+ .categoryName = _("MYSTERIOUS"),
+ .height = 11,
+ .weight = 800,
+ .description = gStarmiePokedexText,
+ .pokemonScale = 301,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MR_MIME] =
+ {
+ .categoryName = _("BARRIER"),
+ .height = 13,
+ .weight = 545,
+ .description = gMrmimePokedexText,
+ .pokemonScale = 258,
+ .pokemonOffset = 6,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SCYTHER] =
+ {
+ .categoryName = _("MANTIS"),
+ .height = 15,
+ .weight = 560,
+ .description = gScytherPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 1,
+ .trainerScale = 293,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_JYNX] =
+ {
+ .categoryName = _("HUMAN SHAPE"),
+ .height = 14,
+ .weight = 406,
+ .description = gJynxPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 300,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_ELECTABUZZ] =
+ {
+ .categoryName = _("ELECTRIC"),
+ .height = 11,
+ .weight = 300,
+ .description = gElectabuzzPokedexText,
+ .pokemonScale = 351,
+ .pokemonOffset = 8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MAGMAR] =
+ {
+ .categoryName = _("SPITFIRE"),
+ .height = 13,
+ .weight = 445,
+ .description = gMagmarPokedexText,
+ .pokemonScale = 277,
+ .pokemonOffset = 5,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PINSIR] =
+ {
+ .categoryName = _("STAG BEETLE"),
+ .height = 15,
+ .weight = 550,
+ .description = gPinsirPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 2,
+ .trainerScale = 257,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_TAUROS] =
+ {
+ .categoryName = _("WILD BULL"),
+ .height = 14,
+ .weight = 884,
+ .description = gTaurosPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MAGIKARP] =
+ {
+ .categoryName = _("FISH"),
+ .height = 9,
+ .weight = 100,
+ .description = gMagikarpPokedexText,
+ .pokemonScale = 310,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GYARADOS] =
+ {
+ .categoryName = _("ATROCIOUS"),
+ .height = 65,
+ .weight = 2350,
+ .description = gGyaradosPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 6,
+ .trainerScale = 481,
+ .trainerOffset = 13,
+ },
+
+ [NATIONAL_DEX_LAPRAS] =
+ {
+ .categoryName = _("TRANSPORT"),
+ .height = 25,
+ .weight = 2200,
+ .description = gLaprasPokedexText,
+ .pokemonScale = 257,
+ .pokemonOffset = 10,
+ .trainerScale = 423,
+ .trainerOffset = 8,
+ },
+
+ [NATIONAL_DEX_DITTO] =
+ {
+ .categoryName = _("TRANSFORM"),
+ .height = 3,
+ .weight = 40,
+ .description = gDittoPokedexText,
+ .pokemonScale = 633,
+ .pokemonOffset = 23,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_EEVEE] =
+ {
+ .categoryName = _("EVOLUTION"),
+ .height = 3,
+ .weight = 65,
+ .description = gEeveePokedexText,
+ .pokemonScale = 476,
+ .pokemonOffset = 18,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_VAPOREON] =
+ {
+ .categoryName = _("BUBBLE JET"),
+ .height = 10,
+ .weight = 290,
+ .description = gVaporeonPokedexText,
+ .pokemonScale = 316,
+ .pokemonOffset = 8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_JOLTEON] =
+ {
+ .categoryName = _("LIGHTNING"),
+ .height = 8,
+ .weight = 245,
+ .description = gJolteonPokedexText,
+ .pokemonScale = 283,
+ .pokemonOffset = 8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_FLAREON] =
+ {
+ .categoryName = _("FLAME"),
+ .height = 9,
+ .weight = 250,
+ .description = gFlareonPokedexText,
+ .pokemonScale = 306,
+ .pokemonOffset = 12,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PORYGON] =
+ {
+ .categoryName = _("VIRTUAL"),
+ .height = 8,
+ .weight = 365,
+ .description = gPorygonPokedexText,
+ .pokemonScale = 328,
+ .pokemonOffset = 15,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_OMANYTE] =
+ {
+ .categoryName = _("SPIRAL"),
+ .height = 4,
+ .weight = 75,
+ .description = gOmanytePokedexText,
+ .pokemonScale = 521,
+ .pokemonOffset = 22,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_OMASTAR] =
+ {
+ .categoryName = _("SPIRAL"),
+ .height = 10,
+ .weight = 350,
+ .description = gOmastarPokedexText,
+ .pokemonScale = 307,
+ .pokemonOffset = 7,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_KABUTO] =
+ {
+ .categoryName = _("SHELLFISH"),
+ .height = 5,
+ .weight = 115,
+ .description = gKabutoPokedexText,
+ .pokemonScale = 454,
+ .pokemonOffset = 21,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_KABUTOPS] =
+ {
+ .categoryName = _("SHELLFISH"),
+ .height = 13,
+ .weight = 405,
+ .description = gKabutopsPokedexText,
+ .pokemonScale = 271,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_AERODACTYL] =
+ {
+ .categoryName = _("FOSSIL"),
+ .height = 18,
+ .weight = 590,
+ .description = gAerodactylPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 302,
+ .trainerOffset = 4,
+ },
+
+ [NATIONAL_DEX_SNORLAX] =
+ {
+ .categoryName = _("SLEEPING"),
+ .height = 21,
+ .weight = 4600,
+ .description = gSnorlaxPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 4,
+ .trainerScale = 423,
+ .trainerOffset = 11,
+ },
+
+ [NATIONAL_DEX_ARTICUNO] =
+ {
+ .categoryName = _("FREEZE"),
+ .height = 17,
+ .weight = 554,
+ .description = gArticunoPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 309,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_ZAPDOS] =
+ {
+ .categoryName = _("ELECTRIC"),
+ .height = 16,
+ .weight = 526,
+ .description = gZapdosPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 318,
+ .trainerOffset = 3,
+ },
+
+ [NATIONAL_DEX_MOLTRES] =
+ {
+ .categoryName = _("FLAME"),
+ .height = 20,
+ .weight = 600,
+ .description = gMoltresPokedexText,
+ .pokemonScale = 270,
+ .pokemonOffset = 0,
+ .trainerScale = 387,
+ .trainerOffset = 8,
+ },
+
+ [NATIONAL_DEX_DRATINI] =
+ {
+ .categoryName = _("DRAGON"),
+ .height = 18,
+ .weight = 33,
+ .description = gDratiniPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 8,
+ .trainerScale = 386,
+ .trainerOffset = 6,
+ },
+
+ [NATIONAL_DEX_DRAGONAIR] =
+ {
+ .categoryName = _("DRAGON"),
+ .height = 40,
+ .weight = 165,
+ .description = gDragonairPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 411,
+ .trainerOffset = 5,
+ },
+
+ [NATIONAL_DEX_DRAGONITE] =
+ {
+ .categoryName = _("DRAGON"),
+ .height = 22,
+ .weight = 2100,
+ .description = gDragonitePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 309,
+ .trainerOffset = 4,
+ },
+
+ [NATIONAL_DEX_MEWTWO] =
+ {
+ .categoryName = _("GENETIC"),
+ .height = 20,
+ .weight = 1220,
+ .description = gMewtwoPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 309,
+ .trainerOffset = 4,
+ },
+
+ [NATIONAL_DEX_MEW] =
+ {
+ .categoryName = _("NEW SPECIES"),
+ .height = 4,
+ .weight = 40,
+ .description = gMewPokedexText,
+ .pokemonScale = 457,
+ .pokemonOffset = -2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CHIKORITA] =
+ {
+ .categoryName = _("LEAF"),
+ .height = 9,
+ .weight = 64,
+ .description = gChikoritaPokedexText,
+ .pokemonScale = 512,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BAYLEEF] =
+ {
+ .categoryName = _("LEAF"),
+ .height = 12,
+ .weight = 158,
+ .description = gBayleefPokedexText,
+ .pokemonScale = 296,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MEGANIUM] =
+ {
+ .categoryName = _("HERB"),
+ .height = 18,
+ .weight = 1005,
+ .description = gMeganiumPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 277,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_CYNDAQUIL] =
+ {
+ .categoryName = _("FIRE MOUSE"),
+ .height = 5,
+ .weight = 79,
+ .description = gCyndaquilPokedexText,
+ .pokemonScale = 539,
+ .pokemonOffset = 21,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_QUILAVA] =
+ {
+ .categoryName = _("VOLCANO"),
+ .height = 9,
+ .weight = 190,
+ .description = gQuilavaPokedexText,
+ .pokemonScale = 329,
+ .pokemonOffset = 11,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_TYPHLOSION] =
+ {
+ .categoryName = _("VOLCANO"),
+ .height = 17,
+ .weight = 795,
+ .description = gTyphlosionPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 268,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_TOTODILE] =
+ {
+ .categoryName = _("BIG JAW"),
+ .height = 6,
+ .weight = 95,
+ .description = gTotodilePokedexText,
+ .pokemonScale = 487,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CROCONAW] =
+ {
+ .categoryName = _("BIG JAW"),
+ .height = 11,
+ .weight = 250,
+ .description = gCroconawPokedexText,
+ .pokemonScale = 378,
+ .pokemonOffset = 13,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_FERALIGATR] =
+ {
+ .categoryName = _("BIG JAW"),
+ .height = 23,
+ .weight = 888,
+ .description = gFeraligatrPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 342,
+ .trainerOffset = 7,
+ },
+
+ [NATIONAL_DEX_SENTRET] =
+ {
+ .categoryName = _("SCOUT"),
+ .height = 8,
+ .weight = 60,
+ .description = gSentretPokedexText,
+ .pokemonScale = 439,
+ .pokemonOffset = 12,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_FURRET] =
+ {
+ .categoryName = _("LONG BODY"),
+ .height = 18,
+ .weight = 325,
+ .description = gFurretPokedexText,
+ .pokemonScale = 346,
+ .pokemonOffset = 11,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_HOOTHOOT] =
+ {
+ .categoryName = _("OWL"),
+ .height = 7,
+ .weight = 212,
+ .description = gHoothootPokedexText,
+ .pokemonScale = 380,
+ .pokemonOffset = -2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_NOCTOWL] =
+ {
+ .categoryName = _("OWL"),
+ .height = 16,
+ .weight = 408,
+ .description = gNoctowlPokedexText,
+ .pokemonScale = 278,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_LEDYBA] =
+ {
+ .categoryName = _("FIVE STAR"),
+ .height = 10,
+ .weight = 108,
+ .description = gLedybaPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_LEDIAN] =
+ {
+ .categoryName = _("FIVE STAR"),
+ .height = 14,
+ .weight = 356,
+ .description = gLedianPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SPINARAK] =
+ {
+ .categoryName = _("STRING SPIT"),
+ .height = 5,
+ .weight = 85,
+ .description = gSpinarakPokedexText,
+ .pokemonScale = 414,
+ .pokemonOffset = 21,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ARIADOS] =
+ {
+ .categoryName = _("LONG LEG"),
+ .height = 11,
+ .weight = 335,
+ .description = gAriadosPokedexText,
+ .pokemonScale = 316,
+ .pokemonOffset = 8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CROBAT] =
+ {
+ .categoryName = _("BAT"),
+ .height = 18,
+ .weight = 750,
+ .description = gCrobatPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 281,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_CHINCHOU] =
+ {
+ .categoryName = _("ANGLER"),
+ .height = 5,
+ .weight = 120,
+ .description = gChinchouPokedexText,
+ .pokemonScale = 424,
+ .pokemonOffset = -2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_LANTURN] =
+ {
+ .categoryName = _("LIGHT"),
+ .height = 12,
+ .weight = 225,
+ .description = gLanturnPokedexText,
+ .pokemonScale = 269,
+ .pokemonOffset = 6,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PICHU] =
+ {
+ .categoryName = _("TINY MOUSE"),
+ .height = 3,
+ .weight = 20,
+ .description = gPichuPokedexText,
+ .pokemonScale = 508,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CLEFFA] =
+ {
+ .categoryName = _("STAR SHAPE"),
+ .height = 3,
+ .weight = 30,
+ .description = gCleffaPokedexText,
+ .pokemonScale = 462,
+ .pokemonOffset = 23,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_IGGLYBUFF] =
+ {
+ .categoryName = _("BALLOON"),
+ .height = 3,
+ .weight = 10,
+ .description = gIgglybuffPokedexText,
+ .pokemonScale = 457,
+ .pokemonOffset = -1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_TOGEPI] =
+ {
+ .categoryName = _("SPIKE BALL"),
+ .height = 3,
+ .weight = 15,
+ .description = gTogepiPokedexText,
+ .pokemonScale = 507,
+ .pokemonOffset = 23,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_TOGETIC] =
+ {
+ .categoryName = _("HAPPINESS"),
+ .height = 6,
+ .weight = 32,
+ .description = gTogeticPokedexText,
+ .pokemonScale = 424,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_NATU] =
+ {
+ .categoryName = _("TINY BIRD"),
+ .height = 2,
+ .weight = 20,
+ .description = gNatuPokedexText,
+ .pokemonScale = 610,
+ .pokemonOffset = 25,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_XATU] =
+ {
+ .categoryName = _("MYSTIC"),
+ .height = 15,
+ .weight = 150,
+ .description = gXatuPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 6,
+ .trainerScale = 318,
+ .trainerOffset = 4,
+ },
+
+ [NATIONAL_DEX_MAREEP] =
+ {
+ .categoryName = _("WOOL"),
+ .height = 6,
+ .weight = 78,
+ .description = gMareepPokedexText,
+ .pokemonScale = 379,
+ .pokemonOffset = 18,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_FLAAFFY] =
+ {
+ .categoryName = _("WOOL"),
+ .height = 8,
+ .weight = 133,
+ .description = gFlaaffyPokedexText,
+ .pokemonScale = 372,
+ .pokemonOffset = 15,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_AMPHAROS] =
+ {
+ .categoryName = _("LIGHT"),
+ .height = 14,
+ .weight = 615,
+ .description = gAmpharosPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BELLOSSOM] =
+ {
+ .categoryName = _("FLOWER"),
+ .height = 4,
+ .weight = 58,
+ .description = gBellossomPokedexText,
+ .pokemonScale = 472,
+ .pokemonOffset = 21,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MARILL] =
+ {
+ .categoryName = _("AQUA MOUSE"),
+ .height = 4,
+ .weight = 85,
+ .description = gMarillPokedexText,
+ .pokemonScale = 476,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_AZUMARILL] =
+ {
+ .categoryName = _("AQUA RABBIT"),
+ .height = 8,
+ .weight = 285,
+ .description = gAzumarillPokedexText,
+ .pokemonScale = 448,
+ .pokemonOffset = 16,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SUDOWOODO] =
+ {
+ .categoryName = _("IMITATION"),
+ .height = 12,
+ .weight = 380,
+ .description = gSudowoodoPokedexText,
+ .pokemonScale = 305,
+ .pokemonOffset = 8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_POLITOED] =
+ {
+ .categoryName = _("FROG"),
+ .height = 11,
+ .weight = 339,
+ .description = gPolitoedPokedexText,
+ .pokemonScale = 289,
+ .pokemonOffset = 6,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_HOPPIP] =
+ {
+ .categoryName = _("COTTONWEED"),
+ .height = 4,
+ .weight = 5,
+ .description = gHoppipPokedexText,
+ .pokemonScale = 562,
+ .pokemonOffset = -7,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SKIPLOOM] =
+ {
+ .categoryName = _("COTTONWEED"),
+ .height = 6,
+ .weight = 10,
+ .description = gSkiploomPokedexText,
+ .pokemonScale = 387,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_JUMPLUFF] =
+ {
+ .categoryName = _("COTTONWEED"),
+ .height = 8,
+ .weight = 30,
+ .description = gJumpluffPokedexText,
+ .pokemonScale = 418,
+ .pokemonOffset = -4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_AIPOM] =
+ {
+ .categoryName = _("LONG TAIL"),
+ .height = 8,
+ .weight = 115,
+ .description = gAipomPokedexText,
+ .pokemonScale = 363,
+ .pokemonOffset = 6,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SUNKERN] =
+ {
+ .categoryName = _("SEED"),
+ .height = 3,
+ .weight = 18,
+ .description = gSunkernPokedexText,
+ .pokemonScale = 541,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SUNFLORA] =
+ {
+ .categoryName = _("SUN"),
+ .height = 8,
+ .weight = 85,
+ .description = gSunfloraPokedexText,
+ .pokemonScale = 444,
+ .pokemonOffset = 15,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_YANMA] =
+ {
+ .categoryName = _("CLEAR WING"),
+ .height = 12,
+ .weight = 380,
+ .description = gYanmaPokedexText,
+ .pokemonScale = 274,
+ .pokemonOffset = -1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WOOPER] =
+ {
+ .categoryName = _("WATER FISH"),
+ .height = 4,
+ .weight = 85,
+ .description = gWooperPokedexText,
+ .pokemonScale = 479,
+ .pokemonOffset = 21,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_QUAGSIRE] =
+ {
+ .categoryName = _("WATER FISH"),
+ .height = 14,
+ .weight = 750,
+ .description = gQuagsirePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ESPEON] =
+ {
+ .categoryName = _("SUN"),
+ .height = 9,
+ .weight = 265,
+ .description = gEspeonPokedexText,
+ .pokemonScale = 363,
+ .pokemonOffset = 14,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_UMBREON] =
+ {
+ .categoryName = _("MOONLIGHT"),
+ .height = 10,
+ .weight = 270,
+ .description = gUmbreonPokedexText,
+ .pokemonScale = 317,
+ .pokemonOffset = 11,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MURKROW] =
+ {
+ .categoryName = _("DARKNESS"),
+ .height = 5,
+ .weight = 21,
+ .description = gMurkrowPokedexText,
+ .pokemonScale = 401,
+ .pokemonOffset = -8,
+ .trainerScale = 256,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_SLOWKING] =
+ {
+ .categoryName = _("ROYAL"),
+ .height = 20,
+ .weight = 795,
+ .description = gSlowkingPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 309,
+ .trainerOffset = 5,
+ },
+
+ [NATIONAL_DEX_MISDREAVUS] =
+ {
+ .categoryName = _("SCREECH"),
+ .height = 7,
+ .weight = 10,
+ .description = gMisdreavusPokedexText,
+ .pokemonScale = 407,
+ .pokemonOffset = -8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_UNOWN] =
+ {
+ .categoryName = _("SYMBOL"),
+ .height = 5,
+ .weight = 50,
+ .description = gUnownPokedexText,
+ .pokemonScale = 411,
+ .pokemonOffset = 2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WOBBUFFET] =
+ {
+ .categoryName = _("PATIENT"),
+ .height = 13,
+ .weight = 285,
+ .description = gWobbuffetPokedexText,
+ .pokemonScale = 274,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GIRAFARIG] =
+ {
+ .categoryName = _("LONG NECK"),
+ .height = 15,
+ .weight = 415,
+ .description = gGirafarigPokedexText,
+ .pokemonScale = 281,
+ .pokemonOffset = 1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PINECO] =
+ {
+ .categoryName = _("BAGWORM"),
+ .height = 6,
+ .weight = 72,
+ .description = gPinecoPokedexText,
+ .pokemonScale = 445,
+ .pokemonOffset = 2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_FORRETRESS] =
+ {
+ .categoryName = _("BAGWORM"),
+ .height = 12,
+ .weight = 1258,
+ .description = gForretressPokedexText,
+ .pokemonScale = 293,
+ .pokemonOffset = 5,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_DUNSPARCE] =
+ {
+ .categoryName = _("LAND SNAKE"),
+ .height = 15,
+ .weight = 140,
+ .description = gDunsparcePokedexText,
+ .pokemonScale = 316,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GLIGAR] =
+ {
+ .categoryName = _("FLYSCORPION"),
+ .height = 11,
+ .weight = 648,
+ .description = gGligarPokedexText,
+ .pokemonScale = 350,
+ .pokemonOffset = -1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_STEELIX] =
+ {
+ .categoryName = _("IRON SNAKE"),
+ .height = 92,
+ .weight = 4000,
+ .description = gSteelixPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 516,
+ .trainerOffset = 13,
+ },
+
+ [NATIONAL_DEX_SNUBBULL] =
+ {
+ .categoryName = _("FAIRY"),
+ .height = 6,
+ .weight = 78,
+ .description = gSnubbullPokedexText,
+ .pokemonScale = 465,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GRANBULL] =
+ {
+ .categoryName = _("FAIRY"),
+ .height = 14,
+ .weight = 487,
+ .description = gGranbullPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_QWILFISH] =
+ {
+ .categoryName = _("BALLOON"),
+ .height = 5,
+ .weight = 39,
+ .description = gQwilfishPokedexText,
+ .pokemonScale = 430,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SCIZOR] =
+ {
+ .categoryName = _("PINCER"),
+ .height = 18,
+ .weight = 1180,
+ .description = gScizorPokedexText,
+ .pokemonScale = 278,
+ .pokemonOffset = 1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SHUCKLE] =
+ {
+ .categoryName = _("MOLD"),
+ .height = 6,
+ .weight = 205,
+ .description = gShucklePokedexText,
+ .pokemonScale = 485,
+ .pokemonOffset = 18,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_HERACROSS] =
+ {
+ .categoryName = _("SINGLE HORN"),
+ .height = 15,
+ .weight = 540,
+ .description = gHeracrossPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SNEASEL] =
+ {
+ .categoryName = _("SHARP CLAW"),
+ .height = 9,
+ .weight = 280,
+ .description = gSneaselPokedexText,
+ .pokemonScale = 413,
+ .pokemonOffset = -3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_TEDDIURSA] =
+ {
+ .categoryName = _("LITTLE BEAR"),
+ .height = 6,
+ .weight = 88,
+ .description = gTeddiursaPokedexText,
+ .pokemonScale = 455,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_URSARING] =
+ {
+ .categoryName = _("HIBERNATOR"),
+ .height = 18,
+ .weight = 1258,
+ .description = gUrsaringPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SLUGMA] =
+ {
+ .categoryName = _("LAVA"),
+ .height = 7,
+ .weight = 350,
+ .description = gSlugmaPokedexText,
+ .pokemonScale = 329,
+ .pokemonOffset = 15,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MAGCARGO] =
+ {
+ .categoryName = _("LAVA"),
+ .height = 8,
+ .weight = 550,
+ .description = gMagcargoPokedexText,
+ .pokemonScale = 332,
+ .pokemonOffset = 15,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SWINUB] =
+ {
+ .categoryName = _("PIG"),
+ .height = 4,
+ .weight = 65,
+ .description = gSwinubPokedexText,
+ .pokemonScale = 324,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PILOSWINE] =
+ {
+ .categoryName = _("SWINE"),
+ .height = 11,
+ .weight = 558,
+ .description = gPiloswinePokedexText,
+ .pokemonScale = 306,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CORSOLA] =
+ {
+ .categoryName = _("CORAL"),
+ .height = 6,
+ .weight = 50,
+ .description = gCorsolaPokedexText,
+ .pokemonScale = 410,
+ .pokemonOffset = 15,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_REMORAID] =
+ {
+ .categoryName = _("JET"),
+ .height = 6,
+ .weight = 120,
+ .description = gRemoraidPokedexText,
+ .pokemonScale = 316,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_OCTILLERY] =
+ {
+ .categoryName = _("JET"),
+ .height = 9,
+ .weight = 285,
+ .description = gOctilleryPokedexText,
+ .pokemonScale = 296,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_DELIBIRD] =
+ {
+ .categoryName = _("DELIVERY"),
+ .height = 9,
+ .weight = 160,
+ .description = gDelibirdPokedexText,
+ .pokemonScale = 293,
+ .pokemonOffset = 11,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MANTINE] =
+ {
+ .categoryName = _("KITE"),
+ .height = 21,
+ .weight = 2200,
+ .description = gMantinePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 342,
+ .trainerOffset = 7,
+ },
+
+ [NATIONAL_DEX_SKARMORY] =
+ {
+ .categoryName = _("ARMOR BIRD"),
+ .height = 17,
+ .weight = 505,
+ .description = gSkarmoryPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 271,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_HOUNDOUR] =
+ {
+ .categoryName = _("DARK"),
+ .height = 6,
+ .weight = 108,
+ .description = gHoundourPokedexText,
+ .pokemonScale = 393,
+ .pokemonOffset = 16,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_HOUNDOOM] =
+ {
+ .categoryName = _("DARK"),
+ .height = 14,
+ .weight = 350,
+ .description = gHoundoomPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_KINGDRA] =
+ {
+ .categoryName = _("DRAGON"),
+ .height = 18,
+ .weight = 1520,
+ .description = gKingdraPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 287,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PHANPY] =
+ {
+ .categoryName = _("LONG NOSE"),
+ .height = 5,
+ .weight = 335,
+ .description = gPhanpyPokedexText,
+ .pokemonScale = 465,
+ .pokemonOffset = 21,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_DONPHAN] =
+ {
+ .categoryName = _("ARMOR"),
+ .height = 11,
+ .weight = 1200,
+ .description = gDonphanPokedexText,
+ .pokemonScale = 313,
+ .pokemonOffset = 9,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PORYGON2] =
+ {
+ .categoryName = _("VIRTUAL"),
+ .height = 6,
+ .weight = 325,
+ .description = gPorygon2PokedexText,
+ .pokemonScale = 320,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_STANTLER] =
+ {
+ .categoryName = _("BIG HORN"),
+ .height = 14,
+ .weight = 712,
+ .description = gStantlerPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SMEARGLE] =
+ {
+ .categoryName = _("PAINTER"),
+ .height = 12,
+ .weight = 580,
+ .description = gSmearglePokedexText,
+ .pokemonScale = 287,
+ .pokemonOffset = 5,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_TYROGUE] =
+ {
+ .categoryName = _("SCUFFLE"),
+ .height = 7,
+ .weight = 210,
+ .description = gTyroguePokedexText,
+ .pokemonScale = 292,
+ .pokemonOffset = 9,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_HITMONTOP] =
+ {
+ .categoryName = _("HANDSTAND"),
+ .height = 14,
+ .weight = 480,
+ .description = gHitmontopPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 2,
+ .trainerScale = 257,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SMOOCHUM] =
+ {
+ .categoryName = _("KISS"),
+ .height = 4,
+ .weight = 60,
+ .description = gSmoochumPokedexText,
+ .pokemonScale = 440,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ELEKID] =
+ {
+ .categoryName = _("ELECTRIC"),
+ .height = 6,
+ .weight = 235,
+ .description = gElekidPokedexText,
+ .pokemonScale = 363,
+ .pokemonOffset = 14,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MAGBY] =
+ {
+ .categoryName = _("LIVE COAL"),
+ .height = 7,
+ .weight = 214,
+ .description = gMagbyPokedexText,
+ .pokemonScale = 284,
+ .pokemonOffset = 13,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MILTANK] =
+ {
+ .categoryName = _("MILK COW"),
+ .height = 12,
+ .weight = 755,
+ .description = gMiltankPokedexText,
+ .pokemonScale = 280,
+ .pokemonOffset = 5,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BLISSEY] =
+ {
+ .categoryName = _("HAPPINESS"),
+ .height = 15,
+ .weight = 468,
+ .description = gBlisseyPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 4,
+ .trainerScale = 310,
+ .trainerOffset = 3,
+ },
+
+ [NATIONAL_DEX_RAIKOU] =
+ {
+ .categoryName = _("THUNDER"),
+ .height = 19,
+ .weight = 1780,
+ .description = gRaikouPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 345,
+ .trainerOffset = 7,
+ },
+
+ [NATIONAL_DEX_ENTEI] =
+ {
+ .categoryName = _("VOLCANO"),
+ .height = 21,
+ .weight = 1980,
+ .description = gEnteiPokedexText,
+ .pokemonScale = 259,
+ .pokemonOffset = 0,
+ .trainerScale = 345,
+ .trainerOffset = 7,
+ },
+
+ [NATIONAL_DEX_SUICUNE] =
+ {
+ .categoryName = _("AURORA"),
+ .height = 20,
+ .weight = 1870,
+ .description = gSuicunePokedexText,
+ .pokemonScale = 269,
+ .pokemonOffset = 0,
+ .trainerScale = 345,
+ .trainerOffset = 7,
+ },
+
+ [NATIONAL_DEX_LARVITAR] =
+ {
+ .categoryName = _("ROCK SKIN"),
+ .height = 6,
+ .weight = 720,
+ .description = gLarvitarPokedexText,
+ .pokemonScale = 472,
+ .pokemonOffset = 18,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PUPITAR] =
+ {
+ .categoryName = _("HARD SHELL"),
+ .height = 12,
+ .weight = 1520,
+ .description = gPupitarPokedexText,
+ .pokemonScale = 292,
+ .pokemonOffset = 8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_TYRANITAR] =
+ {
+ .categoryName = _("ARMOR"),
+ .height = 20,
+ .weight = 2020,
+ .description = gTyranitarPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 345,
+ .trainerOffset = 7,
+ },
+
+ [NATIONAL_DEX_LUGIA] =
+ {
+ .categoryName = _("DIVING"),
+ .height = 52,
+ .weight = 2160,
+ .description = gLugiaPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 721,
+ .trainerOffset = 19,
+ },
+
+ [NATIONAL_DEX_HO_OH] =
+ {
+ .categoryName = _("RAINBOW"),
+ .height = 38,
+ .weight = 1990,
+ .description = gHoOhPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 610,
+ .trainerOffset = 17,
+ },
+
+ [NATIONAL_DEX_CELEBI] =
+ {
+ .categoryName = _("TIME TRAVEL"),
+ .height = 6,
+ .weight = 50,
+ .description = gCelebiPokedexText,
+ .pokemonScale = 393,
+ .pokemonOffset = -10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_TREECKO] =
+ {
+ .categoryName = _("WOOD GECKO"),
+ .height = 5,
+ .weight = 50,
+ .description = gTreeckoPokedexText,
+ .pokemonScale = 541,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GROVYLE] =
+ {
+ .categoryName = _("WOOD GECKO"),
+ .height = 9,
+ .weight = 216,
+ .description = gGrovylePokedexText,
+ .pokemonScale = 360,
+ .pokemonOffset = 5,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SCEPTILE] =
+ {
+ .categoryName = _("FOREST"),
+ .height = 17,
+ .weight = 522,
+ .description = gSceptilePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = -1,
+ .trainerScale = 275,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_TORCHIC] =
+ {
+ .categoryName = _("CHICK"),
+ .height = 4,
+ .weight = 25,
+ .description = gTorchicPokedexText,
+ .pokemonScale = 566,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_COMBUSKEN] =
+ {
+ .categoryName = _("YOUNG FOWL"),
+ .height = 9,
+ .weight = 195,
+ .description = gCombuskenPokedexText,
+ .pokemonScale = 343,
+ .pokemonOffset = 5,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BLAZIKEN] =
+ {
+ .categoryName = _("BLAZE"),
+ .height = 19,
+ .weight = 520,
+ .description = gBlazikenPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 301,
+ .trainerOffset = 4,
+ },
+
+ [NATIONAL_DEX_MUDKIP] =
+ {
+ .categoryName = _("MUD FISH"),
+ .height = 4,
+ .weight = 76,
+ .description = gMudkipPokedexText,
+ .pokemonScale = 535,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MARSHTOMP] =
+ {
+ .categoryName = _("MUD FISH"),
+ .height = 7,
+ .weight = 280,
+ .description = gMarshtompPokedexText,
+ .pokemonScale = 340,
+ .pokemonOffset = 7,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SWAMPERT] =
+ {
+ .categoryName = _("MUD FISH"),
+ .height = 15,
+ .weight = 819,
+ .description = gSwampertPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_POOCHYENA] =
+ {
+ .categoryName = _("BITE"),
+ .height = 5,
+ .weight = 136,
+ .description = gPoochyenaPokedexText,
+ .pokemonScale = 481,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MIGHTYENA] =
+ {
+ .categoryName = _("BITE"),
+ .height = 10,
+ .weight = 370,
+ .description = gMightyenaPokedexText,
+ .pokemonScale = 362,
+ .pokemonOffset = 9,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ZIGZAGOON] =
+ {
+ .categoryName = _("TINYRACCOON"),
+ .height = 4,
+ .weight = 175,
+ .description = gZigzagoonPokedexText,
+ .pokemonScale = 560,
+ .pokemonOffset = 22,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_LINOONE] =
+ {
+ .categoryName = _("RUSHING"),
+ .height = 5,
+ .weight = 325,
+ .description = gLinoonePokedexText,
+ .pokemonScale = 321,
+ .pokemonOffset = 7,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WURMPLE] =
+ {
+ .categoryName = _("WORM"),
+ .height = 3,
+ .weight = 36,
+ .description = gWurmplePokedexText,
+ .pokemonScale = 711,
+ .pokemonOffset = 24,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SILCOON] =
+ {
+ .categoryName = _("COCOON"),
+ .height = 6,
+ .weight = 100,
+ .description = gSilcoonPokedexText,
+ .pokemonScale = 431,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BEAUTIFLY] =
+ {
+ .categoryName = _("BUTTERFLY"),
+ .height = 10,
+ .weight = 284,
+ .description = gBeautiflyPokedexText,
+ .pokemonScale = 298,
+ .pokemonOffset = -1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CASCOON] =
+ {
+ .categoryName = _("COCOON"),
+ .height = 7,
+ .weight = 115,
+ .description = gCascoonPokedexText,
+ .pokemonScale = 391,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_DUSTOX] =
+ {
+ .categoryName = _("POISON MOTH"),
+ .height = 12,
+ .weight = 316,
+ .description = gDustoxPokedexText,
+ .pokemonScale = 269,
+ .pokemonOffset = 1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_LOTAD] =
+ {
+ .categoryName = _("WATER WEED"),
+ .height = 5,
+ .weight = 26,
+ .description = gLotadPokedexText,
+ .pokemonScale = 406,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_LOMBRE] =
+ {
+ .categoryName = _("JOLLY"),
+ .height = 12,
+ .weight = 325,
+ .description = gLombrePokedexText,
+ .pokemonScale = 277,
+ .pokemonOffset = 9,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_LUDICOLO] =
+ {
+ .categoryName = _("CAREFREE"),
+ .height = 15,
+ .weight = 550,
+ .description = gLudicoloPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 268,
+ .trainerOffset = -1,
+ },
+
+ [NATIONAL_DEX_SEEDOT] =
+ {
+ .categoryName = _("ACORN"),
+ .height = 5,
+ .weight = 40,
+ .description = gSeedotPokedexText,
+ .pokemonScale = 472,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_NUZLEAF] =
+ {
+ .categoryName = _("WILY"),
+ .height = 10,
+ .weight = 280,
+ .description = gNuzleafPokedexText,
+ .pokemonScale = 299,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SHIFTRY] =
+ {
+ .categoryName = _("WICKED"),
+ .height = 13,
+ .weight = 596,
+ .description = gShiftryPokedexText,
+ .pokemonScale = 290,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_TAILLOW] =
+ {
+ .categoryName = _("TINYSWALLOW"),
+ .height = 3,
+ .weight = 23,
+ .description = gTaillowPokedexText,
+ .pokemonScale = 465,
+ .pokemonOffset = 21,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SWELLOW] =
+ {
+ .categoryName = _("SWALLOW"),
+ .height = 7,
+ .weight = 198,
+ .description = gSwellowPokedexText,
+ .pokemonScale = 428,
+ .pokemonOffset = 15,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WINGULL] =
+ {
+ .categoryName = _("SEAGULL"),
+ .height = 6,
+ .weight = 95,
+ .description = gWingullPokedexText,
+ .pokemonScale = 295,
+ .pokemonOffset = -2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PELIPPER] =
+ {
+ .categoryName = _("WATER BIRD"),
+ .height = 12,
+ .weight = 280,
+ .description = gPelipperPokedexText,
+ .pokemonScale = 288,
+ .pokemonOffset = 1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_RALTS] =
+ {
+ .categoryName = _("FEELING"),
+ .height = 4,
+ .weight = 66,
+ .description = gRaltsPokedexText,
+ .pokemonScale = 457,
+ .pokemonOffset = -3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_KIRLIA] =
+ {
+ .categoryName = _("EMOTION"),
+ .height = 8,
+ .weight = 202,
+ .description = gKirliaPokedexText,
+ .pokemonScale = 354,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GARDEVOIR] =
+ {
+ .categoryName = _("EMBRACE"),
+ .height = 16,
+ .weight = 484,
+ .description = gGardevoirPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SURSKIT] =
+ {
+ .categoryName = _("POND SKATER"),
+ .height = 5,
+ .weight = 17,
+ .description = gSurskitPokedexText,
+ .pokemonScale = 375,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MASQUERAIN] =
+ {
+ .categoryName = _("EYEBALL"),
+ .height = 8,
+ .weight = 36,
+ .description = gMasquerainPokedexText,
+ .pokemonScale = 378,
+ .pokemonOffset = 8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SHROOMISH] =
+ {
+ .categoryName = _("MUSHROOM"),
+ .height = 4,
+ .weight = 45,
+ .description = gShroomishPokedexText,
+ .pokemonScale = 513,
+ .pokemonOffset = 22,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BRELOOM] =
+ {
+ .categoryName = _("MUSHROOM"),
+ .height = 12,
+ .weight = 392,
+ .description = gBreloomPokedexText,
+ .pokemonScale = 324,
+ .pokemonOffset = 6,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SLAKOTH] =
+ {
+ .categoryName = _("SLACKER"),
+ .height = 8,
+ .weight = 240,
+ .description = gSlakothPokedexText,
+ .pokemonScale = 291,
+ .pokemonOffset = 16,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_VIGOROTH] =
+ {
+ .categoryName = _("WILD MONKEY"),
+ .height = 14,
+ .weight = 465,
+ .description = gVigorothPokedexText,
+ .pokemonScale = 301,
+ .pokemonOffset = 2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SLAKING] =
+ {
+ .categoryName = _("LAZY"),
+ .height = 20,
+ .weight = 1305,
+ .description = gSlakingPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 2,
+ .trainerScale = 300,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_NINCADA] =
+ {
+ .categoryName = _("TRAINEE"),
+ .height = 5,
+ .weight = 55,
+ .description = gNincadaPokedexText,
+ .pokemonScale = 405,
+ .pokemonOffset = 21,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_NINJASK] =
+ {
+ .categoryName = _("NINJA"),
+ .height = 8,
+ .weight = 120,
+ .description = gNinjaskPokedexText,
+ .pokemonScale = 383,
+ .pokemonOffset = -9,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SHEDINJA] =
+ {
+ .categoryName = _("SHED"),
+ .height = 8,
+ .weight = 12,
+ .description = gShedinjaPokedexText,
+ .pokemonScale = 372,
+ .pokemonOffset = -8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WHISMUR] =
+ {
+ .categoryName = _("WHISPER"),
+ .height = 6,
+ .weight = 163,
+ .description = gWhismurPokedexText,
+ .pokemonScale = 373,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_LOUDRED] =
+ {
+ .categoryName = _("BIG VOICE"),
+ .height = 10,
+ .weight = 405,
+ .description = gLoudredPokedexText,
+ .pokemonScale = 356,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_EXPLOUD] =
+ {
+ .categoryName = _("LOUD NOISE"),
+ .height = 15,
+ .weight = 840,
+ .description = gExploudPokedexText,
+ .pokemonScale = 284,
+ .pokemonOffset = 1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MAKUHITA] =
+ {
+ .categoryName = _("GUTS"),
+ .height = 10,
+ .weight = 864,
+ .description = gMakuhitaPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_HARIYAMA] =
+ {
+ .categoryName = _("ARM THRUST"),
+ .height = 23,
+ .weight = 2538,
+ .description = gHariyamaPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 343,
+ .trainerOffset = 7,
+ },
+
+ [NATIONAL_DEX_AZURILL] =
+ {
+ .categoryName = _("POLKA DOT"),
+ .height = 2,
+ .weight = 20,
+ .description = gAzurillPokedexText,
+ .pokemonScale = 603,
+ .pokemonOffset = 23,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_NOSEPASS] =
+ {
+ .categoryName = _("COMPASS"),
+ .height = 10,
+ .weight = 970,
+ .description = gNosepassPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 9,
+ .trainerScale = 289,
+ .trainerOffset = 3,
+ },
+
+ [NATIONAL_DEX_SKITTY] =
+ {
+ .categoryName = _("KITTEN"),
+ .height = 6,
+ .weight = 110,
+ .description = gSkittyPokedexText,
+ .pokemonScale = 492,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_DELCATTY] =
+ {
+ .categoryName = _("PRIM"),
+ .height = 11,
+ .weight = 326,
+ .description = gDelcattyPokedexText,
+ .pokemonScale = 322,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SABLEYE] =
+ {
+ .categoryName = _("DARKNESS"),
+ .height = 5,
+ .weight = 110,
+ .description = gSableyePokedexText,
+ .pokemonScale = 451,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MAWILE] =
+ {
+ .categoryName = _("DECEIVER"),
+ .height = 6,
+ .weight = 115,
+ .description = gMawilePokedexText,
+ .pokemonScale = 466,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ARON] =
+ {
+ .categoryName = _("IRON ARMOR"),
+ .height = 4,
+ .weight = 600,
+ .description = gAronPokedexText,
+ .pokemonScale = 419,
+ .pokemonOffset = 23,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_LAIRON] =
+ {
+ .categoryName = _("IRON ARMOR"),
+ .height = 9,
+ .weight = 1200,
+ .description = gLaironPokedexText,
+ .pokemonScale = 275,
+ .pokemonOffset = 12,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_AGGRON] =
+ {
+ .categoryName = _("IRON ARMOR"),
+ .height = 21,
+ .weight = 3600,
+ .description = gAggronPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = -1,
+ .trainerScale = 350,
+ .trainerOffset = 6,
+ },
+
+ [NATIONAL_DEX_MEDITITE] =
+ {
+ .categoryName = _("MEDITATE"),
+ .height = 6,
+ .weight = 112,
+ .description = gMedititePokedexText,
+ .pokemonScale = 465,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MEDICHAM] =
+ {
+ .categoryName = _("MEDITATE"),
+ .height = 13,
+ .weight = 315,
+ .description = gMedichamPokedexText,
+ .pokemonScale = 298,
+ .pokemonOffset = 5,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ELECTRIKE] =
+ {
+ .categoryName = _("LIGHTNING"),
+ .height = 6,
+ .weight = 152,
+ .description = gElectrikePokedexText,
+ .pokemonScale = 290,
+ .pokemonOffset = 15,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MANECTRIC] =
+ {
+ .categoryName = _("DISCHARGE"),
+ .height = 15,
+ .weight = 402,
+ .description = gManectricPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 257,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_PLUSLE] =
+ {
+ .categoryName = _("CHEERING"),
+ .height = 4,
+ .weight = 42,
+ .description = gPluslePokedexText,
+ .pokemonScale = 515,
+ .pokemonOffset = -9,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MINUN] =
+ {
+ .categoryName = _("CHEERING"),
+ .height = 4,
+ .weight = 42,
+ .description = gMinunPokedexText,
+ .pokemonScale = 512,
+ .pokemonOffset = -7,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_VOLBEAT] =
+ {
+ .categoryName = _("FIREFLY"),
+ .height = 7,
+ .weight = 177,
+ .description = gVolbeatPokedexText,
+ .pokemonScale = 442,
+ .pokemonOffset = 16,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ILLUMISE] =
+ {
+ .categoryName = _("FIREFLY"),
+ .height = 6,
+ .weight = 177,
+ .description = gIllumisePokedexText,
+ .pokemonScale = 572,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ROSELIA] =
+ {
+ .categoryName = _("THORN"),
+ .height = 3,
+ .weight = 20,
+ .description = gRoseliaPokedexText,
+ .pokemonScale = 677,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GULPIN] =
+ {
+ .categoryName = _("STOMACH"),
+ .height = 4,
+ .weight = 103,
+ .description = gGulpinPokedexText,
+ .pokemonScale = 593,
+ .pokemonOffset = 23,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SWALOT] =
+ {
+ .categoryName = _("POISON BAG"),
+ .height = 17,
+ .weight = 800,
+ .description = gSwalotPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 6,
+ .trainerScale = 345,
+ .trainerOffset = 3,
+ },
+
+ [NATIONAL_DEX_CARVANHA] =
+ {
+ .categoryName = _("SAVAGE"),
+ .height = 8,
+ .weight = 208,
+ .description = gCarvanhaPokedexText,
+ .pokemonScale = 362,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SHARPEDO] =
+ {
+ .categoryName = _("BRUTAL"),
+ .height = 18,
+ .weight = 888,
+ .description = gSharpedoPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 317,
+ .trainerOffset = 3,
+ },
+
+ [NATIONAL_DEX_WAILMER] =
+ {
+ .categoryName = _("BALL WHALE"),
+ .height = 20,
+ .weight = 1300,
+ .description = gWailmerPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 2,
+ .trainerScale = 493,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WAILORD] =
+ {
+ .categoryName = _("FLOAT WHALE"),
+ .height = 145,
+ .weight = 3980,
+ .description = gWailordPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 1352,
+ .trainerOffset = 18,
+ },
+
+ [NATIONAL_DEX_NUMEL] =
+ {
+ .categoryName = _("NUMB"),
+ .height = 7,
+ .weight = 240,
+ .description = gNumelPokedexText,
+ .pokemonScale = 342,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CAMERUPT] =
+ {
+ .categoryName = _("ERUPTION"),
+ .height = 19,
+ .weight = 2200,
+ .description = gCameruptPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 7,
+ .trainerScale = 345,
+ .trainerOffset = 6,
+ },
+
+ [NATIONAL_DEX_TORKOAL] =
+ {
+ .categoryName = _("COAL"),
+ .height = 5,
+ .weight = 804,
+ .description = gTorkoalPokedexText,
+ .pokemonScale = 390,
+ .pokemonOffset = 9,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SPOINK] =
+ {
+ .categoryName = _("BOUNCE"),
+ .height = 7,
+ .weight = 306,
+ .description = gSpoinkPokedexText,
+ .pokemonScale = 423,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GRUMPIG] =
+ {
+ .categoryName = _("MANIPULATE"),
+ .height = 9,
+ .weight = 715,
+ .description = gGrumpigPokedexText,
+ .pokemonScale = 358,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SPINDA] =
+ {
+ .categoryName = _("SPOT PANDA"),
+ .height = 11,
+ .weight = 50,
+ .description = gSpindaPokedexText,
+ .pokemonScale = 321,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_TRAPINCH] =
+ {
+ .categoryName = _("ANT PIT"),
+ .height = 7,
+ .weight = 150,
+ .description = gTrapinchPokedexText,
+ .pokemonScale = 298,
+ .pokemonOffset = 17,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_VIBRAVA] =
+ {
+ .categoryName = _("VIBRATION"),
+ .height = 11,
+ .weight = 153,
+ .description = gVibravaPokedexText,
+ .pokemonScale = 370,
+ .pokemonOffset = 11,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_FLYGON] =
+ {
+ .categoryName = _("MYSTIC"),
+ .height = 20,
+ .weight = 820,
+ .description = gFlygonPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 268,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_CACNEA] =
+ {
+ .categoryName = _("CACTUS"),
+ .height = 4,
+ .weight = 513,
+ .description = gCacneaPokedexText,
+ .pokemonScale = 455,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CACTURNE] =
+ {
+ .categoryName = _("SCARECROW"),
+ .height = 13,
+ .weight = 774,
+ .description = gCacturnePokedexText,
+ .pokemonScale = 327,
+ .pokemonOffset = 5,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SWABLU] =
+ {
+ .categoryName = _("COTTON BIRD"),
+ .height = 4,
+ .weight = 12,
+ .description = gSwabluPokedexText,
+ .pokemonScale = 422,
+ .pokemonOffset = -8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ALTARIA] =
+ {
+ .categoryName = _("HUMMING"),
+ .height = 11,
+ .weight = 206,
+ .description = gAltariaPokedexText,
+ .pokemonScale = 327,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ZANGOOSE] =
+ {
+ .categoryName = _("CAT FERRET"),
+ .height = 13,
+ .weight = 403,
+ .description = gZangoosePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SEVIPER] =
+ {
+ .categoryName = _("FANG SNAKE"),
+ .height = 27,
+ .weight = 525,
+ .description = gSeviperPokedexText,
+ .pokemonScale = 275,
+ .pokemonOffset = 7,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_LUNATONE] =
+ {
+ .categoryName = _("METEORITE"),
+ .height = 10,
+ .weight = 1680,
+ .description = gLunatonePokedexText,
+ .pokemonScale = 300,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SOLROCK] =
+ {
+ .categoryName = _("METEORITE"),
+ .height = 12,
+ .weight = 1540,
+ .description = gSolrockPokedexText,
+ .pokemonScale = 328,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BARBOACH] =
+ {
+ .categoryName = _("WHISKERS"),
+ .height = 4,
+ .weight = 19,
+ .description = gBarboachPokedexText,
+ .pokemonScale = 581,
+ .pokemonOffset = -3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WHISCASH] =
+ {
+ .categoryName = _("WHISKERS"),
+ .height = 9,
+ .weight = 236,
+ .description = gWhiscashPokedexText,
+ .pokemonScale = 317,
+ .pokemonOffset = 1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CORPHISH] =
+ {
+ .categoryName = _("RUFFIAN"),
+ .height = 6,
+ .weight = 115,
+ .description = gCorphishPokedexText,
+ .pokemonScale = 484,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CRAWDAUNT] =
+ {
+ .categoryName = _("ROGUE"),
+ .height = 11,
+ .weight = 328,
+ .description = gCrawdauntPokedexText,
+ .pokemonScale = 365,
+ .pokemonOffset = 9,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BALTOY] =
+ {
+ .categoryName = _("CLAY DOLL"),
+ .height = 5,
+ .weight = 215,
+ .description = gBaltoyPokedexText,
+ .pokemonScale = 457,
+ .pokemonOffset = 21,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CLAYDOL] =
+ {
+ .categoryName = _("CLAY DOLL"),
+ .height = 15,
+ .weight = 1080,
+ .description = gClaydolPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 280,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_LILEEP] =
+ {
+ .categoryName = _("SEA LILY"),
+ .height = 10,
+ .weight = 238,
+ .description = gLileepPokedexText,
+ .pokemonScale = 305,
+ .pokemonOffset = 8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CRADILY] =
+ {
+ .categoryName = _("BARNACLE"),
+ .height = 15,
+ .weight = 604,
+ .description = gCradilyPokedexText,
+ .pokemonScale = 267,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ANORITH] =
+ {
+ .categoryName = _("OLD SHRIMP"),
+ .height = 7,
+ .weight = 125,
+ .description = gAnorithPokedexText,
+ .pokemonScale = 296,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ARMALDO] =
+ {
+ .categoryName = _("PLATE"),
+ .height = 15,
+ .weight = 682,
+ .description = gArmaldoPokedexText,
+ .pokemonScale = 312,
+ .pokemonOffset = 3,
+ .trainerScale = 271,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_FEEBAS] =
+ {
+ .categoryName = _("FISH"),
+ .height = 6,
+ .weight = 74,
+ .description = gFeebasPokedexText,
+ .pokemonScale = 423,
+ .pokemonOffset = -4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_MILOTIC] =
+ {
+ .categoryName = _("TENDER"),
+ .height = 62,
+ .weight = 1620,
+ .description = gMiloticPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 360,
+ .trainerOffset = 7,
+ },
+
+ [NATIONAL_DEX_CASTFORM] =
+ {
+ .categoryName = _("WEATHER"),
+ .height = 3,
+ .weight = 8,
+ .description = gCastformPokedexText,
+ .pokemonScale = 435,
+ .pokemonOffset = -5,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_KECLEON] =
+ {
+ .categoryName = _("COLOR SWAP"),
+ .height = 10,
+ .weight = 220,
+ .description = gKecleonPokedexText,
+ .pokemonScale = 316,
+ .pokemonOffset = 10,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SHUPPET] =
+ {
+ .categoryName = _("PUPPET"),
+ .height = 6,
+ .weight = 23,
+ .description = gShuppetPokedexText,
+ .pokemonScale = 440,
+ .pokemonOffset = 20,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BANETTE] =
+ {
+ .categoryName = _("MARIONETTE"),
+ .height = 11,
+ .weight = 125,
+ .description = gBanettePokedexText,
+ .pokemonScale = 262,
+ .pokemonOffset = 9,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_DUSKULL] =
+ {
+ .categoryName = _("REQUIEM"),
+ .height = 8,
+ .weight = 150,
+ .description = gDuskullPokedexText,
+ .pokemonScale = 406,
+ .pokemonOffset = -4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_DUSCLOPS] =
+ {
+ .categoryName = _("BECKON"),
+ .height = 16,
+ .weight = 306,
+ .description = gDusclopsPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 299,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_TROPIUS] =
+ {
+ .categoryName = _("FRUIT"),
+ .height = 20,
+ .weight = 1000,
+ .description = gTropiusPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 344,
+ .trainerOffset = 7,
+ },
+
+ [NATIONAL_DEX_CHIMECHO] =
+ {
+ .categoryName = _("WIND CHIME"),
+ .height = 6,
+ .weight = 10,
+ .description = gChimechoPokedexText,
+ .pokemonScale = 505,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_ABSOL] =
+ {
+ .categoryName = _("DISASTER"),
+ .height = 12,
+ .weight = 470,
+ .description = gAbsolPokedexText,
+ .pokemonScale = 301,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WYNAUT] =
+ {
+ .categoryName = _("BRIGHT"),
+ .height = 6,
+ .weight = 140,
+ .description = gWynautPokedexText,
+ .pokemonScale = 484,
+ .pokemonOffset = 19,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SNORUNT] =
+ {
+ .categoryName = _("SNOW HAT"),
+ .height = 7,
+ .weight = 168,
+ .description = gSnoruntPokedexText,
+ .pokemonScale = 380,
+ .pokemonOffset = 15,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GLALIE] =
+ {
+ .categoryName = _("FACE"),
+ .height = 15,
+ .weight = 2565,
+ .description = gGlaliePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 3,
+ .trainerScale = 344,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SPHEAL] =
+ {
+ .categoryName = _("CLAP"),
+ .height = 8,
+ .weight = 395,
+ .description = gSphealPokedexText,
+ .pokemonScale = 315,
+ .pokemonOffset = 16,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SEALEO] =
+ {
+ .categoryName = _("BALL ROLL"),
+ .height = 11,
+ .weight = 876,
+ .description = gSealeoPokedexText,
+ .pokemonScale = 338,
+ .pokemonOffset = 13,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_WALREIN] =
+ {
+ .categoryName = _("ICE BREAK"),
+ .height = 14,
+ .weight = 1506,
+ .description = gWalreinPokedexText,
+ .pokemonScale = 316,
+ .pokemonOffset = 4,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_CLAMPERL] =
+ {
+ .categoryName = _("BIVALVE"),
+ .height = 4,
+ .weight = 525,
+ .description = gClamperlPokedexText,
+ .pokemonScale = 691,
+ .pokemonOffset = 22,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_HUNTAIL] =
+ {
+ .categoryName = _("DEEP SEA"),
+ .height = 17,
+ .weight = 270,
+ .description = gHuntailPokedexText,
+ .pokemonScale = 307,
+ .pokemonOffset = 1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_GOREBYSS] =
+ {
+ .categoryName = _("SOUTH SEA"),
+ .height = 18,
+ .weight = 226,
+ .description = gGorebyssPokedexText,
+ .pokemonScale = 278,
+ .pokemonOffset = 5,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_RELICANTH] =
+ {
+ .categoryName = _("LONGEVITY"),
+ .height = 10,
+ .weight = 234,
+ .description = gRelicanthPokedexText,
+ .pokemonScale = 316,
+ .pokemonOffset = 7,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_LUVDISC] =
+ {
+ .categoryName = _("RENDEZVOUS"),
+ .height = 6,
+ .weight = 87,
+ .description = gLuvdiscPokedexText,
+ .pokemonScale = 371,
+ .pokemonOffset = 2,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BAGON] =
+ {
+ .categoryName = _("ROCK HEAD"),
+ .height = 6,
+ .weight = 421,
+ .description = gBagonPokedexText,
+ .pokemonScale = 448,
+ .pokemonOffset = 18,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SHELGON] =
+ {
+ .categoryName = _("ENDURANCE"),
+ .height = 11,
+ .weight = 1105,
+ .description = gShelgonPokedexText,
+ .pokemonScale = 311,
+ .pokemonOffset = 12,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_SALAMENCE] =
+ {
+ .categoryName = _("DRAGON"),
+ .height = 15,
+ .weight = 1026,
+ .description = gSalamencePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_BELDUM] =
+ {
+ .categoryName = _("IRON BALL"),
+ .height = 6,
+ .weight = 952,
+ .description = gBeldumPokedexText,
+ .pokemonScale = 414,
+ .pokemonOffset = -1,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_METANG] =
+ {
+ .categoryName = _("IRON CLAW"),
+ .height = 12,
+ .weight = 2025,
+ .description = gMetangPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 6,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_METAGROSS] =
+ {
+ .categoryName = _("IRON LEG"),
+ .height = 16,
+ .weight = 5500,
+ .description = gMetagrossPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 4,
+ .trainerScale = 447,
+ .trainerOffset = 9,
+ },
+
+ [NATIONAL_DEX_REGIROCK] =
+ {
+ .categoryName = _("ROCK PEAK"),
+ .height = 17,
+ .weight = 2300,
+ .description = gRegirockPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 2,
+ .trainerScale = 309,
+ .trainerOffset = 1,
+ },
+
+ [NATIONAL_DEX_REGICE] =
+ {
+ .categoryName = _("ICEBERG"),
+ .height = 18,
+ .weight = 1750,
+ .description = gRegicePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 301,
+ .trainerOffset = 2,
+ },
+
+ [NATIONAL_DEX_REGISTEEL] =
+ {
+ .categoryName = _("IRON"),
+ .height = 19,
+ .weight = 2050,
+ .description = gRegisteelPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 359,
+ .trainerOffset = 6,
+ },
+
+ [NATIONAL_DEX_LATIAS] =
+ {
+ .categoryName = _("EON"),
+ .height = 14,
+ .weight = 400,
+ .description = gLatiasPokedexText,
+ .pokemonScale = 304,
+ .pokemonOffset = 3,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_LATIOS] =
+ {
+ .categoryName = _("EON"),
+ .height = 20,
+ .weight = 600,
+ .description = gLatiosPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 294,
+ .trainerOffset = 3,
+ },
+
+ [NATIONAL_DEX_KYOGRE] =
+ {
+ .categoryName = _("SEA BASIN"),
+ .height = 45,
+ .weight = 3520,
+ .description = gKyogrePokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 614,
+ .trainerOffset = 13,
+ },
+
+ [NATIONAL_DEX_GROUDON] =
+ {
+ .categoryName = _("CONTINENT"),
+ .height = 35,
+ .weight = 9500,
+ .description = gGroudonPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 515,
+ .trainerOffset = 14,
+ },
+
+ [NATIONAL_DEX_RAYQUAZA] =
+ {
+ .categoryName = _("SKY HIGH"),
+ .height = 70,
+ .weight = 2065,
+ .description = gRayquazaPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 448,
+ .trainerOffset = 12,
+ },
+
+ [NATIONAL_DEX_JIRACHI] =
+ {
+ .categoryName = _("WISH"),
+ .height = 3,
+ .weight = 11,
+ .description = gJirachiPokedexText,
+ .pokemonScale = 608,
+ .pokemonOffset = -8,
+ .trainerScale = 256,
+ .trainerOffset = 0,
+ },
+
+ [NATIONAL_DEX_DEOXYS] =
+ {
+ .categoryName = _("DNA"),
+ .height = 17,
+ .weight = 608,
+ .description = gDeoxysPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 290,
+ .trainerOffset = 2,
+ },
+};
diff --git a/src/data/pokemon/pokedex_orders.h b/src/data/pokemon/pokedex_orders.h
new file mode 100644
index 000000000..55b0abcea
--- /dev/null
+++ b/src/data/pokemon/pokedex_orders.h
@@ -0,0 +1,1195 @@
+const u16 gPokedexOrder_Alphabetical[] =
+{
+ NATIONAL_DEX_OLD_UNOWN_B,
+ NATIONAL_DEX_OLD_UNOWN_C,
+ NATIONAL_DEX_OLD_UNOWN_D,
+ NATIONAL_DEX_OLD_UNOWN_E,
+ NATIONAL_DEX_OLD_UNOWN_F,
+ NATIONAL_DEX_OLD_UNOWN_G,
+ NATIONAL_DEX_OLD_UNOWN_H,
+ NATIONAL_DEX_OLD_UNOWN_I,
+ NATIONAL_DEX_OLD_UNOWN_J,
+ NATIONAL_DEX_OLD_UNOWN_K,
+ NATIONAL_DEX_OLD_UNOWN_L,
+ NATIONAL_DEX_OLD_UNOWN_M,
+ NATIONAL_DEX_OLD_UNOWN_N,
+ NATIONAL_DEX_OLD_UNOWN_O,
+ NATIONAL_DEX_OLD_UNOWN_P,
+ NATIONAL_DEX_OLD_UNOWN_Q,
+ NATIONAL_DEX_OLD_UNOWN_R,
+ NATIONAL_DEX_OLD_UNOWN_S,
+ NATIONAL_DEX_OLD_UNOWN_T,
+ NATIONAL_DEX_OLD_UNOWN_U,
+ NATIONAL_DEX_OLD_UNOWN_V,
+ NATIONAL_DEX_OLD_UNOWN_W,
+ NATIONAL_DEX_OLD_UNOWN_X,
+ NATIONAL_DEX_OLD_UNOWN_Y,
+ NATIONAL_DEX_OLD_UNOWN_Z,
+ // Actual pokemon start here.
+ NATIONAL_DEX_ABRA,
+ NATIONAL_DEX_ABSOL,
+ NATIONAL_DEX_AERODACTYL,
+ NATIONAL_DEX_AGGRON,
+ NATIONAL_DEX_AIPOM,
+ NATIONAL_DEX_ALAKAZAM,
+ NATIONAL_DEX_ALTARIA,
+ NATIONAL_DEX_AMPHAROS,
+ NATIONAL_DEX_ANORITH,
+ NATIONAL_DEX_ARBOK,
+ NATIONAL_DEX_ARCANINE,
+ NATIONAL_DEX_ARIADOS,
+ NATIONAL_DEX_ARMALDO,
+ NATIONAL_DEX_ARON,
+ NATIONAL_DEX_ARTICUNO,
+ NATIONAL_DEX_AZUMARILL,
+ NATIONAL_DEX_AZURILL,
+ NATIONAL_DEX_BAGON,
+ NATIONAL_DEX_BALTOY,
+ NATIONAL_DEX_BANETTE,
+ NATIONAL_DEX_BARBOACH,
+ NATIONAL_DEX_BAYLEEF,
+ NATIONAL_DEX_BEAUTIFLY,
+ NATIONAL_DEX_BEEDRILL,
+ NATIONAL_DEX_BELDUM,
+ NATIONAL_DEX_BELLOSSOM,
+ NATIONAL_DEX_BELLSPROUT,
+ NATIONAL_DEX_BLASTOISE,
+ NATIONAL_DEX_BLAZIKEN,
+ NATIONAL_DEX_BLISSEY,
+ NATIONAL_DEX_BRELOOM,
+ NATIONAL_DEX_BULBASAUR,
+ NATIONAL_DEX_BUTTERFREE,
+ NATIONAL_DEX_CACNEA,
+ NATIONAL_DEX_CACTURNE,
+ NATIONAL_DEX_CAMERUPT,
+ NATIONAL_DEX_CARVANHA,
+ NATIONAL_DEX_CASCOON,
+ NATIONAL_DEX_CASTFORM,
+ NATIONAL_DEX_CATERPIE,
+ NATIONAL_DEX_CELEBI,
+ NATIONAL_DEX_CHANSEY,
+ NATIONAL_DEX_CHARIZARD,
+ NATIONAL_DEX_CHARMANDER,
+ NATIONAL_DEX_CHARMELEON,
+ NATIONAL_DEX_CHIKORITA,
+ NATIONAL_DEX_CHIMECHO,
+ NATIONAL_DEX_CHINCHOU,
+ NATIONAL_DEX_CLAMPERL,
+ NATIONAL_DEX_CLAYDOL,
+ NATIONAL_DEX_CLEFABLE,
+ NATIONAL_DEX_CLEFAIRY,
+ NATIONAL_DEX_CLEFFA,
+ NATIONAL_DEX_CLOYSTER,
+ NATIONAL_DEX_COMBUSKEN,
+ NATIONAL_DEX_CORPHISH,
+ NATIONAL_DEX_CORSOLA,
+ NATIONAL_DEX_CRADILY,
+ NATIONAL_DEX_CRAWDAUNT,
+ NATIONAL_DEX_CROBAT,
+ NATIONAL_DEX_CROCONAW,
+ NATIONAL_DEX_CUBONE,
+ NATIONAL_DEX_CYNDAQUIL,
+ NATIONAL_DEX_DELCATTY,
+ NATIONAL_DEX_DELIBIRD,
+ NATIONAL_DEX_DEOXYS,
+ NATIONAL_DEX_DEWGONG,
+ NATIONAL_DEX_DIGLETT,
+ NATIONAL_DEX_DITTO,
+ NATIONAL_DEX_DODRIO,
+ NATIONAL_DEX_DODUO,
+ NATIONAL_DEX_DONPHAN,
+ NATIONAL_DEX_DRAGONAIR,
+ NATIONAL_DEX_DRAGONITE,
+ NATIONAL_DEX_DRATINI,
+ NATIONAL_DEX_DROWZEE,
+ NATIONAL_DEX_DUGTRIO,
+ NATIONAL_DEX_DUNSPARCE,
+ NATIONAL_DEX_DUSCLOPS,
+ NATIONAL_DEX_DUSKULL,
+ NATIONAL_DEX_DUSTOX,
+ NATIONAL_DEX_EEVEE,
+ NATIONAL_DEX_EKANS,
+ NATIONAL_DEX_ELECTABUZZ,
+ NATIONAL_DEX_ELECTRIKE,
+ NATIONAL_DEX_ELECTRODE,
+ NATIONAL_DEX_ELEKID,
+ NATIONAL_DEX_ENTEI,
+ NATIONAL_DEX_ESPEON,
+ NATIONAL_DEX_EXEGGCUTE,
+ NATIONAL_DEX_EXEGGUTOR,
+ NATIONAL_DEX_EXPLOUD,
+ NATIONAL_DEX_FARFETCHD,
+ NATIONAL_DEX_FEAROW,
+ NATIONAL_DEX_FEEBAS,
+ NATIONAL_DEX_FERALIGATR,
+ NATIONAL_DEX_FLAAFFY,
+ NATIONAL_DEX_FLAREON,
+ NATIONAL_DEX_FLYGON,
+ NATIONAL_DEX_FORRETRESS,
+ NATIONAL_DEX_FURRET,
+ NATIONAL_DEX_GARDEVOIR,
+ NATIONAL_DEX_GASTLY,
+ NATIONAL_DEX_GENGAR,
+ NATIONAL_DEX_GEODUDE,
+ NATIONAL_DEX_GIRAFARIG,
+ NATIONAL_DEX_GLALIE,
+ NATIONAL_DEX_GLIGAR,
+ NATIONAL_DEX_GLOOM,
+ NATIONAL_DEX_GOLBAT,
+ NATIONAL_DEX_GOLDEEN,
+ NATIONAL_DEX_GOLDUCK,
+ NATIONAL_DEX_GOLEM,
+ NATIONAL_DEX_GOREBYSS,
+ NATIONAL_DEX_GRANBULL,
+ NATIONAL_DEX_GRAVELER,
+ NATIONAL_DEX_GRIMER,
+ NATIONAL_DEX_GROUDON,
+ NATIONAL_DEX_GROVYLE,
+ NATIONAL_DEX_GROWLITHE,
+ NATIONAL_DEX_GRUMPIG,
+ NATIONAL_DEX_GULPIN,
+ NATIONAL_DEX_GYARADOS,
+ NATIONAL_DEX_HARIYAMA,
+ NATIONAL_DEX_HAUNTER,
+ NATIONAL_DEX_HERACROSS,
+ NATIONAL_DEX_HITMONCHAN,
+ NATIONAL_DEX_HITMONLEE,
+ NATIONAL_DEX_HITMONTOP,
+ NATIONAL_DEX_HO_OH,
+ NATIONAL_DEX_HOOTHOOT,
+ NATIONAL_DEX_HOPPIP,
+ NATIONAL_DEX_HORSEA,
+ NATIONAL_DEX_HOUNDOOM,
+ NATIONAL_DEX_HOUNDOUR,
+ NATIONAL_DEX_HUNTAIL,
+ NATIONAL_DEX_HYPNO,
+ NATIONAL_DEX_IGGLYBUFF,
+ NATIONAL_DEX_ILLUMISE,
+ NATIONAL_DEX_IVYSAUR,
+ NATIONAL_DEX_JIGGLYPUFF,
+ NATIONAL_DEX_JIRACHI,
+ NATIONAL_DEX_JOLTEON,
+ NATIONAL_DEX_JUMPLUFF,
+ NATIONAL_DEX_JYNX,
+ NATIONAL_DEX_KABUTO,
+ NATIONAL_DEX_KABUTOPS,
+ NATIONAL_DEX_KADABRA,
+ NATIONAL_DEX_KAKUNA,
+ NATIONAL_DEX_KANGASKHAN,
+ NATIONAL_DEX_KECLEON,
+ NATIONAL_DEX_KINGDRA,
+ NATIONAL_DEX_KINGLER,
+ NATIONAL_DEX_KIRLIA,
+ NATIONAL_DEX_KOFFING,
+ NATIONAL_DEX_KRABBY,
+ NATIONAL_DEX_KYOGRE,
+ NATIONAL_DEX_LAIRON,
+ NATIONAL_DEX_LANTURN,
+ NATIONAL_DEX_LAPRAS,
+ NATIONAL_DEX_LARVITAR,
+ NATIONAL_DEX_LATIAS,
+ NATIONAL_DEX_LATIOS,
+ NATIONAL_DEX_LEDIAN,
+ NATIONAL_DEX_LEDYBA,
+ NATIONAL_DEX_LICKITUNG,
+ NATIONAL_DEX_LILEEP,
+ NATIONAL_DEX_LINOONE,
+ NATIONAL_DEX_LOMBRE,
+ NATIONAL_DEX_LOTAD,
+ NATIONAL_DEX_LOUDRED,
+ NATIONAL_DEX_LUDICOLO,
+ NATIONAL_DEX_LUGIA,
+ NATIONAL_DEX_LUNATONE,
+ NATIONAL_DEX_LUVDISC,
+ NATIONAL_DEX_MACHAMP,
+ NATIONAL_DEX_MACHOKE,
+ NATIONAL_DEX_MACHOP,
+ NATIONAL_DEX_MAGBY,
+ NATIONAL_DEX_MAGCARGO,
+ NATIONAL_DEX_MAGIKARP,
+ NATIONAL_DEX_MAGMAR,
+ NATIONAL_DEX_MAGNEMITE,
+ NATIONAL_DEX_MAGNETON,
+ NATIONAL_DEX_MAKUHITA,
+ NATIONAL_DEX_MANECTRIC,
+ NATIONAL_DEX_MANKEY,
+ NATIONAL_DEX_MANTINE,
+ NATIONAL_DEX_MAREEP,
+ NATIONAL_DEX_MARILL,
+ NATIONAL_DEX_MAROWAK,
+ NATIONAL_DEX_MARSHTOMP,
+ NATIONAL_DEX_MASQUERAIN,
+ NATIONAL_DEX_MAWILE,
+ NATIONAL_DEX_MEDICHAM,
+ NATIONAL_DEX_MEDITITE,
+ NATIONAL_DEX_MEGANIUM,
+ NATIONAL_DEX_MEOWTH,
+ NATIONAL_DEX_METAGROSS,
+ NATIONAL_DEX_METANG,
+ NATIONAL_DEX_METAPOD,
+ NATIONAL_DEX_MEW,
+ NATIONAL_DEX_MEWTWO,
+ NATIONAL_DEX_MIGHTYENA,
+ NATIONAL_DEX_MILOTIC,
+ NATIONAL_DEX_MILTANK,
+ NATIONAL_DEX_MINUN,
+ NATIONAL_DEX_MISDREAVUS,
+ NATIONAL_DEX_MOLTRES,
+ NATIONAL_DEX_MR_MIME,
+ NATIONAL_DEX_MUDKIP,
+ NATIONAL_DEX_MUK,
+ NATIONAL_DEX_MURKROW,
+ NATIONAL_DEX_NATU,
+ NATIONAL_DEX_NIDOKING,
+ NATIONAL_DEX_NIDOQUEEN,
+ NATIONAL_DEX_NIDORAN_F,
+ NATIONAL_DEX_NIDORAN_M,
+ NATIONAL_DEX_NIDORINA,
+ NATIONAL_DEX_NIDORINO,
+ NATIONAL_DEX_NINCADA,
+ NATIONAL_DEX_NINETALES,
+ NATIONAL_DEX_NINJASK,
+ NATIONAL_DEX_NOCTOWL,
+ NATIONAL_DEX_NOSEPASS,
+ NATIONAL_DEX_NUMEL,
+ NATIONAL_DEX_NUZLEAF,
+ NATIONAL_DEX_OCTILLERY,
+ NATIONAL_DEX_ODDISH,
+ NATIONAL_DEX_OMANYTE,
+ NATIONAL_DEX_OMASTAR,
+ NATIONAL_DEX_ONIX,
+ NATIONAL_DEX_PARAS,
+ NATIONAL_DEX_PARASECT,
+ NATIONAL_DEX_PELIPPER,
+ NATIONAL_DEX_PERSIAN,
+ NATIONAL_DEX_PHANPY,
+ NATIONAL_DEX_PICHU,
+ NATIONAL_DEX_PIDGEOT,
+ NATIONAL_DEX_PIDGEOTTO,
+ NATIONAL_DEX_PIDGEY,
+ NATIONAL_DEX_PIKACHU,
+ NATIONAL_DEX_PILOSWINE,
+ NATIONAL_DEX_PINECO,
+ NATIONAL_DEX_PINSIR,
+ NATIONAL_DEX_PLUSLE,
+ NATIONAL_DEX_POLITOED,
+ NATIONAL_DEX_POLIWAG,
+ NATIONAL_DEX_POLIWHIRL,
+ NATIONAL_DEX_POLIWRATH,
+ NATIONAL_DEX_PONYTA,
+ NATIONAL_DEX_POOCHYENA,
+ NATIONAL_DEX_PORYGON,
+ NATIONAL_DEX_PORYGON2,
+ NATIONAL_DEX_PRIMEAPE,
+ NATIONAL_DEX_PSYDUCK,
+ NATIONAL_DEX_PUPITAR,
+ NATIONAL_DEX_QUAGSIRE,
+ NATIONAL_DEX_QUILAVA,
+ NATIONAL_DEX_QWILFISH,
+ NATIONAL_DEX_RAICHU,
+ NATIONAL_DEX_RAIKOU,
+ NATIONAL_DEX_RALTS,
+ NATIONAL_DEX_RAPIDASH,
+ NATIONAL_DEX_RATICATE,
+ NATIONAL_DEX_RATTATA,
+ NATIONAL_DEX_RAYQUAZA,
+ NATIONAL_DEX_REGICE,
+ NATIONAL_DEX_REGIROCK,
+ NATIONAL_DEX_REGISTEEL,
+ NATIONAL_DEX_RELICANTH,
+ NATIONAL_DEX_REMORAID,
+ NATIONAL_DEX_RHYDON,
+ NATIONAL_DEX_RHYHORN,
+ NATIONAL_DEX_ROSELIA,
+ NATIONAL_DEX_SABLEYE,
+ NATIONAL_DEX_SALAMENCE,
+ NATIONAL_DEX_SANDSHREW,
+ NATIONAL_DEX_SANDSLASH,
+ NATIONAL_DEX_SCEPTILE,
+ NATIONAL_DEX_SCIZOR,
+ NATIONAL_DEX_SCYTHER,
+ NATIONAL_DEX_SEADRA,
+ NATIONAL_DEX_SEAKING,
+ NATIONAL_DEX_SEALEO,
+ NATIONAL_DEX_SEEDOT,
+ NATIONAL_DEX_SEEL,
+ NATIONAL_DEX_SENTRET,
+ NATIONAL_DEX_SEVIPER,
+ NATIONAL_DEX_SHARPEDO,
+ NATIONAL_DEX_SHEDINJA,
+ NATIONAL_DEX_SHELGON,
+ NATIONAL_DEX_SHELLDER,
+ NATIONAL_DEX_SHIFTRY,
+ NATIONAL_DEX_SHROOMISH,
+ NATIONAL_DEX_SHUCKLE,
+ NATIONAL_DEX_SHUPPET,
+ NATIONAL_DEX_SILCOON,
+ NATIONAL_DEX_SKARMORY,
+ NATIONAL_DEX_SKIPLOOM,
+ NATIONAL_DEX_SKITTY,
+ NATIONAL_DEX_SLAKING,
+ NATIONAL_DEX_SLAKOTH,
+ NATIONAL_DEX_SLOWBRO,
+ NATIONAL_DEX_SLOWKING,
+ NATIONAL_DEX_SLOWPOKE,
+ NATIONAL_DEX_SLUGMA,
+ NATIONAL_DEX_SMEARGLE,
+ NATIONAL_DEX_SMOOCHUM,
+ NATIONAL_DEX_SNEASEL,
+ NATIONAL_DEX_SNORLAX,
+ NATIONAL_DEX_SNORUNT,
+ NATIONAL_DEX_SNUBBULL,
+ NATIONAL_DEX_SOLROCK,
+ NATIONAL_DEX_SPEAROW,
+ NATIONAL_DEX_SPHEAL,
+ NATIONAL_DEX_SPINARAK,
+ NATIONAL_DEX_SPINDA,
+ NATIONAL_DEX_SPOINK,
+ NATIONAL_DEX_SQUIRTLE,
+ NATIONAL_DEX_STANTLER,
+ NATIONAL_DEX_STARMIE,
+ NATIONAL_DEX_STARYU,
+ NATIONAL_DEX_STEELIX,
+ NATIONAL_DEX_SUDOWOODO,
+ NATIONAL_DEX_SUICUNE,
+ NATIONAL_DEX_SUNFLORA,
+ NATIONAL_DEX_SUNKERN,
+ NATIONAL_DEX_SURSKIT,
+ NATIONAL_DEX_SWABLU,
+ NATIONAL_DEX_SWALOT,
+ NATIONAL_DEX_SWAMPERT,
+ NATIONAL_DEX_SWELLOW,
+ NATIONAL_DEX_SWINUB,
+ NATIONAL_DEX_TAILLOW,
+ NATIONAL_DEX_TANGELA,
+ NATIONAL_DEX_TAUROS,
+ NATIONAL_DEX_TEDDIURSA,
+ NATIONAL_DEX_TENTACOOL,
+ NATIONAL_DEX_TENTACRUEL,
+ NATIONAL_DEX_TOGEPI,
+ NATIONAL_DEX_TOGETIC,
+ NATIONAL_DEX_TORCHIC,
+ NATIONAL_DEX_TORKOAL,
+ NATIONAL_DEX_TOTODILE,
+ NATIONAL_DEX_TRAPINCH,
+ NATIONAL_DEX_TREECKO,
+ NATIONAL_DEX_TROPIUS,
+ NATIONAL_DEX_TYPHLOSION,
+ NATIONAL_DEX_TYRANITAR,
+ NATIONAL_DEX_TYROGUE,
+ NATIONAL_DEX_UMBREON,
+ NATIONAL_DEX_UNOWN,
+ NATIONAL_DEX_URSARING,
+ NATIONAL_DEX_VAPOREON,
+ NATIONAL_DEX_VENOMOTH,
+ NATIONAL_DEX_VENONAT,
+ NATIONAL_DEX_VENUSAUR,
+ NATIONAL_DEX_VIBRAVA,
+ NATIONAL_DEX_VICTREEBEL,
+ NATIONAL_DEX_VIGOROTH,
+ NATIONAL_DEX_VILEPLUME,
+ NATIONAL_DEX_VOLBEAT,
+ NATIONAL_DEX_VOLTORB,
+ NATIONAL_DEX_VULPIX,
+ NATIONAL_DEX_WAILMER,
+ NATIONAL_DEX_WAILORD,
+ NATIONAL_DEX_WALREIN,
+ NATIONAL_DEX_WARTORTLE,
+ NATIONAL_DEX_WEEDLE,
+ NATIONAL_DEX_WEEPINBELL,
+ NATIONAL_DEX_WEEZING,
+ NATIONAL_DEX_WHISCASH,
+ NATIONAL_DEX_WHISMUR,
+ NATIONAL_DEX_WIGGLYTUFF,
+ NATIONAL_DEX_WINGULL,
+ NATIONAL_DEX_WOBBUFFET,
+ NATIONAL_DEX_WOOPER,
+ NATIONAL_DEX_WURMPLE,
+ NATIONAL_DEX_WYNAUT,
+ NATIONAL_DEX_XATU,
+ NATIONAL_DEX_YANMA,
+ NATIONAL_DEX_ZANGOOSE,
+ NATIONAL_DEX_ZAPDOS,
+ NATIONAL_DEX_ZIGZAGOON,
+ NATIONAL_DEX_ZUBAT,
+};
+
+const u16 gPokedexOrder_Weight[] =
+{
+ NATIONAL_DEX_GASTLY,
+ NATIONAL_DEX_HAUNTER,
+ NATIONAL_DEX_HOPPIP,
+ NATIONAL_DEX_DIGLETT,
+ NATIONAL_DEX_CASTFORM,
+ NATIONAL_DEX_KOFFING,
+ NATIONAL_DEX_IGGLYBUFF,
+ NATIONAL_DEX_MISDREAVUS,
+ NATIONAL_DEX_CHIMECHO,
+ NATIONAL_DEX_SKIPLOOM,
+ NATIONAL_DEX_JIRACHI,
+ NATIONAL_DEX_SWABLU,
+ NATIONAL_DEX_SHEDINJA,
+ NATIONAL_DEX_TOGEPI,
+ NATIONAL_DEX_SURSKIT,
+ NATIONAL_DEX_PIDGEY,
+ NATIONAL_DEX_SUNKERN,
+ NATIONAL_DEX_BARBOACH,
+ NATIONAL_DEX_PICHU,
+ NATIONAL_DEX_AZURILL,
+ NATIONAL_DEX_ROSELIA,
+ NATIONAL_DEX_NATU,
+ NATIONAL_DEX_SPEAROW,
+ NATIONAL_DEX_MURKROW,
+ NATIONAL_DEX_SHUPPET,
+ NATIONAL_DEX_TAILLOW,
+ NATIONAL_DEX_EXEGGCUTE,
+ NATIONAL_DEX_TORCHIC,
+ NATIONAL_DEX_LOTAD,
+ NATIONAL_DEX_CATERPIE,
+ NATIONAL_DEX_JUMPLUFF,
+ NATIONAL_DEX_CLEFFA,
+ NATIONAL_DEX_WEEDLE,
+ NATIONAL_DEX_TOGETIC,
+ NATIONAL_DEX_DRATINI,
+ NATIONAL_DEX_RATTATA,
+ NATIONAL_DEX_MASQUERAIN,
+ NATIONAL_DEX_WURMPLE,
+ NATIONAL_DEX_QWILFISH,
+ NATIONAL_DEX_MEW,
+ NATIONAL_DEX_SHELLDER,
+ NATIONAL_DEX_SEEDOT,
+ NATIONAL_DEX_DITTO,
+ NATIONAL_DEX_BELLSPROUT,
+ NATIONAL_DEX_PLUSLE,
+ NATIONAL_DEX_MEOWTH,
+ NATIONAL_DEX_MINUN,
+ NATIONAL_DEX_SHROOMISH,
+ NATIONAL_DEX_CELEBI,
+ NATIONAL_DEX_CORSOLA,
+ NATIONAL_DEX_TREECKO,
+ NATIONAL_DEX_SPINDA,
+ NATIONAL_DEX_UNOWN,
+ NATIONAL_DEX_PARAS,
+ NATIONAL_DEX_ODDISH,
+ NATIONAL_DEX_JIGGLYPUFF,
+ NATIONAL_DEX_NINCADA,
+ NATIONAL_DEX_BELLOSSOM,
+ NATIONAL_DEX_MAGNEMITE,
+ NATIONAL_DEX_PIKACHU,
+ NATIONAL_DEX_SMOOCHUM,
+ NATIONAL_DEX_SENTRET,
+ NATIONAL_DEX_WEEPINBELL,
+ NATIONAL_DEX_CHIKORITA,
+ NATIONAL_DEX_SWINUB,
+ NATIONAL_DEX_EEVEE,
+ NATIONAL_DEX_KRABBY,
+ NATIONAL_DEX_CUBONE,
+ NATIONAL_DEX_RALTS,
+ NATIONAL_DEX_BULBASAUR,
+ NATIONAL_DEX_EKANS,
+ NATIONAL_DEX_NIDORAN_F,
+ NATIONAL_DEX_PINECO,
+ NATIONAL_DEX_FEEBAS,
+ NATIONAL_DEX_OMANYTE,
+ NATIONAL_DEX_ZUBAT,
+ NATIONAL_DEX_CLEFAIRY,
+ NATIONAL_DEX_MUDKIP,
+ NATIONAL_DEX_SNUBBULL,
+ NATIONAL_DEX_MAREEP,
+ NATIONAL_DEX_CYNDAQUIL,
+ NATIONAL_DEX_HORSEA,
+ NATIONAL_DEX_CHARMANDER,
+ NATIONAL_DEX_SUNFLORA,
+ NATIONAL_DEX_MARILL,
+ NATIONAL_DEX_WOOPER,
+ NATIONAL_DEX_SPINARAK,
+ NATIONAL_DEX_GLOOM,
+ NATIONAL_DEX_LUVDISC,
+ NATIONAL_DEX_TEDDIURSA,
+ NATIONAL_DEX_NIDORAN_M,
+ NATIONAL_DEX_SQUIRTLE,
+ NATIONAL_DEX_WINGULL,
+ NATIONAL_DEX_TOTODILE,
+ NATIONAL_DEX_WEEZING,
+ NATIONAL_DEX_VULPIX,
+ NATIONAL_DEX_METAPOD,
+ NATIONAL_DEX_SILCOON,
+ NATIONAL_DEX_MAGIKARP,
+ NATIONAL_DEX_KAKUNA,
+ NATIONAL_DEX_GULPIN,
+ NATIONAL_DEX_VOLTORB,
+ NATIONAL_DEX_LEDYBA,
+ NATIONAL_DEX_HOUNDOUR,
+ NATIONAL_DEX_SKITTY,
+ NATIONAL_DEX_SABLEYE,
+ NATIONAL_DEX_MEDITITE,
+ NATIONAL_DEX_CORPHISH,
+ NATIONAL_DEX_AIPOM,
+ NATIONAL_DEX_CASCOON,
+ NATIONAL_DEX_MAWILE,
+ NATIONAL_DEX_KABUTO,
+ NATIONAL_DEX_WIGGLYTUFF,
+ NATIONAL_DEX_SANDSHREW,
+ NATIONAL_DEX_REMORAID,
+ NATIONAL_DEX_NINJASK,
+ NATIONAL_DEX_CHINCHOU,
+ NATIONAL_DEX_POLIWAG,
+ NATIONAL_DEX_ANORITH,
+ NATIONAL_DEX_VENOMOTH,
+ NATIONAL_DEX_BANETTE,
+ NATIONAL_DEX_IVYSAUR,
+ NATIONAL_DEX_FLAAFFY,
+ NATIONAL_DEX_POOCHYENA,
+ NATIONAL_DEX_WYNAUT,
+ NATIONAL_DEX_DUNSPARCE,
+ NATIONAL_DEX_XATU,
+ NATIONAL_DEX_DUSKULL,
+ NATIONAL_DEX_FARFETCHD,
+ NATIONAL_DEX_TRAPINCH,
+ NATIONAL_DEX_GOLDEEN,
+ NATIONAL_DEX_ELECTRIKE,
+ NATIONAL_DEX_VIBRAVA,
+ NATIONAL_DEX_VICTREEBEL,
+ NATIONAL_DEX_BAYLEEF,
+ NATIONAL_DEX_DELIBIRD,
+ NATIONAL_DEX_WHISMUR,
+ NATIONAL_DEX_DRAGONAIR,
+ NATIONAL_DEX_SNORUNT,
+ NATIONAL_DEX_ZIGZAGOON,
+ NATIONAL_DEX_ILLUMISE,
+ NATIONAL_DEX_VOLBEAT,
+ NATIONAL_DEX_RATICATE,
+ NATIONAL_DEX_VILEPLUME,
+ NATIONAL_DEX_QUILAVA,
+ NATIONAL_DEX_CHARMELEON,
+ NATIONAL_DEX_GROWLITHE,
+ NATIONAL_DEX_COMBUSKEN,
+ NATIONAL_DEX_MACHOP,
+ NATIONAL_DEX_ABRA,
+ NATIONAL_DEX_NIDORINO,
+ NATIONAL_DEX_PSYDUCK,
+ NATIONAL_DEX_SWELLOW,
+ NATIONAL_DEX_NINETALES,
+ NATIONAL_DEX_NIDORINA,
+ NATIONAL_DEX_POLIWHIRL,
+ NATIONAL_DEX_GEODUDE,
+ NATIONAL_DEX_KIRLIA,
+ NATIONAL_DEX_SHUCKLE,
+ NATIONAL_DEX_ALTARIA,
+ NATIONAL_DEX_CARVANHA,
+ NATIONAL_DEX_TYROGUE,
+ NATIONAL_DEX_HOOTHOOT,
+ NATIONAL_DEX_MAGBY,
+ NATIONAL_DEX_BALTOY,
+ NATIONAL_DEX_GROVYLE,
+ NATIONAL_DEX_KECLEON,
+ NATIONAL_DEX_LANTURN,
+ NATIONAL_DEX_WARTORTLE,
+ NATIONAL_DEX_GOREBYSS,
+ NATIONAL_DEX_RELICANTH,
+ NATIONAL_DEX_ELEKID,
+ NATIONAL_DEX_WHISCASH,
+ NATIONAL_DEX_LILEEP,
+ NATIONAL_DEX_NUMEL,
+ NATIONAL_DEX_SLAKOTH,
+ NATIONAL_DEX_JOLTEON,
+ NATIONAL_DEX_CROCONAW,
+ NATIONAL_DEX_FLAREON,
+ NATIONAL_DEX_SEADRA,
+ NATIONAL_DEX_ESPEON,
+ NATIONAL_DEX_HUNTAIL,
+ NATIONAL_DEX_UMBREON,
+ NATIONAL_DEX_MARSHTOMP,
+ NATIONAL_DEX_NUZLEAF,
+ NATIONAL_DEX_SNEASEL,
+ NATIONAL_DEX_MANKEY,
+ NATIONAL_DEX_PELIPPER,
+ NATIONAL_DEX_BEAUTIFLY,
+ NATIONAL_DEX_OCTILLERY,
+ NATIONAL_DEX_AZUMARILL,
+ NATIONAL_DEX_WOBBUFFET,
+ NATIONAL_DEX_VAPOREON,
+ NATIONAL_DEX_SANDSLASH,
+ NATIONAL_DEX_PARASECT,
+ NATIONAL_DEX_BEEDRILL,
+ NATIONAL_DEX_MUK,
+ NATIONAL_DEX_PIDGEOTTO,
+ NATIONAL_DEX_GRIMER,
+ NATIONAL_DEX_RAICHU,
+ NATIONAL_DEX_PONYTA,
+ NATIONAL_DEX_ELECTABUZZ,
+ NATIONAL_DEX_VENONAT,
+ NATIONAL_DEX_SPOINK,
+ NATIONAL_DEX_DUSCLOPS,
+ NATIONAL_DEX_MEDICHAM,
+ NATIONAL_DEX_DUSTOX,
+ NATIONAL_DEX_PERSIAN,
+ NATIONAL_DEX_BUTTERFREE,
+ NATIONAL_DEX_PRIMEAPE,
+ NATIONAL_DEX_DROWZEE,
+ NATIONAL_DEX_FURRET,
+ NATIONAL_DEX_PORYGON2,
+ NATIONAL_DEX_LOMBRE,
+ NATIONAL_DEX_LINOONE,
+ NATIONAL_DEX_DELCATTY,
+ NATIONAL_DEX_CRAWDAUNT,
+ NATIONAL_DEX_DUGTRIO,
+ NATIONAL_DEX_ARIADOS,
+ NATIONAL_DEX_PHANPY,
+ NATIONAL_DEX_POLITOED,
+ NATIONAL_DEX_STARYU,
+ NATIONAL_DEX_CHANSEY,
+ NATIONAL_DEX_OMASTAR,
+ NATIONAL_DEX_TANGELA,
+ NATIONAL_DEX_SLUGMA,
+ NATIONAL_DEX_HOUNDOOM,
+ NATIONAL_DEX_LEDIAN,
+ NATIONAL_DEX_SLOWPOKE,
+ NATIONAL_DEX_PORYGON,
+ NATIONAL_DEX_MIGHTYENA,
+ NATIONAL_DEX_YANMA,
+ NATIONAL_DEX_FEAROW,
+ NATIONAL_DEX_SUDOWOODO,
+ NATIONAL_DEX_SEAKING,
+ NATIONAL_DEX_BRELOOM,
+ NATIONAL_DEX_DODUO,
+ NATIONAL_DEX_PIDGEOT,
+ NATIONAL_DEX_SPHEAL,
+ NATIONAL_DEX_CLEFABLE,
+ NATIONAL_DEX_LATIAS,
+ NATIONAL_DEX_MANECTRIC,
+ NATIONAL_DEX_ZANGOOSE,
+ NATIONAL_DEX_KABUTOPS,
+ NATIONAL_DEX_GENGAR,
+ NATIONAL_DEX_LOUDRED,
+ NATIONAL_DEX_JYNX,
+ NATIONAL_DEX_NOCTOWL,
+ NATIONAL_DEX_GIRAFARIG,
+ NATIONAL_DEX_BAGON,
+ NATIONAL_DEX_MAGMAR,
+ NATIONAL_DEX_MAROWAK,
+ NATIONAL_DEX_TENTACOOL,
+ NATIONAL_DEX_VIGOROTH,
+ NATIONAL_DEX_BLISSEY,
+ NATIONAL_DEX_ABSOL,
+ NATIONAL_DEX_ALAKAZAM,
+ NATIONAL_DEX_HITMONTOP,
+ NATIONAL_DEX_GARDEVOIR,
+ NATIONAL_DEX_GRANBULL,
+ NATIONAL_DEX_HITMONLEE,
+ NATIONAL_DEX_HITMONCHAN,
+ NATIONAL_DEX_SKARMORY,
+ NATIONAL_DEX_CACNEA,
+ NATIONAL_DEX_BLAZIKEN,
+ NATIONAL_DEX_SCEPTILE,
+ NATIONAL_DEX_SEVIPER,
+ NATIONAL_DEX_CLAMPERL,
+ NATIONAL_DEX_ZAPDOS,
+ NATIONAL_DEX_HERACROSS,
+ NATIONAL_DEX_POLIWRATH,
+ NATIONAL_DEX_MR_MIME,
+ NATIONAL_DEX_PINSIR,
+ NATIONAL_DEX_LUDICOLO,
+ NATIONAL_DEX_TENTACRUEL,
+ NATIONAL_DEX_GOLBAT,
+ NATIONAL_DEX_MAGCARGO,
+ NATIONAL_DEX_ARTICUNO,
+ NATIONAL_DEX_PILOSWINE,
+ NATIONAL_DEX_SCYTHER,
+ NATIONAL_DEX_KADABRA,
+ NATIONAL_DEX_SMEARGLE,
+ NATIONAL_DEX_AERODACTYL,
+ NATIONAL_DEX_SHIFTRY,
+ NATIONAL_DEX_KINGLER,
+ NATIONAL_DEX_NIDOQUEEN,
+ NATIONAL_DEX_MAGNETON,
+ NATIONAL_DEX_ARON,
+ NATIONAL_DEX_LATIOS,
+ NATIONAL_DEX_MOLTRES,
+ NATIONAL_DEX_CRADILY,
+ NATIONAL_DEX_DEOXYS,
+ NATIONAL_DEX_AMPHAROS,
+ NATIONAL_DEX_NIDOKING,
+ NATIONAL_DEX_GLIGAR,
+ NATIONAL_DEX_ARBOK,
+ NATIONAL_DEX_LICKITUNG,
+ NATIONAL_DEX_ELECTRODE,
+ NATIONAL_DEX_ARMALDO,
+ NATIONAL_DEX_MACHOKE,
+ NATIONAL_DEX_STANTLER,
+ NATIONAL_DEX_GRUMPIG,
+ NATIONAL_DEX_LARVITAR,
+ NATIONAL_DEX_CROBAT,
+ NATIONAL_DEX_QUAGSIRE,
+ NATIONAL_DEX_MILTANK,
+ NATIONAL_DEX_HYPNO,
+ NATIONAL_DEX_GOLDUCK,
+ NATIONAL_DEX_CACTURNE,
+ NATIONAL_DEX_SLOWBRO,
+ NATIONAL_DEX_TYPHLOSION,
+ NATIONAL_DEX_SLOWKING,
+ NATIONAL_DEX_KANGASKHAN,
+ NATIONAL_DEX_STARMIE,
+ NATIONAL_DEX_SWALOT,
+ NATIONAL_DEX_TORKOAL,
+ NATIONAL_DEX_SWAMPERT,
+ NATIONAL_DEX_FLYGON,
+ NATIONAL_DEX_EXPLOUD,
+ NATIONAL_DEX_DODRIO,
+ NATIONAL_DEX_BLASTOISE,
+ NATIONAL_DEX_MAKUHITA,
+ NATIONAL_DEX_SEALEO,
+ NATIONAL_DEX_TAUROS,
+ NATIONAL_DEX_SHARPEDO,
+ NATIONAL_DEX_FERALIGATR,
+ NATIONAL_DEX_SEEL,
+ NATIONAL_DEX_CHARIZARD,
+ NATIONAL_DEX_RAPIDASH,
+ NATIONAL_DEX_BELDUM,
+ NATIONAL_DEX_NOSEPASS,
+ NATIONAL_DEX_VENUSAUR,
+ NATIONAL_DEX_TROPIUS,
+ NATIONAL_DEX_MEGANIUM,
+ NATIONAL_DEX_SALAMENCE,
+ NATIONAL_DEX_GRAVELER,
+ NATIONAL_DEX_CLAYDOL,
+ NATIONAL_DEX_SHELGON,
+ NATIONAL_DEX_RHYHORN,
+ NATIONAL_DEX_SCIZOR,
+ NATIONAL_DEX_DEWGONG,
+ NATIONAL_DEX_RHYDON,
+ NATIONAL_DEX_DONPHAN,
+ NATIONAL_DEX_EXEGGUTOR,
+ NATIONAL_DEX_LAIRON,
+ NATIONAL_DEX_MEWTWO,
+ NATIONAL_DEX_URSARING,
+ NATIONAL_DEX_FORRETRESS,
+ NATIONAL_DEX_MACHAMP,
+ NATIONAL_DEX_WAILMER,
+ NATIONAL_DEX_SLAKING,
+ NATIONAL_DEX_CLOYSTER,
+ NATIONAL_DEX_WALREIN,
+ NATIONAL_DEX_PUPITAR,
+ NATIONAL_DEX_KINGDRA,
+ NATIONAL_DEX_SOLROCK,
+ NATIONAL_DEX_ARCANINE,
+ NATIONAL_DEX_MILOTIC,
+ NATIONAL_DEX_LUNATONE,
+ NATIONAL_DEX_REGICE,
+ NATIONAL_DEX_RAIKOU,
+ NATIONAL_DEX_SUICUNE,
+ NATIONAL_DEX_ENTEI,
+ NATIONAL_DEX_HO_OH,
+ NATIONAL_DEX_TYRANITAR,
+ NATIONAL_DEX_METANG,
+ NATIONAL_DEX_REGISTEEL,
+ NATIONAL_DEX_RAYQUAZA,
+ NATIONAL_DEX_ONIX,
+ NATIONAL_DEX_DRAGONITE,
+ NATIONAL_DEX_LUGIA,
+ NATIONAL_DEX_LAPRAS,
+ NATIONAL_DEX_CAMERUPT,
+ NATIONAL_DEX_MANTINE,
+ NATIONAL_DEX_REGIROCK,
+ NATIONAL_DEX_GYARADOS,
+ NATIONAL_DEX_HARIYAMA,
+ NATIONAL_DEX_GLALIE,
+ NATIONAL_DEX_GOLEM,
+ NATIONAL_DEX_KYOGRE,
+ NATIONAL_DEX_AGGRON,
+ NATIONAL_DEX_WAILORD,
+ NATIONAL_DEX_STEELIX,
+ NATIONAL_DEX_SNORLAX,
+ NATIONAL_DEX_METAGROSS,
+ NATIONAL_DEX_GROUDON,
+};
+
+const u16 gPokedexOrder_Height[] =
+{
+ NATIONAL_DEX_DIGLETT,
+ NATIONAL_DEX_AZURILL,
+ NATIONAL_DEX_NATU,
+ NATIONAL_DEX_WEEDLE,
+ NATIONAL_DEX_PICHU,
+ NATIONAL_DEX_CLEFFA,
+ NATIONAL_DEX_TOGEPI,
+ NATIONAL_DEX_CASTFORM,
+ NATIONAL_DEX_IGGLYBUFF,
+ NATIONAL_DEX_CATERPIE,
+ NATIONAL_DEX_TAILLOW,
+ NATIONAL_DEX_DITTO,
+ NATIONAL_DEX_EEVEE,
+ NATIONAL_DEX_ROSELIA,
+ NATIONAL_DEX_SPEAROW,
+ NATIONAL_DEX_PIDGEY,
+ NATIONAL_DEX_SUNKERN,
+ NATIONAL_DEX_SHELLDER,
+ NATIONAL_DEX_RATTATA,
+ NATIONAL_DEX_MAGNEMITE,
+ NATIONAL_DEX_PARAS,
+ NATIONAL_DEX_WURMPLE,
+ NATIONAL_DEX_JIRACHI,
+ NATIONAL_DEX_CUBONE,
+ NATIONAL_DEX_MUDKIP,
+ NATIONAL_DEX_WOOPER,
+ NATIONAL_DEX_HORSEA,
+ NATIONAL_DEX_MEOWTH,
+ NATIONAL_DEX_NIDORAN_F,
+ NATIONAL_DEX_SWINUB,
+ NATIONAL_DEX_MEW,
+ NATIONAL_DEX_SWABLU,
+ NATIONAL_DEX_ARON,
+ NATIONAL_DEX_PLUSLE,
+ NATIONAL_DEX_MINUN,
+ NATIONAL_DEX_EXEGGCUTE,
+ NATIONAL_DEX_PIKACHU,
+ NATIONAL_DEX_BELLOSSOM,
+ NATIONAL_DEX_GULPIN,
+ NATIONAL_DEX_ZIGZAGOON,
+ NATIONAL_DEX_SHROOMISH,
+ NATIONAL_DEX_OMANYTE,
+ NATIONAL_DEX_CACNEA,
+ NATIONAL_DEX_KRABBY,
+ NATIONAL_DEX_RALTS,
+ NATIONAL_DEX_HOPPIP,
+ NATIONAL_DEX_TORCHIC,
+ NATIONAL_DEX_CLAMPERL,
+ NATIONAL_DEX_GEODUDE,
+ NATIONAL_DEX_MARILL,
+ NATIONAL_DEX_BARBOACH,
+ NATIONAL_DEX_SMOOCHUM,
+ NATIONAL_DEX_VOLTORB,
+ NATIONAL_DEX_NINCADA,
+ NATIONAL_DEX_SABLEYE,
+ NATIONAL_DEX_MURKROW,
+ NATIONAL_DEX_QWILFISH,
+ NATIONAL_DEX_SQUIRTLE,
+ NATIONAL_DEX_TREECKO,
+ NATIONAL_DEX_BALTOY,
+ NATIONAL_DEX_ODDISH,
+ NATIONAL_DEX_LOTAD,
+ NATIONAL_DEX_JIGGLYPUFF,
+ NATIONAL_DEX_SURSKIT,
+ NATIONAL_DEX_CYNDAQUIL,
+ NATIONAL_DEX_KABUTO,
+ NATIONAL_DEX_LINOONE,
+ NATIONAL_DEX_TORKOAL,
+ NATIONAL_DEX_NIDORAN_M,
+ NATIONAL_DEX_SPINARAK,
+ NATIONAL_DEX_MANKEY,
+ NATIONAL_DEX_SEEDOT,
+ NATIONAL_DEX_POOCHYENA,
+ NATIONAL_DEX_PHANPY,
+ NATIONAL_DEX_UNOWN,
+ NATIONAL_DEX_CHINCHOU,
+ NATIONAL_DEX_PORYGON2,
+ NATIONAL_DEX_POLIWAG,
+ NATIONAL_DEX_BAGON,
+ NATIONAL_DEX_FEEBAS,
+ NATIONAL_DEX_SHUPPET,
+ NATIONAL_DEX_TOTODILE,
+ NATIONAL_DEX_CELEBI,
+ NATIONAL_DEX_WYNAUT,
+ NATIONAL_DEX_SANDSHREW,
+ NATIONAL_DEX_CHIMECHO,
+ NATIONAL_DEX_LUVDISC,
+ NATIONAL_DEX_HOUNDOUR,
+ NATIONAL_DEX_SILCOON,
+ NATIONAL_DEX_ELECTRIKE,
+ NATIONAL_DEX_CHARMANDER,
+ NATIONAL_DEX_MEDITITE,
+ NATIONAL_DEX_WINGULL,
+ NATIONAL_DEX_REMORAID,
+ NATIONAL_DEX_CORPHISH,
+ NATIONAL_DEX_CORSOLA,
+ NATIONAL_DEX_ILLUMISE,
+ NATIONAL_DEX_SNUBBULL,
+ NATIONAL_DEX_VULPIX,
+ NATIONAL_DEX_LARVITAR,
+ NATIONAL_DEX_BELDUM,
+ NATIONAL_DEX_WHISMUR,
+ NATIONAL_DEX_PINECO,
+ NATIONAL_DEX_ELEKID,
+ NATIONAL_DEX_CLEFAIRY,
+ NATIONAL_DEX_SHUCKLE,
+ NATIONAL_DEX_TEDDIURSA,
+ NATIONAL_DEX_KAKUNA,
+ NATIONAL_DEX_SKITTY,
+ NATIONAL_DEX_TOGETIC,
+ NATIONAL_DEX_GOLDEEN,
+ NATIONAL_DEX_MAWILE,
+ NATIONAL_DEX_MAREEP,
+ NATIONAL_DEX_SKIPLOOM,
+ NATIONAL_DEX_KOFFING,
+ NATIONAL_DEX_DUGTRIO,
+ NATIONAL_DEX_CASCOON,
+ NATIONAL_DEX_NUMEL,
+ NATIONAL_DEX_ANORITH,
+ NATIONAL_DEX_VOLBEAT,
+ NATIONAL_DEX_HOOTHOOT,
+ NATIONAL_DEX_TRAPINCH,
+ NATIONAL_DEX_SPOINK,
+ NATIONAL_DEX_METAPOD,
+ NATIONAL_DEX_BELLSPROUT,
+ NATIONAL_DEX_SNORUNT,
+ NATIONAL_DEX_RATICATE,
+ NATIONAL_DEX_MARSHTOMP,
+ NATIONAL_DEX_SWELLOW,
+ NATIONAL_DEX_MAGBY,
+ NATIONAL_DEX_GROWLITHE,
+ NATIONAL_DEX_MISDREAVUS,
+ NATIONAL_DEX_BULBASAUR,
+ NATIONAL_DEX_TYROGUE,
+ NATIONAL_DEX_SLUGMA,
+ NATIONAL_DEX_SLAKOTH,
+ NATIONAL_DEX_KIRLIA,
+ NATIONAL_DEX_AIPOM,
+ NATIONAL_DEX_JOLTEON,
+ NATIONAL_DEX_NIDORINA,
+ NATIONAL_DEX_AZUMARILL,
+ NATIONAL_DEX_SHEDINJA,
+ NATIONAL_DEX_MACHOP,
+ NATIONAL_DEX_NINJASK,
+ NATIONAL_DEX_MASQUERAIN,
+ NATIONAL_DEX_DUSKULL,
+ NATIONAL_DEX_SUNFLORA,
+ NATIONAL_DEX_JUMPLUFF,
+ NATIONAL_DEX_STARYU,
+ NATIONAL_DEX_FLAAFFY,
+ NATIONAL_DEX_SPHEAL,
+ NATIONAL_DEX_PSYDUCK,
+ NATIONAL_DEX_MAGCARGO,
+ NATIONAL_DEX_FARFETCHD,
+ NATIONAL_DEX_ZUBAT,
+ NATIONAL_DEX_PORYGON,
+ NATIONAL_DEX_SENTRET,
+ NATIONAL_DEX_CARVANHA,
+ NATIONAL_DEX_GLOOM,
+ NATIONAL_DEX_RAICHU,
+ NATIONAL_DEX_MAGIKARP,
+ NATIONAL_DEX_SNEASEL,
+ NATIONAL_DEX_LAIRON,
+ NATIONAL_DEX_COMBUSKEN,
+ NATIONAL_DEX_OCTILLERY,
+ NATIONAL_DEX_NIDORINO,
+ NATIONAL_DEX_FLAREON,
+ NATIONAL_DEX_DELIBIRD,
+ NATIONAL_DEX_TENTACOOL,
+ NATIONAL_DEX_ABRA,
+ NATIONAL_DEX_GROVYLE,
+ NATIONAL_DEX_WHISCASH,
+ NATIONAL_DEX_QUILAVA,
+ NATIONAL_DEX_ESPEON,
+ NATIONAL_DEX_GRIMER,
+ NATIONAL_DEX_CHIKORITA,
+ NATIONAL_DEX_GRUMPIG,
+ NATIONAL_DEX_NOSEPASS,
+ NATIONAL_DEX_PERSIAN,
+ NATIONAL_DEX_MIGHTYENA,
+ NATIONAL_DEX_VENONAT,
+ NATIONAL_DEX_MAGNETON,
+ NATIONAL_DEX_PONYTA,
+ NATIONAL_DEX_MAKUHITA,
+ NATIONAL_DEX_LUNATONE,
+ NATIONAL_DEX_SANDSLASH,
+ NATIONAL_DEX_DROWZEE,
+ NATIONAL_DEX_TANGELA,
+ NATIONAL_DEX_PRIMEAPE,
+ NATIONAL_DEX_LEDYBA,
+ NATIONAL_DEX_WIGGLYTUFF,
+ NATIONAL_DEX_PARASECT,
+ NATIONAL_DEX_OMASTAR,
+ NATIONAL_DEX_LOUDRED,
+ NATIONAL_DEX_WARTORTLE,
+ NATIONAL_DEX_GRAVELER,
+ NATIONAL_DEX_UMBREON,
+ NATIONAL_DEX_LILEEP,
+ NATIONAL_DEX_POLIWHIRL,
+ NATIONAL_DEX_VAPOREON,
+ NATIONAL_DEX_BEEDRILL,
+ NATIONAL_DEX_MAROWAK,
+ NATIONAL_DEX_WEEPINBELL,
+ NATIONAL_DEX_RELICANTH,
+ NATIONAL_DEX_RHYHORN,
+ NATIONAL_DEX_IVYSAUR,
+ NATIONAL_DEX_KECLEON,
+ NATIONAL_DEX_NUZLEAF,
+ NATIONAL_DEX_BEAUTIFLY,
+ NATIONAL_DEX_PIDGEOTTO,
+ NATIONAL_DEX_ARIADOS,
+ NATIONAL_DEX_SEEL,
+ NATIONAL_DEX_POLITOED,
+ NATIONAL_DEX_CROCONAW,
+ NATIONAL_DEX_CHANSEY,
+ NATIONAL_DEX_BANETTE,
+ NATIONAL_DEX_DONPHAN,
+ NATIONAL_DEX_STARMIE,
+ NATIONAL_DEX_CHARMELEON,
+ NATIONAL_DEX_PILOSWINE,
+ NATIONAL_DEX_BUTTERFREE,
+ NATIONAL_DEX_VIBRAVA,
+ NATIONAL_DEX_ELECTABUZZ,
+ NATIONAL_DEX_CRAWDAUNT,
+ NATIONAL_DEX_DELCATTY,
+ NATIONAL_DEX_ALTARIA,
+ NATIONAL_DEX_SHELGON,
+ NATIONAL_DEX_NINETALES,
+ NATIONAL_DEX_GLIGAR,
+ NATIONAL_DEX_SEALEO,
+ NATIONAL_DEX_SPINDA,
+ NATIONAL_DEX_PUPITAR,
+ NATIONAL_DEX_SLOWPOKE,
+ NATIONAL_DEX_SOLROCK,
+ NATIONAL_DEX_MILTANK,
+ NATIONAL_DEX_FEAROW,
+ NATIONAL_DEX_VILEPLUME,
+ NATIONAL_DEX_MUK,
+ NATIONAL_DEX_FORRETRESS,
+ NATIONAL_DEX_SUDOWOODO,
+ NATIONAL_DEX_ABSOL,
+ NATIONAL_DEX_YANMA,
+ NATIONAL_DEX_DUSTOX,
+ NATIONAL_DEX_LICKITUNG,
+ NATIONAL_DEX_SMEARGLE,
+ NATIONAL_DEX_LANTURN,
+ NATIONAL_DEX_ELECTRODE,
+ NATIONAL_DEX_LOMBRE,
+ NATIONAL_DEX_BRELOOM,
+ NATIONAL_DEX_BAYLEEF,
+ NATIONAL_DEX_SEADRA,
+ NATIONAL_DEX_WEEZING,
+ NATIONAL_DEX_PELIPPER,
+ NATIONAL_DEX_METANG,
+ NATIONAL_DEX_NIDOQUEEN,
+ NATIONAL_DEX_CACTURNE,
+ NATIONAL_DEX_SHIFTRY,
+ NATIONAL_DEX_MEDICHAM,
+ NATIONAL_DEX_ZANGOOSE,
+ NATIONAL_DEX_KABUTOPS,
+ NATIONAL_DEX_KINGLER,
+ NATIONAL_DEX_KADABRA,
+ NATIONAL_DEX_SEAKING,
+ NATIONAL_DEX_CLEFABLE,
+ NATIONAL_DEX_MAGMAR,
+ NATIONAL_DEX_WOBBUFFET,
+ NATIONAL_DEX_GASTLY,
+ NATIONAL_DEX_MR_MIME,
+ NATIONAL_DEX_POLIWRATH,
+ NATIONAL_DEX_TAUROS,
+ NATIONAL_DEX_LATIAS,
+ NATIONAL_DEX_AMPHAROS,
+ NATIONAL_DEX_VIGOROTH,
+ NATIONAL_DEX_LEDIAN,
+ NATIONAL_DEX_GOLEM,
+ NATIONAL_DEX_WALREIN,
+ NATIONAL_DEX_DODUO,
+ NATIONAL_DEX_HOUNDOOM,
+ NATIONAL_DEX_NIDOKING,
+ NATIONAL_DEX_JYNX,
+ NATIONAL_DEX_HITMONCHAN,
+ NATIONAL_DEX_STANTLER,
+ NATIONAL_DEX_GRANBULL,
+ NATIONAL_DEX_HITMONTOP,
+ NATIONAL_DEX_QUAGSIRE,
+ NATIONAL_DEX_CLAYDOL,
+ NATIONAL_DEX_SWAMPERT,
+ NATIONAL_DEX_BLISSEY,
+ NATIONAL_DEX_LUDICOLO,
+ NATIONAL_DEX_EXPLOUD,
+ NATIONAL_DEX_DUNSPARCE,
+ NATIONAL_DEX_PINSIR,
+ NATIONAL_DEX_CLOYSTER,
+ NATIONAL_DEX_MACHOKE,
+ NATIONAL_DEX_GIRAFARIG,
+ NATIONAL_DEX_PIDGEOT,
+ NATIONAL_DEX_XATU,
+ NATIONAL_DEX_CRADILY,
+ NATIONAL_DEX_HITMONLEE,
+ NATIONAL_DEX_VENOMOTH,
+ NATIONAL_DEX_GENGAR,
+ NATIONAL_DEX_HERACROSS,
+ NATIONAL_DEX_GLALIE,
+ NATIONAL_DEX_SCYTHER,
+ NATIONAL_DEX_SALAMENCE,
+ NATIONAL_DEX_MANECTRIC,
+ NATIONAL_DEX_ARMALDO,
+ NATIONAL_DEX_ALAKAZAM,
+ NATIONAL_DEX_HYPNO,
+ NATIONAL_DEX_NOCTOWL,
+ NATIONAL_DEX_TENTACRUEL,
+ NATIONAL_DEX_DUSCLOPS,
+ NATIONAL_DEX_ZAPDOS,
+ NATIONAL_DEX_GOLBAT,
+ NATIONAL_DEX_METAGROSS,
+ NATIONAL_DEX_GARDEVOIR,
+ NATIONAL_DEX_BLASTOISE,
+ NATIONAL_DEX_SLOWBRO,
+ NATIONAL_DEX_HAUNTER,
+ NATIONAL_DEX_MACHAMP,
+ NATIONAL_DEX_REGIROCK,
+ NATIONAL_DEX_SWALOT,
+ NATIONAL_DEX_SCEPTILE,
+ NATIONAL_DEX_SKARMORY,
+ NATIONAL_DEX_GOLDUCK,
+ NATIONAL_DEX_DEOXYS,
+ NATIONAL_DEX_VICTREEBEL,
+ NATIONAL_DEX_RAPIDASH,
+ NATIONAL_DEX_CHARIZARD,
+ NATIONAL_DEX_HUNTAIL,
+ NATIONAL_DEX_DEWGONG,
+ NATIONAL_DEX_ARTICUNO,
+ NATIONAL_DEX_TYPHLOSION,
+ NATIONAL_DEX_AERODACTYL,
+ NATIONAL_DEX_GOREBYSS,
+ NATIONAL_DEX_URSARING,
+ NATIONAL_DEX_MEGANIUM,
+ NATIONAL_DEX_REGICE,
+ NATIONAL_DEX_SCIZOR,
+ NATIONAL_DEX_KINGDRA,
+ NATIONAL_DEX_DRATINI,
+ NATIONAL_DEX_DODRIO,
+ NATIONAL_DEX_SHARPEDO,
+ NATIONAL_DEX_CROBAT,
+ NATIONAL_DEX_FURRET,
+ NATIONAL_DEX_ARCANINE,
+ NATIONAL_DEX_RAIKOU,
+ NATIONAL_DEX_BLAZIKEN,
+ NATIONAL_DEX_CAMERUPT,
+ NATIONAL_DEX_RHYDON,
+ NATIONAL_DEX_REGISTEEL,
+ NATIONAL_DEX_EKANS,
+ NATIONAL_DEX_FLYGON,
+ NATIONAL_DEX_TROPIUS,
+ NATIONAL_DEX_LATIOS,
+ NATIONAL_DEX_SUICUNE,
+ NATIONAL_DEX_MOLTRES,
+ NATIONAL_DEX_VENUSAUR,
+ NATIONAL_DEX_EXEGGUTOR,
+ NATIONAL_DEX_SLOWKING,
+ NATIONAL_DEX_TYRANITAR,
+ NATIONAL_DEX_SLAKING,
+ NATIONAL_DEX_WAILMER,
+ NATIONAL_DEX_MEWTWO,
+ NATIONAL_DEX_AGGRON,
+ NATIONAL_DEX_SNORLAX,
+ NATIONAL_DEX_MANTINE,
+ NATIONAL_DEX_ENTEI,
+ NATIONAL_DEX_DRAGONITE,
+ NATIONAL_DEX_KANGASKHAN,
+ NATIONAL_DEX_HARIYAMA,
+ NATIONAL_DEX_FERALIGATR,
+ NATIONAL_DEX_LAPRAS,
+ NATIONAL_DEX_SEVIPER,
+ NATIONAL_DEX_ARBOK,
+ NATIONAL_DEX_GROUDON,
+ NATIONAL_DEX_HO_OH,
+ NATIONAL_DEX_DRAGONAIR,
+ NATIONAL_DEX_KYOGRE,
+ NATIONAL_DEX_LUGIA,
+ NATIONAL_DEX_MILOTIC,
+ NATIONAL_DEX_GYARADOS,
+ NATIONAL_DEX_RAYQUAZA,
+ NATIONAL_DEX_ONIX,
+ NATIONAL_DEX_STEELIX,
+ NATIONAL_DEX_WAILORD,
+};
diff --git a/src/data/pokemon/pokedex_text.h b/src/data/pokemon/pokedex_text.h
new file mode 100644
index 000000000..565c1acaf
--- /dev/null
+++ b/src/data/pokemon/pokedex_text.h
@@ -0,0 +1,2321 @@
+const u8 gDummyPokedexText[] = _(
+ "This is a newly discovered POKéMON.\n"
+ "It is currently under investigation.\n"
+ "No detailed information is available\n"
+ "at this time.");
+
+const u8 gBulbasaurPokedexText[] = _(
+ "BULBASAUR can be seen napping in bright\n"
+ "sunlight. There is a seed on its back.\n"
+ "By soaking up the sun’s rays, the seed\n"
+ "grows progressively larger.");
+
+const u8 gIvysaurPokedexText[] = _(
+ "To support its bulb, IVYSAUR’s legs\n"
+ "grow sturdy. If it spends more time lying in\n"
+ "the sunlight, the bud will soon bloom into\n"
+ "a large flower.");
+
+const u8 gVenusaurPokedexText[] = _(
+ "VENUSAUR’s flower is said to take on vivid\n"
+ "colors if it gets plenty of nutrition and\n"
+ "sunlight. The flower’s aroma soothes the\n"
+ "emotions of people.");
+
+const u8 gCharmanderPokedexText[] = _(
+ "The flame that burns at the tip of its\n"
+ "tail is an indication of its emotions.\n"
+ "The flame wavers when CHARMANDER is\n"
+ "happy, and blazes when it is enraged.");
+
+const u8 gCharmeleonPokedexText[] = _(
+ "Without pity, its sharp claws destroy foes.\n"
+ "If it encounters a strong enemy, it\n"
+ "becomes agitated, and the flame on its\n"
+ "tail flares with a bluish white color.");
+
+const u8 gCharizardPokedexText[] = _(
+ "A CHARIZARD flies about in search of\n"
+ "strong opponents. It breathes intense\n"
+ "flames that can melt any material. However,\n"
+ "it will never torch a weaker foe.");
+
+const u8 gSquirtlePokedexText[] = _(
+ "Its shell is not just for protection.\n"
+ "Its rounded shape and the grooves on its\n"
+ "surface minimize resistance in water,\n"
+ "enabling SQUIRTLE to swim at high speeds.");
+
+const u8 gWartortlePokedexText[] = _(
+ "Its large tail is covered with rich, thick\n"
+ "fur that deepens in color with age.\n"
+ "The scratches on its shell are evidence\n"
+ "of this POKéMON’s toughness in battle.");
+
+const u8 gBlastoisePokedexText[] = _(
+ "The waterspouts that protrude from its\n"
+ "shell are highly accurate. Their bullets of\n"
+ "water can precisely nail tin cans from\n"
+ "a distance of over 160 feet.");
+
+const u8 gCaterpiePokedexText[] = _(
+ "Its voracious appetite compels it to\n"
+ "devour leaves bigger than itself without\n"
+ "hesitation. It releases a terribly strong\n"
+ "odor from its antennae.");
+
+const u8 gMetapodPokedexText[] = _(
+ "Its shell is as hard as an iron slab.\n"
+ "A METAPOD does not move very much\n"
+ "because it is preparing its soft innards\n"
+ "for evolution inside the shell.");
+
+const u8 gButterfreePokedexText[] = _(
+ "It has a superior ability to search for\n"
+ "delicious honey from flowers. It can seek,\n"
+ "extract, and carry honey from flowers\n"
+ "blooming over six miles away.");
+
+const u8 gWeedlePokedexText[] = _(
+ "A WEEDLE has an extremely acute sense\n"
+ "of smell. It distinguishes its favorite\n"
+ "kinds of leaves from those it dislikes by\n"
+ "sniffing with its big red proboscis (nose).");
+
+const u8 gKakunaPokedexText[] = _(
+ "It remains virtually immobile while it\n"
+ "clings to a tree. However, on the inside,\n"
+ "it busily prepares for evolution. This is\n"
+ "evident from how hot its shell becomes.");
+
+const u8 gBeedrillPokedexText[] = _(
+ "A BEEDRILL is extremely territorial.\n"
+ "For safety reasons, no one should \n"
+ "ever approach its nest. If angered,\n"
+ "they will attack in a swarm.");
+
+const u8 gPidgeyPokedexText[] = _(
+ "It has an extremely sharp sense of\n"
+ "direction. It can unerringly return home to\n"
+ "its nest, however far it may be removed\n"
+ "from its familiar surroundings.");
+
+const u8 gPidgeottoPokedexText[] = _(
+ "This POKéMON flies around, patrolling its\n"
+ "large territory. If its living space is\n"
+ "violated, it shows no mercy in thoroughly\n"
+ "punishing the foe with its sharp claws.");
+
+const u8 gPidgeotPokedexText[] = _(
+ "This POKéMON has gorgeous, glossy\n"
+ "feathers. Many TRAINERS are so captivated\n"
+ "by the beautiful feathers on its head that\n"
+ "they choose PIDGEOT as their POKéMON.");
+
+const u8 gRattataPokedexText[] = _(
+ "A RATTATA is cautious in the extreme.\n"
+ "Even while it is asleep, it constantly\n"
+ "moves its ears and listens for danger.\n"
+ "It will make its nest anywhere.");
+
+const u8 gRaticatePokedexText[] = _(
+ "A RATICATE’s sturdy fangs grow steadily.\n"
+ "To keep them ground down, it gnaws on\n"
+ "rocks and logs. It may even chew on the\n"
+ "walls of houses.");
+
+const u8 gSpearowPokedexText[] = _(
+ "Its loud cry can be heard over half a mile\n"
+ "away. If its high, keening cry is heard\n"
+ "echoing all around, it is a sign that they\n"
+ "are warning each other of danger.");
+
+const u8 gFearowPokedexText[] = _(
+ "Its long neck and elongated beak are\n"
+ "ideal for catching prey in soil or water.\n"
+ "It deftly moves this extended and skinny\n"
+ "beak to pluck prey.");
+
+const u8 gEkansPokedexText[] = _(
+ "An EKANS curls itself up in a spiral while\n"
+ "it rests. This position allows it to quickly\n"
+ "respond to an enemy from any direction\n"
+ "with a threat from its upraised head.");
+
+const u8 gArbokPokedexText[] = _(
+ "This POKéMON has a terrifically strong\n"
+ "constricting power. It can even flatten\n"
+ "steel oil drums. Once it wraps its body\n"
+ "around its foe, escaping is impossible.");
+
+const u8 gPikachuPokedexText[] = _(
+ "It stores electricity in the electric sacs\n"
+ "on its cheeks. When it releases pent-up\n"
+ "energy in a burst, the electric power is\n"
+ "equal to a lightning bolt.");
+
+const u8 gRaichuPokedexText[] = _(
+ "If it stores too much electricity, its\n"
+ "behavior turns aggressive. To avoid this,\n"
+ "it occasionally discharges excess energy\n"
+ "and calms itself down.");
+
+const u8 gSandshrewPokedexText[] = _(
+ "When it curls up in a ball, it can make any\n"
+ "attack bounce off harmlessly. Its hide has\n"
+ "turned tough and solid as a result of\n"
+ "living in the desert.");
+
+const u8 gSandslashPokedexText[] = _(
+ "It curls up in a ball to protect itself from\n"
+ "enemy attacks. It also curls up to prevent\n"
+ "heatstroke during the daytime when\n"
+ "temperatures rise sharply.");
+
+const u8 gNidoranFPokedexText[] = _(
+ "Its highly toxic barbs are thought to have\n"
+ "developed as protection for this small-\n"
+ "bodied POKéMON. When enraged, it releases\n"
+ "a horrible toxin from its horn.");
+
+const u8 gNidorinaPokedexText[] = _(
+ "When it is with its friends or\n"
+ "family, its barbs are tucked away to\n"
+ "prevent injury. It appears to become\n"
+ "nervous if separated from the others.");
+
+const u8 gNidoqueenPokedexText[] = _(
+ "It is adept at sending foes flying with\n"
+ "harsh tackles using its tough, scaly body.\n"
+ "This POKéMON is at its strongest when\n"
+ "it is defending its young.");
+
+const u8 gNidoranMPokedexText[] = _(
+ "The male NIDORAN has developed muscles\n"
+ "that freely move its ears in any direction.\n"
+ "Even the slightest sound does not escape\n"
+ "this POKéMON’s notice.");
+
+const u8 gNidorinoPokedexText[] = _(
+ "Its horn is harder than a diamond.\n"
+ "If it senses a hostile presence, all the\n"
+ "barbs on its back bristle up at once, and it\n"
+ "challenges the foe with all its might.");
+
+const u8 gNidokingPokedexText[] = _(
+ "A NIDOKING’s thick tail packs enormously\n"
+ "destructive power capable of toppling\n"
+ "a metal transmission tower. Once it goes\n"
+ "on a rampage, there is no stopping it.");
+
+const u8 gClefairyPokedexText[] = _(
+ "On every night of a full moon, they come\n"
+ "out to play. When dawn arrives, the tired\n"
+ "CLEFAIRY go to sleep nestled up against\n"
+ "each other in deep and quiet mountains.");
+
+const u8 gClefablePokedexText[] = _(
+ "A CLEFABLE uses its wings to skip lightly \n"
+ "as if it were flying. Its bouncy step\n"
+ "lets it even walk on water. On quiet,\n"
+ "moonlit nights, it strolls on lakes.");
+
+const u8 gVulpixPokedexText[] = _(
+ "It can freely control fire, making fiery\n"
+ "orbs fly like will-o’-the-wisps. Just\n"
+ "before evolution, its six tails grow hot \n"
+ "as if on fire.");
+
+const u8 gNinetalesPokedexText[] = _(
+ "It has long been said that each of the\n"
+ "nine tails embody an enchanted power.\n"
+ "A long-lived NINETALES will have fur that\n"
+ "shines like gold.");
+
+const u8 gJigglypuffPokedexText[] = _(
+ "Nothing can avoid falling asleep hearing a\n"
+ "JIGGLYPUFF’s song. The sound waves of its\n"
+ "singing voice match the brain waves of\n"
+ "someone in a deep sleep.");
+
+const u8 gWigglytuffPokedexText[] = _(
+ "Its fur is the ultimate in luxuriousness.\n"
+ "Sleeping alongside a WIGGLYTUFF is simply\n"
+ "divine. Its body expands seemingly without\n"
+ "end when it inhales.");
+
+const u8 gZubatPokedexText[] = _(
+ "While living in pitch-black caverns, their\n"
+ "eyes gradually grew shut and deprived\n"
+ "them of vision. They use ultrasonic waves\n"
+ "to detect obstacles.");
+
+const u8 gGolbatPokedexText[] = _(
+ "Its fangs easily puncture even thick\n"
+ "animal hide. It loves to feast on the blood\n"
+ "of people and POKéMON. It flits about in\n"
+ "darkness and strikes from behind.");
+
+const u8 gOddishPokedexText[] = _(
+ "This POKéMON grows by absorbing moonlight.\n"
+ "During the daytime, it buries itself in the\n"
+ "ground, leaving only its leaves exposed to\n"
+ "avoid detection by its enemies.");
+
+const u8 gGloomPokedexText[] = _(
+ "A horribly noxious honey drools from its\n"
+ "mouth. One whiff of the honey can result\n"
+ "in memory loss. Some fans are said to\n"
+ "enjoy this overwhelming stink, however.");
+
+const u8 gVileplumePokedexText[] = _(
+ "In seasons when it produces more pollen,\n"
+ "the air around a VILEPLUME turns yellow\n"
+ "with the powder as it walks. The pollen is\n"
+ "highly toxic and causes paralysis.");
+
+const u8 gParasPokedexText[] = _(
+ "A PARAS has parasitic tochukaso\n"
+ "mushrooms growing on its back. They grow\n"
+ "by drawing nutrients from the host. They\n"
+ "are valued as a medicine for long life.");
+
+const u8 gParasectPokedexText[] = _(
+ "PARASECT are known to infest the roots of\n"
+ "large trees en masse and drain nutrients.\n"
+ "When an infested tree dies, they move\n"
+ "onto another tree all at once.");
+
+const u8 gVenonatPokedexText[] = _(
+ "Its coat of thin, stiff hair that covers\n"
+ "its entire body is said to have evolved\n"
+ "for protection. Its large eyes never fail\n"
+ "to spot even miniscule prey.");
+
+const u8 gVenomothPokedexText[] = _(
+ "VENOMOTH are nocturnal--they only are\n"
+ "active at night. Their favorite prey are\n"
+ "insects that gather around streetlights,\n"
+ "attracted by the light in the darkness.");
+
+const u8 gDiglettPokedexText[] = _(
+ "DIGLETT are raised in most farms.\n"
+ "The reason is simple--wherever they\n"
+ "burrow, the soil is left perfectly tilled\n"
+ "for growing delicious crops.");
+
+const u8 gDugtrioPokedexText[] = _(
+ "Because the triplets originally split from\n"
+ "one body, they think exactly alike.\n"
+ "They work cooperatively to burrow\n"
+ "endlessly through the ground.");
+
+const u8 gMeowthPokedexText[] = _(
+ "MEOWTH withdraw their sharp claws into\n"
+ "their paws to silently sneak about.\n"
+ "For some reason, this POKéMON loves\n"
+ "shiny coins that glitter with light.");
+
+const u8 gPersianPokedexText[] = _(
+ "A PERSIAN’s six bold whiskers sense air\n"
+ "movements to determine what is in its\n"
+ "vicinity. It becomes docile if grabbed\n"
+ "by the whiskers.");
+
+const u8 gPsyduckPokedexText[] = _(
+ "When its headache intensifies, it starts\n"
+ "using strange powers. However, it has no\n"
+ "recollection of its powers, so it always\n"
+ "looks befuddled and bewildered.");
+
+const u8 gGolduckPokedexText[] = _(
+ "A GOLDUCK is an adept swimmer.\n"
+ "It sometimes joins competitive swimmers\n"
+ "in training. It uses psychic powers when\n"
+ "its forehead shimmers with light.");
+
+const u8 gMankeyPokedexText[] = _(
+ "When it starts shaking and its nasal\n"
+ "breathing turns rough, it’s a sure sign\n"
+ "of anger. However, since this happens\n"
+ "instantly, there is no time to flee.");
+
+const u8 gPrimeapePokedexText[] = _(
+ "When it becomes furious, its blood\n"
+ "circulation becomes more robust, and\n"
+ "its muscles are made stronger. But it\n"
+ "also becomes much less intelligent.");
+
+const u8 gGrowlithePokedexText[] = _(
+ "Its superb sense of smell ensures that\n"
+ "this POKéMON won’t forget any scent,\n"
+ "no matter what. It uses its sense of smell\n"
+ "to detect the emotions of others.");
+
+const u8 gArcaninePokedexText[] = _(
+ "This fleet-footed POKéMON is said to run\n"
+ "over 6,200 miles in a single day and night.\n"
+ "The fire that blazes wildly within its body\n"
+ "is its source of power.");
+
+const u8 gPoliwagPokedexText[] = _(
+ "It is possible to see this POKéMON’s spiral\n"
+ "innards right through its thin skin.\n"
+ "However, the skin is also very flexible.\n"
+ "Even sharp fangs bounce right off it.");
+
+const u8 gPoliwhirlPokedexText[] = _(
+ "Its body surface is always wet and slick\n"
+ "with an oily fluid. Because of this greasy\n"
+ "covering, it can easily slip and slide out\n"
+ "of the clutches of any enemy in battle.");
+
+const u8 gPoliwrathPokedexText[] = _(
+ "Its highly developed muscles never grow\n"
+ "fatigued, however much it exercises.\n"
+ "This POKéMON can swim back and forth\n"
+ "across the Pacific Ocean without effort.");
+
+const u8 gAbraPokedexText[] = _(
+ "A POKéMON that sleeps 18 hours a day.\n"
+ "Observation revealed that it uses\n"
+ "TELEPORT to change its location once\n"
+ "every hour.");
+
+const u8 gKadabraPokedexText[] = _(
+ "It is rumored that a boy with psychic\n"
+ "abilities suddenly transformed into\n"
+ "KADABRA while he was assisting research\n"
+ "into extrasensory powers.");
+
+const u8 gAlakazamPokedexText[] = _(
+ "While it has strong psychic abilities and\n"
+ "high intelligence, an ALAKAZAM’s muscles\n"
+ "are very weak. It uses psychic power to\n"
+ "move its body.");
+
+const u8 gMachopPokedexText[] = _(
+ "It continually undertakes strenuous\n"
+ "training to master all forms of martial\n"
+ "arts. Its strength lets it easily hoist\n"
+ "a sumo wrestler onto its shoulders.");
+
+const u8 gMachokePokedexText[] = _(
+ "A belt is worn by a MACHOKE to keep its\n"
+ "overwhelming power under control.\n"
+ "Because it is so dangerous, no one has\n"
+ "ever removed the belt.");
+
+const u8 gMachampPokedexText[] = _(
+ "It is impossible to defend against punches\n"
+ "and chops doled out by its four arms.\n"
+ "Its fighting spirit flares up when it faces\n"
+ "a tough opponent.");
+
+const u8 gBellsproutPokedexText[] = _(
+ "A BELLSPROUT’s thin and flexible body lets\n"
+ "it bend and sway to avoid any attack,\n"
+ "however strong it may be. From its mouth,\n"
+ "it leaks a fluid that melts even iron.");
+
+const u8 gWeepinbellPokedexText[] = _(
+ "At night, a WEEPINBELL hangs on to a tree\n"
+ "branch with its hooked rear and sleeps.\n"
+ "If it moves around in its sleep, it may\n"
+ "wake up to find itself on the ground.");
+
+const u8 gVictreebelPokedexText[] = _(
+ "The long vine extending from its head is\n"
+ "waved about as if it were a living thing to\n"
+ "attract prey. When an unsuspecting victim\n"
+ "approaches, it is swallowed whole.");
+
+const u8 gTentacoolPokedexText[] = _(
+ "Its body is almost entirely composed of\n"
+ "water. It ensnares its foe with its two\n"
+ "long tentacles, then stabs with the poison\n"
+ "stingers at their tips.");
+
+const u8 gTentacruelPokedexText[] = _(
+ "It lives in complex rock formations on\n"
+ "the ocean floor and traps prey using its\n"
+ "80 tentacles. Its red orbs glow when it\n"
+ "grows excited or agitated.");
+
+const u8 gGeodudePokedexText[] = _(
+ "It climbs mountain paths using only the\n"
+ "power of its arms. Because they look just\n"
+ "like boulders lining paths, hikers may step\n"
+ "on them without noticing.");
+
+const u8 gGravelerPokedexText[] = _(
+ "They descend from mountains by tumbling\n"
+ "down steep slopes. They are so brutal,\n"
+ "they smash aside obstructing trees and\n"
+ "massive boulders with thunderous tackles.");
+
+const u8 gGolemPokedexText[] = _(
+ "It is said to live in volcanic craters\n"
+ "on mountain peaks. Once a year, it sheds\n"
+ "its hide and grows larger. The shed hide\n"
+ "crumbles and returns to the soil.");
+
+const u8 gPonytaPokedexText[] = _(
+ "A PONYTA is very weak at birth. It can\n"
+ "barely stand up. Its legs become stronger\n"
+ "as it stumbles and falls while trying to\n"
+ "keep up with its parent.");
+
+const u8 gRapidashPokedexText[] = _(
+ "It usually canters casually in the fields\n"
+ "and plains. But once a RAPIDASH turns\n"
+ "serious, its fiery manes flare and blaze\n"
+ "as it gallops its way up to 150 mph.");
+
+const u8 gSlowpokePokedexText[] = _(
+ "It catches prey by dipping its tail in\n"
+ "water at the side of a river. But it often\n"
+ "forgets what it is doing and spends entire\n"
+ "days just loafing at water’s edge.");
+
+const u8 gSlowbroPokedexText[] = _(
+ "Its tail has a SHELLDER firmly attached\n"
+ "with a bite. As a result, the tail can’t be\n"
+ "used for fishing anymore. This forces it\n"
+ "to reluctantly swim and catch prey.");
+
+const u8 gMagnemitePokedexText[] = _(
+ "The units at its sides are extremely\n"
+ "powerful magnets. They generate enough\n"
+ "magnetism to draw in iron objects from\n"
+ "over 300 feet away.");
+
+const u8 gMagnetonPokedexText[] = _(
+ "It is actually three MAGNEMITE linked\n"
+ "by magnetism. It generates powerful radio\n"
+ "waves that raise temperatures by 3.6\n"
+ "degrees F within a 3,300-foot radius.");
+
+const u8 gFarfetchdPokedexText[] = _(
+ "It is always seen with a stick from a plant.\n"
+ "Apparently, there are good sticks and bad\n"
+ "sticks. This POKéMON occasionally fights\n"
+ "with others over choice sticks.");
+
+const u8 gDoduoPokedexText[] = _(
+ "Even while eating or sleeping, one of the\n"
+ "heads remains always vigilant for any sign\n"
+ "of danger. When threatened, it flees at\n"
+ "over 60 miles per hour.");
+
+const u8 gDodrioPokedexText[] = _(
+ "A peculiar POKéMON species with three\n"
+ "heads. It vigorously races across grassy\n"
+ "plains even in arid seasons with little\n"
+ "rainfall.");
+
+const u8 gSeelPokedexText[] = _(
+ "SEEL hunt for prey in frigid, ice-covered\n"
+ "seas. When it needs to breathe, it punches\n"
+ "a hole through the ice with the sharply\n"
+ "protruding section of its head.");
+
+const u8 gDewgongPokedexText[] = _(
+ "It loves to snooze on bitterly cold ice.\n"
+ "The sight of this POKéMON sleeping on\n"
+ "a glacier was mistakenly thought to be\n"
+ "a mermaid by a mariner long ago.");
+
+const u8 gGrimerPokedexText[] = _(
+ "Born from polluted sludge in the sea,\n"
+ "GRIMER’s favorite food is anything filthy.\n"
+ "They feed on wastewater pumped out from\n"
+ "factories.");
+
+const u8 gMukPokedexText[] = _(
+ "It prefers warm and humid habitats.\n"
+ "In the summertime, the toxic substances\n"
+ "in its body intensify, making MUK reek like\n"
+ "putrid kitchen garbage.");
+
+const u8 gShellderPokedexText[] = _(
+ "At night, it burrows a hole in the seafloor\n"
+ "with its broad tongue to make a place to\n"
+ "sleep. While asleep, it closes its shell,\n"
+ "but leaves its tongue hanging out.");
+
+const u8 gCloysterPokedexText[] = _(
+ "It swims in the sea by swallowing water,\n"
+ "then jetting it out toward the rear.\n"
+ "The CLOYSTER shoots spikes from its\n"
+ "shell using the same system.");
+
+const u8 gGastlyPokedexText[] = _(
+ "When exposed to a strong wind, a GASTLY’s\n"
+ "gaseous body quickly dwindles away.\n"
+ "They cluster under the eaves of houses\n"
+ "to escape the ravages of wind.");
+
+const u8 gHaunterPokedexText[] = _(
+ "If a HAUNTER beckons you while it is\n"
+ "floating in darkness, don’t approach it.\n"
+ "This POKéMON will try to lick you with its\n"
+ "tongue and steal your life away.");
+
+const u8 gGengarPokedexText[] = _(
+ "Deep in the night, your shadow cast by\n"
+ "a streetlight may suddenly overtake you.\n"
+ "It is actually a GENGAR running past\n"
+ "you, pretending to be your shadow.");
+
+const u8 gOnixPokedexText[] = _(
+ "There is a magnet in its brain that\n"
+ "prevents an ONIX from losing direction\n"
+ "while tunneling. As it grows older, its body\n"
+ "becomes steadily rounder and smoother.");
+
+const u8 gDrowzeePokedexText[] = _(
+ "If your nose becomes itchy while you are\n"
+ "sleeping, it’s a sure sign that a DROWZEE is\n"
+ "standing above your pillow and trying to\n"
+ "eat your dream through your nostrils.");
+
+const u8 gHypnoPokedexText[] = _(
+ "The arcing movement and glitter of the\n"
+ "pendulum in a HYPNO’s hand lull the foe\n"
+ "into deep hypnosis. While searching for\n"
+ "prey, it polishes the pendulum.");
+
+const u8 gKrabbyPokedexText[] = _(
+ "KRABBY live in holes dug into beaches.\n"
+ "On sandy shores with little in the way\n"
+ "of food, they can be seen squabbling with\n"
+ "each other over territory.");
+
+const u8 gKinglerPokedexText[] = _(
+ "It waves its huge, oversized claw in the\n"
+ "air to communicate with others.\n"
+ "But since the claw is so heavy, this\n"
+ "POKéMON quickly tires.");
+
+const u8 gVoltorbPokedexText[] = _(
+ "It bears an uncanny and unexplained\n"
+ "resemblance to a POKé BALL. Because it\n"
+ "explodes at the slightest shock, even\n"
+ "veteran TRAINERS treat it with caution.");
+
+const u8 gElectrodePokedexText[] = _(
+ "They appear in great numbers at electric\n"
+ "power plants. Because they feed on\n"
+ "electricity, they cause massive and\n"
+ "chaotic blackouts in nearby cities.");
+
+const u8 gExeggcutePokedexText[] = _(
+ "It consists of six eggs that care for each\n"
+ "other. The eggs attract each other and\n"
+ "spin around. When cracks increasingly\n"
+ "appear, it is close to evolution.");
+
+const u8 gExeggutorPokedexText[] = _(
+ "Originally from the tropics, EXEGGUTOR’s\n"
+ "heads grow larger from exposure to strong\n"
+ "sunlight. It is said that when the heads\n"
+ "fall, they group to form an EXEGGCUTE.");
+
+const u8 gCubonePokedexText[] = _(
+ "It pines for the mother it will never see\n"
+ "again. Seeing a likeness of its mother in\n"
+ "the full moon, it cries. The stains on the\n"
+ "skull it wears are from its tears.");
+
+const u8 gMarowakPokedexText[] = _(
+ "A MAROWAK is the evolved form of a CUBONE\n"
+ "that has grown tough by overcoming the\n"
+ "grief of losing its mother. Its tempered\n"
+ "and hardened spirit is not easily broken.");
+
+const u8 gHitmonleePokedexText[] = _(
+ "Its legs freely stretch and contract.\n"
+ "Using these springlike limbs, it bowls over\n"
+ "foes with devastating kicks. After battle,\n"
+ "it rubs down its tired legs.");
+
+const u8 gHitmonchanPokedexText[] = _(
+ "A HITMONCHAN is said to possess the\n"
+ "spirit of a boxer who aimed to become the\n"
+ "world champion. Having an indomitable\n"
+ "spirit means that it will never give up.");
+
+const u8 gLickitungPokedexText[] = _(
+ "Whenever it sees something unfamiliar,\n"
+ "it always licks the object because it\n"
+ "memorizes things by texture and taste.\n"
+ "It is somewhat put off by sour things.");
+
+const u8 gKoffingPokedexText[] = _(
+ "Getting up close to a KOFFING will give\n"
+ "you a chance to observe, through its thin\n"
+ "skin, the toxic gases swirling inside. It\n"
+ "blows up at the slightest stimulation.");
+
+const u8 gWeezingPokedexText[] = _(
+ "By diluting its toxic gases with a special\n"
+ "process, the highest grade of perfume can\n"
+ "be extracted. To WEEZING, gases emanating\n"
+ "from garbage are the ultimate feast.");
+
+const u8 gRhyhornPokedexText[] = _(
+ "Once it starts running, it doesn’t stop.\n"
+ "Its tiny brain makes it so stupid that it\n"
+ "can’t remember why it started running in\n"
+ "the first place.");
+
+const u8 gRhydonPokedexText[] = _(
+ "Its horn, which rotates like a drill,\n"
+ "destroys tall buildings with one strike.\n"
+ "It stands on its hind legs, and its brain\n"
+ "is well developed.");
+
+const u8 gChanseyPokedexText[] = _(
+ "CHANSEY lay nutritionally excellent eggs\n"
+ "every day. The eggs are so delicious, they\n"
+ "are eagerly devoured by even those people\n"
+ "who have lost their appetite.");
+
+const u8 gTangelaPokedexText[] = _(
+ "Its vines snap off easily and painlessly\n"
+ "if they are grabbed, allowing it to make a\n"
+ "quick getaway. The lost vines are replaced\n"
+ "by new growth the very next day.");
+
+const u8 gKangaskhanPokedexText[] = _(
+ "If you come across a young KANGASKHAN\n"
+ "playing by itself, never try to catch it.\n"
+ "The baby’s parent is sure to be in the area,\n"
+ "and it will become violently enraged.");
+
+const u8 gHorseaPokedexText[] = _(
+ "By cleverly flicking the fins on its back\n"
+ "side to side, it moves in any direction\n"
+ "while facing forward. It spits ink to\n"
+ "escape if it senses danger.");
+
+const u8 gSeadraPokedexText[] = _(
+ "The poisonous barbs all over its body are\n"
+ "highly valued as ingredients for making\n"
+ "traditional herbal medicine. It shows no\n"
+ "mercy to anything approaching its nest.");
+
+const u8 gGoldeenPokedexText[] = _(
+ "In the springtime, schools of GOLDEEN\n"
+ "can be seen swimming up falls and rivers.\n"
+ "It metes out staggering damage with its\n"
+ "single horn.");
+
+const u8 gSeakingPokedexText[] = _(
+ "It punches holes in boulders on stream-\n"
+ "beds. This is a clever innovation that\n"
+ "prevents its eggs from being attacked or\n"
+ "washed away by the current.");
+
+const u8 gStaryuPokedexText[] = _(
+ "It gathers with others in the night and\n"
+ "makes its red core glow on and off with\n"
+ "the twinkling stars. It can regenerate\n"
+ "limbs if they are severed from its body.");
+
+const u8 gStarmiePokedexText[] = _(
+ "People in ancient times imagined that\n"
+ "STARMIE were transformed from the\n"
+ "reflections of stars that twinkled on\n"
+ "gentle waves at night.");
+
+const u8 gMrmimePokedexText[] = _(
+ "A MR. MIME is a master of pantomime. It can\n"
+ "convince others that something unseeable\n"
+ "actually exists. Once believed, the\n"
+ "imaginary object does become real.");
+
+const u8 gScytherPokedexText[] = _(
+ "Its blindingly fast speed adds to the\n"
+ "sharpness of its twin forearm scythes.\n"
+ "The scythes can slice through thick logs\n"
+ "in one wicked stroke.");
+
+const u8 gJynxPokedexText[] = _(
+ "A JYNX sashays rhythmically as if it were\n"
+ "dancing. Its motions are so bouncingly\n"
+ "alluring, people seeing it are compelled to\n"
+ "shake their hips without noticing.");
+
+const u8 gElectabuzzPokedexText[] = _(
+ "When a storm approaches, it competes with\n"
+ "others to scale heights that are likely to\n"
+ "be stricken by lightning. Some towns use\n"
+ "ELECTABUZZ in place of lightning rods.");
+
+const u8 gMagmarPokedexText[] = _(
+ "In battle, it blows out intense flames from\n"
+ "all over its body to intimidate its foe.\n"
+ "These fiery bursts create heat waves that\n"
+ "ignite grass and trees in the area.");
+
+const u8 gPinsirPokedexText[] = _(
+ "Their pincers are strong enough to\n"
+ "shatter thick logs. Because they dislike\n"
+ "cold, PINSIR burrow and sleep under\n"
+ "the ground on chilly nights.");
+
+const u8 gTaurosPokedexText[] = _(
+ "It is not satisfied unless it is rampaging\n"
+ "at all times. If there is no opponent for\n"
+ "TAUROS to battle, it will charge at thick\n"
+ "trees and knock them down to calm itself.");
+
+const u8 gMagikarpPokedexText[] = _(
+ "Its swimming muscles are weak, so it is\n"
+ "easily washed away by currents. In places\n"
+ "where water pools, you can see many\n"
+ "MAGIKARP deposited there by the flow.");
+
+const u8 gGyaradosPokedexText[] = _(
+ "It is an extremely vicious and violent\n"
+ "POKéMON. When humans begin to fight,\n"
+ "it will appear and burn everything to the\n"
+ "ground with intensely hot flames.");
+
+const u8 gLaprasPokedexText[] = _(
+ "People have driven LAPRAS almost to the\n"
+ "point of extinction. In the evenings,\n"
+ "it is said to sing plaintively as it seeks\n"
+ "what few others of its kind still remain.");
+
+const u8 gDittoPokedexText[] = _(
+ "A DITTO rearranges its cell structure to\n"
+ "transform itself. However, if it tries to\n"
+ "change based on its memory, it will get\n"
+ "details wrong.");
+
+const u8 gEeveePokedexText[] = _(
+ "An EEVEE has an unstable genetic makeup\n"
+ "that suddenly mutates due to its\n"
+ "environment. Radiation from various\n"
+ "STONES causes this POKéMON to evolve.");
+
+const u8 gVaporeonPokedexText[] = _(
+ "VAPOREON underwent a spontaneous\n"
+ "mutation and grew fins and gills that\n"
+ "allow them to live underwater. They have\n"
+ "the ability to freely control water.");
+
+const u8 gJolteonPokedexText[] = _(
+ "Its cells generate weak power that is\n"
+ "amplified by its fur’s static electricity\n"
+ "to drop thunderbolts. The bristling fur is\n"
+ "made of electrically charged needles.");
+
+const u8 gFlareonPokedexText[] = _(
+ "FLAREON’s fluffy fur releases heat into\n"
+ "the air so that its body does not get\n"
+ "excessively hot. Its body temperature can\n"
+ "rise to a maximum of 1,650 degrees F.");
+
+const u8 gPorygonPokedexText[] = _(
+ "It is capable of reverting itself entirely\n"
+ "back to program data in order to enter\n"
+ "cyberspace. A PORYGON is copy-\n"
+ "protected so it cannot be duplicated.");
+
+const u8 gOmanytePokedexText[] = _(
+ "One of the ancient and long-since-extinct\n"
+ "POKéMON that have been regenerated\n"
+ "from fossils by humans. If attacked,\n"
+ "it withdraws into its hard shell.");
+
+const u8 gOmastarPokedexText[] = _(
+ "An OMASTAR uses its tentacles to capture\n"
+ "its prey. It is believed to have become\n"
+ "extinct because its shell grew too large,\n"
+ "making its movements slow and ponderous.");
+
+const u8 gKabutoPokedexText[] = _(
+ "It is a POKéMON that has been regenerated\n"
+ "from a fossil. However, in rare cases, living\n"
+ "examples have been discovered. KABUTO\n"
+ "have not changed for 300 million years.");
+
+const u8 gKabutopsPokedexText[] = _(
+ "KABUTOPS once swam underwater to hunt \n"
+ "for prey. It was apparently evolving from\n"
+ "being a water dweller to living on land as\n"
+ "evident from changes in its gills and legs.");
+
+const u8 gAerodactylPokedexText[] = _(
+ "AERODACTYL is a POKéMON from the age\n"
+ "of dinosaurs. It was regenerated from DNA\n"
+ "extracted from amber. It is imagined to\n"
+ "have been the king of the skies.");
+
+const u8 gSnorlaxPokedexText[] = _(
+ "SNORLAX’s typical day consists of nothing\n"
+ "more than eating and sleeping. It is such\n"
+ "a docile POKéMON that there are children\n"
+ "who use its big belly as a place to play.");
+
+const u8 gArticunoPokedexText[] = _(
+ "ARTICUNO is a legendary bird POKéMON that\n"
+ "can control ice. The flapping of its wings\n"
+ "chills the air. As a result, it is said that\n"
+ "when this POKéMON flies, snow will fall.");
+
+const u8 gZapdosPokedexText[] = _(
+ "ZAPDOS is a legendary bird POKéMON that\n"
+ "has the ability to control electricity.\n"
+ "It usually lives in thunderclouds. It gains\n"
+ "power if it is stricken by lightning bolts.");
+
+const u8 gMoltresPokedexText[] = _(
+ "MOLTRES is a legendary bird POKéMON\n"
+ "that can control fire. If injured, it is said\n"
+ "to dip its body in the molten magma of\n"
+ "a volcano to burn and heal itself.");
+
+const u8 gDratiniPokedexText[] = _(
+ "A DRATINI continually molts and sloughs\n"
+ "off its old skin. It does so because the\n"
+ "life energy within its body steadily builds\n"
+ "to reach uncontrollable levels.");
+
+const u8 gDragonairPokedexText[] = _(
+ "A DRAGONAIR stores an enormous amount of\n"
+ "energy inside its body. It is said to alter\n"
+ "the weather around it by loosing energy\n"
+ "from the crystals on its neck and tail.");
+
+const u8 gDragonitePokedexText[] = _(
+ "It can circle the globe in just 16 hours.\n"
+ "It is a kindhearted POKéMON that leads\n"
+ "lost and foundering ships in a storm\n"
+ "to the safety of land.");
+
+const u8 gMewtwoPokedexText[] = _(
+ "A POKéMON that was created by genetic\n"
+ "manipulation. However, even though the\n"
+ "scientific power of humans made its body,\n"
+ "they failed to give it a warm heart.");
+
+const u8 gMewPokedexText[] = _(
+ "A MEW is said to possess the genes of all\n"
+ "POKéMON. It is capable of making itself\n"
+ "invisible at will, so it entirely avoids\n"
+ "notice even if it approaches people.");
+
+const u8 gChikoritaPokedexText[] = _(
+ "It waves its leaf around to keep foes\n"
+ "at bay. However, a sweet fragrance also\n"
+ "wafts from the leaf, creating a friendly\n"
+ "atmosphere that becalms the battlers.");
+
+const u8 gBayleefPokedexText[] = _(
+ "A BAYLEEF’s neck is ringed by curled-up\n"
+ "leaves. Inside each leaf is a small tree\n"
+ "shoot. The fragrance of this shoot\n"
+ "makes people peppy.");
+
+const u8 gMeganiumPokedexText[] = _(
+ "The fragrance of a MEGANIUM’s flower\n"
+ "soothes and calms emotions. In battle,\n"
+ "it gives off more of its becalming scent\n"
+ "to blunt the foe’s fighting spirit.");
+
+const u8 gCyndaquilPokedexText[] = _(
+ "It flares flames from its back to protect\n"
+ "itself. The fire burns vigorously if the\n"
+ "POKéMON is angry. When it is tired,\n"
+ "it sputters with incomplete combustion.");
+
+const u8 gQuilavaPokedexText[] = _(
+ "It intimidates foes with intense gusts of\n"
+ "flames and superheated air. Its quick\n"
+ "nimbleness lets it dodge attacks even\n"
+ "while scorching an enemy.");
+
+const u8 gTyphlosionPokedexText[] = _(
+ "It can hide behind a shimmering heat haze\n"
+ "that it creates using its intense flames.\n"
+ "TYPHLOSION create blazing explosive\n"
+ "blasts that burn everything to cinders.");
+
+const u8 gTotodilePokedexText[] = _(
+ "Despite its small body, TOTODILE’s jaws\n"
+ "are very powerful. While it may think it is\n"
+ "just playfully nipping, its bite has enough\n"
+ "strength to cause serious injury.");
+
+const u8 gCroconawPokedexText[] = _(
+ "Once its jaws clamp down on its foe, it will\n"
+ "absolutely not let go. Because the tips of\n"
+ "its fangs are forked back like fishhooks,\n"
+ "they become irremovably embedded.");
+
+const u8 gFeraligatrPokedexText[] = _(
+ "It opens its huge mouth to intimidate\n"
+ "enemies. In battle, it runs using its thick\n"
+ "and powerful hind legs to charge the\n"
+ "foe with incredible speed.");
+
+const u8 gSentretPokedexText[] = _(
+ "They take turns standing guard when it\n"
+ "is time to sleep. The sentry awakens the\n"
+ "others if it senses danger. If one becomes\n"
+ "separated, it turns sleepless with fear.");
+
+const u8 gFurretPokedexText[] = _(
+ "A FURRET has a very slim build. When under\n"
+ "attack, it can squirm through narrow\n"
+ "spaces and get away. In spite of its short\n"
+ "limbs, it is very nimble and fleet.");
+
+const u8 gHoothootPokedexText[] = _(
+ "It has an internal organ that senses\n"
+ "the earth’s rotation. Using this special\n"
+ "organ, a HOOTHOOT begins hooting at\n"
+ "precisely the same time every day.");
+
+const u8 gNoctowlPokedexText[] = _(
+ "It unfailingly catches prey in darkness.\n"
+ "NOCTOWL owe their success to superior\n"
+ "vision that allows them to see in minimal\n"
+ "light, and to their supple and silent wings.");
+
+const u8 gLedybaPokedexText[] = _(
+ "LEDYBA communicate using a fluid that\n"
+ "they secrete from where the legs join the\n"
+ "body. They are said to convey feelings to\n"
+ "others by altering the fluid’s scent.");
+
+const u8 gLedianPokedexText[] = _(
+ "It is said that in lands with clean air,\n"
+ "where the stars fill the sky, there live\n"
+ "many LEDIAN. For good reason, they use\n"
+ "the light of the stars as energy.");
+
+const u8 gSpinarakPokedexText[] = _(
+ "The web it spins can be considered its\n"
+ "second nervous system. It is said that a\n"
+ "SPINARAK determines its prey by the tiny\n"
+ "vibrations it feels through the web.");
+
+const u8 gAriadosPokedexText[] = _(
+ "Its feet are tipped with tiny hooked claws\n"
+ "that enable it to scuttle on ceilings and\n"
+ "vertical walls. It constricts its foe with\n"
+ "thin and strong silk webbing.");
+
+const u8 gCrobatPokedexText[] = _(
+ "Over the course of evolution, its hind legs\n"
+ "turned into wings. By alternately resting\n"
+ "its front and rear wings, it can fly all day\n"
+ "without having to stop.");
+
+const u8 gChinchouPokedexText[] = _(
+ "When it senses danger, it discharges\n"
+ "positive and negative electricity from its\n"
+ "two antennae. It lives in depths beyond\n"
+ "sunlight’s reach.");
+
+const u8 gLanturnPokedexText[] = _(
+ "The light-emitting orbs on its back are\n"
+ "very bright. They are formed from a part of\n"
+ "its dorsal fin. This POKéMON illuminates\n"
+ "the inky darkness of deep seas.");
+
+const u8 gPichuPokedexText[] = _(
+ "It is still inept at retaining electricity.\n"
+ "When it is startled, it discharges power\n"
+ "accidentally. It gets better at holding\n"
+ "power as it grows older.");
+
+const u8 gCleffaPokedexText[] = _(
+ "On nights with many shooting stars,\n"
+ "CLEFFA can be seen dancing in a ring.\n"
+ "They dance until daybreak, when they\n"
+ "quench their thirst with the morning dew.");
+
+const u8 gIgglybuffPokedexText[] = _(
+ "Its soft and pliable body is very bouncy.\n"
+ "When it sings continuously with all its\n"
+ "might, its body steadily turns a deepening\n"
+ "pink color.");
+
+const u8 gTogepiPokedexText[] = _(
+ "As its energy, it uses the feelings of\n"
+ "compassion and pleasure exuded by\n"
+ "people and POKéMON. It stores up happy\n"
+ "feelings in its shell, then shares them out.");
+
+const u8 gTogeticPokedexText[] = _(
+ "It is said to be a POKéMON that brings good\n"
+ "fortune. When it spots someone who is pure\n"
+ "of heart, a TOGETIC appears and shares its\n"
+ "happiness with that person.");
+
+const u8 gNatuPokedexText[] = _(
+ "It runs up short trees that grow on the\n"
+ "savanna to peck at new shoots.\n"
+ "A NATU’s eyes look as if they are\n"
+ "always observing something.");
+
+const u8 gXatuPokedexText[] = _(
+ "It has the enigmatic power of foreseeing\n"
+ "the future. Some people in different lands\n"
+ "have long believed that XATU are\n"
+ "emissaries from another world.");
+
+const u8 gMareepPokedexText[] = _(
+ "Its fluffy wool rubs together and builds\n"
+ "a static charge. The more energy is\n"
+ "charged, the more brightly the lightbulb\n"
+ "at the tip of its tail glows.");
+
+const u8 gFlaaffyPokedexText[] = _(
+ "Its fleece quality changes to generate\n"
+ "strong static electricity with a small\n"
+ "amount of wool. The bare, slick parts of its\n"
+ "hide are shielded against electricity.");
+
+const u8 gAmpharosPokedexText[] = _(
+ "It gives off so much light that it can be\n"
+ "seen even from space. People in the old\n"
+ "days used its light to send signals back\n"
+ "and forth with others far away.");
+
+const u8 gBellossomPokedexText[] = _(
+ "Its flower petals deepen in color through\n"
+ "exposure to sunlight. When cloudy weather\n"
+ "persists, it does a dance that is thought\n"
+ "to be a ritual for summoning the sun.");
+
+const u8 gMarillPokedexText[] = _(
+ "Its body is covered with water-repellent\n"
+ "fur. Because of the fur, it can swim\n"
+ "through water at high speed without being\n"
+ "slowed by the water’s resistance.");
+
+const u8 gAzumarillPokedexText[] = _(
+ "It lives in water virtually all day long.\n"
+ "Its body color and pattern act as\n"
+ "camouflage that makes it tough for\n"
+ "enemies to spot in water.");
+
+const u8 gSudowoodoPokedexText[] = _(
+ "It mimics a tree to avoid being attacked\n"
+ "by enemies. But since its forelegs\n"
+ "remain green throughout the year, it is\n"
+ "easily identified as a fake in the winter.");
+
+const u8 gPolitoedPokedexText[] = _(
+ "The curled hair on its head proves its\n"
+ "status as a king. It is said that the\n"
+ "longer and curlier the hair, the more\n"
+ "respect it earns from its peers.");
+
+const u8 gHoppipPokedexText[] = _(
+ "This POKéMON drifts and floats with the\n"
+ "wind. If it senses the approach of strong\n"
+ "winds, a HOPPIP links leaves with others\n"
+ "to prepare against being blown away.");
+
+const u8 gSkiploomPokedexText[] = _(
+ "It blossoms when the temperature rises\n"
+ "above 64 degrees F. Because its flower’s\n"
+ "blooming changes with the temperature,\n"
+ "it is sometimes used as a thermometer.");
+
+const u8 gJumpluffPokedexText[] = _(
+ "JUMPLUFF ride warm southern winds to\n"
+ "cross the sea and fly to foreign lands.\n"
+ "This POKéMON lands when it encounters\n"
+ "cold air while it is floating.");
+
+const u8 gAipomPokedexText[] = _(
+ "Its tail ends with a dexterous, handlike\n"
+ "appendage. However, because it uses the\n"
+ "tail so much, AIPOM’s real hands have\n"
+ "become rather clumsy.");
+
+const u8 gSunkernPokedexText[] = _(
+ "SUNKERN try to minimize movement to\n"
+ "conserve the nutrients they have stored\n"
+ "in their bodies for evolution. They will\n"
+ "not eat, subsisting only on morning dew.");
+
+const u8 gSunfloraPokedexText[] = _(
+ "SUNFLORA convert solar energy into\n"
+ "nutrition. They are highly active in the\n"
+ "warm daytime but suddenly stop moving as\n"
+ "soon as the sun sets.");
+
+const u8 gYanmaPokedexText[] = _(
+ "It can see 360 degrees without moving\n"
+ "its eyes. It is a great flier capable of\n"
+ "making sudden stops and turning midair to\n"
+ "quickly chase down targeted prey.");
+
+const u8 gWooperPokedexText[] = _(
+ "WOOPER usually live in water but come\n"
+ "out onto land seeking food occasionally.\n"
+ "On land, they coat their bodies with a\n"
+ "gooey, toxic film.");
+
+const u8 gQuagsirePokedexText[] = _(
+ "A QUAGSIRE hunts by leaving its mouth wide\n"
+ "open in water and waiting for its prey to\n"
+ "blunder in. Because it doesn’t move, it\n"
+ "does not get very hungry.");
+
+const u8 gEspeonPokedexText[] = _(
+ "An ESPEON is extremely loyal to any\n"
+ "TRAINER it considers to be worthy. It is\n"
+ "said to have developed precognitive\n"
+ "powers to protect its TRAINER from harm.");
+
+const u8 gUmbreonPokedexText[] = _(
+ "UMBREON evolved from exposure to the\n"
+ "moon’s energy pulses. It lurks in darkness\n"
+ "and waits for its foes to move. The rings\n"
+ "on its body glow when it leaps to attack.");
+
+const u8 gMurkrowPokedexText[] = _(
+ "MURKROW were feared as the alleged\n"
+ "bearers of ill fortune. It shows strong\n"
+ "interest in anything that sparkles. It will\n"
+ "even try to steal rings from women.");
+
+const u8 gSlowkingPokedexText[] = _(
+ "It undertakes research every day to\n"
+ "solve the mysteries of the world.\n"
+ "However, it apparently forgets everything\n"
+ "if the SHELLDER on its head comes off.");
+
+const u8 gMisdreavusPokedexText[] = _(
+ "A MISDREAVUS frightens people with a\n"
+ "creepy, sobbing cry. It apparently uses\n"
+ "its red spheres to absorb the fear of foes\n"
+ "as its nutrition.");
+
+const u8 gUnownPokedexText[] = _(
+ "This POKéMON is shaped like ancient text\n"
+ "characters. Although research is ongoing,\n"
+ "it is a mystery as to which came first,\n"
+ "the ancient writings or the various UNOWN.");
+
+const u8 gWobbuffetPokedexText[] = _(
+ "Usually docile, a WOBBUFFET strikes back\n"
+ "ferociously if its black tail is attacked.\n"
+ "It makes its lair in caves where it waits\n"
+ "for nightfall.");
+
+const u8 gGirafarigPokedexText[] = _(
+ "A GIRAFARIG is an herbivore--it eats\n"
+ "grass and tree shoots. While it is eating,\n"
+ "its tail makes chewing and swallowing\n"
+ "motions as if it were also eating.");
+
+const u8 gPinecoPokedexText[] = _(
+ "A PINECO hangs from a tree branch and\n"
+ "waits for prey. While eating, if it is\n"
+ "disturbed by someone shaking its tree, it\n"
+ "falls on the ground and suddenly explodes.");
+
+const u8 gForretressPokedexText[] = _(
+ "It keeps itself inside its steel shell.\n"
+ "The shell is opened when it is catching\n"
+ "prey, but it is so quick that the shell’s\n"
+ "inside cannot be seen.");
+
+const u8 gDunsparcePokedexText[] = _(
+ "Its drill-tipped tail is used to burrow into\n"
+ "the ground backwards. This POKéMON is\n"
+ "known to make its nest in complex shapes\n"
+ "deep under the ground.");
+
+const u8 gGligarPokedexText[] = _(
+ "It glides without making a single sound.\n"
+ "It grasps the face of its foe using its\n"
+ "hind and large front claws, then stabs\n"
+ "with its poison barb.");
+
+const u8 gSteelixPokedexText[] = _(
+ "STEELIX live even further underground\n"
+ "than ONIX. This POKéMON is known to dig\n"
+ "toward the earth’s core, reaching a depth\n"
+ "of over six-tenths of a mile underground.");
+
+const u8 gSnubbullPokedexText[] = _(
+ "By baring its fangs and making a scary\n"
+ "face, it sends smaller POKéMON scurrying\n"
+ "in terror. The SNUBBULL does seem a\n"
+ "little sad at making its foes flee.");
+
+const u8 gGranbullPokedexText[] = _(
+ "It has a particularly well-developed lower\n"
+ "jaw. The huge fangs are heavy, causing\n"
+ "it to tilt its head. Unless it is startled, it\n"
+ "will not try to bite.");
+
+const u8 gQwilfishPokedexText[] = _(
+ "A QWILFISH uses the pressure of water\n"
+ "it swallows to shoot toxic quills all at\n"
+ "once from all over its body. It finds\n"
+ "swimming to be somewhat challenging.");
+
+const u8 gScizorPokedexText[] = _(
+ "A SCIZOR has a body with the hardness of\n"
+ "steel. It is not easily fazed by ordinary\n"
+ "sorts of attacks. It flaps its wings to\n"
+ "regulate its body temperature.");
+
+const u8 gShucklePokedexText[] = _(
+ "A SHUCKLE hides under rocks, keeping its\n"
+ "body concealed inside its shell while\n"
+ "eating stored berries. The berries mix with\n"
+ "its body fluids to become a juice.");
+
+const u8 gHeracrossPokedexText[] = _(
+ "They gather in forests seeking the sweet\n"
+ "sap of trees. It is completely clad in a\n"
+ "steel-hard shell. It is proud of its horn,\n"
+ "which it uses to fling foes.");
+
+const u8 gSneaselPokedexText[] = _(
+ "A SNEASEL scales trees by punching its\n"
+ "hooked claws into the bark. It seeks out\n"
+ "unguarded nests and steals eggs for food\n"
+ "while the parents are away.");
+
+const u8 gTeddiursaPokedexText[] = _(
+ "It licks its palms that are sweetened by\n"
+ "being soaked in honey. A TEDDIURSA makes\n"
+ "its own honey by blending fruits and pollen\n"
+ "collected by BEEDRILL.");
+
+const u8 gUrsaringPokedexText[] = _(
+ "In forests, it is said that there are many\n"
+ "streams and towering trees where an\n"
+ "URSARING gathers food. It walks through\n"
+ "its forest collecting food every day.");
+
+const u8 gSlugmaPokedexText[] = _(
+ "It is a species of POKéMON that lives in\n"
+ "volcanic areas. If its body cools, its skin\n"
+ "hardens and immobilizes it. To avoid that,\n"
+ "it sleeps near magma.");
+
+const u8 gMagcargoPokedexText[] = _(
+ "The shell on its back is made of hardened\n"
+ "magma. Tens of thousands of years spent\n"
+ "living in volcanic craters have turned\n"
+ "MAGCARGO’s bodies into magma.");
+
+const u8 gSwinubPokedexText[] = _(
+ "It roots for food by rubbing its snout\n"
+ "against the ground. Its favorite food is a\n"
+ "mushroom that grows under dried grass.\n"
+ "It occasionally roots out hot springs.");
+
+const u8 gPiloswinePokedexText[] = _(
+ "A PILOSWINE is covered by a thick coat\n"
+ "of long hair for enduring freezing cold.\n"
+ "It uses its tusks to dig up food that has\n"
+ "been buried under ice.");
+
+const u8 gCorsolaPokedexText[] = _(
+ "CORSOLA live in warm southern seas.\n"
+ "If the sea becomes polluted, the beautiful\n"
+ "coral stalks become discolored and crumble\n"
+ "away in tatters.");
+
+const u8 gRemoraidPokedexText[] = _(
+ "A REMORAID uses its abdominal muscles\n"
+ "to forcefully expel swallowed water, then\n"
+ "shoot down flying prey. When evolution\n"
+ "approaches, it travels down rivers.");
+
+const u8 gOctilleryPokedexText[] = _(
+ "It ensnares its foe with its suction-\n"
+ "cupped tentacles before delivering the\n"
+ "finishing blow. If the foe turns out to be\n"
+ "too strong, it spews ink to escape.");
+
+const u8 gDelibirdPokedexText[] = _(
+ "It carries food bundled up in its tail.\n"
+ "There was a famous explorer who\n"
+ "managed to scale Mt. Everest thanks\n"
+ "to a DELIBIRD sharing its food.");
+
+const u8 gMantinePokedexText[] = _(
+ "On sunny days, schools of MANTINE can be\n"
+ "seen elegantly leaping over the waves.\n"
+ "It is not bothered by the REMORAID that\n"
+ "hitches rides.");
+
+const u8 gSkarmoryPokedexText[] = _(
+ "A POKéMON that has a body and wings of\n"
+ "steel. People in the past used feathers\n"
+ "fallen from SKARMORY to make swords and\n"
+ "knives.");
+
+const u8 gHoundourPokedexText[] = _(
+ "HOUNDOUR communicate with each other\n"
+ "using a variety of cries to corner their\n"
+ "prey. This POKéMON’s remarkable teamwork\n"
+ "is simply unparalleled.");
+
+const u8 gHoundoomPokedexText[] = _(
+ "In a HOUNDOOM pack, the one with its horns\n"
+ "raked sharply back serves a leadership\n"
+ "role. They choose their leader by fighting\n"
+ "among themselves.");
+
+const u8 gKingdraPokedexText[] = _(
+ "It sleeps quietly, deep on the seafloor.\n"
+ "When it comes up to the surface, it\n"
+ "creates a huge whirlpool that can swallow\n"
+ "even ships.");
+
+const u8 gPhanpyPokedexText[] = _(
+ "PHANPY’s big ears serve as broad fans.\n"
+ "When it becomes hot, it flaps the ears\n"
+ "busily to cool down. Even the young are\n"
+ "very strong.");
+
+const u8 gDonphanPokedexText[] = _(
+ "A DONPHAN is so strong it can easily haul\n"
+ "a dump truck. Its hide has toughened to a\n"
+ "rock-hard state. An ordinary sort of\n"
+ "attack won’t even leave a scratch.");
+
+const u8 gPorygon2PokedexText[] = _(
+ "It was created by humans using the power\n"
+ "of science. It has been given artificial\n"
+ "intelligence that enables it to learn new\n"
+ "gestures and emotions on its own.");
+
+const u8 gStantlerPokedexText[] = _(
+ "STANTLER’s magnificent antlers were\n"
+ "once traded at high prices as works of art.\n"
+ "As a result, this POKéMON was hunted\n"
+ "close to extinction.");
+
+const u8 gSmearglePokedexText[] = _(
+ "A SMEARGLE marks its territory using a\n"
+ "fluid that leaks out from the tip of its\n"
+ "tail. About 5,000 different marks left by\n"
+ "this POKéMON have been found.");
+
+const u8 gTyroguePokedexText[] = _(
+ "TYROGUE become stressed out if they do\n"
+ "not get to train every day. When raising\n"
+ "this POKéMON, the TRAINER must establish\n"
+ "a regular training schedule.");
+
+const u8 gHitmontopPokedexText[] = _(
+ "Its technique of kicking while spinning is\n"
+ "a remarkable mix of both offense and\n"
+ "defense. HITMONTOP travel faster\n"
+ "spinning than they do walking.");
+
+const u8 gSmoochumPokedexText[] = _(
+ "It actively runs about, but also falls\n"
+ "often. Whenever it falls, it will check its\n"
+ "reflection on a lake’s surface to make\n"
+ "sure its face hasn’t become dirty.");
+
+const u8 gElekidPokedexText[] = _(
+ "If it touches metal and discharges the\n"
+ "electricity it has stored in its body, an\n"
+ "ELEKID begins swinging its arms in circles\n"
+ "to recharge itself.");
+
+const u8 gMagbyPokedexText[] = _(
+ "If a MAGBY is spouting yellow flames from\n"
+ "its mouth, it is in good health. When it is\n"
+ "fatigued, black smoke will be mixed in with\n"
+ "the flames.");
+
+const u8 gMiltankPokedexText[] = _(
+ "It gives over five gallons of milk daily.\n"
+ "Its sweet milk is enjoyed by children and\n"
+ "grown-ups alike. People who can’t drink\n"
+ "milk turn it into yogurt and eat it instead.");
+
+const u8 gBlisseyPokedexText[] = _(
+ "If it senses sadness with its fluffy fur,\n"
+ "a BLISSEY will rush over to the sad person,\n"
+ "however far away, to share an egg of\n"
+ "happiness that brings a smile to any face.");
+
+const u8 gRaikouPokedexText[] = _(
+ "RAIKOU embodies the speed of lightning.\n"
+ "Its roars send shock waves shuddering\n"
+ "through the air and ground as if\n"
+ "lightning bolts were crashing down.");
+
+const u8 gEnteiPokedexText[] = _(
+ "ENTEI embodies the passion of magma.\n"
+ "It is thought to have been born in the\n"
+ "eruption of a volcano. It blasts fire that\n"
+ "consumes all that it touches.");
+
+const u8 gSuicunePokedexText[] = _(
+ "SUICUNE embodies the compassion of\n"
+ "a pure spring of water. It runs across\n"
+ "the land with gliding elegance. It has the\n"
+ "power to purify dirty water.");
+
+const u8 gLarvitarPokedexText[] = _(
+ "A LARVITAR is born deep under the ground.\n"
+ "It must eat its way through the soil above\n"
+ "and reach the surface for it to see its\n"
+ "parents’ faces.");
+
+const u8 gPupitarPokedexText[] = _(
+ "A PUPITAR creates a gas inside its body\n"
+ "that it ejects under compression to propel\n"
+ "itself like a jet. Its body can withstand\n"
+ "a collision with solid steel.");
+
+const u8 gTyranitarPokedexText[] = _(
+ "A TYRANITAR is so overwhelmingly powerful,\n"
+ "it can bring down a whole mountain to make\n"
+ "its nest. It roams in mountains seeking\n"
+ "new opponents to fight.");
+
+const u8 gLugiaPokedexText[] = _(
+ "LUGIA is so powerful even a light\n"
+ "fluttering of its wings can blow apart\n"
+ "houses. As a result, it chooses to live out\n"
+ "of sight deep under the sea.");
+
+const u8 gHoOhPokedexText[] = _(
+ "Its feathers--which glow in seven colors\n"
+ "depending on the angle at which they are\n"
+ "struck by light--are thought to bring joy.\n"
+ "It is said to live at the foot of a rainbow.");
+
+const u8 gCelebiPokedexText[] = _(
+ "This POKéMON came from the future by\n"
+ "crossing over time. It is thought that so\n"
+ "long as CELEBI appears, a bright and\n"
+ "shining future awaits us.");
+
+const u8 gTreeckoPokedexText[] = _(
+ "It makes its nest in a giant tree in the\n"
+ "forest. It ferociously guards against\n"
+ "anything nearing its territory. It is said\n"
+ "to be the protector of the forest’s trees.");
+
+const u8 gGrovylePokedexText[] = _(
+ "Leaves grow out of this POKéMON’s body.\n"
+ "They help obscure a GROVYLE from the eyes\n"
+ "of its enemies while it is in a thickly\n"
+ "overgrown forest.");
+
+const u8 gSceptilePokedexText[] = _(
+ "In the jungle, its power is without equal.\n"
+ "This POKéMON carefully grows trees and\n"
+ "plants. It regulates its body temperature\n"
+ "by basking in sunlight.");
+
+const u8 gTorchicPokedexText[] = _(
+ "If attacked, it strikes back by spitting\n"
+ "balls of fire it forms in its stomach.\n"
+ "A TORCHIC dislikes darkness because it\n"
+ "can’t see its surroundings.");
+
+const u8 gCombuskenPokedexText[] = _(
+ "It lashes out with 10 kicks per second.\n"
+ "Its strong fighting instinct compels it\n"
+ "to keep up its offensive until the\n"
+ "opponent gives up.");
+
+const u8 gBlazikenPokedexText[] = _(
+ "It learns martial arts that use punches\n"
+ "and kicks. Every several years, its old\n"
+ "feathers burn off, and new, supple\n"
+ "feathers grow back in their place.");
+
+const u8 gMudkipPokedexText[] = _(
+ "On land, it can powerfully lift large\n"
+ "boulders by planting its four feet and\n"
+ "heaving. It sleeps by burying itself in soil\n"
+ "at the water’s edge.");
+
+const u8 gMarshtompPokedexText[] = _(
+ "Its toughened hind legs enable it to stand\n"
+ "upright. Because it weakens if its skin\n"
+ "dries out, it replenishes fluids by playing\n"
+ "in mud.");
+
+const u8 gSwampertPokedexText[] = _(
+ "If it senses the approach of a storm and\n"
+ "a tidal wave, it protects its seaside nest\n"
+ "by piling up boulders. It swims as fast as\n"
+ "a jet ski.");
+
+const u8 gPoochyenaPokedexText[] = _(
+ "It savagely threatens foes with bared\n"
+ "fangs. It chases after fleeing targets\n"
+ "tenaciously. It turns tail and runs,\n"
+ "however, if the foe strikes back.");
+
+const u8 gMightyenaPokedexText[] = _(
+ "In the wild, MIGHTYENA live in a pack.\n"
+ "They never defy their leader’s orders.\n"
+ "They defeat foes with perfectly\n"
+ "coordinated teamwork.");
+
+const u8 gZigzagoonPokedexText[] = _(
+ "Rubbing its nose against the ground, it\n"
+ "always wanders about back and forth in\n"
+ "search of something. It is distinguished\n"
+ "by the zigzag footprints it leaves.");
+
+const u8 gLinoonePokedexText[] = _(
+ "It is exceedingly fast if it only has to run\n"
+ "in a straight line. When it spots pond-\n"
+ "dwelling prey underwater, it quickly leaps\n"
+ "in and catches it with its sharp claws.");
+
+const u8 gWurmplePokedexText[] = _(
+ "It sticks to tree branches and eats\n"
+ "leaves. The thread it spits from its mouth,\n"
+ "which becomes gooey when it touches\n"
+ "air, slows the movement of its foes.");
+
+const u8 gSilcoonPokedexText[] = _(
+ "It prepares for evolution using the\n"
+ "energy it stored while it was a WURMPLE.\n"
+ "It keeps watch over the surroundings with\n"
+ "its two eyes.");
+
+const u8 gBeautiflyPokedexText[] = _(
+ "Its colorfully patterned wings are its\n"
+ "most prominent feature. It flies through\n"
+ "flower-covered fields collecting pollen.\n"
+ "It attacks ferociously when angered.");
+
+const u8 gCascoonPokedexText[] = _(
+ "To avoid detection by its enemies, it hides\n"
+ "motionlessly beneath large leaves and in\n"
+ "the gaps of branches. It also attaches\n"
+ "dead leaves to its body for camouflage.");
+
+const u8 gDustoxPokedexText[] = _(
+ "It is a nocturnal POKéMON that flies from\n"
+ "fields and mountains to the attraction of\n"
+ "streetlights at night. It looses highly\n"
+ "toxic powder from its wings.");
+
+const u8 gLotadPokedexText[] = _(
+ "This POKéMON lives in ponds with clean\n"
+ "water. It is known to ferry small POKéMON\n"
+ "across ponds by carrying them on the\n"
+ "broad leaf on its head.");
+
+const u8 gLombrePokedexText[] = _(
+ "In the evening, it takes great delight in\n"
+ "popping out of rivers and startling people.\n"
+ "It feeds on aquatic moss that grows on\n"
+ "rocks in the riverbed.");
+
+const u8 gLudicoloPokedexText[] = _(
+ "When it hears festive music, all the cells\n"
+ "in its body become stimulated, and it\n"
+ "begins moving in rhythm. It does not\n"
+ "quail even when it faces a tough opponent.");
+
+const u8 gSeedotPokedexText[] = _(
+ "It hangs off branches and absorbs\n"
+ "nutrients. When it finishes eating, its\n"
+ "body becomes so heavy that it drops to\n"
+ "the ground with a thump.");
+
+const u8 gNuzleafPokedexText[] = _(
+ "A forest-dwelling POKéMON that is skilled\n"
+ "at climbing trees. Its long and pointed\n"
+ "nose is its weak point. It loses power if\n"
+ "the nose is gripped.");
+
+const u8 gShiftryPokedexText[] = _(
+ "It is said to arrive on chilly, wintry winds.\n"
+ "Feared from long ago as the guardian of\n"
+ "forests, this POKéMON lives in a deep\n"
+ "forest where people do not venture.");
+
+const u8 gTaillowPokedexText[] = _(
+ "Although it is small, it is very courageous.\n"
+ "It will take on a larger SKARMORY on an\n"
+ "equal footing. However, its will weakens if\n"
+ "it becomes hungry.");
+
+const u8 gSwellowPokedexText[] = _(
+ "A SWELLOW dives upon prey from far above.\n"
+ "It never misses its targets. It takes to\n"
+ "the skies in search of lands with a warm\n"
+ "climate.");
+
+const u8 gWingullPokedexText[] = _(
+ "It makes its nest on a sheer cliff at the\n"
+ "edge of the sea. It has trouble keeping\n"
+ "its wings flapping in flight. Instead, it\n"
+ "soars on updrafts.");
+
+const u8 gPelipperPokedexText[] = _(
+ "It skims the tops of waves as it flies.\n"
+ "When it spots prey, it uses its large beak\n"
+ "to scoop up the victim with water.\n"
+ "It protects its eggs in its beak.");
+
+const u8 gRaltsPokedexText[] = _(
+ "A RALTS has the power to sense the\n"
+ "emotions of people and POKéMON with the\n"
+ "horns on its head. It takes cover if it\n"
+ "senses any hostility.");
+
+const u8 gKirliaPokedexText[] = _(
+ "A KIRLIA has the psychic power to create \n"
+ "a rip in the dimensions and see into the\n"
+ "future. It is said to dance with pleasure\n"
+ "on sunny mornings.");
+
+const u8 gGardevoirPokedexText[] = _(
+ "It apparently does not feel the pull of\n"
+ "gravity because it supports itself with\n"
+ "psychic power. It will give its life to\n"
+ "protect its TRAINER.");
+
+const u8 gSurskitPokedexText[] = _(
+ "They gather on puddles after evening\n"
+ "downpours, gliding across the surface\n"
+ "of water as if sliding. It secretes honey\n"
+ "with a sweet aroma from its head.");
+
+const u8 gMasquerainPokedexText[] = _(
+ "It intimidates foes with the large eyelike\n"
+ "patterns on its antennae. Because it can’t\n"
+ "fly if its wings get wet, it shelters itself\n"
+ "from rain under large trees and eaves.");
+
+const u8 gShroomishPokedexText[] = _(
+ "It loves to eat damp, composted soil in\n"
+ "forests. If you enter a forest after a\n"
+ "long rain, you can see many SHROOMISH\n"
+ "feasting on composted soil.");
+
+const u8 gBreloomPokedexText[] = _(
+ "It scatters spores from holes in the cap\n"
+ "on its head. It loves warm and humid\n"
+ "climates. It feeds on trees and plants in\n"
+ "fields and forests.");
+
+const u8 gSlakothPokedexText[] = _(
+ "It sleeps virtually all day and night long.\n"
+ "It doesn’t change its nest its entire life,\n"
+ "but it sometimes travels great distances\n"
+ "by swimming in rivers.");
+
+const u8 gVigorothPokedexText[] = _(
+ "It can’t keep still because its blood boils\n"
+ "with energy. It runs through the fields\n"
+ "and mountains all day to calm itself. If it\n"
+ "doesn’t, it can’t sleep at night.");
+
+const u8 gSlakingPokedexText[] = _(
+ "Hordes of SLAKING gather around trees\n"
+ "when fruits come into season. They wait\n"
+ "around patiently for ripened fruits to fall\n"
+ "out of the trees.");
+
+const u8 gNincadaPokedexText[] = _(
+ "It makes its nest at the roots of a mighty\n"
+ "tree. Using its whiskerlike antennae, it\n"
+ "probes its surroundings in the\n"
+ "pitch-black darkness of soil.");
+
+const u8 gNinjaskPokedexText[] = _(
+ "Because it darts about vigorously at high\n"
+ "speed, it is very difficult to see. Hearing\n"
+ "its distinctive cries for too long induces\n"
+ "a headache.");
+
+const u8 gShedinjaPokedexText[] = _(
+ "A peculiar POKéMON that floats in air even\n"
+ "though its wings remain completely still.\n"
+ "The inside of its body is hollow and\n"
+ "utterly dark.");
+
+const u8 gWhismurPokedexText[] = _(
+ "Its cries equal a jet plane in volume.\n"
+ "It inhales through its ear canals. Because\n"
+ "of this system, it can cry continually\n"
+ "without having to catch its breath.");
+
+const u8 gLoudredPokedexText[] = _(
+ "It positions the round speakers on its\n"
+ "head to assail foes with ultrasonic waves\n"
+ "at massive volume. It builds power by\n"
+ "stomping the ground.");
+
+const u8 gExploudPokedexText[] = _(
+ "It has sound-generating organs all over\n"
+ "its body. It communicates with others by\n"
+ "adjusting the tone and volume of the cries\n"
+ "it emits.");
+
+const u8 gMakuhitaPokedexText[] = _(
+ "It loves to toughen up its body above all\n"
+ "else. If you hear quaking rumbles in a cave,\n"
+ "it is the sound of MAKUHITA undertaking\n"
+ "strenuous training.");
+
+const u8 gHariyamaPokedexText[] = _(
+ "It has the habit of challenging others\n"
+ "without hesitation to tests of strength.\n"
+ "It’s been known to stand on train tracks\n"
+ "and stop trains using forearm thrusts.");
+
+const u8 gAzurillPokedexText[] = _(
+ "Its tail, which is packed with nutrition,\n"
+ "is very bouncy like a rubber ball. On sunny\n"
+ "days they gather at the edge of water and\n"
+ "splash about for fun.");
+
+const u8 gNosepassPokedexText[] = _(
+ "Its body emits a powerful magnetism.\n"
+ "It feeds on prey that is pulled in by the\n"
+ "force. Its magnetism is stronger in cold\n"
+ "seasons.");
+
+const u8 gSkittyPokedexText[] = _(
+ "A SKITTY’s adorably cute behavior makes it\n"
+ "highly popular. In battle, it makes its tail\n"
+ "puff out. It threatens foes with a sharp\n"
+ "growl.");
+
+const u8 gDelcattyPokedexText[] = _(
+ "Rather than keeping a permanent lair,\n"
+ "it habitually seeks comfortable spots and\n"
+ "sleeps there. It is nocturnal and becomes\n"
+ "active at dusk.");
+
+const u8 gSableyePokedexText[] = _(
+ "It digs branching holes in caves using its\n"
+ "sharp claws in search of food--raw gems.\n"
+ "A SABLEYE lurks in darkness and is seen\n"
+ "only rarely.");
+
+const u8 gMawilePokedexText[] = _(
+ "Its giant jaws are actually steel horns\n"
+ "that transformed. It fools foes into\n"
+ "complacency with its adorable gestures,\n"
+ "then chomps them with its huge jaws.");
+
+const u8 gAronPokedexText[] = _(
+ "A POKéMON that is clad in steel armor.\n"
+ "A new suit of armor is made when it evolves.\n"
+ "The old, discarded armor is salvaged as\n"
+ "metal for making iron products.");
+
+const u8 gLaironPokedexText[] = _(
+ "When two LAIRON meet in the wild, they\n"
+ "fight for territory by bashing into each\n"
+ "other with their steel bodies. The sound\n"
+ "of their collision carries for miles.");
+
+const u8 gAggronPokedexText[] = _(
+ "Its iron horns grow longer a little at\n"
+ "a time. They are used to determine the\n"
+ "AGGRON’s age. The gouges in its armor are\n"
+ "worn with pride as mementos from battles.");
+
+const u8 gMedititePokedexText[] = _(
+ "It continually meditates for hours every\n"
+ "day. As a result of rigorous and dedicated\n"
+ "yoga training, it has tempered its\n"
+ "spiritual power so much it can fly.");
+
+const u8 gMedichamPokedexText[] = _(
+ "Through crushingly harsh yoga training, it\n"
+ "gained the power to foretell its foe’s\n"
+ "actions. It battles with elegant, dance-\n"
+ "like movement.");
+
+const u8 gElectrikePokedexText[] = _(
+ "It generates electricity using friction\n"
+ "from the atmosphere. In seasons with\n"
+ "especially arid air, its entire body blazes\n"
+ "with violent showers of sparks.");
+
+const u8 gManectricPokedexText[] = _(
+ "Because lightning falls in their vicinities,\n"
+ "MANECTRIC were thought to have been born\n"
+ "from lightning. In battle, they create\n"
+ "thunderclouds.");
+
+const u8 gPluslePokedexText[] = _(
+ "It has the trait of cheering on its fellow\n"
+ "POKéMON. By shorting out the electricity\n"
+ "it releases from its paws, it creates\n"
+ "pom-poms for cheering.");
+
+const u8 gMinunPokedexText[] = _(
+ "At a meeting of POKéMON academics, it was\n"
+ "announced that simultaneous exposure to\n"
+ "electricity from a PLUSLE and MINUN will\n"
+ "promote circulation and boost vitality.");
+
+const u8 gVolbeatPokedexText[] = _(
+ "With their taillights lit, VOLBEAT fly in\n"
+ "a swarm, drawing geometric designs in the\n"
+ "night sky. They move their nests if their\n"
+ "pond water becomes dirty.");
+
+const u8 gIllumisePokedexText[] = _(
+ "A nocturnal POKéMON that becomes active\n"
+ "upon nightfall. It leads a VOLBEAT swarm\n"
+ "to draw patterns in the night sky. Over 200\n"
+ "different patterns have been confirmed.");
+
+const u8 gRoseliaPokedexText[] = _(
+ "A ROSELIA that drinks nutritionally rich\n"
+ "springwater blooms with lovely flowers.\n"
+ "The fragrance of its flowers has the\n"
+ "effect of making its foes careless.");
+
+const u8 gGulpinPokedexText[] = _(
+ "This POKéMON’s stomach fluid can even\n"
+ "digest scrap iron. In one gulp, it can\n"
+ "swallow something that is as large as\n"
+ "itself.");
+
+const u8 gSwalotPokedexText[] = _(
+ "Its powerful stomach acid is capable of\n"
+ "digesting almost anything. The one thing\n"
+ "in the whole world a SWALOT can’t digest is\n"
+ "its own stomach.");
+
+const u8 gCarvanhaPokedexText[] = _(
+ "CARVANHA attack ships in swarms, making\n"
+ "them sink. Although it is said to be a very\n"
+ "vicious POKéMON, it timidly flees as soon\n"
+ "as it finds itself alone.");
+
+const u8 gSharpedoPokedexText[] = _(
+ "The vicious and sly gangster of the sea.\n"
+ "Its skin is specially textured to minimize\n"
+ "drag in water. Its speed tops out at over\n"
+ "75 miles per hour.");
+
+const u8 gWailmerPokedexText[] = _(
+ "While this POKéMON usually lives in the sea,\n"
+ "it can survive on land, although not too\n"
+ "long. It loses vitality if its body becomes\n"
+ "dried out.");
+
+const u8 gWailordPokedexText[] = _(
+ "It breathes through nostrils that it\n"
+ "raises above the sea. By inhaling to its\n"
+ "maximum capacity, a WAILORD can dive close\n"
+ "to 10,000 feet beneath the waves.");
+
+const u8 gNumelPokedexText[] = _(
+ "A NUMEL stores boiling magma in the hump\n"
+ "on its back. It is a hardy POKéMON that can\n"
+ "transport a 220-pound load. It has served\n"
+ "humans at work since long ago.");
+
+const u8 gCameruptPokedexText[] = _(
+ "A POKéMON that lives in the crater of\n"
+ "a volcano. Every 10 years, the volcanoes\n"
+ "on its back erupt violently. Research is\n"
+ "under way on the cause of eruption.");
+
+const u8 gTorkoalPokedexText[] = _(
+ "It battles using energy it gets from\n"
+ "burning coal. When loosing smoke from its\n"
+ "nostrils, it lets off a sound that is\n"
+ "similar to a locomotive’s horn.");
+
+const u8 gSpoinkPokedexText[] = _(
+ "A POKéMON that manipulates psychic power\n"
+ "at will. It doesn’t stop bouncing even when\n"
+ "it is asleep. It loves eating mushrooms\n"
+ "that grow underground.");
+
+const u8 gGrumpigPokedexText[] = _(
+ "It stores power in the black pearls on its\n"
+ "forehead. When it uses psychic power, it\n"
+ "performs an odd dance step. Its style of\n"
+ "dancing became hugely popular overseas.");
+
+const u8 gSpindaPokedexText[] = _(
+ "It is distinguished by a pattern of\n"
+ "spots that is always different. Its\n"
+ "unsteady, tottering walk has the\n"
+ "effect of fouling its foe’s aim.");
+
+const u8 gTrapinchPokedexText[] = _(
+ "Its big jaws crunch through boulders.\n"
+ "Because its head is so big, it has a hard\n"
+ "time getting back upright if it tips over\n"
+ "onto its back.");
+
+const u8 gVibravaPokedexText[] = _(
+ "It looses ultrasonic waves by rubbing its\n"
+ "wings together. Since a VIBRAVA’s wings\n"
+ "are still in the process of growing, it can\n"
+ "only fly short distances.");
+
+const u8 gFlygonPokedexText[] = _(
+ "The flapping of its wings sounds like\n"
+ "singing. To prevent detection by enemies,\n"
+ "it hides itself by flapping up a cloud of\n"
+ "desert sand.");
+
+const u8 gCacneaPokedexText[] = _(
+ "CACNEA live in deserts with virtually no\n"
+ "rainfall. It battles by swinging its thick,\n"
+ "spiked arms. Once a year, a yellow flower\n"
+ "blooms.");
+
+const u8 gCacturnePokedexText[] = _(
+ "After spending thousands of years in\n"
+ "harsh deserts, its blood transformed into\n"
+ "the same substances as sand. It is\n"
+ "nocturnal, so it hunts at night.");
+
+const u8 gSwabluPokedexText[] = _(
+ "A POKéMON that has wings like cottony\n"
+ "clouds. After enduring winter, in which\n"
+ "little food is available, SWABLU flocks\n"
+ "move closer to towns in the spring.");
+
+const u8 gAltariaPokedexText[] = _(
+ "It hums in a beautiful soprano voice.\n"
+ "It flies among white clouds in the blue\n"
+ "sky. It launches intensely hot fireballs\n"
+ "from its mouth.");
+
+const u8 gZangoosePokedexText[] = _(
+ "When it battles, it stands on its hind legs\n"
+ "and attacks with its sharply clawed\n"
+ "forelegs. Its fur bristles if it encounters\n"
+ "any SEVIPER.");
+
+const u8 gSeviperPokedexText[] = _(
+ "SEVIPER and ZANGOOSE are eternal rivals.\n"
+ "It counters a ZANGOOSE’s dazzling agility\n"
+ "with its swordlike tail, which also oozes\n"
+ "a horrible poison.");
+
+const u8 gLunatonePokedexText[] = _(
+ "It becomes very active on the night of\n"
+ "a full moon. This POKéMON was first\n"
+ "discovered 40 years ago at the site of\n"
+ "a meteor strike.");
+
+const u8 gSolrockPokedexText[] = _(
+ "Solar energy is the source of this \n"
+ "POKéMON’s power. On sunny days, groups of\n"
+ "SOLROCK line up facing the sun and absorb\n"
+ "its light.");
+
+const u8 gBarboachPokedexText[] = _(
+ "Its body is covered with a slimy film.\n"
+ "The film acts as a barrier to prevent germs\n"
+ "in muddy water from entering the\n"
+ "BARBOACH’s body.");
+
+const u8 gWhiscashPokedexText[] = _(
+ "Mysteriously, it can foretell earthquakes.\n"
+ "In the daytime, it sleeps in mud at the\n"
+ "bottom of a pond. When it awakens, it\n"
+ "continually feeds throughout the night.");
+
+const u8 gCorphishPokedexText[] = _(
+ "Once it grips prey with its large pincers,\n"
+ "it will never let go, no matter what.\n"
+ "It is a hardy POKéMON that can thrive\n"
+ "in any environment.");
+
+const u8 gCrawdauntPokedexText[] = _(
+ "A brutish POKéMON that loves to battle.\n"
+ "A veteran CRAWDAUNT that has prevailed in\n"
+ "hundreds of battles has giant pincers\n"
+ "marked with countless scars.");
+
+const u8 gBaltoyPokedexText[] = _(
+ "A BALTOY moves by spinning on its single\n"
+ "foot. It has been depicted in murals \n"
+ "adorning the walls of a once-bustling city\n"
+ "in an ancient age.");
+
+const u8 gClaydolPokedexText[] = _(
+ "A CLAYDOL sleeps while hovering in midair.\n"
+ "Its arms are separate from its body.\n"
+ "They are kept floating by the POKéMON’s\n"
+ "manipulation of psychic power.");
+
+const u8 gLileepPokedexText[] = _(
+ "It disguises itself as seaweed by making\n"
+ "its tentacles sway. Unsuspecting prey\n"
+ "that come too close are swallowed whole.\n"
+ "It became extinct 100 million years ago.");
+
+const u8 gCradilyPokedexText[] = _(
+ "It drags its heavy body along the\n"
+ "seafloor. It makes its nest in the shallows\n"
+ "of warm seas. CRADILY can be seen on\n"
+ "beaches when the tide goes out.");
+
+const u8 gAnorithPokedexText[] = _(
+ "It was resurrected from a fossil using the\n"
+ "power of science. It swims by undulating\n"
+ "the eight wings at its sides. They were\n"
+ "feet that adapted to life in the sea.");
+
+const u8 gArmaldoPokedexText[] = _(
+ "ARMALDO usually lives on land. However,\n"
+ "when it hunts for prey, it dives beneath\n"
+ "the ocean. It swims around using its two\n"
+ "large wings.");
+
+const u8 gFeebasPokedexText[] = _(
+ "FEEBAS live in ponds that are heavily\n"
+ "infested with weeds. Because of its\n"
+ "hopelessly shabby appearance, it\n"
+ "seems as if few TRAINERS raise it.");
+
+const u8 gMiloticPokedexText[] = _(
+ "It is said to live at the bottom of\n"
+ "large lakes. Considered to be the most\n"
+ "beautiful of all POKéMON, it has been\n"
+ "depicted in paintings and statues.");
+
+const u8 gCastformPokedexText[] = _(
+ "It alters its form depending on the\n"
+ "weather. Changes in the climate such as\n"
+ "the temperature and humidity appear to\n"
+ "affect its cellular structure.");
+
+const u8 gKecleonPokedexText[] = _(
+ "A POKéMON that has the ability to alter its\n"
+ "body colors to match its surroundings.\n"
+ "A KECLEON reverts to its original colors if\n"
+ "it is startled.");
+
+const u8 gShuppetPokedexText[] = _(
+ "This POKéMON roams about deep in the\n"
+ "night seeking such negative emotions as\n"
+ "grudges and envy. It retreats to its nest\n"
+ "when the sun begins to rise.");
+
+const u8 gBanettePokedexText[] = _(
+ "An abandoned plush doll became this\n"
+ "POKéMON. They are said to live in garbage\n"
+ "dumps and wander about in search of the\n"
+ "children that threw them away.");
+
+const u8 gDuskullPokedexText[] = _(
+ "A glare from its single scarlet eye makes\n"
+ "even burly grown-ups freeze in utter fear.\n"
+ "It is a nocturnal POKéMON that roams\n"
+ "about under the cloak of darkness.");
+
+const u8 gDusclopsPokedexText[] = _(
+ "It is thought that its body is hollow with\n"
+ "only a spectral ball of fire burning inside.\n"
+ "However, no one has been able to\n"
+ "confirm this theory as fact.");
+
+const u8 gTropiusPokedexText[] = _(
+ "It flies by flapping its broad leaves.\n"
+ "The bunch of fruit that grows around its\n"
+ "neck is deliciously sweet. In the spring,\n"
+ "it scatters pollen from its neck.");
+
+const u8 gChimechoPokedexText[] = _(
+ "They fly about very actively when the hot\n"
+ "season arrives. They communicate among\n"
+ "themselves using seven different and\n"
+ "distinguishing cries.");
+
+const u8 gAbsolPokedexText[] = _(
+ "It sharply senses even subtle changes in\n"
+ "the sky and the land to predict natural\n"
+ "disasters. It is a long-lived POKéMON that\n"
+ "has a life-span of 100 years.");
+
+const u8 gWynautPokedexText[] = _(
+ "A WYNAUT loves to eat sweet fruits.\n"
+ "It cleverly picks fruits using its earlike\n"
+ "arms. They gather in fruit gardens, drawn\n"
+ "by the fragrance.");
+
+const u8 gSnoruntPokedexText[] = _(
+ "They tend to move about in groups of\n"
+ "around five SNORUNT. In snowy regions,\n"
+ "it is said that when they are seen late at\n"
+ "night, snowfall will arrive by morning.");
+
+const u8 gGlaliePokedexText[] = _(
+ "A GLALIE has the power to instantaneously\n"
+ "freeze moisture in the atmosphere.\n"
+ "A dazzling cloud of diamondlike ice\n"
+ "crystals forms around its body.");
+
+const u8 gSphealPokedexText[] = _(
+ "It is completely covered with plushy fur.\n"
+ "As a result, it never feels the cold even\n"
+ "when it is rolling about on ice floes or\n"
+ "diving in the sea.");
+
+const u8 gSealeoPokedexText[] = _(
+ "SEALEO live in herds on ice floes. Using its\n"
+ "powerful flippers, it shatters ice.\n"
+ "It dives into the sea to hunt prey five\n"
+ "times a day.");
+
+const u8 gWalreinPokedexText[] = _(
+ "To protect its herd, the leader battles\n"
+ "anything that invades its territory, even\n"
+ "at the cost of its life. Its tusks may snap\n"
+ "off in battle.");
+
+const u8 gClamperlPokedexText[] = _(
+ "A CLAMPERL slams its shell closed on prey\n"
+ "to prevent escape. The pearl it creates\n"
+ "upon evolution is said to be infused with\n"
+ "a mysterious energy.");
+
+const u8 gHuntailPokedexText[] = _(
+ "To withstand the crushing pressure of\n"
+ "water deep under the sea, its spine is very\n"
+ "thick and sturdy. Its tail, which is shaped\n"
+ "like a small fish, has eyes that light up.");
+
+const u8 gGorebyssPokedexText[] = _(
+ "A GOREBYSS siphons the body fluids of prey\n"
+ "through its thin, tubular mouth. Its light\n"
+ "pink body color turns vivid when it\n"
+ "finishes feeding.");
+
+const u8 gRelicanthPokedexText[] = _(
+ "A POKéMON that was once believed to have\n"
+ "been extinct. The species has not changed\n"
+ "its form for 100 million years. It walks on\n"
+ "the seafloor using its pectoral fins.");
+
+const u8 gLuvdiscPokedexText[] = _(
+ "LUVDISC make the branches of CORSOLA\n"
+ "their nests. There is a custom from long\n"
+ "ago of giving a LUVDISC as a gift to\n"
+ "express one’s feelings of love.");
+
+const u8 gBagonPokedexText[] = _(
+ "Although it is small, this POKéMON is very\n"
+ "powerful because its body is a bundle of\n"
+ "muscles. It launches head-butts with its\n"
+ "ironlike skull.");
+
+const u8 gShelgonPokedexText[] = _(
+ "It hardly eats while it awaits evolution.\n"
+ "It becomes hardier by enduring hunger.\n"
+ "Its shell peels off the instant it begins\n"
+ "to evolve.");
+
+const u8 gSalamencePokedexText[] = _(
+ "After many long years, its cellular\n"
+ "structure underwent a sudden mutation to\n"
+ "grow wings. When angered, it loses all\n"
+ "thought and rampages out of control.");
+
+const u8 gBeldumPokedexText[] = _(
+ "When BELDUM gather in a swarm, they move\n"
+ "in perfect unison as if they were but one\n"
+ "POKéMON. They communicate with each other\n"
+ "using brain waves.");
+
+const u8 gMetangPokedexText[] = _(
+ "The claws tipping its arms pack the\n"
+ "destructive power to tear through thick\n"
+ "iron sheets as if they were silk. It flies\n"
+ "at over 60 miles per hour.");
+
+const u8 gMetagrossPokedexText[] = _(
+ "METAGROSS has four brains that are joined\n"
+ "by a complex neural network. As a result of\n"
+ "integration, this POKéMON is smarter than\n"
+ "a supercomputer.");
+
+const u8 gRegirockPokedexText[] = _(
+ "A POKéMON that is made entirely of rocks\n"
+ "and boulders. If parts of its body chip off\n"
+ "in battle, REGIROCK repairs itself by\n"
+ "adding new rocks.");
+
+const u8 gRegicePokedexText[] = _(
+ "Its entire body is made of Antarctic ice.\n"
+ "After extensive studies, researchers\n"
+ "believe the ice was formed during an\n"
+ "ice age.");
+
+const u8 gRegisteelPokedexText[] = _(
+ "Its body is harder than any other kind of\n"
+ "metal. The body metal is composed of a\n"
+ "mysterious substance. Not only is it hard,\n"
+ "it shrinks and stretches flexibly.");
+
+const u8 gLatiasPokedexText[] = _(
+ "They make a small herd of only several\n"
+ "members. They rarely make contact with\n"
+ "people or other POKéMON. They disappear\n"
+ "if they sense enemies.");
+
+const u8 gLatiosPokedexText[] = _(
+ "Even in hiding, it can detect the locations\n"
+ "of others and sense their emotions since\n"
+ "it has telepathy. Its intelligence allows\n"
+ "it to understand human languages.");
+
+const u8 gKyogrePokedexText[] = _(
+ "KYOGRE has appeared in mythology as the\n"
+ "creator of the sea. After long years of\n"
+ "feuding with GROUDON, it took to sleep at\n"
+ "the bottom of the sea.");
+
+const u8 gGroudonPokedexText[] = _(
+ "GROUDON has appeared in mythology as the\n"
+ "creator of the land. It sleeps in magma\n"
+ "underground and is said to make volcanoes\n"
+ "erupt on awakening.");
+
+const u8 gRayquazaPokedexText[] = _(
+ "A POKéMON that flies endlessly in the\n"
+ "ozone layer. It is said it would descend\n"
+ "to the ground if KYOGRE and GROUDON\n"
+ "were to fight.");
+
+const u8 gJirachiPokedexText[] = _(
+ "JIRACHI is said to make wishes come true.\n"
+ "While it sleeps, a tough crystalline shell\n"
+ "envelops the body to protect it from\n"
+ "enemies.");
+
+const u8 gDeoxysPokedexText[] = _(
+ "A POKéMON that mutated from an\n"
+ "extraterrestrial virus exposed to a laser\n"
+ "beam. Its body is configured for superior\n"
+ "agility and speed.");
diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h
index f14478863..3ad9a97c6 100644
--- a/src/data/pokemon/tmhm_learnsets.h
+++ b/src/data/pokemon/tmhm_learnsets.h
@@ -1,6 +1,3 @@
-#ifndef GUARD_TMHM_LEARNSETS_H
-#define GUARD_TMHM_LEARNSETS_H
-
#define TMHM_LEARNSET(moves) {(u32)(moves), ((u64)(moves) >> 32)}
#define TMHM(tmhm) ((u64)1 << (ITEM_##tmhm - ITEM_TM01_FOCUS_PUNCH))
@@ -9389,5 +9386,3 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(HM05_FLASH)),
};
-
-#endif // GUARD_TMHM_LEARNSETS_H
diff --git a/src/data/pokemon/trainer_class_lookups.h b/src/data/pokemon/trainer_class_lookups.h
index 02b2016c1..6e8474c12 100644
--- a/src/data/pokemon/trainer_class_lookups.h
+++ b/src/data/pokemon/trainer_class_lookups.h
@@ -1,176 +1,172 @@
-#ifndef POKEEMERALD_TRAINER_CLASS_LOOKUPS_H
-#define POKEEMERALD_TRAINER_CLASS_LOOKUPS_H
-
const u8 gFacilityClassToPicIndex[] =
{
- TRAINER_PIC_HIKER, // FACILITY_CLASS_HIKER
- TRAINER_PIC_AQUA_GRUNT_M, // FACILITY_CLASS_TEAM_AQUA_1
- TRAINER_PIC_POKEMON_BREEDER_F, // FACILITY_CLASS_PKMN_BREEDER_1
- TRAINER_PIC_COOL_TRAINER_M, // FACILITY_CLASS_COOLTRAINER_M
- TRAINER_PIC_BIRD_KEEPER, // FACILITY_CLASS_BIRD_KEEPER
- TRAINER_PIC_COLLECTOR, // FACILITY_CLASS_COLLECTOR
- TRAINER_PIC_AQUA_GRUNT_F, // FACILITY_CLASS_TEAM_AQUA_2
- TRAINER_PIC_SWIMMER_M, // FACILITY_CLASS_SWIMMER_M
- TRAINER_PIC_MAGMA_GRUNT_M, // FACILITY_CLASS_TEAM_MAGMA_1
- TRAINER_PIC_EXPERT_M, // FACILITY_CLASS_EXPERT_M
- TRAINER_PIC_BLACK_BELT, // FACILITY_CLASS_BLACK_BELT
- TRAINER_PIC_AQUA_LEADER_ARCHIE, // FACILITY_CLASS_AQUA_LEADER
- TRAINER_PIC_HEX_MANIAC, // FACILITY_CLASS_HEX_MANIAC
- TRAINER_PIC_AROMA_LADY, // FACILITY_CLASS_AROMA_LADY
- TRAINER_PIC_RUIN_MANIAC, // FACILITY_CLASS_RUIN_MANIAC
- TRAINER_PIC_INTERVIEWER, // FACILITY_CLASS_INTERVIEWER
- TRAINER_PIC_TUBER_F, // FACILITY_CLASS_TUBER_1
- TRAINER_PIC_TUBER_M, // FACILITY_CLASS_TUBER_2
- TRAINER_PIC_COOL_TRAINER_F, // FACILITY_CLASS_COOLTRAINER_F
- TRAINER_PIC_LADY, // FACILITY_CLASS_LADY
- TRAINER_PIC_BEAUTY, // FACILITY_CLASS_BEAUTY
- TRAINER_PIC_RICH_BOY, // FACILITY_CLASS_RICH_BOY
- TRAINER_PIC_EXPERT_F, // FACILITY_CLASS_EXPERT_2
- TRAINER_PIC_POKEMANIAC, // FACILITY_CLASS_POKEMANIAC
- TRAINER_PIC_MAGMA_GRUNT_F, // FACILITY_CLASS_TEAM_MAGMA_2
- TRAINER_PIC_GUITARIST, // FACILITY_CLASS_GUITARIST
- TRAINER_PIC_KINDLER, // FACILITY_CLASS_KINDLER
- TRAINER_PIC_CAMPER, // FACILITY_CLASS_CAMPER
- TRAINER_PIC_PICNICKER, // FACILITY_CLASS_PICNICKER
- TRAINER_PIC_BUG_MANIAC, // FACILITY_CLASS_BUG_MANIAC
- TRAINER_PIC_PSYCHIC_M, // FACILITY_CLASS_PSYCHIC_M
- TRAINER_PIC_PSYCHIC_F, // FACILITY_CLASS_PSYCHIC_F
- TRAINER_PIC_GENTLEMAN, // FACILITY_CLASS_GENTLEMAN
- TRAINER_PIC_ELITE_FOUR_SIDNEY, // FACILITY_CLASS_ELITE_FOUR_1
- TRAINER_PIC_ELITE_FOUR_PHOEBE, // FACILITY_CLASS_ELITE_FOUR_2
- TRAINER_PIC_LEADER_ROXANNE, // FACILITY_CLASS_LEADER_1
- TRAINER_PIC_LEADER_BRAWLY, // FACILITY_CLASS_LEADER_2
- TRAINER_PIC_LEADER_TATE_AND_LIZA, // FACILITY_CLASS_LEADER_3
- TRAINER_PIC_SCHOOL_KID_M, // FACILITY_CLASS_SCHOOL_KID_M
- TRAINER_PIC_SCHOOL_KID_F, // FACILITY_CLASS_SCHOOL_KID_F
- TRAINER_PIC_SR_AND_JR, // FACILITY_CLASS_SR_AND_JR
- TRAINER_PIC_WINSTRATE_M, // FACILITY_CLASS_POKEFAN_1
- TRAINER_PIC_WINSTRATE_F, // FACILITY_CLASS_POKEFAN_2
- TRAINER_PIC_YOUNGSTER, // FACILITY_CLASS_YOUNGSTER
- TRAINER_PIC_CHAMPION_WALLACE, // FACILITY_CLASS_CHAMPION
- TRAINER_PIC_FISHERMAN, // FACILITY_CLASS_FISHERMAN
- TRAINER_PIC_CYCLING_TRIATHLETE_M, // FACILITY_CLASS_TRIATHLETE_1
- TRAINER_PIC_CYCLING_TRIATHLETE_F, // FACILITY_CLASS_TRIATHLETE_2
- TRAINER_PIC_RUNNING_TRIATHLETE_M, // FACILITY_CLASS_TRIATHLETE_3
- TRAINER_PIC_RUNNING_TRIATHLETE_F, // FACILITY_CLASS_TRIATHLETE_4
- TRAINER_PIC_SWIMMING_TRIATHLETE_M, // FACILITY_CLASS_TRIATHLETE_5
- TRAINER_PIC_SWIMMING_TRIATHLETE_F, // FACILITY_CLASS_TRIATHLETE_6
- TRAINER_PIC_DRAGON_TAMER, // FACILITY_CLASS_DRAGON_TAMER
- TRAINER_PIC_NINJA_BOY, // FACILITY_CLASS_NINJA_BOY
- TRAINER_PIC_BATTLE_GIRL, // FACILITY_CLASS_BATTLE_GIRL
- TRAINER_PIC_PARASOL_LADY, // FACILITY_CLASS_PARASOL_LADY
- TRAINER_PIC_SWIMMER_F, // FACILITY_CLASS_SWIMMER_F
- TRAINER_PIC_TWINS, // FACILITY_CLASS_TWINS
- TRAINER_PIC_SAILOR, // FACILITY_CLASS_SAILOR
- TRAINER_PIC_WALLY, // FACILITY_CLASS_PKMN_TRAINER_1
- TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_BRENDAN
- TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_3
- TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_4
- TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_MAY
- TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_6
- TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_7
- TRAINER_PIC_POKEMON_BREEDER_M, // FACILITY_CLASS_PKMN_BREEDER_2
- TRAINER_PIC_BUG_CATCHER, // FACILITY_CLASS_BUG_CATCHER
- TRAINER_PIC_POKEMON_RANGER_M, // FACILITY_CLASS_PKMN_RANGER_M
- TRAINER_PIC_POKEMON_RANGER_F, // FACILITY_CLASS_PKMN_RANGER_F
- TRAINER_PIC_MAGMA_LEADER_MAXIE, // FACILITY_CLASS_MAGMA_LEADER
- TRAINER_PIC_LASS, // FACILITY_CLASS_LASS
- TRAINER_PIC_YOUNG_COUPLE, // FACILITY_CLASS_YOUNG_COUPLE
- TRAINER_PIC_OLD_COUPLE, // FACILITY_CLASS_OLD_COUPLE
- TRAINER_PIC_SIS_AND_BRO, // FACILITY_CLASS_SIS_AND_BRO
- TRAINER_PIC_STEVEN, // FACILITY_CLASS_PKMN_TRAINER_STEVEN
- TRAINER_PIC_SALON_MAIDEN_ANABEL, // FACILITY_CLASS_SALON_MAIDEN
- TRAINER_PIC_DOME_ACE_TUCKER, // FACILITY_CLASS_DOME_ACE
- TRAINER_PIC_RED, // FACILITY_CLASS_PKMN_TRAINER_RED
- TRAINER_PIC_LEAF, // FACILITY_CLASS_PKMN_TRAINER_LEAF
- TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_RS_BRENDAN
- TRAINER_PIC_RUBY_SAPPHIRE_MAY, // FACILITY_CLASS_PKMN_TRAINER_RS_MAY
+ [FACILITY_CLASS_HIKER] = TRAINER_PIC_HIKER,
+ [FACILITY_CLASS_AQUA_GRUNT_M] = TRAINER_PIC_AQUA_GRUNT_M,
+ [FACILITY_CLASS_POKEMON_BREEDER_F] = TRAINER_PIC_POKEMON_BREEDER_F,
+ [FACILITY_CLASS_COOLTRAINER_M] = TRAINER_PIC_COOLTRAINER_M,
+ [FACILITY_CLASS_BIRD_KEEPER] = TRAINER_PIC_BIRD_KEEPER,
+ [FACILITY_CLASS_COLLECTOR] = TRAINER_PIC_COLLECTOR,
+ [FACILITY_CLASS_AQUA_GRUNT_F] = TRAINER_PIC_AQUA_GRUNT_F,
+ [FACILITY_CLASS_SWIMMER_M] = TRAINER_PIC_SWIMMER_M,
+ [FACILITY_CLASS_MAGMA_GRUNT_M] = TRAINER_PIC_MAGMA_GRUNT_M,
+ [FACILITY_CLASS_EXPERT_M] = TRAINER_PIC_EXPERT_M,
+ [FACILITY_CLASS_BLACK_BELT] = TRAINER_PIC_BLACK_BELT,
+ [FACILITY_CLASS_AQUA_LEADER_ARCHIE] = TRAINER_PIC_AQUA_LEADER_ARCHIE,
+ [FACILITY_CLASS_HEX_MANIAC] = TRAINER_PIC_HEX_MANIAC,
+ [FACILITY_CLASS_AROMA_LADY] = TRAINER_PIC_AROMA_LADY,
+ [FACILITY_CLASS_RUIN_MANIAC] = TRAINER_PIC_RUIN_MANIAC,
+ [FACILITY_CLASS_INTERVIEWER] = TRAINER_PIC_INTERVIEWER,
+ [FACILITY_CLASS_TUBER_F] = TRAINER_PIC_TUBER_F,
+ [FACILITY_CLASS_TUBER_M] = TRAINER_PIC_TUBER_M,
+ [FACILITY_CLASS_COOLTRAINER_F] = TRAINER_PIC_COOLTRAINER_F,
+ [FACILITY_CLASS_LADY] = TRAINER_PIC_LADY,
+ [FACILITY_CLASS_BEAUTY] = TRAINER_PIC_BEAUTY,
+ [FACILITY_CLASS_RICH_BOY] = TRAINER_PIC_RICH_BOY,
+ [FACILITY_CLASS_EXPERT_F] = TRAINER_PIC_EXPERT_F,
+ [FACILITY_CLASS_POKEMANIAC] = TRAINER_PIC_POKEMANIAC,
+ [FACILITY_CLASS_MAGMA_GRUNT_F] = TRAINER_PIC_MAGMA_GRUNT_F,
+ [FACILITY_CLASS_GUITARIST] = TRAINER_PIC_GUITARIST,
+ [FACILITY_CLASS_KINDLER] = TRAINER_PIC_KINDLER,
+ [FACILITY_CLASS_CAMPER] = TRAINER_PIC_CAMPER,
+ [FACILITY_CLASS_PICNICKER] = TRAINER_PIC_PICNICKER,
+ [FACILITY_CLASS_BUG_MANIAC] = TRAINER_PIC_BUG_MANIAC,
+ [FACILITY_CLASS_PSYCHIC_M] = TRAINER_PIC_PSYCHIC_M,
+ [FACILITY_CLASS_PSYCHIC_F] = TRAINER_PIC_PSYCHIC_F,
+ [FACILITY_CLASS_GENTLEMAN] = TRAINER_PIC_GENTLEMAN,
+ [FACILITY_CLASS_ELITE_FOUR_SIDNEY] = TRAINER_PIC_ELITE_FOUR_SIDNEY,
+ [FACILITY_CLASS_ELITE_FOUR_PHOEBE] = TRAINER_PIC_ELITE_FOUR_PHOEBE,
+ [FACILITY_CLASS_LEADER_ROXANNE] = TRAINER_PIC_LEADER_ROXANNE,
+ [FACILITY_CLASS_LEADER_BRAWLY] = TRAINER_PIC_LEADER_BRAWLY,
+ [FACILITY_CLASS_LEADER_TATE_AND_LIZA] = TRAINER_PIC_LEADER_TATE_AND_LIZA,
+ [FACILITY_CLASS_SCHOOL_KID_M] = TRAINER_PIC_SCHOOL_KID_M,
+ [FACILITY_CLASS_SCHOOL_KID_F] = TRAINER_PIC_SCHOOL_KID_F,
+ [FACILITY_CLASS_SR_AND_JR] = TRAINER_PIC_SR_AND_JR,
+ [FACILITY_CLASS_POKEFAN_M] = TRAINER_PIC_POKEFAN_M,
+ [FACILITY_CLASS_POKEFAN_F] = TRAINER_PIC_POKEFAN_F,
+ [FACILITY_CLASS_YOUNGSTER] = TRAINER_PIC_YOUNGSTER,
+ [FACILITY_CLASS_CHAMPION_WALLACE] = TRAINER_PIC_CHAMPION_WALLACE,
+ [FACILITY_CLASS_FISHERMAN] = TRAINER_PIC_FISHERMAN,
+ [FACILITY_CLASS_CYCLING_TRIATHLETE_M] = TRAINER_PIC_CYCLING_TRIATHLETE_M,
+ [FACILITY_CLASS_CYCLING_TRIATHLETE_F] = TRAINER_PIC_CYCLING_TRIATHLETE_F,
+ [FACILITY_CLASS_RUNNING_TRIATHLETE_M] = TRAINER_PIC_RUNNING_TRIATHLETE_M,
+ [FACILITY_CLASS_RUNNING_TRIATHLETE_F] = TRAINER_PIC_RUNNING_TRIATHLETE_F,
+ [FACILITY_CLASS_SWIMMING_TRIATHLETE_M] = TRAINER_PIC_SWIMMING_TRIATHLETE_M,
+ [FACILITY_CLASS_SWIMMING_TRIATHLETE_F] = TRAINER_PIC_SWIMMING_TRIATHLETE_F,
+ [FACILITY_CLASS_DRAGON_TAMER] = TRAINER_PIC_DRAGON_TAMER,
+ [FACILITY_CLASS_NINJA_BOY] = TRAINER_PIC_NINJA_BOY,
+ [FACILITY_CLASS_BATTLE_GIRL] = TRAINER_PIC_BATTLE_GIRL,
+ [FACILITY_CLASS_PARASOL_LADY] = TRAINER_PIC_PARASOL_LADY,
+ [FACILITY_CLASS_SWIMMER_F] = TRAINER_PIC_SWIMMER_F,
+ [FACILITY_CLASS_TWINS] = TRAINER_PIC_TWINS,
+ [FACILITY_CLASS_SAILOR] = TRAINER_PIC_SAILOR,
+ [FACILITY_CLASS_WALLY] = TRAINER_PIC_WALLY,
+ [FACILITY_CLASS_BRENDAN] = TRAINER_PIC_BRENDAN,
+ [FACILITY_CLASS_BRENDAN_2] = TRAINER_PIC_BRENDAN,
+ [FACILITY_CLASS_BRENDAN_3] = TRAINER_PIC_BRENDAN,
+ [FACILITY_CLASS_MAY] = TRAINER_PIC_MAY,
+ [FACILITY_CLASS_MAY_2] = TRAINER_PIC_MAY,
+ [FACILITY_CLASS_MAY_3] = TRAINER_PIC_MAY,
+ [FACILITY_CLASS_PKMN_BREEDER_M] = TRAINER_PIC_POKEMON_BREEDER_M,
+ [FACILITY_CLASS_BUG_CATCHER] = TRAINER_PIC_BUG_CATCHER,
+ [FACILITY_CLASS_PKMN_RANGER_M] = TRAINER_PIC_POKEMON_RANGER_M,
+ [FACILITY_CLASS_PKMN_RANGER_F] = TRAINER_PIC_POKEMON_RANGER_F,
+ [FACILITY_CLASS_MAGMA_LEADER_MAXIE] = TRAINER_PIC_MAGMA_LEADER_MAXIE,
+ [FACILITY_CLASS_LASS] = TRAINER_PIC_LASS,
+ [FACILITY_CLASS_YOUNG_COUPLE] = TRAINER_PIC_YOUNG_COUPLE,
+ [FACILITY_CLASS_OLD_COUPLE] = TRAINER_PIC_OLD_COUPLE,
+ [FACILITY_CLASS_SIS_AND_BRO] = TRAINER_PIC_SIS_AND_BRO,
+ [FACILITY_CLASS_STEVEN] = TRAINER_PIC_STEVEN,
+ [FACILITY_CLASS_SALON_MAIDEN_ANABEL] = TRAINER_PIC_SALON_MAIDEN_ANABEL,
+ [FACILITY_CLASS_DOME_ACE_TUCKER] = TRAINER_PIC_DOME_ACE_TUCKER,
+ [FACILITY_CLASS_RED] = TRAINER_PIC_RED,
+ [FACILITY_CLASS_LEAF] = TRAINER_PIC_LEAF,
+ [FACILITY_CLASS_RS_BRENDAN] = TRAINER_PIC_RS_BRENDAN,
+ [FACILITY_CLASS_RS_MAY] = TRAINER_PIC_RS_MAY,
};
const u8 gFacilityClassToTrainerClass[] =
{
- TRAINER_CLASS_HIKER, // FACILITY_CLASS_HIKER
- TRAINER_CLASS_TEAM_AQUA, // FACILITY_CLASS_TEAM_AQUA_1
- TRAINER_CLASS_PKMN_BREEDER, // FACILITY_CLASS_PKMN_BREEDER_1
- TRAINER_CLASS_COOLTRAINER_1, // FACILITY_CLASS_COOLTRAINER_M
- TRAINER_CLASS_BIRD_KEEPER, // FACILITY_CLASS_BIRD_KEEPER
- TRAINER_CLASS_COLLECTOR, // FACILITY_CLASS_COLLECTOR
- TRAINER_CLASS_TEAM_AQUA, // FACILITY_CLASS_TEAM_AQUA_2
- TRAINER_CLASS_SWIMMER_M, // FACILITY_CLASS_SWIMMER_M
- TRAINER_CLASS_TEAM_MAGMA, // FACILITY_CLASS_TEAM_MAGMA_1
- TRAINER_CLASS_EXPERT, // FACILITY_CLASS_EXPERT_M
- TRAINER_CLASS_BLACK_BELT, // FACILITY_CLASS_BLACK_BELT
- TRAINER_CLASS_AQUA_LEADER, // FACILITY_CLASS_AQUA_LEADER
- TRAINER_CLASS_HEX_MANIAC, // FACILITY_CLASS_HEX_MANIAC
- TRAINER_CLASS_AROMA_LADY, // FACILITY_CLASS_AROMA_LADY
- TRAINER_CLASS_RUIN_MANIAC, // FACILITY_CLASS_RUIN_MANIAC
- TRAINER_CLASS_INTERVIEWER, // FACILITY_CLASS_INTERVIEWER
- TRAINER_CLASS_TUBER_1, // FACILITY_CLASS_TUBER_1
- TRAINER_CLASS_TUBER_2, // FACILITY_CLASS_TUBER_2
- TRAINER_CLASS_COOLTRAINER_1, // FACILITY_CLASS_COOLTRAINER_F
- TRAINER_CLASS_LADY, // FACILITY_CLASS_LADY
- TRAINER_CLASS_BEAUTY, // FACILITY_CLASS_BEAUTY
- TRAINER_CLASS_RICH_BOY, // FACILITY_CLASS_RICH_BOY
- TRAINER_CLASS_EXPERT, // FACILITY_CLASS_EXPERT_2
- TRAINER_CLASS_POKEMANIAC, // FACILITY_CLASS_POKEMANIAC
- TRAINER_CLASS_TEAM_MAGMA, // FACILITY_CLASS_TEAM_MAGMA_2
- TRAINER_CLASS_GUITARIST, // FACILITY_CLASS_GUITARIST
- TRAINER_CLASS_KINDLER, // FACILITY_CLASS_KINDLER
- TRAINER_CLASS_CAMPER, // FACILITY_CLASS_CAMPER
- TRAINER_CLASS_PICNICKER, // FACILITY_CLASS_PICNICKER
- TRAINER_CLASS_BUG_MANIAC, // FACILITY_CLASS_BUG_MANIAC
- TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_M
- TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_F
- TRAINER_CLASS_GENTLEMAN, // FACILITY_CLASS_GENTLEMAN
- TRAINER_CLASS_ELITE_FOUR, // FACILITY_CLASS_ELITE_FOUR_1
- TRAINER_CLASS_ELITE_FOUR, // FACILITY_CLASS_ELITE_FOUR_2
- TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_1
- TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_2
- TRAINER_CLASS_LEADER, // FACILITY_CLASS_LEADER_3
- TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_M
- TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_F
- TRAINER_CLASS_SR_AND_JR, // FACILITY_CLASS_SR_AND_JR
- TRAINER_CLASS_POKEFAN, // FACILITY_CLASS_POKEFAN_1
- TRAINER_CLASS_POKEFAN, // FACILITY_CLASS_POKEFAN_2
- TRAINER_CLASS_YOUNGSTER, // FACILITY_CLASS_YOUNGSTER
- TRAINER_CLASS_CHAMPION, // FACILITY_CLASS_CHAMPION
- TRAINER_CLASS_FISHERMAN, // FACILITY_CLASS_FISHERMAN
- TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_1
- TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_2
- TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_3
- TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_4
- TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_5
- TRAINER_CLASS_TRIATHLETE, // FACILITY_CLASS_TRIATHLETE_6
- TRAINER_CLASS_DRAGON_TAMER, // FACILITY_CLASS_DRAGON_TAMER
- TRAINER_CLASS_NINJA_BOY, // FACILITY_CLASS_NINJA_BOY
- TRAINER_CLASS_BATTLE_GIRL, // FACILITY_CLASS_BATTLE_GIRL
- TRAINER_CLASS_PARASOL_LADY, // FACILITY_CLASS_PARASOL_LADY
- TRAINER_CLASS_SWIMMER_F, // FACILITY_CLASS_SWIMMER_F
- TRAINER_CLASS_TWINS, // FACILITY_CLASS_TWINS
- TRAINER_CLASS_SAILOR, // FACILITY_CLASS_SAILOR
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_1
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_MAY
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_3
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_4
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_BRENDAN
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_6
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_7
- TRAINER_CLASS_PKMN_BREEDER, // FACILITY_CLASS_PKMN_BREEDER_2
- TRAINER_CLASS_BUG_CATCHER, // FACILITY_CLASS_BUG_CATCHER
- TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_M
- TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_F
- TRAINER_CLASS_MAGMA_LEADER, // FACILITY_CLASS_MAGMA_LEADER
- TRAINER_CLASS_LASS, // FACILITY_CLASS_LASS
- TRAINER_CLASS_YOUNG_COUPLE, // FACILITY_CLASS_YOUNG_COUPLE
- TRAINER_CLASS_OLD_COUPLE, // FACILITY_CLASS_OLD_COUPLE
- TRAINER_CLASS_SIS_AND_BRO, // FACILITY_CLASS_SIS_AND_BRO
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_STEVEN
- TRAINER_CLASS_SALON_MAIDEN, // FACILITY_CLASS_SALON_MAIDEN
- TRAINER_CLASS_DOME_ACE, // FACILITY_CLASS_DOME_ACE
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_RED
- TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_LEAF
- TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_RS_BRENDAN
- TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_RS_MAY
+ [FACILITY_CLASS_HIKER] = TRAINER_CLASS_HIKER,
+ [FACILITY_CLASS_AQUA_GRUNT_M] = TRAINER_CLASS_TEAM_AQUA,
+ [FACILITY_CLASS_POKEMON_BREEDER_F] = TRAINER_CLASS_PKMN_BREEDER,
+ [FACILITY_CLASS_COOLTRAINER_M] = TRAINER_CLASS_COOLTRAINER,
+ [FACILITY_CLASS_BIRD_KEEPER] = TRAINER_CLASS_BIRD_KEEPER,
+ [FACILITY_CLASS_COLLECTOR] = TRAINER_CLASS_COLLECTOR,
+ [FACILITY_CLASS_AQUA_GRUNT_F] = TRAINER_CLASS_TEAM_AQUA,
+ [FACILITY_CLASS_SWIMMER_M] = TRAINER_CLASS_SWIMMER_M,
+ [FACILITY_CLASS_MAGMA_GRUNT_M] = TRAINER_CLASS_TEAM_MAGMA,
+ [FACILITY_CLASS_EXPERT_M] = TRAINER_CLASS_EXPERT,
+ [FACILITY_CLASS_BLACK_BELT] = TRAINER_CLASS_BLACK_BELT,
+ [FACILITY_CLASS_AQUA_LEADER_ARCHIE] = TRAINER_CLASS_AQUA_LEADER,
+ [FACILITY_CLASS_HEX_MANIAC] = TRAINER_CLASS_HEX_MANIAC,
+ [FACILITY_CLASS_AROMA_LADY] = TRAINER_CLASS_AROMA_LADY,
+ [FACILITY_CLASS_RUIN_MANIAC] = TRAINER_CLASS_RUIN_MANIAC,
+ [FACILITY_CLASS_INTERVIEWER] = TRAINER_CLASS_INTERVIEWER,
+ [FACILITY_CLASS_TUBER_F] = TRAINER_CLASS_TUBER_F,
+ [FACILITY_CLASS_TUBER_M] = TRAINER_CLASS_TUBER_M,
+ [FACILITY_CLASS_COOLTRAINER_F] = TRAINER_CLASS_COOLTRAINER,
+ [FACILITY_CLASS_LADY] = TRAINER_CLASS_LADY,
+ [FACILITY_CLASS_BEAUTY] = TRAINER_CLASS_BEAUTY,
+ [FACILITY_CLASS_RICH_BOY] = TRAINER_CLASS_RICH_BOY,
+ [FACILITY_CLASS_EXPERT_F] = TRAINER_CLASS_EXPERT,
+ [FACILITY_CLASS_POKEMANIAC] = TRAINER_CLASS_POKEMANIAC,
+ [FACILITY_CLASS_MAGMA_GRUNT_F] = TRAINER_CLASS_TEAM_MAGMA,
+ [FACILITY_CLASS_GUITARIST] = TRAINER_CLASS_GUITARIST,
+ [FACILITY_CLASS_KINDLER] = TRAINER_CLASS_KINDLER,
+ [FACILITY_CLASS_CAMPER] = TRAINER_CLASS_CAMPER,
+ [FACILITY_CLASS_PICNICKER] = TRAINER_CLASS_PICNICKER,
+ [FACILITY_CLASS_BUG_MANIAC] = TRAINER_CLASS_BUG_MANIAC,
+ [FACILITY_CLASS_PSYCHIC_M] = TRAINER_CLASS_PSYCHIC,
+ [FACILITY_CLASS_PSYCHIC_F] = TRAINER_CLASS_PSYCHIC,
+ [FACILITY_CLASS_GENTLEMAN] = TRAINER_CLASS_GENTLEMAN,
+ [FACILITY_CLASS_ELITE_FOUR_SIDNEY] = TRAINER_CLASS_ELITE_FOUR,
+ [FACILITY_CLASS_ELITE_FOUR_PHOEBE] = TRAINER_CLASS_ELITE_FOUR,
+ [FACILITY_CLASS_LEADER_ROXANNE] = TRAINER_CLASS_LEADER,
+ [FACILITY_CLASS_LEADER_BRAWLY] = TRAINER_CLASS_LEADER,
+ [FACILITY_CLASS_LEADER_TATE_AND_LIZA] = TRAINER_CLASS_LEADER,
+ [FACILITY_CLASS_SCHOOL_KID_M] = TRAINER_CLASS_SCHOOL_KID,
+ [FACILITY_CLASS_SCHOOL_KID_F] = TRAINER_CLASS_SCHOOL_KID,
+ [FACILITY_CLASS_SR_AND_JR] = TRAINER_CLASS_SR_AND_JR,
+ [FACILITY_CLASS_POKEFAN_M] = TRAINER_CLASS_POKEFAN,
+ [FACILITY_CLASS_POKEFAN_F] = TRAINER_CLASS_POKEFAN,
+ [FACILITY_CLASS_YOUNGSTER] = TRAINER_CLASS_YOUNGSTER,
+ [FACILITY_CLASS_CHAMPION_WALLACE] = TRAINER_CLASS_CHAMPION,
+ [FACILITY_CLASS_FISHERMAN] = TRAINER_CLASS_FISHERMAN,
+ [FACILITY_CLASS_CYCLING_TRIATHLETE_M] = TRAINER_CLASS_TRIATHLETE,
+ [FACILITY_CLASS_CYCLING_TRIATHLETE_F] = TRAINER_CLASS_TRIATHLETE,
+ [FACILITY_CLASS_RUNNING_TRIATHLETE_M] = TRAINER_CLASS_TRIATHLETE,
+ [FACILITY_CLASS_RUNNING_TRIATHLETE_F] = TRAINER_CLASS_TRIATHLETE,
+ [FACILITY_CLASS_SWIMMING_TRIATHLETE_M] = TRAINER_CLASS_TRIATHLETE,
+ [FACILITY_CLASS_SWIMMING_TRIATHLETE_F] = TRAINER_CLASS_TRIATHLETE,
+ [FACILITY_CLASS_DRAGON_TAMER] = TRAINER_CLASS_DRAGON_TAMER,
+ [FACILITY_CLASS_NINJA_BOY] = TRAINER_CLASS_NINJA_BOY,
+ [FACILITY_CLASS_BATTLE_GIRL] = TRAINER_CLASS_BATTLE_GIRL,
+ [FACILITY_CLASS_PARASOL_LADY] = TRAINER_CLASS_PARASOL_LADY,
+ [FACILITY_CLASS_SWIMMER_F] = TRAINER_CLASS_SWIMMER_F,
+ [FACILITY_CLASS_TWINS] = TRAINER_CLASS_TWINS,
+ [FACILITY_CLASS_SAILOR] = TRAINER_CLASS_SAILOR,
+ [FACILITY_CLASS_WALLY] = TRAINER_CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_MAY] = TRAINER_CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_BRENDAN_2] = TRAINER_CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_BRENDAN_3] = TRAINER_CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_BRENDAN] = TRAINER_CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_MAY_2] = TRAINER_CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_MAY_3] = TRAINER_CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_PKMN_BREEDER_M] = TRAINER_CLASS_PKMN_BREEDER,
+ [FACILITY_CLASS_BUG_CATCHER] = TRAINER_CLASS_BUG_CATCHER,
+ [FACILITY_CLASS_PKMN_RANGER_M] = TRAINER_CLASS_PKMN_RANGER,
+ [FACILITY_CLASS_PKMN_RANGER_F] = TRAINER_CLASS_PKMN_RANGER,
+ [FACILITY_CLASS_MAGMA_LEADER_MAXIE] = TRAINER_CLASS_MAGMA_LEADER,
+ [FACILITY_CLASS_LASS] = TRAINER_CLASS_LASS,
+ [FACILITY_CLASS_YOUNG_COUPLE] = TRAINER_CLASS_YOUNG_COUPLE,
+ [FACILITY_CLASS_OLD_COUPLE] = TRAINER_CLASS_OLD_COUPLE,
+ [FACILITY_CLASS_SIS_AND_BRO] = TRAINER_CLASS_SIS_AND_BRO,
+ [FACILITY_CLASS_STEVEN] = TRAINER_CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_SALON_MAIDEN_ANABEL] = TRAINER_CLASS_SALON_MAIDEN,
+ [FACILITY_CLASS_DOME_ACE_TUCKER] = TRAINER_CLASS_DOME_ACE,
+ [FACILITY_CLASS_RED] = TRAINER_CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_LEAF] = TRAINER_CLASS_PKMN_TRAINER_3,
+ [FACILITY_CLASS_RS_BRENDAN] = TRAINER_CLASS_PKMN_TRAINER_4,
+ [FACILITY_CLASS_RS_MAY] = TRAINER_CLASS_PKMN_TRAINER_4,
};
-#endif //POKEEMERALD_TRAINER_CLASS_LOOKUPS_H
diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h
index 877bf3475..ab64c6f20 100644
--- a/src/data/pokemon_graphics/back_pic_coordinates.h
+++ b/src/data/pokemon_graphics/back_pic_coordinates.h
@@ -1,443 +1,444 @@
const struct MonCoords gMonBackPicCoords[] =
{
- {0x88, 0x00}, // SPECIES_NONE
- {0x64, 0x10}, // SPECIES_BULBASAUR
- {0x66, 0x09}, // SPECIES_IVYSAUR
- {0x87, 0x07}, // SPECIES_VENUSAUR
- {0x65, 0x0e}, // SPECIES_CHARMANDER
- {0x66, 0x09}, // SPECIES_CHARMELEON
- {0x87, 0x04}, // SPECIES_CHARIZARD
- {0x65, 0x0e}, // SPECIES_SQUIRTLE
- {0x76, 0x0a}, // SPECIES_WARTORTLE
- {0x86, 0x08}, // SPECIES_BLASTOISE
- {0x55, 0x0f}, // SPECIES_CATERPIE
- {0x65, 0x0c}, // SPECIES_METAPOD
- {0x87, 0x06}, // SPECIES_BUTTERFREE
- {0x56, 0x0b}, // SPECIES_WEEDLE
- {0x46, 0x0a}, // SPECIES_KAKUNA
- {0x86, 0x09}, // SPECIES_BEEDRILL
- {0x66, 0x08}, // SPECIES_PIDGEY
- {0x85, 0x0c}, // SPECIES_PIDGEOTTO
- {0x78, 0x02}, // SPECIES_PIDGEOT
- {0x65, 0x0d}, // SPECIES_RATTATA
- {0x75, 0x0d}, // SPECIES_RATICATE
- {0x65, 0x0c}, // SPECIES_SPEAROW
- {0x87, 0x05}, // SPECIES_FEAROW
- {0x66, 0x09}, // SPECIES_EKANS
- {0x77, 0x04}, // SPECIES_ARBOK
- {0x77, 0x07}, // SPECIES_PIKACHU
- {0x66, 0x08}, // SPECIES_RAICHU
- {0x65, 0x0d}, // SPECIES_SANDSHREW
- {0x86, 0x09}, // SPECIES_SANDSLASH
- {0x55, 0x0c}, // SPECIES_NIDORAN_F
- {0x86, 0x0a}, // SPECIES_NIDORINA
- {0x77, 0x06}, // SPECIES_NIDOQUEEN
- {0x56, 0x08}, // SPECIES_NIDORAN_M
- {0x86, 0x09}, // SPECIES_NIDORINO
- {0x88, 0x03}, // SPECIES_NIDOKING
- {0x65, 0x0d}, // SPECIES_CLEFAIRY
- {0x76, 0x0a}, // SPECIES_CLEFABLE
- {0x76, 0x09}, // SPECIES_VULPIX
- {0x77, 0x05}, // SPECIES_NINETALES
- {0x65, 0x0d}, // SPECIES_JIGGLYPUFF
- {0x66, 0x08}, // SPECIES_WIGGLYTUFF
- {0x76, 0x0b}, // SPECIES_ZUBAT
- {0x87, 0x06}, // SPECIES_GOLBAT
- {0x56, 0x0b}, // SPECIES_ODDISH
- {0x66, 0x0a}, // SPECIES_GLOOM
- {0x87, 0x07}, // SPECIES_VILEPLUME
- {0x63, 0x14}, // SPECIES_PARAS
- {0x87, 0x07}, // SPECIES_VENONAT
- {0x77, 0x06}, // SPECIES_VENOMOTH
- {0x77, 0x04}, // SPECIES_DIGLETT
- {0x54, 0x10}, // SPECIES_DUGTRIO
- {0x66, 0x0b}, // SPECIES_MEOWTH
- {0x65, 0x0c}, // SPECIES_PERSIAN
- {0x87, 0x07}, // SPECIES_PSYDUCK
- {0x67, 0x07}, // SPECIES_GOLDUCK
- {0x77, 0x05}, // SPECIES_MANKEY
- {0x76, 0x0b}, // SPECIES_PRIMEAPE
- {0x77, 0x07}, // SPECIES_GROWLITHE
- {0x66, 0x08}, // SPECIES_ARCANINE
- {0x87, 0x06}, // SPECIES_POLIWAG
- {0x74, 0x10}, // SPECIES_POLIWHIRL
- {0x65, 0x0c}, // SPECIES_POLIWRATH
- {0x86, 0x0b}, // SPECIES_ABRA
- {0x66, 0x0b}, // SPECIES_KADABRA
- {0x76, 0x08}, // SPECIES_ALAKAZAM
- {0x67, 0x05}, // SPECIES_MACHOP
- {0x65, 0x0c}, // SPECIES_MACHOKE
- {0x76, 0x09}, // SPECIES_MACHAMP
- {0x67, 0x04}, // SPECIES_BELLSPROUT
- {0x66, 0x0a}, // SPECIES_WEEPINBELL
- {0x66, 0x09}, // SPECIES_VICTREEBEL
- {0x87, 0x06}, // SPECIES_TENTACOOL
- {0x56, 0x0a}, // SPECIES_TENTACRUEL
- {0x86, 0x0b}, // SPECIES_GEODUDE
- {0x66, 0x0b}, // SPECIES_GRAVELER
- {0x75, 0x0c}, // SPECIES_GOLEM
- {0x84, 0x10}, // SPECIES_PONYTA
- {0x66, 0x09}, // SPECIES_RAPIDASH
- {0x87, 0x05}, // SPECIES_SLOWPOKE
- {0x85, 0x0e}, // SPECIES_SLOWBRO
- {0x86, 0x0a}, // SPECIES_MAGNEMITE
- {0x43, 0x14}, // SPECIES_MAGNETON
- {0x66, 0x0a}, // SPECIES_FARFETCHD
- {0x66, 0x0a}, // SPECIES_DODUO
- {0x66, 0x08}, // SPECIES_DODRIO
- {0x88, 0x01}, // SPECIES_SEEL
- {0x66, 0x0a}, // SPECIES_DEWGONG
- {0x77, 0x05}, // SPECIES_GRIMER
- {0x75, 0x0c}, // SPECIES_MUK
- {0x87, 0x05}, // SPECIES_SHELLDER
- {0x76, 0x0b}, // SPECIES_CLOYSTER
- {0x87, 0x06}, // SPECIES_GASTLY
- {0x85, 0x0e}, // SPECIES_HAUNTER
- {0x76, 0x08}, // SPECIES_GENGAR
- {0x76, 0x09}, // SPECIES_ONIX
- {0x78, 0x00}, // SPECIES_DROWZEE
- {0x65, 0x0d}, // SPECIES_HYPNO
- {0x66, 0x09}, // SPECIES_KRABBY
- {0x66, 0x0a}, // SPECIES_KINGLER
- {0x77, 0x04}, // SPECIES_VOLTORB
- {0x55, 0x0e}, // SPECIES_ELECTRODE
- {0x65, 0x0d}, // SPECIES_EXEGGCUTE
- {0x65, 0x0d}, // SPECIES_EXEGGUTOR
- {0x87, 0x04}, // SPECIES_CUBONE
- {0x66, 0x0a}, // SPECIES_MAROWAK
- {0x66, 0x08}, // SPECIES_HITMONLEE
- {0x65, 0x0c}, // SPECIES_HITMONCHAN
- {0x65, 0x0c}, // SPECIES_LICKITUNG
- {0x65, 0x0e}, // SPECIES_KOFFING
- {0x66, 0x09}, // SPECIES_WEEZING
- {0x77, 0x06}, // SPECIES_RHYHORN
- {0x85, 0x0c}, // SPECIES_RHYDON
- {0x88, 0x03}, // SPECIES_CHANSEY
- {0x86, 0x0b}, // SPECIES_TANGELA
- {0x85, 0x0e}, // SPECIES_KANGASKHAN
- {0x77, 0x05}, // SPECIES_HORSEA
- {0x66, 0x09}, // SPECIES_SEADRA
- {0x66, 0x08}, // SPECIES_GOLDEEN
- {0x66, 0x08}, // SPECIES_SEAKING
- {0x76, 0x0b}, // SPECIES_STARYU
- {0x65, 0x0d}, // SPECIES_STARMIE
- {0x85, 0x0e}, // SPECIES_MR_MIME
- {0x85, 0x0d}, // SPECIES_SCYTHER
- {0x77, 0x07}, // SPECIES_JYNX
- {0x86, 0x0a}, // SPECIES_ELECTABUZZ
- {0x66, 0x08}, // SPECIES_MAGMAR
- {0x66, 0x08}, // SPECIES_PINSIR
- {0x66, 0x09}, // SPECIES_TAUROS
- {0x85, 0x0d}, // SPECIES_MAGIKARP
- {0x76, 0x09}, // SPECIES_GYARADOS
- {0x78, 0x00}, // SPECIES_LAPRAS
- {0x77, 0x04}, // SPECIES_DITTO
- {0x54, 0x11}, // SPECIES_EEVEE
- {0x66, 0x0a}, // SPECIES_VAPOREON
- {0x66, 0x0a}, // SPECIES_JOLTEON
- {0x87, 0x06}, // SPECIES_FLAREON
- {0x67, 0x05}, // SPECIES_PORYGON
- {0x65, 0x0d}, // SPECIES_OMANYTE
- {0x66, 0x0a}, // SPECIES_OMASTAR
- {0x66, 0x08}, // SPECIES_KABUTO
- {0x65, 0x0d}, // SPECIES_KABUTOPS
- {0x77, 0x05}, // SPECIES_AERODACTYL
- {0x86, 0x08}, // SPECIES_SNORLAX
- {0x86, 0x0b}, // SPECIES_ARTICUNO
- {0x65, 0x0c}, // SPECIES_ZAPDOS
- {0x76, 0x0b}, // SPECIES_MOLTRES
- {0x87, 0x04}, // SPECIES_DRATINI
- {0x66, 0x09}, // SPECIES_DRAGONAIR
- {0x78, 0x00}, // SPECIES_DRAGONITE
- {0x87, 0x06}, // SPECIES_MEWTWO
- {0x78, 0x01}, // SPECIES_MEW
- {0x66, 0x08}, // SPECIES_CHIKORITA
- {0x56, 0x0a}, // SPECIES_BAYLEEF
- {0x66, 0x08}, // SPECIES_MEGANIUM
- {0x78, 0x00}, // SPECIES_CYNDAQUIL
- {0x76, 0x09}, // SPECIES_QUILAVA
- {0x87, 0x04}, // SPECIES_TYPHLOSION
- {0x87, 0x04}, // SPECIES_TOTODILE
- {0x66, 0x0b}, // SPECIES_CROCONAW
- {0x67, 0x07}, // SPECIES_FERALIGATR
- {0x88, 0x01}, // SPECIES_SENTRET
- {0x67, 0x05}, // SPECIES_FURRET
- {0x66, 0x08}, // SPECIES_HOOTHOOT
- {0x66, 0x08}, // SPECIES_NOCTOWL
- {0x68, 0x03}, // SPECIES_LEDYBA
- {0x76, 0x0b}, // SPECIES_LEDIAN
- {0x77, 0x07}, // SPECIES_SPINARAK
- {0x73, 0x15}, // SPECIES_ARIADOS
- {0x86, 0x0b}, // SPECIES_CROBAT
- {0x87, 0x05}, // SPECIES_CHINCHOU
- {0x86, 0x08}, // SPECIES_LANTURN
- {0x86, 0x08}, // SPECIES_PICHU
- {0x66, 0x0b}, // SPECIES_CLEFFA
- {0x65, 0x0f}, // SPECIES_IGGLYBUFF
- {0x66, 0x0b}, // SPECIES_TOGEPI
- {0x54, 0x10}, // SPECIES_TOGETIC
- {0x66, 0x08}, // SPECIES_NATU
- {0x54, 0x11}, // SPECIES_XATU
- {0x76, 0x08}, // SPECIES_MAREEP
- {0x66, 0x09}, // SPECIES_FLAAFFY
- {0x66, 0x09}, // SPECIES_AMPHAROS
- {0x88, 0x01}, // SPECIES_BELLOSSOM
- {0x66, 0x0b}, // SPECIES_MARILL
- {0x75, 0x0c}, // SPECIES_AZUMARILL
- {0x86, 0x08}, // SPECIES_SUDOWOODO
- {0x66, 0x08}, // SPECIES_POLITOED
- {0x66, 0x09}, // SPECIES_HOPPIP
- {0x66, 0x0b}, // SPECIES_SKIPLOOM
- {0x65, 0x0d}, // SPECIES_JUMPLUFF
- {0x87, 0x04}, // SPECIES_AIPOM
- {0x66, 0x09}, // SPECIES_SUNKERN
- {0x56, 0x0a}, // SPECIES_SUNFLORA
- {0x66, 0x08}, // SPECIES_YANMA
- {0x77, 0x04}, // SPECIES_WOOPER
- {0x85, 0x0f}, // SPECIES_QUAGSIRE
- {0x76, 0x08}, // SPECIES_ESPEON
- {0x76, 0x0b}, // SPECIES_UMBREON
- {0x87, 0x04}, // SPECIES_MURKROW
- {0x66, 0x09}, // SPECIES_SLOWKING
- {0x66, 0x08}, // SPECIES_MISDREAVUS
- {0x66, 0x0a}, // SPECIES_UNOWN
- {0x36, 0x08}, // SPECIES_WOBBUFFET
- {0x75, 0x0c}, // SPECIES_GIRAFARIG
- {0x87, 0x05}, // SPECIES_PINECO
- {0x65, 0x0f}, // SPECIES_FORRETRESS
- {0x84, 0x10}, // SPECIES_DUNSPARCE
- {0x85, 0x0f}, // SPECIES_GLIGAR
- {0x87, 0x05}, // SPECIES_STEELIX
- {0x88, 0x00}, // SPECIES_SNUBBULL
- {0x76, 0x0a}, // SPECIES_GRANBULL
- {0x87, 0x05}, // SPECIES_QWILFISH
- {0x77, 0x07}, // SPECIES_SCIZOR
- {0x77, 0x04}, // SPECIES_SHUCKLE
- {0x56, 0x0b}, // SPECIES_HERACROSS
- {0x77, 0x04}, // SPECIES_SNEASEL
- {0x66, 0x08}, // SPECIES_TEDDIURSA
- {0x66, 0x08}, // SPECIES_URSARING
- {0x88, 0x03}, // SPECIES_SLUGMA
- {0x66, 0x08}, // SPECIES_MAGCARGO
- {0x76, 0x09}, // SPECIES_SWINUB
- {0x63, 0x15}, // SPECIES_PILOSWINE
- {0x75, 0x0d}, // SPECIES_CORSOLA
- {0x65, 0x0c}, // SPECIES_REMORAID
- {0x75, 0x0d}, // SPECIES_OCTILLERY
- {0x66, 0x0a}, // SPECIES_DELIBIRD
- {0x67, 0x06}, // SPECIES_MANTINE
- {0x87, 0x07}, // SPECIES_SKARMORY
- {0x87, 0x04}, // SPECIES_HOUNDOUR
- {0x55, 0x0c}, // SPECIES_HOUNDOOM
- {0x87, 0x07}, // SPECIES_KINGDRA
- {0x87, 0x06}, // SPECIES_PHANPY
- {0x65, 0x0e}, // SPECIES_DONPHAN
- {0x85, 0x0d}, // SPECIES_PORYGON2
- {0x76, 0x0a}, // SPECIES_STANTLER
- {0x78, 0x03}, // SPECIES_SMEARGLE
- {0x76, 0x0a}, // SPECIES_TYROGUE
- {0x66, 0x08}, // SPECIES_HITMONTOP
- {0x87, 0x05}, // SPECIES_SMOOCHUM
- {0x56, 0x09}, // SPECIES_ELEKID
- {0x66, 0x08}, // SPECIES_MAGBY
- {0x66, 0x0b}, // SPECIES_MILTANK
- {0x87, 0x07}, // SPECIES_BLISSEY
- {0x85, 0x0d}, // SPECIES_RAIKOU
- {0x86, 0x0a}, // SPECIES_ENTEI
- {0x87, 0x06}, // SPECIES_SUICUNE
- {0x88, 0x03}, // SPECIES_LARVITAR
- {0x66, 0x08}, // SPECIES_PUPITAR
- {0x67, 0x05}, // SPECIES_TYRANITAR
- {0x88, 0x00}, // SPECIES_LUGIA
- {0x88, 0x01}, // SPECIES_HO_OH
- {0x88, 0x01}, // SPECIES_CELEBI
- {0x66, 0x08}, // SPECIES_OLD_UNOWN_B
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_C
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_D
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_E
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_F
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_G
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_H
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_I
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_J
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_K
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_L
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_M
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_N
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_O
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_P
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_Q
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_R
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_S
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_T
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_U
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_V
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_W
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_X
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_Y
- {0x88, 0x02}, // SPECIES_OLD_UNOWN_Z
- {0x88, 0x02}, // SPECIES_TREECKO
- {0x87, 0x06}, // SPECIES_GROVYLE
- {0x86, 0x08}, // SPECIES_SCEPTILE
- {0x88, 0x01}, // SPECIES_TORCHIC
- {0x67, 0x05}, // SPECIES_COMBUSKEN
- {0x88, 0x00}, // SPECIES_BLAZIKEN
- {0x88, 0x00}, // SPECIES_MUDKIP
- {0x77, 0x05}, // SPECIES_MARSHTOMP
- {0x87, 0x04}, // SPECIES_SWAMPERT
- {0x87, 0x05}, // SPECIES_POOCHYENA
- {0x76, 0x09}, // SPECIES_MIGHTYENA
- {0x87, 0x04}, // SPECIES_ZIGZAGOON
- {0x76, 0x0b}, // SPECIES_LINOONE
- {0x85, 0x0f}, // SPECIES_WURMPLE
- {0x76, 0x0b}, // SPECIES_SILCOON
- {0x83, 0x15}, // SPECIES_BEAUTIFLY
- {0x88, 0x00}, // SPECIES_CASCOON
- {0x73, 0x14}, // SPECIES_DUSTOX
- {0x83, 0x14}, // SPECIES_LOTAD
- {0x75, 0x0f}, // SPECIES_LOMBRE
- {0x86, 0x08}, // SPECIES_LUDICOLO
- {0x86, 0x0a}, // SPECIES_SEEDOT
- {0x86, 0x09}, // SPECIES_NUZLEAF
- {0x76, 0x0a}, // SPECIES_SHIFTRY
- {0x86, 0x08}, // SPECIES_NINCADA
- {0x83, 0x14}, // SPECIES_NINJASK
- {0x86, 0x08}, // SPECIES_SHEDINJA
- {0x77, 0x06}, // SPECIES_TAILLOW
- {0x64, 0x11}, // SPECIES_SWELLOW
- {0x86, 0x08}, // SPECIES_SHROOMISH
- {0x85, 0x0d}, // SPECIES_BRELOOM
- {0x87, 0x04}, // SPECIES_SPINDA
- {0x77, 0x04}, // SPECIES_WINGULL
- {0x85, 0x0e}, // SPECIES_PELIPPER
- {0x87, 0x06}, // SPECIES_SURSKIT
- {0x86, 0x0b}, // SPECIES_MASQUERAIN
- {0x88, 0x00}, // SPECIES_WAILMER
- {0x83, 0x15}, // SPECIES_WAILORD
- {0x83, 0x16}, // SPECIES_SKITTY
- {0x86, 0x0a}, // SPECIES_DELCATTY
- {0x86, 0x08}, // SPECIES_KECLEON
- {0x87, 0x06}, // SPECIES_BALTOY
- {0x86, 0x08}, // SPECIES_CLAYDOL
- {0x87, 0x07}, // SPECIES_NOSEPASS
- {0x85, 0x0c}, // SPECIES_TORKOAL
- {0x86, 0x0a}, // SPECIES_SABLEYE
- {0x76, 0x08}, // SPECIES_BARBOACH
- {0x66, 0x0a}, // SPECIES_WHISCASH
- {0x86, 0x0a}, // SPECIES_LUVDISC
- {0x46, 0x0a}, // SPECIES_CORPHISH
- {0x77, 0x07}, // SPECIES_CRAWDAUNT
- {0x87, 0x05}, // SPECIES_FEEBAS
- {0x67, 0x07}, // SPECIES_MILOTIC
- {0x68, 0x02}, // SPECIES_CARVANHA
- {0x87, 0x07}, // SPECIES_SHARPEDO
- {0x88, 0x02}, // SPECIES_TRAPINCH
- {0x75, 0x0e}, // SPECIES_VIBRAVA
- {0x74, 0x11}, // SPECIES_FLYGON
- {0x88, 0x02}, // SPECIES_MAKUHITA
- {0x76, 0x0b}, // SPECIES_HARIYAMA
- {0x87, 0x07}, // SPECIES_ELECTRIKE
- {0x84, 0x10}, // SPECIES_MANECTRIC
- {0x87, 0x04}, // SPECIES_NUMEL
- {0x86, 0x0b}, // SPECIES_CAMERUPT
- {0x84, 0x13}, // SPECIES_SPHEAL
- {0x64, 0x12}, // SPECIES_SEALEO
- {0x86, 0x0a}, // SPECIES_WALREIN
- {0x87, 0x06}, // SPECIES_CACNEA
- {0x85, 0x0f}, // SPECIES_CACTURNE
- {0x87, 0x07}, // SPECIES_SNORUNT
- {0x76, 0x0a}, // SPECIES_GLALIE
- {0x85, 0x0c}, // SPECIES_LUNATONE
- {0x87, 0x05}, // SPECIES_SOLROCK
- {0x87, 0x05}, // SPECIES_AZURILL
- {0x86, 0x0a}, // SPECIES_SPOINK
- {0x56, 0x0b}, // SPECIES_GRUMPIG
- {0x87, 0x04}, // SPECIES_PLUSLE
- {0x76, 0x08}, // SPECIES_MINUN
- {0x76, 0x08}, // SPECIES_MAWILE
- {0x87, 0x04}, // SPECIES_MEDITITE
- {0x76, 0x0b}, // SPECIES_MEDICHAM
- {0x68, 0x03}, // SPECIES_SWABLU
- {0x86, 0x09}, // SPECIES_ALTARIA
- {0x87, 0x06}, // SPECIES_WYNAUT
- {0x77, 0x07}, // SPECIES_DUSKULL
- {0x66, 0x0b}, // SPECIES_DUSCLOPS
- {0x86, 0x08}, // SPECIES_ROSELIA
- {0x86, 0x08}, // SPECIES_SLAKOTH
- {0x85, 0x0f}, // SPECIES_VIGOROTH
- {0x86, 0x0a}, // SPECIES_SLAKING
- {0x86, 0x08}, // SPECIES_GULPIN
- {0x66, 0x0b}, // SPECIES_SWALOT
- {0x77, 0x06}, // SPECIES_TROPIUS
- {0x87, 0x07}, // SPECIES_WHISMUR
- {0x85, 0x0d}, // SPECIES_LOUDRED
- {0x86, 0x09}, // SPECIES_EXPLOUD
- {0x88, 0x03}, // SPECIES_CLAMPERL
- {0x85, 0x0d}, // SPECIES_HUNTAIL
- {0x68, 0x02}, // SPECIES_GOREBYSS
- {0x77, 0x05}, // SPECIES_ABSOL
- {0x78, 0x03}, // SPECIES_SHUPPET
- {0x77, 0x06}, // SPECIES_BANETTE
- {0x65, 0x0c}, // SPECIES_SEVIPER
- {0x88, 0x03}, // SPECIES_ZANGOOSE
- {0x88, 0x01}, // SPECIES_RELICANTH
- {0x86, 0x0a}, // SPECIES_ARON
- {0x54, 0x11}, // SPECIES_LAIRON
- {0x84, 0x11}, // SPECIES_AGGRON
- {0x87, 0x07}, // SPECIES_CASTFORM
- {0x45, 0x0d}, // SPECIES_VOLBEAT
- {0x76, 0x08}, // SPECIES_ILLUMISE
- {0x67, 0x06}, // SPECIES_LILEEP
- {0x86, 0x09}, // SPECIES_CRADILY
- {0x77, 0x04}, // SPECIES_ANORITH
- {0x83, 0x17}, // SPECIES_ARMALDO
- {0x77, 0x05}, // SPECIES_RALTS
- {0x45, 0x0d}, // SPECIES_KIRLIA
- {0x57, 0x06}, // SPECIES_GARDEVOIR
- {0x77, 0x04}, // SPECIES_BAGON
- {0x66, 0x08}, // SPECIES_SHELGON
- {0x85, 0x0d}, // SPECIES_SALAMENCE
- {0x77, 0x06}, // SPECIES_BELDUM
- {0x66, 0x0a}, // SPECIES_METANG
- {0x84, 0x10}, // SPECIES_METAGROSS
- {0x83, 0x14}, // SPECIES_REGIROCK
- {0x86, 0x0a}, // SPECIES_REGICE
- {0x85, 0x0e}, // SPECIES_REGISTEEL
- {0x85, 0x0e}, // SPECIES_KYOGRE
- {0x84, 0x13}, // SPECIES_GROUDON
- {0x87, 0x07}, // SPECIES_RAYQUAZA
- {0x78, 0x00}, // SPECIES_LATIAS
- {0x88, 0x02}, // SPECIES_LATIOS
- {0x88, 0x03}, // SPECIES_JIRACHI
- {0x87, 0x05}, // SPECIES_DEOXYS
- {0x86, 0x09}, // SPECIES_CHIMECHO
- {0x47, 0x07}, // SPECIES_EGG
- {0x36, 0x0a}, // SPECIES_UNOWN_B
- {0x56, 0x09}, // SPECIES_UNOWN_C
- {0x67, 0x06}, // SPECIES_UNOWN_D
- {0x56, 0x08}, // SPECIES_UNOWN_E
- {0x56, 0x0a}, // SPECIES_UNOWN_F
- {0x66, 0x0a}, // SPECIES_UNOWN_G
- {0x57, 0x05}, // SPECIES_UNOWN_H
- {0x66, 0x08}, // SPECIES_UNOWN_I
- {0x37, 0x07}, // SPECIES_UNOWN_J
- {0x46, 0x09}, // SPECIES_UNOWN_K
- {0x57, 0x07}, // SPECIES_UNOWN_L
- {0x46, 0x0a}, // SPECIES_UNOWN_M
- {0x65, 0x0d}, // SPECIES_UNOWN_N
- {0x65, 0x0d}, // SPECIES_UNOWN_O
- {0x66, 0x08}, // SPECIES_UNOWN_P
- {0x46, 0x0a}, // SPECIES_UNOWN_Q
- {0x55, 0x0f}, // SPECIES_UNOWN_R
- {0x45, 0x0c}, // SPECIES_UNOWN_S
- {0x57, 0x04}, // SPECIES_UNOWN_T
- {0x45, 0x0d}, // SPECIES_UNOWN_U
- {0x65, 0x0d}, // SPECIES_UNOWN_V
- {0x56, 0x0b}, // SPECIES_UNOWN_W
- {0x55, 0x0d}, // SPECIES_UNOWN_X
- {0x55, 0x0f}, // SPECIES_UNOWN_Y
- {0x46, 0x0a}, // SPECIES_UNOWN_Z
- {0x46, 0x0a}, // SPECIES_UNOWN_EMARK
- {0x37, 0x06}, // SPECIES_UNOWN_QMARK
- {0x47, 0x06},
+ [SPECIES_NONE] = {0x88, 0x00},
+ [SPECIES_BULBASAUR] = {0x64, 0x10},
+ [SPECIES_IVYSAUR] = {0x66, 0x09},
+ [SPECIES_VENUSAUR] = {0x87, 0x07},
+ [SPECIES_CHARMANDER] = {0x65, 0x0e},
+ [SPECIES_CHARMELEON] = {0x66, 0x09},
+ [SPECIES_CHARIZARD] = {0x87, 0x04},
+ [SPECIES_SQUIRTLE] = {0x65, 0x0e},
+ [SPECIES_WARTORTLE] = {0x76, 0x0a},
+ [SPECIES_BLASTOISE] = {0x86, 0x08},
+ [SPECIES_CATERPIE] = {0x55, 0x0f},
+ [SPECIES_METAPOD] = {0x65, 0x0c},
+ [SPECIES_BUTTERFREE] = {0x87, 0x06},
+ [SPECIES_WEEDLE] = {0x56, 0x0b},
+ [SPECIES_KAKUNA] = {0x46, 0x0a},
+ [SPECIES_BEEDRILL] = {0x86, 0x09},
+ [SPECIES_PIDGEY] = {0x66, 0x08},
+ [SPECIES_PIDGEOTTO] = {0x85, 0x0c},
+ [SPECIES_PIDGEOT] = {0x78, 0x02},
+ [SPECIES_RATTATA] = {0x65, 0x0d},
+ [SPECIES_RATICATE] = {0x75, 0x0d},
+ [SPECIES_SPEAROW] = {0x65, 0x0c},
+ [SPECIES_FEAROW] = {0x87, 0x05},
+ [SPECIES_EKANS] = {0x66, 0x09},
+ [SPECIES_ARBOK] = {0x77, 0x04},
+ [SPECIES_PIKACHU] = {0x77, 0x07},
+ [SPECIES_RAICHU] = {0x66, 0x08},
+ [SPECIES_SANDSHREW] = {0x65, 0x0d},
+ [SPECIES_SANDSLASH] = {0x86, 0x09},
+ [SPECIES_NIDORAN_F] = {0x55, 0x0c},
+ [SPECIES_NIDORINA] = {0x86, 0x0a},
+ [SPECIES_NIDOQUEEN] = {0x77, 0x06},
+ [SPECIES_NIDORAN_M] = {0x56, 0x08},
+ [SPECIES_NIDORINO] = {0x86, 0x09},
+ [SPECIES_NIDOKING] = {0x88, 0x03},
+ [SPECIES_CLEFAIRY] = {0x65, 0x0d},
+ [SPECIES_CLEFABLE] = {0x76, 0x0a},
+ [SPECIES_VULPIX] = {0x76, 0x09},
+ [SPECIES_NINETALES] = {0x77, 0x05},
+ [SPECIES_JIGGLYPUFF] = {0x65, 0x0d},
+ [SPECIES_WIGGLYTUFF] = {0x66, 0x08},
+ [SPECIES_ZUBAT] = {0x76, 0x0b},
+ [SPECIES_GOLBAT] = {0x87, 0x06},
+ [SPECIES_ODDISH] = {0x56, 0x0b},
+ [SPECIES_GLOOM] = {0x66, 0x0a},
+ [SPECIES_VILEPLUME] = {0x87, 0x07},
+ [SPECIES_PARAS] = {0x63, 0x14},
+ [SPECIES_PARASECT] = {0x87, 0x07},
+ [SPECIES_VENONAT] = {0x77, 0x06},
+ [SPECIES_VENOMOTH] = {0x77, 0x04},
+ [SPECIES_DIGLETT] = {0x54, 0x10},
+ [SPECIES_DUGTRIO] = {0x66, 0x0b},
+ [SPECIES_MEOWTH] = {0x65, 0x0c},
+ [SPECIES_PERSIAN] = {0x87, 0x07},
+ [SPECIES_PSYDUCK] = {0x67, 0x07},
+ [SPECIES_GOLDUCK] = {0x77, 0x05},
+ [SPECIES_MANKEY] = {0x76, 0x0b},
+ [SPECIES_PRIMEAPE] = {0x77, 0x07},
+ [SPECIES_GROWLITHE] = {0x66, 0x08},
+ [SPECIES_ARCANINE] = {0x87, 0x06},
+ [SPECIES_POLIWAG] = {0x74, 0x10},
+ [SPECIES_POLIWHIRL] = {0x65, 0x0c},
+ [SPECIES_POLIWRATH] = {0x86, 0x0b},
+ [SPECIES_ABRA] = {0x66, 0x0b},
+ [SPECIES_KADABRA] = {0x76, 0x08},
+ [SPECIES_ALAKAZAM] = {0x67, 0x05},
+ [SPECIES_MACHOP] = {0x65, 0x0c},
+ [SPECIES_MACHOKE] = {0x76, 0x09},
+ [SPECIES_MACHAMP] = {0x67, 0x04},
+ [SPECIES_BELLSPROUT] = {0x66, 0x0a},
+ [SPECIES_WEEPINBELL] = {0x66, 0x09},
+ [SPECIES_VICTREEBEL] = {0x87, 0x06},
+ [SPECIES_TENTACOOL] = {0x56, 0x0a},
+ [SPECIES_TENTACRUEL] = {0x86, 0x0b},
+ [SPECIES_GEODUDE] = {0x66, 0x0b},
+ [SPECIES_GRAVELER] = {0x75, 0x0c},
+ [SPECIES_GOLEM] = {0x84, 0x10},
+ [SPECIES_PONYTA] = {0x66, 0x09},
+ [SPECIES_RAPIDASH] = {0x87, 0x05},
+ [SPECIES_SLOWPOKE] = {0x85, 0x0e},
+ [SPECIES_SLOWBRO] = {0x86, 0x0a},
+ [SPECIES_MAGNEMITE] = {0x43, 0x14},
+ [SPECIES_MAGNETON] = {0x66, 0x0a},
+ [SPECIES_FARFETCHD] = {0x66, 0x0a},
+ [SPECIES_DODUO] = {0x66, 0x08},
+ [SPECIES_DODRIO] = {0x88, 0x01},
+ [SPECIES_SEEL] = {0x66, 0x0a},
+ [SPECIES_DEWGONG] = {0x77, 0x05},
+ [SPECIES_GRIMER] = {0x75, 0x0c},
+ [SPECIES_MUK] = {0x87, 0x05},
+ [SPECIES_SHELLDER] = {0x76, 0x0b},
+ [SPECIES_CLOYSTER] = {0x87, 0x06},
+ [SPECIES_GASTLY] = {0x85, 0x0e},
+ [SPECIES_HAUNTER] = {0x76, 0x08},
+ [SPECIES_GENGAR] = {0x76, 0x09},
+ [SPECIES_ONIX] = {0x78, 0x00},
+ [SPECIES_DROWZEE] = {0x65, 0x0d},
+ [SPECIES_HYPNO] = {0x66, 0x09},
+ [SPECIES_KRABBY] = {0x66, 0x0a},
+ [SPECIES_KINGLER] = {0x77, 0x04},
+ [SPECIES_VOLTORB] = {0x55, 0x0e},
+ [SPECIES_ELECTRODE] = {0x65, 0x0d},
+ [SPECIES_EXEGGCUTE] = {0x65, 0x0d},
+ [SPECIES_EXEGGUTOR] = {0x87, 0x04},
+ [SPECIES_CUBONE] = {0x66, 0x0a},
+ [SPECIES_MAROWAK] = {0x66, 0x08},
+ [SPECIES_HITMONLEE] = {0x65, 0x0c},
+ [SPECIES_HITMONCHAN] = {0x65, 0x0c},
+ [SPECIES_LICKITUNG] = {0x65, 0x0e},
+ [SPECIES_KOFFING] = {0x66, 0x09},
+ [SPECIES_WEEZING] = {0x77, 0x06},
+ [SPECIES_RHYHORN] = {0x85, 0x0c},
+ [SPECIES_RHYDON] = {0x88, 0x03},
+ [SPECIES_CHANSEY] = {0x86, 0x0b},
+ [SPECIES_TANGELA] = {0x85, 0x0e},
+ [SPECIES_KANGASKHAN] = {0x77, 0x05},
+ [SPECIES_HORSEA] = {0x66, 0x09},
+ [SPECIES_SEADRA] = {0x66, 0x08},
+ [SPECIES_GOLDEEN] = {0x66, 0x08},
+ [SPECIES_SEAKING] = {0x76, 0x0b},
+ [SPECIES_STARYU] = {0x65, 0x0d},
+ [SPECIES_STARMIE] = {0x85, 0x0e},
+ [SPECIES_MR_MIME] = {0x85, 0x0d},
+ [SPECIES_SCYTHER] = {0x77, 0x07},
+ [SPECIES_JYNX] = {0x86, 0x0a},
+ [SPECIES_ELECTABUZZ] = {0x66, 0x08},
+ [SPECIES_MAGMAR] = {0x66, 0x08},
+ [SPECIES_PINSIR] = {0x66, 0x09},
+ [SPECIES_TAUROS] = {0x85, 0x0d},
+ [SPECIES_MAGIKARP] = {0x76, 0x09},
+ [SPECIES_GYARADOS] = {0x78, 0x00},
+ [SPECIES_LAPRAS] = {0x77, 0x04},
+ [SPECIES_DITTO] = {0x54, 0x11},
+ [SPECIES_EEVEE] = {0x66, 0x0a},
+ [SPECIES_VAPOREON] = {0x66, 0x0a},
+ [SPECIES_JOLTEON] = {0x87, 0x06},
+ [SPECIES_FLAREON] = {0x67, 0x05},
+ [SPECIES_PORYGON] = {0x65, 0x0d},
+ [SPECIES_OMANYTE] = {0x66, 0x0a},
+ [SPECIES_OMASTAR] = {0x66, 0x08},
+ [SPECIES_KABUTO] = {0x65, 0x0d},
+ [SPECIES_KABUTOPS] = {0x77, 0x05},
+ [SPECIES_AERODACTYL] = {0x86, 0x08},
+ [SPECIES_SNORLAX] = {0x86, 0x0b},
+ [SPECIES_ARTICUNO] = {0x65, 0x0c},
+ [SPECIES_ZAPDOS] = {0x76, 0x0b},
+ [SPECIES_MOLTRES] = {0x87, 0x04},
+ [SPECIES_DRATINI] = {0x66, 0x09},
+ [SPECIES_DRAGONAIR] = {0x78, 0x00},
+ [SPECIES_DRAGONITE] = {0x87, 0x06},
+ [SPECIES_MEWTWO] = {0x78, 0x01},
+ [SPECIES_MEW] = {0x66, 0x08},
+ [SPECIES_CHIKORITA] = {0x56, 0x0a},
+ [SPECIES_BAYLEEF] = {0x66, 0x08},
+ [SPECIES_MEGANIUM] = {0x78, 0x00},
+ [SPECIES_CYNDAQUIL] = {0x76, 0x09},
+ [SPECIES_QUILAVA] = {0x87, 0x04},
+ [SPECIES_TYPHLOSION] = {0x87, 0x04},
+ [SPECIES_TOTODILE] = {0x66, 0x0b},
+ [SPECIES_CROCONAW] = {0x67, 0x07},
+ [SPECIES_FERALIGATR] = {0x88, 0x01},
+ [SPECIES_SENTRET] = {0x67, 0x05},
+ [SPECIES_FURRET] = {0x66, 0x08},
+ [SPECIES_HOOTHOOT] = {0x66, 0x08},
+ [SPECIES_NOCTOWL] = {0x68, 0x03},
+ [SPECIES_LEDYBA] = {0x76, 0x0b},
+ [SPECIES_LEDIAN] = {0x77, 0x07},
+ [SPECIES_SPINARAK] = {0x73, 0x15},
+ [SPECIES_ARIADOS] = {0x86, 0x0b},
+ [SPECIES_CROBAT] = {0x87, 0x05},
+ [SPECIES_CHINCHOU] = {0x86, 0x08},
+ [SPECIES_LANTURN] = {0x86, 0x08},
+ [SPECIES_PICHU] = {0x66, 0x0b},
+ [SPECIES_CLEFFA] = {0x65, 0x0f},
+ [SPECIES_IGGLYBUFF] = {0x66, 0x0b},
+ [SPECIES_TOGEPI] = {0x54, 0x10},
+ [SPECIES_TOGETIC] = {0x66, 0x08},
+ [SPECIES_NATU] = {0x54, 0x11},
+ [SPECIES_XATU] = {0x76, 0x08},
+ [SPECIES_MAREEP] = {0x66, 0x09},
+ [SPECIES_FLAAFFY] = {0x66, 0x09},
+ [SPECIES_AMPHAROS] = {0x88, 0x01},
+ [SPECIES_BELLOSSOM] = {0x66, 0x0b},
+ [SPECIES_MARILL] = {0x75, 0x0c},
+ [SPECIES_AZUMARILL] = {0x86, 0x08},
+ [SPECIES_SUDOWOODO] = {0x66, 0x08},
+ [SPECIES_POLITOED] = {0x66, 0x09},
+ [SPECIES_HOPPIP] = {0x66, 0x0b},
+ [SPECIES_SKIPLOOM] = {0x65, 0x0d},
+ [SPECIES_JUMPLUFF] = {0x87, 0x04},
+ [SPECIES_AIPOM] = {0x66, 0x09},
+ [SPECIES_SUNKERN] = {0x56, 0x0a},
+ [SPECIES_SUNFLORA] = {0x66, 0x08},
+ [SPECIES_YANMA] = {0x77, 0x04},
+ [SPECIES_WOOPER] = {0x85, 0x0f},
+ [SPECIES_QUAGSIRE] = {0x76, 0x08},
+ [SPECIES_ESPEON] = {0x76, 0x0b},
+ [SPECIES_UMBREON] = {0x87, 0x04},
+ [SPECIES_MURKROW] = {0x66, 0x09},
+ [SPECIES_SLOWKING] = {0x66, 0x08},
+ [SPECIES_MISDREAVUS] = {0x66, 0x0a},
+ [SPECIES_UNOWN] = {0x36, 0x08},
+ [SPECIES_WOBBUFFET] = {0x75, 0x0c},
+ [SPECIES_GIRAFARIG] = {0x87, 0x05},
+ [SPECIES_PINECO] = {0x65, 0x0f},
+ [SPECIES_FORRETRESS] = {0x84, 0x10},
+ [SPECIES_DUNSPARCE] = {0x85, 0x0f},
+ [SPECIES_GLIGAR] = {0x87, 0x05},
+ [SPECIES_STEELIX] = {0x88, 0x00},
+ [SPECIES_SNUBBULL] = {0x76, 0x0a},
+ [SPECIES_GRANBULL] = {0x87, 0x05},
+ [SPECIES_QWILFISH] = {0x77, 0x07},
+ [SPECIES_SCIZOR] = {0x77, 0x04},
+ [SPECIES_SHUCKLE] = {0x56, 0x0b},
+ [SPECIES_HERACROSS] = {0x77, 0x04},
+ [SPECIES_SNEASEL] = {0x66, 0x08},
+ [SPECIES_TEDDIURSA] = {0x66, 0x08},
+ [SPECIES_URSARING] = {0x88, 0x03},
+ [SPECIES_SLUGMA] = {0x66, 0x08},
+ [SPECIES_MAGCARGO] = {0x76, 0x09},
+ [SPECIES_SWINUB] = {0x63, 0x15},
+ [SPECIES_PILOSWINE] = {0x75, 0x0d},
+ [SPECIES_CORSOLA] = {0x65, 0x0c},
+ [SPECIES_REMORAID] = {0x75, 0x0d},
+ [SPECIES_OCTILLERY] = {0x66, 0x0a},
+ [SPECIES_DELIBIRD] = {0x67, 0x06},
+ [SPECIES_MANTINE] = {0x87, 0x07},
+ [SPECIES_SKARMORY] = {0x87, 0x04},
+ [SPECIES_HOUNDOUR] = {0x55, 0x0c},
+ [SPECIES_HOUNDOOM] = {0x87, 0x07},
+ [SPECIES_KINGDRA] = {0x87, 0x06},
+ [SPECIES_PHANPY] = {0x65, 0x0e},
+ [SPECIES_DONPHAN] = {0x85, 0x0d},
+ [SPECIES_PORYGON2] = {0x76, 0x0a},
+ [SPECIES_STANTLER] = {0x78, 0x03},
+ [SPECIES_SMEARGLE] = {0x76, 0x0a},
+ [SPECIES_TYROGUE] = {0x66, 0x08},
+ [SPECIES_HITMONTOP] = {0x87, 0x05},
+ [SPECIES_SMOOCHUM] = {0x56, 0x09},
+ [SPECIES_ELEKID] = {0x66, 0x08},
+ [SPECIES_MAGBY] = {0x66, 0x0b},
+ [SPECIES_MILTANK] = {0x87, 0x07},
+ [SPECIES_BLISSEY] = {0x85, 0x0d},
+ [SPECIES_RAIKOU] = {0x86, 0x0a},
+ [SPECIES_ENTEI] = {0x87, 0x06},
+ [SPECIES_SUICUNE] = {0x88, 0x03},
+ [SPECIES_LARVITAR] = {0x66, 0x08},
+ [SPECIES_PUPITAR] = {0x67, 0x05},
+ [SPECIES_TYRANITAR] = {0x88, 0x00},
+ [SPECIES_LUGIA] = {0x88, 0x01},
+ [SPECIES_HO_OH] = {0x88, 0x01},
+ [SPECIES_CELEBI] = {0x66, 0x08},
+ [SPECIES_OLD_UNOWN_B] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_C] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_D] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_E] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_F] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_G] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_H] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_I] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_J] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_K] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_L] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_M] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_N] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_O] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_P] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_Q] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_R] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_S] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_T] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_U] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_V] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_W] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_X] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_Y] = {0x88, 0x02},
+ [SPECIES_OLD_UNOWN_Z] = {0x88, 0x02},
+ [SPECIES_TREECKO] = {0x87, 0x06},
+ [SPECIES_GROVYLE] = {0x86, 0x08},
+ [SPECIES_SCEPTILE] = {0x88, 0x01},
+ [SPECIES_TORCHIC] = {0x67, 0x05},
+ [SPECIES_COMBUSKEN] = {0x88, 0x00},
+ [SPECIES_BLAZIKEN] = {0x88, 0x00},
+ [SPECIES_MUDKIP] = {0x77, 0x05},
+ [SPECIES_MARSHTOMP] = {0x87, 0x04},
+ [SPECIES_SWAMPERT] = {0x87, 0x05},
+ [SPECIES_POOCHYENA] = {0x76, 0x09},
+ [SPECIES_MIGHTYENA] = {0x87, 0x04},
+ [SPECIES_ZIGZAGOON] = {0x76, 0x0b},
+ [SPECIES_LINOONE] = {0x85, 0x0f},
+ [SPECIES_WURMPLE] = {0x76, 0x0b},
+ [SPECIES_SILCOON] = {0x83, 0x15},
+ [SPECIES_BEAUTIFLY] = {0x88, 0x00},
+ [SPECIES_CASCOON] = {0x73, 0x14},
+ [SPECIES_DUSTOX] = {0x83, 0x14},
+ [SPECIES_LOTAD] = {0x75, 0x0f},
+ [SPECIES_LOMBRE] = {0x86, 0x08},
+ [SPECIES_LUDICOLO] = {0x86, 0x0a},
+ [SPECIES_SEEDOT] = {0x86, 0x09},
+ [SPECIES_NUZLEAF] = {0x76, 0x0a},
+ [SPECIES_SHIFTRY] = {0x86, 0x08},
+ [SPECIES_NINCADA] = {0x83, 0x14},
+ [SPECIES_NINJASK] = {0x86, 0x08},
+ [SPECIES_SHEDINJA] = {0x77, 0x06},
+ [SPECIES_TAILLOW] = {0x64, 0x11},
+ [SPECIES_SWELLOW] = {0x86, 0x08},
+ [SPECIES_SHROOMISH] = {0x85, 0x0d},
+ [SPECIES_BRELOOM] = {0x87, 0x04},
+ [SPECIES_SPINDA] = {0x77, 0x04},
+ [SPECIES_WINGULL] = {0x85, 0x0e},
+ [SPECIES_PELIPPER] = {0x87, 0x06},
+ [SPECIES_SURSKIT] = {0x86, 0x0b},
+ [SPECIES_MASQUERAIN] = {0x88, 0x00},
+ [SPECIES_WAILMER] = {0x83, 0x15},
+ [SPECIES_WAILORD] = {0x83, 0x16},
+ [SPECIES_SKITTY] = {0x86, 0x0a},
+ [SPECIES_DELCATTY] = {0x86, 0x08},
+ [SPECIES_KECLEON] = {0x87, 0x06},
+ [SPECIES_BALTOY] = {0x86, 0x08},
+ [SPECIES_CLAYDOL] = {0x87, 0x07},
+ [SPECIES_NOSEPASS] = {0x85, 0x0c},
+ [SPECIES_TORKOAL] = {0x86, 0x0a},
+ [SPECIES_SABLEYE] = {0x76, 0x08},
+ [SPECIES_BARBOACH] = {0x66, 0x0a},
+ [SPECIES_WHISCASH] = {0x86, 0x0a},
+ [SPECIES_LUVDISC] = {0x46, 0x0a},
+ [SPECIES_CORPHISH] = {0x77, 0x07},
+ [SPECIES_CRAWDAUNT] = {0x87, 0x05},
+ [SPECIES_FEEBAS] = {0x67, 0x07},
+ [SPECIES_MILOTIC] = {0x68, 0x02},
+ [SPECIES_CARVANHA] = {0x87, 0x07},
+ [SPECIES_SHARPEDO] = {0x88, 0x02},
+ [SPECIES_TRAPINCH] = {0x75, 0x0e},
+ [SPECIES_VIBRAVA] = {0x74, 0x11},
+ [SPECIES_FLYGON] = {0x88, 0x02},
+ [SPECIES_MAKUHITA] = {0x76, 0x0b},
+ [SPECIES_HARIYAMA] = {0x87, 0x07},
+ [SPECIES_ELECTRIKE] = {0x84, 0x10},
+ [SPECIES_MANECTRIC] = {0x87, 0x04},
+ [SPECIES_NUMEL] = {0x86, 0x0b},
+ [SPECIES_CAMERUPT] = {0x84, 0x13},
+ [SPECIES_SPHEAL] = {0x64, 0x12},
+ [SPECIES_SEALEO] = {0x86, 0x0a},
+ [SPECIES_WALREIN] = {0x87, 0x06},
+ [SPECIES_CACNEA] = {0x85, 0x0f},
+ [SPECIES_CACTURNE] = {0x87, 0x07},
+ [SPECIES_SNORUNT] = {0x76, 0x0a},
+ [SPECIES_GLALIE] = {0x85, 0x0c},
+ [SPECIES_LUNATONE] = {0x87, 0x05},
+ [SPECIES_SOLROCK] = {0x87, 0x05},
+ [SPECIES_AZURILL] = {0x86, 0x0a},
+ [SPECIES_SPOINK] = {0x56, 0x0b},
+ [SPECIES_GRUMPIG] = {0x87, 0x04},
+ [SPECIES_PLUSLE] = {0x76, 0x08},
+ [SPECIES_MINUN] = {0x76, 0x08},
+ [SPECIES_MAWILE] = {0x87, 0x04},
+ [SPECIES_MEDITITE] = {0x76, 0x0b},
+ [SPECIES_MEDICHAM] = {0x68, 0x03},
+ [SPECIES_SWABLU] = {0x86, 0x09},
+ [SPECIES_ALTARIA] = {0x87, 0x06},
+ [SPECIES_WYNAUT] = {0x77, 0x07},
+ [SPECIES_DUSKULL] = {0x66, 0x0b},
+ [SPECIES_DUSCLOPS] = {0x86, 0x08},
+ [SPECIES_ROSELIA] = {0x86, 0x08},
+ [SPECIES_SLAKOTH] = {0x85, 0x0f},
+ [SPECIES_VIGOROTH] = {0x86, 0x0a},
+ [SPECIES_SLAKING] = {0x86, 0x08},
+ [SPECIES_GULPIN] = {0x66, 0x0b},
+ [SPECIES_SWALOT] = {0x77, 0x06},
+ [SPECIES_TROPIUS] = {0x87, 0x07},
+ [SPECIES_WHISMUR] = {0x85, 0x0d},
+ [SPECIES_LOUDRED] = {0x86, 0x09},
+ [SPECIES_EXPLOUD] = {0x88, 0x03},
+ [SPECIES_CLAMPERL] = {0x85, 0x0d},
+ [SPECIES_HUNTAIL] = {0x68, 0x02},
+ [SPECIES_GOREBYSS] = {0x77, 0x05},
+ [SPECIES_ABSOL] = {0x78, 0x03},
+ [SPECIES_SHUPPET] = {0x77, 0x06},
+ [SPECIES_BANETTE] = {0x65, 0x0c},
+ [SPECIES_SEVIPER] = {0x88, 0x03},
+ [SPECIES_ZANGOOSE] = {0x88, 0x01},
+ [SPECIES_RELICANTH] = {0x86, 0x0a},
+ [SPECIES_ARON] = {0x54, 0x11},
+ [SPECIES_LAIRON] = {0x84, 0x11},
+ [SPECIES_AGGRON] = {0x87, 0x07},
+ [SPECIES_CASTFORM] = {0x45, 0x0d},
+ [SPECIES_VOLBEAT] = {0x76, 0x08},
+ [SPECIES_ILLUMISE] = {0x67, 0x06},
+ [SPECIES_LILEEP] = {0x86, 0x09},
+ [SPECIES_CRADILY] = {0x77, 0x04},
+ [SPECIES_ANORITH] = {0x83, 0x17},
+ [SPECIES_ARMALDO] = {0x77, 0x05},
+ [SPECIES_RALTS] = {0x45, 0x0d},
+ [SPECIES_KIRLIA] = {0x57, 0x06},
+ [SPECIES_GARDEVOIR] = {0x77, 0x04},
+ [SPECIES_BAGON] = {0x66, 0x08},
+ [SPECIES_SHELGON] = {0x85, 0x0d},
+ [SPECIES_SALAMENCE] = {0x77, 0x06},
+ [SPECIES_BELDUM] = {0x66, 0x0a},
+ [SPECIES_METANG] = {0x84, 0x10},
+ [SPECIES_METAGROSS] = {0x83, 0x14},
+ [SPECIES_REGIROCK] = {0x86, 0x0a},
+ [SPECIES_REGICE] = {0x85, 0x0e},
+ [SPECIES_REGISTEEL] = {0x85, 0x0e},
+ [SPECIES_KYOGRE] = {0x84, 0x13},
+ [SPECIES_GROUDON] = {0x87, 0x07},
+ [SPECIES_RAYQUAZA] = {0x78, 0x00},
+ [SPECIES_LATIAS] = {0x88, 0x02},
+ [SPECIES_LATIOS] = {0x88, 0x03},
+ [SPECIES_JIRACHI] = {0x87, 0x05},
+ [SPECIES_DEOXYS] = {0x86, 0x09},
+ [SPECIES_CHIMECHO] = {0x47, 0x07},
+ [SPECIES_EGG] = {0x36, 0x0a},
+ [SPECIES_UNOWN_B] = {0x56, 0x09},
+ [SPECIES_UNOWN_C] = {0x67, 0x06},
+ [SPECIES_UNOWN_D] = {0x56, 0x08},
+ [SPECIES_UNOWN_E] = {0x56, 0x0a},
+ [SPECIES_UNOWN_F] = {0x66, 0x0a},
+ [SPECIES_UNOWN_G] = {0x57, 0x05},
+ [SPECIES_UNOWN_H] = {0x66, 0x08},
+ [SPECIES_UNOWN_I] = {0x37, 0x07},
+ [SPECIES_UNOWN_J] = {0x46, 0x09},
+ [SPECIES_UNOWN_K] = {0x57, 0x07},
+ [SPECIES_UNOWN_L] = {0x46, 0x0a},
+ [SPECIES_UNOWN_M] = {0x65, 0x0d},
+ [SPECIES_UNOWN_N] = {0x65, 0x0d},
+ [SPECIES_UNOWN_O] = {0x66, 0x08},
+ [SPECIES_UNOWN_P] = {0x46, 0x0a},
+ [SPECIES_UNOWN_Q] = {0x55, 0x0f},
+ [SPECIES_UNOWN_R] = {0x45, 0x0c},
+ [SPECIES_UNOWN_S] = {0x57, 0x04},
+ [SPECIES_UNOWN_T] = {0x45, 0x0d},
+ [SPECIES_UNOWN_U] = {0x65, 0x0d},
+ [SPECIES_UNOWN_V] = {0x56, 0x0b},
+ [SPECIES_UNOWN_W] = {0x55, 0x0d},
+ [SPECIES_UNOWN_X] = {0x55, 0x0f},
+ [SPECIES_UNOWN_Y] = {0x46, 0x0a},
+ [SPECIES_UNOWN_Z] = {0x46, 0x0a},
+ [SPECIES_UNOWN_EMARK] = {0x37, 0x06},
+ [SPECIES_UNOWN_QMARK] = {0x47, 0x06},
};
+
diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h
index 7426a8dc4..c6fd1300b 100644
--- a/src/data/pokemon_graphics/back_pic_table.h
+++ b/src/data/pokemon_graphics/back_pic_table.h
@@ -1,443 +1,444 @@
const struct CompressedSpriteSheet gMonBackPicTable[] =
{
- gMonBackPic_CircledQuestionMark, 0x800, 0,
- gMonBackPic_Bulbasaur, 0x800, 1,
- gMonBackPic_Ivysaur, 0x800, 2,
- gMonBackPic_Venusaur, 0x800, 3,
- gMonBackPic_Charmander, 0x800, 4,
- gMonBackPic_Charmeleon, 0x800, 5,
- gMonBackPic_Charizard, 0x800, 6,
- gMonBackPic_Squirtle, 0x800, 7,
- gMonBackPic_Wartortle, 0x800, 8,
- gMonBackPic_Blastoise, 0x800, 9,
- gMonBackPic_Caterpie, 0x800, 10,
- gMonBackPic_Metapod, 0x800, 11,
- gMonBackPic_Butterfree, 0x800, 12,
- gMonBackPic_Weedle, 0x800, 13,
- gMonBackPic_Kakuna, 0x800, 14,
- gMonBackPic_Beedrill, 0x800, 15,
- gMonBackPic_Pidgey, 0x800, 16,
- gMonBackPic_Pidgeotto, 0x800, 17,
- gMonBackPic_Pidgeot, 0x800, 18,
- gMonBackPic_Rattata, 0x800, 19,
- gMonBackPic_Raticate, 0x800, 20,
- gMonBackPic_Spearow, 0x800, 21,
- gMonBackPic_Fearow, 0x800, 22,
- gMonBackPic_Ekans, 0x800, 23,
- gMonBackPic_Arbok, 0x800, 24,
- gMonBackPic_Pikachu, 0x800, 25,
- gMonBackPic_Raichu, 0x800, 26,
- gMonBackPic_Sandshrew, 0x800, 27,
- gMonBackPic_Sandslash, 0x800, 28,
- gMonBackPic_NidoranF, 0x800, 29,
- gMonBackPic_Nidorina, 0x800, 30,
- gMonBackPic_Nidoqueen, 0x800, 31,
- gMonBackPic_NidoranM, 0x800, 32,
- gMonBackPic_Nidorino, 0x800, 33,
- gMonBackPic_Nidoking, 0x800, 34,
- gMonBackPic_Clefairy, 0x800, 35,
- gMonBackPic_Clefable, 0x800, 36,
- gMonBackPic_Vulpix, 0x800, 37,
- gMonBackPic_Ninetales, 0x800, 38,
- gMonBackPic_Jigglypuff, 0x800, 39,
- gMonBackPic_Wigglytuff, 0x800, 40,
- gMonBackPic_Zubat, 0x800, 41,
- gMonBackPic_Golbat, 0x800, 42,
- gMonBackPic_Oddish, 0x800, 43,
- gMonBackPic_Gloom, 0x800, 44,
- gMonBackPic_Vileplume, 0x800, 45,
- gMonBackPic_Paras, 0x800, 46,
- gMonBackPic_Parasect, 0x800, 47,
- gMonBackPic_Venonat, 0x800, 48,
- gMonBackPic_Venomoth, 0x800, 49,
- gMonBackPic_Diglett, 0x800, 50,
- gMonBackPic_Dugtrio, 0x800, 51,
- gMonBackPic_Meowth, 0x800, 52,
- gMonBackPic_Persian, 0x800, 53,
- gMonBackPic_Psyduck, 0x800, 54,
- gMonBackPic_Golduck, 0x800, 55,
- gMonBackPic_Mankey, 0x800, 56,
- gMonBackPic_Primeape, 0x800, 57,
- gMonBackPic_Growlithe, 0x800, 58,
- gMonBackPic_Arcanine, 0x800, 59,
- gMonBackPic_Poliwag, 0x800, 60,
- gMonBackPic_Poliwhirl, 0x800, 61,
- gMonBackPic_Poliwrath, 0x800, 62,
- gMonBackPic_Abra, 0x800, 63,
- gMonBackPic_Kadabra, 0x800, 64,
- gMonBackPic_Alakazam, 0x800, 65,
- gMonBackPic_Machop, 0x800, 66,
- gMonBackPic_Machoke, 0x800, 67,
- gMonBackPic_Machamp, 0x800, 68,
- gMonBackPic_Bellsprout, 0x800, 69,
- gMonBackPic_Weepinbell, 0x800, 70,
- gMonBackPic_Victreebel, 0x800, 71,
- gMonBackPic_Tentacool, 0x800, 72,
- gMonBackPic_Tentacruel, 0x800, 73,
- gMonBackPic_Geodude, 0x800, 74,
- gMonBackPic_Graveler, 0x800, 75,
- gMonBackPic_Golem, 0x800, 76,
- gMonBackPic_Ponyta, 0x800, 77,
- gMonBackPic_Rapidash, 0x800, 78,
- gMonBackPic_Slowpoke, 0x800, 79,
- gMonBackPic_Slowbro, 0x800, 80,
- gMonBackPic_Magnemite, 0x800, 81,
- gMonBackPic_Magneton, 0x800, 82,
- gMonBackPic_Farfetchd, 0x800, 83,
- gMonBackPic_Doduo, 0x800, 84,
- gMonBackPic_Dodrio, 0x800, 85,
- gMonBackPic_Seel, 0x800, 86,
- gMonBackPic_Dewgong, 0x800, 87,
- gMonBackPic_Grimer, 0x800, 88,
- gMonBackPic_Muk, 0x800, 89,
- gMonBackPic_Shellder, 0x800, 90,
- gMonBackPic_Cloyster, 0x800, 91,
- gMonBackPic_Gastly, 0x800, 92,
- gMonBackPic_Haunter, 0x800, 93,
- gMonBackPic_Gengar, 0x800, 94,
- gMonBackPic_Onix, 0x800, 95,
- gMonBackPic_Drowzee, 0x800, 96,
- gMonBackPic_Hypno, 0x800, 97,
- gMonBackPic_Krabby, 0x800, 98,
- gMonBackPic_Kingler, 0x800, 99,
- gMonBackPic_Voltorb, 0x800, 100,
- gMonBackPic_Electrode, 0x800, 101,
- gMonBackPic_Exeggcute, 0x800, 102,
- gMonBackPic_Exeggutor, 0x800, 103,
- gMonBackPic_Cubone, 0x800, 104,
- gMonBackPic_Marowak, 0x800, 105,
- gMonBackPic_Hitmonlee, 0x800, 106,
- gMonBackPic_Hitmonchan, 0x800, 107,
- gMonBackPic_Lickitung, 0x800, 108,
- gMonBackPic_Koffing, 0x800, 109,
- gMonBackPic_Weezing, 0x800, 110,
- gMonBackPic_Rhyhorn, 0x800, 111,
- gMonBackPic_Rhydon, 0x800, 112,
- gMonBackPic_Chansey, 0x800, 113,
- gMonBackPic_Tangela, 0x800, 114,
- gMonBackPic_Kangaskhan, 0x800, 115,
- gMonBackPic_Horsea, 0x800, 116,
- gMonBackPic_Seadra, 0x800, 117,
- gMonBackPic_Goldeen, 0x800, 118,
- gMonBackPic_Seaking, 0x800, 119,
- gMonBackPic_Staryu, 0x800, 120,
- gMonBackPic_Starmie, 0x800, 121,
- gMonBackPic_Mrmime, 0x800, 122,
- gMonBackPic_Scyther, 0x800, 123,
- gMonBackPic_Jynx, 0x800, 124,
- gMonBackPic_Electabuzz, 0x800, 125,
- gMonBackPic_Magmar, 0x800, 126,
- gMonBackPic_Pinsir, 0x800, 127,
- gMonBackPic_Tauros, 0x800, 128,
- gMonBackPic_Magikarp, 0x800, 129,
- gMonBackPic_Gyarados, 0x800, 130,
- gMonBackPic_Lapras, 0x800, 131,
- gMonBackPic_Ditto, 0x800, 132,
- gMonBackPic_Eevee, 0x800, 133,
- gMonBackPic_Vaporeon, 0x800, 134,
- gMonBackPic_Jolteon, 0x800, 135,
- gMonBackPic_Flareon, 0x800, 136,
- gMonBackPic_Porygon, 0x800, 137,
- gMonBackPic_Omanyte, 0x800, 138,
- gMonBackPic_Omastar, 0x800, 139,
- gMonBackPic_Kabuto, 0x800, 140,
- gMonBackPic_Kabutops, 0x800, 141,
- gMonBackPic_Aerodactyl, 0x800, 142,
- gMonBackPic_Snorlax, 0x800, 143,
- gMonBackPic_Articuno, 0x800, 144,
- gMonBackPic_Zapdos, 0x800, 145,
- gMonBackPic_Moltres, 0x800, 146,
- gMonBackPic_Dratini, 0x800, 147,
- gMonBackPic_Dragonair, 0x800, 148,
- gMonBackPic_Dragonite, 0x800, 149,
- gMonBackPic_Mewtwo, 0x800, 150,
- gMonBackPic_Mew, 0x800, 151,
- gMonBackPic_Chikorita, 0x800, 152,
- gMonBackPic_Bayleef, 0x800, 153,
- gMonBackPic_Meganium, 0x800, 154,
- gMonBackPic_Cyndaquil, 0x800, 155,
- gMonBackPic_Quilava, 0x800, 156,
- gMonBackPic_Typhlosion, 0x800, 157,
- gMonBackPic_Totodile, 0x800, 158,
- gMonBackPic_Croconaw, 0x800, 159,
- gMonBackPic_Feraligatr, 0x800, 160,
- gMonBackPic_Sentret, 0x800, 161,
- gMonBackPic_Furret, 0x800, 162,
- gMonBackPic_Hoothoot, 0x800, 163,
- gMonBackPic_Noctowl, 0x800, 164,
- gMonBackPic_Ledyba, 0x800, 165,
- gMonBackPic_Ledian, 0x800, 166,
- gMonBackPic_Spinarak, 0x800, 167,
- gMonBackPic_Ariados, 0x800, 168,
- gMonBackPic_Crobat, 0x800, 169,
- gMonBackPic_Chinchou, 0x800, 170,
- gMonBackPic_Lanturn, 0x800, 171,
- gMonBackPic_Pichu, 0x800, 172,
- gMonBackPic_Cleffa, 0x800, 173,
- gMonBackPic_Igglybuff, 0x800, 174,
- gMonBackPic_Togepi, 0x800, 175,
- gMonBackPic_Togetic, 0x800, 176,
- gMonBackPic_Natu, 0x800, 177,
- gMonBackPic_Xatu, 0x800, 178,
- gMonBackPic_Mareep, 0x800, 179,
- gMonBackPic_Flaaffy, 0x800, 180,
- gMonBackPic_Ampharos, 0x800, 181,
- gMonBackPic_Bellossom, 0x800, 182,
- gMonBackPic_Marill, 0x800, 183,
- gMonBackPic_Azumarill, 0x800, 184,
- gMonBackPic_Sudowoodo, 0x800, 185,
- gMonBackPic_Politoed, 0x800, 186,
- gMonBackPic_Hoppip, 0x800, 187,
- gMonBackPic_Skiploom, 0x800, 188,
- gMonBackPic_Jumpluff, 0x800, 189,
- gMonBackPic_Aipom, 0x800, 190,
- gMonBackPic_Sunkern, 0x800, 191,
- gMonBackPic_Sunflora, 0x800, 192,
- gMonBackPic_Yanma, 0x800, 193,
- gMonBackPic_Wooper, 0x800, 194,
- gMonBackPic_Quagsire, 0x800, 195,
- gMonBackPic_Espeon, 0x800, 196,
- gMonBackPic_Umbreon, 0x800, 197,
- gMonBackPic_Murkrow, 0x800, 198,
- gMonBackPic_Slowking, 0x800, 199,
- gMonBackPic_Misdreavus, 0x800, 200,
- gMonBackPic_UnownA, 0x800, 201,
- gMonBackPic_Wobbuffet, 0x800, 202,
- gMonBackPic_Girafarig, 0x800, 203,
- gMonBackPic_Pineco, 0x800, 204,
- gMonBackPic_Forretress, 0x800, 205,
- gMonBackPic_Dunsparce, 0x800, 206,
- gMonBackPic_Gligar, 0x800, 207,
- gMonBackPic_Steelix, 0x800, 208,
- gMonBackPic_Snubbull, 0x800, 209,
- gMonBackPic_Granbull, 0x800, 210,
- gMonBackPic_Qwilfish, 0x800, 211,
- gMonBackPic_Scizor, 0x800, 212,
- gMonBackPic_Shuckle, 0x800, 213,
- gMonBackPic_Heracross, 0x800, 214,
- gMonBackPic_Sneasel, 0x800, 215,
- gMonBackPic_Teddiursa, 0x800, 216,
- gMonBackPic_Ursaring, 0x800, 217,
- gMonBackPic_Slugma, 0x800, 218,
- gMonBackPic_Magcargo, 0x800, 219,
- gMonBackPic_Swinub, 0x800, 220,
- gMonBackPic_Piloswine, 0x800, 221,
- gMonBackPic_Corsola, 0x800, 222,
- gMonBackPic_Remoraid, 0x800, 223,
- gMonBackPic_Octillery, 0x800, 224,
- gMonBackPic_Delibird, 0x800, 225,
- gMonBackPic_Mantine, 0x800, 226,
- gMonBackPic_Skarmory, 0x800, 227,
- gMonBackPic_Houndour, 0x800, 228,
- gMonBackPic_Houndoom, 0x800, 229,
- gMonBackPic_Kingdra, 0x800, 230,
- gMonBackPic_Phanpy, 0x800, 231,
- gMonBackPic_Donphan, 0x800, 232,
- gMonBackPic_Porygon2, 0x800, 233,
- gMonBackPic_Stantler, 0x800, 234,
- gMonBackPic_Smeargle, 0x800, 235,
- gMonBackPic_Tyrogue, 0x800, 236,
- gMonBackPic_Hitmontop, 0x800, 237,
- gMonBackPic_Smoochum, 0x800, 238,
- gMonBackPic_Elekid, 0x800, 239,
- gMonBackPic_Magby, 0x800, 240,
- gMonBackPic_Miltank, 0x800, 241,
- gMonBackPic_Blissey, 0x800, 242,
- gMonBackPic_Raikou, 0x800, 243,
- gMonBackPic_Entei, 0x800, 244,
- gMonBackPic_Suicune, 0x800, 245,
- gMonBackPic_Larvitar, 0x800, 246,
- gMonBackPic_Pupitar, 0x800, 247,
- gMonBackPic_Tyranitar, 0x800, 248,
- gMonBackPic_Lugia, 0x800, 249,
- gMonBackPic_HoOh, 0x800, 250,
- gMonBackPic_Celebi, 0x800, 251,
- gMonBackPic_DoubleQuestionMark, 0x800, 252,
- gMonBackPic_DoubleQuestionMark, 0x800, 253,
- gMonBackPic_DoubleQuestionMark, 0x800, 254,
- gMonBackPic_DoubleQuestionMark, 0x800, 255,
- gMonBackPic_DoubleQuestionMark, 0x800, 256,
- gMonBackPic_DoubleQuestionMark, 0x800, 257,
- gMonBackPic_DoubleQuestionMark, 0x800, 258,
- gMonBackPic_DoubleQuestionMark, 0x800, 259,
- gMonBackPic_DoubleQuestionMark, 0x800, 260,
- gMonBackPic_DoubleQuestionMark, 0x800, 261,
- gMonBackPic_DoubleQuestionMark, 0x800, 262,
- gMonBackPic_DoubleQuestionMark, 0x800, 263,
- gMonBackPic_DoubleQuestionMark, 0x800, 264,
- gMonBackPic_DoubleQuestionMark, 0x800, 265,
- gMonBackPic_DoubleQuestionMark, 0x800, 266,
- gMonBackPic_DoubleQuestionMark, 0x800, 267,
- gMonBackPic_DoubleQuestionMark, 0x800, 268,
- gMonBackPic_DoubleQuestionMark, 0x800, 269,
- gMonBackPic_DoubleQuestionMark, 0x800, 270,
- gMonBackPic_DoubleQuestionMark, 0x800, 271,
- gMonBackPic_DoubleQuestionMark, 0x800, 272,
- gMonBackPic_DoubleQuestionMark, 0x800, 273,
- gMonBackPic_DoubleQuestionMark, 0x800, 274,
- gMonBackPic_DoubleQuestionMark, 0x800, 275,
- gMonBackPic_DoubleQuestionMark, 0x800, 276,
- gMonBackPic_Treecko, 0x800, 277,
- gMonBackPic_Grovyle, 0x800, 278,
- gMonBackPic_Sceptile, 0x800, 279,
- gMonBackPic_Torchic, 0x800, 280,
- gMonBackPic_Combusken, 0x800, 281,
- gMonBackPic_Blaziken, 0x800, 282,
- gMonBackPic_Mudkip, 0x800, 283,
- gMonBackPic_Marshtomp, 0x800, 284,
- gMonBackPic_Swampert, 0x800, 285,
- gMonBackPic_Poochyena, 0x800, 286,
- gMonBackPic_Mightyena, 0x800, 287,
- gMonBackPic_Zigzagoon, 0x800, 288,
- gMonBackPic_Linoone, 0x800, 289,
- gMonBackPic_Wurmple, 0x800, 290,
- gMonBackPic_Silcoon, 0x800, 291,
- gMonBackPic_Beautifly, 0x800, 292,
- gMonBackPic_Cascoon, 0x800, 293,
- gMonBackPic_Dustox, 0x800, 294,
- gMonBackPic_Lotad, 0x800, 295,
- gMonBackPic_Lombre, 0x800, 296,
- gMonBackPic_Ludicolo, 0x800, 297,
- gMonBackPic_Seedot, 0x800, 298,
- gMonBackPic_Nuzleaf, 0x800, 299,
- gMonBackPic_Shiftry, 0x800, 300,
- gMonBackPic_Nincada, 0x800, 301,
- gMonBackPic_Ninjask, 0x800, 302,
- gMonBackPic_Shedinja, 0x800, 303,
- gMonBackPic_Taillow, 0x800, 304,
- gMonBackPic_Swellow, 0x800, 305,
- gMonBackPic_Shroomish, 0x800, 306,
- gMonBackPic_Breloom, 0x800, 307,
- gMonBackPic_Spinda, 0x800, 308,
- gMonBackPic_Wingull, 0x800, 309,
- gMonBackPic_Pelipper, 0x800, 310,
- gMonBackPic_Surskit, 0x800, 311,
- gMonBackPic_Masquerain, 0x800, 312,
- gMonBackPic_Wailmer, 0x800, 313,
- gMonBackPic_Wailord, 0x800, 314,
- gMonBackPic_Skitty, 0x800, 315,
- gMonBackPic_Delcatty, 0x800, 316,
- gMonBackPic_Kecleon, 0x800, 317,
- gMonBackPic_Baltoy, 0x800, 318,
- gMonBackPic_Claydol, 0x800, 319,
- gMonBackPic_Nosepass, 0x800, 320,
- gMonBackPic_Torkoal, 0x800, 321,
- gMonBackPic_Sableye, 0x800, 322,
- gMonBackPic_Barboach, 0x800, 323,
- gMonBackPic_Whiscash, 0x800, 324,
- gMonBackPic_Luvdisc, 0x800, 325,
- gMonBackPic_Corphish, 0x800, 326,
- gMonBackPic_Crawdaunt, 0x800, 327,
- gMonBackPic_Feebas, 0x800, 328,
- gMonBackPic_Milotic, 0x800, 329,
- gMonBackPic_Carvanha, 0x800, 330,
- gMonBackPic_Sharpedo, 0x800, 331,
- gMonBackPic_Trapinch, 0x800, 332,
- gMonBackPic_Vibrava, 0x800, 333,
- gMonBackPic_Flygon, 0x800, 334,
- gMonBackPic_Makuhita, 0x800, 335,
- gMonBackPic_Hariyama, 0x800, 336,
- gMonBackPic_Electrike, 0x800, 337,
- gMonBackPic_Manectric, 0x800, 338,
- gMonBackPic_Numel, 0x800, 339,
- gMonBackPic_Camerupt, 0x800, 340,
- gMonBackPic_Spheal, 0x800, 341,
- gMonBackPic_Sealeo, 0x800, 342,
- gMonBackPic_Walrein, 0x800, 343,
- gMonBackPic_Cacnea, 0x800, 344,
- gMonBackPic_Cacturne, 0x800, 345,
- gMonBackPic_Snorunt, 0x800, 346,
- gMonBackPic_Glalie, 0x800, 347,
- gMonBackPic_Lunatone, 0x800, 348,
- gMonBackPic_Solrock, 0x800, 349,
- gMonBackPic_Azurill, 0x800, 350,
- gMonBackPic_Spoink, 0x800, 351,
- gMonBackPic_Grumpig, 0x800, 352,
- gMonBackPic_Plusle, 0x800, 353,
- gMonBackPic_Minun, 0x800, 354,
- gMonBackPic_Mawile, 0x800, 355,
- gMonBackPic_Meditite, 0x800, 356,
- gMonBackPic_Medicham, 0x800, 357,
- gMonBackPic_Swablu, 0x800, 358,
- gMonBackPic_Altaria, 0x800, 359,
- gMonBackPic_Wynaut, 0x800, 360,
- gMonBackPic_Duskull, 0x800, 361,
- gMonBackPic_Dusclops, 0x800, 362,
- gMonBackPic_Roselia, 0x800, 363,
- gMonBackPic_Slakoth, 0x800, 364,
- gMonBackPic_Vigoroth, 0x800, 365,
- gMonBackPic_Slaking, 0x800, 366,
- gMonBackPic_Gulpin, 0x800, 367,
- gMonBackPic_Swalot, 0x800, 368,
- gMonBackPic_Tropius, 0x800, 369,
- gMonBackPic_Whismur, 0x800, 370,
- gMonBackPic_Loudred, 0x800, 371,
- gMonBackPic_Exploud, 0x800, 372,
- gMonBackPic_Clamperl, 0x800, 373,
- gMonBackPic_Huntail, 0x800, 374,
- gMonBackPic_Gorebyss, 0x800, 375,
- gMonBackPic_Absol, 0x800, 376,
- gMonBackPic_Shuppet, 0x800, 377,
- gMonBackPic_Banette, 0x800, 378,
- gMonBackPic_Seviper, 0x800, 379,
- gMonBackPic_Zangoose, 0x800, 380,
- gMonBackPic_Relicanth, 0x800, 381,
- gMonBackPic_Aron, 0x800, 382,
- gMonBackPic_Lairon, 0x800, 383,
- gMonBackPic_Aggron, 0x800, 384,
- gMonBackPic_Castform, 0x800, 385,
- gMonBackPic_Volbeat, 0x800, 386,
- gMonBackPic_Illumise, 0x800, 387,
- gMonBackPic_Lileep, 0x800, 388,
- gMonBackPic_Cradily, 0x800, 389,
- gMonBackPic_Anorith, 0x800, 390,
- gMonBackPic_Armaldo, 0x800, 391,
- gMonBackPic_Ralts, 0x800, 392,
- gMonBackPic_Kirlia, 0x800, 393,
- gMonBackPic_Gardevoir, 0x800, 394,
- gMonBackPic_Bagon, 0x800, 395,
- gMonBackPic_Shelgon, 0x800, 396,
- gMonBackPic_Salamence, 0x800, 397,
- gMonBackPic_Beldum, 0x800, 398,
- gMonBackPic_Metang, 0x800, 399,
- gMonBackPic_Metagross, 0x800, 400,
- gMonBackPic_Regirock, 0x800, 401,
- gMonBackPic_Regice, 0x800, 402,
- gMonBackPic_Registeel, 0x800, 403,
- gMonBackPic_Kyogre, 0x800, 404,
- gMonBackPic_Groudon, 0x800, 405,
- gMonBackPic_Rayquaza, 0x800, 406,
- gMonBackPic_Latias, 0x800, 407,
- gMonBackPic_Latios, 0x800, 408,
- gMonBackPic_Jirachi, 0x800, 409,
- gMonBackPic_Deoxys, 0x800, 410,
- gMonBackPic_Chimecho, 0x800, 411,
- gMonStillFrontPic_Egg, 0x800, 412,
- gMonBackPic_UnownB, 0x800, 413,
- gMonBackPic_UnownC, 0x800, 414,
- gMonBackPic_UnownD, 0x800, 415,
- gMonBackPic_UnownE, 0x800, 416,
- gMonBackPic_UnownF, 0x800, 417,
- gMonBackPic_UnownG, 0x800, 418,
- gMonBackPic_UnownH, 0x800, 419,
- gMonBackPic_UnownI, 0x800, 420,
- gMonBackPic_UnownJ, 0x800, 421,
- gMonBackPic_UnownK, 0x800, 422,
- gMonBackPic_UnownL, 0x800, 423,
- gMonBackPic_UnownM, 0x800, 424,
- gMonBackPic_UnownN, 0x800, 425,
- gMonBackPic_UnownO, 0x800, 426,
- gMonBackPic_UnownP, 0x800, 427,
- gMonBackPic_UnownQ, 0x800, 428,
- gMonBackPic_UnownR, 0x800, 429,
- gMonBackPic_UnownS, 0x800, 430,
- gMonBackPic_UnownT, 0x800, 431,
- gMonBackPic_UnownU, 0x800, 432,
- gMonBackPic_UnownV, 0x800, 433,
- gMonBackPic_UnownW, 0x800, 434,
- gMonBackPic_UnownX, 0x800, 435,
- gMonBackPic_UnownY, 0x800, 436,
- gMonBackPic_UnownZ, 0x800, 437,
- gMonBackPic_UnownExclamationMark, 0x800, 438,
- gMonBackPic_UnownQuestionMark, 0x800, 439,
+ [SPECIES_NONE] = {gMonBackPic_CircledQuestionMark, 0x800, SPECIES_NONE},
+ [SPECIES_BULBASAUR] = {gMonBackPic_Bulbasaur, 0x800, SPECIES_BULBASAUR},
+ [SPECIES_IVYSAUR] = {gMonBackPic_Ivysaur, 0x800, SPECIES_IVYSAUR},
+ [SPECIES_VENUSAUR] = {gMonBackPic_Venusaur, 0x800, SPECIES_VENUSAUR},
+ [SPECIES_CHARMANDER] = {gMonBackPic_Charmander, 0x800, SPECIES_CHARMANDER},
+ [SPECIES_CHARMELEON] = {gMonBackPic_Charmeleon, 0x800, SPECIES_CHARMELEON},
+ [SPECIES_CHARIZARD] = {gMonBackPic_Charizard, 0x800, SPECIES_CHARIZARD},
+ [SPECIES_SQUIRTLE] = {gMonBackPic_Squirtle, 0x800, SPECIES_SQUIRTLE},
+ [SPECIES_WARTORTLE] = {gMonBackPic_Wartortle, 0x800, SPECIES_WARTORTLE},
+ [SPECIES_BLASTOISE] = {gMonBackPic_Blastoise, 0x800, SPECIES_BLASTOISE},
+ [SPECIES_CATERPIE] = {gMonBackPic_Caterpie, 0x800, SPECIES_CATERPIE},
+ [SPECIES_METAPOD] = {gMonBackPic_Metapod, 0x800, SPECIES_METAPOD},
+ [SPECIES_BUTTERFREE] = {gMonBackPic_Butterfree, 0x800, SPECIES_BUTTERFREE},
+ [SPECIES_WEEDLE] = {gMonBackPic_Weedle, 0x800, SPECIES_WEEDLE},
+ [SPECIES_KAKUNA] = {gMonBackPic_Kakuna, 0x800, SPECIES_KAKUNA},
+ [SPECIES_BEEDRILL] = {gMonBackPic_Beedrill, 0x800, SPECIES_BEEDRILL},
+ [SPECIES_PIDGEY] = {gMonBackPic_Pidgey, 0x800, SPECIES_PIDGEY},
+ [SPECIES_PIDGEOTTO] = {gMonBackPic_Pidgeotto, 0x800, SPECIES_PIDGEOTTO},
+ [SPECIES_PIDGEOT] = {gMonBackPic_Pidgeot, 0x800, SPECIES_PIDGEOT},
+ [SPECIES_RATTATA] = {gMonBackPic_Rattata, 0x800, SPECIES_RATTATA},
+ [SPECIES_RATICATE] = {gMonBackPic_Raticate, 0x800, SPECIES_RATICATE},
+ [SPECIES_SPEAROW] = {gMonBackPic_Spearow, 0x800, SPECIES_SPEAROW},
+ [SPECIES_FEAROW] = {gMonBackPic_Fearow, 0x800, SPECIES_FEAROW},
+ [SPECIES_EKANS] = {gMonBackPic_Ekans, 0x800, SPECIES_EKANS},
+ [SPECIES_ARBOK] = {gMonBackPic_Arbok, 0x800, SPECIES_ARBOK},
+ [SPECIES_PIKACHU] = {gMonBackPic_Pikachu, 0x800, SPECIES_PIKACHU},
+ [SPECIES_RAICHU] = {gMonBackPic_Raichu, 0x800, SPECIES_RAICHU},
+ [SPECIES_SANDSHREW] = {gMonBackPic_Sandshrew, 0x800, SPECIES_SANDSHREW},
+ [SPECIES_SANDSLASH] = {gMonBackPic_Sandslash, 0x800, SPECIES_SANDSLASH},
+ [SPECIES_NIDORAN_F] = {gMonBackPic_NidoranF, 0x800, SPECIES_NIDORAN_F},
+ [SPECIES_NIDORINA] = {gMonBackPic_Nidorina, 0x800, SPECIES_NIDORINA},
+ [SPECIES_NIDOQUEEN] = {gMonBackPic_Nidoqueen, 0x800, SPECIES_NIDOQUEEN},
+ [SPECIES_NIDORAN_M] = {gMonBackPic_NidoranM, 0x800, SPECIES_NIDORAN_M},
+ [SPECIES_NIDORINO] = {gMonBackPic_Nidorino, 0x800, SPECIES_NIDORINO},
+ [SPECIES_NIDOKING] = {gMonBackPic_Nidoking, 0x800, SPECIES_NIDOKING},
+ [SPECIES_CLEFAIRY] = {gMonBackPic_Clefairy, 0x800, SPECIES_CLEFAIRY},
+ [SPECIES_CLEFABLE] = {gMonBackPic_Clefable, 0x800, SPECIES_CLEFABLE},
+ [SPECIES_VULPIX] = {gMonBackPic_Vulpix, 0x800, SPECIES_VULPIX},
+ [SPECIES_NINETALES] = {gMonBackPic_Ninetales, 0x800, SPECIES_NINETALES},
+ [SPECIES_JIGGLYPUFF] = {gMonBackPic_Jigglypuff, 0x800, SPECIES_JIGGLYPUFF},
+ [SPECIES_WIGGLYTUFF] = {gMonBackPic_Wigglytuff, 0x800, SPECIES_WIGGLYTUFF},
+ [SPECIES_ZUBAT] = {gMonBackPic_Zubat, 0x800, SPECIES_ZUBAT},
+ [SPECIES_GOLBAT] = {gMonBackPic_Golbat, 0x800, SPECIES_GOLBAT},
+ [SPECIES_ODDISH] = {gMonBackPic_Oddish, 0x800, SPECIES_ODDISH},
+ [SPECIES_GLOOM] = {gMonBackPic_Gloom, 0x800, SPECIES_GLOOM},
+ [SPECIES_VILEPLUME] = {gMonBackPic_Vileplume, 0x800, SPECIES_VILEPLUME},
+ [SPECIES_PARAS] = {gMonBackPic_Paras, 0x800, SPECIES_PARAS},
+ [SPECIES_PARASECT] = {gMonBackPic_Parasect, 0x800, SPECIES_PARASECT},
+ [SPECIES_VENONAT] = {gMonBackPic_Venonat, 0x800, SPECIES_VENONAT},
+ [SPECIES_VENOMOTH] = {gMonBackPic_Venomoth, 0x800, SPECIES_VENOMOTH},
+ [SPECIES_DIGLETT] = {gMonBackPic_Diglett, 0x800, SPECIES_DIGLETT},
+ [SPECIES_DUGTRIO] = {gMonBackPic_Dugtrio, 0x800, SPECIES_DUGTRIO},
+ [SPECIES_MEOWTH] = {gMonBackPic_Meowth, 0x800, SPECIES_MEOWTH},
+ [SPECIES_PERSIAN] = {gMonBackPic_Persian, 0x800, SPECIES_PERSIAN},
+ [SPECIES_PSYDUCK] = {gMonBackPic_Psyduck, 0x800, SPECIES_PSYDUCK},
+ [SPECIES_GOLDUCK] = {gMonBackPic_Golduck, 0x800, SPECIES_GOLDUCK},
+ [SPECIES_MANKEY] = {gMonBackPic_Mankey, 0x800, SPECIES_MANKEY},
+ [SPECIES_PRIMEAPE] = {gMonBackPic_Primeape, 0x800, SPECIES_PRIMEAPE},
+ [SPECIES_GROWLITHE] = {gMonBackPic_Growlithe, 0x800, SPECIES_GROWLITHE},
+ [SPECIES_ARCANINE] = {gMonBackPic_Arcanine, 0x800, SPECIES_ARCANINE},
+ [SPECIES_POLIWAG] = {gMonBackPic_Poliwag, 0x800, SPECIES_POLIWAG},
+ [SPECIES_POLIWHIRL] = {gMonBackPic_Poliwhirl, 0x800, SPECIES_POLIWHIRL},
+ [SPECIES_POLIWRATH] = {gMonBackPic_Poliwrath, 0x800, SPECIES_POLIWRATH},
+ [SPECIES_ABRA] = {gMonBackPic_Abra, 0x800, SPECIES_ABRA},
+ [SPECIES_KADABRA] = {gMonBackPic_Kadabra, 0x800, SPECIES_KADABRA},
+ [SPECIES_ALAKAZAM] = {gMonBackPic_Alakazam, 0x800, SPECIES_ALAKAZAM},
+ [SPECIES_MACHOP] = {gMonBackPic_Machop, 0x800, SPECIES_MACHOP},
+ [SPECIES_MACHOKE] = {gMonBackPic_Machoke, 0x800, SPECIES_MACHOKE},
+ [SPECIES_MACHAMP] = {gMonBackPic_Machamp, 0x800, SPECIES_MACHAMP},
+ [SPECIES_BELLSPROUT] = {gMonBackPic_Bellsprout, 0x800, SPECIES_BELLSPROUT},
+ [SPECIES_WEEPINBELL] = {gMonBackPic_Weepinbell, 0x800, SPECIES_WEEPINBELL},
+ [SPECIES_VICTREEBEL] = {gMonBackPic_Victreebel, 0x800, SPECIES_VICTREEBEL},
+ [SPECIES_TENTACOOL] = {gMonBackPic_Tentacool, 0x800, SPECIES_TENTACOOL},
+ [SPECIES_TENTACRUEL] = {gMonBackPic_Tentacruel, 0x800, SPECIES_TENTACRUEL},
+ [SPECIES_GEODUDE] = {gMonBackPic_Geodude, 0x800, SPECIES_GEODUDE},
+ [SPECIES_GRAVELER] = {gMonBackPic_Graveler, 0x800, SPECIES_GRAVELER},
+ [SPECIES_GOLEM] = {gMonBackPic_Golem, 0x800, SPECIES_GOLEM},
+ [SPECIES_PONYTA] = {gMonBackPic_Ponyta, 0x800, SPECIES_PONYTA},
+ [SPECIES_RAPIDASH] = {gMonBackPic_Rapidash, 0x800, SPECIES_RAPIDASH},
+ [SPECIES_SLOWPOKE] = {gMonBackPic_Slowpoke, 0x800, SPECIES_SLOWPOKE},
+ [SPECIES_SLOWBRO] = {gMonBackPic_Slowbro, 0x800, SPECIES_SLOWBRO},
+ [SPECIES_MAGNEMITE] = {gMonBackPic_Magnemite, 0x800, SPECIES_MAGNEMITE},
+ [SPECIES_MAGNETON] = {gMonBackPic_Magneton, 0x800, SPECIES_MAGNETON},
+ [SPECIES_FARFETCHD] = {gMonBackPic_Farfetchd, 0x800, SPECIES_FARFETCHD},
+ [SPECIES_DODUO] = {gMonBackPic_Doduo, 0x800, SPECIES_DODUO},
+ [SPECIES_DODRIO] = {gMonBackPic_Dodrio, 0x800, SPECIES_DODRIO},
+ [SPECIES_SEEL] = {gMonBackPic_Seel, 0x800, SPECIES_SEEL},
+ [SPECIES_DEWGONG] = {gMonBackPic_Dewgong, 0x800, SPECIES_DEWGONG},
+ [SPECIES_GRIMER] = {gMonBackPic_Grimer, 0x800, SPECIES_GRIMER},
+ [SPECIES_MUK] = {gMonBackPic_Muk, 0x800, SPECIES_MUK},
+ [SPECIES_SHELLDER] = {gMonBackPic_Shellder, 0x800, SPECIES_SHELLDER},
+ [SPECIES_CLOYSTER] = {gMonBackPic_Cloyster, 0x800, SPECIES_CLOYSTER},
+ [SPECIES_GASTLY] = {gMonBackPic_Gastly, 0x800, SPECIES_GASTLY},
+ [SPECIES_HAUNTER] = {gMonBackPic_Haunter, 0x800, SPECIES_HAUNTER},
+ [SPECIES_GENGAR] = {gMonBackPic_Gengar, 0x800, SPECIES_GENGAR},
+ [SPECIES_ONIX] = {gMonBackPic_Onix, 0x800, SPECIES_ONIX},
+ [SPECIES_DROWZEE] = {gMonBackPic_Drowzee, 0x800, SPECIES_DROWZEE},
+ [SPECIES_HYPNO] = {gMonBackPic_Hypno, 0x800, SPECIES_HYPNO},
+ [SPECIES_KRABBY] = {gMonBackPic_Krabby, 0x800, SPECIES_KRABBY},
+ [SPECIES_KINGLER] = {gMonBackPic_Kingler, 0x800, SPECIES_KINGLER},
+ [SPECIES_VOLTORB] = {gMonBackPic_Voltorb, 0x800, SPECIES_VOLTORB},
+ [SPECIES_ELECTRODE] = {gMonBackPic_Electrode, 0x800, SPECIES_ELECTRODE},
+ [SPECIES_EXEGGCUTE] = {gMonBackPic_Exeggcute, 0x800, SPECIES_EXEGGCUTE},
+ [SPECIES_EXEGGUTOR] = {gMonBackPic_Exeggutor, 0x800, SPECIES_EXEGGUTOR},
+ [SPECIES_CUBONE] = {gMonBackPic_Cubone, 0x800, SPECIES_CUBONE},
+ [SPECIES_MAROWAK] = {gMonBackPic_Marowak, 0x800, SPECIES_MAROWAK},
+ [SPECIES_HITMONLEE] = {gMonBackPic_Hitmonlee, 0x800, SPECIES_HITMONLEE},
+ [SPECIES_HITMONCHAN] = {gMonBackPic_Hitmonchan, 0x800, SPECIES_HITMONCHAN},
+ [SPECIES_LICKITUNG] = {gMonBackPic_Lickitung, 0x800, SPECIES_LICKITUNG},
+ [SPECIES_KOFFING] = {gMonBackPic_Koffing, 0x800, SPECIES_KOFFING},
+ [SPECIES_WEEZING] = {gMonBackPic_Weezing, 0x800, SPECIES_WEEZING},
+ [SPECIES_RHYHORN] = {gMonBackPic_Rhyhorn, 0x800, SPECIES_RHYHORN},
+ [SPECIES_RHYDON] = {gMonBackPic_Rhydon, 0x800, SPECIES_RHYDON},
+ [SPECIES_CHANSEY] = {gMonBackPic_Chansey, 0x800, SPECIES_CHANSEY},
+ [SPECIES_TANGELA] = {gMonBackPic_Tangela, 0x800, SPECIES_TANGELA},
+ [SPECIES_KANGASKHAN] = {gMonBackPic_Kangaskhan, 0x800, SPECIES_KANGASKHAN},
+ [SPECIES_HORSEA] = {gMonBackPic_Horsea, 0x800, SPECIES_HORSEA},
+ [SPECIES_SEADRA] = {gMonBackPic_Seadra, 0x800, SPECIES_SEADRA},
+ [SPECIES_GOLDEEN] = {gMonBackPic_Goldeen, 0x800, SPECIES_GOLDEEN},
+ [SPECIES_SEAKING] = {gMonBackPic_Seaking, 0x800, SPECIES_SEAKING},
+ [SPECIES_STARYU] = {gMonBackPic_Staryu, 0x800, SPECIES_STARYU},
+ [SPECIES_STARMIE] = {gMonBackPic_Starmie, 0x800, SPECIES_STARMIE},
+ [SPECIES_MR_MIME] = {gMonBackPic_Mrmime, 0x800, SPECIES_MR_MIME},
+ [SPECIES_SCYTHER] = {gMonBackPic_Scyther, 0x800, SPECIES_SCYTHER},
+ [SPECIES_JYNX] = {gMonBackPic_Jynx, 0x800, SPECIES_JYNX},
+ [SPECIES_ELECTABUZZ] = {gMonBackPic_Electabuzz, 0x800, SPECIES_ELECTABUZZ},
+ [SPECIES_MAGMAR] = {gMonBackPic_Magmar, 0x800, SPECIES_MAGMAR},
+ [SPECIES_PINSIR] = {gMonBackPic_Pinsir, 0x800, SPECIES_PINSIR},
+ [SPECIES_TAUROS] = {gMonBackPic_Tauros, 0x800, SPECIES_TAUROS},
+ [SPECIES_MAGIKARP] = {gMonBackPic_Magikarp, 0x800, SPECIES_MAGIKARP},
+ [SPECIES_GYARADOS] = {gMonBackPic_Gyarados, 0x800, SPECIES_GYARADOS},
+ [SPECIES_LAPRAS] = {gMonBackPic_Lapras, 0x800, SPECIES_LAPRAS},
+ [SPECIES_DITTO] = {gMonBackPic_Ditto, 0x800, SPECIES_DITTO},
+ [SPECIES_EEVEE] = {gMonBackPic_Eevee, 0x800, SPECIES_EEVEE},
+ [SPECIES_VAPOREON] = {gMonBackPic_Vaporeon, 0x800, SPECIES_VAPOREON},
+ [SPECIES_JOLTEON] = {gMonBackPic_Jolteon, 0x800, SPECIES_JOLTEON},
+ [SPECIES_FLAREON] = {gMonBackPic_Flareon, 0x800, SPECIES_FLAREON},
+ [SPECIES_PORYGON] = {gMonBackPic_Porygon, 0x800, SPECIES_PORYGON},
+ [SPECIES_OMANYTE] = {gMonBackPic_Omanyte, 0x800, SPECIES_OMANYTE},
+ [SPECIES_OMASTAR] = {gMonBackPic_Omastar, 0x800, SPECIES_OMASTAR},
+ [SPECIES_KABUTO] = {gMonBackPic_Kabuto, 0x800, SPECIES_KABUTO},
+ [SPECIES_KABUTOPS] = {gMonBackPic_Kabutops, 0x800, SPECIES_KABUTOPS},
+ [SPECIES_AERODACTYL] = {gMonBackPic_Aerodactyl, 0x800, SPECIES_AERODACTYL},
+ [SPECIES_SNORLAX] = {gMonBackPic_Snorlax, 0x800, SPECIES_SNORLAX},
+ [SPECIES_ARTICUNO] = {gMonBackPic_Articuno, 0x800, SPECIES_ARTICUNO},
+ [SPECIES_ZAPDOS] = {gMonBackPic_Zapdos, 0x800, SPECIES_ZAPDOS},
+ [SPECIES_MOLTRES] = {gMonBackPic_Moltres, 0x800, SPECIES_MOLTRES},
+ [SPECIES_DRATINI] = {gMonBackPic_Dratini, 0x800, SPECIES_DRATINI},
+ [SPECIES_DRAGONAIR] = {gMonBackPic_Dragonair, 0x800, SPECIES_DRAGONAIR},
+ [SPECIES_DRAGONITE] = {gMonBackPic_Dragonite, 0x800, SPECIES_DRAGONITE},
+ [SPECIES_MEWTWO] = {gMonBackPic_Mewtwo, 0x800, SPECIES_MEWTWO},
+ [SPECIES_MEW] = {gMonBackPic_Mew, 0x800, SPECIES_MEW},
+ [SPECIES_CHIKORITA] = {gMonBackPic_Chikorita, 0x800, SPECIES_CHIKORITA},
+ [SPECIES_BAYLEEF] = {gMonBackPic_Bayleef, 0x800, SPECIES_BAYLEEF},
+ [SPECIES_MEGANIUM] = {gMonBackPic_Meganium, 0x800, SPECIES_MEGANIUM},
+ [SPECIES_CYNDAQUIL] = {gMonBackPic_Cyndaquil, 0x800, SPECIES_CYNDAQUIL},
+ [SPECIES_QUILAVA] = {gMonBackPic_Quilava, 0x800, SPECIES_QUILAVA},
+ [SPECIES_TYPHLOSION] = {gMonBackPic_Typhlosion, 0x800, SPECIES_TYPHLOSION},
+ [SPECIES_TOTODILE] = {gMonBackPic_Totodile, 0x800, SPECIES_TOTODILE},
+ [SPECIES_CROCONAW] = {gMonBackPic_Croconaw, 0x800, SPECIES_CROCONAW},
+ [SPECIES_FERALIGATR] = {gMonBackPic_Feraligatr, 0x800, SPECIES_FERALIGATR},
+ [SPECIES_SENTRET] = {gMonBackPic_Sentret, 0x800, SPECIES_SENTRET},
+ [SPECIES_FURRET] = {gMonBackPic_Furret, 0x800, SPECIES_FURRET},
+ [SPECIES_HOOTHOOT] = {gMonBackPic_Hoothoot, 0x800, SPECIES_HOOTHOOT},
+ [SPECIES_NOCTOWL] = {gMonBackPic_Noctowl, 0x800, SPECIES_NOCTOWL},
+ [SPECIES_LEDYBA] = {gMonBackPic_Ledyba, 0x800, SPECIES_LEDYBA},
+ [SPECIES_LEDIAN] = {gMonBackPic_Ledian, 0x800, SPECIES_LEDIAN},
+ [SPECIES_SPINARAK] = {gMonBackPic_Spinarak, 0x800, SPECIES_SPINARAK},
+ [SPECIES_ARIADOS] = {gMonBackPic_Ariados, 0x800, SPECIES_ARIADOS},
+ [SPECIES_CROBAT] = {gMonBackPic_Crobat, 0x800, SPECIES_CROBAT},
+ [SPECIES_CHINCHOU] = {gMonBackPic_Chinchou, 0x800, SPECIES_CHINCHOU},
+ [SPECIES_LANTURN] = {gMonBackPic_Lanturn, 0x800, SPECIES_LANTURN},
+ [SPECIES_PICHU] = {gMonBackPic_Pichu, 0x800, SPECIES_PICHU},
+ [SPECIES_CLEFFA] = {gMonBackPic_Cleffa, 0x800, SPECIES_CLEFFA},
+ [SPECIES_IGGLYBUFF] = {gMonBackPic_Igglybuff, 0x800, SPECIES_IGGLYBUFF},
+ [SPECIES_TOGEPI] = {gMonBackPic_Togepi, 0x800, SPECIES_TOGEPI},
+ [SPECIES_TOGETIC] = {gMonBackPic_Togetic, 0x800, SPECIES_TOGETIC},
+ [SPECIES_NATU] = {gMonBackPic_Natu, 0x800, SPECIES_NATU},
+ [SPECIES_XATU] = {gMonBackPic_Xatu, 0x800, SPECIES_XATU},
+ [SPECIES_MAREEP] = {gMonBackPic_Mareep, 0x800, SPECIES_MAREEP},
+ [SPECIES_FLAAFFY] = {gMonBackPic_Flaaffy, 0x800, SPECIES_FLAAFFY},
+ [SPECIES_AMPHAROS] = {gMonBackPic_Ampharos, 0x800, SPECIES_AMPHAROS},
+ [SPECIES_BELLOSSOM] = {gMonBackPic_Bellossom, 0x800, SPECIES_BELLOSSOM},
+ [SPECIES_MARILL] = {gMonBackPic_Marill, 0x800, SPECIES_MARILL},
+ [SPECIES_AZUMARILL] = {gMonBackPic_Azumarill, 0x800, SPECIES_AZUMARILL},
+ [SPECIES_SUDOWOODO] = {gMonBackPic_Sudowoodo, 0x800, SPECIES_SUDOWOODO},
+ [SPECIES_POLITOED] = {gMonBackPic_Politoed, 0x800, SPECIES_POLITOED},
+ [SPECIES_HOPPIP] = {gMonBackPic_Hoppip, 0x800, SPECIES_HOPPIP},
+ [SPECIES_SKIPLOOM] = {gMonBackPic_Skiploom, 0x800, SPECIES_SKIPLOOM},
+ [SPECIES_JUMPLUFF] = {gMonBackPic_Jumpluff, 0x800, SPECIES_JUMPLUFF},
+ [SPECIES_AIPOM] = {gMonBackPic_Aipom, 0x800, SPECIES_AIPOM},
+ [SPECIES_SUNKERN] = {gMonBackPic_Sunkern, 0x800, SPECIES_SUNKERN},
+ [SPECIES_SUNFLORA] = {gMonBackPic_Sunflora, 0x800, SPECIES_SUNFLORA},
+ [SPECIES_YANMA] = {gMonBackPic_Yanma, 0x800, SPECIES_YANMA},
+ [SPECIES_WOOPER] = {gMonBackPic_Wooper, 0x800, SPECIES_WOOPER},
+ [SPECIES_QUAGSIRE] = {gMonBackPic_Quagsire, 0x800, SPECIES_QUAGSIRE},
+ [SPECIES_ESPEON] = {gMonBackPic_Espeon, 0x800, SPECIES_ESPEON},
+ [SPECIES_UMBREON] = {gMonBackPic_Umbreon, 0x800, SPECIES_UMBREON},
+ [SPECIES_MURKROW] = {gMonBackPic_Murkrow, 0x800, SPECIES_MURKROW},
+ [SPECIES_SLOWKING] = {gMonBackPic_Slowking, 0x800, SPECIES_SLOWKING},
+ [SPECIES_MISDREAVUS] = {gMonBackPic_Misdreavus, 0x800, SPECIES_MISDREAVUS},
+ [SPECIES_UNOWN] = {gMonBackPic_UnownA, 0x800, SPECIES_UNOWN},
+ [SPECIES_WOBBUFFET] = {gMonBackPic_Wobbuffet, 0x800, SPECIES_WOBBUFFET},
+ [SPECIES_GIRAFARIG] = {gMonBackPic_Girafarig, 0x800, SPECIES_GIRAFARIG},
+ [SPECIES_PINECO] = {gMonBackPic_Pineco, 0x800, SPECIES_PINECO},
+ [SPECIES_FORRETRESS] = {gMonBackPic_Forretress, 0x800, SPECIES_FORRETRESS},
+ [SPECIES_DUNSPARCE] = {gMonBackPic_Dunsparce, 0x800, SPECIES_DUNSPARCE},
+ [SPECIES_GLIGAR] = {gMonBackPic_Gligar, 0x800, SPECIES_GLIGAR},
+ [SPECIES_STEELIX] = {gMonBackPic_Steelix, 0x800, SPECIES_STEELIX},
+ [SPECIES_SNUBBULL] = {gMonBackPic_Snubbull, 0x800, SPECIES_SNUBBULL},
+ [SPECIES_GRANBULL] = {gMonBackPic_Granbull, 0x800, SPECIES_GRANBULL},
+ [SPECIES_QWILFISH] = {gMonBackPic_Qwilfish, 0x800, SPECIES_QWILFISH},
+ [SPECIES_SCIZOR] = {gMonBackPic_Scizor, 0x800, SPECIES_SCIZOR},
+ [SPECIES_SHUCKLE] = {gMonBackPic_Shuckle, 0x800, SPECIES_SHUCKLE},
+ [SPECIES_HERACROSS] = {gMonBackPic_Heracross, 0x800, SPECIES_HERACROSS},
+ [SPECIES_SNEASEL] = {gMonBackPic_Sneasel, 0x800, SPECIES_SNEASEL},
+ [SPECIES_TEDDIURSA] = {gMonBackPic_Teddiursa, 0x800, SPECIES_TEDDIURSA},
+ [SPECIES_URSARING] = {gMonBackPic_Ursaring, 0x800, SPECIES_URSARING},
+ [SPECIES_SLUGMA] = {gMonBackPic_Slugma, 0x800, SPECIES_SLUGMA},
+ [SPECIES_MAGCARGO] = {gMonBackPic_Magcargo, 0x800, SPECIES_MAGCARGO},
+ [SPECIES_SWINUB] = {gMonBackPic_Swinub, 0x800, SPECIES_SWINUB},
+ [SPECIES_PILOSWINE] = {gMonBackPic_Piloswine, 0x800, SPECIES_PILOSWINE},
+ [SPECIES_CORSOLA] = {gMonBackPic_Corsola, 0x800, SPECIES_CORSOLA},
+ [SPECIES_REMORAID] = {gMonBackPic_Remoraid, 0x800, SPECIES_REMORAID},
+ [SPECIES_OCTILLERY] = {gMonBackPic_Octillery, 0x800, SPECIES_OCTILLERY},
+ [SPECIES_DELIBIRD] = {gMonBackPic_Delibird, 0x800, SPECIES_DELIBIRD},
+ [SPECIES_MANTINE] = {gMonBackPic_Mantine, 0x800, SPECIES_MANTINE},
+ [SPECIES_SKARMORY] = {gMonBackPic_Skarmory, 0x800, SPECIES_SKARMORY},
+ [SPECIES_HOUNDOUR] = {gMonBackPic_Houndour, 0x800, SPECIES_HOUNDOUR},
+ [SPECIES_HOUNDOOM] = {gMonBackPic_Houndoom, 0x800, SPECIES_HOUNDOOM},
+ [SPECIES_KINGDRA] = {gMonBackPic_Kingdra, 0x800, SPECIES_KINGDRA},
+ [SPECIES_PHANPY] = {gMonBackPic_Phanpy, 0x800, SPECIES_PHANPY},
+ [SPECIES_DONPHAN] = {gMonBackPic_Donphan, 0x800, SPECIES_DONPHAN},
+ [SPECIES_PORYGON2] = {gMonBackPic_Porygon2, 0x800, SPECIES_PORYGON2},
+ [SPECIES_STANTLER] = {gMonBackPic_Stantler, 0x800, SPECIES_STANTLER},
+ [SPECIES_SMEARGLE] = {gMonBackPic_Smeargle, 0x800, SPECIES_SMEARGLE},
+ [SPECIES_TYROGUE] = {gMonBackPic_Tyrogue, 0x800, SPECIES_TYROGUE},
+ [SPECIES_HITMONTOP] = {gMonBackPic_Hitmontop, 0x800, SPECIES_HITMONTOP},
+ [SPECIES_SMOOCHUM] = {gMonBackPic_Smoochum, 0x800, SPECIES_SMOOCHUM},
+ [SPECIES_ELEKID] = {gMonBackPic_Elekid, 0x800, SPECIES_ELEKID},
+ [SPECIES_MAGBY] = {gMonBackPic_Magby, 0x800, SPECIES_MAGBY},
+ [SPECIES_MILTANK] = {gMonBackPic_Miltank, 0x800, SPECIES_MILTANK},
+ [SPECIES_BLISSEY] = {gMonBackPic_Blissey, 0x800, SPECIES_BLISSEY},
+ [SPECIES_RAIKOU] = {gMonBackPic_Raikou, 0x800, SPECIES_RAIKOU},
+ [SPECIES_ENTEI] = {gMonBackPic_Entei, 0x800, SPECIES_ENTEI},
+ [SPECIES_SUICUNE] = {gMonBackPic_Suicune, 0x800, SPECIES_SUICUNE},
+ [SPECIES_LARVITAR] = {gMonBackPic_Larvitar, 0x800, SPECIES_LARVITAR},
+ [SPECIES_PUPITAR] = {gMonBackPic_Pupitar, 0x800, SPECIES_PUPITAR},
+ [SPECIES_TYRANITAR] = {gMonBackPic_Tyranitar, 0x800, SPECIES_TYRANITAR},
+ [SPECIES_LUGIA] = {gMonBackPic_Lugia, 0x800, SPECIES_LUGIA},
+ [SPECIES_HO_OH] = {gMonBackPic_HoOh, 0x800, SPECIES_HO_OH},
+ [SPECIES_CELEBI] = {gMonBackPic_Celebi, 0x800, SPECIES_CELEBI},
+ [SPECIES_OLD_UNOWN_B] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_B},
+ [SPECIES_OLD_UNOWN_C] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_C},
+ [SPECIES_OLD_UNOWN_D] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_D},
+ [SPECIES_OLD_UNOWN_E] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_E},
+ [SPECIES_OLD_UNOWN_F] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_F},
+ [SPECIES_OLD_UNOWN_G] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_G},
+ [SPECIES_OLD_UNOWN_H] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_H},
+ [SPECIES_OLD_UNOWN_I] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_I},
+ [SPECIES_OLD_UNOWN_J] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_J},
+ [SPECIES_OLD_UNOWN_K] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_K},
+ [SPECIES_OLD_UNOWN_L] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_L},
+ [SPECIES_OLD_UNOWN_M] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_M},
+ [SPECIES_OLD_UNOWN_N] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_N},
+ [SPECIES_OLD_UNOWN_O] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_O},
+ [SPECIES_OLD_UNOWN_P] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_P},
+ [SPECIES_OLD_UNOWN_Q] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_Q},
+ [SPECIES_OLD_UNOWN_R] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_R},
+ [SPECIES_OLD_UNOWN_S] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_S},
+ [SPECIES_OLD_UNOWN_T] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_T},
+ [SPECIES_OLD_UNOWN_U] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_U},
+ [SPECIES_OLD_UNOWN_V] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_V},
+ [SPECIES_OLD_UNOWN_W] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_W},
+ [SPECIES_OLD_UNOWN_X] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_X},
+ [SPECIES_OLD_UNOWN_Y] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_Y},
+ [SPECIES_OLD_UNOWN_Z] = {gMonBackPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_Z},
+ [SPECIES_TREECKO] = {gMonBackPic_Treecko, 0x800, SPECIES_TREECKO},
+ [SPECIES_GROVYLE] = {gMonBackPic_Grovyle, 0x800, SPECIES_GROVYLE},
+ [SPECIES_SCEPTILE] = {gMonBackPic_Sceptile, 0x800, SPECIES_SCEPTILE},
+ [SPECIES_TORCHIC] = {gMonBackPic_Torchic, 0x800, SPECIES_TORCHIC},
+ [SPECIES_COMBUSKEN] = {gMonBackPic_Combusken, 0x800, SPECIES_COMBUSKEN},
+ [SPECIES_BLAZIKEN] = {gMonBackPic_Blaziken, 0x800, SPECIES_BLAZIKEN},
+ [SPECIES_MUDKIP] = {gMonBackPic_Mudkip, 0x800, SPECIES_MUDKIP},
+ [SPECIES_MARSHTOMP] = {gMonBackPic_Marshtomp, 0x800, SPECIES_MARSHTOMP},
+ [SPECIES_SWAMPERT] = {gMonBackPic_Swampert, 0x800, SPECIES_SWAMPERT},
+ [SPECIES_POOCHYENA] = {gMonBackPic_Poochyena, 0x800, SPECIES_POOCHYENA},
+ [SPECIES_MIGHTYENA] = {gMonBackPic_Mightyena, 0x800, SPECIES_MIGHTYENA},
+ [SPECIES_ZIGZAGOON] = {gMonBackPic_Zigzagoon, 0x800, SPECIES_ZIGZAGOON},
+ [SPECIES_LINOONE] = {gMonBackPic_Linoone, 0x800, SPECIES_LINOONE},
+ [SPECIES_WURMPLE] = {gMonBackPic_Wurmple, 0x800, SPECIES_WURMPLE},
+ [SPECIES_SILCOON] = {gMonBackPic_Silcoon, 0x800, SPECIES_SILCOON},
+ [SPECIES_BEAUTIFLY] = {gMonBackPic_Beautifly, 0x800, SPECIES_BEAUTIFLY},
+ [SPECIES_CASCOON] = {gMonBackPic_Cascoon, 0x800, SPECIES_CASCOON},
+ [SPECIES_DUSTOX] = {gMonBackPic_Dustox, 0x800, SPECIES_DUSTOX},
+ [SPECIES_LOTAD] = {gMonBackPic_Lotad, 0x800, SPECIES_LOTAD},
+ [SPECIES_LOMBRE] = {gMonBackPic_Lombre, 0x800, SPECIES_LOMBRE},
+ [SPECIES_LUDICOLO] = {gMonBackPic_Ludicolo, 0x800, SPECIES_LUDICOLO},
+ [SPECIES_SEEDOT] = {gMonBackPic_Seedot, 0x800, SPECIES_SEEDOT},
+ [SPECIES_NUZLEAF] = {gMonBackPic_Nuzleaf, 0x800, SPECIES_NUZLEAF},
+ [SPECIES_SHIFTRY] = {gMonBackPic_Shiftry, 0x800, SPECIES_SHIFTRY},
+ [SPECIES_NINCADA] = {gMonBackPic_Nincada, 0x800, SPECIES_NINCADA},
+ [SPECIES_NINJASK] = {gMonBackPic_Ninjask, 0x800, SPECIES_NINJASK},
+ [SPECIES_SHEDINJA] = {gMonBackPic_Shedinja, 0x800, SPECIES_SHEDINJA},
+ [SPECIES_TAILLOW] = {gMonBackPic_Taillow, 0x800, SPECIES_TAILLOW},
+ [SPECIES_SWELLOW] = {gMonBackPic_Swellow, 0x800, SPECIES_SWELLOW},
+ [SPECIES_SHROOMISH] = {gMonBackPic_Shroomish, 0x800, SPECIES_SHROOMISH},
+ [SPECIES_BRELOOM] = {gMonBackPic_Breloom, 0x800, SPECIES_BRELOOM},
+ [SPECIES_SPINDA] = {gMonBackPic_Spinda, 0x800, SPECIES_SPINDA},
+ [SPECIES_WINGULL] = {gMonBackPic_Wingull, 0x800, SPECIES_WINGULL},
+ [SPECIES_PELIPPER] = {gMonBackPic_Pelipper, 0x800, SPECIES_PELIPPER},
+ [SPECIES_SURSKIT] = {gMonBackPic_Surskit, 0x800, SPECIES_SURSKIT},
+ [SPECIES_MASQUERAIN] = {gMonBackPic_Masquerain, 0x800, SPECIES_MASQUERAIN},
+ [SPECIES_WAILMER] = {gMonBackPic_Wailmer, 0x800, SPECIES_WAILMER},
+ [SPECIES_WAILORD] = {gMonBackPic_Wailord, 0x800, SPECIES_WAILORD},
+ [SPECIES_SKITTY] = {gMonBackPic_Skitty, 0x800, SPECIES_SKITTY},
+ [SPECIES_DELCATTY] = {gMonBackPic_Delcatty, 0x800, SPECIES_DELCATTY},
+ [SPECIES_KECLEON] = {gMonBackPic_Kecleon, 0x800, SPECIES_KECLEON},
+ [SPECIES_BALTOY] = {gMonBackPic_Baltoy, 0x800, SPECIES_BALTOY},
+ [SPECIES_CLAYDOL] = {gMonBackPic_Claydol, 0x800, SPECIES_CLAYDOL},
+ [SPECIES_NOSEPASS] = {gMonBackPic_Nosepass, 0x800, SPECIES_NOSEPASS},
+ [SPECIES_TORKOAL] = {gMonBackPic_Torkoal, 0x800, SPECIES_TORKOAL},
+ [SPECIES_SABLEYE] = {gMonBackPic_Sableye, 0x800, SPECIES_SABLEYE},
+ [SPECIES_BARBOACH] = {gMonBackPic_Barboach, 0x800, SPECIES_BARBOACH},
+ [SPECIES_WHISCASH] = {gMonBackPic_Whiscash, 0x800, SPECIES_WHISCASH},
+ [SPECIES_LUVDISC] = {gMonBackPic_Luvdisc, 0x800, SPECIES_LUVDISC},
+ [SPECIES_CORPHISH] = {gMonBackPic_Corphish, 0x800, SPECIES_CORPHISH},
+ [SPECIES_CRAWDAUNT] = {gMonBackPic_Crawdaunt, 0x800, SPECIES_CRAWDAUNT},
+ [SPECIES_FEEBAS] = {gMonBackPic_Feebas, 0x800, SPECIES_FEEBAS},
+ [SPECIES_MILOTIC] = {gMonBackPic_Milotic, 0x800, SPECIES_MILOTIC},
+ [SPECIES_CARVANHA] = {gMonBackPic_Carvanha, 0x800, SPECIES_CARVANHA},
+ [SPECIES_SHARPEDO] = {gMonBackPic_Sharpedo, 0x800, SPECIES_SHARPEDO},
+ [SPECIES_TRAPINCH] = {gMonBackPic_Trapinch, 0x800, SPECIES_TRAPINCH},
+ [SPECIES_VIBRAVA] = {gMonBackPic_Vibrava, 0x800, SPECIES_VIBRAVA},
+ [SPECIES_FLYGON] = {gMonBackPic_Flygon, 0x800, SPECIES_FLYGON},
+ [SPECIES_MAKUHITA] = {gMonBackPic_Makuhita, 0x800, SPECIES_MAKUHITA},
+ [SPECIES_HARIYAMA] = {gMonBackPic_Hariyama, 0x800, SPECIES_HARIYAMA},
+ [SPECIES_ELECTRIKE] = {gMonBackPic_Electrike, 0x800, SPECIES_ELECTRIKE},
+ [SPECIES_MANECTRIC] = {gMonBackPic_Manectric, 0x800, SPECIES_MANECTRIC},
+ [SPECIES_NUMEL] = {gMonBackPic_Numel, 0x800, SPECIES_NUMEL},
+ [SPECIES_CAMERUPT] = {gMonBackPic_Camerupt, 0x800, SPECIES_CAMERUPT},
+ [SPECIES_SPHEAL] = {gMonBackPic_Spheal, 0x800, SPECIES_SPHEAL},
+ [SPECIES_SEALEO] = {gMonBackPic_Sealeo, 0x800, SPECIES_SEALEO},
+ [SPECIES_WALREIN] = {gMonBackPic_Walrein, 0x800, SPECIES_WALREIN},
+ [SPECIES_CACNEA] = {gMonBackPic_Cacnea, 0x800, SPECIES_CACNEA},
+ [SPECIES_CACTURNE] = {gMonBackPic_Cacturne, 0x800, SPECIES_CACTURNE},
+ [SPECIES_SNORUNT] = {gMonBackPic_Snorunt, 0x800, SPECIES_SNORUNT},
+ [SPECIES_GLALIE] = {gMonBackPic_Glalie, 0x800, SPECIES_GLALIE},
+ [SPECIES_LUNATONE] = {gMonBackPic_Lunatone, 0x800, SPECIES_LUNATONE},
+ [SPECIES_SOLROCK] = {gMonBackPic_Solrock, 0x800, SPECIES_SOLROCK},
+ [SPECIES_AZURILL] = {gMonBackPic_Azurill, 0x800, SPECIES_AZURILL},
+ [SPECIES_SPOINK] = {gMonBackPic_Spoink, 0x800, SPECIES_SPOINK},
+ [SPECIES_GRUMPIG] = {gMonBackPic_Grumpig, 0x800, SPECIES_GRUMPIG},
+ [SPECIES_PLUSLE] = {gMonBackPic_Plusle, 0x800, SPECIES_PLUSLE},
+ [SPECIES_MINUN] = {gMonBackPic_Minun, 0x800, SPECIES_MINUN},
+ [SPECIES_MAWILE] = {gMonBackPic_Mawile, 0x800, SPECIES_MAWILE},
+ [SPECIES_MEDITITE] = {gMonBackPic_Meditite, 0x800, SPECIES_MEDITITE},
+ [SPECIES_MEDICHAM] = {gMonBackPic_Medicham, 0x800, SPECIES_MEDICHAM},
+ [SPECIES_SWABLU] = {gMonBackPic_Swablu, 0x800, SPECIES_SWABLU},
+ [SPECIES_ALTARIA] = {gMonBackPic_Altaria, 0x800, SPECIES_ALTARIA},
+ [SPECIES_WYNAUT] = {gMonBackPic_Wynaut, 0x800, SPECIES_WYNAUT},
+ [SPECIES_DUSKULL] = {gMonBackPic_Duskull, 0x800, SPECIES_DUSKULL},
+ [SPECIES_DUSCLOPS] = {gMonBackPic_Dusclops, 0x800, SPECIES_DUSCLOPS},
+ [SPECIES_ROSELIA] = {gMonBackPic_Roselia, 0x800, SPECIES_ROSELIA},
+ [SPECIES_SLAKOTH] = {gMonBackPic_Slakoth, 0x800, SPECIES_SLAKOTH},
+ [SPECIES_VIGOROTH] = {gMonBackPic_Vigoroth, 0x800, SPECIES_VIGOROTH},
+ [SPECIES_SLAKING] = {gMonBackPic_Slaking, 0x800, SPECIES_SLAKING},
+ [SPECIES_GULPIN] = {gMonBackPic_Gulpin, 0x800, SPECIES_GULPIN},
+ [SPECIES_SWALOT] = {gMonBackPic_Swalot, 0x800, SPECIES_SWALOT},
+ [SPECIES_TROPIUS] = {gMonBackPic_Tropius, 0x800, SPECIES_TROPIUS},
+ [SPECIES_WHISMUR] = {gMonBackPic_Whismur, 0x800, SPECIES_WHISMUR},
+ [SPECIES_LOUDRED] = {gMonBackPic_Loudred, 0x800, SPECIES_LOUDRED},
+ [SPECIES_EXPLOUD] = {gMonBackPic_Exploud, 0x800, SPECIES_EXPLOUD},
+ [SPECIES_CLAMPERL] = {gMonBackPic_Clamperl, 0x800, SPECIES_CLAMPERL},
+ [SPECIES_HUNTAIL] = {gMonBackPic_Huntail, 0x800, SPECIES_HUNTAIL},
+ [SPECIES_GOREBYSS] = {gMonBackPic_Gorebyss, 0x800, SPECIES_GOREBYSS},
+ [SPECIES_ABSOL] = {gMonBackPic_Absol, 0x800, SPECIES_ABSOL},
+ [SPECIES_SHUPPET] = {gMonBackPic_Shuppet, 0x800, SPECIES_SHUPPET},
+ [SPECIES_BANETTE] = {gMonBackPic_Banette, 0x800, SPECIES_BANETTE},
+ [SPECIES_SEVIPER] = {gMonBackPic_Seviper, 0x800, SPECIES_SEVIPER},
+ [SPECIES_ZANGOOSE] = {gMonBackPic_Zangoose, 0x800, SPECIES_ZANGOOSE},
+ [SPECIES_RELICANTH] = {gMonBackPic_Relicanth, 0x800, SPECIES_RELICANTH},
+ [SPECIES_ARON] = {gMonBackPic_Aron, 0x800, SPECIES_ARON},
+ [SPECIES_LAIRON] = {gMonBackPic_Lairon, 0x800, SPECIES_LAIRON},
+ [SPECIES_AGGRON] = {gMonBackPic_Aggron, 0x800, SPECIES_AGGRON},
+ [SPECIES_CASTFORM] = {gMonBackPic_Castform, 0x800, SPECIES_CASTFORM},
+ [SPECIES_VOLBEAT] = {gMonBackPic_Volbeat, 0x800, SPECIES_VOLBEAT},
+ [SPECIES_ILLUMISE] = {gMonBackPic_Illumise, 0x800, SPECIES_ILLUMISE},
+ [SPECIES_LILEEP] = {gMonBackPic_Lileep, 0x800, SPECIES_LILEEP},
+ [SPECIES_CRADILY] = {gMonBackPic_Cradily, 0x800, SPECIES_CRADILY},
+ [SPECIES_ANORITH] = {gMonBackPic_Anorith, 0x800, SPECIES_ANORITH},
+ [SPECIES_ARMALDO] = {gMonBackPic_Armaldo, 0x800, SPECIES_ARMALDO},
+ [SPECIES_RALTS] = {gMonBackPic_Ralts, 0x800, SPECIES_RALTS},
+ [SPECIES_KIRLIA] = {gMonBackPic_Kirlia, 0x800, SPECIES_KIRLIA},
+ [SPECIES_GARDEVOIR] = {gMonBackPic_Gardevoir, 0x800, SPECIES_GARDEVOIR},
+ [SPECIES_BAGON] = {gMonBackPic_Bagon, 0x800, SPECIES_BAGON},
+ [SPECIES_SHELGON] = {gMonBackPic_Shelgon, 0x800, SPECIES_SHELGON},
+ [SPECIES_SALAMENCE] = {gMonBackPic_Salamence, 0x800, SPECIES_SALAMENCE},
+ [SPECIES_BELDUM] = {gMonBackPic_Beldum, 0x800, SPECIES_BELDUM},
+ [SPECIES_METANG] = {gMonBackPic_Metang, 0x800, SPECIES_METANG},
+ [SPECIES_METAGROSS] = {gMonBackPic_Metagross, 0x800, SPECIES_METAGROSS},
+ [SPECIES_REGIROCK] = {gMonBackPic_Regirock, 0x800, SPECIES_REGIROCK},
+ [SPECIES_REGICE] = {gMonBackPic_Regice, 0x800, SPECIES_REGICE},
+ [SPECIES_REGISTEEL] = {gMonBackPic_Registeel, 0x800, SPECIES_REGISTEEL},
+ [SPECIES_KYOGRE] = {gMonBackPic_Kyogre, 0x800, SPECIES_KYOGRE},
+ [SPECIES_GROUDON] = {gMonBackPic_Groudon, 0x800, SPECIES_GROUDON},
+ [SPECIES_RAYQUAZA] = {gMonBackPic_Rayquaza, 0x800, SPECIES_RAYQUAZA},
+ [SPECIES_LATIAS] = {gMonBackPic_Latias, 0x800, SPECIES_LATIAS},
+ [SPECIES_LATIOS] = {gMonBackPic_Latios, 0x800, SPECIES_LATIOS},
+ [SPECIES_JIRACHI] = {gMonBackPic_Jirachi, 0x800, SPECIES_JIRACHI},
+ [SPECIES_DEOXYS] = {gMonBackPic_Deoxys, 0x800, SPECIES_DEOXYS},
+ [SPECIES_CHIMECHO] = {gMonBackPic_Chimecho, 0x800, SPECIES_CHIMECHO},
+ [SPECIES_EGG] = {gMonStillFrontPic_Egg, 0x800, SPECIES_EGG},
+ [SPECIES_UNOWN_B] = {gMonBackPic_UnownB, 0x800, SPECIES_UNOWN_B},
+ [SPECIES_UNOWN_C] = {gMonBackPic_UnownC, 0x800, SPECIES_UNOWN_C},
+ [SPECIES_UNOWN_D] = {gMonBackPic_UnownD, 0x800, SPECIES_UNOWN_D},
+ [SPECIES_UNOWN_E] = {gMonBackPic_UnownE, 0x800, SPECIES_UNOWN_E},
+ [SPECIES_UNOWN_F] = {gMonBackPic_UnownF, 0x800, SPECIES_UNOWN_F},
+ [SPECIES_UNOWN_G] = {gMonBackPic_UnownG, 0x800, SPECIES_UNOWN_G},
+ [SPECIES_UNOWN_H] = {gMonBackPic_UnownH, 0x800, SPECIES_UNOWN_H},
+ [SPECIES_UNOWN_I] = {gMonBackPic_UnownI, 0x800, SPECIES_UNOWN_I},
+ [SPECIES_UNOWN_J] = {gMonBackPic_UnownJ, 0x800, SPECIES_UNOWN_J},
+ [SPECIES_UNOWN_K] = {gMonBackPic_UnownK, 0x800, SPECIES_UNOWN_K},
+ [SPECIES_UNOWN_L] = {gMonBackPic_UnownL, 0x800, SPECIES_UNOWN_L},
+ [SPECIES_UNOWN_M] = {gMonBackPic_UnownM, 0x800, SPECIES_UNOWN_M},
+ [SPECIES_UNOWN_N] = {gMonBackPic_UnownN, 0x800, SPECIES_UNOWN_N},
+ [SPECIES_UNOWN_O] = {gMonBackPic_UnownO, 0x800, SPECIES_UNOWN_O},
+ [SPECIES_UNOWN_P] = {gMonBackPic_UnownP, 0x800, SPECIES_UNOWN_P},
+ [SPECIES_UNOWN_Q] = {gMonBackPic_UnownQ, 0x800, SPECIES_UNOWN_Q},
+ [SPECIES_UNOWN_R] = {gMonBackPic_UnownR, 0x800, SPECIES_UNOWN_R},
+ [SPECIES_UNOWN_S] = {gMonBackPic_UnownS, 0x800, SPECIES_UNOWN_S},
+ [SPECIES_UNOWN_T] = {gMonBackPic_UnownT, 0x800, SPECIES_UNOWN_T},
+ [SPECIES_UNOWN_U] = {gMonBackPic_UnownU, 0x800, SPECIES_UNOWN_U},
+ [SPECIES_UNOWN_V] = {gMonBackPic_UnownV, 0x800, SPECIES_UNOWN_V},
+ [SPECIES_UNOWN_W] = {gMonBackPic_UnownW, 0x800, SPECIES_UNOWN_W},
+ [SPECIES_UNOWN_X] = {gMonBackPic_UnownX, 0x800, SPECIES_UNOWN_X},
+ [SPECIES_UNOWN_Y] = {gMonBackPic_UnownY, 0x800, SPECIES_UNOWN_Y},
+ [SPECIES_UNOWN_Z] = {gMonBackPic_UnownZ, 0x800, SPECIES_UNOWN_Z},
+ [SPECIES_UNOWN_EMARK] = {gMonBackPic_UnownExclamationMark, 0x800, SPECIES_UNOWN_EMARK},
+ [SPECIES_UNOWN_QMARK] = {gMonBackPic_UnownQuestionMark, 0x800, SPECIES_UNOWN_QMARK},
};
+
diff --git a/src/data/pokemon_graphics/footprint_table.h b/src/data/pokemon_graphics/footprint_table.h
new file mode 100644
index 000000000..779ce3dcd
--- /dev/null
+++ b/src/data/pokemon_graphics/footprint_table.h
@@ -0,0 +1,416 @@
+const u8 *const gMonFootprintTable[] =
+{
+ gMonFootprint_Bulbasaur,
+ gMonFootprint_Bulbasaur,
+ gMonFootprint_Ivysaur,
+ gMonFootprint_Venusaur,
+ gMonFootprint_Charmander,
+ gMonFootprint_Charmeleon,
+ gMonFootprint_Charizard,
+ gMonFootprint_Squirtle,
+ gMonFootprint_Wartortle,
+ gMonFootprint_Blastoise,
+ gMonFootprint_Caterpie,
+ gMonFootprint_Metapod,
+ gMonFootprint_Butterfree,
+ gMonFootprint_Weedle,
+ gMonFootprint_Kakuna,
+ gMonFootprint_Beedrill,
+ gMonFootprint_Pidgey,
+ gMonFootprint_Pidgeotto,
+ gMonFootprint_Pidgeot,
+ gMonFootprint_Rattata,
+ gMonFootprint_Raticate,
+ gMonFootprint_Spearow,
+ gMonFootprint_Fearow,
+ gMonFootprint_Ekans,
+ gMonFootprint_Arbok,
+ gMonFootprint_Pikachu,
+ gMonFootprint_Raichu,
+ gMonFootprint_Sandshrew,
+ gMonFootprint_Sandslash,
+ gMonFootprint_NidoranF,
+ gMonFootprint_Nidorina,
+ gMonFootprint_Nidoqueen,
+ gMonFootprint_NidoranM,
+ gMonFootprint_Nidorino,
+ gMonFootprint_Nidoking,
+ gMonFootprint_Clefairy,
+ gMonFootprint_Clefable,
+ gMonFootprint_Vulpix,
+ gMonFootprint_Ninetales,
+ gMonFootprint_Jigglypuff,
+ gMonFootprint_Wigglytuff,
+ gMonFootprint_Zubat,
+ gMonFootprint_Golbat,
+ gMonFootprint_Oddish,
+ gMonFootprint_Gloom,
+ gMonFootprint_Vileplume,
+ gMonFootprint_Paras,
+ gMonFootprint_Parasect,
+ gMonFootprint_Venonat,
+ gMonFootprint_Venomoth,
+ gMonFootprint_Diglett,
+ gMonFootprint_Dugtrio,
+ gMonFootprint_Meowth,
+ gMonFootprint_Persian,
+ gMonFootprint_Psyduck,
+ gMonFootprint_Golduck,
+ gMonFootprint_Mankey,
+ gMonFootprint_Primeape,
+ gMonFootprint_Growlithe,
+ gMonFootprint_Arcanine,
+ gMonFootprint_Poliwag,
+ gMonFootprint_Poliwhirl,
+ gMonFootprint_Poliwrath,
+ gMonFootprint_Abra,
+ gMonFootprint_Kadabra,
+ gMonFootprint_Alakazam,
+ gMonFootprint_Machop,
+ gMonFootprint_Machoke,
+ gMonFootprint_Machamp,
+ gMonFootprint_Bellsprout,
+ gMonFootprint_Weepinbell,
+ gMonFootprint_Victreebel,
+ gMonFootprint_Tentacool,
+ gMonFootprint_Tentacruel,
+ gMonFootprint_Geodude,
+ gMonFootprint_Graveler,
+ gMonFootprint_Golem,
+ gMonFootprint_Ponyta,
+ gMonFootprint_Rapidash,
+ gMonFootprint_Slowpoke,
+ gMonFootprint_Slowbro,
+ gMonFootprint_Magnemite,
+ gMonFootprint_Magneton,
+ gMonFootprint_Farfetchd,
+ gMonFootprint_Doduo,
+ gMonFootprint_Dodrio,
+ gMonFootprint_Seel,
+ gMonFootprint_Dewgong,
+ gMonFootprint_Grimer,
+ gMonFootprint_Muk,
+ gMonFootprint_Shellder,
+ gMonFootprint_Cloyster,
+ gMonFootprint_Gastly,
+ gMonFootprint_Haunter,
+ gMonFootprint_Gengar,
+ gMonFootprint_Onix,
+ gMonFootprint_Drowzee,
+ gMonFootprint_Hypno,
+ gMonFootprint_Krabby,
+ gMonFootprint_Kingler,
+ gMonFootprint_Voltorb,
+ gMonFootprint_Electrode,
+ gMonFootprint_Exeggcute,
+ gMonFootprint_Exeggutor,
+ gMonFootprint_Cubone,
+ gMonFootprint_Marowak,
+ gMonFootprint_Hitmonlee,
+ gMonFootprint_Hitmonchan,
+ gMonFootprint_Lickitung,
+ gMonFootprint_Koffing,
+ gMonFootprint_Weezing,
+ gMonFootprint_Rhyhorn,
+ gMonFootprint_Rhydon,
+ gMonFootprint_Chansey,
+ gMonFootprint_Tangela,
+ gMonFootprint_Kangaskhan,
+ gMonFootprint_Horsea,
+ gMonFootprint_Seadra,
+ gMonFootprint_Goldeen,
+ gMonFootprint_Seaking,
+ gMonFootprint_Staryu,
+ gMonFootprint_Starmie,
+ gMonFootprint_Mrmime,
+ gMonFootprint_Scyther,
+ gMonFootprint_Jynx,
+ gMonFootprint_Electabuzz,
+ gMonFootprint_Magmar,
+ gMonFootprint_Pinsir,
+ gMonFootprint_Tauros,
+ gMonFootprint_Magikarp,
+ gMonFootprint_Gyarados,
+ gMonFootprint_Lapras,
+ gMonFootprint_Ditto,
+ gMonFootprint_Eevee,
+ gMonFootprint_Vaporeon,
+ gMonFootprint_Jolteon,
+ gMonFootprint_Flareon,
+ gMonFootprint_Porygon,
+ gMonFootprint_Omanyte,
+ gMonFootprint_Omastar,
+ gMonFootprint_Kabuto,
+ gMonFootprint_Kabutops,
+ gMonFootprint_Aerodactyl,
+ gMonFootprint_Snorlax,
+ gMonFootprint_Articuno,
+ gMonFootprint_Zapdos,
+ gMonFootprint_Moltres,
+ gMonFootprint_Dratini,
+ gMonFootprint_Dragonair,
+ gMonFootprint_Dragonite,
+ gMonFootprint_Mewtwo,
+ gMonFootprint_Mew,
+ gMonFootprint_Chikorita,
+ gMonFootprint_Bayleef,
+ gMonFootprint_Meganium,
+ gMonFootprint_Cyndaquil,
+ gMonFootprint_Quilava,
+ gMonFootprint_Typhlosion,
+ gMonFootprint_Totodile,
+ gMonFootprint_Croconaw,
+ gMonFootprint_Feraligatr,
+ gMonFootprint_Sentret,
+ gMonFootprint_Furret,
+ gMonFootprint_Hoothoot,
+ gMonFootprint_Noctowl,
+ gMonFootprint_Ledyba,
+ gMonFootprint_Ledian,
+ gMonFootprint_Spinarak,
+ gMonFootprint_Ariados,
+ gMonFootprint_Crobat,
+ gMonFootprint_Chinchou,
+ gMonFootprint_Lanturn,
+ gMonFootprint_Pichu,
+ gMonFootprint_Cleffa,
+ gMonFootprint_Igglybuff,
+ gMonFootprint_Togepi,
+ gMonFootprint_Togetic,
+ gMonFootprint_Natu,
+ gMonFootprint_Xatu,
+ gMonFootprint_Mareep,
+ gMonFootprint_Flaaffy,
+ gMonFootprint_Ampharos,
+ gMonFootprint_Bellossom,
+ gMonFootprint_Marill,
+ gMonFootprint_Azumarill,
+ gMonFootprint_Sudowoodo,
+ gMonFootprint_Politoed,
+ gMonFootprint_Hoppip,
+ gMonFootprint_Skiploom,
+ gMonFootprint_Jumpluff,
+ gMonFootprint_Aipom,
+ gMonFootprint_Sunkern,
+ gMonFootprint_Sunflora,
+ gMonFootprint_Yanma,
+ gMonFootprint_Wooper,
+ gMonFootprint_Quagsire,
+ gMonFootprint_Espeon,
+ gMonFootprint_Umbreon,
+ gMonFootprint_Murkrow,
+ gMonFootprint_Slowking,
+ gMonFootprint_Misdreavus,
+ gMonFootprint_Unown,
+ gMonFootprint_Wobbuffet,
+ gMonFootprint_Girafarig,
+ gMonFootprint_Pineco,
+ gMonFootprint_Forretress,
+ gMonFootprint_Dunsparce,
+ gMonFootprint_Gligar,
+ gMonFootprint_Steelix,
+ gMonFootprint_Snubbull,
+ gMonFootprint_Granbull,
+ gMonFootprint_Qwilfish,
+ gMonFootprint_Scizor,
+ gMonFootprint_Shuckle,
+ gMonFootprint_Heracross,
+ gMonFootprint_Sneasel,
+ gMonFootprint_Teddiursa,
+ gMonFootprint_Ursaring,
+ gMonFootprint_Slugma,
+ gMonFootprint_Magcargo,
+ gMonFootprint_Swinub,
+ gMonFootprint_Piloswine,
+ gMonFootprint_Corsola,
+ gMonFootprint_Remoraid,
+ gMonFootprint_Octillery,
+ gMonFootprint_Delibird,
+ gMonFootprint_Mantine,
+ gMonFootprint_Skarmory,
+ gMonFootprint_Houndour,
+ gMonFootprint_Houndoom,
+ gMonFootprint_Kingdra,
+ gMonFootprint_Phanpy,
+ gMonFootprint_Donphan,
+ gMonFootprint_Porygon2,
+ gMonFootprint_Stantler,
+ gMonFootprint_Smeargle,
+ gMonFootprint_Tyrogue,
+ gMonFootprint_Hitmontop,
+ gMonFootprint_Smoochum,
+ gMonFootprint_Elekid,
+ gMonFootprint_Magby,
+ gMonFootprint_Miltank,
+ gMonFootprint_Blissey,
+ gMonFootprint_Raikou,
+ gMonFootprint_Entei,
+ gMonFootprint_Suicune,
+ gMonFootprint_Larvitar,
+ gMonFootprint_Pupitar,
+ gMonFootprint_Tyranitar,
+ gMonFootprint_Lugia,
+ gMonFootprint_HoOh,
+ gMonFootprint_Celebi,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_QuestionMark,
+ gMonFootprint_Treecko,
+ gMonFootprint_Grovyle,
+ gMonFootprint_Sceptile,
+ gMonFootprint_Torchic,
+ gMonFootprint_Combusken,
+ gMonFootprint_Blaziken,
+ gMonFootprint_Mudkip,
+ gMonFootprint_Marshtomp,
+ gMonFootprint_Swampert,
+ gMonFootprint_Poochyena,
+ gMonFootprint_Mightyena,
+ gMonFootprint_Zigzagoon,
+ gMonFootprint_Linoone,
+ gMonFootprint_Wurmple,
+ gMonFootprint_Silcoon,
+ gMonFootprint_Beautifly,
+ gMonFootprint_Cascoon,
+ gMonFootprint_Dustox,
+ gMonFootprint_Lotad,
+ gMonFootprint_Lombre,
+ gMonFootprint_Ludicolo,
+ gMonFootprint_Seedot,
+ gMonFootprint_Nuzleaf,
+ gMonFootprint_Shiftry,
+ gMonFootprint_Nincada,
+ gMonFootprint_Ninjask,
+ gMonFootprint_Shedinja,
+ gMonFootprint_Taillow,
+ gMonFootprint_Swellow,
+ gMonFootprint_Shroomish,
+ gMonFootprint_Breloom,
+ gMonFootprint_Spinda,
+ gMonFootprint_Wingull,
+ gMonFootprint_Pelipper,
+ gMonFootprint_Surskit,
+ gMonFootprint_Masquerain,
+ gMonFootprint_Wailmer,
+ gMonFootprint_Wailord,
+ gMonFootprint_Skitty,
+ gMonFootprint_Delcatty,
+ gMonFootprint_Kecleon,
+ gMonFootprint_Baltoy,
+ gMonFootprint_Claydol,
+ gMonFootprint_Nosepass,
+ gMonFootprint_Torkoal,
+ gMonFootprint_Sableye,
+ gMonFootprint_Barboach,
+ gMonFootprint_Whiscash,
+ gMonFootprint_Luvdisc,
+ gMonFootprint_Corphish,
+ gMonFootprint_Crawdaunt,
+ gMonFootprint_Feebas,
+ gMonFootprint_Milotic,
+ gMonFootprint_Carvanha,
+ gMonFootprint_Sharpedo,
+ gMonFootprint_Trapinch,
+ gMonFootprint_Vibrava,
+ gMonFootprint_Flygon,
+ gMonFootprint_Makuhita,
+ gMonFootprint_Hariyama,
+ gMonFootprint_Electrike,
+ gMonFootprint_Manectric,
+ gMonFootprint_Numel,
+ gMonFootprint_Camerupt,
+ gMonFootprint_Spheal,
+ gMonFootprint_Sealeo,
+ gMonFootprint_Walrein,
+ gMonFootprint_Cacnea,
+ gMonFootprint_Cacturne,
+ gMonFootprint_Snorunt,
+ gMonFootprint_Glalie,
+ gMonFootprint_Lunatone,
+ gMonFootprint_Solrock,
+ gMonFootprint_Azurill,
+ gMonFootprint_Spoink,
+ gMonFootprint_Grumpig,
+ gMonFootprint_Plusle,
+ gMonFootprint_Minun,
+ gMonFootprint_Mawile,
+ gMonFootprint_Meditite,
+ gMonFootprint_Medicham,
+ gMonFootprint_Swablu,
+ gMonFootprint_Altaria,
+ gMonFootprint_Wynaut,
+ gMonFootprint_Duskull,
+ gMonFootprint_Dusclops,
+ gMonFootprint_Roselia,
+ gMonFootprint_Slakoth,
+ gMonFootprint_Vigoroth,
+ gMonFootprint_Slaking,
+ gMonFootprint_Gulpin,
+ gMonFootprint_Swalot,
+ gMonFootprint_Tropius,
+ gMonFootprint_Whismur,
+ gMonFootprint_Loudred,
+ gMonFootprint_Exploud,
+ gMonFootprint_Clamperl,
+ gMonFootprint_Huntail,
+ gMonFootprint_Gorebyss,
+ gMonFootprint_Absol,
+ gMonFootprint_Shuppet,
+ gMonFootprint_Banette,
+ gMonFootprint_Seviper,
+ gMonFootprint_Zangoose,
+ gMonFootprint_Relicanth,
+ gMonFootprint_Aron,
+ gMonFootprint_Lairon,
+ gMonFootprint_Aggron,
+ gMonFootprint_Castform,
+ gMonFootprint_Volbeat,
+ gMonFootprint_Illumise,
+ gMonFootprint_Lileep,
+ gMonFootprint_Cradily,
+ gMonFootprint_Anorith,
+ gMonFootprint_Armaldo,
+ gMonFootprint_Ralts,
+ gMonFootprint_Kirlia,
+ gMonFootprint_Gardevoir,
+ gMonFootprint_Bagon,
+ gMonFootprint_Shelgon,
+ gMonFootprint_Salamence,
+ gMonFootprint_Beldum,
+ gMonFootprint_Metang,
+ gMonFootprint_Metagross,
+ gMonFootprint_Regirock,
+ gMonFootprint_Regice,
+ gMonFootprint_Registeel,
+ gMonFootprint_Kyogre,
+ gMonFootprint_Groudon,
+ gMonFootprint_Rayquaza,
+ gMonFootprint_Latias,
+ gMonFootprint_Latios,
+ gMonFootprint_Jirachi,
+ gMonFootprint_Deoxys,
+ gMonFootprint_Chimecho,
+ gMonFootprint_Bulbasaur,
+};
diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h
index fde423570..923df2cde 100644
--- a/src/data/pokemon_graphics/front_pic_coordinates.h
+++ b/src/data/pokemon_graphics/front_pic_coordinates.h
@@ -47,211 +47,212 @@ const struct MonCoords gMonFrontPicCoords[] =
{0x66, 0x0a}, // SPECIES_GLOOM
{0x77, 0x06}, // SPECIES_VILEPLUME
{0x55, 0x0f}, // SPECIES_PARAS
- {0x86, 0x08}, // SPECIES_VENONAT
- {0x66, 0x08}, // SPECIES_VENOMOTH
- {0x88, 0x02}, // SPECIES_DIGLETT
- {0x54, 0x12}, // SPECIES_DUGTRIO
- {0x75, 0x0d}, // SPECIES_MEOWTH
- {0x55, 0x0c}, // SPECIES_PERSIAN
- {0x77, 0x07}, // SPECIES_PSYDUCK
- {0x56, 0x09}, // SPECIES_GOLDUCK
- {0x78, 0x02}, // SPECIES_MANKEY
- {0x65, 0x0e}, // SPECIES_PRIMEAPE
- {0x77, 0x07}, // SPECIES_GROWLITHE
- {0x66, 0x0b}, // SPECIES_ARCANINE
- {0x88, 0x02}, // SPECIES_POLIWAG
- {0x74, 0x13}, // SPECIES_POLIWHIRL
- {0x76, 0x0a}, // SPECIES_POLIWRATH
- {0x76, 0x08}, // SPECIES_ABRA
- {0x66, 0x0b}, // SPECIES_KADABRA
- {0x77, 0x05}, // SPECIES_ALAKAZAM
- {0x87, 0x04}, // SPECIES_MACHOP
- {0x56, 0x0b}, // SPECIES_MACHOKE
- {0x67, 0x06}, // SPECIES_MACHAMP
- {0x88, 0x01}, // SPECIES_BELLSPROUT
- {0x65, 0x0f}, // SPECIES_WEEPINBELL
- {0x66, 0x0b}, // SPECIES_VICTREEBEL
- {0x77, 0x05}, // SPECIES_TENTACOOL
- {0x46, 0x09}, // SPECIES_TENTACRUEL
- {0x87, 0x04}, // SPECIES_GEODUDE
- {0x54, 0x12}, // SPECIES_GRAVELER
- {0x87, 0x04}, // SPECIES_GOLEM
- {0x77, 0x05}, // SPECIES_PONYTA
- {0x66, 0x08}, // SPECIES_RAPIDASH
- {0x88, 0x01}, // SPECIES_SLOWPOKE
- {0x66, 0x0b}, // SPECIES_SLOWBRO
- {0x86, 0x08}, // SPECIES_MAGNEMITE
- {0x43, 0x15}, // SPECIES_MAGNETON
- {0x76, 0x08}, // SPECIES_FARFETCHD
- {0x66, 0x09}, // SPECIES_DODUO
- {0x57, 0x05}, // SPECIES_DODRIO
- {0x88, 0x00}, // SPECIES_SEEL
- {0x76, 0x0a}, // SPECIES_DEWGONG
- {0x87, 0x07}, // SPECIES_GRIMER
- {0x65, 0x0c}, // SPECIES_MUK
- {0x87, 0x04}, // SPECIES_SHELLDER
- {0x55, 0x10}, // SPECIES_CLOYSTER
- {0x87, 0x05}, // SPECIES_GASTLY
- {0x77, 0x06}, // SPECIES_HAUNTER
+ {0x86, 0x08}, // SPECIES_PARASECT
+ {0x66, 0x08}, // SPECIES_VENONAT
+ {0x88, 0x02}, // SPECIES_VENOMOTH
+ {0x54, 0x12}, // SPECIES_DIGLETT
+ {0x75, 0x0d}, // SPECIES_DUGTRIO
+ {0x55, 0x0c}, // SPECIES_MEOWTH
+ {0x77, 0x07}, // SPECIES_PERSIAN
+ {0x56, 0x09}, // SPECIES_PSYDUCK
+ {0x78, 0x02}, // SPECIES_GOLDUCK
+ {0x65, 0x0e}, // SPECIES_MANKEY
+ {0x77, 0x07}, // SPECIES_PRIMEAPE
+ {0x66, 0x0b}, // SPECIES_GROWLITHE
+ {0x88, 0x02}, // SPECIES_ARCANINE
+ {0x74, 0x13}, // SPECIES_POLIWAG
+ {0x76, 0x0a}, // SPECIES_POLIWHIRL
+ {0x76, 0x08}, // SPECIES_POLIWRATH
+ {0x66, 0x0b}, // SPECIES_ABRA
+ {0x77, 0x05}, // SPECIES_KADABRA
+ {0x87, 0x04}, // SPECIES_ALAKAZAM
+ {0x56, 0x0b}, // SPECIES_MACHOP
+ {0x67, 0x06}, // SPECIES_MACHOKE
+ {0x88, 0x01}, // SPECIES_MACHAMP
+ {0x65, 0x0f}, // SPECIES_BELLSPROUT
+ {0x66, 0x0b}, // SPECIES_WEEPINBELL
+ {0x77, 0x05}, // SPECIES_VICTREEBEL
+ {0x46, 0x09}, // SPECIES_TENTACOOL
+ {0x87, 0x04}, // SPECIES_TENTACRUEL
+ {0x54, 0x12}, // SPECIES_GEODUDE
+ {0x87, 0x04}, // SPECIES_GRAVELER
+ {0x77, 0x05}, // SPECIES_GOLEM
+ {0x66, 0x08}, // SPECIES_PONYTA
+ {0x88, 0x01}, // SPECIES_RAPIDASH
+ {0x66, 0x0b}, // SPECIES_SLOWPOKE
+ {0x86, 0x08}, // SPECIES_SLOWBRO
+ {0x43, 0x15}, // SPECIES_MAGNEMITE
+ {0x76, 0x08}, // SPECIES_MAGNETON
+ {0x66, 0x09}, // SPECIES_FARFETCHD
+ {0x57, 0x05}, // SPECIES_DODUO
+ {0x88, 0x00}, // SPECIES_DODRIO
+ {0x76, 0x0a}, // SPECIES_SEEL
+ {0x87, 0x07}, // SPECIES_DEWGONG
+ {0x65, 0x0c}, // SPECIES_GRIMER
+ {0x87, 0x04}, // SPECIES_MUK
+ {0x55, 0x10}, // SPECIES_SHELLDER
+ {0x87, 0x05}, // SPECIES_CLOYSTER
+ {0x77, 0x06}, // SPECIES_GASTLY
+ {0x77, 0x05}, // SPECIES_HAUNTER
{0x77, 0x05}, // SPECIES_GENGAR
- {0x77, 0x05}, // SPECIES_ONIX
- {0x78, 0x02}, // SPECIES_DROWZEE
- {0x77, 0x07}, // SPECIES_HYPNO
- {0x77, 0x04}, // SPECIES_KRABBY
- {0x65, 0x0d}, // SPECIES_KINGLER
- {0x88, 0x03}, // SPECIES_VOLTORB
- {0x44, 0x13}, // SPECIES_ELECTRODE
- {0x55, 0x0e}, // SPECIES_EXEGGCUTE
- {0x87, 0x07}, // SPECIES_EXEGGUTOR
- {0x88, 0x00}, // SPECIES_CUBONE
- {0x55, 0x0f}, // SPECIES_MAROWAK
- {0x76, 0x0b}, // SPECIES_HITMONLEE
- {0x87, 0x04}, // SPECIES_HITMONCHAN
- {0x67, 0x04}, // SPECIES_LICKITUNG
- {0x86, 0x08}, // SPECIES_KOFFING
- {0x66, 0x08}, // SPECIES_WEEZING
- {0x88, 0x02}, // SPECIES_RHYHORN
- {0x76, 0x09}, // SPECIES_RHYDON
- {0x88, 0x02}, // SPECIES_CHANSEY
- {0x76, 0x09}, // SPECIES_TANGELA
- {0x67, 0x07}, // SPECIES_KANGASKHAN
- {0x88, 0x00}, // SPECIES_HORSEA
- {0x45, 0x0f}, // SPECIES_SEADRA
- {0x67, 0x07}, // SPECIES_GOLDEEN
- {0x66, 0x0a}, // SPECIES_SEAKING
- {0x77, 0x04}, // SPECIES_STARYU
- {0x66, 0x0a}, // SPECIES_STARMIE
- {0x77, 0x06}, // SPECIES_MR_MIME
- {0x66, 0x08}, // SPECIES_SCYTHER
- {0x88, 0x00}, // SPECIES_JYNX
- {0x77, 0x04}, // SPECIES_ELECTABUZZ
- {0x78, 0x02}, // SPECIES_MAGMAR
+ {0x78, 0x02}, // SPECIES_ONIX
+ {0x77, 0x07}, // SPECIES_DROWZEE
+ {0x77, 0x04}, // SPECIES_HYPNO
+ {0x65, 0x0d}, // SPECIES_KRABBY
+ {0x88, 0x03}, // SPECIES_KINGLER
+ {0x44, 0x13}, // SPECIES_VOLTORB
+ {0x55, 0x0e}, // SPECIES_ELECTRODE
+ {0x87, 0x07}, // SPECIES_EXEGGCUTE
+ {0x88, 0x00}, // SPECIES_EXEGGUTOR
+ {0x55, 0x0f}, // SPECIES_CUBONE
+ {0x76, 0x0b}, // SPECIES_MAROWAK
+ {0x87, 0x04}, // SPECIES_HITMONLEE
+ {0x67, 0x04}, // SPECIES_HITMONCHAN
+ {0x86, 0x08}, // SPECIES_LICKITUNG
+ {0x66, 0x08}, // SPECIES_KOFFING
+ {0x88, 0x02}, // SPECIES_WEEZING
+ {0x76, 0x09}, // SPECIES_RHYHORN
+ {0x88, 0x02}, // SPECIES_RHYDON
+ {0x76, 0x09}, // SPECIES_CHANSEY
+ {0x67, 0x07}, // SPECIES_TANGELA
+ {0x88, 0x00}, // SPECIES_KANGASKHAN
+ {0x45, 0x0f}, // SPECIES_HORSEA
+ {0x67, 0x07}, // SPECIES_SEADRA
+ {0x66, 0x0a}, // SPECIES_GOLDEEN
+ {0x77, 0x04}, // SPECIES_SEAKING
+ {0x66, 0x0a}, // SPECIES_STARYU
+ {0x77, 0x06}, // SPECIES_STARMIE
+ {0x66, 0x08}, // SPECIES_MR_MIME
+ {0x88, 0x00}, // SPECIES_SCYTHER
+ {0x77, 0x04}, // SPECIES_JYNX
+ {0x78, 0x02}, // SPECIES_ELECTABUZZ
+ {0x77, 0x04}, // SPECIES_MAGMAR
{0x77, 0x04}, // SPECIES_PINSIR
- {0x77, 0x04}, // SPECIES_TAUROS
- {0x78, 0x00}, // SPECIES_MAGIKARP
- {0x67, 0x06}, // SPECIES_GYARADOS
- {0x88, 0x08}, // SPECIES_LAPRAS
- {0x85, 0x0d}, // SPECIES_DITTO
- {0x54, 0x11}, // SPECIES_EEVEE
- {0x56, 0x09}, // SPECIES_VAPOREON
- {0x67, 0x06}, // SPECIES_JOLTEON
- {0x76, 0x09}, // SPECIES_FLAREON
- {0x66, 0x0a}, // SPECIES_PORYGON
- {0x55, 0x0d}, // SPECIES_OMANYTE
- {0x45, 0x0f}, // SPECIES_OMASTAR
- {0x67, 0x07}, // SPECIES_KABUTO
- {0x54, 0x11}, // SPECIES_KABUTOPS
- {0x88, 0x03}, // SPECIES_AERODACTYL
- {0x88, 0x01}, // SPECIES_SNORLAX
- {0x87, 0x05}, // SPECIES_ARTICUNO
- {0x88, 0x03}, // SPECIES_ZAPDOS
- {0x87, 0x04}, // SPECIES_MOLTRES
- {0x88, 0x00}, // SPECIES_DRATINI
- {0x75, 0x0e}, // SPECIES_DRAGONAIR
- {0x87, 0x06}, // SPECIES_DRAGONITE
+ {0x78, 0x00}, // SPECIES_TAUROS
+ {0x67, 0x06}, // SPECIES_MAGIKARP
+ {0x88, 0x08}, // SPECIES_GYARADOS
+ {0x85, 0x0d}, // SPECIES_LAPRAS
+ {0x54, 0x11}, // SPECIES_DITTO
+ {0x56, 0x09}, // SPECIES_EEVEE
+ {0x67, 0x06}, // SPECIES_VAPOREON
+ {0x76, 0x09}, // SPECIES_JOLTEON
+ {0x66, 0x0a}, // SPECIES_FLAREON
+ {0x55, 0x0d}, // SPECIES_PORYGON
+ {0x45, 0x0f}, // SPECIES_OMANYTE
+ {0x67, 0x07}, // SPECIES_OMASTAR
+ {0x54, 0x11}, // SPECIES_KABUTO
+ {0x88, 0x03}, // SPECIES_KABUTOPS
+ {0x88, 0x01}, // SPECIES_AERODACTYL
+ {0x87, 0x05}, // SPECIES_SNORLAX
+ {0x88, 0x03}, // SPECIES_ARTICUNO
+ {0x87, 0x04}, // SPECIES_ZAPDOS
+ {0x88, 0x00}, // SPECIES_MOLTRES
+ {0x75, 0x0e}, // SPECIES_DRATINI
+ {0x87, 0x06}, // SPECIES_DRAGONAIR
+ {0x88, 0x00}, // SPECIES_DRAGONITE
{0x88, 0x00}, // SPECIES_MEWTWO
- {0x88, 0x00}, // SPECIES_MEW
- {0x55, 0x0d}, // SPECIES_CHIKORITA
- {0x75, 0x0d}, // SPECIES_BAYLEEF
- {0x77, 0x04}, // SPECIES_MEGANIUM
- {0x88, 0x00}, // SPECIES_CYNDAQUIL
- {0x55, 0x0e}, // SPECIES_QUILAVA
- {0x76, 0x08}, // SPECIES_TYPHLOSION
- {0x78, 0x00}, // SPECIES_TOTODILE
- {0x55, 0x0f}, // SPECIES_CROCONAW
- {0x67, 0x06}, // SPECIES_FERALIGATR
- {0x88, 0x00}, // SPECIES_SENTRET
- {0x47, 0x04}, // SPECIES_FURRET
- {0x67, 0x07}, // SPECIES_HOOTHOOT
- {0x55, 0x0d}, // SPECIES_NOCTOWL
- {0x58, 0x03}, // SPECIES_LEDYBA
- {0x56, 0x0c}, // SPECIES_LEDIAN
- {0x67, 0x04}, // SPECIES_SPINARAK
- {0x54, 0x13}, // SPECIES_ARIADOS
- {0x87, 0x05}, // SPECIES_CROBAT
- {0x88, 0x00}, // SPECIES_CHINCHOU
- {0x75, 0x10}, // SPECIES_LANTURN
- {0x87, 0x0b}, // SPECIES_PICHU
- {0x45, 0x0c}, // SPECIES_CLEFFA
- {0x44, 0x14}, // SPECIES_IGGLYBUFF
- {0x44, 0x12}, // SPECIES_TOGEPI
- {0x34, 0x14}, // SPECIES_TOGETIC
- {0x46, 0x09}, // SPECIES_NATU
- {0x44, 0x14}, // SPECIES_XATU
- {0x47, 0x07}, // SPECIES_MAREEP
- {0x55, 0x10}, // SPECIES_FLAAFFY
- {0x56, 0x0a}, // SPECIES_AMPHAROS
- {0x77, 0x05}, // SPECIES_BELLOSSOM
- {0x45, 0x0e}, // SPECIES_MARILL
- {0x65, 0x0e}, // SPECIES_AZUMARILL
- {0x76, 0x09}, // SPECIES_SUDOWOODO
+ {0x55, 0x0d}, // SPECIES_MEW
+ {0x75, 0x0d}, // SPECIES_CHIKORITA
+ {0x77, 0x04}, // SPECIES_BAYLEEF
+ {0x88, 0x00}, // SPECIES_MEGANIUM
+ {0x55, 0x0e}, // SPECIES_CYNDAQUIL
+ {0x76, 0x08}, // SPECIES_QUILAVA
+ {0x78, 0x00}, // SPECIES_TYPHLOSION
+ {0x55, 0x0f}, // SPECIES_TOTODILE
+ {0x67, 0x06}, // SPECIES_CROCONAW
+ {0x88, 0x00}, // SPECIES_FERALIGATR
+ {0x47, 0x04}, // SPECIES_SENTRET
+ {0x67, 0x07}, // SPECIES_FURRET
+ {0x55, 0x0d}, // SPECIES_HOOTHOOT
+ {0x58, 0x03}, // SPECIES_NOCTOWL
+ {0x56, 0x0c}, // SPECIES_LEDYBA
+ {0x67, 0x04}, // SPECIES_LEDIAN
+ {0x54, 0x13}, // SPECIES_SPINARAK
+ {0x87, 0x05}, // SPECIES_ARIADOS
+ {0x88, 0x00}, // SPECIES_CROBAT
+ {0x75, 0x10}, // SPECIES_CHINCHOU
+ {0x87, 0x0b}, // SPECIES_LANTURN
+ {0x45, 0x0c}, // SPECIES_PICHU
+ {0x44, 0x14}, // SPECIES_CLEFFA
+ {0x44, 0x12}, // SPECIES_IGGLYBUFF
+ {0x34, 0x14}, // SPECIES_TOGEPI
+ {0x46, 0x09}, // SPECIES_TOGETIC
+ {0x44, 0x14}, // SPECIES_NATU
+ {0x47, 0x07}, // SPECIES_XATU
+ {0x55, 0x10}, // SPECIES_MAREEP
+ {0x56, 0x0a}, // SPECIES_FLAAFFY
+ {0x77, 0x05}, // SPECIES_AMPHAROS
+ {0x45, 0x0e}, // SPECIES_BELLOSSOM
+ {0x65, 0x0e}, // SPECIES_MARILL
+ {0x76, 0x09}, // SPECIES_AZUMARILL
+ {0x67, 0x06}, // SPECIES_SUDOWOODO
{0x67, 0x06}, // SPECIES_POLITOED
- {0x67, 0x06}, // SPECIES_HOPPIP
- {0x66, 0x0a}, // SPECIES_SKIPLOOM
- {0x55, 0x0f}, // SPECIES_JUMPLUFF
- {0x77, 0x07}, // SPECIES_AIPOM
- {0x58, 0x03}, // SPECIES_SUNKERN
- {0x44, 0x10}, // SPECIES_SUNFLORA
- {0x56, 0x08}, // SPECIES_YANMA
- {0x86, 0x0a}, // SPECIES_WOOPER
- {0x54, 0x10}, // SPECIES_QUAGSIRE
- {0x77, 0x07}, // SPECIES_ESPEON
- {0x66, 0x08}, // SPECIES_UMBREON
- {0x67, 0x08}, // SPECIES_MURKROW
- {0x66, 0x0b}, // SPECIES_SLOWKING
- {0x58, 0x01}, // SPECIES_MISDREAVUS
- {0x55, 0x0c}, // SPECIES_UNOWN
- {0x35, 0x0f}, // SPECIES_WOBBUFFET
- {0x77, 0x06}, // SPECIES_GIRAFARIG
- {0x88, 0x03}, // SPECIES_PINECO
- {0x56, 0x0a}, // SPECIES_FORRETRESS
- {0x76, 0x09}, // SPECIES_DUNSPARCE
- {0x74, 0x11}, // SPECIES_GLIGAR
- {0x78, 0x03}, // SPECIES_STEELIX
- {0x88, 0x00}, // SPECIES_SNUBBULL
- {0x55, 0x0d}, // SPECIES_GRANBULL
- {0x57, 0x06}, // SPECIES_QWILFISH
- {0x56, 0x0a}, // SPECIES_SCIZOR
- {0x88, 0x00}, // SPECIES_SHUCKLE
- {0x66, 0x09}, // SPECIES_HERACROSS
- {0x88, 0x03}, // SPECIES_SNEASEL
- {0x67, 0x05}, // SPECIES_TEDDIURSA
- {0x45, 0x0d}, // SPECIES_URSARING
- {0x78, 0x01}, // SPECIES_SLUGMA
- {0x45, 0x0d}, // SPECIES_MAGCARGO
- {0x57, 0x0d}, // SPECIES_SWINUB
- {0x43, 0x14}, // SPECIES_PILOSWINE
- {0x66, 0x08}, // SPECIES_CORSOLA
- {0x65, 0x0c}, // SPECIES_REMORAID
- {0x55, 0x0e}, // SPECIES_OCTILLERY
- {0x66, 0x0a}, // SPECIES_DELIBIRD
- {0x56, 0x08}, // SPECIES_MANTINE
- {0x88, 0x01}, // SPECIES_SKARMORY
- {0x88, 0x00}, // SPECIES_HOUNDOUR
- {0x56, 0x0b}, // SPECIES_HOUNDOOM
- {0x77, 0x05}, // SPECIES_KINGDRA
- {0x78, 0x04}, // SPECIES_PHANPY
- {0x54, 0x10}, // SPECIES_DONPHAN
- {0x86, 0x08}, // SPECIES_PORYGON2
- {0x55, 0x0f}, // SPECIES_STANTLER
- {0x88, 0x00}, // SPECIES_SMEARGLE
- {0x77, 0x06}, // SPECIES_TYROGUE
- {0x46, 0x09}, // SPECIES_HITMONTOP
- {0x67, 0x05}, // SPECIES_SMOOCHUM
- {0x35, 0x0f}, // SPECIES_ELEKID
- {0x76, 0x0a}, // SPECIES_MAGBY
- {0x45, 0x0d}, // SPECIES_MILTANK
- {0x77, 0x04}, // SPECIES_BLISSEY
- {0x77, 0x06}, // SPECIES_RAIKOU
+ {0x66, 0x0a}, // SPECIES_HOPPIP
+ {0x55, 0x0f}, // SPECIES_SKIPLOOM
+ {0x77, 0x07}, // SPECIES_JUMPLUFF
+ {0x58, 0x03}, // SPECIES_AIPOM
+ {0x44, 0x10}, // SPECIES_SUNKERN
+ {0x56, 0x08}, // SPECIES_SUNFLORA
+ {0x86, 0x0a}, // SPECIES_YANMA
+ {0x54, 0x10}, // SPECIES_WOOPER
+ {0x77, 0x07}, // SPECIES_QUAGSIRE
+ {0x66, 0x08}, // SPECIES_ESPEON
+ {0x67, 0x08}, // SPECIES_UMBREON
+ {0x66, 0x0b}, // SPECIES_MURKROW
+ {0x58, 0x01}, // SPECIES_SLOWKING
+ {0x55, 0x0c}, // SPECIES_MISDREAVUS
+ {0x35, 0x0f}, // SPECIES_UNOWN
+ {0x77, 0x06}, // SPECIES_WOBBUFFET
+ {0x88, 0x03}, // SPECIES_GIRAFARIG
+ {0x56, 0x0a}, // SPECIES_PINECO
+ {0x76, 0x09}, // SPECIES_FORRETRESS
+ {0x74, 0x11}, // SPECIES_DUNSPARCE
+ {0x78, 0x03}, // SPECIES_GLIGAR
+ {0x88, 0x00}, // SPECIES_STEELIX
+ {0x55, 0x0d}, // SPECIES_SNUBBULL
+ {0x57, 0x06}, // SPECIES_GRANBULL
+ {0x56, 0x0a}, // SPECIES_QWILFISH
+ {0x88, 0x00}, // SPECIES_SCIZOR
+ {0x66, 0x09}, // SPECIES_SHUCKLE
+ {0x88, 0x03}, // SPECIES_HERACROSS
+ {0x67, 0x05}, // SPECIES_SNEASEL
+ {0x45, 0x0d}, // SPECIES_TEDDIURSA
+ {0x78, 0x01}, // SPECIES_URSARING
+ {0x45, 0x0d}, // SPECIES_SLUGMA
+ {0x57, 0x0d}, // SPECIES_MAGCARGO
+ {0x43, 0x14}, // SPECIES_SWINUB
+ {0x66, 0x08}, // SPECIES_PILOSWINE
+ {0x65, 0x0c}, // SPECIES_CORSOLA
+ {0x55, 0x0e}, // SPECIES_REMORAID
+ {0x66, 0x0a}, // SPECIES_OCTILLERY
+ {0x56, 0x08}, // SPECIES_DELIBIRD
+ {0x88, 0x01}, // SPECIES_MANTINE
+ {0x88, 0x00}, // SPECIES_SKARMORY
+ {0x56, 0x0b}, // SPECIES_HOUNDOUR
+ {0x77, 0x05}, // SPECIES_HOUNDOOM
+ {0x78, 0x04}, // SPECIES_KINGDRA
+ {0x54, 0x10}, // SPECIES_PHANPY
+ {0x86, 0x08}, // SPECIES_DONPHAN
+ {0x55, 0x0f}, // SPECIES_PORYGON2
+ {0x88, 0x00}, // SPECIES_STANTLER
+ {0x77, 0x06}, // SPECIES_SMEARGLE
+ {0x46, 0x09}, // SPECIES_TYROGUE
+ {0x67, 0x05}, // SPECIES_HITMONTOP
+ {0x35, 0x0f}, // SPECIES_SMOOCHUM
+ {0x76, 0x0a}, // SPECIES_ELEKID
+ {0x45, 0x0d}, // SPECIES_MAGBY
+ {0x77, 0x04}, // SPECIES_MILTANK
+ {0x77, 0x06}, // SPECIES_BLISSEY
+ {0x88, 0x00}, // SPECIES_RAIKOU
{0x88, 0x00}, // SPECIES_ENTEI
{0x88, 0x00}, // SPECIES_SUICUNE
- {0x88, 0x00}, // SPECIES_LARVITAR
- {0x46, 0x09}, // SPECIES_PUPITAR
- {0x56, 0x09}, // SPECIES_TYRANITAR
+ {0x46, 0x09}, // SPECIES_LARVITAR
+ {0x56, 0x09}, // SPECIES_PUPITAR
+ {0x88, 0x00}, // SPECIES_TYRANITAR
{0x88, 0x00}, // SPECIES_LUGIA
{0x88, 0x00}, // SPECIES_HO_OH
- {0x88, 0x00}, // SPECIES_CELEBI
- {0x55, 0x0e}, // SPECIES_OLD_UNOWN_B
+ {0x55, 0x0e}, // SPECIES_CELEBI
+ {0x87, 0x04}, // SPECIES_OLD_UNOWN_B
{0x87, 0x04}, // SPECIES_OLD_UNOWN_C
{0x87, 0x04}, // SPECIES_OLD_UNOWN_D
{0x87, 0x04}, // SPECIES_OLD_UNOWN_E
@@ -276,168 +277,167 @@ const struct MonCoords gMonFrontPicCoords[] =
{0x87, 0x04}, // SPECIES_OLD_UNOWN_X
{0x87, 0x04}, // SPECIES_OLD_UNOWN_Y
{0x87, 0x04}, // SPECIES_OLD_UNOWN_Z
- {0x87, 0x04}, // SPECIES_TREECKO
- {0x66, 0x08}, // SPECIES_GROVYLE
- {0x87, 0x04}, // SPECIES_SCEPTILE
- {0x88, 0x00}, // SPECIES_TORCHIC
- {0x56, 0x08}, // SPECIES_COMBUSKEN
- {0x88, 0x01}, // SPECIES_BLAZIKEN
- {0x88, 0x00}, // SPECIES_MUDKIP
- {0x56, 0x0c}, // SPECIES_MARSHTOMP
- {0x67, 0x06}, // SPECIES_SWAMPERT
- {0x88, 0x00}, // SPECIES_POOCHYENA
- {0x55, 0x0c}, // SPECIES_MIGHTYENA
- {0x87, 0x04}, // SPECIES_ZIGZAGOON
- {0x85, 0x0f}, // SPECIES_LINOONE
- {0x78, 0x03}, // SPECIES_WURMPLE
- {0x45, 0x0e}, // SPECIES_SILCOON
- {0x75, 0x11}, // SPECIES_BEAUTIFLY
- {0x86, 0x09}, // SPECIES_CASCOON
- {0x74, 0x10}, // SPECIES_DUSTOX
- {0x86, 0x0f}, // SPECIES_LOTAD
- {0x65, 0x0e}, // SPECIES_LOMBRE
- {0x66, 0x09}, // SPECIES_LUDICOLO
- {0x88, 0x00}, // SPECIES_SEEDOT
- {0x46, 0x10}, // SPECIES_NUZLEAF
- {0x56, 0x08}, // SPECIES_SHIFTRY
- {0x88, 0x02}, // SPECIES_NINCADA
- {0x74, 0x12}, // SPECIES_NINJASK
- {0x86, 0x0a}, // SPECIES_SHEDINJA
- {0x66, 0x0a}, // SPECIES_TAILLOW
- {0x64, 0x10}, // SPECIES_SWELLOW
- {0x87, 0x06}, // SPECIES_SHROOMISH
- {0x54, 0x10}, // SPECIES_BRELOOM
- {0x77, 0x04}, // SPECIES_SPINDA
- {0x68, 0x08}, // SPECIES_WINGULL
- {0x84, 0x18}, // SPECIES_PELIPPER
- {0x77, 0x04}, // SPECIES_SURSKIT
- {0x65, 0x0f}, // SPECIES_MASQUERAIN
- {0x88, 0x01}, // SPECIES_WAILMER
- {0x75, 0x0f}, // SPECIES_WAILORD
- {0x87, 0x0a}, // SPECIES_SKITTY
- {0x66, 0x0b}, // SPECIES_DELCATTY
- {0x66, 0x08}, // SPECIES_KECLEON
- {0x67, 0x07}, // SPECIES_BALTOY
- {0x55, 0x10}, // SPECIES_CLAYDOL
- {0x78, 0x06}, // SPECIES_NOSEPASS
- {0x56, 0x0c}, // SPECIES_TORKOAL
- {0x88, 0x02}, // SPECIES_SABLEYE
- {0x66, 0x09}, // SPECIES_BARBOACH
- {0x46, 0x0b}, // SPECIES_WHISCASH
- {0x76, 0x09}, // SPECIES_LUVDISC
- {0x46, 0x18}, // SPECIES_CORPHISH
- {0x66, 0x0c}, // SPECIES_CRAWDAUNT
- {0x88, 0x01}, // SPECIES_FEEBAS
- {0x46, 0x0d}, // SPECIES_MILOTIC
- {0x88, 0x00}, // SPECIES_CARVANHA
- {0x67, 0x06}, // SPECIES_SHARPEDO
- {0x78, 0x03}, // SPECIES_TRAPINCH
- {0x54, 0x10}, // SPECIES_VIBRAVA
- {0x86, 0x0c}, // SPECIES_FLYGON
- {0x88, 0x01}, // SPECIES_MAKUHITA
- {0x65, 0x0c}, // SPECIES_HARIYAMA
- {0x88, 0x01}, // SPECIES_ELECTRIKE
- {0x64, 0x12}, // SPECIES_MANECTRIC
- {0x67, 0x04}, // SPECIES_NUMEL
- {0x65, 0x0f}, // SPECIES_CAMERUPT
- {0x87, 0x09}, // SPECIES_SPHEAL
- {0x65, 0x10}, // SPECIES_SEALEO
- {0x86, 0x0a}, // SPECIES_WALREIN
- {0x88, 0x01}, // SPECIES_CACNEA
- {0x74, 0x10}, // SPECIES_CACTURNE
- {0x88, 0x00}, // SPECIES_SNORUNT
- {0x56, 0x0b}, // SPECIES_GLALIE
- {0x76, 0x0a}, // SPECIES_LUNATONE
- {0x66, 0x09}, // SPECIES_SOLROCK
- {0x88, 0x01}, // SPECIES_AZURILL
- {0x55, 0x0f}, // SPECIES_SPOINK
- {0x46, 0x09}, // SPECIES_GRUMPIG
- {0x77, 0x05}, // SPECIES_PLUSLE
- {0x56, 0x0e}, // SPECIES_MINUN
- {0x66, 0x0c}, // SPECIES_MAWILE
- {0x76, 0x08}, // SPECIES_MEDITITE
- {0x65, 0x0c}, // SPECIES_MEDICHAM
- {0x68, 0x01}, // SPECIES_SWABLU
- {0x76, 0x11}, // SPECIES_ALTARIA
- {0x88, 0x02}, // SPECIES_WYNAUT
- {0x55, 0x0c}, // SPECIES_DUSKULL
- {0x66, 0x0a}, // SPECIES_DUSCLOPS
- {0x77, 0x05}, // SPECIES_ROSELIA
- {0x76, 0x08}, // SPECIES_SLAKOTH
- {0x74, 0x12}, // SPECIES_VIGOROTH
- {0x78, 0x00}, // SPECIES_SLAKING
- {0x86, 0x08}, // SPECIES_GULPIN
- {0x55, 0x12}, // SPECIES_SWALOT
- {0x66, 0x08}, // SPECIES_TROPIUS
- {0x88, 0x00}, // SPECIES_WHISMUR
- {0x55, 0x0e}, // SPECIES_LOUDRED
- {0x78, 0x03}, // SPECIES_EXPLOUD
- {0x88, 0x01}, // SPECIES_CLAMPERL
- {0x55, 0x0e}, // SPECIES_HUNTAIL
- {0x78, 0x03}, // SPECIES_GOREBYSS
- {0x86, 0x0b}, // SPECIES_ABSOL
- {0x68, 0x00}, // SPECIES_SHUPPET
- {0x56, 0x0e}, // SPECIES_BANETTE
- {0x55, 0x0c}, // SPECIES_SEVIPER
- {0x77, 0x08}, // SPECIES_ZANGOOSE
- {0x87, 0x05}, // SPECIES_RELICANTH
- {0x77, 0x0b}, // SPECIES_ARON
- {0x43, 0x14}, // SPECIES_LAIRON
- {0x75, 0x0d}, // SPECIES_AGGRON
- {0x88, 0x00}, // SPECIES_CASTFORM
- {0x34, 0x11}, // SPECIES_VOLBEAT
- {0x66, 0x08}, // SPECIES_ILLUMISE
- {0x56, 0x08}, // SPECIES_LILEEP
- {0x67, 0x07}, // SPECIES_CRADILY
- {0x78, 0x00}, // SPECIES_ANORITH
- {0x66, 0x08}, // SPECIES_ARMALDO
- {0x88, 0x00}, // SPECIES_RALTS
- {0x35, 0x0f}, // SPECIES_KIRLIA
- {0x47, 0x06}, // SPECIES_GARDEVOIR
- {0x78, 0x01}, // SPECIES_BAGON
- {0x56, 0x0b}, // SPECIES_SHELGON
- {0x66, 0x09}, // SPECIES_SALAMENCE
- {0x87, 0x04}, // SPECIES_BELDUM
- {0x55, 0x0f}, // SPECIES_METANG
- {0x87, 0x07}, // SPECIES_METAGROSS
- {0x87, 0x06}, // SPECIES_REGIROCK
- {0x78, 0x04}, // SPECIES_REGICE
- {0x88, 0x02}, // SPECIES_REGISTEEL
- {0x88, 0x03}, // SPECIES_KYOGRE
- {0x87, 0x04}, // SPECIES_GROUDON
- {0x88, 0x01}, // SPECIES_RAYQUAZA
- {0x88, 0x00}, // SPECIES_LATIAS
- {0x88, 0x01}, // SPECIES_LATIOS
- {0x88, 0x02}, // SPECIES_JIRACHI
- {0x66, 0x0d}, // SPECIES_DEOXYS
- {0x88, 0x01}, // SPECIES_CHIMECHO
- {0x37, 0x06}, // SPECIES_EGG
- {0x33, 0x14}, // SPECIES_UNOWN_B
- {0x34, 0x10}, // SPECIES_UNOWN_C
+ {0x66, 0x08}, // SPECIES_TREECKO
+ {0x87, 0x04}, // SPECIES_GROVYLE
+ {0x88, 0x00}, // SPECIES_SCEPTILE
+ {0x56, 0x08}, // SPECIES_TORCHIC
+ {0x88, 0x01}, // SPECIES_COMBUSKEN
+ {0x88, 0x00}, // SPECIES_BLAZIKEN
+ {0x56, 0x0c}, // SPECIES_MUDKIP
+ {0x67, 0x06}, // SPECIES_MARSHTOMP
+ {0x88, 0x00}, // SPECIES_SWAMPERT
+ {0x55, 0x0c}, // SPECIES_POOCHYENA
+ {0x87, 0x04}, // SPECIES_MIGHTYENA
+ {0x85, 0x0f}, // SPECIES_ZIGZAGOON
+ {0x78, 0x03}, // SPECIES_LINOONE
+ {0x45, 0x0e}, // SPECIES_WURMPLE
+ {0x75, 0x11}, // SPECIES_SILCOON
+ {0x86, 0x09}, // SPECIES_BEAUTIFLY
+ {0x74, 0x10}, // SPECIES_CASCOON
+ {0x86, 0x0f}, // SPECIES_DUSTOX
+ {0x65, 0x0e}, // SPECIES_LOTAD
+ {0x66, 0x09}, // SPECIES_LOMBRE
+ {0x88, 0x00}, // SPECIES_LUDICOLO
+ {0x46, 0x10}, // SPECIES_SEEDOT
+ {0x56, 0x08}, // SPECIES_NUZLEAF
+ {0x88, 0x02}, // SPECIES_SHIFTRY
+ {0x74, 0x12}, // SPECIES_NINCADA
+ {0x86, 0x0a}, // SPECIES_NINJASK
+ {0x66, 0x0a}, // SPECIES_SHEDINJA
+ {0x64, 0x10}, // SPECIES_TAILLOW
+ {0x87, 0x06}, // SPECIES_SWELLOW
+ {0x54, 0x10}, // SPECIES_SHROOMISH
+ {0x77, 0x04}, // SPECIES_BRELOOM
+ {0x68, 0x08}, // SPECIES_SPINDA
+ {0x84, 0x18}, // SPECIES_WINGULL
+ {0x77, 0x04}, // SPECIES_PELIPPER
+ {0x65, 0x0f}, // SPECIES_SURSKIT
+ {0x88, 0x01}, // SPECIES_MASQUERAIN
+ {0x75, 0x0f}, // SPECIES_WAILMER
+ {0x87, 0x0a}, // SPECIES_WAILORD
+ {0x66, 0x0b}, // SPECIES_SKITTY
+ {0x66, 0x08}, // SPECIES_DELCATTY
+ {0x67, 0x07}, // SPECIES_KECLEON
+ {0x55, 0x10}, // SPECIES_BALTOY
+ {0x78, 0x06}, // SPECIES_CLAYDOL
+ {0x56, 0x0c}, // SPECIES_NOSEPASS
+ {0x88, 0x02}, // SPECIES_TORKOAL
+ {0x66, 0x09}, // SPECIES_SABLEYE
+ {0x46, 0x0b}, // SPECIES_BARBOACH
+ {0x76, 0x09}, // SPECIES_WHISCASH
+ {0x46, 0x18}, // SPECIES_LUVDISC
+ {0x66, 0x0c}, // SPECIES_CORPHISH
+ {0x88, 0x01}, // SPECIES_CRAWDAUNT
+ {0x46, 0x0d}, // SPECIES_FEEBAS
+ {0x88, 0x00}, // SPECIES_MILOTIC
+ {0x67, 0x06}, // SPECIES_CARVANHA
+ {0x78, 0x03}, // SPECIES_SHARPEDO
+ {0x54, 0x10}, // SPECIES_TRAPINCH
+ {0x86, 0x0c}, // SPECIES_VIBRAVA
+ {0x88, 0x01}, // SPECIES_FLYGON
+ {0x65, 0x0c}, // SPECIES_MAKUHITA
+ {0x88, 0x01}, // SPECIES_HARIYAMA
+ {0x64, 0x12}, // SPECIES_ELECTRIKE
+ {0x67, 0x04}, // SPECIES_MANECTRIC
+ {0x65, 0x0f}, // SPECIES_NUMEL
+ {0x87, 0x09}, // SPECIES_CAMERUPT
+ {0x65, 0x10}, // SPECIES_SPHEAL
+ {0x86, 0x0a}, // SPECIES_SEALEO
+ {0x88, 0x01}, // SPECIES_WALREIN
+ {0x74, 0x10}, // SPECIES_CACNEA
+ {0x88, 0x00}, // SPECIES_CACTURNE
+ {0x56, 0x0b}, // SPECIES_SNORUNT
+ {0x76, 0x0a}, // SPECIES_GLALIE
+ {0x66, 0x09}, // SPECIES_LUNATONE
+ {0x88, 0x01}, // SPECIES_SOLROCK
+ {0x55, 0x0f}, // SPECIES_AZURILL
+ {0x46, 0x09}, // SPECIES_SPOINK
+ {0x77, 0x05}, // SPECIES_GRUMPIG
+ {0x56, 0x0e}, // SPECIES_PLUSLE
+ {0x66, 0x0c}, // SPECIES_MINUN
+ {0x76, 0x08}, // SPECIES_MAWILE
+ {0x65, 0x0c}, // SPECIES_MEDITITE
+ {0x68, 0x01}, // SPECIES_MEDICHAM
+ {0x76, 0x11}, // SPECIES_SWABLU
+ {0x88, 0x02}, // SPECIES_ALTARIA
+ {0x55, 0x0c}, // SPECIES_WYNAUT
+ {0x66, 0x0a}, // SPECIES_DUSKULL
+ {0x77, 0x05}, // SPECIES_DUSCLOPS
+ {0x76, 0x08}, // SPECIES_ROSELIA
+ {0x74, 0x12}, // SPECIES_SLAKOTH
+ {0x78, 0x00}, // SPECIES_VIGOROTH
+ {0x86, 0x08}, // SPECIES_SLAKING
+ {0x55, 0x12}, // SPECIES_GULPIN
+ {0x66, 0x08}, // SPECIES_SWALOT
+ {0x88, 0x00}, // SPECIES_TROPIUS
+ {0x55, 0x0e}, // SPECIES_WHISMUR
+ {0x78, 0x03}, // SPECIES_LOUDRED
+ {0x88, 0x01}, // SPECIES_EXPLOUD
+ {0x55, 0x0e}, // SPECIES_CLAMPERL
+ {0x78, 0x03}, // SPECIES_HUNTAIL
+ {0x86, 0x0b}, // SPECIES_GOREBYSS
+ {0x68, 0x00}, // SPECIES_ABSOL
+ {0x56, 0x0e}, // SPECIES_SHUPPET
+ {0x55, 0x0c}, // SPECIES_BANETTE
+ {0x77, 0x08}, // SPECIES_SEVIPER
+ {0x87, 0x05}, // SPECIES_ZANGOOSE
+ {0x77, 0x0b}, // SPECIES_RELICANTH
+ {0x43, 0x14}, // SPECIES_ARON
+ {0x75, 0x0d}, // SPECIES_LAIRON
+ {0x88, 0x00}, // SPECIES_AGGRON
+ {0x34, 0x11}, // SPECIES_CASTFORM
+ {0x66, 0x08}, // SPECIES_VOLBEAT
+ {0x56, 0x08}, // SPECIES_ILLUMISE
+ {0x67, 0x07}, // SPECIES_LILEEP
+ {0x78, 0x00}, // SPECIES_CRADILY
+ {0x66, 0x08}, // SPECIES_ANORITH
+ {0x88, 0x00}, // SPECIES_ARMALDO
+ {0x35, 0x0f}, // SPECIES_RALTS
+ {0x47, 0x06}, // SPECIES_KIRLIA
+ {0x78, 0x01}, // SPECIES_GARDEVOIR
+ {0x56, 0x0b}, // SPECIES_BAGON
+ {0x66, 0x09}, // SPECIES_SHELGON
+ {0x87, 0x04}, // SPECIES_SALAMENCE
+ {0x55, 0x0f}, // SPECIES_BELDUM
+ {0x87, 0x07}, // SPECIES_METANG
+ {0x87, 0x06}, // SPECIES_METAGROSS
+ {0x78, 0x04}, // SPECIES_REGIROCK
+ {0x88, 0x02}, // SPECIES_REGICE
+ {0x88, 0x03}, // SPECIES_REGISTEEL
+ {0x87, 0x04}, // SPECIES_KYOGRE
+ {0x88, 0x01}, // SPECIES_GROUDON
+ {0x88, 0x00}, // SPECIES_RAYQUAZA
+ {0x88, 0x01}, // SPECIES_LATIAS
+ {0x88, 0x02}, // SPECIES_LATIOS
+ {0x66, 0x0d}, // SPECIES_JIRACHI
+ {0x88, 0x01}, // SPECIES_DEOXYS
+ {0x37, 0x06}, // SPECIES_CHIMECHO
+ {0x33, 0x14}, // SPECIES_EGG
+ {0x34, 0x10}, // SPECIES_UNOWN_B
+ {0x44, 0x10}, // SPECIES_UNOWN_C
{0x44, 0x10}, // SPECIES_UNOWN_D
- {0x44, 0x10}, // SPECIES_UNOWN_E
+ {0x44, 0x11}, // SPECIES_UNOWN_E
{0x44, 0x11}, // SPECIES_UNOWN_F
- {0x44, 0x11}, // SPECIES_UNOWN_G
- {0x35, 0x0e}, // SPECIES_UNOWN_H
- {0x44, 0x10}, // SPECIES_UNOWN_I
- {0x34, 0x10}, // SPECIES_UNOWN_J
- {0x34, 0x11}, // SPECIES_UNOWN_K
- {0x44, 0x11}, // SPECIES_UNOWN_L
- {0x34, 0x13}, // SPECIES_UNOWN_M
- {0x44, 0x13}, // SPECIES_UNOWN_N
- {0x43, 0x14}, // SPECIES_UNOWN_O
- {0x44, 0x10}, // SPECIES_UNOWN_P
- {0x34, 0x13}, // SPECIES_UNOWN_Q
- {0x43, 0x15}, // SPECIES_UNOWN_R
- {0x34, 0x13}, // SPECIES_UNOWN_S
- {0x45, 0x0c}, // SPECIES_UNOWN_T
- {0x34, 0x12}, // SPECIES_UNOWN_U
+ {0x35, 0x0e}, // SPECIES_UNOWN_G
+ {0x44, 0x10}, // SPECIES_UNOWN_H
+ {0x34, 0x10}, // SPECIES_UNOWN_I
+ {0x34, 0x11}, // SPECIES_UNOWN_J
+ {0x44, 0x11}, // SPECIES_UNOWN_K
+ {0x34, 0x13}, // SPECIES_UNOWN_L
+ {0x44, 0x13}, // SPECIES_UNOWN_M
+ {0x43, 0x14}, // SPECIES_UNOWN_N
+ {0x44, 0x10}, // SPECIES_UNOWN_O
+ {0x34, 0x13}, // SPECIES_UNOWN_P
+ {0x43, 0x15}, // SPECIES_UNOWN_Q
+ {0x34, 0x13}, // SPECIES_UNOWN_R
+ {0x45, 0x0c}, // SPECIES_UNOWN_S
+ {0x34, 0x12}, // SPECIES_UNOWN_T
+ {0x44, 0x12}, // SPECIES_UNOWN_U
{0x44, 0x12}, // SPECIES_UNOWN_V
- {0x44, 0x12}, // SPECIES_UNOWN_W
- {0x44, 0x13}, // SPECIES_UNOWN_X
- {0x33, 0x15}, // SPECIES_UNOWN_Y
- {0x34, 0x11}, // SPECIES_UNOWN_Z
- {0x34, 0x10}, // SPECIES_UNOWN_EMARK
- {0x35, 0x0f}, // SPECIES_UNOWN_QMARK
- {0x35, 0x0d},
+ {0x44, 0x13}, // SPECIES_UNOWN_W
+ {0x33, 0x15}, // SPECIES_UNOWN_X
+ {0x34, 0x11}, // SPECIES_UNOWN_Y
+ {0x34, 0x10}, // SPECIES_UNOWN_Z
+ {0x35, 0x0f}, // SPECIES_UNOWN_EMARK
+ {0x35, 0x0d}, // SPECIES_UNOWN_QMARK
};
diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h
index 5aa22f4f8..92e6bab2e 100644
--- a/src/data/pokemon_graphics/front_pic_table.h
+++ b/src/data/pokemon_graphics/front_pic_table.h
@@ -1,446 +1,443 @@
-const struct CompressedSpriteSheet gMonFrontPicTable[] =
-{ //.data .size .tag
- gMonFrontPic_CircledQuestionMark, 0x800, 0,
- gMonFrontPic_Bulbasaur, 0x800, 1,
- gMonFrontPic_Ivysaur, 0x800, 2,
- gMonFrontPic_Venusaur, 0x800, 3,
- gMonFrontPic_Charmander, 0x800, 4,
- gMonFrontPic_Charmeleon, 0x800, 5,
- gMonFrontPic_Charizard, 0x800, 6,
- gMonFrontPic_Squirtle, 0x800, 7,
- gMonFrontPic_Wartortle, 0x800, 8,
- gMonFrontPic_Blastoise, 0x800, 9,
- gMonFrontPic_Caterpie, 0x800, 10,
- gMonFrontPic_Metapod, 0x800, 11,
- gMonFrontPic_Butterfree, 0x800, 12,
- gMonFrontPic_Weedle, 0x800, 13,
- gMonFrontPic_Kakuna, 0x800, 14,
- gMonFrontPic_Beedrill, 0x800, 15,
- gMonFrontPic_Pidgey, 0x800, 16,
- gMonFrontPic_Pidgeotto, 0x800, 17,
- gMonFrontPic_Pidgeot, 0x800, 18,
- gMonFrontPic_Rattata, 0x800, 19,
- gMonFrontPic_Raticate, 0x800, 20,
- gMonFrontPic_Spearow, 0x800, 21,
- gMonFrontPic_Fearow, 0x800, 22,
- gMonFrontPic_Ekans, 0x800, 23,
- gMonFrontPic_Arbok, 0x800, 24,
- gMonFrontPic_Pikachu, 0x800, 25,
- gMonFrontPic_Raichu, 0x800, 26,
- gMonFrontPic_Sandshrew, 0x800, 27,
- gMonFrontPic_Sandslash, 0x800, 28,
- gMonFrontPic_NidoranF, 0x800, 29,
- gMonFrontPic_Nidorina, 0x800, 30,
- gMonFrontPic_Nidoqueen, 0x800, 31,
- gMonFrontPic_NidoranM, 0x800, 32,
- gMonFrontPic_Nidorino, 0x800, 33,
- gMonFrontPic_Nidoking, 0x800, 34,
- gMonFrontPic_Clefairy, 0x800, 35,
- gMonFrontPic_Clefable, 0x800, 36,
- gMonFrontPic_Vulpix, 0x800, 37,
- gMonFrontPic_Ninetales, 0x800, 38,
- gMonFrontPic_Jigglypuff, 0x800, 39,
- gMonFrontPic_Wigglytuff, 0x800, 40,
- gMonFrontPic_Zubat, 0x800, 41,
- gMonFrontPic_Golbat, 0x800, 42,
- gMonFrontPic_Oddish, 0x800, 43,
- gMonFrontPic_Gloom, 0x800, 44,
- gMonFrontPic_Vileplume, 0x800, 45,
- gMonFrontPic_Paras, 0x800, 46,
- gMonFrontPic_Parasect, 0x800, 47,
- gMonFrontPic_Venonat, 0x800, 48,
- gMonFrontPic_Venomoth, 0x800, 49,
- gMonFrontPic_Diglett, 0x800, 50,
- gMonFrontPic_Dugtrio, 0x800, 51,
- gMonFrontPic_Meowth, 0x800, 52,
- gMonFrontPic_Persian, 0x800, 53,
- gMonFrontPic_Psyduck, 0x800, 54,
- gMonFrontPic_Golduck, 0x800, 55,
- gMonFrontPic_Mankey, 0x800, 56,
- gMonFrontPic_Primeape, 0x800, 57,
- gMonFrontPic_Growlithe, 0x800, 58,
- gMonFrontPic_Arcanine, 0x800, 59,
- gMonFrontPic_Poliwag, 0x800, 60,
- gMonFrontPic_Poliwhirl, 0x800, 61,
- gMonFrontPic_Poliwrath, 0x800, 62,
- gMonFrontPic_Abra, 0x800, 63,
- gMonFrontPic_Kadabra, 0x800, 64,
- gMonFrontPic_Alakazam, 0x800, 65,
- gMonFrontPic_Machop, 0x800, 66,
- gMonFrontPic_Machoke, 0x800, 67,
- gMonFrontPic_Machamp, 0x800, 68,
- gMonFrontPic_Bellsprout, 0x800, 69,
- gMonFrontPic_Weepinbell, 0x800, 70,
- gMonFrontPic_Victreebel, 0x800, 71,
- gMonFrontPic_Tentacool, 0x800, 72,
- gMonFrontPic_Tentacruel, 0x800, 73,
- gMonFrontPic_Geodude, 0x800, 74,
- gMonFrontPic_Graveler, 0x800, 75,
- gMonFrontPic_Golem, 0x800, 76,
- gMonFrontPic_Ponyta, 0x800, 77,
- gMonFrontPic_Rapidash, 0x800, 78,
- gMonFrontPic_Slowpoke, 0x800, 79,
- gMonFrontPic_Slowbro, 0x800, 80,
- gMonFrontPic_Magnemite, 0x800, 81,
- gMonFrontPic_Magneton, 0x800, 82,
- gMonFrontPic_Farfetchd, 0x800, 83,
- gMonFrontPic_Doduo, 0x800, 84,
- gMonFrontPic_Dodrio, 0x800, 85,
- gMonFrontPic_Seel, 0x800, 86,
- gMonFrontPic_Dewgong, 0x800, 87,
- gMonFrontPic_Grimer, 0x800, 88,
- gMonFrontPic_Muk, 0x800, 89,
- gMonFrontPic_Shellder, 0x800, 90,
- gMonFrontPic_Cloyster, 0x800, 91,
- gMonFrontPic_Gastly, 0x800, 92,
- gMonFrontPic_Haunter, 0x800, 93,
- gMonFrontPic_Gengar, 0x800, 94,
- gMonFrontPic_Onix, 0x800, 95,
- gMonFrontPic_Drowzee, 0x800, 96,
- gMonFrontPic_Hypno, 0x800, 97,
- gMonFrontPic_Krabby, 0x800, 98,
- gMonFrontPic_Kingler, 0x800, 99,
- gMonFrontPic_Voltorb, 0x800, 100,
- gMonFrontPic_Electrode, 0x800, 101,
- gMonFrontPic_Exeggcute, 0x800, 102,
- gMonFrontPic_Exeggutor, 0x800, 103,
- gMonFrontPic_Cubone, 0x800, 104,
- gMonFrontPic_Marowak, 0x800, 105,
- gMonFrontPic_Hitmonlee, 0x800, 106,
- gMonFrontPic_Hitmonchan, 0x800, 107,
- gMonFrontPic_Lickitung, 0x800, 108,
- gMonFrontPic_Koffing, 0x800, 109,
- gMonFrontPic_Weezing, 0x800, 110,
- gMonFrontPic_Rhyhorn, 0x800, 111,
- gMonFrontPic_Rhydon, 0x800, 112,
- gMonFrontPic_Chansey, 0x800, 113,
- gMonFrontPic_Tangela, 0x800, 114,
- gMonFrontPic_Kangaskhan, 0x800, 115,
- gMonFrontPic_Horsea, 0x800, 116,
- gMonFrontPic_Seadra, 0x800, 117,
- gMonFrontPic_Goldeen, 0x800, 118,
- gMonFrontPic_Seaking, 0x800, 119,
- gMonFrontPic_Staryu, 0x800, 120,
- gMonFrontPic_Starmie, 0x800, 121,
- gMonFrontPic_Mrmime, 0x800, 122,
- gMonFrontPic_Scyther, 0x800, 123,
- gMonFrontPic_Jynx, 0x800, 124,
- gMonFrontPic_Electabuzz, 0x800, 125,
- gMonFrontPic_Magmar, 0x800, 126,
- gMonFrontPic_Pinsir, 0x800, 127,
- gMonFrontPic_Tauros, 0x800, 128,
- gMonFrontPic_Magikarp, 0x800, 129,
- gMonFrontPic_Gyarados, 0x800, 130,
- gMonFrontPic_Lapras, 0x800, 131,
- gMonFrontPic_Ditto, 0x800, 132,
- gMonFrontPic_Eevee, 0x800, 133,
- gMonFrontPic_Vaporeon, 0x800, 134,
- gMonFrontPic_Jolteon, 0x800, 135,
- gMonFrontPic_Flareon, 0x800, 136,
- gMonFrontPic_Porygon, 0x800, 137,
- gMonFrontPic_Omanyte, 0x800, 138,
- gMonFrontPic_Omastar, 0x800, 139,
- gMonFrontPic_Kabuto, 0x800, 140,
- gMonFrontPic_Kabutops, 0x800, 141,
- gMonFrontPic_Aerodactyl, 0x800, 142,
- gMonFrontPic_Snorlax, 0x800, 143,
- gMonFrontPic_Articuno, 0x800, 144,
- gMonFrontPic_Zapdos, 0x800, 145,
- gMonFrontPic_Moltres, 0x800, 146,
- gMonFrontPic_Dratini, 0x800, 147,
- gMonFrontPic_Dragonair, 0x800, 148,
- gMonFrontPic_Dragonite, 0x800, 149,
- gMonFrontPic_Mewtwo, 0x800, 150,
- gMonFrontPic_Mew, 0x800, 151,
-// Gen II
- gMonFrontPic_Chikorita, 0x800, 152,
- gMonFrontPic_Bayleef, 0x800, 153,
- gMonFrontPic_Meganium, 0x800, 154,
- gMonFrontPic_Cyndaquil, 0x800, 155,
- gMonFrontPic_Quilava, 0x800, 156,
- gMonFrontPic_Typhlosion, 0x800, 157,
- gMonFrontPic_Totodile, 0x800, 158,
- gMonFrontPic_Croconaw, 0x800, 159,
- gMonFrontPic_Feraligatr, 0x800, 160,
- gMonFrontPic_Sentret, 0x800, 161,
- gMonFrontPic_Furret, 0x800, 162,
- gMonFrontPic_Hoothoot, 0x800, 163,
- gMonFrontPic_Noctowl, 0x800, 164,
- gMonFrontPic_Ledyba, 0x800, 165,
- gMonFrontPic_Ledian, 0x800, 166,
- gMonFrontPic_Spinarak, 0x800, 167,
- gMonFrontPic_Ariados, 0x800, 168,
- gMonFrontPic_Crobat, 0x800, 169,
- gMonFrontPic_Chinchou, 0x800, 170,
- gMonFrontPic_Lanturn, 0x800, 171,
- gMonFrontPic_Pichu, 0x800, 172,
- gMonFrontPic_Cleffa, 0x800, 173,
- gMonFrontPic_Igglybuff, 0x800, 174,
- gMonFrontPic_Togepi, 0x800, 175,
- gMonFrontPic_Togetic, 0x800, 176,
- gMonFrontPic_Natu, 0x800, 177,
- gMonFrontPic_Xatu, 0x800, 178,
- gMonFrontPic_Mareep, 0x800, 179,
- gMonFrontPic_Flaaffy, 0x800, 180,
- gMonFrontPic_Ampharos, 0x800, 181,
- gMonFrontPic_Bellossom, 0x800, 182,
- gMonFrontPic_Marill, 0x800, 183,
- gMonFrontPic_Azumarill, 0x800, 184,
- gMonFrontPic_Sudowoodo, 0x800, 185,
- gMonFrontPic_Politoed, 0x800, 186,
- gMonFrontPic_Hoppip, 0x800, 187,
- gMonFrontPic_Skiploom, 0x800, 188,
- gMonFrontPic_Jumpluff, 0x800, 189,
- gMonFrontPic_Aipom, 0x800, 190,
- gMonFrontPic_Sunkern, 0x800, 191,
- gMonFrontPic_Sunflora, 0x800, 192,
- gMonFrontPic_Yanma, 0x800, 193,
- gMonFrontPic_Wooper, 0x800, 194,
- gMonFrontPic_Quagsire, 0x800, 195,
- gMonFrontPic_Espeon, 0x800, 196,
- gMonFrontPic_Umbreon, 0x800, 197,
- gMonFrontPic_Murkrow, 0x800, 198,
- gMonFrontPic_Slowking, 0x800, 199,
- gMonFrontPic_Misdreavus, 0x800, 200,
- gMonFrontPic_UnownA, 0x800, 201,
- gMonFrontPic_Wobbuffet, 0x800, 202,
- gMonFrontPic_Girafarig, 0x800, 203,
- gMonFrontPic_Pineco, 0x800, 204,
- gMonFrontPic_Forretress, 0x800, 205,
- gMonFrontPic_Dunsparce, 0x800, 206,
- gMonFrontPic_Gligar, 0x800, 207,
- gMonFrontPic_Steelix, 0x800, 208,
- gMonFrontPic_Snubbull, 0x800, 209,
- gMonFrontPic_Granbull, 0x800, 210,
- gMonFrontPic_Qwilfish, 0x800, 211,
- gMonFrontPic_Scizor, 0x800, 212,
- gMonFrontPic_Shuckle, 0x800, 213,
- gMonFrontPic_Heracross, 0x800, 214,
- gMonFrontPic_Sneasel, 0x800, 215,
- gMonFrontPic_Teddiursa, 0x800, 216,
- gMonFrontPic_Ursaring, 0x800, 217,
- gMonFrontPic_Slugma, 0x800, 218,
- gMonFrontPic_Magcargo, 0x800, 219,
- gMonFrontPic_Swinub, 0x800, 220,
- gMonFrontPic_Piloswine, 0x800, 221,
- gMonFrontPic_Corsola, 0x800, 222,
- gMonFrontPic_Remoraid, 0x800, 223,
- gMonFrontPic_Octillery, 0x800, 224,
- gMonFrontPic_Delibird, 0x800, 225,
- gMonFrontPic_Mantine, 0x800, 226,
- gMonFrontPic_Skarmory, 0x800, 227,
- gMonFrontPic_Houndour, 0x800, 228,
- gMonFrontPic_Houndoom, 0x800, 229,
- gMonFrontPic_Kingdra, 0x800, 230,
- gMonFrontPic_Phanpy, 0x800, 231,
- gMonFrontPic_Donphan, 0x800, 232,
- gMonFrontPic_Porygon2, 0x800, 233,
- gMonFrontPic_Stantler, 0x800, 234,
- gMonFrontPic_Smeargle, 0x800, 235,
- gMonFrontPic_Tyrogue, 0x800, 236,
- gMonFrontPic_Hitmontop, 0x800, 237,
- gMonFrontPic_Smoochum, 0x800, 238,
- gMonFrontPic_Elekid, 0x800, 239,
- gMonFrontPic_Magby, 0x800, 240,
- gMonFrontPic_Miltank, 0x800, 241,
- gMonFrontPic_Blissey, 0x800, 242,
- gMonFrontPic_Raikou, 0x800, 243,
- gMonFrontPic_Entei, 0x800, 244,
- gMonFrontPic_Suicune, 0x800, 245,
- gMonFrontPic_Larvitar, 0x800, 246,
- gMonFrontPic_Pupitar, 0x800, 247,
- gMonFrontPic_Tyranitar, 0x800, 248,
- gMonFrontPic_Lugia, 0x800, 249,
- gMonFrontPic_HoOh, 0x800, 250,
- gMonFrontPic_Celebi, 0x800, 251,
-// Empty slots
- gMonFrontPic_DoubleQuestionMark, 0x800, 252,
- gMonFrontPic_DoubleQuestionMark, 0x800, 253,
- gMonFrontPic_DoubleQuestionMark, 0x800, 254,
- gMonFrontPic_DoubleQuestionMark, 0x800, 255,
- gMonFrontPic_DoubleQuestionMark, 0x800, 256,
- gMonFrontPic_DoubleQuestionMark, 0x800, 257,
- gMonFrontPic_DoubleQuestionMark, 0x800, 258,
- gMonFrontPic_DoubleQuestionMark, 0x800, 259,
- gMonFrontPic_DoubleQuestionMark, 0x800, 260,
- gMonFrontPic_DoubleQuestionMark, 0x800, 261,
- gMonFrontPic_DoubleQuestionMark, 0x800, 262,
- gMonFrontPic_DoubleQuestionMark, 0x800, 263,
- gMonFrontPic_DoubleQuestionMark, 0x800, 264,
- gMonFrontPic_DoubleQuestionMark, 0x800, 265,
- gMonFrontPic_DoubleQuestionMark, 0x800, 266,
- gMonFrontPic_DoubleQuestionMark, 0x800, 267,
- gMonFrontPic_DoubleQuestionMark, 0x800, 268,
- gMonFrontPic_DoubleQuestionMark, 0x800, 269,
- gMonFrontPic_DoubleQuestionMark, 0x800, 270,
- gMonFrontPic_DoubleQuestionMark, 0x800, 271,
- gMonFrontPic_DoubleQuestionMark, 0x800, 272,
- gMonFrontPic_DoubleQuestionMark, 0x800, 273,
- gMonFrontPic_DoubleQuestionMark, 0x800, 274,
- gMonFrontPic_DoubleQuestionMark, 0x800, 275,
- gMonFrontPic_DoubleQuestionMark, 0x800, 276,
-// Gen III
- gMonFrontPic_Treecko, 0x800, 277,
- gMonFrontPic_Grovyle, 0x800, 278,
- gMonFrontPic_Sceptile, 0x800, 279,
- gMonFrontPic_Torchic, 0x800, 280,
- gMonFrontPic_Combusken, 0x800, 281,
- gMonFrontPic_Blaziken, 0x800, 282,
- gMonFrontPic_Mudkip, 0x800, 283,
- gMonFrontPic_Marshtomp, 0x800, 284,
- gMonFrontPic_Swampert, 0x800, 285,
- gMonFrontPic_Poochyena, 0x800, 286,
- gMonFrontPic_Mightyena, 0x800, 287,
- gMonFrontPic_Zigzagoon, 0x800, 288,
- gMonFrontPic_Linoone, 0x800, 289,
- gMonFrontPic_Wurmple, 0x800, 290,
- gMonFrontPic_Silcoon, 0x800, 291,
- gMonFrontPic_Beautifly, 0x800, 292,
- gMonFrontPic_Cascoon, 0x800, 293,
- gMonFrontPic_Dustox, 0x800, 294,
- gMonFrontPic_Lotad, 0x800, 295,
- gMonFrontPic_Lombre, 0x800, 296,
- gMonFrontPic_Ludicolo, 0x800, 297,
- gMonFrontPic_Seedot, 0x800, 298,
- gMonFrontPic_Nuzleaf, 0x800, 299,
- gMonFrontPic_Shiftry, 0x800, 300,
- gMonFrontPic_Nincada, 0x800, 301,
- gMonFrontPic_Ninjask, 0x800, 302,
- gMonFrontPic_Shedinja, 0x800, 303,
- gMonFrontPic_Taillow, 0x800, 304,
- gMonFrontPic_Swellow, 0x800, 305,
- gMonFrontPic_Shroomish, 0x800, 306,
- gMonFrontPic_Breloom, 0x800, 307,
- gMonFrontPic_Spinda, 0x800, 308,
- gMonFrontPic_Wingull, 0x800, 309,
- gMonFrontPic_Pelipper, 0x800, 310,
- gMonFrontPic_Surskit, 0x800, 311,
- gMonFrontPic_Masquerain, 0x800, 312,
- gMonFrontPic_Wailmer, 0x800, 313,
- gMonFrontPic_Wailord, 0x800, 314,
- gMonFrontPic_Skitty, 0x800, 315,
- gMonFrontPic_Delcatty, 0x800, 316,
- gMonFrontPic_Kecleon, 0x800, 317,
- gMonFrontPic_Baltoy, 0x800, 318,
- gMonFrontPic_Claydol, 0x800, 319,
- gMonFrontPic_Nosepass, 0x800, 320,
- gMonFrontPic_Torkoal, 0x800, 321,
- gMonFrontPic_Sableye, 0x800, 322,
- gMonFrontPic_Barboach, 0x800, 323,
- gMonFrontPic_Whiscash, 0x800, 324,
- gMonFrontPic_Luvdisc, 0x800, 325,
- gMonFrontPic_Corphish, 0x800, 326,
- gMonFrontPic_Crawdaunt, 0x800, 327,
- gMonFrontPic_Feebas, 0x800, 328,
- gMonFrontPic_Milotic, 0x800, 329,
- gMonFrontPic_Carvanha, 0x800, 330,
- gMonFrontPic_Sharpedo, 0x800, 331,
- gMonFrontPic_Trapinch, 0x800, 332,
- gMonFrontPic_Vibrava, 0x800, 333,
- gMonFrontPic_Flygon, 0x800, 334,
- gMonFrontPic_Makuhita, 0x800, 335,
- gMonFrontPic_Hariyama, 0x800, 336,
- gMonFrontPic_Electrike, 0x800, 337,
- gMonFrontPic_Manectric, 0x800, 338,
- gMonFrontPic_Numel, 0x800, 339,
- gMonFrontPic_Camerupt, 0x800, 340,
- gMonFrontPic_Spheal, 0x800, 341,
- gMonFrontPic_Sealeo, 0x800, 342,
- gMonFrontPic_Walrein, 0x800, 343,
- gMonFrontPic_Cacnea, 0x800, 344,
- gMonFrontPic_Cacturne, 0x800, 345,
- gMonFrontPic_Snorunt, 0x800, 346,
- gMonFrontPic_Glalie, 0x800, 347,
- gMonFrontPic_Lunatone, 0x800, 348,
- gMonFrontPic_Solrock, 0x800, 349,
- gMonFrontPic_Azurill, 0x800, 350,
- gMonFrontPic_Spoink, 0x800, 351,
- gMonFrontPic_Grumpig, 0x800, 352,
- gMonFrontPic_Plusle, 0x800, 353,
- gMonFrontPic_Minun, 0x800, 354,
- gMonFrontPic_Mawile, 0x800, 355,
- gMonFrontPic_Meditite, 0x800, 356,
- gMonFrontPic_Medicham, 0x800, 357,
- gMonFrontPic_Swablu, 0x800, 358,
- gMonFrontPic_Altaria, 0x800, 359,
- gMonFrontPic_Wynaut, 0x800, 360,
- gMonFrontPic_Duskull, 0x800, 361,
- gMonFrontPic_Dusclops, 0x800, 362,
- gMonFrontPic_Roselia, 0x800, 363,
- gMonFrontPic_Slakoth, 0x800, 364,
- gMonFrontPic_Vigoroth, 0x800, 365,
- gMonFrontPic_Slaking, 0x800, 366,
- gMonFrontPic_Gulpin, 0x800, 367,
- gMonFrontPic_Swalot, 0x800, 368,
- gMonFrontPic_Tropius, 0x800, 369,
- gMonFrontPic_Whismur, 0x800, 370,
- gMonFrontPic_Loudred, 0x800, 371,
- gMonFrontPic_Exploud, 0x800, 372,
- gMonFrontPic_Clamperl, 0x800, 373,
- gMonFrontPic_Huntail, 0x800, 374,
- gMonFrontPic_Gorebyss, 0x800, 375,
- gMonFrontPic_Absol, 0x800, 376,
- gMonFrontPic_Shuppet, 0x800, 377,
- gMonFrontPic_Banette, 0x800, 378,
- gMonFrontPic_Seviper, 0x800, 379,
- gMonFrontPic_Zangoose, 0x800, 380,
- gMonFrontPic_Relicanth, 0x800, 381,
- gMonFrontPic_Aron, 0x800, 382,
- gMonFrontPic_Lairon, 0x800, 383,
- gMonFrontPic_Aggron, 0x800, 384,
- gMonFrontPic_Castform, 0x800, 385,
- gMonFrontPic_Volbeat, 0x800, 386,
- gMonFrontPic_Illumise, 0x800, 387,
- gMonFrontPic_Lileep, 0x800, 388,
- gMonFrontPic_Cradily, 0x800, 389,
- gMonFrontPic_Anorith, 0x800, 390,
- gMonFrontPic_Armaldo, 0x800, 391,
- gMonFrontPic_Ralts, 0x800, 392,
- gMonFrontPic_Kirlia, 0x800, 393,
- gMonFrontPic_Gardevoir, 0x800, 394,
- gMonFrontPic_Bagon, 0x800, 395,
- gMonFrontPic_Shelgon, 0x800, 396,
- gMonFrontPic_Salamence, 0x800, 397,
- gMonFrontPic_Beldum, 0x800, 398,
- gMonFrontPic_Metang, 0x800, 399,
- gMonFrontPic_Metagross, 0x800, 400,
- gMonFrontPic_Regirock, 0x800, 401,
- gMonFrontPic_Regice, 0x800, 402,
- gMonFrontPic_Registeel, 0x800, 403,
- gMonFrontPic_Kyogre, 0x800, 404,
- gMonFrontPic_Groudon, 0x800, 405,
- gMonFrontPic_Rayquaza, 0x800, 406,
- gMonFrontPic_Latias, 0x800, 407,
- gMonFrontPic_Latios, 0x800, 408,
- gMonFrontPic_Jirachi, 0x800, 409,
- gMonFrontPic_Deoxys, 0x800, 410,
- gMonFrontPic_Chimecho, 0x800, 411,
- gMonFrontPic_Egg, 0x800, 412,
- gMonFrontPic_UnownB, 0x800, 413,
- gMonFrontPic_UnownC, 0x800, 414,
- gMonFrontPic_UnownD, 0x800, 415,
- gMonFrontPic_UnownE, 0x800, 416,
- gMonFrontPic_UnownF, 0x800, 417,
- gMonFrontPic_UnownG, 0x800, 418,
- gMonFrontPic_UnownH, 0x800, 419,
- gMonFrontPic_UnownI, 0x800, 420,
- gMonFrontPic_UnownJ, 0x800, 421,
- gMonFrontPic_UnownK, 0x800, 422,
- gMonFrontPic_UnownL, 0x800, 423,
- gMonFrontPic_UnownM, 0x800, 424,
- gMonFrontPic_UnownN, 0x800, 425,
- gMonFrontPic_UnownO, 0x800, 426,
- gMonFrontPic_UnownP, 0x800, 427,
- gMonFrontPic_UnownQ, 0x800, 428,
- gMonFrontPic_UnownR, 0x800, 429,
- gMonFrontPic_UnownS, 0x800, 430,
- gMonFrontPic_UnownT, 0x800, 431,
- gMonFrontPic_UnownU, 0x800, 432,
- gMonFrontPic_UnownV, 0x800, 433,
- gMonFrontPic_UnownW, 0x800, 434,
- gMonFrontPic_UnownX, 0x800, 435,
- gMonFrontPic_UnownY, 0x800, 436,
- gMonFrontPic_UnownZ, 0x800, 437,
- gMonFrontPic_UnownExclamationMark, 0x800, 438,
- gMonFrontPic_UnownQuestionMark, 0x800, 439,
+const struct CompressedSpriteSheet gMonFrontPicTable[] =
+{
+ [SPECIES_NONE] = {gMonFrontPic_CircledQuestionMark, 0x800, SPECIES_NONE},
+ [SPECIES_BULBASAUR] = {gMonFrontPic_Bulbasaur, 0x800, SPECIES_BULBASAUR},
+ [SPECIES_IVYSAUR] = {gMonFrontPic_Ivysaur, 0x800, SPECIES_IVYSAUR},
+ [SPECIES_VENUSAUR] = {gMonFrontPic_Venusaur, 0x800, SPECIES_VENUSAUR},
+ [SPECIES_CHARMANDER] = {gMonFrontPic_Charmander, 0x800, SPECIES_CHARMANDER},
+ [SPECIES_CHARMELEON] = {gMonFrontPic_Charmeleon, 0x800, SPECIES_CHARMELEON},
+ [SPECIES_CHARIZARD] = {gMonFrontPic_Charizard, 0x800, SPECIES_CHARIZARD},
+ [SPECIES_SQUIRTLE] = {gMonFrontPic_Squirtle, 0x800, SPECIES_SQUIRTLE},
+ [SPECIES_WARTORTLE] = {gMonFrontPic_Wartortle, 0x800, SPECIES_WARTORTLE},
+ [SPECIES_BLASTOISE] = {gMonFrontPic_Blastoise, 0x800, SPECIES_BLASTOISE},
+ [SPECIES_CATERPIE] = {gMonFrontPic_Caterpie, 0x800, SPECIES_CATERPIE},
+ [SPECIES_METAPOD] = {gMonFrontPic_Metapod, 0x800, SPECIES_METAPOD},
+ [SPECIES_BUTTERFREE] = {gMonFrontPic_Butterfree, 0x800, SPECIES_BUTTERFREE},
+ [SPECIES_WEEDLE] = {gMonFrontPic_Weedle, 0x800, SPECIES_WEEDLE},
+ [SPECIES_KAKUNA] = {gMonFrontPic_Kakuna, 0x800, SPECIES_KAKUNA},
+ [SPECIES_BEEDRILL] = {gMonFrontPic_Beedrill, 0x800, SPECIES_BEEDRILL},
+ [SPECIES_PIDGEY] = {gMonFrontPic_Pidgey, 0x800, SPECIES_PIDGEY},
+ [SPECIES_PIDGEOTTO] = {gMonFrontPic_Pidgeotto, 0x800, SPECIES_PIDGEOTTO},
+ [SPECIES_PIDGEOT] = {gMonFrontPic_Pidgeot, 0x800, SPECIES_PIDGEOT},
+ [SPECIES_RATTATA] = {gMonFrontPic_Rattata, 0x800, SPECIES_RATTATA},
+ [SPECIES_RATICATE] = {gMonFrontPic_Raticate, 0x800, SPECIES_RATICATE},
+ [SPECIES_SPEAROW] = {gMonFrontPic_Spearow, 0x800, SPECIES_SPEAROW},
+ [SPECIES_FEAROW] = {gMonFrontPic_Fearow, 0x800, SPECIES_FEAROW},
+ [SPECIES_EKANS] = {gMonFrontPic_Ekans, 0x800, SPECIES_EKANS},
+ [SPECIES_ARBOK] = {gMonFrontPic_Arbok, 0x800, SPECIES_ARBOK},
+ [SPECIES_PIKACHU] = {gMonFrontPic_Pikachu, 0x800, SPECIES_PIKACHU},
+ [SPECIES_RAICHU] = {gMonFrontPic_Raichu, 0x800, SPECIES_RAICHU},
+ [SPECIES_SANDSHREW] = {gMonFrontPic_Sandshrew, 0x800, SPECIES_SANDSHREW},
+ [SPECIES_SANDSLASH] = {gMonFrontPic_Sandslash, 0x800, SPECIES_SANDSLASH},
+ [SPECIES_NIDORAN_F] = {gMonFrontPic_NidoranF, 0x800, SPECIES_NIDORAN_F},
+ [SPECIES_NIDORINA] = {gMonFrontPic_Nidorina, 0x800, SPECIES_NIDORINA},
+ [SPECIES_NIDOQUEEN] = {gMonFrontPic_Nidoqueen, 0x800, SPECIES_NIDOQUEEN},
+ [SPECIES_NIDORAN_M] = {gMonFrontPic_NidoranM, 0x800, SPECIES_NIDORAN_M},
+ [SPECIES_NIDORINO] = {gMonFrontPic_Nidorino, 0x800, SPECIES_NIDORINO},
+ [SPECIES_NIDOKING] = {gMonFrontPic_Nidoking, 0x800, SPECIES_NIDOKING},
+ [SPECIES_CLEFAIRY] = {gMonFrontPic_Clefairy, 0x800, SPECIES_CLEFAIRY},
+ [SPECIES_CLEFABLE] = {gMonFrontPic_Clefable, 0x800, SPECIES_CLEFABLE},
+ [SPECIES_VULPIX] = {gMonFrontPic_Vulpix, 0x800, SPECIES_VULPIX},
+ [SPECIES_NINETALES] = {gMonFrontPic_Ninetales, 0x800, SPECIES_NINETALES},
+ [SPECIES_JIGGLYPUFF] = {gMonFrontPic_Jigglypuff, 0x800, SPECIES_JIGGLYPUFF},
+ [SPECIES_WIGGLYTUFF] = {gMonFrontPic_Wigglytuff, 0x800, SPECIES_WIGGLYTUFF},
+ [SPECIES_ZUBAT] = {gMonFrontPic_Zubat, 0x800, SPECIES_ZUBAT},
+ [SPECIES_GOLBAT] = {gMonFrontPic_Golbat, 0x800, SPECIES_GOLBAT},
+ [SPECIES_ODDISH] = {gMonFrontPic_Oddish, 0x800, SPECIES_ODDISH},
+ [SPECIES_GLOOM] = {gMonFrontPic_Gloom, 0x800, SPECIES_GLOOM},
+ [SPECIES_VILEPLUME] = {gMonFrontPic_Vileplume, 0x800, SPECIES_VILEPLUME},
+ [SPECIES_PARAS] = {gMonFrontPic_Paras, 0x800, SPECIES_PARAS},
+ [SPECIES_PARASECT] = {gMonFrontPic_Parasect, 0x800, SPECIES_PARASECT},
+ [SPECIES_VENONAT] = {gMonFrontPic_Venonat, 0x800, SPECIES_VENONAT},
+ [SPECIES_VENOMOTH] = {gMonFrontPic_Venomoth, 0x800, SPECIES_VENOMOTH},
+ [SPECIES_DIGLETT] = {gMonFrontPic_Diglett, 0x800, SPECIES_DIGLETT},
+ [SPECIES_DUGTRIO] = {gMonFrontPic_Dugtrio, 0x800, SPECIES_DUGTRIO},
+ [SPECIES_MEOWTH] = {gMonFrontPic_Meowth, 0x800, SPECIES_MEOWTH},
+ [SPECIES_PERSIAN] = {gMonFrontPic_Persian, 0x800, SPECIES_PERSIAN},
+ [SPECIES_PSYDUCK] = {gMonFrontPic_Psyduck, 0x800, SPECIES_PSYDUCK},
+ [SPECIES_GOLDUCK] = {gMonFrontPic_Golduck, 0x800, SPECIES_GOLDUCK},
+ [SPECIES_MANKEY] = {gMonFrontPic_Mankey, 0x800, SPECIES_MANKEY},
+ [SPECIES_PRIMEAPE] = {gMonFrontPic_Primeape, 0x800, SPECIES_PRIMEAPE},
+ [SPECIES_GROWLITHE] = {gMonFrontPic_Growlithe, 0x800, SPECIES_GROWLITHE},
+ [SPECIES_ARCANINE] = {gMonFrontPic_Arcanine, 0x800, SPECIES_ARCANINE},
+ [SPECIES_POLIWAG] = {gMonFrontPic_Poliwag, 0x800, SPECIES_POLIWAG},
+ [SPECIES_POLIWHIRL] = {gMonFrontPic_Poliwhirl, 0x800, SPECIES_POLIWHIRL},
+ [SPECIES_POLIWRATH] = {gMonFrontPic_Poliwrath, 0x800, SPECIES_POLIWRATH},
+ [SPECIES_ABRA] = {gMonFrontPic_Abra, 0x800, SPECIES_ABRA},
+ [SPECIES_KADABRA] = {gMonFrontPic_Kadabra, 0x800, SPECIES_KADABRA},
+ [SPECIES_ALAKAZAM] = {gMonFrontPic_Alakazam, 0x800, SPECIES_ALAKAZAM},
+ [SPECIES_MACHOP] = {gMonFrontPic_Machop, 0x800, SPECIES_MACHOP},
+ [SPECIES_MACHOKE] = {gMonFrontPic_Machoke, 0x800, SPECIES_MACHOKE},
+ [SPECIES_MACHAMP] = {gMonFrontPic_Machamp, 0x800, SPECIES_MACHAMP},
+ [SPECIES_BELLSPROUT] = {gMonFrontPic_Bellsprout, 0x800, SPECIES_BELLSPROUT},
+ [SPECIES_WEEPINBELL] = {gMonFrontPic_Weepinbell, 0x800, SPECIES_WEEPINBELL},
+ [SPECIES_VICTREEBEL] = {gMonFrontPic_Victreebel, 0x800, SPECIES_VICTREEBEL},
+ [SPECIES_TENTACOOL] = {gMonFrontPic_Tentacool, 0x800, SPECIES_TENTACOOL},
+ [SPECIES_TENTACRUEL] = {gMonFrontPic_Tentacruel, 0x800, SPECIES_TENTACRUEL},
+ [SPECIES_GEODUDE] = {gMonFrontPic_Geodude, 0x800, SPECIES_GEODUDE},
+ [SPECIES_GRAVELER] = {gMonFrontPic_Graveler, 0x800, SPECIES_GRAVELER},
+ [SPECIES_GOLEM] = {gMonFrontPic_Golem, 0x800, SPECIES_GOLEM},
+ [SPECIES_PONYTA] = {gMonFrontPic_Ponyta, 0x800, SPECIES_PONYTA},
+ [SPECIES_RAPIDASH] = {gMonFrontPic_Rapidash, 0x800, SPECIES_RAPIDASH},
+ [SPECIES_SLOWPOKE] = {gMonFrontPic_Slowpoke, 0x800, SPECIES_SLOWPOKE},
+ [SPECIES_SLOWBRO] = {gMonFrontPic_Slowbro, 0x800, SPECIES_SLOWBRO},
+ [SPECIES_MAGNEMITE] = {gMonFrontPic_Magnemite, 0x800, SPECIES_MAGNEMITE},
+ [SPECIES_MAGNETON] = {gMonFrontPic_Magneton, 0x800, SPECIES_MAGNETON},
+ [SPECIES_FARFETCHD] = {gMonFrontPic_Farfetchd, 0x800, SPECIES_FARFETCHD},
+ [SPECIES_DODUO] = {gMonFrontPic_Doduo, 0x800, SPECIES_DODUO},
+ [SPECIES_DODRIO] = {gMonFrontPic_Dodrio, 0x800, SPECIES_DODRIO},
+ [SPECIES_SEEL] = {gMonFrontPic_Seel, 0x800, SPECIES_SEEL},
+ [SPECIES_DEWGONG] = {gMonFrontPic_Dewgong, 0x800, SPECIES_DEWGONG},
+ [SPECIES_GRIMER] = {gMonFrontPic_Grimer, 0x800, SPECIES_GRIMER},
+ [SPECIES_MUK] = {gMonFrontPic_Muk, 0x800, SPECIES_MUK},
+ [SPECIES_SHELLDER] = {gMonFrontPic_Shellder, 0x800, SPECIES_SHELLDER},
+ [SPECIES_CLOYSTER] = {gMonFrontPic_Cloyster, 0x800, SPECIES_CLOYSTER},
+ [SPECIES_GASTLY] = {gMonFrontPic_Gastly, 0x800, SPECIES_GASTLY},
+ [SPECIES_HAUNTER] = {gMonFrontPic_Haunter, 0x800, SPECIES_HAUNTER},
+ [SPECIES_GENGAR] = {gMonFrontPic_Gengar, 0x800, SPECIES_GENGAR},
+ [SPECIES_ONIX] = {gMonFrontPic_Onix, 0x800, SPECIES_ONIX},
+ [SPECIES_DROWZEE] = {gMonFrontPic_Drowzee, 0x800, SPECIES_DROWZEE},
+ [SPECIES_HYPNO] = {gMonFrontPic_Hypno, 0x800, SPECIES_HYPNO},
+ [SPECIES_KRABBY] = {gMonFrontPic_Krabby, 0x800, SPECIES_KRABBY},
+ [SPECIES_KINGLER] = {gMonFrontPic_Kingler, 0x800, SPECIES_KINGLER},
+ [SPECIES_VOLTORB] = {gMonFrontPic_Voltorb, 0x800, SPECIES_VOLTORB},
+ [SPECIES_ELECTRODE] = {gMonFrontPic_Electrode, 0x800, SPECIES_ELECTRODE},
+ [SPECIES_EXEGGCUTE] = {gMonFrontPic_Exeggcute, 0x800, SPECIES_EXEGGCUTE},
+ [SPECIES_EXEGGUTOR] = {gMonFrontPic_Exeggutor, 0x800, SPECIES_EXEGGUTOR},
+ [SPECIES_CUBONE] = {gMonFrontPic_Cubone, 0x800, SPECIES_CUBONE},
+ [SPECIES_MAROWAK] = {gMonFrontPic_Marowak, 0x800, SPECIES_MAROWAK},
+ [SPECIES_HITMONLEE] = {gMonFrontPic_Hitmonlee, 0x800, SPECIES_HITMONLEE},
+ [SPECIES_HITMONCHAN] = {gMonFrontPic_Hitmonchan, 0x800, SPECIES_HITMONCHAN},
+ [SPECIES_LICKITUNG] = {gMonFrontPic_Lickitung, 0x800, SPECIES_LICKITUNG},
+ [SPECIES_KOFFING] = {gMonFrontPic_Koffing, 0x800, SPECIES_KOFFING},
+ [SPECIES_WEEZING] = {gMonFrontPic_Weezing, 0x800, SPECIES_WEEZING},
+ [SPECIES_RHYHORN] = {gMonFrontPic_Rhyhorn, 0x800, SPECIES_RHYHORN},
+ [SPECIES_RHYDON] = {gMonFrontPic_Rhydon, 0x800, SPECIES_RHYDON},
+ [SPECIES_CHANSEY] = {gMonFrontPic_Chansey, 0x800, SPECIES_CHANSEY},
+ [SPECIES_TANGELA] = {gMonFrontPic_Tangela, 0x800, SPECIES_TANGELA},
+ [SPECIES_KANGASKHAN] = {gMonFrontPic_Kangaskhan, 0x800, SPECIES_KANGASKHAN},
+ [SPECIES_HORSEA] = {gMonFrontPic_Horsea, 0x800, SPECIES_HORSEA},
+ [SPECIES_SEADRA] = {gMonFrontPic_Seadra, 0x800, SPECIES_SEADRA},
+ [SPECIES_GOLDEEN] = {gMonFrontPic_Goldeen, 0x800, SPECIES_GOLDEEN},
+ [SPECIES_SEAKING] = {gMonFrontPic_Seaking, 0x800, SPECIES_SEAKING},
+ [SPECIES_STARYU] = {gMonFrontPic_Staryu, 0x800, SPECIES_STARYU},
+ [SPECIES_STARMIE] = {gMonFrontPic_Starmie, 0x800, SPECIES_STARMIE},
+ [SPECIES_MR_MIME] = {gMonFrontPic_Mrmime, 0x800, SPECIES_MR_MIME},
+ [SPECIES_SCYTHER] = {gMonFrontPic_Scyther, 0x800, SPECIES_SCYTHER},
+ [SPECIES_JYNX] = {gMonFrontPic_Jynx, 0x800, SPECIES_JYNX},
+ [SPECIES_ELECTABUZZ] = {gMonFrontPic_Electabuzz, 0x800, SPECIES_ELECTABUZZ},
+ [SPECIES_MAGMAR] = {gMonFrontPic_Magmar, 0x800, SPECIES_MAGMAR},
+ [SPECIES_PINSIR] = {gMonFrontPic_Pinsir, 0x800, SPECIES_PINSIR},
+ [SPECIES_TAUROS] = {gMonFrontPic_Tauros, 0x800, SPECIES_TAUROS},
+ [SPECIES_MAGIKARP] = {gMonFrontPic_Magikarp, 0x800, SPECIES_MAGIKARP},
+ [SPECIES_GYARADOS] = {gMonFrontPic_Gyarados, 0x800, SPECIES_GYARADOS},
+ [SPECIES_LAPRAS] = {gMonFrontPic_Lapras, 0x800, SPECIES_LAPRAS},
+ [SPECIES_DITTO] = {gMonFrontPic_Ditto, 0x800, SPECIES_DITTO},
+ [SPECIES_EEVEE] = {gMonFrontPic_Eevee, 0x800, SPECIES_EEVEE},
+ [SPECIES_VAPOREON] = {gMonFrontPic_Vaporeon, 0x800, SPECIES_VAPOREON},
+ [SPECIES_JOLTEON] = {gMonFrontPic_Jolteon, 0x800, SPECIES_JOLTEON},
+ [SPECIES_FLAREON] = {gMonFrontPic_Flareon, 0x800, SPECIES_FLAREON},
+ [SPECIES_PORYGON] = {gMonFrontPic_Porygon, 0x800, SPECIES_PORYGON},
+ [SPECIES_OMANYTE] = {gMonFrontPic_Omanyte, 0x800, SPECIES_OMANYTE},
+ [SPECIES_OMASTAR] = {gMonFrontPic_Omastar, 0x800, SPECIES_OMASTAR},
+ [SPECIES_KABUTO] = {gMonFrontPic_Kabuto, 0x800, SPECIES_KABUTO},
+ [SPECIES_KABUTOPS] = {gMonFrontPic_Kabutops, 0x800, SPECIES_KABUTOPS},
+ [SPECIES_AERODACTYL] = {gMonFrontPic_Aerodactyl, 0x800, SPECIES_AERODACTYL},
+ [SPECIES_SNORLAX] = {gMonFrontPic_Snorlax, 0x800, SPECIES_SNORLAX},
+ [SPECIES_ARTICUNO] = {gMonFrontPic_Articuno, 0x800, SPECIES_ARTICUNO},
+ [SPECIES_ZAPDOS] = {gMonFrontPic_Zapdos, 0x800, SPECIES_ZAPDOS},
+ [SPECIES_MOLTRES] = {gMonFrontPic_Moltres, 0x800, SPECIES_MOLTRES},
+ [SPECIES_DRATINI] = {gMonFrontPic_Dratini, 0x800, SPECIES_DRATINI},
+ [SPECIES_DRAGONAIR] = {gMonFrontPic_Dragonair, 0x800, SPECIES_DRAGONAIR},
+ [SPECIES_DRAGONITE] = {gMonFrontPic_Dragonite, 0x800, SPECIES_DRAGONITE},
+ [SPECIES_MEWTWO] = {gMonFrontPic_Mewtwo, 0x800, SPECIES_MEWTWO},
+ [SPECIES_MEW] = {gMonFrontPic_Mew, 0x800, SPECIES_MEW},
+ [SPECIES_CHIKORITA] = {gMonFrontPic_Chikorita, 0x800, SPECIES_CHIKORITA},
+ [SPECIES_BAYLEEF] = {gMonFrontPic_Bayleef, 0x800, SPECIES_BAYLEEF},
+ [SPECIES_MEGANIUM] = {gMonFrontPic_Meganium, 0x800, SPECIES_MEGANIUM},
+ [SPECIES_CYNDAQUIL] = {gMonFrontPic_Cyndaquil, 0x800, SPECIES_CYNDAQUIL},
+ [SPECIES_QUILAVA] = {gMonFrontPic_Quilava, 0x800, SPECIES_QUILAVA},
+ [SPECIES_TYPHLOSION] = {gMonFrontPic_Typhlosion, 0x800, SPECIES_TYPHLOSION},
+ [SPECIES_TOTODILE] = {gMonFrontPic_Totodile, 0x800, SPECIES_TOTODILE},
+ [SPECIES_CROCONAW] = {gMonFrontPic_Croconaw, 0x800, SPECIES_CROCONAW},
+ [SPECIES_FERALIGATR] = {gMonFrontPic_Feraligatr, 0x800, SPECIES_FERALIGATR},
+ [SPECIES_SENTRET] = {gMonFrontPic_Sentret, 0x800, SPECIES_SENTRET},
+ [SPECIES_FURRET] = {gMonFrontPic_Furret, 0x800, SPECIES_FURRET},
+ [SPECIES_HOOTHOOT] = {gMonFrontPic_Hoothoot, 0x800, SPECIES_HOOTHOOT},
+ [SPECIES_NOCTOWL] = {gMonFrontPic_Noctowl, 0x800, SPECIES_NOCTOWL},
+ [SPECIES_LEDYBA] = {gMonFrontPic_Ledyba, 0x800, SPECIES_LEDYBA},
+ [SPECIES_LEDIAN] = {gMonFrontPic_Ledian, 0x800, SPECIES_LEDIAN},
+ [SPECIES_SPINARAK] = {gMonFrontPic_Spinarak, 0x800, SPECIES_SPINARAK},
+ [SPECIES_ARIADOS] = {gMonFrontPic_Ariados, 0x800, SPECIES_ARIADOS},
+ [SPECIES_CROBAT] = {gMonFrontPic_Crobat, 0x800, SPECIES_CROBAT},
+ [SPECIES_CHINCHOU] = {gMonFrontPic_Chinchou, 0x800, SPECIES_CHINCHOU},
+ [SPECIES_LANTURN] = {gMonFrontPic_Lanturn, 0x800, SPECIES_LANTURN},
+ [SPECIES_PICHU] = {gMonFrontPic_Pichu, 0x800, SPECIES_PICHU},
+ [SPECIES_CLEFFA] = {gMonFrontPic_Cleffa, 0x800, SPECIES_CLEFFA},
+ [SPECIES_IGGLYBUFF] = {gMonFrontPic_Igglybuff, 0x800, SPECIES_IGGLYBUFF},
+ [SPECIES_TOGEPI] = {gMonFrontPic_Togepi, 0x800, SPECIES_TOGEPI},
+ [SPECIES_TOGETIC] = {gMonFrontPic_Togetic, 0x800, SPECIES_TOGETIC},
+ [SPECIES_NATU] = {gMonFrontPic_Natu, 0x800, SPECIES_NATU},
+ [SPECIES_XATU] = {gMonFrontPic_Xatu, 0x800, SPECIES_XATU},
+ [SPECIES_MAREEP] = {gMonFrontPic_Mareep, 0x800, SPECIES_MAREEP},
+ [SPECIES_FLAAFFY] = {gMonFrontPic_Flaaffy, 0x800, SPECIES_FLAAFFY},
+ [SPECIES_AMPHAROS] = {gMonFrontPic_Ampharos, 0x800, SPECIES_AMPHAROS},
+ [SPECIES_BELLOSSOM] = {gMonFrontPic_Bellossom, 0x800, SPECIES_BELLOSSOM},
+ [SPECIES_MARILL] = {gMonFrontPic_Marill, 0x800, SPECIES_MARILL},
+ [SPECIES_AZUMARILL] = {gMonFrontPic_Azumarill, 0x800, SPECIES_AZUMARILL},
+ [SPECIES_SUDOWOODO] = {gMonFrontPic_Sudowoodo, 0x800, SPECIES_SUDOWOODO},
+ [SPECIES_POLITOED] = {gMonFrontPic_Politoed, 0x800, SPECIES_POLITOED},
+ [SPECIES_HOPPIP] = {gMonFrontPic_Hoppip, 0x800, SPECIES_HOPPIP},
+ [SPECIES_SKIPLOOM] = {gMonFrontPic_Skiploom, 0x800, SPECIES_SKIPLOOM},
+ [SPECIES_JUMPLUFF] = {gMonFrontPic_Jumpluff, 0x800, SPECIES_JUMPLUFF},
+ [SPECIES_AIPOM] = {gMonFrontPic_Aipom, 0x800, SPECIES_AIPOM},
+ [SPECIES_SUNKERN] = {gMonFrontPic_Sunkern, 0x800, SPECIES_SUNKERN},
+ [SPECIES_SUNFLORA] = {gMonFrontPic_Sunflora, 0x800, SPECIES_SUNFLORA},
+ [SPECIES_YANMA] = {gMonFrontPic_Yanma, 0x800, SPECIES_YANMA},
+ [SPECIES_WOOPER] = {gMonFrontPic_Wooper, 0x800, SPECIES_WOOPER},
+ [SPECIES_QUAGSIRE] = {gMonFrontPic_Quagsire, 0x800, SPECIES_QUAGSIRE},
+ [SPECIES_ESPEON] = {gMonFrontPic_Espeon, 0x800, SPECIES_ESPEON},
+ [SPECIES_UMBREON] = {gMonFrontPic_Umbreon, 0x800, SPECIES_UMBREON},
+ [SPECIES_MURKROW] = {gMonFrontPic_Murkrow, 0x800, SPECIES_MURKROW},
+ [SPECIES_SLOWKING] = {gMonFrontPic_Slowking, 0x800, SPECIES_SLOWKING},
+ [SPECIES_MISDREAVUS] = {gMonFrontPic_Misdreavus, 0x800, SPECIES_MISDREAVUS},
+ [SPECIES_UNOWN] = {gMonFrontPic_UnownA, 0x800, SPECIES_UNOWN},
+ [SPECIES_WOBBUFFET] = {gMonFrontPic_Wobbuffet, 0x800, SPECIES_WOBBUFFET},
+ [SPECIES_GIRAFARIG] = {gMonFrontPic_Girafarig, 0x800, SPECIES_GIRAFARIG},
+ [SPECIES_PINECO] = {gMonFrontPic_Pineco, 0x800, SPECIES_PINECO},
+ [SPECIES_FORRETRESS] = {gMonFrontPic_Forretress, 0x800, SPECIES_FORRETRESS},
+ [SPECIES_DUNSPARCE] = {gMonFrontPic_Dunsparce, 0x800, SPECIES_DUNSPARCE},
+ [SPECIES_GLIGAR] = {gMonFrontPic_Gligar, 0x800, SPECIES_GLIGAR},
+ [SPECIES_STEELIX] = {gMonFrontPic_Steelix, 0x800, SPECIES_STEELIX},
+ [SPECIES_SNUBBULL] = {gMonFrontPic_Snubbull, 0x800, SPECIES_SNUBBULL},
+ [SPECIES_GRANBULL] = {gMonFrontPic_Granbull, 0x800, SPECIES_GRANBULL},
+ [SPECIES_QWILFISH] = {gMonFrontPic_Qwilfish, 0x800, SPECIES_QWILFISH},
+ [SPECIES_SCIZOR] = {gMonFrontPic_Scizor, 0x800, SPECIES_SCIZOR},
+ [SPECIES_SHUCKLE] = {gMonFrontPic_Shuckle, 0x800, SPECIES_SHUCKLE},
+ [SPECIES_HERACROSS] = {gMonFrontPic_Heracross, 0x800, SPECIES_HERACROSS},
+ [SPECIES_SNEASEL] = {gMonFrontPic_Sneasel, 0x800, SPECIES_SNEASEL},
+ [SPECIES_TEDDIURSA] = {gMonFrontPic_Teddiursa, 0x800, SPECIES_TEDDIURSA},
+ [SPECIES_URSARING] = {gMonFrontPic_Ursaring, 0x800, SPECIES_URSARING},
+ [SPECIES_SLUGMA] = {gMonFrontPic_Slugma, 0x800, SPECIES_SLUGMA},
+ [SPECIES_MAGCARGO] = {gMonFrontPic_Magcargo, 0x800, SPECIES_MAGCARGO},
+ [SPECIES_SWINUB] = {gMonFrontPic_Swinub, 0x800, SPECIES_SWINUB},
+ [SPECIES_PILOSWINE] = {gMonFrontPic_Piloswine, 0x800, SPECIES_PILOSWINE},
+ [SPECIES_CORSOLA] = {gMonFrontPic_Corsola, 0x800, SPECIES_CORSOLA},
+ [SPECIES_REMORAID] = {gMonFrontPic_Remoraid, 0x800, SPECIES_REMORAID},
+ [SPECIES_OCTILLERY] = {gMonFrontPic_Octillery, 0x800, SPECIES_OCTILLERY},
+ [SPECIES_DELIBIRD] = {gMonFrontPic_Delibird, 0x800, SPECIES_DELIBIRD},
+ [SPECIES_MANTINE] = {gMonFrontPic_Mantine, 0x800, SPECIES_MANTINE},
+ [SPECIES_SKARMORY] = {gMonFrontPic_Skarmory, 0x800, SPECIES_SKARMORY},
+ [SPECIES_HOUNDOUR] = {gMonFrontPic_Houndour, 0x800, SPECIES_HOUNDOUR},
+ [SPECIES_HOUNDOOM] = {gMonFrontPic_Houndoom, 0x800, SPECIES_HOUNDOOM},
+ [SPECIES_KINGDRA] = {gMonFrontPic_Kingdra, 0x800, SPECIES_KINGDRA},
+ [SPECIES_PHANPY] = {gMonFrontPic_Phanpy, 0x800, SPECIES_PHANPY},
+ [SPECIES_DONPHAN] = {gMonFrontPic_Donphan, 0x800, SPECIES_DONPHAN},
+ [SPECIES_PORYGON2] = {gMonFrontPic_Porygon2, 0x800, SPECIES_PORYGON2},
+ [SPECIES_STANTLER] = {gMonFrontPic_Stantler, 0x800, SPECIES_STANTLER},
+ [SPECIES_SMEARGLE] = {gMonFrontPic_Smeargle, 0x800, SPECIES_SMEARGLE},
+ [SPECIES_TYROGUE] = {gMonFrontPic_Tyrogue, 0x800, SPECIES_TYROGUE},
+ [SPECIES_HITMONTOP] = {gMonFrontPic_Hitmontop, 0x800, SPECIES_HITMONTOP},
+ [SPECIES_SMOOCHUM] = {gMonFrontPic_Smoochum, 0x800, SPECIES_SMOOCHUM},
+ [SPECIES_ELEKID] = {gMonFrontPic_Elekid, 0x800, SPECIES_ELEKID},
+ [SPECIES_MAGBY] = {gMonFrontPic_Magby, 0x800, SPECIES_MAGBY},
+ [SPECIES_MILTANK] = {gMonFrontPic_Miltank, 0x800, SPECIES_MILTANK},
+ [SPECIES_BLISSEY] = {gMonFrontPic_Blissey, 0x800, SPECIES_BLISSEY},
+ [SPECIES_RAIKOU] = {gMonFrontPic_Raikou, 0x800, SPECIES_RAIKOU},
+ [SPECIES_ENTEI] = {gMonFrontPic_Entei, 0x800, SPECIES_ENTEI},
+ [SPECIES_SUICUNE] = {gMonFrontPic_Suicune, 0x800, SPECIES_SUICUNE},
+ [SPECIES_LARVITAR] = {gMonFrontPic_Larvitar, 0x800, SPECIES_LARVITAR},
+ [SPECIES_PUPITAR] = {gMonFrontPic_Pupitar, 0x800, SPECIES_PUPITAR},
+ [SPECIES_TYRANITAR] = {gMonFrontPic_Tyranitar, 0x800, SPECIES_TYRANITAR},
+ [SPECIES_LUGIA] = {gMonFrontPic_Lugia, 0x800, SPECIES_LUGIA},
+ [SPECIES_HO_OH] = {gMonFrontPic_HoOh, 0x800, SPECIES_HO_OH},
+ [SPECIES_CELEBI] = {gMonFrontPic_Celebi, 0x800, SPECIES_CELEBI},
+ [SPECIES_OLD_UNOWN_B] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_B},
+ [SPECIES_OLD_UNOWN_C] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_C},
+ [SPECIES_OLD_UNOWN_D] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_D},
+ [SPECIES_OLD_UNOWN_E] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_E},
+ [SPECIES_OLD_UNOWN_F] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_F},
+ [SPECIES_OLD_UNOWN_G] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_G},
+ [SPECIES_OLD_UNOWN_H] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_H},
+ [SPECIES_OLD_UNOWN_I] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_I},
+ [SPECIES_OLD_UNOWN_J] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_J},
+ [SPECIES_OLD_UNOWN_K] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_K},
+ [SPECIES_OLD_UNOWN_L] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_L},
+ [SPECIES_OLD_UNOWN_M] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_M},
+ [SPECIES_OLD_UNOWN_N] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_N},
+ [SPECIES_OLD_UNOWN_O] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_O},
+ [SPECIES_OLD_UNOWN_P] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_P},
+ [SPECIES_OLD_UNOWN_Q] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_Q},
+ [SPECIES_OLD_UNOWN_R] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_R},
+ [SPECIES_OLD_UNOWN_S] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_S},
+ [SPECIES_OLD_UNOWN_T] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_T},
+ [SPECIES_OLD_UNOWN_U] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_U},
+ [SPECIES_OLD_UNOWN_V] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_V},
+ [SPECIES_OLD_UNOWN_W] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_W},
+ [SPECIES_OLD_UNOWN_X] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_X},
+ [SPECIES_OLD_UNOWN_Y] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_Y},
+ [SPECIES_OLD_UNOWN_Z] = {gMonFrontPic_DoubleQuestionMark, 0x800, SPECIES_OLD_UNOWN_Z},
+ [SPECIES_TREECKO] = {gMonFrontPic_Treecko, 0x800, SPECIES_TREECKO},
+ [SPECIES_GROVYLE] = {gMonFrontPic_Grovyle, 0x800, SPECIES_GROVYLE},
+ [SPECIES_SCEPTILE] = {gMonFrontPic_Sceptile, 0x800, SPECIES_SCEPTILE},
+ [SPECIES_TORCHIC] = {gMonFrontPic_Torchic, 0x800, SPECIES_TORCHIC},
+ [SPECIES_COMBUSKEN] = {gMonFrontPic_Combusken, 0x800, SPECIES_COMBUSKEN},
+ [SPECIES_BLAZIKEN] = {gMonFrontPic_Blaziken, 0x800, SPECIES_BLAZIKEN},
+ [SPECIES_MUDKIP] = {gMonFrontPic_Mudkip, 0x800, SPECIES_MUDKIP},
+ [SPECIES_MARSHTOMP] = {gMonFrontPic_Marshtomp, 0x800, SPECIES_MARSHTOMP},
+ [SPECIES_SWAMPERT] = {gMonFrontPic_Swampert, 0x800, SPECIES_SWAMPERT},
+ [SPECIES_POOCHYENA] = {gMonFrontPic_Poochyena, 0x800, SPECIES_POOCHYENA},
+ [SPECIES_MIGHTYENA] = {gMonFrontPic_Mightyena, 0x800, SPECIES_MIGHTYENA},
+ [SPECIES_ZIGZAGOON] = {gMonFrontPic_Zigzagoon, 0x800, SPECIES_ZIGZAGOON},
+ [SPECIES_LINOONE] = {gMonFrontPic_Linoone, 0x800, SPECIES_LINOONE},
+ [SPECIES_WURMPLE] = {gMonFrontPic_Wurmple, 0x800, SPECIES_WURMPLE},
+ [SPECIES_SILCOON] = {gMonFrontPic_Silcoon, 0x800, SPECIES_SILCOON},
+ [SPECIES_BEAUTIFLY] = {gMonFrontPic_Beautifly, 0x800, SPECIES_BEAUTIFLY},
+ [SPECIES_CASCOON] = {gMonFrontPic_Cascoon, 0x800, SPECIES_CASCOON},
+ [SPECIES_DUSTOX] = {gMonFrontPic_Dustox, 0x800, SPECIES_DUSTOX},
+ [SPECIES_LOTAD] = {gMonFrontPic_Lotad, 0x800, SPECIES_LOTAD},
+ [SPECIES_LOMBRE] = {gMonFrontPic_Lombre, 0x800, SPECIES_LOMBRE},
+ [SPECIES_LUDICOLO] = {gMonFrontPic_Ludicolo, 0x800, SPECIES_LUDICOLO},
+ [SPECIES_SEEDOT] = {gMonFrontPic_Seedot, 0x800, SPECIES_SEEDOT},
+ [SPECIES_NUZLEAF] = {gMonFrontPic_Nuzleaf, 0x800, SPECIES_NUZLEAF},
+ [SPECIES_SHIFTRY] = {gMonFrontPic_Shiftry, 0x800, SPECIES_SHIFTRY},
+ [SPECIES_NINCADA] = {gMonFrontPic_Nincada, 0x800, SPECIES_NINCADA},
+ [SPECIES_NINJASK] = {gMonFrontPic_Ninjask, 0x800, SPECIES_NINJASK},
+ [SPECIES_SHEDINJA] = {gMonFrontPic_Shedinja, 0x800, SPECIES_SHEDINJA},
+ [SPECIES_TAILLOW] = {gMonFrontPic_Taillow, 0x800, SPECIES_TAILLOW},
+ [SPECIES_SWELLOW] = {gMonFrontPic_Swellow, 0x800, SPECIES_SWELLOW},
+ [SPECIES_SHROOMISH] = {gMonFrontPic_Shroomish, 0x800, SPECIES_SHROOMISH},
+ [SPECIES_BRELOOM] = {gMonFrontPic_Breloom, 0x800, SPECIES_BRELOOM},
+ [SPECIES_SPINDA] = {gMonFrontPic_Spinda, 0x800, SPECIES_SPINDA},
+ [SPECIES_WINGULL] = {gMonFrontPic_Wingull, 0x800, SPECIES_WINGULL},
+ [SPECIES_PELIPPER] = {gMonFrontPic_Pelipper, 0x800, SPECIES_PELIPPER},
+ [SPECIES_SURSKIT] = {gMonFrontPic_Surskit, 0x800, SPECIES_SURSKIT},
+ [SPECIES_MASQUERAIN] = {gMonFrontPic_Masquerain, 0x800, SPECIES_MASQUERAIN},
+ [SPECIES_WAILMER] = {gMonFrontPic_Wailmer, 0x800, SPECIES_WAILMER},
+ [SPECIES_WAILORD] = {gMonFrontPic_Wailord, 0x800, SPECIES_WAILORD},
+ [SPECIES_SKITTY] = {gMonFrontPic_Skitty, 0x800, SPECIES_SKITTY},
+ [SPECIES_DELCATTY] = {gMonFrontPic_Delcatty, 0x800, SPECIES_DELCATTY},
+ [SPECIES_KECLEON] = {gMonFrontPic_Kecleon, 0x800, SPECIES_KECLEON},
+ [SPECIES_BALTOY] = {gMonFrontPic_Baltoy, 0x800, SPECIES_BALTOY},
+ [SPECIES_CLAYDOL] = {gMonFrontPic_Claydol, 0x800, SPECIES_CLAYDOL},
+ [SPECIES_NOSEPASS] = {gMonFrontPic_Nosepass, 0x800, SPECIES_NOSEPASS},
+ [SPECIES_TORKOAL] = {gMonFrontPic_Torkoal, 0x800, SPECIES_TORKOAL},
+ [SPECIES_SABLEYE] = {gMonFrontPic_Sableye, 0x800, SPECIES_SABLEYE},
+ [SPECIES_BARBOACH] = {gMonFrontPic_Barboach, 0x800, SPECIES_BARBOACH},
+ [SPECIES_WHISCASH] = {gMonFrontPic_Whiscash, 0x800, SPECIES_WHISCASH},
+ [SPECIES_LUVDISC] = {gMonFrontPic_Luvdisc, 0x800, SPECIES_LUVDISC},
+ [SPECIES_CORPHISH] = {gMonFrontPic_Corphish, 0x800, SPECIES_CORPHISH},
+ [SPECIES_CRAWDAUNT] = {gMonFrontPic_Crawdaunt, 0x800, SPECIES_CRAWDAUNT},
+ [SPECIES_FEEBAS] = {gMonFrontPic_Feebas, 0x800, SPECIES_FEEBAS},
+ [SPECIES_MILOTIC] = {gMonFrontPic_Milotic, 0x800, SPECIES_MILOTIC},
+ [SPECIES_CARVANHA] = {gMonFrontPic_Carvanha, 0x800, SPECIES_CARVANHA},
+ [SPECIES_SHARPEDO] = {gMonFrontPic_Sharpedo, 0x800, SPECIES_SHARPEDO},
+ [SPECIES_TRAPINCH] = {gMonFrontPic_Trapinch, 0x800, SPECIES_TRAPINCH},
+ [SPECIES_VIBRAVA] = {gMonFrontPic_Vibrava, 0x800, SPECIES_VIBRAVA},
+ [SPECIES_FLYGON] = {gMonFrontPic_Flygon, 0x800, SPECIES_FLYGON},
+ [SPECIES_MAKUHITA] = {gMonFrontPic_Makuhita, 0x800, SPECIES_MAKUHITA},
+ [SPECIES_HARIYAMA] = {gMonFrontPic_Hariyama, 0x800, SPECIES_HARIYAMA},
+ [SPECIES_ELECTRIKE] = {gMonFrontPic_Electrike, 0x800, SPECIES_ELECTRIKE},
+ [SPECIES_MANECTRIC] = {gMonFrontPic_Manectric, 0x800, SPECIES_MANECTRIC},
+ [SPECIES_NUMEL] = {gMonFrontPic_Numel, 0x800, SPECIES_NUMEL},
+ [SPECIES_CAMERUPT] = {gMonFrontPic_Camerupt, 0x800, SPECIES_CAMERUPT},
+ [SPECIES_SPHEAL] = {gMonFrontPic_Spheal, 0x800, SPECIES_SPHEAL},
+ [SPECIES_SEALEO] = {gMonFrontPic_Sealeo, 0x800, SPECIES_SEALEO},
+ [SPECIES_WALREIN] = {gMonFrontPic_Walrein, 0x800, SPECIES_WALREIN},
+ [SPECIES_CACNEA] = {gMonFrontPic_Cacnea, 0x800, SPECIES_CACNEA},
+ [SPECIES_CACTURNE] = {gMonFrontPic_Cacturne, 0x800, SPECIES_CACTURNE},
+ [SPECIES_SNORUNT] = {gMonFrontPic_Snorunt, 0x800, SPECIES_SNORUNT},
+ [SPECIES_GLALIE] = {gMonFrontPic_Glalie, 0x800, SPECIES_GLALIE},
+ [SPECIES_LUNATONE] = {gMonFrontPic_Lunatone, 0x800, SPECIES_LUNATONE},
+ [SPECIES_SOLROCK] = {gMonFrontPic_Solrock, 0x800, SPECIES_SOLROCK},
+ [SPECIES_AZURILL] = {gMonFrontPic_Azurill, 0x800, SPECIES_AZURILL},
+ [SPECIES_SPOINK] = {gMonFrontPic_Spoink, 0x800, SPECIES_SPOINK},
+ [SPECIES_GRUMPIG] = {gMonFrontPic_Grumpig, 0x800, SPECIES_GRUMPIG},
+ [SPECIES_PLUSLE] = {gMonFrontPic_Plusle, 0x800, SPECIES_PLUSLE},
+ [SPECIES_MINUN] = {gMonFrontPic_Minun, 0x800, SPECIES_MINUN},
+ [SPECIES_MAWILE] = {gMonFrontPic_Mawile, 0x800, SPECIES_MAWILE},
+ [SPECIES_MEDITITE] = {gMonFrontPic_Meditite, 0x800, SPECIES_MEDITITE},
+ [SPECIES_MEDICHAM] = {gMonFrontPic_Medicham, 0x800, SPECIES_MEDICHAM},
+ [SPECIES_SWABLU] = {gMonFrontPic_Swablu, 0x800, SPECIES_SWABLU},
+ [SPECIES_ALTARIA] = {gMonFrontPic_Altaria, 0x800, SPECIES_ALTARIA},
+ [SPECIES_WYNAUT] = {gMonFrontPic_Wynaut, 0x800, SPECIES_WYNAUT},
+ [SPECIES_DUSKULL] = {gMonFrontPic_Duskull, 0x800, SPECIES_DUSKULL},
+ [SPECIES_DUSCLOPS] = {gMonFrontPic_Dusclops, 0x800, SPECIES_DUSCLOPS},
+ [SPECIES_ROSELIA] = {gMonFrontPic_Roselia, 0x800, SPECIES_ROSELIA},
+ [SPECIES_SLAKOTH] = {gMonFrontPic_Slakoth, 0x800, SPECIES_SLAKOTH},
+ [SPECIES_VIGOROTH] = {gMonFrontPic_Vigoroth, 0x800, SPECIES_VIGOROTH},
+ [SPECIES_SLAKING] = {gMonFrontPic_Slaking, 0x800, SPECIES_SLAKING},
+ [SPECIES_GULPIN] = {gMonFrontPic_Gulpin, 0x800, SPECIES_GULPIN},
+ [SPECIES_SWALOT] = {gMonFrontPic_Swalot, 0x800, SPECIES_SWALOT},
+ [SPECIES_TROPIUS] = {gMonFrontPic_Tropius, 0x800, SPECIES_TROPIUS},
+ [SPECIES_WHISMUR] = {gMonFrontPic_Whismur, 0x800, SPECIES_WHISMUR},
+ [SPECIES_LOUDRED] = {gMonFrontPic_Loudred, 0x800, SPECIES_LOUDRED},
+ [SPECIES_EXPLOUD] = {gMonFrontPic_Exploud, 0x800, SPECIES_EXPLOUD},
+ [SPECIES_CLAMPERL] = {gMonFrontPic_Clamperl, 0x800, SPECIES_CLAMPERL},
+ [SPECIES_HUNTAIL] = {gMonFrontPic_Huntail, 0x800, SPECIES_HUNTAIL},
+ [SPECIES_GOREBYSS] = {gMonFrontPic_Gorebyss, 0x800, SPECIES_GOREBYSS},
+ [SPECIES_ABSOL] = {gMonFrontPic_Absol, 0x800, SPECIES_ABSOL},
+ [SPECIES_SHUPPET] = {gMonFrontPic_Shuppet, 0x800, SPECIES_SHUPPET},
+ [SPECIES_BANETTE] = {gMonFrontPic_Banette, 0x800, SPECIES_BANETTE},
+ [SPECIES_SEVIPER] = {gMonFrontPic_Seviper, 0x800, SPECIES_SEVIPER},
+ [SPECIES_ZANGOOSE] = {gMonFrontPic_Zangoose, 0x800, SPECIES_ZANGOOSE},
+ [SPECIES_RELICANTH] = {gMonFrontPic_Relicanth, 0x800, SPECIES_RELICANTH},
+ [SPECIES_ARON] = {gMonFrontPic_Aron, 0x800, SPECIES_ARON},
+ [SPECIES_LAIRON] = {gMonFrontPic_Lairon, 0x800, SPECIES_LAIRON},
+ [SPECIES_AGGRON] = {gMonFrontPic_Aggron, 0x800, SPECIES_AGGRON},
+ [SPECIES_CASTFORM] = {gMonFrontPic_Castform, 0x800, SPECIES_CASTFORM},
+ [SPECIES_VOLBEAT] = {gMonFrontPic_Volbeat, 0x800, SPECIES_VOLBEAT},
+ [SPECIES_ILLUMISE] = {gMonFrontPic_Illumise, 0x800, SPECIES_ILLUMISE},
+ [SPECIES_LILEEP] = {gMonFrontPic_Lileep, 0x800, SPECIES_LILEEP},
+ [SPECIES_CRADILY] = {gMonFrontPic_Cradily, 0x800, SPECIES_CRADILY},
+ [SPECIES_ANORITH] = {gMonFrontPic_Anorith, 0x800, SPECIES_ANORITH},
+ [SPECIES_ARMALDO] = {gMonFrontPic_Armaldo, 0x800, SPECIES_ARMALDO},
+ [SPECIES_RALTS] = {gMonFrontPic_Ralts, 0x800, SPECIES_RALTS},
+ [SPECIES_KIRLIA] = {gMonFrontPic_Kirlia, 0x800, SPECIES_KIRLIA},
+ [SPECIES_GARDEVOIR] = {gMonFrontPic_Gardevoir, 0x800, SPECIES_GARDEVOIR},
+ [SPECIES_BAGON] = {gMonFrontPic_Bagon, 0x800, SPECIES_BAGON},
+ [SPECIES_SHELGON] = {gMonFrontPic_Shelgon, 0x800, SPECIES_SHELGON},
+ [SPECIES_SALAMENCE] = {gMonFrontPic_Salamence, 0x800, SPECIES_SALAMENCE},
+ [SPECIES_BELDUM] = {gMonFrontPic_Beldum, 0x800, SPECIES_BELDUM},
+ [SPECIES_METANG] = {gMonFrontPic_Metang, 0x800, SPECIES_METANG},
+ [SPECIES_METAGROSS] = {gMonFrontPic_Metagross, 0x800, SPECIES_METAGROSS},
+ [SPECIES_REGIROCK] = {gMonFrontPic_Regirock, 0x800, SPECIES_REGIROCK},
+ [SPECIES_REGICE] = {gMonFrontPic_Regice, 0x800, SPECIES_REGICE},
+ [SPECIES_REGISTEEL] = {gMonFrontPic_Registeel, 0x800, SPECIES_REGISTEEL},
+ [SPECIES_KYOGRE] = {gMonFrontPic_Kyogre, 0x800, SPECIES_KYOGRE},
+ [SPECIES_GROUDON] = {gMonFrontPic_Groudon, 0x800, SPECIES_GROUDON},
+ [SPECIES_RAYQUAZA] = {gMonFrontPic_Rayquaza, 0x800, SPECIES_RAYQUAZA},
+ [SPECIES_LATIAS] = {gMonFrontPic_Latias, 0x800, SPECIES_LATIAS},
+ [SPECIES_LATIOS] = {gMonFrontPic_Latios, 0x800, SPECIES_LATIOS},
+ [SPECIES_JIRACHI] = {gMonFrontPic_Jirachi, 0x800, SPECIES_JIRACHI},
+ [SPECIES_DEOXYS] = {gMonFrontPic_Deoxys, 0x800, SPECIES_DEOXYS},
+ [SPECIES_CHIMECHO] = {gMonFrontPic_Chimecho, 0x800, SPECIES_CHIMECHO},
+ [SPECIES_EGG] = {gMonFrontPic_Egg, 0x800, SPECIES_EGG},
+ [SPECIES_UNOWN_B] = {gMonFrontPic_UnownB, 0x800, SPECIES_UNOWN_B},
+ [SPECIES_UNOWN_C] = {gMonFrontPic_UnownC, 0x800, SPECIES_UNOWN_C},
+ [SPECIES_UNOWN_D] = {gMonFrontPic_UnownD, 0x800, SPECIES_UNOWN_D},
+ [SPECIES_UNOWN_E] = {gMonFrontPic_UnownE, 0x800, SPECIES_UNOWN_E},
+ [SPECIES_UNOWN_F] = {gMonFrontPic_UnownF, 0x800, SPECIES_UNOWN_F},
+ [SPECIES_UNOWN_G] = {gMonFrontPic_UnownG, 0x800, SPECIES_UNOWN_G},
+ [SPECIES_UNOWN_H] = {gMonFrontPic_UnownH, 0x800, SPECIES_UNOWN_H},
+ [SPECIES_UNOWN_I] = {gMonFrontPic_UnownI, 0x800, SPECIES_UNOWN_I},
+ [SPECIES_UNOWN_J] = {gMonFrontPic_UnownJ, 0x800, SPECIES_UNOWN_J},
+ [SPECIES_UNOWN_K] = {gMonFrontPic_UnownK, 0x800, SPECIES_UNOWN_K},
+ [SPECIES_UNOWN_L] = {gMonFrontPic_UnownL, 0x800, SPECIES_UNOWN_L},
+ [SPECIES_UNOWN_M] = {gMonFrontPic_UnownM, 0x800, SPECIES_UNOWN_M},
+ [SPECIES_UNOWN_N] = {gMonFrontPic_UnownN, 0x800, SPECIES_UNOWN_N},
+ [SPECIES_UNOWN_O] = {gMonFrontPic_UnownO, 0x800, SPECIES_UNOWN_O},
+ [SPECIES_UNOWN_P] = {gMonFrontPic_UnownP, 0x800, SPECIES_UNOWN_P},
+ [SPECIES_UNOWN_Q] = {gMonFrontPic_UnownQ, 0x800, SPECIES_UNOWN_Q},
+ [SPECIES_UNOWN_R] = {gMonFrontPic_UnownR, 0x800, SPECIES_UNOWN_R},
+ [SPECIES_UNOWN_S] = {gMonFrontPic_UnownS, 0x800, SPECIES_UNOWN_S},
+ [SPECIES_UNOWN_T] = {gMonFrontPic_UnownT, 0x800, SPECIES_UNOWN_T},
+ [SPECIES_UNOWN_U] = {gMonFrontPic_UnownU, 0x800, SPECIES_UNOWN_U},
+ [SPECIES_UNOWN_V] = {gMonFrontPic_UnownV, 0x800, SPECIES_UNOWN_V},
+ [SPECIES_UNOWN_W] = {gMonFrontPic_UnownW, 0x800, SPECIES_UNOWN_W},
+ [SPECIES_UNOWN_X] = {gMonFrontPic_UnownX, 0x800, SPECIES_UNOWN_X},
+ [SPECIES_UNOWN_Y] = {gMonFrontPic_UnownY, 0x800, SPECIES_UNOWN_Y},
+ [SPECIES_UNOWN_Z] = {gMonFrontPic_UnownZ, 0x800, SPECIES_UNOWN_Z},
+ [SPECIES_UNOWN_EMARK] = {gMonFrontPic_UnownExclamationMark, 0x800, SPECIES_UNOWN_EMARK},
+ [SPECIES_UNOWN_QMARK] = {gMonFrontPic_UnownQuestionMark, 0x800, SPECIES_UNOWN_QMARK},
};
diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h
index 99412daa5..3b60d8567 100644
--- a/src/data/pokemon_graphics/palette_table.h
+++ b/src/data/pokemon_graphics/palette_table.h
@@ -1,443 +1,443 @@
const struct CompressedSpritePalette gMonPaletteTable[] =
{
- gMonPalette_CircledQuestionMark, 0,
- gMonPalette_Bulbasaur, 1,
- gMonPalette_Ivysaur, 2,
- gMonPalette_Venusaur, 3,
- gMonPalette_Charmander, 4,
- gMonPalette_Charmeleon, 5,
- gMonPalette_Charizard, 6,
- gMonPalette_Squirtle, 7,
- gMonPalette_Wartortle, 8,
- gMonPalette_Blastoise, 9,
- gMonPalette_Caterpie, 10,
- gMonPalette_Metapod, 11,
- gMonPalette_Butterfree, 12,
- gMonPalette_Weedle, 13,
- gMonPalette_Kakuna, 14,
- gMonPalette_Beedrill, 15,
- gMonPalette_Pidgey, 16,
- gMonPalette_Pidgeotto, 17,
- gMonPalette_Pidgeot, 18,
- gMonPalette_Rattata, 19,
- gMonPalette_Raticate, 20,
- gMonPalette_Spearow, 21,
- gMonPalette_Fearow, 22,
- gMonPalette_Ekans, 23,
- gMonPalette_Arbok, 24,
- gMonPalette_Pikachu, 25,
- gMonPalette_Raichu, 26,
- gMonPalette_Sandshrew, 27,
- gMonPalette_Sandslash, 28,
- gMonPalette_NidoranF, 29,
- gMonPalette_Nidorina, 30,
- gMonPalette_Nidoqueen, 31,
- gMonPalette_NidoranM, 32,
- gMonPalette_Nidorino, 33,
- gMonPalette_Nidoking, 34,
- gMonPalette_Clefairy, 35,
- gMonPalette_Clefable, 36,
- gMonPalette_Vulpix, 37,
- gMonPalette_Ninetales, 38,
- gMonPalette_Jigglypuff, 39,
- gMonPalette_Wigglytuff, 40,
- gMonPalette_Zubat, 41,
- gMonPalette_Golbat, 42,
- gMonPalette_Oddish, 43,
- gMonPalette_Gloom, 44,
- gMonPalette_Vileplume, 45,
- gMonPalette_Paras, 46,
- gMonPalette_Parasect, 47,
- gMonPalette_Venonat, 48,
- gMonPalette_Venomoth, 49,
- gMonPalette_Diglett, 50,
- gMonPalette_Dugtrio, 51,
- gMonPalette_Meowth, 52,
- gMonPalette_Persian, 53,
- gMonPalette_Psyduck, 54,
- gMonPalette_Golduck, 55,
- gMonPalette_Mankey, 56,
- gMonPalette_Primeape, 57,
- gMonPalette_Growlithe, 58,
- gMonPalette_Arcanine, 59,
- gMonPalette_Poliwag, 60,
- gMonPalette_Poliwhirl, 61,
- gMonPalette_Poliwrath, 62,
- gMonPalette_Abra, 63,
- gMonPalette_Kadabra, 64,
- gMonPalette_Alakazam, 65,
- gMonPalette_Machop, 66,
- gMonPalette_Machoke, 67,
- gMonPalette_Machamp, 68,
- gMonPalette_Bellsprout, 69,
- gMonPalette_Weepinbell, 70,
- gMonPalette_Victreebel, 71,
- gMonPalette_Tentacool, 72,
- gMonPalette_Tentacruel, 73,
- gMonPalette_Geodude, 74,
- gMonPalette_Graveler, 75,
- gMonPalette_Golem, 76,
- gMonPalette_Ponyta, 77,
- gMonPalette_Rapidash, 78,
- gMonPalette_Slowpoke, 79,
- gMonPalette_Slowbro, 80,
- gMonPalette_Magnemite, 81,
- gMonPalette_Magneton, 82,
- gMonPalette_Farfetchd, 83,
- gMonPalette_Doduo, 84,
- gMonPalette_Dodrio, 85,
- gMonPalette_Seel, 86,
- gMonPalette_Dewgong, 87,
- gMonPalette_Grimer, 88,
- gMonPalette_Muk, 89,
- gMonPalette_Shellder, 90,
- gMonPalette_Cloyster, 91,
- gMonPalette_Gastly, 92,
- gMonPalette_Haunter, 93,
- gMonPalette_Gengar, 94,
- gMonPalette_Onix, 95,
- gMonPalette_Drowzee, 96,
- gMonPalette_Hypno, 97,
- gMonPalette_Krabby, 98,
- gMonPalette_Kingler, 99,
- gMonPalette_Voltorb, 100,
- gMonPalette_Electrode, 101,
- gMonPalette_Exeggcute, 102,
- gMonPalette_Exeggutor, 103,
- gMonPalette_Cubone, 104,
- gMonPalette_Marowak, 105,
- gMonPalette_Hitmonlee, 106,
- gMonPalette_Hitmonchan, 107,
- gMonPalette_Lickitung, 108,
- gMonPalette_Koffing, 109,
- gMonPalette_Weezing, 110,
- gMonPalette_Rhyhorn, 111,
- gMonPalette_Rhydon, 112,
- gMonPalette_Chansey, 113,
- gMonPalette_Tangela, 114,
- gMonPalette_Kangaskhan, 115,
- gMonPalette_Horsea, 116,
- gMonPalette_Seadra, 117,
- gMonPalette_Goldeen, 118,
- gMonPalette_Seaking, 119,
- gMonPalette_Staryu, 120,
- gMonPalette_Starmie, 121,
- gMonPalette_Mrmime, 122,
- gMonPalette_Scyther, 123,
- gMonPalette_Jynx, 124,
- gMonPalette_Electabuzz, 125,
- gMonPalette_Magmar, 126,
- gMonPalette_Pinsir, 127,
- gMonPalette_Tauros, 128,
- gMonPalette_Magikarp, 129,
- gMonPalette_Gyarados, 130,
- gMonPalette_Lapras, 131,
- gMonPalette_Ditto, 132,
- gMonPalette_Eevee, 133,
- gMonPalette_Vaporeon, 134,
- gMonPalette_Jolteon, 135,
- gMonPalette_Flareon, 136,
- gMonPalette_Porygon, 137,
- gMonPalette_Omanyte, 138,
- gMonPalette_Omastar, 139,
- gMonPalette_Kabuto, 140,
- gMonPalette_Kabutops, 141,
- gMonPalette_Aerodactyl, 142,
- gMonPalette_Snorlax, 143,
- gMonPalette_Articuno, 144,
- gMonPalette_Zapdos, 145,
- gMonPalette_Moltres, 146,
- gMonPalette_Dratini, 147,
- gMonPalette_Dragonair, 148,
- gMonPalette_Dragonite, 149,
- gMonPalette_Mewtwo, 150,
- gMonPalette_Mew, 151,
- gMonPalette_Chikorita, 152,
- gMonPalette_Bayleef, 153,
- gMonPalette_Meganium, 154,
- gMonPalette_Cyndaquil, 155,
- gMonPalette_Quilava, 156,
- gMonPalette_Typhlosion, 157,
- gMonPalette_Totodile, 158,
- gMonPalette_Croconaw, 159,
- gMonPalette_Feraligatr, 160,
- gMonPalette_Sentret, 161,
- gMonPalette_Furret, 162,
- gMonPalette_Hoothoot, 163,
- gMonPalette_Noctowl, 164,
- gMonPalette_Ledyba, 165,
- gMonPalette_Ledian, 166,
- gMonPalette_Spinarak, 167,
- gMonPalette_Ariados, 168,
- gMonPalette_Crobat, 169,
- gMonPalette_Chinchou, 170,
- gMonPalette_Lanturn, 171,
- gMonPalette_Pichu, 172,
- gMonPalette_Cleffa, 173,
- gMonPalette_Igglybuff, 174,
- gMonPalette_Togepi, 175,
- gMonPalette_Togetic, 176,
- gMonPalette_Natu, 177,
- gMonPalette_Xatu, 178,
- gMonPalette_Mareep, 179,
- gMonPalette_Flaaffy, 180,
- gMonPalette_Ampharos, 181,
- gMonPalette_Bellossom, 182,
- gMonPalette_Marill, 183,
- gMonPalette_Azumarill, 184,
- gMonPalette_Sudowoodo, 185,
- gMonPalette_Politoed, 186,
- gMonPalette_Hoppip, 187,
- gMonPalette_Skiploom, 188,
- gMonPalette_Jumpluff, 189,
- gMonPalette_Aipom, 190,
- gMonPalette_Sunkern, 191,
- gMonPalette_Sunflora, 192,
- gMonPalette_Yanma, 193,
- gMonPalette_Wooper, 194,
- gMonPalette_Quagsire, 195,
- gMonPalette_Espeon, 196,
- gMonPalette_Umbreon, 197,
- gMonPalette_Murkrow, 198,
- gMonPalette_Slowking, 199,
- gMonPalette_Misdreavus, 200,
- gMonPalette_Unown, 201,
- gMonPalette_Wobbuffet, 202,
- gMonPalette_Girafarig, 203,
- gMonPalette_Pineco, 204,
- gMonPalette_Forretress, 205,
- gMonPalette_Dunsparce, 206,
- gMonPalette_Gligar, 207,
- gMonPalette_Steelix, 208,
- gMonPalette_Snubbull, 209,
- gMonPalette_Granbull, 210,
- gMonPalette_Qwilfish, 211,
- gMonPalette_Scizor, 212,
- gMonPalette_Shuckle, 213,
- gMonPalette_Heracross, 214,
- gMonPalette_Sneasel, 215,
- gMonPalette_Teddiursa, 216,
- gMonPalette_Ursaring, 217,
- gMonPalette_Slugma, 218,
- gMonPalette_Magcargo, 219,
- gMonPalette_Swinub, 220,
- gMonPalette_Piloswine, 221,
- gMonPalette_Corsola, 222,
- gMonPalette_Remoraid, 223,
- gMonPalette_Octillery, 224,
- gMonPalette_Delibird, 225,
- gMonPalette_Mantine, 226,
- gMonPalette_Skarmory, 227,
- gMonPalette_Houndour, 228,
- gMonPalette_Houndoom, 229,
- gMonPalette_Kingdra, 230,
- gMonPalette_Phanpy, 231,
- gMonPalette_Donphan, 232,
- gMonPalette_Porygon2, 233,
- gMonPalette_Stantler, 234,
- gMonPalette_Smeargle, 235,
- gMonPalette_Tyrogue, 236,
- gMonPalette_Hitmontop, 237,
- gMonPalette_Smoochum, 238,
- gMonPalette_Elekid, 239,
- gMonPalette_Magby, 240,
- gMonPalette_Miltank, 241,
- gMonPalette_Blissey, 242,
- gMonPalette_Raikou, 243,
- gMonPalette_Entei, 244,
- gMonPalette_Suicune, 245,
- gMonPalette_Larvitar, 246,
- gMonPalette_Pupitar, 247,
- gMonPalette_Tyranitar, 248,
- gMonPalette_Lugia, 249,
- gMonPalette_HoOh, 250,
- gMonPalette_Celebi, 251,
- gMonPalette_DoubleQuestionMark, 252,
- gMonPalette_DoubleQuestionMark, 253,
- gMonPalette_DoubleQuestionMark, 254,
- gMonPalette_DoubleQuestionMark, 255,
- gMonPalette_DoubleQuestionMark, 256,
- gMonPalette_DoubleQuestionMark, 257,
- gMonPalette_DoubleQuestionMark, 258,
- gMonPalette_DoubleQuestionMark, 259,
- gMonPalette_DoubleQuestionMark, 260,
- gMonPalette_DoubleQuestionMark, 261,
- gMonPalette_DoubleQuestionMark, 262,
- gMonPalette_DoubleQuestionMark, 263,
- gMonPalette_DoubleQuestionMark, 264,
- gMonPalette_DoubleQuestionMark, 265,
- gMonPalette_DoubleQuestionMark, 266,
- gMonPalette_DoubleQuestionMark, 267,
- gMonPalette_DoubleQuestionMark, 268,
- gMonPalette_DoubleQuestionMark, 269,
- gMonPalette_DoubleQuestionMark, 270,
- gMonPalette_DoubleQuestionMark, 271,
- gMonPalette_DoubleQuestionMark, 272,
- gMonPalette_DoubleQuestionMark, 273,
- gMonPalette_DoubleQuestionMark, 274,
- gMonPalette_DoubleQuestionMark, 275,
- gMonPalette_DoubleQuestionMark, 276,
- gMonPalette_Treecko, 277,
- gMonPalette_Grovyle, 278,
- gMonPalette_Sceptile, 279,
- gMonPalette_Torchic, 280,
- gMonPalette_Combusken, 281,
- gMonPalette_Blaziken, 282,
- gMonPalette_Mudkip, 283,
- gMonPalette_Marshtomp, 284,
- gMonPalette_Swampert, 285,
- gMonPalette_Poochyena, 286,
- gMonPalette_Mightyena, 287,
- gMonPalette_Zigzagoon, 288,
- gMonPalette_Linoone, 289,
- gMonPalette_Wurmple, 290,
- gMonPalette_Silcoon, 291,
- gMonPalette_Beautifly, 292,
- gMonPalette_Cascoon, 293,
- gMonPalette_Dustox, 294,
- gMonPalette_Lotad, 295,
- gMonPalette_Lombre, 296,
- gMonPalette_Ludicolo, 297,
- gMonPalette_Seedot, 298,
- gMonPalette_Nuzleaf, 299,
- gMonPalette_Shiftry, 300,
- gMonPalette_Nincada, 301,
- gMonPalette_Ninjask, 302,
- gMonPalette_Shedinja, 303,
- gMonPalette_Taillow, 304,
- gMonPalette_Swellow, 305,
- gMonPalette_Shroomish, 306,
- gMonPalette_Breloom, 307,
- gMonPalette_Spinda, 308,
- gMonPalette_Wingull, 309,
- gMonPalette_Pelipper, 310,
- gMonPalette_Surskit, 311,
- gMonPalette_Masquerain, 312,
- gMonPalette_Wailmer, 313,
- gMonPalette_Wailord, 314,
- gMonPalette_Skitty, 315,
- gMonPalette_Delcatty, 316,
- gMonPalette_Kecleon, 317,
- gMonPalette_Baltoy, 318,
- gMonPalette_Claydol, 319,
- gMonPalette_Nosepass, 320,
- gMonPalette_Torkoal, 321,
- gMonPalette_Sableye, 322,
- gMonPalette_Barboach, 323,
- gMonPalette_Whiscash, 324,
- gMonPalette_Luvdisc, 325,
- gMonPalette_Corphish, 326,
- gMonPalette_Crawdaunt, 327,
- gMonPalette_Feebas, 328,
- gMonPalette_Milotic, 329,
- gMonPalette_Carvanha, 330,
- gMonPalette_Sharpedo, 331,
- gMonPalette_Trapinch, 332,
- gMonPalette_Vibrava, 333,
- gMonPalette_Flygon, 334,
- gMonPalette_Makuhita, 335,
- gMonPalette_Hariyama, 336,
- gMonPalette_Electrike, 337,
- gMonPalette_Manectric, 338,
- gMonPalette_Numel, 339,
- gMonPalette_Camerupt, 340,
- gMonPalette_Spheal, 341,
- gMonPalette_Sealeo, 342,
- gMonPalette_Walrein, 343,
- gMonPalette_Cacnea, 344,
- gMonPalette_Cacturne, 345,
- gMonPalette_Snorunt, 346,
- gMonPalette_Glalie, 347,
- gMonPalette_Lunatone, 348,
- gMonPalette_Solrock, 349,
- gMonPalette_Azurill, 350,
- gMonPalette_Spoink, 351,
- gMonPalette_Grumpig, 352,
- gMonPalette_Plusle, 353,
- gMonPalette_Minun, 354,
- gMonPalette_Mawile, 355,
- gMonPalette_Meditite, 356,
- gMonPalette_Medicham, 357,
- gMonPalette_Swablu, 358,
- gMonPalette_Altaria, 359,
- gMonPalette_Wynaut, 360,
- gMonPalette_Duskull, 361,
- gMonPalette_Dusclops, 362,
- gMonPalette_Roselia, 363,
- gMonPalette_Slakoth, 364,
- gMonPalette_Vigoroth, 365,
- gMonPalette_Slaking, 366,
- gMonPalette_Gulpin, 367,
- gMonPalette_Swalot, 368,
- gMonPalette_Tropius, 369,
- gMonPalette_Whismur, 370,
- gMonPalette_Loudred, 371,
- gMonPalette_Exploud, 372,
- gMonPalette_Clamperl, 373,
- gMonPalette_Huntail, 374,
- gMonPalette_Gorebyss, 375,
- gMonPalette_Absol, 376,
- gMonPalette_Shuppet, 377,
- gMonPalette_Banette, 378,
- gMonPalette_Seviper, 379,
- gMonPalette_Zangoose, 380,
- gMonPalette_Relicanth, 381,
- gMonPalette_Aron, 382,
- gMonPalette_Lairon, 383,
- gMonPalette_Aggron, 384,
- gMonPalette_Castform, 385,
- gMonPalette_Volbeat, 386,
- gMonPalette_Illumise, 387,
- gMonPalette_Lileep, 388,
- gMonPalette_Cradily, 389,
- gMonPalette_Anorith, 390,
- gMonPalette_Armaldo, 391,
- gMonPalette_Ralts, 392,
- gMonPalette_Kirlia, 393,
- gMonPalette_Gardevoir, 394,
- gMonPalette_Bagon, 395,
- gMonPalette_Shelgon, 396,
- gMonPalette_Salamence, 397,
- gMonPalette_Beldum, 398,
- gMonPalette_Metang, 399,
- gMonPalette_Metagross, 400,
- gMonPalette_Regirock, 401,
- gMonPalette_Regice, 402,
- gMonPalette_Registeel, 403,
- gMonPalette_Kyogre, 404,
- gMonPalette_Groudon, 405,
- gMonPalette_Rayquaza, 406,
- gMonPalette_Latias, 407,
- gMonPalette_Latios, 408,
- gMonPalette_Jirachi, 409,
- gMonPalette_Deoxys, 410,
- gMonPalette_Chimecho, 411,
- gMonPalette_Egg, 412,
- gMonPalette_Unown, 413,
- gMonPalette_Unown, 414,
- gMonPalette_Unown, 415,
- gMonPalette_Unown, 416,
- gMonPalette_Unown, 417,
- gMonPalette_Unown, 418,
- gMonPalette_Unown, 419,
- gMonPalette_Unown, 420,
- gMonPalette_Unown, 421,
- gMonPalette_Unown, 422,
- gMonPalette_Unown, 423,
- gMonPalette_Unown, 424,
- gMonPalette_Unown, 425,
- gMonPalette_Unown, 426,
- gMonPalette_Unown, 427,
- gMonPalette_Unown, 428,
- gMonPalette_Unown, 429,
- gMonPalette_Unown, 430,
- gMonPalette_Unown, 431,
- gMonPalette_Unown, 432,
- gMonPalette_Unown, 433,
- gMonPalette_Unown, 434,
- gMonPalette_Unown, 435,
- gMonPalette_Unown, 436,
- gMonPalette_Unown, 437,
- gMonPalette_Unown, 438,
- gMonPalette_Unown, 439,
+ [SPECIES_NONE] = {gMonPalette_CircledQuestionMark, SPECIES_NONE},
+ [SPECIES_BULBASAUR] = {gMonPalette_Bulbasaur, SPECIES_BULBASAUR},
+ [SPECIES_IVYSAUR] = {gMonPalette_Ivysaur, SPECIES_IVYSAUR},
+ [SPECIES_VENUSAUR] = {gMonPalette_Venusaur, SPECIES_VENUSAUR},
+ [SPECIES_CHARMANDER] = {gMonPalette_Charmander, SPECIES_CHARMANDER},
+ [SPECIES_CHARMELEON] = {gMonPalette_Charmeleon, SPECIES_CHARMELEON},
+ [SPECIES_CHARIZARD] = {gMonPalette_Charizard, SPECIES_CHARIZARD},
+ [SPECIES_SQUIRTLE] = {gMonPalette_Squirtle, SPECIES_SQUIRTLE},
+ [SPECIES_WARTORTLE] = {gMonPalette_Wartortle, SPECIES_WARTORTLE},
+ [SPECIES_BLASTOISE] = {gMonPalette_Blastoise, SPECIES_BLASTOISE},
+ [SPECIES_CATERPIE] = {gMonPalette_Caterpie, SPECIES_CATERPIE},
+ [SPECIES_METAPOD] = {gMonPalette_Metapod, SPECIES_METAPOD},
+ [SPECIES_BUTTERFREE] = {gMonPalette_Butterfree, SPECIES_BUTTERFREE},
+ [SPECIES_WEEDLE] = {gMonPalette_Weedle, SPECIES_WEEDLE},
+ [SPECIES_KAKUNA] = {gMonPalette_Kakuna, SPECIES_KAKUNA},
+ [SPECIES_BEEDRILL] = {gMonPalette_Beedrill, SPECIES_BEEDRILL},
+ [SPECIES_PIDGEY] = {gMonPalette_Pidgey, SPECIES_PIDGEY},
+ [SPECIES_PIDGEOTTO] = {gMonPalette_Pidgeotto, SPECIES_PIDGEOTTO},
+ [SPECIES_PIDGEOT] = {gMonPalette_Pidgeot, SPECIES_PIDGEOT},
+ [SPECIES_RATTATA] = {gMonPalette_Rattata, SPECIES_RATTATA},
+ [SPECIES_RATICATE] = {gMonPalette_Raticate, SPECIES_RATICATE},
+ [SPECIES_SPEAROW] = {gMonPalette_Spearow, SPECIES_SPEAROW},
+ [SPECIES_FEAROW] = {gMonPalette_Fearow, SPECIES_FEAROW},
+ [SPECIES_EKANS] = {gMonPalette_Ekans, SPECIES_EKANS},
+ [SPECIES_ARBOK] = {gMonPalette_Arbok, SPECIES_ARBOK},
+ [SPECIES_PIKACHU] = {gMonPalette_Pikachu, SPECIES_PIKACHU},
+ [SPECIES_RAICHU] = {gMonPalette_Raichu, SPECIES_RAICHU},
+ [SPECIES_SANDSHREW] = {gMonPalette_Sandshrew, SPECIES_SANDSHREW},
+ [SPECIES_SANDSLASH] = {gMonPalette_Sandslash, SPECIES_SANDSLASH},
+ [SPECIES_NIDORAN_F] = {gMonPalette_NidoranF, SPECIES_NIDORAN_F},
+ [SPECIES_NIDORINA] = {gMonPalette_Nidorina, SPECIES_NIDORINA},
+ [SPECIES_NIDOQUEEN] = {gMonPalette_Nidoqueen, SPECIES_NIDOQUEEN},
+ [SPECIES_NIDORAN_M] = {gMonPalette_NidoranM, SPECIES_NIDORAN_M},
+ [SPECIES_NIDORINO] = {gMonPalette_Nidorino, SPECIES_NIDORINO},
+ [SPECIES_NIDOKING] = {gMonPalette_Nidoking, SPECIES_NIDOKING},
+ [SPECIES_CLEFAIRY] = {gMonPalette_Clefairy, SPECIES_CLEFAIRY},
+ [SPECIES_CLEFABLE] = {gMonPalette_Clefable, SPECIES_CLEFABLE},
+ [SPECIES_VULPIX] = {gMonPalette_Vulpix, SPECIES_VULPIX},
+ [SPECIES_NINETALES] = {gMonPalette_Ninetales, SPECIES_NINETALES},
+ [SPECIES_JIGGLYPUFF] = {gMonPalette_Jigglypuff, SPECIES_JIGGLYPUFF},
+ [SPECIES_WIGGLYTUFF] = {gMonPalette_Wigglytuff, SPECIES_WIGGLYTUFF},
+ [SPECIES_ZUBAT] = {gMonPalette_Zubat, SPECIES_ZUBAT},
+ [SPECIES_GOLBAT] = {gMonPalette_Golbat, SPECIES_GOLBAT},
+ [SPECIES_ODDISH] = {gMonPalette_Oddish, SPECIES_ODDISH},
+ [SPECIES_GLOOM] = {gMonPalette_Gloom, SPECIES_GLOOM},
+ [SPECIES_VILEPLUME] = {gMonPalette_Vileplume, SPECIES_VILEPLUME},
+ [SPECIES_PARAS] = {gMonPalette_Paras, SPECIES_PARAS},
+ [SPECIES_PARASECT] = {gMonPalette_Parasect, SPECIES_PARASECT},
+ [SPECIES_VENONAT] = {gMonPalette_Venonat, SPECIES_VENONAT},
+ [SPECIES_VENOMOTH] = {gMonPalette_Venomoth, SPECIES_VENOMOTH},
+ [SPECIES_DIGLETT] = {gMonPalette_Diglett, SPECIES_DIGLETT},
+ [SPECIES_DUGTRIO] = {gMonPalette_Dugtrio, SPECIES_DUGTRIO},
+ [SPECIES_MEOWTH] = {gMonPalette_Meowth, SPECIES_MEOWTH},
+ [SPECIES_PERSIAN] = {gMonPalette_Persian, SPECIES_PERSIAN},
+ [SPECIES_PSYDUCK] = {gMonPalette_Psyduck, SPECIES_PSYDUCK},
+ [SPECIES_GOLDUCK] = {gMonPalette_Golduck, SPECIES_GOLDUCK},
+ [SPECIES_MANKEY] = {gMonPalette_Mankey, SPECIES_MANKEY},
+ [SPECIES_PRIMEAPE] = {gMonPalette_Primeape, SPECIES_PRIMEAPE},
+ [SPECIES_GROWLITHE] = {gMonPalette_Growlithe, SPECIES_GROWLITHE},
+ [SPECIES_ARCANINE] = {gMonPalette_Arcanine, SPECIES_ARCANINE},
+ [SPECIES_POLIWAG] = {gMonPalette_Poliwag, SPECIES_POLIWAG},
+ [SPECIES_POLIWHIRL] = {gMonPalette_Poliwhirl, SPECIES_POLIWHIRL},
+ [SPECIES_POLIWRATH] = {gMonPalette_Poliwrath, SPECIES_POLIWRATH},
+ [SPECIES_ABRA] = {gMonPalette_Abra, SPECIES_ABRA},
+ [SPECIES_KADABRA] = {gMonPalette_Kadabra, SPECIES_KADABRA},
+ [SPECIES_ALAKAZAM] = {gMonPalette_Alakazam, SPECIES_ALAKAZAM},
+ [SPECIES_MACHOP] = {gMonPalette_Machop, SPECIES_MACHOP},
+ [SPECIES_MACHOKE] = {gMonPalette_Machoke, SPECIES_MACHOKE},
+ [SPECIES_MACHAMP] = {gMonPalette_Machamp, SPECIES_MACHAMP},
+ [SPECIES_BELLSPROUT] = {gMonPalette_Bellsprout, SPECIES_BELLSPROUT},
+ [SPECIES_WEEPINBELL] = {gMonPalette_Weepinbell, SPECIES_WEEPINBELL},
+ [SPECIES_VICTREEBEL] = {gMonPalette_Victreebel, SPECIES_VICTREEBEL},
+ [SPECIES_TENTACOOL] = {gMonPalette_Tentacool, SPECIES_TENTACOOL},
+ [SPECIES_TENTACRUEL] = {gMonPalette_Tentacruel, SPECIES_TENTACRUEL},
+ [SPECIES_GEODUDE] = {gMonPalette_Geodude, SPECIES_GEODUDE},
+ [SPECIES_GRAVELER] = {gMonPalette_Graveler, SPECIES_GRAVELER},
+ [SPECIES_GOLEM] = {gMonPalette_Golem, SPECIES_GOLEM},
+ [SPECIES_PONYTA] = {gMonPalette_Ponyta, SPECIES_PONYTA},
+ [SPECIES_RAPIDASH] = {gMonPalette_Rapidash, SPECIES_RAPIDASH},
+ [SPECIES_SLOWPOKE] = {gMonPalette_Slowpoke, SPECIES_SLOWPOKE},
+ [SPECIES_SLOWBRO] = {gMonPalette_Slowbro, SPECIES_SLOWBRO},
+ [SPECIES_MAGNEMITE] = {gMonPalette_Magnemite, SPECIES_MAGNEMITE},
+ [SPECIES_MAGNETON] = {gMonPalette_Magneton, SPECIES_MAGNETON},
+ [SPECIES_FARFETCHD] = {gMonPalette_Farfetchd, SPECIES_FARFETCHD},
+ [SPECIES_DODUO] = {gMonPalette_Doduo, SPECIES_DODUO},
+ [SPECIES_DODRIO] = {gMonPalette_Dodrio, SPECIES_DODRIO},
+ [SPECIES_SEEL] = {gMonPalette_Seel, SPECIES_SEEL},
+ [SPECIES_DEWGONG] = {gMonPalette_Dewgong, SPECIES_DEWGONG},
+ [SPECIES_GRIMER] = {gMonPalette_Grimer, SPECIES_GRIMER},
+ [SPECIES_MUK] = {gMonPalette_Muk, SPECIES_MUK},
+ [SPECIES_SHELLDER] = {gMonPalette_Shellder, SPECIES_SHELLDER},
+ [SPECIES_CLOYSTER] = {gMonPalette_Cloyster, SPECIES_CLOYSTER},
+ [SPECIES_GASTLY] = {gMonPalette_Gastly, SPECIES_GASTLY},
+ [SPECIES_HAUNTER] = {gMonPalette_Haunter, SPECIES_HAUNTER},
+ [SPECIES_GENGAR] = {gMonPalette_Gengar, SPECIES_GENGAR},
+ [SPECIES_ONIX] = {gMonPalette_Onix, SPECIES_ONIX},
+ [SPECIES_DROWZEE] = {gMonPalette_Drowzee, SPECIES_DROWZEE},
+ [SPECIES_HYPNO] = {gMonPalette_Hypno, SPECIES_HYPNO},
+ [SPECIES_KRABBY] = {gMonPalette_Krabby, SPECIES_KRABBY},
+ [SPECIES_KINGLER] = {gMonPalette_Kingler, SPECIES_KINGLER},
+ [SPECIES_VOLTORB] = {gMonPalette_Voltorb, SPECIES_VOLTORB},
+ [SPECIES_ELECTRODE] = {gMonPalette_Electrode, SPECIES_ELECTRODE},
+ [SPECIES_EXEGGCUTE] = {gMonPalette_Exeggcute, SPECIES_EXEGGCUTE},
+ [SPECIES_EXEGGUTOR] = {gMonPalette_Exeggutor, SPECIES_EXEGGUTOR},
+ [SPECIES_CUBONE] = {gMonPalette_Cubone, SPECIES_CUBONE},
+ [SPECIES_MAROWAK] = {gMonPalette_Marowak, SPECIES_MAROWAK},
+ [SPECIES_HITMONLEE] = {gMonPalette_Hitmonlee, SPECIES_HITMONLEE},
+ [SPECIES_HITMONCHAN] = {gMonPalette_Hitmonchan, SPECIES_HITMONCHAN},
+ [SPECIES_LICKITUNG] = {gMonPalette_Lickitung, SPECIES_LICKITUNG},
+ [SPECIES_KOFFING] = {gMonPalette_Koffing, SPECIES_KOFFING},
+ [SPECIES_WEEZING] = {gMonPalette_Weezing, SPECIES_WEEZING},
+ [SPECIES_RHYHORN] = {gMonPalette_Rhyhorn, SPECIES_RHYHORN},
+ [SPECIES_RHYDON] = {gMonPalette_Rhydon, SPECIES_RHYDON},
+ [SPECIES_CHANSEY] = {gMonPalette_Chansey, SPECIES_CHANSEY},
+ [SPECIES_TANGELA] = {gMonPalette_Tangela, SPECIES_TANGELA},
+ [SPECIES_KANGASKHAN] = {gMonPalette_Kangaskhan, SPECIES_KANGASKHAN},
+ [SPECIES_HORSEA] = {gMonPalette_Horsea, SPECIES_HORSEA},
+ [SPECIES_SEADRA] = {gMonPalette_Seadra, SPECIES_SEADRA},
+ [SPECIES_GOLDEEN] = {gMonPalette_Goldeen, SPECIES_GOLDEEN},
+ [SPECIES_SEAKING] = {gMonPalette_Seaking, SPECIES_SEAKING},
+ [SPECIES_STARYU] = {gMonPalette_Staryu, SPECIES_STARYU},
+ [SPECIES_STARMIE] = {gMonPalette_Starmie, SPECIES_STARMIE},
+ [SPECIES_MR_MIME] = {gMonPalette_Mrmime, SPECIES_MR_MIME},
+ [SPECIES_SCYTHER] = {gMonPalette_Scyther, SPECIES_SCYTHER},
+ [SPECIES_JYNX] = {gMonPalette_Jynx, SPECIES_JYNX},
+ [SPECIES_ELECTABUZZ] = {gMonPalette_Electabuzz, SPECIES_ELECTABUZZ},
+ [SPECIES_MAGMAR] = {gMonPalette_Magmar, SPECIES_MAGMAR},
+ [SPECIES_PINSIR] = {gMonPalette_Pinsir, SPECIES_PINSIR},
+ [SPECIES_TAUROS] = {gMonPalette_Tauros, SPECIES_TAUROS},
+ [SPECIES_MAGIKARP] = {gMonPalette_Magikarp, SPECIES_MAGIKARP},
+ [SPECIES_GYARADOS] = {gMonPalette_Gyarados, SPECIES_GYARADOS},
+ [SPECIES_LAPRAS] = {gMonPalette_Lapras, SPECIES_LAPRAS},
+ [SPECIES_DITTO] = {gMonPalette_Ditto, SPECIES_DITTO},
+ [SPECIES_EEVEE] = {gMonPalette_Eevee, SPECIES_EEVEE},
+ [SPECIES_VAPOREON] = {gMonPalette_Vaporeon, SPECIES_VAPOREON},
+ [SPECIES_JOLTEON] = {gMonPalette_Jolteon, SPECIES_JOLTEON},
+ [SPECIES_FLAREON] = {gMonPalette_Flareon, SPECIES_FLAREON},
+ [SPECIES_PORYGON] = {gMonPalette_Porygon, SPECIES_PORYGON},
+ [SPECIES_OMANYTE] = {gMonPalette_Omanyte, SPECIES_OMANYTE},
+ [SPECIES_OMASTAR] = {gMonPalette_Omastar, SPECIES_OMASTAR},
+ [SPECIES_KABUTO] = {gMonPalette_Kabuto, SPECIES_KABUTO},
+ [SPECIES_KABUTOPS] = {gMonPalette_Kabutops, SPECIES_KABUTOPS},
+ [SPECIES_AERODACTYL] = {gMonPalette_Aerodactyl, SPECIES_AERODACTYL},
+ [SPECIES_SNORLAX] = {gMonPalette_Snorlax, SPECIES_SNORLAX},
+ [SPECIES_ARTICUNO] = {gMonPalette_Articuno, SPECIES_ARTICUNO},
+ [SPECIES_ZAPDOS] = {gMonPalette_Zapdos, SPECIES_ZAPDOS},
+ [SPECIES_MOLTRES] = {gMonPalette_Moltres, SPECIES_MOLTRES},
+ [SPECIES_DRATINI] = {gMonPalette_Dratini, SPECIES_DRATINI},
+ [SPECIES_DRAGONAIR] = {gMonPalette_Dragonair, SPECIES_DRAGONAIR},
+ [SPECIES_DRAGONITE] = {gMonPalette_Dragonite, SPECIES_DRAGONITE},
+ [SPECIES_MEWTWO] = {gMonPalette_Mewtwo, SPECIES_MEWTWO},
+ [SPECIES_MEW] = {gMonPalette_Mew, SPECIES_MEW},
+ [SPECIES_CHIKORITA] = {gMonPalette_Chikorita, SPECIES_CHIKORITA},
+ [SPECIES_BAYLEEF] = {gMonPalette_Bayleef, SPECIES_BAYLEEF},
+ [SPECIES_MEGANIUM] = {gMonPalette_Meganium, SPECIES_MEGANIUM},
+ [SPECIES_CYNDAQUIL] = {gMonPalette_Cyndaquil, SPECIES_CYNDAQUIL},
+ [SPECIES_QUILAVA] = {gMonPalette_Quilava, SPECIES_QUILAVA},
+ [SPECIES_TYPHLOSION] = {gMonPalette_Typhlosion, SPECIES_TYPHLOSION},
+ [SPECIES_TOTODILE] = {gMonPalette_Totodile, SPECIES_TOTODILE},
+ [SPECIES_CROCONAW] = {gMonPalette_Croconaw, SPECIES_CROCONAW},
+ [SPECIES_FERALIGATR] = {gMonPalette_Feraligatr, SPECIES_FERALIGATR},
+ [SPECIES_SENTRET] = {gMonPalette_Sentret, SPECIES_SENTRET},
+ [SPECIES_FURRET] = {gMonPalette_Furret, SPECIES_FURRET},
+ [SPECIES_HOOTHOOT] = {gMonPalette_Hoothoot, SPECIES_HOOTHOOT},
+ [SPECIES_NOCTOWL] = {gMonPalette_Noctowl, SPECIES_NOCTOWL},
+ [SPECIES_LEDYBA] = {gMonPalette_Ledyba, SPECIES_LEDYBA},
+ [SPECIES_LEDIAN] = {gMonPalette_Ledian, SPECIES_LEDIAN},
+ [SPECIES_SPINARAK] = {gMonPalette_Spinarak, SPECIES_SPINARAK},
+ [SPECIES_ARIADOS] = {gMonPalette_Ariados, SPECIES_ARIADOS},
+ [SPECIES_CROBAT] = {gMonPalette_Crobat, SPECIES_CROBAT},
+ [SPECIES_CHINCHOU] = {gMonPalette_Chinchou, SPECIES_CHINCHOU},
+ [SPECIES_LANTURN] = {gMonPalette_Lanturn, SPECIES_LANTURN},
+ [SPECIES_PICHU] = {gMonPalette_Pichu, SPECIES_PICHU},
+ [SPECIES_CLEFFA] = {gMonPalette_Cleffa, SPECIES_CLEFFA},
+ [SPECIES_IGGLYBUFF] = {gMonPalette_Igglybuff, SPECIES_IGGLYBUFF},
+ [SPECIES_TOGEPI] = {gMonPalette_Togepi, SPECIES_TOGEPI},
+ [SPECIES_TOGETIC] = {gMonPalette_Togetic, SPECIES_TOGETIC},
+ [SPECIES_NATU] = {gMonPalette_Natu, SPECIES_NATU},
+ [SPECIES_XATU] = {gMonPalette_Xatu, SPECIES_XATU},
+ [SPECIES_MAREEP] = {gMonPalette_Mareep, SPECIES_MAREEP},
+ [SPECIES_FLAAFFY] = {gMonPalette_Flaaffy, SPECIES_FLAAFFY},
+ [SPECIES_AMPHAROS] = {gMonPalette_Ampharos, SPECIES_AMPHAROS},
+ [SPECIES_BELLOSSOM] = {gMonPalette_Bellossom, SPECIES_BELLOSSOM},
+ [SPECIES_MARILL] = {gMonPalette_Marill, SPECIES_MARILL},
+ [SPECIES_AZUMARILL] = {gMonPalette_Azumarill, SPECIES_AZUMARILL},
+ [SPECIES_SUDOWOODO] = {gMonPalette_Sudowoodo, SPECIES_SUDOWOODO},
+ [SPECIES_POLITOED] = {gMonPalette_Politoed, SPECIES_POLITOED},
+ [SPECIES_HOPPIP] = {gMonPalette_Hoppip, SPECIES_HOPPIP},
+ [SPECIES_SKIPLOOM] = {gMonPalette_Skiploom, SPECIES_SKIPLOOM},
+ [SPECIES_JUMPLUFF] = {gMonPalette_Jumpluff, SPECIES_JUMPLUFF},
+ [SPECIES_AIPOM] = {gMonPalette_Aipom, SPECIES_AIPOM},
+ [SPECIES_SUNKERN] = {gMonPalette_Sunkern, SPECIES_SUNKERN},
+ [SPECIES_SUNFLORA] = {gMonPalette_Sunflora, SPECIES_SUNFLORA},
+ [SPECIES_YANMA] = {gMonPalette_Yanma, SPECIES_YANMA},
+ [SPECIES_WOOPER] = {gMonPalette_Wooper, SPECIES_WOOPER},
+ [SPECIES_QUAGSIRE] = {gMonPalette_Quagsire, SPECIES_QUAGSIRE},
+ [SPECIES_ESPEON] = {gMonPalette_Espeon, SPECIES_ESPEON},
+ [SPECIES_UMBREON] = {gMonPalette_Umbreon, SPECIES_UMBREON},
+ [SPECIES_MURKROW] = {gMonPalette_Murkrow, SPECIES_MURKROW},
+ [SPECIES_SLOWKING] = {gMonPalette_Slowking, SPECIES_SLOWKING},
+ [SPECIES_MISDREAVUS] = {gMonPalette_Misdreavus, SPECIES_MISDREAVUS},
+ [SPECIES_UNOWN] = {gMonPalette_Unown, SPECIES_UNOWN},
+ [SPECIES_WOBBUFFET] = {gMonPalette_Wobbuffet, SPECIES_WOBBUFFET},
+ [SPECIES_GIRAFARIG] = {gMonPalette_Girafarig, SPECIES_GIRAFARIG},
+ [SPECIES_PINECO] = {gMonPalette_Pineco, SPECIES_PINECO},
+ [SPECIES_FORRETRESS] = {gMonPalette_Forretress, SPECIES_FORRETRESS},
+ [SPECIES_DUNSPARCE] = {gMonPalette_Dunsparce, SPECIES_DUNSPARCE},
+ [SPECIES_GLIGAR] = {gMonPalette_Gligar, SPECIES_GLIGAR},
+ [SPECIES_STEELIX] = {gMonPalette_Steelix, SPECIES_STEELIX},
+ [SPECIES_SNUBBULL] = {gMonPalette_Snubbull, SPECIES_SNUBBULL},
+ [SPECIES_GRANBULL] = {gMonPalette_Granbull, SPECIES_GRANBULL},
+ [SPECIES_QWILFISH] = {gMonPalette_Qwilfish, SPECIES_QWILFISH},
+ [SPECIES_SCIZOR] = {gMonPalette_Scizor, SPECIES_SCIZOR},
+ [SPECIES_SHUCKLE] = {gMonPalette_Shuckle, SPECIES_SHUCKLE},
+ [SPECIES_HERACROSS] = {gMonPalette_Heracross, SPECIES_HERACROSS},
+ [SPECIES_SNEASEL] = {gMonPalette_Sneasel, SPECIES_SNEASEL},
+ [SPECIES_TEDDIURSA] = {gMonPalette_Teddiursa, SPECIES_TEDDIURSA},
+ [SPECIES_URSARING] = {gMonPalette_Ursaring, SPECIES_URSARING},
+ [SPECIES_SLUGMA] = {gMonPalette_Slugma, SPECIES_SLUGMA},
+ [SPECIES_MAGCARGO] = {gMonPalette_Magcargo, SPECIES_MAGCARGO},
+ [SPECIES_SWINUB] = {gMonPalette_Swinub, SPECIES_SWINUB},
+ [SPECIES_PILOSWINE] = {gMonPalette_Piloswine, SPECIES_PILOSWINE},
+ [SPECIES_CORSOLA] = {gMonPalette_Corsola, SPECIES_CORSOLA},
+ [SPECIES_REMORAID] = {gMonPalette_Remoraid, SPECIES_REMORAID},
+ [SPECIES_OCTILLERY] = {gMonPalette_Octillery, SPECIES_OCTILLERY},
+ [SPECIES_DELIBIRD] = {gMonPalette_Delibird, SPECIES_DELIBIRD},
+ [SPECIES_MANTINE] = {gMonPalette_Mantine, SPECIES_MANTINE},
+ [SPECIES_SKARMORY] = {gMonPalette_Skarmory, SPECIES_SKARMORY},
+ [SPECIES_HOUNDOUR] = {gMonPalette_Houndour, SPECIES_HOUNDOUR},
+ [SPECIES_HOUNDOOM] = {gMonPalette_Houndoom, SPECIES_HOUNDOOM},
+ [SPECIES_KINGDRA] = {gMonPalette_Kingdra, SPECIES_KINGDRA},
+ [SPECIES_PHANPY] = {gMonPalette_Phanpy, SPECIES_PHANPY},
+ [SPECIES_DONPHAN] = {gMonPalette_Donphan, SPECIES_DONPHAN},
+ [SPECIES_PORYGON2] = {gMonPalette_Porygon2, SPECIES_PORYGON2},
+ [SPECIES_STANTLER] = {gMonPalette_Stantler, SPECIES_STANTLER},
+ [SPECIES_SMEARGLE] = {gMonPalette_Smeargle, SPECIES_SMEARGLE},
+ [SPECIES_TYROGUE] = {gMonPalette_Tyrogue, SPECIES_TYROGUE},
+ [SPECIES_HITMONTOP] = {gMonPalette_Hitmontop, SPECIES_HITMONTOP},
+ [SPECIES_SMOOCHUM] = {gMonPalette_Smoochum, SPECIES_SMOOCHUM},
+ [SPECIES_ELEKID] = {gMonPalette_Elekid, SPECIES_ELEKID},
+ [SPECIES_MAGBY] = {gMonPalette_Magby, SPECIES_MAGBY},
+ [SPECIES_MILTANK] = {gMonPalette_Miltank, SPECIES_MILTANK},
+ [SPECIES_BLISSEY] = {gMonPalette_Blissey, SPECIES_BLISSEY},
+ [SPECIES_RAIKOU] = {gMonPalette_Raikou, SPECIES_RAIKOU},
+ [SPECIES_ENTEI] = {gMonPalette_Entei, SPECIES_ENTEI},
+ [SPECIES_SUICUNE] = {gMonPalette_Suicune, SPECIES_SUICUNE},
+ [SPECIES_LARVITAR] = {gMonPalette_Larvitar, SPECIES_LARVITAR},
+ [SPECIES_PUPITAR] = {gMonPalette_Pupitar, SPECIES_PUPITAR},
+ [SPECIES_TYRANITAR] = {gMonPalette_Tyranitar, SPECIES_TYRANITAR},
+ [SPECIES_LUGIA] = {gMonPalette_Lugia, SPECIES_LUGIA},
+ [SPECIES_HO_OH] = {gMonPalette_HoOh, SPECIES_HO_OH},
+ [SPECIES_CELEBI] = {gMonPalette_Celebi, SPECIES_CELEBI},
+ [SPECIES_OLD_UNOWN_B] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_B},
+ [SPECIES_OLD_UNOWN_C] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_C},
+ [SPECIES_OLD_UNOWN_D] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_D},
+ [SPECIES_OLD_UNOWN_E] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_E},
+ [SPECIES_OLD_UNOWN_F] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_F},
+ [SPECIES_OLD_UNOWN_G] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_G},
+ [SPECIES_OLD_UNOWN_H] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_H},
+ [SPECIES_OLD_UNOWN_I] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_I},
+ [SPECIES_OLD_UNOWN_J] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_J},
+ [SPECIES_OLD_UNOWN_K] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_K},
+ [SPECIES_OLD_UNOWN_L] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_L},
+ [SPECIES_OLD_UNOWN_M] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_M},
+ [SPECIES_OLD_UNOWN_N] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_N},
+ [SPECIES_OLD_UNOWN_O] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_O},
+ [SPECIES_OLD_UNOWN_P] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_P},
+ [SPECIES_OLD_UNOWN_Q] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_Q},
+ [SPECIES_OLD_UNOWN_R] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_R},
+ [SPECIES_OLD_UNOWN_S] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_S},
+ [SPECIES_OLD_UNOWN_T] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_T},
+ [SPECIES_OLD_UNOWN_U] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_U},
+ [SPECIES_OLD_UNOWN_V] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_V},
+ [SPECIES_OLD_UNOWN_W] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_W},
+ [SPECIES_OLD_UNOWN_X] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_X},
+ [SPECIES_OLD_UNOWN_Y] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_Y},
+ [SPECIES_OLD_UNOWN_Z] = {gMonPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_Z},
+ [SPECIES_TREECKO] = {gMonPalette_Treecko, SPECIES_TREECKO},
+ [SPECIES_GROVYLE] = {gMonPalette_Grovyle, SPECIES_GROVYLE},
+ [SPECIES_SCEPTILE] = {gMonPalette_Sceptile, SPECIES_SCEPTILE},
+ [SPECIES_TORCHIC] = {gMonPalette_Torchic, SPECIES_TORCHIC},
+ [SPECIES_COMBUSKEN] = {gMonPalette_Combusken, SPECIES_COMBUSKEN},
+ [SPECIES_BLAZIKEN] = {gMonPalette_Blaziken, SPECIES_BLAZIKEN},
+ [SPECIES_MUDKIP] = {gMonPalette_Mudkip, SPECIES_MUDKIP},
+ [SPECIES_MARSHTOMP] = {gMonPalette_Marshtomp, SPECIES_MARSHTOMP},
+ [SPECIES_SWAMPERT] = {gMonPalette_Swampert, SPECIES_SWAMPERT},
+ [SPECIES_POOCHYENA] = {gMonPalette_Poochyena, SPECIES_POOCHYENA},
+ [SPECIES_MIGHTYENA] = {gMonPalette_Mightyena, SPECIES_MIGHTYENA},
+ [SPECIES_ZIGZAGOON] = {gMonPalette_Zigzagoon, SPECIES_ZIGZAGOON},
+ [SPECIES_LINOONE] = {gMonPalette_Linoone, SPECIES_LINOONE},
+ [SPECIES_WURMPLE] = {gMonPalette_Wurmple, SPECIES_WURMPLE},
+ [SPECIES_SILCOON] = {gMonPalette_Silcoon, SPECIES_SILCOON},
+ [SPECIES_BEAUTIFLY] = {gMonPalette_Beautifly, SPECIES_BEAUTIFLY},
+ [SPECIES_CASCOON] = {gMonPalette_Cascoon, SPECIES_CASCOON},
+ [SPECIES_DUSTOX] = {gMonPalette_Dustox, SPECIES_DUSTOX},
+ [SPECIES_LOTAD] = {gMonPalette_Lotad, SPECIES_LOTAD},
+ [SPECIES_LOMBRE] = {gMonPalette_Lombre, SPECIES_LOMBRE},
+ [SPECIES_LUDICOLO] = {gMonPalette_Ludicolo, SPECIES_LUDICOLO},
+ [SPECIES_SEEDOT] = {gMonPalette_Seedot, SPECIES_SEEDOT},
+ [SPECIES_NUZLEAF] = {gMonPalette_Nuzleaf, SPECIES_NUZLEAF},
+ [SPECIES_SHIFTRY] = {gMonPalette_Shiftry, SPECIES_SHIFTRY},
+ [SPECIES_NINCADA] = {gMonPalette_Nincada, SPECIES_NINCADA},
+ [SPECIES_NINJASK] = {gMonPalette_Ninjask, SPECIES_NINJASK},
+ [SPECIES_SHEDINJA] = {gMonPalette_Shedinja, SPECIES_SHEDINJA},
+ [SPECIES_TAILLOW] = {gMonPalette_Taillow, SPECIES_TAILLOW},
+ [SPECIES_SWELLOW] = {gMonPalette_Swellow, SPECIES_SWELLOW},
+ [SPECIES_SHROOMISH] = {gMonPalette_Shroomish, SPECIES_SHROOMISH},
+ [SPECIES_BRELOOM] = {gMonPalette_Breloom, SPECIES_BRELOOM},
+ [SPECIES_SPINDA] = {gMonPalette_Spinda, SPECIES_SPINDA},
+ [SPECIES_WINGULL] = {gMonPalette_Wingull, SPECIES_WINGULL},
+ [SPECIES_PELIPPER] = {gMonPalette_Pelipper, SPECIES_PELIPPER},
+ [SPECIES_SURSKIT] = {gMonPalette_Surskit, SPECIES_SURSKIT},
+ [SPECIES_MASQUERAIN] = {gMonPalette_Masquerain, SPECIES_MASQUERAIN},
+ [SPECIES_WAILMER] = {gMonPalette_Wailmer, SPECIES_WAILMER},
+ [SPECIES_WAILORD] = {gMonPalette_Wailord, SPECIES_WAILORD},
+ [SPECIES_SKITTY] = {gMonPalette_Skitty, SPECIES_SKITTY},
+ [SPECIES_DELCATTY] = {gMonPalette_Delcatty, SPECIES_DELCATTY},
+ [SPECIES_KECLEON] = {gMonPalette_Kecleon, SPECIES_KECLEON},
+ [SPECIES_BALTOY] = {gMonPalette_Baltoy, SPECIES_BALTOY},
+ [SPECIES_CLAYDOL] = {gMonPalette_Claydol, SPECIES_CLAYDOL},
+ [SPECIES_NOSEPASS] = {gMonPalette_Nosepass, SPECIES_NOSEPASS},
+ [SPECIES_TORKOAL] = {gMonPalette_Torkoal, SPECIES_TORKOAL},
+ [SPECIES_SABLEYE] = {gMonPalette_Sableye, SPECIES_SABLEYE},
+ [SPECIES_BARBOACH] = {gMonPalette_Barboach, SPECIES_BARBOACH},
+ [SPECIES_WHISCASH] = {gMonPalette_Whiscash, SPECIES_WHISCASH},
+ [SPECIES_LUVDISC] = {gMonPalette_Luvdisc, SPECIES_LUVDISC},
+ [SPECIES_CORPHISH] = {gMonPalette_Corphish, SPECIES_CORPHISH},
+ [SPECIES_CRAWDAUNT] = {gMonPalette_Crawdaunt, SPECIES_CRAWDAUNT},
+ [SPECIES_FEEBAS] = {gMonPalette_Feebas, SPECIES_FEEBAS},
+ [SPECIES_MILOTIC] = {gMonPalette_Milotic, SPECIES_MILOTIC},
+ [SPECIES_CARVANHA] = {gMonPalette_Carvanha, SPECIES_CARVANHA},
+ [SPECIES_SHARPEDO] = {gMonPalette_Sharpedo, SPECIES_SHARPEDO},
+ [SPECIES_TRAPINCH] = {gMonPalette_Trapinch, SPECIES_TRAPINCH},
+ [SPECIES_VIBRAVA] = {gMonPalette_Vibrava, SPECIES_VIBRAVA},
+ [SPECIES_FLYGON] = {gMonPalette_Flygon, SPECIES_FLYGON},
+ [SPECIES_MAKUHITA] = {gMonPalette_Makuhita, SPECIES_MAKUHITA},
+ [SPECIES_HARIYAMA] = {gMonPalette_Hariyama, SPECIES_HARIYAMA},
+ [SPECIES_ELECTRIKE] = {gMonPalette_Electrike, SPECIES_ELECTRIKE},
+ [SPECIES_MANECTRIC] = {gMonPalette_Manectric, SPECIES_MANECTRIC},
+ [SPECIES_NUMEL] = {gMonPalette_Numel, SPECIES_NUMEL},
+ [SPECIES_CAMERUPT] = {gMonPalette_Camerupt, SPECIES_CAMERUPT},
+ [SPECIES_SPHEAL] = {gMonPalette_Spheal, SPECIES_SPHEAL},
+ [SPECIES_SEALEO] = {gMonPalette_Sealeo, SPECIES_SEALEO},
+ [SPECIES_WALREIN] = {gMonPalette_Walrein, SPECIES_WALREIN},
+ [SPECIES_CACNEA] = {gMonPalette_Cacnea, SPECIES_CACNEA},
+ [SPECIES_CACTURNE] = {gMonPalette_Cacturne, SPECIES_CACTURNE},
+ [SPECIES_SNORUNT] = {gMonPalette_Snorunt, SPECIES_SNORUNT},
+ [SPECIES_GLALIE] = {gMonPalette_Glalie, SPECIES_GLALIE},
+ [SPECIES_LUNATONE] = {gMonPalette_Lunatone, SPECIES_LUNATONE},
+ [SPECIES_SOLROCK] = {gMonPalette_Solrock, SPECIES_SOLROCK},
+ [SPECIES_AZURILL] = {gMonPalette_Azurill, SPECIES_AZURILL},
+ [SPECIES_SPOINK] = {gMonPalette_Spoink, SPECIES_SPOINK},
+ [SPECIES_GRUMPIG] = {gMonPalette_Grumpig, SPECIES_GRUMPIG},
+ [SPECIES_PLUSLE] = {gMonPalette_Plusle, SPECIES_PLUSLE},
+ [SPECIES_MINUN] = {gMonPalette_Minun, SPECIES_MINUN},
+ [SPECIES_MAWILE] = {gMonPalette_Mawile, SPECIES_MAWILE},
+ [SPECIES_MEDITITE] = {gMonPalette_Meditite, SPECIES_MEDITITE},
+ [SPECIES_MEDICHAM] = {gMonPalette_Medicham, SPECIES_MEDICHAM},
+ [SPECIES_SWABLU] = {gMonPalette_Swablu, SPECIES_SWABLU},
+ [SPECIES_ALTARIA] = {gMonPalette_Altaria, SPECIES_ALTARIA},
+ [SPECIES_WYNAUT] = {gMonPalette_Wynaut, SPECIES_WYNAUT},
+ [SPECIES_DUSKULL] = {gMonPalette_Duskull, SPECIES_DUSKULL},
+ [SPECIES_DUSCLOPS] = {gMonPalette_Dusclops, SPECIES_DUSCLOPS},
+ [SPECIES_ROSELIA] = {gMonPalette_Roselia, SPECIES_ROSELIA},
+ [SPECIES_SLAKOTH] = {gMonPalette_Slakoth, SPECIES_SLAKOTH},
+ [SPECIES_VIGOROTH] = {gMonPalette_Vigoroth, SPECIES_VIGOROTH},
+ [SPECIES_SLAKING] = {gMonPalette_Slaking, SPECIES_SLAKING},
+ [SPECIES_GULPIN] = {gMonPalette_Gulpin, SPECIES_GULPIN},
+ [SPECIES_SWALOT] = {gMonPalette_Swalot, SPECIES_SWALOT},
+ [SPECIES_TROPIUS] = {gMonPalette_Tropius, SPECIES_TROPIUS},
+ [SPECIES_WHISMUR] = {gMonPalette_Whismur, SPECIES_WHISMUR},
+ [SPECIES_LOUDRED] = {gMonPalette_Loudred, SPECIES_LOUDRED},
+ [SPECIES_EXPLOUD] = {gMonPalette_Exploud, SPECIES_EXPLOUD},
+ [SPECIES_CLAMPERL] = {gMonPalette_Clamperl, SPECIES_CLAMPERL},
+ [SPECIES_HUNTAIL] = {gMonPalette_Huntail, SPECIES_HUNTAIL},
+ [SPECIES_GOREBYSS] = {gMonPalette_Gorebyss, SPECIES_GOREBYSS},
+ [SPECIES_ABSOL] = {gMonPalette_Absol, SPECIES_ABSOL},
+ [SPECIES_SHUPPET] = {gMonPalette_Shuppet, SPECIES_SHUPPET},
+ [SPECIES_BANETTE] = {gMonPalette_Banette, SPECIES_BANETTE},
+ [SPECIES_SEVIPER] = {gMonPalette_Seviper, SPECIES_SEVIPER},
+ [SPECIES_ZANGOOSE] = {gMonPalette_Zangoose, SPECIES_ZANGOOSE},
+ [SPECIES_RELICANTH] = {gMonPalette_Relicanth, SPECIES_RELICANTH},
+ [SPECIES_ARON] = {gMonPalette_Aron, SPECIES_ARON},
+ [SPECIES_LAIRON] = {gMonPalette_Lairon, SPECIES_LAIRON},
+ [SPECIES_AGGRON] = {gMonPalette_Aggron, SPECIES_AGGRON},
+ [SPECIES_CASTFORM] = {gMonPalette_Castform, SPECIES_CASTFORM},
+ [SPECIES_VOLBEAT] = {gMonPalette_Volbeat, SPECIES_VOLBEAT},
+ [SPECIES_ILLUMISE] = {gMonPalette_Illumise, SPECIES_ILLUMISE},
+ [SPECIES_LILEEP] = {gMonPalette_Lileep, SPECIES_LILEEP},
+ [SPECIES_CRADILY] = {gMonPalette_Cradily, SPECIES_CRADILY},
+ [SPECIES_ANORITH] = {gMonPalette_Anorith, SPECIES_ANORITH},
+ [SPECIES_ARMALDO] = {gMonPalette_Armaldo, SPECIES_ARMALDO},
+ [SPECIES_RALTS] = {gMonPalette_Ralts, SPECIES_RALTS},
+ [SPECIES_KIRLIA] = {gMonPalette_Kirlia, SPECIES_KIRLIA},
+ [SPECIES_GARDEVOIR] = {gMonPalette_Gardevoir, SPECIES_GARDEVOIR},
+ [SPECIES_BAGON] = {gMonPalette_Bagon, SPECIES_BAGON},
+ [SPECIES_SHELGON] = {gMonPalette_Shelgon, SPECIES_SHELGON},
+ [SPECIES_SALAMENCE] = {gMonPalette_Salamence, SPECIES_SALAMENCE},
+ [SPECIES_BELDUM] = {gMonPalette_Beldum, SPECIES_BELDUM},
+ [SPECIES_METANG] = {gMonPalette_Metang, SPECIES_METANG},
+ [SPECIES_METAGROSS] = {gMonPalette_Metagross, SPECIES_METAGROSS},
+ [SPECIES_REGIROCK] = {gMonPalette_Regirock, SPECIES_REGIROCK},
+ [SPECIES_REGICE] = {gMonPalette_Regice, SPECIES_REGICE},
+ [SPECIES_REGISTEEL] = {gMonPalette_Registeel, SPECIES_REGISTEEL},
+ [SPECIES_KYOGRE] = {gMonPalette_Kyogre, SPECIES_KYOGRE},
+ [SPECIES_GROUDON] = {gMonPalette_Groudon, SPECIES_GROUDON},
+ [SPECIES_RAYQUAZA] = {gMonPalette_Rayquaza, SPECIES_RAYQUAZA},
+ [SPECIES_LATIAS] = {gMonPalette_Latias, SPECIES_LATIAS},
+ [SPECIES_LATIOS] = {gMonPalette_Latios, SPECIES_LATIOS},
+ [SPECIES_JIRACHI] = {gMonPalette_Jirachi, SPECIES_JIRACHI},
+ [SPECIES_DEOXYS] = {gMonPalette_Deoxys, SPECIES_DEOXYS},
+ [SPECIES_CHIMECHO] = {gMonPalette_Chimecho, SPECIES_CHIMECHO},
+ [SPECIES_EGG] = {gMonPalette_Egg, SPECIES_EGG},
+ [SPECIES_UNOWN_B] = {gMonPalette_Unown, SPECIES_UNOWN_B},
+ [SPECIES_UNOWN_C] = {gMonPalette_Unown, SPECIES_UNOWN_C},
+ [SPECIES_UNOWN_D] = {gMonPalette_Unown, SPECIES_UNOWN_D},
+ [SPECIES_UNOWN_E] = {gMonPalette_Unown, SPECIES_UNOWN_E},
+ [SPECIES_UNOWN_F] = {gMonPalette_Unown, SPECIES_UNOWN_F},
+ [SPECIES_UNOWN_G] = {gMonPalette_Unown, SPECIES_UNOWN_G},
+ [SPECIES_UNOWN_H] = {gMonPalette_Unown, SPECIES_UNOWN_H},
+ [SPECIES_UNOWN_I] = {gMonPalette_Unown, SPECIES_UNOWN_I},
+ [SPECIES_UNOWN_J] = {gMonPalette_Unown, SPECIES_UNOWN_J},
+ [SPECIES_UNOWN_K] = {gMonPalette_Unown, SPECIES_UNOWN_K},
+ [SPECIES_UNOWN_L] = {gMonPalette_Unown, SPECIES_UNOWN_L},
+ [SPECIES_UNOWN_M] = {gMonPalette_Unown, SPECIES_UNOWN_M},
+ [SPECIES_UNOWN_N] = {gMonPalette_Unown, SPECIES_UNOWN_N},
+ [SPECIES_UNOWN_O] = {gMonPalette_Unown, SPECIES_UNOWN_O},
+ [SPECIES_UNOWN_P] = {gMonPalette_Unown, SPECIES_UNOWN_P},
+ [SPECIES_UNOWN_Q] = {gMonPalette_Unown, SPECIES_UNOWN_Q},
+ [SPECIES_UNOWN_R] = {gMonPalette_Unown, SPECIES_UNOWN_R},
+ [SPECIES_UNOWN_S] = {gMonPalette_Unown, SPECIES_UNOWN_S},
+ [SPECIES_UNOWN_T] = {gMonPalette_Unown, SPECIES_UNOWN_T},
+ [SPECIES_UNOWN_U] = {gMonPalette_Unown, SPECIES_UNOWN_U},
+ [SPECIES_UNOWN_V] = {gMonPalette_Unown, SPECIES_UNOWN_V},
+ [SPECIES_UNOWN_W] = {gMonPalette_Unown, SPECIES_UNOWN_W},
+ [SPECIES_UNOWN_X] = {gMonPalette_Unown, SPECIES_UNOWN_X},
+ [SPECIES_UNOWN_Y] = {gMonPalette_Unown, SPECIES_UNOWN_Y},
+ [SPECIES_UNOWN_Z] = {gMonPalette_Unown, SPECIES_UNOWN_Z},
+ [SPECIES_UNOWN_EMARK] = {gMonPalette_Unown, SPECIES_UNOWN_EMARK},
+ [SPECIES_UNOWN_QMARK] = {gMonPalette_Unown, SPECIES_UNOWN_QMARK},
};
diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h
index 91708fafa..0c3f990cf 100644
--- a/src/data/pokemon_graphics/shiny_palette_table.h
+++ b/src/data/pokemon_graphics/shiny_palette_table.h
@@ -1,443 +1,443 @@
const struct CompressedSpritePalette gMonShinyPaletteTable[] =
{
- gMonShinyPalette_CircledQuestionMark, 500,
- gMonShinyPalette_Bulbasaur, 501,
- gMonShinyPalette_Ivysaur, 502,
- gMonShinyPalette_Venusaur, 503,
- gMonShinyPalette_Charmander, 504,
- gMonShinyPalette_Charmeleon, 505,
- gMonShinyPalette_Charizard, 506,
- gMonShinyPalette_Squirtle, 507,
- gMonShinyPalette_Wartortle, 508,
- gMonShinyPalette_Blastoise, 509,
- gMonShinyPalette_Caterpie, 510,
- gMonShinyPalette_Metapod, 511,
- gMonShinyPalette_Butterfree, 512,
- gMonShinyPalette_Weedle, 513,
- gMonShinyPalette_Kakuna, 514,
- gMonShinyPalette_Beedrill, 515,
- gMonShinyPalette_Pidgey, 516,
- gMonShinyPalette_Pidgeotto, 517,
- gMonShinyPalette_Pidgeot, 518,
- gMonShinyPalette_Rattata, 519,
- gMonShinyPalette_Raticate, 520,
- gMonShinyPalette_Spearow, 521,
- gMonShinyPalette_Fearow, 522,
- gMonShinyPalette_Ekans, 523,
- gMonShinyPalette_Arbok, 524,
- gMonShinyPalette_Pikachu, 525,
- gMonShinyPalette_Raichu, 526,
- gMonShinyPalette_Sandshrew, 527,
- gMonShinyPalette_Sandslash, 528,
- gMonShinyPalette_NidoranF, 529,
- gMonShinyPalette_Nidorina, 530,
- gMonShinyPalette_Nidoqueen, 531,
- gMonShinyPalette_NidoranM, 532,
- gMonShinyPalette_Nidorino, 533,
- gMonShinyPalette_Nidoking, 534,
- gMonShinyPalette_Clefairy, 535,
- gMonShinyPalette_Clefable, 536,
- gMonShinyPalette_Vulpix, 537,
- gMonShinyPalette_Ninetales, 538,
- gMonShinyPalette_Jigglypuff, 539,
- gMonShinyPalette_Wigglytuff, 540,
- gMonShinyPalette_Zubat, 541,
- gMonShinyPalette_Golbat, 542,
- gMonShinyPalette_Oddish, 543,
- gMonShinyPalette_Gloom, 544,
- gMonShinyPalette_Vileplume, 545,
- gMonShinyPalette_Paras, 546,
- gMonShinyPalette_Parasect, 547,
- gMonShinyPalette_Venonat, 548,
- gMonShinyPalette_Venomoth, 549,
- gMonShinyPalette_Diglett, 550,
- gMonShinyPalette_Dugtrio, 551,
- gMonShinyPalette_Meowth, 552,
- gMonShinyPalette_Persian, 553,
- gMonShinyPalette_Psyduck, 554,
- gMonShinyPalette_Golduck, 555,
- gMonShinyPalette_Mankey, 556,
- gMonShinyPalette_Primeape, 557,
- gMonShinyPalette_Growlithe, 558,
- gMonShinyPalette_Arcanine, 559,
- gMonShinyPalette_Poliwag, 560,
- gMonShinyPalette_Poliwhirl, 561,
- gMonShinyPalette_Poliwrath, 562,
- gMonShinyPalette_Abra, 563,
- gMonShinyPalette_Kadabra, 564,
- gMonShinyPalette_Alakazam, 565,
- gMonShinyPalette_Machop, 566,
- gMonShinyPalette_Machoke, 567,
- gMonShinyPalette_Machamp, 568,
- gMonShinyPalette_Bellsprout, 569,
- gMonShinyPalette_Weepinbell, 570,
- gMonShinyPalette_Victreebel, 571,
- gMonShinyPalette_Tentacool, 572,
- gMonShinyPalette_Tentacruel, 573,
- gMonShinyPalette_Geodude, 574,
- gMonShinyPalette_Graveler, 575,
- gMonShinyPalette_Golem, 576,
- gMonShinyPalette_Ponyta, 577,
- gMonShinyPalette_Rapidash, 578,
- gMonShinyPalette_Slowpoke, 579,
- gMonShinyPalette_Slowbro, 580,
- gMonShinyPalette_Magnemite, 581,
- gMonShinyPalette_Magneton, 582,
- gMonShinyPalette_Farfetchd, 583,
- gMonShinyPalette_Doduo, 584,
- gMonShinyPalette_Dodrio, 585,
- gMonShinyPalette_Seel, 586,
- gMonShinyPalette_Dewgong, 587,
- gMonShinyPalette_Grimer, 588,
- gMonShinyPalette_Muk, 589,
- gMonShinyPalette_Shellder, 590,
- gMonShinyPalette_Cloyster, 591,
- gMonShinyPalette_Gastly, 592,
- gMonShinyPalette_Haunter, 593,
- gMonShinyPalette_Gengar, 594,
- gMonShinyPalette_Onix, 595,
- gMonShinyPalette_Drowzee, 596,
- gMonShinyPalette_Hypno, 597,
- gMonShinyPalette_Krabby, 598,
- gMonShinyPalette_Kingler, 599,
- gMonShinyPalette_Voltorb, 600,
- gMonShinyPalette_Electrode, 601,
- gMonShinyPalette_Exeggcute, 602,
- gMonShinyPalette_Exeggutor, 603,
- gMonShinyPalette_Cubone, 604,
- gMonShinyPalette_Marowak, 605,
- gMonShinyPalette_Hitmonlee, 606,
- gMonShinyPalette_Hitmonchan, 607,
- gMonShinyPalette_Lickitung, 608,
- gMonShinyPalette_Koffing, 609,
- gMonShinyPalette_Weezing, 610,
- gMonShinyPalette_Rhyhorn, 611,
- gMonShinyPalette_Rhydon, 612,
- gMonShinyPalette_Chansey, 613,
- gMonShinyPalette_Tangela, 614,
- gMonShinyPalette_Kangaskhan, 615,
- gMonShinyPalette_Horsea, 616,
- gMonShinyPalette_Seadra, 617,
- gMonShinyPalette_Goldeen, 618,
- gMonShinyPalette_Seaking, 619,
- gMonShinyPalette_Staryu, 620,
- gMonShinyPalette_Starmie, 621,
- gMonShinyPalette_Mrmime, 622,
- gMonShinyPalette_Scyther, 623,
- gMonShinyPalette_Jynx, 624,
- gMonShinyPalette_Electabuzz, 625,
- gMonShinyPalette_Magmar, 626,
- gMonShinyPalette_Pinsir, 627,
- gMonShinyPalette_Tauros, 628,
- gMonShinyPalette_Magikarp, 629,
- gMonShinyPalette_Gyarados, 630,
- gMonShinyPalette_Lapras, 631,
- gMonShinyPalette_Ditto, 632,
- gMonShinyPalette_Eevee, 633,
- gMonShinyPalette_Vaporeon, 634,
- gMonShinyPalette_Jolteon, 635,
- gMonShinyPalette_Flareon, 636,
- gMonShinyPalette_Porygon, 637,
- gMonShinyPalette_Omanyte, 638,
- gMonShinyPalette_Omastar, 639,
- gMonShinyPalette_Kabuto, 640,
- gMonShinyPalette_Kabutops, 641,
- gMonShinyPalette_Aerodactyl, 642,
- gMonShinyPalette_Snorlax, 643,
- gMonShinyPalette_Articuno, 644,
- gMonShinyPalette_Zapdos, 645,
- gMonShinyPalette_Moltres, 646,
- gMonShinyPalette_Dratini, 647,
- gMonShinyPalette_Dragonair, 648,
- gMonShinyPalette_Dragonite, 649,
- gMonShinyPalette_Mewtwo, 650,
- gMonShinyPalette_Mew, 651,
- gMonShinyPalette_Chikorita, 652,
- gMonShinyPalette_Bayleef, 653,
- gMonShinyPalette_Meganium, 654,
- gMonShinyPalette_Cyndaquil, 655,
- gMonShinyPalette_Quilava, 656,
- gMonShinyPalette_Typhlosion, 657,
- gMonShinyPalette_Totodile, 658,
- gMonShinyPalette_Croconaw, 659,
- gMonShinyPalette_Feraligatr, 660,
- gMonShinyPalette_Sentret, 661,
- gMonShinyPalette_Furret, 662,
- gMonShinyPalette_Hoothoot, 663,
- gMonShinyPalette_Noctowl, 664,
- gMonShinyPalette_Ledyba, 665,
- gMonShinyPalette_Ledian, 666,
- gMonShinyPalette_Spinarak, 667,
- gMonShinyPalette_Ariados, 668,
- gMonShinyPalette_Crobat, 669,
- gMonShinyPalette_Chinchou, 670,
- gMonShinyPalette_Lanturn, 671,
- gMonShinyPalette_Pichu, 672,
- gMonShinyPalette_Cleffa, 673,
- gMonShinyPalette_Igglybuff, 674,
- gMonShinyPalette_Togepi, 675,
- gMonShinyPalette_Togetic, 676,
- gMonShinyPalette_Natu, 677,
- gMonShinyPalette_Xatu, 678,
- gMonShinyPalette_Mareep, 679,
- gMonShinyPalette_Flaaffy, 680,
- gMonShinyPalette_Ampharos, 681,
- gMonShinyPalette_Bellossom, 682,
- gMonShinyPalette_Marill, 683,
- gMonShinyPalette_Azumarill, 684,
- gMonShinyPalette_Sudowoodo, 685,
- gMonShinyPalette_Politoed, 686,
- gMonShinyPalette_Hoppip, 687,
- gMonShinyPalette_Skiploom, 688,
- gMonShinyPalette_Jumpluff, 689,
- gMonShinyPalette_Aipom, 690,
- gMonShinyPalette_Sunkern, 691,
- gMonShinyPalette_Sunflora, 692,
- gMonShinyPalette_Yanma, 693,
- gMonShinyPalette_Wooper, 694,
- gMonShinyPalette_Quagsire, 695,
- gMonShinyPalette_Espeon, 696,
- gMonShinyPalette_Umbreon, 697,
- gMonShinyPalette_Murkrow, 698,
- gMonShinyPalette_Slowking, 699,
- gMonShinyPalette_Misdreavus, 700,
- gMonShinyPalette_Unown, 701,
- gMonShinyPalette_Wobbuffet, 702,
- gMonShinyPalette_Girafarig, 703,
- gMonShinyPalette_Pineco, 704,
- gMonShinyPalette_Forretress, 705,
- gMonShinyPalette_Dunsparce, 706,
- gMonShinyPalette_Gligar, 707,
- gMonShinyPalette_Steelix, 708,
- gMonShinyPalette_Snubbull, 709,
- gMonShinyPalette_Granbull, 710,
- gMonShinyPalette_Qwilfish, 711,
- gMonShinyPalette_Scizor, 712,
- gMonShinyPalette_Shuckle, 713,
- gMonShinyPalette_Heracross, 714,
- gMonShinyPalette_Sneasel, 715,
- gMonShinyPalette_Teddiursa, 716,
- gMonShinyPalette_Ursaring, 717,
- gMonShinyPalette_Slugma, 718,
- gMonShinyPalette_Magcargo, 719,
- gMonShinyPalette_Swinub, 720,
- gMonShinyPalette_Piloswine, 721,
- gMonShinyPalette_Corsola, 722,
- gMonShinyPalette_Remoraid, 723,
- gMonShinyPalette_Octillery, 724,
- gMonShinyPalette_Delibird, 725,
- gMonShinyPalette_Mantine, 726,
- gMonShinyPalette_Skarmory, 727,
- gMonShinyPalette_Houndour, 728,
- gMonShinyPalette_Houndoom, 729,
- gMonShinyPalette_Kingdra, 730,
- gMonShinyPalette_Phanpy, 731,
- gMonShinyPalette_Donphan, 732,
- gMonShinyPalette_Porygon2, 733,
- gMonShinyPalette_Stantler, 734,
- gMonShinyPalette_Smeargle, 735,
- gMonShinyPalette_Tyrogue, 736,
- gMonShinyPalette_Hitmontop, 737,
- gMonShinyPalette_Smoochum, 738,
- gMonShinyPalette_Elekid, 739,
- gMonShinyPalette_Magby, 740,
- gMonShinyPalette_Miltank, 741,
- gMonShinyPalette_Blissey, 742,
- gMonShinyPalette_Raikou, 743,
- gMonShinyPalette_Entei, 744,
- gMonShinyPalette_Suicune, 745,
- gMonShinyPalette_Larvitar, 746,
- gMonShinyPalette_Pupitar, 747,
- gMonShinyPalette_Tyranitar, 748,
- gMonShinyPalette_Lugia, 749,
- gMonShinyPalette_HoOh, 750,
- gMonShinyPalette_Celebi, 751,
- gMonShinyPalette_DoubleQuestionMark, 752,
- gMonShinyPalette_DoubleQuestionMark, 753,
- gMonShinyPalette_DoubleQuestionMark, 754,
- gMonShinyPalette_DoubleQuestionMark, 755,
- gMonShinyPalette_DoubleQuestionMark, 756,
- gMonShinyPalette_DoubleQuestionMark, 757,
- gMonShinyPalette_DoubleQuestionMark, 758,
- gMonShinyPalette_DoubleQuestionMark, 759,
- gMonShinyPalette_DoubleQuestionMark, 760,
- gMonShinyPalette_DoubleQuestionMark, 761,
- gMonShinyPalette_DoubleQuestionMark, 762,
- gMonShinyPalette_DoubleQuestionMark, 763,
- gMonShinyPalette_DoubleQuestionMark, 764,
- gMonShinyPalette_DoubleQuestionMark, 765,
- gMonShinyPalette_DoubleQuestionMark, 766,
- gMonShinyPalette_DoubleQuestionMark, 767,
- gMonShinyPalette_DoubleQuestionMark, 768,
- gMonShinyPalette_DoubleQuestionMark, 769,
- gMonShinyPalette_DoubleQuestionMark, 770,
- gMonShinyPalette_DoubleQuestionMark, 771,
- gMonShinyPalette_DoubleQuestionMark, 772,
- gMonShinyPalette_DoubleQuestionMark, 773,
- gMonShinyPalette_DoubleQuestionMark, 774,
- gMonShinyPalette_DoubleQuestionMark, 775,
- gMonShinyPalette_DoubleQuestionMark, 776,
- gMonShinyPalette_Treecko, 777,
- gMonShinyPalette_Grovyle, 778,
- gMonShinyPalette_Sceptile, 779,
- gMonShinyPalette_Torchic, 780,
- gMonShinyPalette_Combusken, 781,
- gMonShinyPalette_Blaziken, 782,
- gMonShinyPalette_Mudkip, 783,
- gMonShinyPalette_Marshtomp, 784,
- gMonShinyPalette_Swampert, 785,
- gMonShinyPalette_Poochyena, 786,
- gMonShinyPalette_Mightyena, 787,
- gMonShinyPalette_Zigzagoon, 788,
- gMonShinyPalette_Linoone, 789,
- gMonShinyPalette_Wurmple, 790,
- gMonShinyPalette_Silcoon, 791,
- gMonShinyPalette_Beautifly, 792,
- gMonShinyPalette_Cascoon, 793,
- gMonShinyPalette_Dustox, 794,
- gMonShinyPalette_Lotad, 795,
- gMonShinyPalette_Lombre, 796,
- gMonShinyPalette_Ludicolo, 797,
- gMonShinyPalette_Seedot, 798,
- gMonShinyPalette_Nuzleaf, 799,
- gMonShinyPalette_Shiftry, 800,
- gMonShinyPalette_Nincada, 801,
- gMonShinyPalette_Ninjask, 802,
- gMonShinyPalette_Shedinja, 803,
- gMonShinyPalette_Taillow, 804,
- gMonShinyPalette_Swellow, 805,
- gMonShinyPalette_Shroomish, 806,
- gMonShinyPalette_Breloom, 807,
- gMonShinyPalette_Spinda, 808,
- gMonShinyPalette_Wingull, 809,
- gMonShinyPalette_Pelipper, 810,
- gMonShinyPalette_Surskit, 811,
- gMonShinyPalette_Masquerain, 812,
- gMonShinyPalette_Wailmer, 813,
- gMonShinyPalette_Wailord, 814,
- gMonShinyPalette_Skitty, 815,
- gMonShinyPalette_Delcatty, 816,
- gMonShinyPalette_Kecleon, 817,
- gMonShinyPalette_Baltoy, 818,
- gMonShinyPalette_Claydol, 819,
- gMonShinyPalette_Nosepass, 820,
- gMonShinyPalette_Torkoal, 821,
- gMonShinyPalette_Sableye, 822,
- gMonShinyPalette_Barboach, 823,
- gMonShinyPalette_Whiscash, 824,
- gMonShinyPalette_Luvdisc, 825,
- gMonShinyPalette_Corphish, 826,
- gMonShinyPalette_Crawdaunt, 827,
- gMonShinyPalette_Feebas, 828,
- gMonShinyPalette_Milotic, 829,
- gMonShinyPalette_Carvanha, 830,
- gMonShinyPalette_Sharpedo, 831,
- gMonShinyPalette_Trapinch, 832,
- gMonShinyPalette_Vibrava, 833,
- gMonShinyPalette_Flygon, 834,
- gMonShinyPalette_Makuhita, 835,
- gMonShinyPalette_Hariyama, 836,
- gMonShinyPalette_Electrike, 837,
- gMonShinyPalette_Manectric, 838,
- gMonShinyPalette_Numel, 839,
- gMonShinyPalette_Camerupt, 840,
- gMonShinyPalette_Spheal, 841,
- gMonShinyPalette_Sealeo, 842,
- gMonShinyPalette_Walrein, 843,
- gMonShinyPalette_Cacnea, 844,
- gMonShinyPalette_Cacturne, 845,
- gMonShinyPalette_Snorunt, 846,
- gMonShinyPalette_Glalie, 847,
- gMonShinyPalette_Lunatone, 848,
- gMonShinyPalette_Solrock, 849,
- gMonShinyPalette_Azurill, 850,
- gMonShinyPalette_Spoink, 851,
- gMonShinyPalette_Grumpig, 852,
- gMonShinyPalette_Plusle, 853,
- gMonShinyPalette_Minun, 854,
- gMonShinyPalette_Mawile, 855,
- gMonShinyPalette_Meditite, 856,
- gMonShinyPalette_Medicham, 857,
- gMonShinyPalette_Swablu, 858,
- gMonShinyPalette_Altaria, 859,
- gMonShinyPalette_Wynaut, 860,
- gMonShinyPalette_Duskull, 861,
- gMonShinyPalette_Dusclops, 862,
- gMonShinyPalette_Roselia, 863,
- gMonShinyPalette_Slakoth, 864,
- gMonShinyPalette_Vigoroth, 865,
- gMonShinyPalette_Slaking, 866,
- gMonShinyPalette_Gulpin, 867,
- gMonShinyPalette_Swalot, 868,
- gMonShinyPalette_Tropius, 869,
- gMonShinyPalette_Whismur, 870,
- gMonShinyPalette_Loudred, 871,
- gMonShinyPalette_Exploud, 872,
- gMonShinyPalette_Clamperl, 873,
- gMonShinyPalette_Huntail, 874,
- gMonShinyPalette_Gorebyss, 875,
- gMonShinyPalette_Absol, 876,
- gMonShinyPalette_Shuppet, 877,
- gMonShinyPalette_Banette, 878,
- gMonShinyPalette_Seviper, 879,
- gMonShinyPalette_Zangoose, 880,
- gMonShinyPalette_Relicanth, 881,
- gMonShinyPalette_Aron, 882,
- gMonShinyPalette_Lairon, 883,
- gMonShinyPalette_Aggron, 884,
- gMonShinyPalette_Castform, 885,
- gMonShinyPalette_Volbeat, 886,
- gMonShinyPalette_Illumise, 887,
- gMonShinyPalette_Lileep, 888,
- gMonShinyPalette_Cradily, 889,
- gMonShinyPalette_Anorith, 890,
- gMonShinyPalette_Armaldo, 891,
- gMonShinyPalette_Ralts, 892,
- gMonShinyPalette_Kirlia, 893,
- gMonShinyPalette_Gardevoir, 894,
- gMonShinyPalette_Bagon, 895,
- gMonShinyPalette_Shelgon, 896,
- gMonShinyPalette_Salamence, 897,
- gMonShinyPalette_Beldum, 898,
- gMonShinyPalette_Metang, 899,
- gMonShinyPalette_Metagross, 900,
- gMonShinyPalette_Regirock, 901,
- gMonShinyPalette_Regice, 902,
- gMonShinyPalette_Registeel, 903,
- gMonShinyPalette_Kyogre, 904,
- gMonShinyPalette_Groudon, 905,
- gMonShinyPalette_Rayquaza, 906,
- gMonShinyPalette_Latias, 907,
- gMonShinyPalette_Latios, 908,
- gMonShinyPalette_Jirachi, 909,
- gMonShinyPalette_Deoxys, 910,
- gMonShinyPalette_Chimecho, 911,
- gMonPalette_Egg, 912,
- gMonShinyPalette_Unown, 913,
- gMonShinyPalette_Unown, 914,
- gMonShinyPalette_Unown, 915,
- gMonShinyPalette_Unown, 916,
- gMonShinyPalette_Unown, 917,
- gMonShinyPalette_Unown, 918,
- gMonShinyPalette_Unown, 919,
- gMonShinyPalette_Unown, 920,
- gMonShinyPalette_Unown, 921,
- gMonShinyPalette_Unown, 922,
- gMonShinyPalette_Unown, 923,
- gMonShinyPalette_Unown, 924,
- gMonShinyPalette_Unown, 925,
- gMonShinyPalette_Unown, 926,
- gMonShinyPalette_Unown, 927,
- gMonShinyPalette_Unown, 928,
- gMonShinyPalette_Unown, 929,
- gMonShinyPalette_Unown, 930,
- gMonShinyPalette_Unown, 931,
- gMonShinyPalette_Unown, 932,
- gMonShinyPalette_Unown, 933,
- gMonShinyPalette_Unown, 934,
- gMonShinyPalette_Unown, 935,
- gMonShinyPalette_Unown, 936,
- gMonShinyPalette_Unown, 937,
- gMonShinyPalette_Unown, 938,
- gMonShinyPalette_Unown, 939,
+ [SPECIES_NONE] = {gMonShinyPalette_CircledQuestionMark, SPECIES_NONE + 500},
+ [SPECIES_BULBASAUR] = {gMonShinyPalette_Bulbasaur, SPECIES_BULBASAUR + 500},
+ [SPECIES_IVYSAUR] = {gMonShinyPalette_Ivysaur, SPECIES_IVYSAUR + 500},
+ [SPECIES_VENUSAUR] = {gMonShinyPalette_Venusaur, SPECIES_VENUSAUR + 500},
+ [SPECIES_CHARMANDER] = {gMonShinyPalette_Charmander, SPECIES_CHARMANDER + 500},
+ [SPECIES_CHARMELEON] = {gMonShinyPalette_Charmeleon, SPECIES_CHARMELEON + 500},
+ [SPECIES_CHARIZARD] = {gMonShinyPalette_Charizard, SPECIES_CHARIZARD + 500},
+ [SPECIES_SQUIRTLE] = {gMonShinyPalette_Squirtle, SPECIES_SQUIRTLE + 500},
+ [SPECIES_WARTORTLE] = {gMonShinyPalette_Wartortle, SPECIES_WARTORTLE + 500},
+ [SPECIES_BLASTOISE] = {gMonShinyPalette_Blastoise, SPECIES_BLASTOISE + 500},
+ [SPECIES_CATERPIE] = {gMonShinyPalette_Caterpie, SPECIES_CATERPIE + 500},
+ [SPECIES_METAPOD] = {gMonShinyPalette_Metapod, SPECIES_METAPOD + 500},
+ [SPECIES_BUTTERFREE] = {gMonShinyPalette_Butterfree, SPECIES_BUTTERFREE + 500},
+ [SPECIES_WEEDLE] = {gMonShinyPalette_Weedle, SPECIES_WEEDLE + 500},
+ [SPECIES_KAKUNA] = {gMonShinyPalette_Kakuna, SPECIES_KAKUNA + 500},
+ [SPECIES_BEEDRILL] = {gMonShinyPalette_Beedrill, SPECIES_BEEDRILL + 500},
+ [SPECIES_PIDGEY] = {gMonShinyPalette_Pidgey, SPECIES_PIDGEY + 500},
+ [SPECIES_PIDGEOTTO] = {gMonShinyPalette_Pidgeotto, SPECIES_PIDGEOTTO + 500},
+ [SPECIES_PIDGEOT] = {gMonShinyPalette_Pidgeot, SPECIES_PIDGEOT + 500},
+ [SPECIES_RATTATA] = {gMonShinyPalette_Rattata, SPECIES_RATTATA + 500},
+ [SPECIES_RATICATE] = {gMonShinyPalette_Raticate, SPECIES_RATICATE + 500},
+ [SPECIES_SPEAROW] = {gMonShinyPalette_Spearow, SPECIES_SPEAROW + 500},
+ [SPECIES_FEAROW] = {gMonShinyPalette_Fearow, SPECIES_FEAROW + 500},
+ [SPECIES_EKANS] = {gMonShinyPalette_Ekans, SPECIES_EKANS + 500},
+ [SPECIES_ARBOK] = {gMonShinyPalette_Arbok, SPECIES_ARBOK + 500},
+ [SPECIES_PIKACHU] = {gMonShinyPalette_Pikachu, SPECIES_PIKACHU + 500},
+ [SPECIES_RAICHU] = {gMonShinyPalette_Raichu, SPECIES_RAICHU + 500},
+ [SPECIES_SANDSHREW] = {gMonShinyPalette_Sandshrew, SPECIES_SANDSHREW + 500},
+ [SPECIES_SANDSLASH] = {gMonShinyPalette_Sandslash, SPECIES_SANDSLASH + 500},
+ [SPECIES_NIDORAN_F] = {gMonShinyPalette_NidoranF, SPECIES_NIDORAN_F + 500},
+ [SPECIES_NIDORINA] = {gMonShinyPalette_Nidorina, SPECIES_NIDORINA + 500},
+ [SPECIES_NIDOQUEEN] = {gMonShinyPalette_Nidoqueen, SPECIES_NIDOQUEEN + 500},
+ [SPECIES_NIDORAN_M] = {gMonShinyPalette_NidoranM, SPECIES_NIDORAN_M + 500},
+ [SPECIES_NIDORINO] = {gMonShinyPalette_Nidorino, SPECIES_NIDORINO + 500},
+ [SPECIES_NIDOKING] = {gMonShinyPalette_Nidoking, SPECIES_NIDOKING + 500},
+ [SPECIES_CLEFAIRY] = {gMonShinyPalette_Clefairy, SPECIES_CLEFAIRY + 500},
+ [SPECIES_CLEFABLE] = {gMonShinyPalette_Clefable, SPECIES_CLEFABLE + 500},
+ [SPECIES_VULPIX] = {gMonShinyPalette_Vulpix, SPECIES_VULPIX + 500},
+ [SPECIES_NINETALES] = {gMonShinyPalette_Ninetales, SPECIES_NINETALES + 500},
+ [SPECIES_JIGGLYPUFF] = {gMonShinyPalette_Jigglypuff, SPECIES_JIGGLYPUFF + 500},
+ [SPECIES_WIGGLYTUFF] = {gMonShinyPalette_Wigglytuff, SPECIES_WIGGLYTUFF + 500},
+ [SPECIES_ZUBAT] = {gMonShinyPalette_Zubat, SPECIES_ZUBAT + 500},
+ [SPECIES_GOLBAT] = {gMonShinyPalette_Golbat, SPECIES_GOLBAT + 500},
+ [SPECIES_ODDISH] = {gMonShinyPalette_Oddish, SPECIES_ODDISH + 500},
+ [SPECIES_GLOOM] = {gMonShinyPalette_Gloom, SPECIES_GLOOM + 500},
+ [SPECIES_VILEPLUME] = {gMonShinyPalette_Vileplume, SPECIES_VILEPLUME + 500},
+ [SPECIES_PARAS] = {gMonShinyPalette_Paras, SPECIES_PARAS + 500},
+ [SPECIES_PARASECT] = {gMonShinyPalette_Parasect, SPECIES_PARASECT + 500},
+ [SPECIES_VENONAT] = {gMonShinyPalette_Venonat, SPECIES_VENONAT + 500},
+ [SPECIES_VENOMOTH] = {gMonShinyPalette_Venomoth, SPECIES_VENOMOTH + 500},
+ [SPECIES_DIGLETT] = {gMonShinyPalette_Diglett, SPECIES_DIGLETT + 500},
+ [SPECIES_DUGTRIO] = {gMonShinyPalette_Dugtrio, SPECIES_DUGTRIO + 500},
+ [SPECIES_MEOWTH] = {gMonShinyPalette_Meowth, SPECIES_MEOWTH + 500},
+ [SPECIES_PERSIAN] = {gMonShinyPalette_Persian, SPECIES_PERSIAN + 500},
+ [SPECIES_PSYDUCK] = {gMonShinyPalette_Psyduck, SPECIES_PSYDUCK + 500},
+ [SPECIES_GOLDUCK] = {gMonShinyPalette_Golduck, SPECIES_GOLDUCK + 500},
+ [SPECIES_MANKEY] = {gMonShinyPalette_Mankey, SPECIES_MANKEY + 500},
+ [SPECIES_PRIMEAPE] = {gMonShinyPalette_Primeape, SPECIES_PRIMEAPE + 500},
+ [SPECIES_GROWLITHE] = {gMonShinyPalette_Growlithe, SPECIES_GROWLITHE + 500},
+ [SPECIES_ARCANINE] = {gMonShinyPalette_Arcanine, SPECIES_ARCANINE + 500},
+ [SPECIES_POLIWAG] = {gMonShinyPalette_Poliwag, SPECIES_POLIWAG + 500},
+ [SPECIES_POLIWHIRL] = {gMonShinyPalette_Poliwhirl, SPECIES_POLIWHIRL + 500},
+ [SPECIES_POLIWRATH] = {gMonShinyPalette_Poliwrath, SPECIES_POLIWRATH + 500},
+ [SPECIES_ABRA] = {gMonShinyPalette_Abra, SPECIES_ABRA + 500},
+ [SPECIES_KADABRA] = {gMonShinyPalette_Kadabra, SPECIES_KADABRA + 500},
+ [SPECIES_ALAKAZAM] = {gMonShinyPalette_Alakazam, SPECIES_ALAKAZAM + 500},
+ [SPECIES_MACHOP] = {gMonShinyPalette_Machop, SPECIES_MACHOP + 500},
+ [SPECIES_MACHOKE] = {gMonShinyPalette_Machoke, SPECIES_MACHOKE + 500},
+ [SPECIES_MACHAMP] = {gMonShinyPalette_Machamp, SPECIES_MACHAMP + 500},
+ [SPECIES_BELLSPROUT] = {gMonShinyPalette_Bellsprout, SPECIES_BELLSPROUT + 500},
+ [SPECIES_WEEPINBELL] = {gMonShinyPalette_Weepinbell, SPECIES_WEEPINBELL + 500},
+ [SPECIES_VICTREEBEL] = {gMonShinyPalette_Victreebel, SPECIES_VICTREEBEL + 500},
+ [SPECIES_TENTACOOL] = {gMonShinyPalette_Tentacool, SPECIES_TENTACOOL + 500},
+ [SPECIES_TENTACRUEL] = {gMonShinyPalette_Tentacruel, SPECIES_TENTACRUEL + 500},
+ [SPECIES_GEODUDE] = {gMonShinyPalette_Geodude, SPECIES_GEODUDE + 500},
+ [SPECIES_GRAVELER] = {gMonShinyPalette_Graveler, SPECIES_GRAVELER + 500},
+ [SPECIES_GOLEM] = {gMonShinyPalette_Golem, SPECIES_GOLEM + 500},
+ [SPECIES_PONYTA] = {gMonShinyPalette_Ponyta, SPECIES_PONYTA + 500},
+ [SPECIES_RAPIDASH] = {gMonShinyPalette_Rapidash, SPECIES_RAPIDASH + 500},
+ [SPECIES_SLOWPOKE] = {gMonShinyPalette_Slowpoke, SPECIES_SLOWPOKE + 500},
+ [SPECIES_SLOWBRO] = {gMonShinyPalette_Slowbro, SPECIES_SLOWBRO + 500},
+ [SPECIES_MAGNEMITE] = {gMonShinyPalette_Magnemite, SPECIES_MAGNEMITE + 500},
+ [SPECIES_MAGNETON] = {gMonShinyPalette_Magneton, SPECIES_MAGNETON + 500},
+ [SPECIES_FARFETCHD] = {gMonShinyPalette_Farfetchd, SPECIES_FARFETCHD + 500},
+ [SPECIES_DODUO] = {gMonShinyPalette_Doduo, SPECIES_DODUO + 500},
+ [SPECIES_DODRIO] = {gMonShinyPalette_Dodrio, SPECIES_DODRIO + 500},
+ [SPECIES_SEEL] = {gMonShinyPalette_Seel, SPECIES_SEEL + 500},
+ [SPECIES_DEWGONG] = {gMonShinyPalette_Dewgong, SPECIES_DEWGONG + 500},
+ [SPECIES_GRIMER] = {gMonShinyPalette_Grimer, SPECIES_GRIMER + 500},
+ [SPECIES_MUK] = {gMonShinyPalette_Muk, SPECIES_MUK + 500},
+ [SPECIES_SHELLDER] = {gMonShinyPalette_Shellder, SPECIES_SHELLDER + 500},
+ [SPECIES_CLOYSTER] = {gMonShinyPalette_Cloyster, SPECIES_CLOYSTER + 500},
+ [SPECIES_GASTLY] = {gMonShinyPalette_Gastly, SPECIES_GASTLY + 500},
+ [SPECIES_HAUNTER] = {gMonShinyPalette_Haunter, SPECIES_HAUNTER + 500},
+ [SPECIES_GENGAR] = {gMonShinyPalette_Gengar, SPECIES_GENGAR + 500},
+ [SPECIES_ONIX] = {gMonShinyPalette_Onix, SPECIES_ONIX + 500},
+ [SPECIES_DROWZEE] = {gMonShinyPalette_Drowzee, SPECIES_DROWZEE + 500},
+ [SPECIES_HYPNO] = {gMonShinyPalette_Hypno, SPECIES_HYPNO + 500},
+ [SPECIES_KRABBY] = {gMonShinyPalette_Krabby, SPECIES_KRABBY + 500},
+ [SPECIES_KINGLER] = {gMonShinyPalette_Kingler, SPECIES_KINGLER + 500},
+ [SPECIES_VOLTORB] = {gMonShinyPalette_Voltorb, SPECIES_VOLTORB + 500},
+ [SPECIES_ELECTRODE] = {gMonShinyPalette_Electrode, SPECIES_ELECTRODE + 500},
+ [SPECIES_EXEGGCUTE] = {gMonShinyPalette_Exeggcute, SPECIES_EXEGGCUTE + 500},
+ [SPECIES_EXEGGUTOR] = {gMonShinyPalette_Exeggutor, SPECIES_EXEGGUTOR + 500},
+ [SPECIES_CUBONE] = {gMonShinyPalette_Cubone, SPECIES_CUBONE + 500},
+ [SPECIES_MAROWAK] = {gMonShinyPalette_Marowak, SPECIES_MAROWAK + 500},
+ [SPECIES_HITMONLEE] = {gMonShinyPalette_Hitmonlee, SPECIES_HITMONLEE + 500},
+ [SPECIES_HITMONCHAN] = {gMonShinyPalette_Hitmonchan, SPECIES_HITMONCHAN + 500},
+ [SPECIES_LICKITUNG] = {gMonShinyPalette_Lickitung, SPECIES_LICKITUNG + 500},
+ [SPECIES_KOFFING] = {gMonShinyPalette_Koffing, SPECIES_KOFFING + 500},
+ [SPECIES_WEEZING] = {gMonShinyPalette_Weezing, SPECIES_WEEZING + 500},
+ [SPECIES_RHYHORN] = {gMonShinyPalette_Rhyhorn, SPECIES_RHYHORN + 500},
+ [SPECIES_RHYDON] = {gMonShinyPalette_Rhydon, SPECIES_RHYDON + 500},
+ [SPECIES_CHANSEY] = {gMonShinyPalette_Chansey, SPECIES_CHANSEY + 500},
+ [SPECIES_TANGELA] = {gMonShinyPalette_Tangela, SPECIES_TANGELA + 500},
+ [SPECIES_KANGASKHAN] = {gMonShinyPalette_Kangaskhan, SPECIES_KANGASKHAN + 500},
+ [SPECIES_HORSEA] = {gMonShinyPalette_Horsea, SPECIES_HORSEA + 500},
+ [SPECIES_SEADRA] = {gMonShinyPalette_Seadra, SPECIES_SEADRA + 500},
+ [SPECIES_GOLDEEN] = {gMonShinyPalette_Goldeen, SPECIES_GOLDEEN + 500},
+ [SPECIES_SEAKING] = {gMonShinyPalette_Seaking, SPECIES_SEAKING + 500},
+ [SPECIES_STARYU] = {gMonShinyPalette_Staryu, SPECIES_STARYU + 500},
+ [SPECIES_STARMIE] = {gMonShinyPalette_Starmie, SPECIES_STARMIE + 500},
+ [SPECIES_MR_MIME] = {gMonShinyPalette_Mrmime, SPECIES_MR_MIME + 500},
+ [SPECIES_SCYTHER] = {gMonShinyPalette_Scyther, SPECIES_SCYTHER + 500},
+ [SPECIES_JYNX] = {gMonShinyPalette_Jynx, SPECIES_JYNX + 500},
+ [SPECIES_ELECTABUZZ] = {gMonShinyPalette_Electabuzz, SPECIES_ELECTABUZZ + 500},
+ [SPECIES_MAGMAR] = {gMonShinyPalette_Magmar, SPECIES_MAGMAR + 500},
+ [SPECIES_PINSIR] = {gMonShinyPalette_Pinsir, SPECIES_PINSIR + 500},
+ [SPECIES_TAUROS] = {gMonShinyPalette_Tauros, SPECIES_TAUROS + 500},
+ [SPECIES_MAGIKARP] = {gMonShinyPalette_Magikarp, SPECIES_MAGIKARP + 500},
+ [SPECIES_GYARADOS] = {gMonShinyPalette_Gyarados, SPECIES_GYARADOS + 500},
+ [SPECIES_LAPRAS] = {gMonShinyPalette_Lapras, SPECIES_LAPRAS + 500},
+ [SPECIES_DITTO] = {gMonShinyPalette_Ditto, SPECIES_DITTO + 500},
+ [SPECIES_EEVEE] = {gMonShinyPalette_Eevee, SPECIES_EEVEE + 500},
+ [SPECIES_VAPOREON] = {gMonShinyPalette_Vaporeon, SPECIES_VAPOREON + 500},
+ [SPECIES_JOLTEON] = {gMonShinyPalette_Jolteon, SPECIES_JOLTEON + 500},
+ [SPECIES_FLAREON] = {gMonShinyPalette_Flareon, SPECIES_FLAREON + 500},
+ [SPECIES_PORYGON] = {gMonShinyPalette_Porygon, SPECIES_PORYGON + 500},
+ [SPECIES_OMANYTE] = {gMonShinyPalette_Omanyte, SPECIES_OMANYTE + 500},
+ [SPECIES_OMASTAR] = {gMonShinyPalette_Omastar, SPECIES_OMASTAR + 500},
+ [SPECIES_KABUTO] = {gMonShinyPalette_Kabuto, SPECIES_KABUTO + 500},
+ [SPECIES_KABUTOPS] = {gMonShinyPalette_Kabutops, SPECIES_KABUTOPS + 500},
+ [SPECIES_AERODACTYL] = {gMonShinyPalette_Aerodactyl, SPECIES_AERODACTYL + 500},
+ [SPECIES_SNORLAX] = {gMonShinyPalette_Snorlax, SPECIES_SNORLAX + 500},
+ [SPECIES_ARTICUNO] = {gMonShinyPalette_Articuno, SPECIES_ARTICUNO + 500},
+ [SPECIES_ZAPDOS] = {gMonShinyPalette_Zapdos, SPECIES_ZAPDOS + 500},
+ [SPECIES_MOLTRES] = {gMonShinyPalette_Moltres, SPECIES_MOLTRES + 500},
+ [SPECIES_DRATINI] = {gMonShinyPalette_Dratini, SPECIES_DRATINI + 500},
+ [SPECIES_DRAGONAIR] = {gMonShinyPalette_Dragonair, SPECIES_DRAGONAIR + 500},
+ [SPECIES_DRAGONITE] = {gMonShinyPalette_Dragonite, SPECIES_DRAGONITE + 500},
+ [SPECIES_MEWTWO] = {gMonShinyPalette_Mewtwo, SPECIES_MEWTWO + 500},
+ [SPECIES_MEW] = {gMonShinyPalette_Mew, SPECIES_MEW + 500},
+ [SPECIES_CHIKORITA] = {gMonShinyPalette_Chikorita, SPECIES_CHIKORITA + 500},
+ [SPECIES_BAYLEEF] = {gMonShinyPalette_Bayleef, SPECIES_BAYLEEF + 500},
+ [SPECIES_MEGANIUM] = {gMonShinyPalette_Meganium, SPECIES_MEGANIUM + 500},
+ [SPECIES_CYNDAQUIL] = {gMonShinyPalette_Cyndaquil, SPECIES_CYNDAQUIL + 500},
+ [SPECIES_QUILAVA] = {gMonShinyPalette_Quilava, SPECIES_QUILAVA + 500},
+ [SPECIES_TYPHLOSION] = {gMonShinyPalette_Typhlosion, SPECIES_TYPHLOSION + 500},
+ [SPECIES_TOTODILE] = {gMonShinyPalette_Totodile, SPECIES_TOTODILE + 500},
+ [SPECIES_CROCONAW] = {gMonShinyPalette_Croconaw, SPECIES_CROCONAW + 500},
+ [SPECIES_FERALIGATR] = {gMonShinyPalette_Feraligatr, SPECIES_FERALIGATR + 500},
+ [SPECIES_SENTRET] = {gMonShinyPalette_Sentret, SPECIES_SENTRET + 500},
+ [SPECIES_FURRET] = {gMonShinyPalette_Furret, SPECIES_FURRET + 500},
+ [SPECIES_HOOTHOOT] = {gMonShinyPalette_Hoothoot, SPECIES_HOOTHOOT + 500},
+ [SPECIES_NOCTOWL] = {gMonShinyPalette_Noctowl, SPECIES_NOCTOWL + 500},
+ [SPECIES_LEDYBA] = {gMonShinyPalette_Ledyba, SPECIES_LEDYBA + 500},
+ [SPECIES_LEDIAN] = {gMonShinyPalette_Ledian, SPECIES_LEDIAN + 500},
+ [SPECIES_SPINARAK] = {gMonShinyPalette_Spinarak, SPECIES_SPINARAK + 500},
+ [SPECIES_ARIADOS] = {gMonShinyPalette_Ariados, SPECIES_ARIADOS + 500},
+ [SPECIES_CROBAT] = {gMonShinyPalette_Crobat, SPECIES_CROBAT + 500},
+ [SPECIES_CHINCHOU] = {gMonShinyPalette_Chinchou, SPECIES_CHINCHOU + 500},
+ [SPECIES_LANTURN] = {gMonShinyPalette_Lanturn, SPECIES_LANTURN + 500},
+ [SPECIES_PICHU] = {gMonShinyPalette_Pichu, SPECIES_PICHU + 500},
+ [SPECIES_CLEFFA] = {gMonShinyPalette_Cleffa, SPECIES_CLEFFA + 500},
+ [SPECIES_IGGLYBUFF] = {gMonShinyPalette_Igglybuff, SPECIES_IGGLYBUFF + 500},
+ [SPECIES_TOGEPI] = {gMonShinyPalette_Togepi, SPECIES_TOGEPI + 500},
+ [SPECIES_TOGETIC] = {gMonShinyPalette_Togetic, SPECIES_TOGETIC + 500},
+ [SPECIES_NATU] = {gMonShinyPalette_Natu, SPECIES_NATU + 500},
+ [SPECIES_XATU] = {gMonShinyPalette_Xatu, SPECIES_XATU + 500},
+ [SPECIES_MAREEP] = {gMonShinyPalette_Mareep, SPECIES_MAREEP + 500},
+ [SPECIES_FLAAFFY] = {gMonShinyPalette_Flaaffy, SPECIES_FLAAFFY + 500},
+ [SPECIES_AMPHAROS] = {gMonShinyPalette_Ampharos, SPECIES_AMPHAROS + 500},
+ [SPECIES_BELLOSSOM] = {gMonShinyPalette_Bellossom, SPECIES_BELLOSSOM + 500},
+ [SPECIES_MARILL] = {gMonShinyPalette_Marill, SPECIES_MARILL + 500},
+ [SPECIES_AZUMARILL] = {gMonShinyPalette_Azumarill, SPECIES_AZUMARILL + 500},
+ [SPECIES_SUDOWOODO] = {gMonShinyPalette_Sudowoodo, SPECIES_SUDOWOODO + 500},
+ [SPECIES_POLITOED] = {gMonShinyPalette_Politoed, SPECIES_POLITOED + 500},
+ [SPECIES_HOPPIP] = {gMonShinyPalette_Hoppip, SPECIES_HOPPIP + 500},
+ [SPECIES_SKIPLOOM] = {gMonShinyPalette_Skiploom, SPECIES_SKIPLOOM + 500},
+ [SPECIES_JUMPLUFF] = {gMonShinyPalette_Jumpluff, SPECIES_JUMPLUFF + 500},
+ [SPECIES_AIPOM] = {gMonShinyPalette_Aipom, SPECIES_AIPOM + 500},
+ [SPECIES_SUNKERN] = {gMonShinyPalette_Sunkern, SPECIES_SUNKERN + 500},
+ [SPECIES_SUNFLORA] = {gMonShinyPalette_Sunflora, SPECIES_SUNFLORA + 500},
+ [SPECIES_YANMA] = {gMonShinyPalette_Yanma, SPECIES_YANMA + 500},
+ [SPECIES_WOOPER] = {gMonShinyPalette_Wooper, SPECIES_WOOPER + 500},
+ [SPECIES_QUAGSIRE] = {gMonShinyPalette_Quagsire, SPECIES_QUAGSIRE + 500},
+ [SPECIES_ESPEON] = {gMonShinyPalette_Espeon, SPECIES_ESPEON + 500},
+ [SPECIES_UMBREON] = {gMonShinyPalette_Umbreon, SPECIES_UMBREON + 500},
+ [SPECIES_MURKROW] = {gMonShinyPalette_Murkrow, SPECIES_MURKROW + 500},
+ [SPECIES_SLOWKING] = {gMonShinyPalette_Slowking, SPECIES_SLOWKING + 500},
+ [SPECIES_MISDREAVUS] = {gMonShinyPalette_Misdreavus, SPECIES_MISDREAVUS + 500},
+ [SPECIES_UNOWN] = {gMonShinyPalette_Unown, SPECIES_UNOWN + 500},
+ [SPECIES_WOBBUFFET] = {gMonShinyPalette_Wobbuffet, SPECIES_WOBBUFFET + 500},
+ [SPECIES_GIRAFARIG] = {gMonShinyPalette_Girafarig, SPECIES_GIRAFARIG + 500},
+ [SPECIES_PINECO] = {gMonShinyPalette_Pineco, SPECIES_PINECO + 500},
+ [SPECIES_FORRETRESS] = {gMonShinyPalette_Forretress, SPECIES_FORRETRESS + 500},
+ [SPECIES_DUNSPARCE] = {gMonShinyPalette_Dunsparce, SPECIES_DUNSPARCE + 500},
+ [SPECIES_GLIGAR] = {gMonShinyPalette_Gligar, SPECIES_GLIGAR + 500},
+ [SPECIES_STEELIX] = {gMonShinyPalette_Steelix, SPECIES_STEELIX + 500},
+ [SPECIES_SNUBBULL] = {gMonShinyPalette_Snubbull, SPECIES_SNUBBULL + 500},
+ [SPECIES_GRANBULL] = {gMonShinyPalette_Granbull, SPECIES_GRANBULL + 500},
+ [SPECIES_QWILFISH] = {gMonShinyPalette_Qwilfish, SPECIES_QWILFISH + 500},
+ [SPECIES_SCIZOR] = {gMonShinyPalette_Scizor, SPECIES_SCIZOR + 500},
+ [SPECIES_SHUCKLE] = {gMonShinyPalette_Shuckle, SPECIES_SHUCKLE + 500},
+ [SPECIES_HERACROSS] = {gMonShinyPalette_Heracross, SPECIES_HERACROSS + 500},
+ [SPECIES_SNEASEL] = {gMonShinyPalette_Sneasel, SPECIES_SNEASEL + 500},
+ [SPECIES_TEDDIURSA] = {gMonShinyPalette_Teddiursa, SPECIES_TEDDIURSA + 500},
+ [SPECIES_URSARING] = {gMonShinyPalette_Ursaring, SPECIES_URSARING + 500},
+ [SPECIES_SLUGMA] = {gMonShinyPalette_Slugma, SPECIES_SLUGMA + 500},
+ [SPECIES_MAGCARGO] = {gMonShinyPalette_Magcargo, SPECIES_MAGCARGO + 500},
+ [SPECIES_SWINUB] = {gMonShinyPalette_Swinub, SPECIES_SWINUB + 500},
+ [SPECIES_PILOSWINE] = {gMonShinyPalette_Piloswine, SPECIES_PILOSWINE + 500},
+ [SPECIES_CORSOLA] = {gMonShinyPalette_Corsola, SPECIES_CORSOLA + 500},
+ [SPECIES_REMORAID] = {gMonShinyPalette_Remoraid, SPECIES_REMORAID + 500},
+ [SPECIES_OCTILLERY] = {gMonShinyPalette_Octillery, SPECIES_OCTILLERY + 500},
+ [SPECIES_DELIBIRD] = {gMonShinyPalette_Delibird, SPECIES_DELIBIRD + 500},
+ [SPECIES_MANTINE] = {gMonShinyPalette_Mantine, SPECIES_MANTINE + 500},
+ [SPECIES_SKARMORY] = {gMonShinyPalette_Skarmory, SPECIES_SKARMORY + 500},
+ [SPECIES_HOUNDOUR] = {gMonShinyPalette_Houndour, SPECIES_HOUNDOUR + 500},
+ [SPECIES_HOUNDOOM] = {gMonShinyPalette_Houndoom, SPECIES_HOUNDOOM + 500},
+ [SPECIES_KINGDRA] = {gMonShinyPalette_Kingdra, SPECIES_KINGDRA + 500},
+ [SPECIES_PHANPY] = {gMonShinyPalette_Phanpy, SPECIES_PHANPY + 500},
+ [SPECIES_DONPHAN] = {gMonShinyPalette_Donphan, SPECIES_DONPHAN + 500},
+ [SPECIES_PORYGON2] = {gMonShinyPalette_Porygon2, SPECIES_PORYGON2 + 500},
+ [SPECIES_STANTLER] = {gMonShinyPalette_Stantler, SPECIES_STANTLER + 500},
+ [SPECIES_SMEARGLE] = {gMonShinyPalette_Smeargle, SPECIES_SMEARGLE + 500},
+ [SPECIES_TYROGUE] = {gMonShinyPalette_Tyrogue, SPECIES_TYROGUE + 500},
+ [SPECIES_HITMONTOP] = {gMonShinyPalette_Hitmontop, SPECIES_HITMONTOP + 500},
+ [SPECIES_SMOOCHUM] = {gMonShinyPalette_Smoochum, SPECIES_SMOOCHUM + 500},
+ [SPECIES_ELEKID] = {gMonShinyPalette_Elekid, SPECIES_ELEKID + 500},
+ [SPECIES_MAGBY] = {gMonShinyPalette_Magby, SPECIES_MAGBY + 500},
+ [SPECIES_MILTANK] = {gMonShinyPalette_Miltank, SPECIES_MILTANK + 500},
+ [SPECIES_BLISSEY] = {gMonShinyPalette_Blissey, SPECIES_BLISSEY + 500},
+ [SPECIES_RAIKOU] = {gMonShinyPalette_Raikou, SPECIES_RAIKOU + 500},
+ [SPECIES_ENTEI] = {gMonShinyPalette_Entei, SPECIES_ENTEI + 500},
+ [SPECIES_SUICUNE] = {gMonShinyPalette_Suicune, SPECIES_SUICUNE + 500},
+ [SPECIES_LARVITAR] = {gMonShinyPalette_Larvitar, SPECIES_LARVITAR + 500},
+ [SPECIES_PUPITAR] = {gMonShinyPalette_Pupitar, SPECIES_PUPITAR + 500},
+ [SPECIES_TYRANITAR] = {gMonShinyPalette_Tyranitar, SPECIES_TYRANITAR + 500},
+ [SPECIES_LUGIA] = {gMonShinyPalette_Lugia, SPECIES_LUGIA + 500},
+ [SPECIES_HO_OH] = {gMonShinyPalette_HoOh, SPECIES_HO_OH + 500},
+ [SPECIES_CELEBI] = {gMonShinyPalette_Celebi, SPECIES_CELEBI + 500},
+ [SPECIES_OLD_UNOWN_B] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_B + 500},
+ [SPECIES_OLD_UNOWN_C] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_C + 500},
+ [SPECIES_OLD_UNOWN_D] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_D + 500},
+ [SPECIES_OLD_UNOWN_E] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_E + 500},
+ [SPECIES_OLD_UNOWN_F] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_F + 500},
+ [SPECIES_OLD_UNOWN_G] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_G + 500},
+ [SPECIES_OLD_UNOWN_H] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_H + 500},
+ [SPECIES_OLD_UNOWN_I] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_I + 500},
+ [SPECIES_OLD_UNOWN_J] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_J + 500},
+ [SPECIES_OLD_UNOWN_K] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_K + 500},
+ [SPECIES_OLD_UNOWN_L] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_L + 500},
+ [SPECIES_OLD_UNOWN_M] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_M + 500},
+ [SPECIES_OLD_UNOWN_N] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_N + 500},
+ [SPECIES_OLD_UNOWN_O] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_O + 500},
+ [SPECIES_OLD_UNOWN_P] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_P + 500},
+ [SPECIES_OLD_UNOWN_Q] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_Q + 500},
+ [SPECIES_OLD_UNOWN_R] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_R + 500},
+ [SPECIES_OLD_UNOWN_S] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_S + 500},
+ [SPECIES_OLD_UNOWN_T] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_T + 500},
+ [SPECIES_OLD_UNOWN_U] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_U + 500},
+ [SPECIES_OLD_UNOWN_V] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_V + 500},
+ [SPECIES_OLD_UNOWN_W] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_W + 500},
+ [SPECIES_OLD_UNOWN_X] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_X + 500},
+ [SPECIES_OLD_UNOWN_Y] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_Y + 500},
+ [SPECIES_OLD_UNOWN_Z] = {gMonShinyPalette_DoubleQuestionMark, SPECIES_OLD_UNOWN_Z + 500},
+ [SPECIES_TREECKO] = {gMonShinyPalette_Treecko, SPECIES_TREECKO + 500},
+ [SPECIES_GROVYLE] = {gMonShinyPalette_Grovyle, SPECIES_GROVYLE + 500},
+ [SPECIES_SCEPTILE] = {gMonShinyPalette_Sceptile, SPECIES_SCEPTILE + 500},
+ [SPECIES_TORCHIC] = {gMonShinyPalette_Torchic, SPECIES_TORCHIC + 500},
+ [SPECIES_COMBUSKEN] = {gMonShinyPalette_Combusken, SPECIES_COMBUSKEN + 500},
+ [SPECIES_BLAZIKEN] = {gMonShinyPalette_Blaziken, SPECIES_BLAZIKEN + 500},
+ [SPECIES_MUDKIP] = {gMonShinyPalette_Mudkip, SPECIES_MUDKIP + 500},
+ [SPECIES_MARSHTOMP] = {gMonShinyPalette_Marshtomp, SPECIES_MARSHTOMP + 500},
+ [SPECIES_SWAMPERT] = {gMonShinyPalette_Swampert, SPECIES_SWAMPERT + 500},
+ [SPECIES_POOCHYENA] = {gMonShinyPalette_Poochyena, SPECIES_POOCHYENA + 500},
+ [SPECIES_MIGHTYENA] = {gMonShinyPalette_Mightyena, SPECIES_MIGHTYENA + 500},
+ [SPECIES_ZIGZAGOON] = {gMonShinyPalette_Zigzagoon, SPECIES_ZIGZAGOON + 500},
+ [SPECIES_LINOONE] = {gMonShinyPalette_Linoone, SPECIES_LINOONE + 500},
+ [SPECIES_WURMPLE] = {gMonShinyPalette_Wurmple, SPECIES_WURMPLE + 500},
+ [SPECIES_SILCOON] = {gMonShinyPalette_Silcoon, SPECIES_SILCOON + 500},
+ [SPECIES_BEAUTIFLY] = {gMonShinyPalette_Beautifly, SPECIES_BEAUTIFLY + 500},
+ [SPECIES_CASCOON] = {gMonShinyPalette_Cascoon, SPECIES_CASCOON + 500},
+ [SPECIES_DUSTOX] = {gMonShinyPalette_Dustox, SPECIES_DUSTOX + 500},
+ [SPECIES_LOTAD] = {gMonShinyPalette_Lotad, SPECIES_LOTAD + 500},
+ [SPECIES_LOMBRE] = {gMonShinyPalette_Lombre, SPECIES_LOMBRE + 500},
+ [SPECIES_LUDICOLO] = {gMonShinyPalette_Ludicolo, SPECIES_LUDICOLO + 500},
+ [SPECIES_SEEDOT] = {gMonShinyPalette_Seedot, SPECIES_SEEDOT + 500},
+ [SPECIES_NUZLEAF] = {gMonShinyPalette_Nuzleaf, SPECIES_NUZLEAF + 500},
+ [SPECIES_SHIFTRY] = {gMonShinyPalette_Shiftry, SPECIES_SHIFTRY + 500},
+ [SPECIES_NINCADA] = {gMonShinyPalette_Nincada, SPECIES_NINCADA + 500},
+ [SPECIES_NINJASK] = {gMonShinyPalette_Ninjask, SPECIES_NINJASK + 500},
+ [SPECIES_SHEDINJA] = {gMonShinyPalette_Shedinja, SPECIES_SHEDINJA + 500},
+ [SPECIES_TAILLOW] = {gMonShinyPalette_Taillow, SPECIES_TAILLOW + 500},
+ [SPECIES_SWELLOW] = {gMonShinyPalette_Swellow, SPECIES_SWELLOW + 500},
+ [SPECIES_SHROOMISH] = {gMonShinyPalette_Shroomish, SPECIES_SHROOMISH + 500},
+ [SPECIES_BRELOOM] = {gMonShinyPalette_Breloom, SPECIES_BRELOOM + 500},
+ [SPECIES_SPINDA] = {gMonShinyPalette_Spinda, SPECIES_SPINDA + 500},
+ [SPECIES_WINGULL] = {gMonShinyPalette_Wingull, SPECIES_WINGULL + 500},
+ [SPECIES_PELIPPER] = {gMonShinyPalette_Pelipper, SPECIES_PELIPPER + 500},
+ [SPECIES_SURSKIT] = {gMonShinyPalette_Surskit, SPECIES_SURSKIT + 500},
+ [SPECIES_MASQUERAIN] = {gMonShinyPalette_Masquerain, SPECIES_MASQUERAIN + 500},
+ [SPECIES_WAILMER] = {gMonShinyPalette_Wailmer, SPECIES_WAILMER + 500},
+ [SPECIES_WAILORD] = {gMonShinyPalette_Wailord, SPECIES_WAILORD + 500},
+ [SPECIES_SKITTY] = {gMonShinyPalette_Skitty, SPECIES_SKITTY + 500},
+ [SPECIES_DELCATTY] = {gMonShinyPalette_Delcatty, SPECIES_DELCATTY + 500},
+ [SPECIES_KECLEON] = {gMonShinyPalette_Kecleon, SPECIES_KECLEON + 500},
+ [SPECIES_BALTOY] = {gMonShinyPalette_Baltoy, SPECIES_BALTOY + 500},
+ [SPECIES_CLAYDOL] = {gMonShinyPalette_Claydol, SPECIES_CLAYDOL + 500},
+ [SPECIES_NOSEPASS] = {gMonShinyPalette_Nosepass, SPECIES_NOSEPASS + 500},
+ [SPECIES_TORKOAL] = {gMonShinyPalette_Torkoal, SPECIES_TORKOAL + 500},
+ [SPECIES_SABLEYE] = {gMonShinyPalette_Sableye, SPECIES_SABLEYE + 500},
+ [SPECIES_BARBOACH] = {gMonShinyPalette_Barboach, SPECIES_BARBOACH + 500},
+ [SPECIES_WHISCASH] = {gMonShinyPalette_Whiscash, SPECIES_WHISCASH + 500},
+ [SPECIES_LUVDISC] = {gMonShinyPalette_Luvdisc, SPECIES_LUVDISC + 500},
+ [SPECIES_CORPHISH] = {gMonShinyPalette_Corphish, SPECIES_CORPHISH + 500},
+ [SPECIES_CRAWDAUNT] = {gMonShinyPalette_Crawdaunt, SPECIES_CRAWDAUNT + 500},
+ [SPECIES_FEEBAS] = {gMonShinyPalette_Feebas, SPECIES_FEEBAS + 500},
+ [SPECIES_MILOTIC] = {gMonShinyPalette_Milotic, SPECIES_MILOTIC + 500},
+ [SPECIES_CARVANHA] = {gMonShinyPalette_Carvanha, SPECIES_CARVANHA + 500},
+ [SPECIES_SHARPEDO] = {gMonShinyPalette_Sharpedo, SPECIES_SHARPEDO + 500},
+ [SPECIES_TRAPINCH] = {gMonShinyPalette_Trapinch, SPECIES_TRAPINCH + 500},
+ [SPECIES_VIBRAVA] = {gMonShinyPalette_Vibrava, SPECIES_VIBRAVA + 500},
+ [SPECIES_FLYGON] = {gMonShinyPalette_Flygon, SPECIES_FLYGON + 500},
+ [SPECIES_MAKUHITA] = {gMonShinyPalette_Makuhita, SPECIES_MAKUHITA + 500},
+ [SPECIES_HARIYAMA] = {gMonShinyPalette_Hariyama, SPECIES_HARIYAMA + 500},
+ [SPECIES_ELECTRIKE] = {gMonShinyPalette_Electrike, SPECIES_ELECTRIKE + 500},
+ [SPECIES_MANECTRIC] = {gMonShinyPalette_Manectric, SPECIES_MANECTRIC + 500},
+ [SPECIES_NUMEL] = {gMonShinyPalette_Numel, SPECIES_NUMEL + 500},
+ [SPECIES_CAMERUPT] = {gMonShinyPalette_Camerupt, SPECIES_CAMERUPT + 500},
+ [SPECIES_SPHEAL] = {gMonShinyPalette_Spheal, SPECIES_SPHEAL + 500},
+ [SPECIES_SEALEO] = {gMonShinyPalette_Sealeo, SPECIES_SEALEO + 500},
+ [SPECIES_WALREIN] = {gMonShinyPalette_Walrein, SPECIES_WALREIN + 500},
+ [SPECIES_CACNEA] = {gMonShinyPalette_Cacnea, SPECIES_CACNEA + 500},
+ [SPECIES_CACTURNE] = {gMonShinyPalette_Cacturne, SPECIES_CACTURNE + 500},
+ [SPECIES_SNORUNT] = {gMonShinyPalette_Snorunt, SPECIES_SNORUNT + 500},
+ [SPECIES_GLALIE] = {gMonShinyPalette_Glalie, SPECIES_GLALIE + 500},
+ [SPECIES_LUNATONE] = {gMonShinyPalette_Lunatone, SPECIES_LUNATONE + 500},
+ [SPECIES_SOLROCK] = {gMonShinyPalette_Solrock, SPECIES_SOLROCK + 500},
+ [SPECIES_AZURILL] = {gMonShinyPalette_Azurill, SPECIES_AZURILL + 500},
+ [SPECIES_SPOINK] = {gMonShinyPalette_Spoink, SPECIES_SPOINK + 500},
+ [SPECIES_GRUMPIG] = {gMonShinyPalette_Grumpig, SPECIES_GRUMPIG + 500},
+ [SPECIES_PLUSLE] = {gMonShinyPalette_Plusle, SPECIES_PLUSLE + 500},
+ [SPECIES_MINUN] = {gMonShinyPalette_Minun, SPECIES_MINUN + 500},
+ [SPECIES_MAWILE] = {gMonShinyPalette_Mawile, SPECIES_MAWILE + 500},
+ [SPECIES_MEDITITE] = {gMonShinyPalette_Meditite, SPECIES_MEDITITE + 500},
+ [SPECIES_MEDICHAM] = {gMonShinyPalette_Medicham, SPECIES_MEDICHAM + 500},
+ [SPECIES_SWABLU] = {gMonShinyPalette_Swablu, SPECIES_SWABLU + 500},
+ [SPECIES_ALTARIA] = {gMonShinyPalette_Altaria, SPECIES_ALTARIA + 500},
+ [SPECIES_WYNAUT] = {gMonShinyPalette_Wynaut, SPECIES_WYNAUT + 500},
+ [SPECIES_DUSKULL] = {gMonShinyPalette_Duskull, SPECIES_DUSKULL + 500},
+ [SPECIES_DUSCLOPS] = {gMonShinyPalette_Dusclops, SPECIES_DUSCLOPS + 500},
+ [SPECIES_ROSELIA] = {gMonShinyPalette_Roselia, SPECIES_ROSELIA + 500},
+ [SPECIES_SLAKOTH] = {gMonShinyPalette_Slakoth, SPECIES_SLAKOTH + 500},
+ [SPECIES_VIGOROTH] = {gMonShinyPalette_Vigoroth, SPECIES_VIGOROTH + 500},
+ [SPECIES_SLAKING] = {gMonShinyPalette_Slaking, SPECIES_SLAKING + 500},
+ [SPECIES_GULPIN] = {gMonShinyPalette_Gulpin, SPECIES_GULPIN + 500},
+ [SPECIES_SWALOT] = {gMonShinyPalette_Swalot, SPECIES_SWALOT + 500},
+ [SPECIES_TROPIUS] = {gMonShinyPalette_Tropius, SPECIES_TROPIUS + 500},
+ [SPECIES_WHISMUR] = {gMonShinyPalette_Whismur, SPECIES_WHISMUR + 500},
+ [SPECIES_LOUDRED] = {gMonShinyPalette_Loudred, SPECIES_LOUDRED + 500},
+ [SPECIES_EXPLOUD] = {gMonShinyPalette_Exploud, SPECIES_EXPLOUD + 500},
+ [SPECIES_CLAMPERL] = {gMonShinyPalette_Clamperl, SPECIES_CLAMPERL + 500},
+ [SPECIES_HUNTAIL] = {gMonShinyPalette_Huntail, SPECIES_HUNTAIL + 500},
+ [SPECIES_GOREBYSS] = {gMonShinyPalette_Gorebyss, SPECIES_GOREBYSS + 500},
+ [SPECIES_ABSOL] = {gMonShinyPalette_Absol, SPECIES_ABSOL + 500},
+ [SPECIES_SHUPPET] = {gMonShinyPalette_Shuppet, SPECIES_SHUPPET + 500},
+ [SPECIES_BANETTE] = {gMonShinyPalette_Banette, SPECIES_BANETTE + 500},
+ [SPECIES_SEVIPER] = {gMonShinyPalette_Seviper, SPECIES_SEVIPER + 500},
+ [SPECIES_ZANGOOSE] = {gMonShinyPalette_Zangoose, SPECIES_ZANGOOSE + 500},
+ [SPECIES_RELICANTH] = {gMonShinyPalette_Relicanth, SPECIES_RELICANTH + 500},
+ [SPECIES_ARON] = {gMonShinyPalette_Aron, SPECIES_ARON + 500},
+ [SPECIES_LAIRON] = {gMonShinyPalette_Lairon, SPECIES_LAIRON + 500},
+ [SPECIES_AGGRON] = {gMonShinyPalette_Aggron, SPECIES_AGGRON + 500},
+ [SPECIES_CASTFORM] = {gMonShinyPalette_Castform, SPECIES_CASTFORM + 500},
+ [SPECIES_VOLBEAT] = {gMonShinyPalette_Volbeat, SPECIES_VOLBEAT + 500},
+ [SPECIES_ILLUMISE] = {gMonShinyPalette_Illumise, SPECIES_ILLUMISE + 500},
+ [SPECIES_LILEEP] = {gMonShinyPalette_Lileep, SPECIES_LILEEP + 500},
+ [SPECIES_CRADILY] = {gMonShinyPalette_Cradily, SPECIES_CRADILY + 500},
+ [SPECIES_ANORITH] = {gMonShinyPalette_Anorith, SPECIES_ANORITH + 500},
+ [SPECIES_ARMALDO] = {gMonShinyPalette_Armaldo, SPECIES_ARMALDO + 500},
+ [SPECIES_RALTS] = {gMonShinyPalette_Ralts, SPECIES_RALTS + 500},
+ [SPECIES_KIRLIA] = {gMonShinyPalette_Kirlia, SPECIES_KIRLIA + 500},
+ [SPECIES_GARDEVOIR] = {gMonShinyPalette_Gardevoir, SPECIES_GARDEVOIR + 500},
+ [SPECIES_BAGON] = {gMonShinyPalette_Bagon, SPECIES_BAGON + 500},
+ [SPECIES_SHELGON] = {gMonShinyPalette_Shelgon, SPECIES_SHELGON + 500},
+ [SPECIES_SALAMENCE] = {gMonShinyPalette_Salamence, SPECIES_SALAMENCE + 500},
+ [SPECIES_BELDUM] = {gMonShinyPalette_Beldum, SPECIES_BELDUM + 500},
+ [SPECIES_METANG] = {gMonShinyPalette_Metang, SPECIES_METANG + 500},
+ [SPECIES_METAGROSS] = {gMonShinyPalette_Metagross, SPECIES_METAGROSS + 500},
+ [SPECIES_REGIROCK] = {gMonShinyPalette_Regirock, SPECIES_REGIROCK + 500},
+ [SPECIES_REGICE] = {gMonShinyPalette_Regice, SPECIES_REGICE + 500},
+ [SPECIES_REGISTEEL] = {gMonShinyPalette_Registeel, SPECIES_REGISTEEL + 500},
+ [SPECIES_KYOGRE] = {gMonShinyPalette_Kyogre, SPECIES_KYOGRE + 500},
+ [SPECIES_GROUDON] = {gMonShinyPalette_Groudon, SPECIES_GROUDON + 500},
+ [SPECIES_RAYQUAZA] = {gMonShinyPalette_Rayquaza, SPECIES_RAYQUAZA + 500},
+ [SPECIES_LATIAS] = {gMonShinyPalette_Latias, SPECIES_LATIAS + 500},
+ [SPECIES_LATIOS] = {gMonShinyPalette_Latios, SPECIES_LATIOS + 500},
+ [SPECIES_JIRACHI] = {gMonShinyPalette_Jirachi, SPECIES_JIRACHI + 500},
+ [SPECIES_DEOXYS] = {gMonShinyPalette_Deoxys, SPECIES_DEOXYS + 500},
+ [SPECIES_CHIMECHO] = {gMonShinyPalette_Chimecho, SPECIES_CHIMECHO + 500},
+ [SPECIES_EGG] = {gMonPalette_Egg, SPECIES_EGG + 500},
+ [SPECIES_UNOWN_B] = {gMonShinyPalette_Unown, SPECIES_UNOWN_B + 500},
+ [SPECIES_UNOWN_C] = {gMonShinyPalette_Unown, SPECIES_UNOWN_C + 500},
+ [SPECIES_UNOWN_D] = {gMonShinyPalette_Unown, SPECIES_UNOWN_D + 500},
+ [SPECIES_UNOWN_E] = {gMonShinyPalette_Unown, SPECIES_UNOWN_E + 500},
+ [SPECIES_UNOWN_F] = {gMonShinyPalette_Unown, SPECIES_UNOWN_F + 500},
+ [SPECIES_UNOWN_G] = {gMonShinyPalette_Unown, SPECIES_UNOWN_G + 500},
+ [SPECIES_UNOWN_H] = {gMonShinyPalette_Unown, SPECIES_UNOWN_H + 500},
+ [SPECIES_UNOWN_I] = {gMonShinyPalette_Unown, SPECIES_UNOWN_I + 500},
+ [SPECIES_UNOWN_J] = {gMonShinyPalette_Unown, SPECIES_UNOWN_J + 500},
+ [SPECIES_UNOWN_K] = {gMonShinyPalette_Unown, SPECIES_UNOWN_K + 500},
+ [SPECIES_UNOWN_L] = {gMonShinyPalette_Unown, SPECIES_UNOWN_L + 500},
+ [SPECIES_UNOWN_M] = {gMonShinyPalette_Unown, SPECIES_UNOWN_M + 500},
+ [SPECIES_UNOWN_N] = {gMonShinyPalette_Unown, SPECIES_UNOWN_N + 500},
+ [SPECIES_UNOWN_O] = {gMonShinyPalette_Unown, SPECIES_UNOWN_O + 500},
+ [SPECIES_UNOWN_P] = {gMonShinyPalette_Unown, SPECIES_UNOWN_P + 500},
+ [SPECIES_UNOWN_Q] = {gMonShinyPalette_Unown, SPECIES_UNOWN_Q + 500},
+ [SPECIES_UNOWN_R] = {gMonShinyPalette_Unown, SPECIES_UNOWN_R + 500},
+ [SPECIES_UNOWN_S] = {gMonShinyPalette_Unown, SPECIES_UNOWN_S + 500},
+ [SPECIES_UNOWN_T] = {gMonShinyPalette_Unown, SPECIES_UNOWN_T + 500},
+ [SPECIES_UNOWN_U] = {gMonShinyPalette_Unown, SPECIES_UNOWN_U + 500},
+ [SPECIES_UNOWN_V] = {gMonShinyPalette_Unown, SPECIES_UNOWN_V + 500},
+ [SPECIES_UNOWN_W] = {gMonShinyPalette_Unown, SPECIES_UNOWN_W + 500},
+ [SPECIES_UNOWN_X] = {gMonShinyPalette_Unown, SPECIES_UNOWN_X + 500},
+ [SPECIES_UNOWN_Y] = {gMonShinyPalette_Unown, SPECIES_UNOWN_Y + 500},
+ [SPECIES_UNOWN_Z] = {gMonShinyPalette_Unown, SPECIES_UNOWN_Z + 500},
+ [SPECIES_UNOWN_EMARK] = {gMonShinyPalette_Unown, SPECIES_UNOWN_EMARK + 500},
+ [SPECIES_UNOWN_QMARK] = {gMonShinyPalette_Unown, SPECIES_UNOWN_QMARK + 500},
};
diff --git a/src/data/text/item_descriptions.h b/src/data/text/item_descriptions.h
index 8683978d7..ff0b680dd 100644
--- a/src/data/text/item_descriptions.h
+++ b/src/data/text/item_descriptions.h
@@ -1,7 +1,5 @@
-#ifndef POKEEMERALD_DATA_TEXT_ITEM_DESCRIPTIONS_H
-#define POKEEMERALD_DATA_TEXT_ITEM_DESCRIPTIONS_H
const u8 gDummyItemDescription[] = _("?????");
-//Pokeballs
+// Pokeballs
const u8 gMasterBallItemDescription[] = _("The best BALL that\ncatches a POKéMON\nwithout fail.");
const u8 gUltraBallItemDescription[] = _("A better BALL with\na higher catch rate\nthan a GREAT BALL.");
const u8 gGreatBallItemDescription[] = _("A good BALL with a\nhigher catch rate\nthan a POKé BALL.");
@@ -14,7 +12,7 @@ const u8 gRepeatBallItemDescription[] = _("A BALL that works\nbetter on POKéMON
const u8 gTimerBallItemDescription[] = _("A BALL that gains\npower in battles\ntaking many turns.");
const u8 gLuxuryBallItemDescription[] = _("A cozy BALL that\nmakes POKéMON\nmore friendly.");
const u8 gPremierBallItemDescription[] = _("A rare BALL made\nin commemoration\nof some event.");
-//Medicine
+// Medicine
const u8 gPotionItemDescription[] = _("Restores the HP of\na POKéMON by\n20 points.");
const u8 gAntidoteItemDescription[] = _("Heals a poisoned\nPOKéMON.");
const u8 gBurnHealItemDescription[] = _("Heals POKéMON\nof a burn.");
@@ -48,14 +46,14 @@ const u8 gBlackFluteItemDescription[] = _("A glass flute that\nkeeps away wild\n
const u8 gWhiteFluteItemDescription[] = _("A glass flute that\nlures wild POKéMON.");
const u8 gBerryJuiceItemDescription[] = _("A 100% pure juice\nthat restores HP\nby 20 points.");
const u8 gSacredAshItemDescription[] = _("Fully revives and\nrestores all\nfainted POKéMON.");
-//Collectibles
+// Collectibles
const u8 gShoalSaltItemDescription[] = _("Salt obtained from\ndeep inside the\nSHOAL CAVE.");
const u8 gShoalShellItemDescription[] = _("A seashell found\ndeep inside the\nSHOAL CAVE.");
const u8 gRedShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply.");
const u8 gBlueShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply.");
const u8 gYellowShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply.");
const u8 gGreenShardItemDescription[] = _("A shard from an\nancient item. Can\nbe sold cheaply.");
-//Vitamins
+// Vitamins
const u8 gHPUpItemDescription[] = _("Raises the base HP\nof one POKéMON.");
const u8 gProteinItemDescription[] = _("Raises the base\nATTACK stat of one\nPOKéMON.");
const u8 gIronItemDescription[] = _("Raises the base\nDEFENSE stat of\none POKéMON.");
@@ -65,7 +63,7 @@ const u8 gRareCandyItemDescription[] = _("Raises the level\nof a POKéMON by\non
const u8 gPPUpItemDescription[] = _("Raises the maximum\nPP of a selected\nmove.");
const u8 gZincItemDescription[] = _("Raises the base\nSP. DEF stat of one\nPOKéMON.");
const u8 gPPMaxItemDescription[] = _("Raises the PP of a\nmove to its maximum\npoints.");
-//Battle items
+// Battle items
const u8 gGuardSpecItemDescription[] = _("Prevents stat\nreduction when\nused in battle.");
const u8 gDireHitItemDescription[] = _("Raises the\ncritical-hit ratio\nduring one battle.");
const u8 gXAttackItemDescription[] = _("Raises the stat\nATTACK during one\nbattle.");
@@ -75,19 +73,19 @@ const u8 gXAccuracyItemDescription[] = _("Raises accuracy\nof attack moves\nduri
const u8 gXSpecialItemDescription[] = _("Raises the stat\nSP. ATK during one\nbattle.");
const u8 gPokeDollItemDescription[] = _("Use to flee from\nany battle with\na wild POKéMON.");
const u8 gFluffyTailItemDescription[] = _("Use to flee from\nany battle with\na wild POKéMON.");
-//Field items
+// Field items
const u8 gSuperRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 200\nsteps.");
const u8 gMaxRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 250\nsteps.");
const u8 gEscapeRopeItemDescription[] = _("Use to escape\ninstantly from a\ncave or a dungeon.");
const u8 gRepelItemDescription[] = _("Repels weak wild\nPOKéMON for 100\nsteps.");
-//Evolution stones
+// Evolution stones
const u8 gSunStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
const u8 gMoonStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
const u8 gFireStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
const u8 gThunderStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
const u8 gWaterStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
const u8 gLeafStoneItemDescription[] = _("Makes certain\nspecies of POKéMON\nevolve.");
-//Valuable items
+// Valuable items
const u8 gTinyMushroomItemDescription[] = _("A plain mushroom\nthat would sell\nat a cheap price.");
const u8 gBigMushroomItemDescription[] = _("A rare mushroom\nthat would sell at a\nhigh price.");
const u8 gPearlItemDescription[] = _("A pretty pearl\nthat would sell at a\ncheap price.");
@@ -96,7 +94,7 @@ const u8 gStardustItemDescription[] = _("Beautiful red sand.\nCan be sold at a\n
const u8 gStarPieceItemDescription[] = _("A red gem shard.\nIt would sell for a\nvery high price.");
const u8 gNuggetItemDescription[] = _("A nugget of pure\ngold. Can be sold at\na high price.");
const u8 gHeartScaleItemDescription[] = _("A lovely scale.\nIt is coveted by\ncollectors.");
-//Mail
+// Mail
const u8 gOrangeMailItemDescription[] = _("A ZIGZAGOON-print\nMAIL to be held by\na POKéMON.");
const u8 gHarborMailItemDescription[] = _("A WINGULL-print\nMAIL to be held by\na POKéMON.");
const u8 gGlitterMailItemDescription[] = _("A PIKACHU-print\nMAIL to be held by\na POKéMON.");
@@ -109,7 +107,7 @@ const u8 gTropicMailItemDescription[] = _("A BELLOSSOM-print\nMAIL to be held by
const u8 gDreamMailItemDescription[] = _("MAIL featuring a\nsketch of the\nholding POKéMON.");
const u8 gFabMailItemDescription[] = _("A gorgeous-print\nMAIL to be held\nby a POKéMON.");
const u8 gRetroMailItemDescription[] = _("MAIL featuring the\ndrawings of three\nPOKéMON.");
-//Berries
+// Berries
const u8 gCheriBerryItemDescription[] = _("A hold item that\nheals paralysis\nin battle.");
const u8 gChestoBerryItemDescription[] = _("A hold item that\nawakens POKéMON\nin battle.");
const u8 gPechaBerryItemDescription[] = _("A hold item that\nheals poisoning\nin battle.");
@@ -153,7 +151,7 @@ const u8 gApicotBerryItemDescription[] = _("A hold item that\nraises SP. DEF in\
const u8 gLansatBerryItemDescription[] = _("A hold item that\nups the critical-\nhit rate in a pinch.");
const u8 gStarfBerryItemDescription[] = _("A hold item that\nsharply boosts a\nstat in a pinch.");
const u8 gEnigmaBerryItemDescription[] = _("{POKEBLOCK} ingredient.\nPlant in loamy soil\nto grow a mystery.");
-//Hold items
+// Hold items
const u8 gBrightPowderItemDescription[] = _("A hold item that\ncasts a glare to\nreduce accuracy.");
const u8 gWhiteHerbItemDescription[] = _("A hold item that\nrestores any\nlowered stat.");
const u8 gMachoBraceItemDescription[] = _("A hold item that\npromotes growth,\nbut reduces SPEED.");
@@ -206,7 +204,7 @@ const u8 gBlueScarfItemDescription[] = _("A hold item that\nraises BEAUTY in\nCO
const u8 gPinkScarfItemDescription[] = _("A hold item that\nraises CUTE in\nCONTESTS.");
const u8 gGreenScarfItemDescription[] = _("A hold item that\nraises SMART in\nCONTESTS.");
const u8 gYellowScarfItemDescription[] = _("A hold item that\nraises TOUGH in\nCONTESTS.");
-//Key items
+// Key items
const u8 gMachBikeItemDescription[] = _("A folding bicycle\nthat doubles your\nspeed or better.");
const u8 gCoinCaseItemDescription[] = _("A case that holds\nup to 9,999 COINS.");
const u8 gItemfinderItemDescription[] = _("A device that\nsignals an invisible\nitem by sound.");
@@ -236,7 +234,7 @@ const u8 gStorageKeyItemDescription[] = _("The key to the\nstorage inside the\nA
const u8 gRootFossilItemDescription[] = _("A fossil of an\nancient, seafloor-\ndwelling POKéMON.");
const u8 gClawFossilItemDescription[] = _("A fossil of an\nancient, seafloor-\ndwelling POKéMON.");
const u8 gDevonScopeItemDescription[] = _("A device by DEVON\nthat signals any\nunseeable POKéMON.");
-//TMs/HMs
+// TMs/HMs
const u8 gTM01ItemDescription[] = _("Powerful, but makes\nthe user flinch if\nhit by the foe.");
const u8 gTM02ItemDescription[] = _("Hooks and slashes\nthe foe with long,\nsharp claws.");
const u8 gTM03ItemDescription[] = _("Generates an\nultrasonic wave\nthat may confuse.");
@@ -296,7 +294,7 @@ const u8 gHM05ItemDescription[] = _("Looses a powerful\nblast of light that\nred
const u8 gHM06ItemDescription[] = _("A rock-crushingly\ntough attack that\nmay lower DEFENSE.");
const u8 gHM07ItemDescription[] = _("Attacks the foe\nwith enough power\nto climb waterfalls.");
const u8 gHM08ItemDescription[] = _("Dives underwater\nthe 1st turn, then\nattacks next turn.");
-//FireRed/LeafGreen key items
+// FireRed/LeafGreen key items
const u8 gOaksParcelItemDescription[] = _("A parcel for PROF.\nOAK from a POKéMON\nMART’s clerk.");
const u8 gPokeFluteItemDescription[] = _("A sweet-sounding\nflute that awakens\nPOKéMON.");
const u8 gSecretKeyItemDescription[] = _("The key to the\nCINNABAR ISLAND\nGYM’s entrance.");
@@ -323,7 +321,6 @@ const u8 gAuroraTicketItemDescription[] = _("A ticket required\nto board the shi
const u8 gPowderJarItemDescription[] = _("Stores BERRY\nPOWDER made using\na BERRY CRUSHER.");
const u8 gRubyItemDescription[] = _("An exquisite, red-\nglowing gem that\nsymbolizes passion.");
const u8 gSapphireItemDescription[] = _("A brilliant blue gem\nthat symbolizes\nhonesty.");
-//Emerald-specific key items
+// Emerald-specific key items
const u8 gMagmaEmblemItemDescription[] = _("A medal-like item in\nthe same shape as\nTEAM MAGMA’s mark.");
const u8 gOldSeaMapItemDescription[] = _("A faded sea chart\nthat shows the way\nto a certain island.");
-#endif // POKEEMERALD_DATA_TEXT_ITEM_DESCRIPTIONS_H
diff --git a/src/data/text/trainer_class_names.h b/src/data/text/trainer_class_names.h
index 7a126a128..dd750b354 100644
--- a/src/data/text/trainer_class_names.h
+++ b/src/data/text/trainer_class_names.h
@@ -1,73 +1,68 @@
-#ifndef GUARD_TRAINER_CLASS_NAMES_H
-#define GUARD_TRAINER_CLASS_NAMES_H
-
const u8 gTrainerClassNames[][13] = {
- _("{PKMN} TRAINER"),
- _("{PKMN} TRAINER"),
- _("HIKER"),
- _("TEAM AQUA"),
- _("{PKMN} BREEDER"),
- _("COOLTRAINER"),
- _("BIRD KEEPER"),
- _("COLLECTOR"),
- _("SWIMMER♂"),
- _("TEAM MAGMA"),
- _("EXPERT"),
- _("AQUA ADMIN"),
- _("BLACK BELT"),
- _("AQUA LEADER"),
- _("HEX MANIAC"),
- _("AROMA LADY"),
- _("RUIN MANIAC"),
- _("INTERVIEWER"),
- _("TUBER"),
- _("TUBER"),
- _("LADY"),
- _("BEAUTY"),
- _("RICH BOY"),
- _("POKéMANIAC"),
- _("GUITARIST"),
- _("KINDLER"),
- _("CAMPER"),
- _("PICNICKER"),
- _("BUG MANIAC"),
- _("PSYCHIC"),
- _("GENTLEMAN"),
- _("ELITE FOUR"),
- _("LEADER"),
- _("SCHOOL KID"),
- _("SR. AND JR."),
- _("WINSTRATE"),
- _("POKéFAN"),
- _("YOUNGSTER"),
- _("CHAMPION"),
- _("FISHERMAN"),
- _("TRIATHLETE"),
- _("DRAGON TAMER"),
- _("NINJA BOY"),
- _("BATTLE GIRL"),
- _("PARASOL LADY"),
- _("SWIMMER♀"),
- _("TWINS"),
- _("SAILOR"),
- _("COOLTRAINER"),
- _("MAGMA ADMIN"),
- _("{PKMN} TRAINER"),
- _("BUG CATCHER"),
- _("{PKMN} RANGER"),
- _("MAGMA LEADER"),
- _("LASS"),
- _("YOUNG COUPLE"),
- _("OLD COUPLE"),
- _("SIS AND BRO"),
- _("SALON MAIDEN"),
- _("DOME ACE"),
- _("PALACE MAVEN"),
- _("ARENA TYCOON"),
- _("FACTORY HEAD"),
- _("PIKE QUEEN"),
- _("PYRAMID KING"),
- _("{PKMN} TRAINER"),
+ [TRAINER_CLASS_PKMN_TRAINER_1] = _("{PKMN} TRAINER"),
+ [TRAINER_CLASS_PKMN_TRAINER_2] = _("{PKMN} TRAINER"),
+ [TRAINER_CLASS_HIKER] = _("HIKER"),
+ [TRAINER_CLASS_TEAM_AQUA] = _("TEAM AQUA"),
+ [TRAINER_CLASS_PKMN_BREEDER] = _("{PKMN} BREEDER"),
+ [TRAINER_CLASS_COOLTRAINER] = _("COOLTRAINER"),
+ [TRAINER_CLASS_BIRD_KEEPER] = _("BIRD KEEPER"),
+ [TRAINER_CLASS_COLLECTOR] = _("COLLECTOR"),
+ [TRAINER_CLASS_SWIMMER_M] = _("SWIMMER♂"),
+ [TRAINER_CLASS_TEAM_MAGMA] = _("TEAM MAGMA"),
+ [TRAINER_CLASS_EXPERT] = _("EXPERT"),
+ [TRAINER_CLASS_AQUA_ADMIN] = _("AQUA ADMIN"),
+ [TRAINER_CLASS_BLACK_BELT] = _("BLACK BELT"),
+ [TRAINER_CLASS_AQUA_LEADER] = _("AQUA LEADER"),
+ [TRAINER_CLASS_HEX_MANIAC] = _("HEX MANIAC"),
+ [TRAINER_CLASS_AROMA_LADY] = _("AROMA LADY"),
+ [TRAINER_CLASS_RUIN_MANIAC] = _("RUIN MANIAC"),
+ [TRAINER_CLASS_INTERVIEWER] = _("INTERVIEWER"),
+ [TRAINER_CLASS_TUBER_F] = _("TUBER"),
+ [TRAINER_CLASS_TUBER_M] = _("TUBER"),
+ [TRAINER_CLASS_LADY] = _("LADY"),
+ [TRAINER_CLASS_BEAUTY] = _("BEAUTY"),
+ [TRAINER_CLASS_RICH_BOY] = _("RICH BOY"),
+ [TRAINER_CLASS_POKEMANIAC] = _("POKéMANIAC"),
+ [TRAINER_CLASS_GUITARIST] = _("GUITARIST"),
+ [TRAINER_CLASS_KINDLER] = _("KINDLER"),
+ [TRAINER_CLASS_CAMPER] = _("CAMPER"),
+ [TRAINER_CLASS_PICNICKER] = _("PICNICKER"),
+ [TRAINER_CLASS_BUG_MANIAC] = _("BUG MANIAC"),
+ [TRAINER_CLASS_PSYCHIC] = _("PSYCHIC"),
+ [TRAINER_CLASS_GENTLEMAN] = _("GENTLEMAN"),
+ [TRAINER_CLASS_ELITE_FOUR] = _("ELITE FOUR"),
+ [TRAINER_CLASS_LEADER] = _("LEADER"),
+ [TRAINER_CLASS_SCHOOL_KID] = _("SCHOOL KID"),
+ [TRAINER_CLASS_SR_AND_JR] = _("SR. AND JR."),
+ [TRAINER_CLASS_WINSTRATE] = _("WINSTRATE"),
+ [TRAINER_CLASS_POKEFAN] = _("POKéFAN"),
+ [TRAINER_CLASS_YOUNGSTER] = _("YOUNGSTER"),
+ [TRAINER_CLASS_CHAMPION] = _("CHAMPION"),
+ [TRAINER_CLASS_FISHERMAN] = _("FISHERMAN"),
+ [TRAINER_CLASS_TRIATHLETE] = _("TRIATHLETE"),
+ [TRAINER_CLASS_DRAGON_TAMER] = _("DRAGON TAMER"),
+ [TRAINER_CLASS_NINJA_BOY] = _("NINJA BOY"),
+ [TRAINER_CLASS_BATTLE_GIRL] = _("BATTLE GIRL"),
+ [TRAINER_CLASS_PARASOL_LADY] = _("PARASOL LADY"),
+ [TRAINER_CLASS_SWIMMER_F] = _("SWIMMER♀"),
+ [TRAINER_CLASS_TWINS] = _("TWINS"),
+ [TRAINER_CLASS_SAILOR] = _("SAILOR"),
+ [TRAINER_CLASS_COOLTRAINER_UNUSED] = _("COOLTRAINER"),
+ [TRAINER_CLASS_MAGMA_ADMIN] = _("MAGMA ADMIN"),
+ [TRAINER_CLASS_PKMN_TRAINER_3] = _("{PKMN} TRAINER"),
+ [TRAINER_CLASS_BUG_CATCHER] = _("BUG CATCHER"),
+ [TRAINER_CLASS_PKMN_RANGER] = _("{PKMN} RANGER"),
+ [TRAINER_CLASS_MAGMA_LEADER] = _("MAGMA LEADER"),
+ [TRAINER_CLASS_LASS] = _("LASS"),
+ [TRAINER_CLASS_YOUNG_COUPLE] = _("YOUNG COUPLE"),
+ [TRAINER_CLASS_OLD_COUPLE] = _("OLD COUPLE"),
+ [TRAINER_CLASS_SIS_AND_BRO] = _("SIS AND BRO"),
+ [TRAINER_CLASS_SALON_MAIDEN] = _("SALON MAIDEN"),
+ [TRAINER_CLASS_DOME_ACE] = _("DOME ACE"),
+ [TRAINER_CLASS_PALACE_MAVEN] = _("PALACE MAVEN"),
+ [TRAINER_CLASS_ARENA_TYCOON] = _("ARENA TYCOON"),
+ [TRAINER_CLASS_FACTORY_HEAD] = _("FACTORY HEAD"),
+ [TRAINER_CLASS_PIKE_QUEEN] = _("PIKE QUEEN"),
+ [TRAINER_CLASS_PYRAMID_KING] = _("PYRAMID KING"),
+ [TRAINER_CLASS_PKMN_TRAINER_4] = _("{PKMN} TRAINER"),
};
-
-#endif
diff --git a/src/data/trainer_graphics/back_pic_tables.h b/src/data/trainer_graphics/back_pic_tables.h
index 3e74902d8..8d4e27694 100644
--- a/src/data/trainer_graphics/back_pic_tables.h
+++ b/src/data/trainer_graphics/back_pic_tables.h
@@ -10,16 +10,19 @@ const struct MonCoords gTrainerBackPicCoords[] =
{8, 4},
};
+// this table goes functionally unused, since none of these pics are compressed
+// and the place they would get extracted to gets overwritten later anyway
+// the casts are so they'll play nice with the strict struct definition
const struct CompressedSpriteSheet gTrainerBackPicTable[] =
{
- gTrainerBackPic_Brendan, 0x2000, 0,
- gTrainerBackPic_May, 0x2000, 1,
- gTrainerBackPic_Red, 0x2800, 2,
- gTrainerBackPic_Leaf, 0x2800, 3,
- gTrainerBackPic_RubySapphireBrendan, 0x2000, 4,
- gTrainerBackPic_RubySapphireMay, 0x2000, 5,
- gTrainerBackPic_Wally, 0x2000, 6,
- gTrainerBackPic_Steven, 0x2000, 7,
+ (const u32 *)gTrainerBackPic_Brendan, 0x2000, 0,
+ (const u32 *)gTrainerBackPic_May, 0x2000, 1,
+ (const u32 *)gTrainerBackPic_Red, 0x2800, 2,
+ (const u32 *)gTrainerBackPic_Leaf, 0x2800, 3,
+ (const u32 *)gTrainerBackPic_RubySapphireBrendan, 0x2000, 4,
+ (const u32 *)gTrainerBackPic_RubySapphireMay, 0x2000, 5,
+ (const u32 *)gTrainerBackPic_Wally, 0x2000, 6,
+ (const u32 *)gTrainerBackPic_Steven, 0x2000, 7,
};
const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] =
diff --git a/src/data/trainer_graphics/front_pic_anims.h b/src/data/trainer_graphics/front_pic_anims.h
index b72726506..371e5a300 100644
--- a/src/data/trainer_graphics/front_pic_anims.h
+++ b/src/data/trainer_graphics/front_pic_anims.h
@@ -1,3 +1,5 @@
+#include "constants/trainers.h"
+
const union AnimCmd *const gTrainerFrontAnims_Hiker[] ={
gAnimCmd_General_Frame0,
};
@@ -202,11 +204,11 @@ const union AnimCmd *const gTrainerFrontAnims_SrAndJr[] ={
gAnimCmd_General_Frame0,
};
-const union AnimCmd *const gTrainerFrontAnims_WinstrateM[] ={
+const union AnimCmd *const gTrainerFrontAnims_PokefanM[] ={
gAnimCmd_General_Frame0,
};
-const union AnimCmd *const gTrainerFrontAnims_WinstrateF[] ={
+const union AnimCmd *const gTrainerFrontAnims_PokefanF[] ={
gAnimCmd_General_Frame0,
};
@@ -372,97 +374,97 @@ const union AnimCmd *const gTrainerFrontAnims_RubySapphireMay[] ={
const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[] =
{
- gTrainerFrontAnims_Hiker, // TRAINER_PIC_HIKER
- gTrainerFrontAnims_AquaGruntM, // TRAINER_PIC_AQUA_GRUNT_M
- gTrainerFrontAnims_PokemonBreederF, // TRAINER_PIC_POKEMON_BREEDER_F
- gTrainerFrontAnims_CoolTrainerM, // TRAINER_PIC_COOL_TRAINER_M
- gTrainerFrontAnims_BirdKeeper, // TRAINER_PIC_BIRD_KEEPER
- gTrainerFrontAnims_Collector, // TRAINER_PIC_COLLECTOR
- gTrainerFrontAnims_AquaGruntF, // TRAINER_PIC_AQUA_GRUNT_F
- gTrainerFrontAnims_SwimmerM, // TRAINER_PIC_SWIMMER_M
- gTrainerFrontAnims_MagmaGruntM, // TRAINER_PIC_MAGMA_GRUNT_M
- gTrainerFrontAnims_ExpertM, // TRAINER_PIC_EXPERT_M
- gTrainerFrontAnims_AquaAdminM, // TRAINER_PIC_AQUA_ADMIN_M
- gTrainerFrontAnims_BlackBelt, // TRAINER_PIC_BLACK_BELT
- gTrainerFrontAnims_AquaAdminF, // TRAINER_PIC_AQUA_ADMIN_F
- gTrainerFrontAnims_AquaLeaderArchie, // TRAINER_PIC_AQUA_LEADER_ARCHIE
- gTrainerFrontAnims_HexManiac, // TRAINER_PIC_HEX_MANIAC
- gTrainerFrontAnims_AromaLady, // TRAINER_PIC_AROMA_LADY
- gTrainerFrontAnims_RuinManiac, // TRAINER_PIC_RUIN_MANIAC
- gTrainerFrontAnims_Interviewer, // TRAINER_PIC_INTERVIEWER
- gTrainerFrontAnims_TuberF, // TRAINER_PIC_TUBER_F
- gTrainerFrontAnims_TuberM, // TRAINER_PIC_TUBER_M
- gTrainerFrontAnims_CoolTrainerF, // TRAINER_PIC_COOL_TRAINER_F
- gTrainerFrontAnims_Lady, // TRAINER_PIC_LADY
- gTrainerFrontAnims_Beauty, // TRAINER_PIC_BEAUTY
- gTrainerFrontAnims_RichBoy, // TRAINER_PIC_RICH_BOY
- gTrainerFrontAnims_ExpertF, // TRAINER_PIC_EXPERT_F
- gTrainerFrontAnims_Pokemaniac, // TRAINER_PIC_POKEMANIAC
- gTrainerFrontAnims_MagmaGruntF, // TRAINER_PIC_MAGMA_GRUNT_F
- gTrainerFrontAnims_Guitarist, // TRAINER_PIC_GUITARIST
- gTrainerFrontAnims_Kindler, // TRAINER_PIC_KINDLER
- gTrainerFrontAnims_Camper, // TRAINER_PIC_CAMPER
- gTrainerFrontAnims_Picnicker, // TRAINER_PIC_PICNICKER
- gTrainerFrontAnims_BugManiac, // TRAINER_PIC_BUG_MANIAC
- gTrainerFrontAnims_PokemonBreederM, // TRAINER_PIC_POKEMON_BREEDER_M
- gTrainerFrontAnims_PsychicM, // TRAINER_PIC_PSYCHIC_M
- gTrainerFrontAnims_PsychicF, // TRAINER_PIC_PSYCHIC_F
- gTrainerFrontAnims_Gentleman, // TRAINER_PIC_GENTLEMAN
- gTrainerFrontAnims_EliteFourSidney, // TRAINER_PIC_ELITE_FOUR_SIDNEY
- gTrainerFrontAnims_EliteFourPhoebe, // TRAINER_PIC_ELITE_FOUR_PHOEBE
- gTrainerFrontAnims_EliteFourGlacia, // TRAINER_PIC_ELITE_FOUR_GLACIA
- gTrainerFrontAnims_EliteFourDrake, // TRAINER_PIC_ELITE_FOUR_DRAKE
- gTrainerFrontAnims_LeaderRoxanne, // TRAINER_PIC_LEADER_ROXANNE
- gTrainerFrontAnims_LeaderBrawly, // TRAINER_PIC_LEADER_BRAWLY
- gTrainerFrontAnims_LeaderWattson, // TRAINER_PIC_LEADER_WATTSON
- gTrainerFrontAnims_LeaderFlannery, // TRAINER_PIC_LEADER_FLANNERY
- gTrainerFrontAnims_LeaderNorman, // TRAINER_PIC_LEADER_NORMAN
- gTrainerFrontAnims_LeaderWinona, // TRAINER_PIC_LEADER_WINONA
- gTrainerFrontAnims_LeaderTateAndLiza, // TRAINER_PIC_LEADER_TATE_AND_LIZA
- gTrainerFrontAnims_LeaderJuan, // TRAINER_PIC_LEADER_JUAN
- gTrainerFrontAnims_SchoolKidM, // TRAINER_PIC_SCHOOL_KID_M
- gTrainerFrontAnims_SchoolKidF, // TRAINER_PIC_SCHOOL_KID_F
- gTrainerFrontAnims_SrAndJr, // TRAINER_PIC_SR_AND_JR
- gTrainerFrontAnims_WinstrateM, // TRAINER_PIC_WINSTRATE_M
- gTrainerFrontAnims_WinstrateF, // TRAINER_PIC_WINSTRATE_F
- gTrainerFrontAnims_Youngster, // TRAINER_PIC_YOUNGSTER
- gTrainerFrontAnims_ChampionWallace, // TRAINER_PIC_CHAMPION_WALLACE
- gTrainerFrontAnims_Fisherman, // TRAINER_PIC_FISHERMAN
- gTrainerFrontAnims_CyclingTriathleteM, // TRAINER_PIC_CYCLING_TRIATHLETE_M
- gTrainerFrontAnims_CyclingTriathleteF, // TRAINER_PIC_CYCLING_TRIATHLETE_F
- gTrainerFrontAnims_RunningTriathleteM, // TRAINER_PIC_RUNNING_TRIATHLETE_M
- gTrainerFrontAnims_RunningTriathleteF, // TRAINER_PIC_RUNNING_TRIATHLETE_F
- gTrainerFrontAnims_SwimmingTriathleteM, // TRAINER_PIC_SWIMMING_TRIATHLETE_M
- gTrainerFrontAnims_SwimmingTriathleteF, // TRAINER_PIC_SWIMMING_TRIATHLETE_F
- gTrainerFrontAnims_DragonTamer, // TRAINER_PIC_DRAGON_TAMER
- gTrainerFrontAnims_NinjaBoy, // TRAINER_PIC_NINJA_BOY
- gTrainerFrontAnims_BattleGirl, // TRAINER_PIC_BATTLE_GIRL
- gTrainerFrontAnims_ParasolLady, // TRAINER_PIC_PARASOL_LADY
- gTrainerFrontAnims_SwimmerF, // TRAINER_PIC_SWIMMER_F
- gTrainerFrontAnims_Twins, // TRAINER_PIC_TWINS
- gTrainerFrontAnims_Sailor, // TRAINER_PIC_SAILOR
- gTrainerFrontAnims_MagmaAdmin, // TRAINER_PIC_MAGMA_ADMIN
- gTrainerFrontAnims_Wally, // TRAINER_PIC_WALLY
- gTrainerFrontAnims_Brendan, // TRAINER_PIC_BRENDAN
- gTrainerFrontAnims_May, // TRAINER_PIC_MAY
- gTrainerFrontAnims_BugCatcher, // TRAINER_PIC_BUG_CATCHER
- gTrainerFrontAnims_PokemonRangerM, // TRAINER_PIC_POKEMON_RANGER_M
- gTrainerFrontAnims_PokemonRangerF, // TRAINER_PIC_POKEMON_RANGER_F
- gTrainerFrontAnims_MagmaLeaderMaxie, // TRAINER_PIC_MAGMA_LEADER_MAXIE
- gTrainerFrontAnims_Lass, // TRAINER_PIC_LASS
- gTrainerFrontAnims_YoungCouple, // TRAINER_PIC_YOUNG_COUPLE
- gTrainerFrontAnims_OldCouple, // TRAINER_PIC_OLD_COUPLE
- gTrainerFrontAnims_SisAndBro, // TRAINER_PIC_SIS_AND_BRO
- gTrainerFrontAnims_Steven, // TRAINER_PIC_STEVEN
- gTrainerFrontAnims_SalonMaidenAnabel, // TRAINER_PIC_SALON_MAIDEN_ANABEL
- gTrainerFrontAnims_DomeAceTucker, // TRAINER_PIC_DOME_ACE_TUCKER
- gTrainerFrontAnims_PalaceMavenSpenser, // TRAINER_PIC_PALACE_MAVEN_SPENSER
- gTrainerFrontAnims_ArenaTycoonGreta, // TRAINER_PIC_ARENA_TYCOON_GRETA
- gTrainerFrontAnims_FactoryHeadNoland, // TRAINER_PIC_FACTORY_HEAD_NOLAND
- gTrainerFrontAnims_PikeQueenLucy, // TRAINER_PIC_PIKE_QUEEN_LUCY
- gTrainerFrontAnims_PyramidKingBrandon, // TRAINER_PIC_PYRAMID_KING_BRANDON
- gTrainerFrontAnims_Red, // TRAINER_PIC_RED
- gTrainerFrontAnims_Leaf, // TRAINER_PIC_LEAF
- gTrainerFrontAnims_RubySapphireBrendan, // TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN
- gTrainerFrontAnims_RubySapphireMay, // TRAINER_PIC_RUBY_SAPPHIRE_MAY
+ [TRAINER_PIC_HIKER] = gTrainerFrontAnims_Hiker,
+ [TRAINER_PIC_AQUA_GRUNT_M] = gTrainerFrontAnims_AquaGruntM,
+ [TRAINER_PIC_POKEMON_BREEDER_F] = gTrainerFrontAnims_PokemonBreederF,
+ [TRAINER_PIC_COOLTRAINER_M] = gTrainerFrontAnims_CoolTrainerM,
+ [TRAINER_PIC_BIRD_KEEPER] = gTrainerFrontAnims_BirdKeeper,
+ [TRAINER_PIC_COLLECTOR] = gTrainerFrontAnims_Collector,
+ [TRAINER_PIC_AQUA_GRUNT_F] = gTrainerFrontAnims_AquaGruntF,
+ [TRAINER_PIC_SWIMMER_M] = gTrainerFrontAnims_SwimmerM,
+ [TRAINER_PIC_MAGMA_GRUNT_M] = gTrainerFrontAnims_MagmaGruntM,
+ [TRAINER_PIC_EXPERT_M] = gTrainerFrontAnims_ExpertM,
+ [TRAINER_PIC_AQUA_ADMIN_M] = gTrainerFrontAnims_AquaAdminM,
+ [TRAINER_PIC_BLACK_BELT] = gTrainerFrontAnims_BlackBelt,
+ [TRAINER_PIC_AQUA_ADMIN_F] = gTrainerFrontAnims_AquaAdminF,
+ [TRAINER_PIC_AQUA_LEADER_ARCHIE] = gTrainerFrontAnims_AquaLeaderArchie,
+ [TRAINER_PIC_HEX_MANIAC] = gTrainerFrontAnims_HexManiac,
+ [TRAINER_PIC_AROMA_LADY] = gTrainerFrontAnims_AromaLady,
+ [TRAINER_PIC_RUIN_MANIAC] = gTrainerFrontAnims_RuinManiac,
+ [TRAINER_PIC_INTERVIEWER] = gTrainerFrontAnims_Interviewer,
+ [TRAINER_PIC_TUBER_F] = gTrainerFrontAnims_TuberF,
+ [TRAINER_PIC_TUBER_M] = gTrainerFrontAnims_TuberM,
+ [TRAINER_PIC_COOLTRAINER_F] = gTrainerFrontAnims_CoolTrainerF,
+ [TRAINER_PIC_LADY] = gTrainerFrontAnims_Lady,
+ [TRAINER_PIC_BEAUTY] = gTrainerFrontAnims_Beauty,
+ [TRAINER_PIC_RICH_BOY] = gTrainerFrontAnims_RichBoy,
+ [TRAINER_PIC_EXPERT_F] = gTrainerFrontAnims_ExpertF,
+ [TRAINER_PIC_POKEMANIAC] = gTrainerFrontAnims_Pokemaniac,
+ [TRAINER_PIC_MAGMA_GRUNT_F] = gTrainerFrontAnims_MagmaGruntF,
+ [TRAINER_PIC_GUITARIST] = gTrainerFrontAnims_Guitarist,
+ [TRAINER_PIC_KINDLER] = gTrainerFrontAnims_Kindler,
+ [TRAINER_PIC_CAMPER] = gTrainerFrontAnims_Camper,
+ [TRAINER_PIC_PICNICKER] = gTrainerFrontAnims_Picnicker,
+ [TRAINER_PIC_BUG_MANIAC] = gTrainerFrontAnims_BugManiac,
+ [TRAINER_PIC_POKEMON_BREEDER_M] = gTrainerFrontAnims_PokemonBreederM,
+ [TRAINER_PIC_PSYCHIC_M] = gTrainerFrontAnims_PsychicM,
+ [TRAINER_PIC_PSYCHIC_F] = gTrainerFrontAnims_PsychicF,
+ [TRAINER_PIC_GENTLEMAN] = gTrainerFrontAnims_Gentleman,
+ [TRAINER_PIC_ELITE_FOUR_SIDNEY] = gTrainerFrontAnims_EliteFourSidney,
+ [TRAINER_PIC_ELITE_FOUR_PHOEBE] = gTrainerFrontAnims_EliteFourPhoebe,
+ [TRAINER_PIC_ELITE_FOUR_GLACIA] = gTrainerFrontAnims_EliteFourGlacia,
+ [TRAINER_PIC_ELITE_FOUR_DRAKE] = gTrainerFrontAnims_EliteFourDrake,
+ [TRAINER_PIC_LEADER_ROXANNE] = gTrainerFrontAnims_LeaderRoxanne,
+ [TRAINER_PIC_LEADER_BRAWLY] = gTrainerFrontAnims_LeaderBrawly,
+ [TRAINER_PIC_LEADER_WATTSON] = gTrainerFrontAnims_LeaderWattson,
+ [TRAINER_PIC_LEADER_FLANNERY] = gTrainerFrontAnims_LeaderFlannery,
+ [TRAINER_PIC_LEADER_NORMAN] = gTrainerFrontAnims_LeaderNorman,
+ [TRAINER_PIC_LEADER_WINONA] = gTrainerFrontAnims_LeaderWinona,
+ [TRAINER_PIC_LEADER_TATE_AND_LIZA] = gTrainerFrontAnims_LeaderTateAndLiza,
+ [TRAINER_PIC_LEADER_JUAN] = gTrainerFrontAnims_LeaderJuan,
+ [TRAINER_PIC_SCHOOL_KID_M] = gTrainerFrontAnims_SchoolKidM,
+ [TRAINER_PIC_SCHOOL_KID_F] = gTrainerFrontAnims_SchoolKidF,
+ [TRAINER_PIC_SR_AND_JR] = gTrainerFrontAnims_SrAndJr,
+ [TRAINER_PIC_POKEFAN_M] = gTrainerFrontAnims_PokefanM,
+ [TRAINER_PIC_POKEFAN_F] = gTrainerFrontAnims_PokefanF,
+ [TRAINER_PIC_YOUNGSTER] = gTrainerFrontAnims_Youngster,
+ [TRAINER_PIC_CHAMPION_WALLACE] = gTrainerFrontAnims_ChampionWallace,
+ [TRAINER_PIC_FISHERMAN] = gTrainerFrontAnims_Fisherman,
+ [TRAINER_PIC_CYCLING_TRIATHLETE_M] = gTrainerFrontAnims_CyclingTriathleteM,
+ [TRAINER_PIC_CYCLING_TRIATHLETE_F] = gTrainerFrontAnims_CyclingTriathleteF,
+ [TRAINER_PIC_RUNNING_TRIATHLETE_M] = gTrainerFrontAnims_RunningTriathleteM,
+ [TRAINER_PIC_RUNNING_TRIATHLETE_F] = gTrainerFrontAnims_RunningTriathleteF,
+ [TRAINER_PIC_SWIMMING_TRIATHLETE_M] = gTrainerFrontAnims_SwimmingTriathleteM,
+ [TRAINER_PIC_SWIMMING_TRIATHLETE_F] = gTrainerFrontAnims_SwimmingTriathleteF,
+ [TRAINER_PIC_DRAGON_TAMER] = gTrainerFrontAnims_DragonTamer,
+ [TRAINER_PIC_NINJA_BOY] = gTrainerFrontAnims_NinjaBoy,
+ [TRAINER_PIC_BATTLE_GIRL] = gTrainerFrontAnims_BattleGirl,
+ [TRAINER_PIC_PARASOL_LADY] = gTrainerFrontAnims_ParasolLady,
+ [TRAINER_PIC_SWIMMER_F] = gTrainerFrontAnims_SwimmerF,
+ [TRAINER_PIC_TWINS] = gTrainerFrontAnims_Twins,
+ [TRAINER_PIC_SAILOR] = gTrainerFrontAnims_Sailor,
+ [TRAINER_PIC_MAGMA_ADMIN] = gTrainerFrontAnims_MagmaAdmin,
+ [TRAINER_PIC_WALLY] = gTrainerFrontAnims_Wally,
+ [TRAINER_PIC_BRENDAN] = gTrainerFrontAnims_Brendan,
+ [TRAINER_PIC_MAY] = gTrainerFrontAnims_May,
+ [TRAINER_PIC_BUG_CATCHER] = gTrainerFrontAnims_BugCatcher,
+ [TRAINER_PIC_POKEMON_RANGER_M] = gTrainerFrontAnims_PokemonRangerM,
+ [TRAINER_PIC_POKEMON_RANGER_F] = gTrainerFrontAnims_PokemonRangerF,
+ [TRAINER_PIC_MAGMA_LEADER_MAXIE] = gTrainerFrontAnims_MagmaLeaderMaxie,
+ [TRAINER_PIC_LASS] = gTrainerFrontAnims_Lass,
+ [TRAINER_PIC_YOUNG_COUPLE] = gTrainerFrontAnims_YoungCouple,
+ [TRAINER_PIC_OLD_COUPLE] = gTrainerFrontAnims_OldCouple,
+ [TRAINER_PIC_SIS_AND_BRO] = gTrainerFrontAnims_SisAndBro,
+ [TRAINER_PIC_STEVEN] = gTrainerFrontAnims_Steven,
+ [TRAINER_PIC_SALON_MAIDEN_ANABEL] = gTrainerFrontAnims_SalonMaidenAnabel,
+ [TRAINER_PIC_DOME_ACE_TUCKER] = gTrainerFrontAnims_DomeAceTucker,
+ [TRAINER_PIC_PALACE_MAVEN_SPENSER] = gTrainerFrontAnims_PalaceMavenSpenser,
+ [TRAINER_PIC_ARENA_TYCOON_GRETA] = gTrainerFrontAnims_ArenaTycoonGreta,
+ [TRAINER_PIC_FACTORY_HEAD_NOLAND] = gTrainerFrontAnims_FactoryHeadNoland,
+ [TRAINER_PIC_PIKE_QUEEN_LUCY] = gTrainerFrontAnims_PikeQueenLucy,
+ [TRAINER_PIC_PYRAMID_KING_BRANDON] = gTrainerFrontAnims_PyramidKingBrandon,
+ [TRAINER_PIC_RED] = gTrainerFrontAnims_Red,
+ [TRAINER_PIC_LEAF] = gTrainerFrontAnims_Leaf,
+ [TRAINER_PIC_RS_BRENDAN] = gTrainerFrontAnims_RubySapphireBrendan,
+ [TRAINER_PIC_RS_MAY] = gTrainerFrontAnims_RubySapphireMay,
};
diff --git a/src/data/trainer_graphics/front_pic_tables.h b/src/data/trainer_graphics/front_pic_tables.h
index db80c9d4f..d8f8c2492 100644
--- a/src/data/trainer_graphics/front_pic_tables.h
+++ b/src/data/trainer_graphics/front_pic_tables.h
@@ -148,8 +148,8 @@ const struct CompressedSpriteSheet gTrainerFrontPicTable[] =
gTrainerFrontPic_SchoolKidM, 0x800, 48,
gTrainerFrontPic_SchoolKidF, 0x800, 49,
gTrainerFrontPic_SrAndJr, 0x1000, 50,
- gTrainerFrontPic_WinstrateM, 0x1000, 51,
- gTrainerFrontPic_WinstrateF, 0x800, 52,
+ gTrainerFrontPic_PokefanM, 0x1000, 51,
+ gTrainerFrontPic_PokefanF, 0x800, 52,
gTrainerFrontPic_Youngster, 0x800, 53,
gTrainerFrontPic_ChampionWallace, 0x1000, 54,
gTrainerFrontPic_Fisherman, 0x800, 55,
@@ -245,8 +245,8 @@ const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[] =
gTrainerPalette_SchoolKidM, 48,
gTrainerPalette_SchoolKidF, 49,
gTrainerPalette_SrAndJr, 50,
- gTrainerPalette_WinstrateM, 51,
- gTrainerPalette_WinstrateF, 52,
+ gTrainerPalette_PokefanM, 51,
+ gTrainerPalette_PokefanF, 52,
gTrainerPalette_Youngster, 53,
gTrainerPalette_ChampionWallace, 54,
gTrainerPalette_Fisherman, 55,
diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h
index 4993186d2..20a6ec75d 100644
--- a/src/data/trainer_parties.h
+++ b/src/data/trainer_parties.h
@@ -12434,4 +12434,3 @@ const struct TrainerMonNoItemDefaultMoves gTrainerParty_May16[] = {
.species = SPECIES_KYOGRE,
}
};
-
diff --git a/src/data/trainers.h b/src/data/trainers.h
index 214a72df1..7ec297eb3 100644
--- a/src/data/trainers.h
+++ b/src/data/trainers.h
@@ -156,9 +156,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_MARCEL] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("MARCEL"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -534,9 +534,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_FELIX] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("FELIX"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -800,7 +800,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_LOLA_1] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_TUBER_1,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_F,
.trainerName = _("LOLA"),
@@ -814,7 +814,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_AUSTINA] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_TUBER_1,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_F,
.trainerName = _("AUSTINA"),
@@ -828,7 +828,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_GWEN] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_TUBER_1,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_F,
.trainerName = _("GWEN"),
@@ -842,7 +842,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_LOLA_2] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_TUBER_1,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_F,
.trainerName = _("LOLA"),
@@ -856,7 +856,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_LOLA_3] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_TUBER_1,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_F,
.trainerName = _("LOLA"),
@@ -870,7 +870,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_LOLA_4] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_TUBER_1,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_F,
.trainerName = _("LOLA"),
@@ -884,7 +884,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_LOLA_5] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_TUBER_1,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_F,
.trainerName = _("LOLA"),
@@ -898,7 +898,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_RICKY_1] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_TUBER_2,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_M,
.trainerName = _("RICKY"),
@@ -912,7 +912,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_SIMON] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_TUBER_2,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_M,
.trainerName = _("SIMON"),
@@ -926,7 +926,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_CHARLIE] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_TUBER_2,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_M,
.trainerName = _("CHARLIE"),
@@ -940,7 +940,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_RICKY_2] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_TUBER_2,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_M,
.trainerName = _("RICKY"),
@@ -954,7 +954,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_RICKY_3] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_TUBER_2,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_M,
.trainerName = _("RICKY"),
@@ -968,7 +968,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_RICKY_4] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_TUBER_2,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_M,
.trainerName = _("RICKY"),
@@ -982,7 +982,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_RICKY_5] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_TUBER_2,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_M,
.trainerName = _("RICKY"),
@@ -996,9 +996,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_RANDALL] =
{
.partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("RANDALL"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1010,9 +1010,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_PARKER] =
{
.partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("PARKER"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1024,9 +1024,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_GEORGE] =
{
.partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("GEORGE"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1038,9 +1038,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_BERKE] =
{
.partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("BERKE"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1052,9 +1052,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_BRAXTON] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("BRAXTON"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1066,9 +1066,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_VINCENT] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("VINCENT"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1080,9 +1080,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_LEROY] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("LEROY"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1094,9 +1094,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_WILTON_1] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("WILTON"),
.items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1108,9 +1108,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_EDGAR] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("EDGAR"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1122,9 +1122,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_ALBERT] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("ALBERT"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1136,9 +1136,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_SAMUEL] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("SAMUEL"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1150,9 +1150,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_VITO] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("VITO"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1164,9 +1164,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_OWEN] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("OWEN"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1178,9 +1178,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_WILTON_2] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("WILTON"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1192,9 +1192,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_WILTON_3] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("WILTON"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1206,9 +1206,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_WILTON_4] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("WILTON"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1220,9 +1220,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_WILTON_5] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("WILTON"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1234,9 +1234,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_WARREN] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("WARREN"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1248,9 +1248,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_MARY] =
{
.partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("MARY"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1262,9 +1262,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_ALEXIA] =
{
.partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("ALEXIA"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1276,9 +1276,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_JODY] =
{
.partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("JODY"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1290,9 +1290,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_WENDY] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("WENDY"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1304,9 +1304,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_KEIRA] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("KEIRA"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1318,9 +1318,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_BROOKE_1] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("BROOKE"),
.items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1332,9 +1332,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_JENNIFER] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("JENNIFER"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1346,9 +1346,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_HOPE] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("HOPE"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1360,9 +1360,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_SHANNON] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("SHANNON"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1374,9 +1374,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_MICHELLE] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("MICHELLE"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1388,9 +1388,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_CAROLINE] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("CAROLINE"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1402,9 +1402,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_JULIE] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("JULIE"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1416,9 +1416,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_BROOKE_2] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("BROOKE"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1430,9 +1430,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_BROOKE_3] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("BROOKE"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1444,9 +1444,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_BROOKE_4] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("BROOKE"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -1458,9 +1458,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_BROOKE_5] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("BROOKE"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -4092,7 +4092,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_WINSTRATE,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_M,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
.trainerName = _("VICTOR"),
.items = {},
.doubleBattle = FALSE,
@@ -4106,7 +4106,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_M,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
.trainerName = _("MIGUEL"),
.items = {},
.doubleBattle = FALSE,
@@ -4120,7 +4120,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_M,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
.trainerName = _("COLTON"),
.items = {},
.doubleBattle = FALSE,
@@ -4134,7 +4134,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_M,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
.trainerName = _("MIGUEL"),
.items = {},
.doubleBattle = FALSE,
@@ -4148,7 +4148,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_M,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
.trainerName = _("MIGUEL"),
.items = {},
.doubleBattle = FALSE,
@@ -4162,7 +4162,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_M,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
.trainerName = _("MIGUEL"),
.items = {},
.doubleBattle = FALSE,
@@ -4176,7 +4176,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_M,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
.trainerName = _("MIGUEL"),
.items = {},
.doubleBattle = FALSE,
@@ -4190,7 +4190,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_WINSTRATE,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_F,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
.trainerName = _("VICTORIA"),
.items = {},
.doubleBattle = FALSE,
@@ -4204,7 +4204,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_F,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
.trainerName = _("VANESSA"),
.items = {},
.doubleBattle = FALSE,
@@ -4218,7 +4218,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_F,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
.trainerName = _("BETHANY"),
.items = {},
.doubleBattle = FALSE,
@@ -4232,7 +4232,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_F,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
.trainerName = _("ISABEL"),
.items = {},
.doubleBattle = FALSE,
@@ -4246,7 +4246,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_F,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
.trainerName = _("ISABEL"),
.items = {},
.doubleBattle = FALSE,
@@ -4260,7 +4260,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_F,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
.trainerName = _("ISABEL"),
.items = {},
.doubleBattle = FALSE,
@@ -4274,7 +4274,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_F,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
.trainerName = _("ISABEL"),
.items = {},
.doubleBattle = FALSE,
@@ -4288,7 +4288,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_F,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
.trainerName = _("ISABEL"),
.items = {},
.doubleBattle = FALSE,
@@ -4538,9 +4538,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_QUINCY] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("QUINCY"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -4552,9 +4552,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_KATELYNN] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("KATELYNN"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -5840,9 +5840,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_DIANNE] =
{
.partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("DIANNE"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -5854,7 +5854,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_JANI] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_TUBER_1,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_F,
.trainerName = _("JANI"),
@@ -7032,7 +7032,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_F,
+ .trainerPic = TRAINER_PIC_POKEFAN_F,
.trainerName = _("ANNIKA"),
.items = {},
.doubleBattle = FALSE,
@@ -7044,9 +7044,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_JAZMYN] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_2,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER_UNUSED,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("JAZMYN"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -7114,9 +7114,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_MARLEY] =
{
.partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("MARLEY"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -7562,9 +7562,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_MITCHELL] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("MITCHELL"),
.items = {},
.doubleBattle = FALSE,
@@ -7646,9 +7646,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_HALLE] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("HALLE"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -8080,9 +8080,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_ATHENA] =
{
.partyFlags = F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("ATHENA"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -8374,9 +8374,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_JONATHAN] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("JONATHAN"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -9074,9 +9074,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_GERALD] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("GERALD"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -9382,9 +9382,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_ALEXA] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("ALEXA"),
.items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -9396,9 +9396,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_RUBEN] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("RUBEN"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -9760,7 +9760,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_HAILEY] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_TUBER_1,
+ .trainerClass = TRAINER_CLASS_TUBER_F,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_F,
.trainerName = _("HAILEY"),
@@ -9774,7 +9774,7 @@ const struct Trainer gTrainers[] = {
[TRAINER_CHANDLER] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_TUBER_2,
+ .trainerClass = TRAINER_CLASS_TUBER_M,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL,
.trainerPic = TRAINER_PIC_TUBER_M,
.trainerName = _("CHANDLER"),
@@ -9790,7 +9790,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = F_TRAINER_PARTY_HELD_ITEM,
.trainerClass = TRAINER_CLASS_POKEFAN,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS,
- .trainerPic = TRAINER_PIC_WINSTRATE_M,
+ .trainerPic = TRAINER_PIC_POKEFAN_M,
.trainerName = _("KALEB"),
.items = {},
.doubleBattle = FALSE,
@@ -10264,9 +10264,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_DARCY] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("DARCY"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -10376,9 +10376,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_CAROLINA] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("CAROLINA"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -10670,9 +10670,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_LEONEL] =
{
.partyFlags = F_TRAINER_PARTY_CUSTOM_MOVESET,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_M,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_M,
.trainerName = _("LEONEL"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -10740,9 +10740,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_CRISTIN_1] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("CRISTIN"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -11594,9 +11594,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_CRISTIN_2] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("CRISTIN"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -11608,9 +11608,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_CRISTIN_3] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("CRISTIN"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -11622,9 +11622,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_CRISTIN_4] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("CRISTIN"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -11636,9 +11636,9 @@ const struct Trainer gTrainers[] = {
[TRAINER_CRISTIN_5] =
{
.partyFlags = 0,
- .trainerClass = TRAINER_CLASS_COOLTRAINER_1,
+ .trainerClass = TRAINER_CLASS_COOLTRAINER,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL,
- .trainerPic = TRAINER_PIC_COOL_TRAINER_F,
+ .trainerPic = TRAINER_PIC_COOLTRAINER_F,
.trainerName = _("CRISTIN"),
.items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE},
.doubleBattle = FALSE,
@@ -11946,7 +11946,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = 0,
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_4,
.encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE,
- .trainerPic = TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN,
+ .trainerPic = TRAINER_PIC_RS_BRENDAN,
.trainerName = _("BRENDAN"),
.items = {},
.doubleBattle = FALSE,
@@ -11960,7 +11960,7 @@ const struct Trainer gTrainers[] = {
.partyFlags = 0,
.trainerClass = TRAINER_CLASS_PKMN_TRAINER_4,
.encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE,
- .trainerPic = TRAINER_PIC_RUBY_SAPPHIRE_MAY,
+ .trainerPic = TRAINER_PIC_RS_MAY,
.trainerName = _("MAY"),
.items = {},
.doubleBattle = FALSE,
diff --git a/src/data2b.c b/src/data2b.c
index 50cdee323..022903375 100644
--- a/src/data2b.c
+++ b/src/data2b.c
@@ -2,10 +2,11 @@
#include "data2.h"
#include "graphics.h"
#include "malloc.h"
+#include "constants/species.h"
const u16 gUnknown_082FF1D8[] = INCBIN_U16("graphics/link/minigame_digits.gbapal");
-const u8 gUnknown_082FF1F8[] = INCBIN_U8("graphics/link/minigame_digits.4bpp.lz");
-const u8 gUnknown_082FF2B8[] = INCBIN_U8("graphics/link/minigame_digits2.4bpp.lz");
+const u32 gUnknown_082FF1F8[] = INCBIN_U32("graphics/link/minigame_digits.4bpp.lz");
+const u32 gUnknown_082FF2B8[] = INCBIN_U32("graphics/link/minigame_digits2.4bpp.lz");
const struct SpriteFrameImage gUnknown_082FF3A8[] =
{
diff --git a/src/daycare.c b/src/daycare.c
index c80a8b743..2356b36f5 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -63,7 +63,7 @@ EWRAM_DATA static u16 sHatchedEggMotherMoves[4] = {0};
static const struct WindowTemplate sDaycareLevelMenuWindowTemplate =
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 15,
.tilemapTop = 1,
.width = 14,
@@ -1206,17 +1206,17 @@ static void GetDaycareLevelMenuLevelText(struct DayCare *daycare, u8 *dest)
static void DaycareAddTextPrinter(u8 windowId, const u8 *text, u32 x, u32 y)
{
- struct TextSubPrinter printer;
+ struct TextPrinterTemplate printer;
- printer.current_text_offset = text;
+ printer.currentChar = text;
printer.windowId = windowId;
printer.fontId = 1;
printer.x = x;
printer.y = y;
printer.currentX = x;
printer.currentY = y;
- printer.fontColor_l = 0;
- gTextFlags.flag_1 = 0;
+ printer.unk = 0;
+ gTextFlags.useAlternateDownArrow = 0;
printer.letterSpacing = 0;
printer.lineSpacing = 1;
printer.fgColor = 2;
diff --git a/src/decompress.c b/src/decompress.c
index 83a9db0b6..da1df436b 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -12,12 +12,12 @@ extern const struct CompressedSpriteSheet gMonBackPicTable[];
static void DuplicateDeoxysTiles(void *pointer, s32 species);
-void LZDecompressWram(const void *src, void *dest)
+void LZDecompressWram(const u32 *src, void *dest)
{
LZ77UnCompWram(src, dest);
}
-void LZDecompressVram(const void *src, void *dest)
+void LZDecompressVram(const u32 *src, void *dest)
{
LZ77UnCompVram(src, dest);
}
@@ -459,9 +459,10 @@ _08034964:\n\
.syntax divided");
}
-u32 GetDecompressedDataSize(const u8 *ptr)
+u32 GetDecompressedDataSize(const u32 *ptr)
{
- return (ptr[3] << 16) | (ptr[2] << 8) | (ptr[1]);
+ const u8 *ptr8 = (const u8 *)ptr;
+ return (ptr8[3] << 16) | (ptr8[2] << 8) | (ptr8[1]);
}
bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src)
diff --git a/src/decoration.c b/src/decoration.c
index 796cc794a..eb85b4f5c 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -145,7 +145,7 @@ void sub_8129020(u8 taskId);
void sub_81292D0(struct Sprite *sprite);
void sub_81292E8(struct Sprite *sprite);
u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor);
-const u8 *GetDecorationIconPicOrPalette(u16 decor, u8 mode);
+const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode);
bool8 sub_81299AC(u8 taskId);
void sub_8129ABC(u8 taskId);
void sub_8129B34(u8 taskId);
@@ -217,7 +217,7 @@ void (*const SecretBasePC_SelectedDecorActions[][2])(u8 taskId) = {
const struct WindowTemplate gUnknown_085A6B90[4] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 18,
@@ -226,7 +226,7 @@ const struct WindowTemplate gUnknown_085A6B90[4] =
.baseBlock = 0x0001
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 13,
@@ -235,7 +235,7 @@ const struct WindowTemplate gUnknown_085A6B90[4] =
.baseBlock = 0x0091
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 17,
.tilemapTop = 1,
.width = 12,
@@ -244,7 +244,7 @@ const struct WindowTemplate gUnknown_085A6B90[4] =
.baseBlock = 0x017b
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 16,
.tilemapTop = 13,
.width = 13,
@@ -520,7 +520,7 @@ void sub_8126B80(u8 taskId)
if (!gPaletteFade.active)
{
menuPos = GetMenuCursorPos();
- switch (ProcessMenuInput())
+ switch (Menu_ProcessInput())
{
default:
PlaySE(SE_SELECT);
@@ -710,7 +710,7 @@ void sub_8127088(u8 taskId)
if (!gPaletteFade.active)
{
- input = ProcessMenuInput();
+ input = Menu_ProcessInput();
switch (input)
{
case -1:
@@ -1347,12 +1347,12 @@ void sub_8128060(u8 taskId)
void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor)
{
- sDecor_CameraSpriteObjectIdx1 = gSprites[gUnknown_03005DD0.spriteId].data[0];
- gUnknown_03005DD0.spriteId = gpu_pal_decompress_alloc_tag_and_upload(data, decor);
- gSprites[gUnknown_03005DD0.spriteId].oam.priority = 1;
- gSprites[gUnknown_03005DD0.spriteId].callback = sub_81292D0;
- gSprites[gUnknown_03005DD0.spriteId].pos1.x = gUnknown_085A7250[data->decoration->shape].x;
- gSprites[gUnknown_03005DD0.spriteId].pos1.y = gUnknown_085A7250[data->decoration->shape].y;
+ sDecor_CameraSpriteObjectIdx1 = gSprites[gFieldCamera.spriteId].data[0];
+ gFieldCamera.spriteId = gpu_pal_decompress_alloc_tag_and_upload(data, decor);
+ gSprites[gFieldCamera.spriteId].oam.priority = 1;
+ gSprites[gFieldCamera.spriteId].callback = sub_81292D0;
+ gSprites[gFieldCamera.spriteId].pos1.x = gUnknown_085A7250[data->decoration->shape].x;
+ gSprites[gFieldCamera.spriteId].pos1.y = gUnknown_085A7250[data->decoration->shape].y;
}
void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphicsDataBuffer *data)
@@ -1374,7 +1374,7 @@ void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphic
}
gSprites[sDecor_CameraSpriteObjectIdx2].oam.priority = 1;
DestroySprite(&gSprites[sDecor_CameraSpriteObjectIdx1]);
- sDecor_CameraSpriteObjectIdx1 = gUnknown_03005DD0.spriteId;
+ sDecor_CameraSpriteObjectIdx1 = gFieldCamera.spriteId;
}
void sub_812826C(u8 taskId)
@@ -1628,7 +1628,7 @@ void sub_8128950(u8 taskId)
void sub_81289D0(u8 taskId)
{
- sub_8197930();
+ DisplayYesNoMenu();
sub_8121F68(taskId, &gUnknown_085A72C4);
}
@@ -1693,7 +1693,7 @@ void sub_8128AAC(u8 taskId)
void sub_8128B80(u8 taskId)
{
- sub_8197930();
+ DisplayYesNoMenu();
sub_8121F68(taskId, &gUnknown_085A72CC);
}
@@ -2076,7 +2076,7 @@ u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor)
return spriteId;
}
-const u8 *GetDecorationIconPicOrPalette(u16 decor, u8 mode)
+const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode)
{
if (decor > 120)
{
@@ -2293,9 +2293,9 @@ bool8 sub_81299AC(u8 taskId)
void SetUpPuttingAwayDecorationPlayerAvatar(void)
{
GetPlayerFacingDirection();
- sDecor_CameraSpriteObjectIdx1 = gSprites[gUnknown_03005DD0.spriteId].data[0];
+ sDecor_CameraSpriteObjectIdx1 = gSprites[gFieldCamera.spriteId].data[0];
sub_812A39C();
- gUnknown_03005DD0.spriteId = CreateSprite(&gUnknown_085A7404, 0x78, 0x50, 0);
+ gFieldCamera.spriteId = CreateSprite(&gUnknown_085A7404, 0x78, 0x50, 0);
if (gSaveBlock2Ptr->playerGender == MALE)
{
sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC1, SpriteCallbackDummy, 0x88, 0x48, 0);
@@ -2306,7 +2306,7 @@ void SetUpPuttingAwayDecorationPlayerAvatar(void)
}
gSprites[sDecor_CameraSpriteObjectIdx2].oam.priority = 1;
DestroySprite(&gSprites[sDecor_CameraSpriteObjectIdx1]);
- sDecor_CameraSpriteObjectIdx1 = gUnknown_03005DD0.spriteId;
+ sDecor_CameraSpriteObjectIdx1 = gFieldCamera.spriteId;
gSprites[sDecor_CameraSpriteObjectIdx1].oam.priority = 1;
}
@@ -2588,7 +2588,7 @@ void sub_812A0E8(u8 taskId)
void sub_812A1A0(u8 taskId)
{
- sub_8197930();
+ DisplayYesNoMenu();
sub_8121F68(taskId, &gUnknown_085A7348);
}
@@ -2601,7 +2601,7 @@ void sub_812A1C0(u8 taskId)
void sub_812A1F0(u8 taskId)
{
- sub_8197930();
+ DisplayYesNoMenu();
sub_8121F68(taskId, &gUnknown_085A7350);
}
@@ -2725,7 +2725,7 @@ void sub_812A3D4(u8 taskId)
void sub_812A458(u8 taskId)
{
- sub_8197930();
+ DisplayYesNoMenu();
sub_8121F68(taskId, &gUnknown_085A741C);
}
diff --git a/src/dewford_trend.c b/src/dewford_trend.c
index 44b42c123..3050ebecf 100644
--- a/src/dewford_trend.c
+++ b/src/dewford_trend.c
@@ -1,13 +1,14 @@
#include "global.h"
#include "dewford_trend.h"
#include "easy_chat.h"
-#include "constants/easy_chat.h"
#include "event_data.h"
#include "link.h"
#include "malloc.h"
#include "random.h"
#include "text.h"
#include "tv.h"
+#include "string_util.h"
+#include "constants/easy_chat.h"
// static functions
static void sub_8122804(struct EasyChatPair *s, u16 b, u8 c);
diff --git a/src/diploma.c b/src/diploma.c
index 8e0b48ed3..f8556eb7d 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -11,19 +11,14 @@
#include "window.h"
#include "string_util.h"
#include "text.h"
+#include "overworld.h"
+#include "menu.h"
-extern void reset_temp_tile_data_buffers(void);
-extern int decompress_and_copy_tile_data_to_vram(u8 bg_id, void *src, int size, u16 offset, u8 mode);
-extern bool8 free_temp_tile_data_buffers_if_possible(void);
-extern void sub_80861E8(void); // rom4
extern bool16 sub_80C0944(void);
-extern void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 *color, s8 speed, u8 *str);
-extern u16 gUnknown_0860F074[];
-
-extern u8 gText_DexNational[];
-extern u8 gText_DexHoenn[];
-extern u8 gText_PokedexDiploma[];
+extern const u8 gText_DexNational[];
+extern const u8 gText_DexHoenn[];
+extern const u8 gText_PokedexDiploma[];
static void MainCB2(void);
static void Task_DiplomaFadeIn(u8);
@@ -34,7 +29,7 @@ static void InitDiplomaBg(void);
static void InitDiplomaWindow(void);
static void PrintDiplomaText(u8 *, u8, u8);
-EWRAM_DATA static void **sDiplomaTilemapPtr = {NULL};
+EWRAM_DATA static u8 *sDiplomaTilemapPtr = NULL;
static void VBlankCB(void)
{
@@ -49,8 +44,8 @@ static const u16 sDiplomaPalettes[][16] =
INCBIN_U16("graphics/misc/diploma_hoenn.gbapal"),
};
-static const u8 sDiplomaTilemap[] = INCBIN_U8("graphics/misc/diploma_map.bin.lz");
-static const u8 sDiplomaTiles[] = INCBIN_U8("graphics/misc/diploma.4bpp.lz");
+static const u32 sDiplomaTilemap[] = INCBIN_U32("graphics/misc/diploma_map.bin.lz");
+static const u32 sDiplomaTiles[] = INCBIN_U32("graphics/misc/diploma.4bpp.lz");
void CB2_ShowDiploma(void)
{
@@ -85,7 +80,7 @@ void CB2_ShowDiploma(void)
decompress_and_copy_tile_data_to_vram(1, &sDiplomaTiles, 0, 0, 0);
while (free_temp_tile_data_buffers_if_possible())
;
- LZDecompressWram(&sDiplomaTilemap, sDiplomaTilemapPtr);
+ LZDecompressWram(sDiplomaTilemap, sDiplomaTilemapPtr);
CopyBgTilemapBufferToVram(1);
DisplayDiplomaText();
BlendPalettes(-1, 16, 0);
@@ -186,7 +181,7 @@ static void InitDiplomaBg(void)
static const struct WindowTemplate sDiplomaWinTemplates[2] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 5,
.tilemapTop = 2,
.width = 20,
diff --git a/src/dragon.c b/src/dragon.c
new file mode 100644
index 000000000..49f1b57c8
--- /dev/null
+++ b/src/dragon.c
@@ -0,0 +1,437 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "scanline_effect.h"
+#include "task.h"
+#include "trig.h"
+#include "constants/rgb.h"
+
+extern u16 gUnknown_0203A100[];
+
+void sub_8113064(struct Sprite *);
+void sub_81131B4(struct Sprite *);
+void sub_8113224(struct Sprite *);
+void sub_8113250(struct Sprite *);
+void sub_81135EC(struct Sprite *);
+static void sub_81132E0(struct Sprite *);
+static void sub_81134B8(u8);
+static void sub_8113574(struct Task *);
+static void sub_811369C(struct Sprite *);
+
+const union AnimCmd gUnknown_08596E60[] =
+{
+ 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 gUnknown_08596E78[] =
+{
+ gUnknown_08596E60,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8596E7C =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08596E78,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8113064,
+};
+
+const union AnimCmd gUnknown_08596E94[] =
+{
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_08596EA4[] =
+{
+ 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 gUnknown_08596EB4[] =
+{
+ gUnknown_08596E94,
+ gUnknown_08596EA4,
+};
+
+const union AffineAnimCmd gUnknown_08596EBC[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 127, 0),
+ AFFINEANIMCMD_FRAME(0xD, 0xD, 0, 100),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08596ED4[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
+ AFFINEANIMCMD_FRAME(0xD, 0xD, 0, 100),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08596EEC[] =
+{
+ gUnknown_08596EBC,
+ gUnknown_08596ED4,
+};
+
+const struct SpriteTemplate gUnknown_08596EF4 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_085249D4,
+ .anims = gUnknown_08596EB4,
+ .images = NULL,
+ .affineAnims = gUnknown_08596EEC,
+ .callback = sub_8113224,
+};
+
+const union AnimCmd gUnknown_08596F0C[] =
+{
+ 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 gUnknown_08596F24[] =
+{
+ gUnknown_08596F0C,
+};
+
+const struct SpriteTemplate gUnknown_08596F28 =
+{
+ .tileTag = ANIM_TAG_FIRE_PLUME,
+ .paletteTag = ANIM_TAG_FIRE_PLUME,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08596F24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81131B4,
+};
+
+const union AnimCmd gUnknown_08596F40[] =
+{
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08596F50[] =
+{
+ gUnknown_08596F40,
+ gUnknown_08596F40,
+};
+
+const union AffineAnimCmd gUnknown_08596F58[] =
+{
+ AFFINEANIMCMD_FRAME(0x64, 0x64, 127, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08596F68[] =
+{
+ AFFINEANIMCMD_FRAME(0x64, 0x64, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08596F78[] =
+{
+ gUnknown_08596F58,
+ gUnknown_08596F68,
+};
+
+const struct SpriteTemplate gUnknown_08596F80 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_085249D4,
+ .anims = gUnknown_08596F50,
+ .images = NULL,
+ .affineAnims = gUnknown_08596F78,
+ .callback = sub_8113224,
+};
+
+const struct SpriteTemplate gUnknown_08596F98 =
+{
+ .tileTag = ANIM_TAG_HOLLOW_ORB,
+ .paletteTag = ANIM_TAG_HOLLOW_ORB,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8113250,
+};
+
+const struct SpriteTemplate gUnknown_08596FB0 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08596E78,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81135EC,
+};
+
+void sub_8113064(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ gBattleAnimArgs[4] = -gBattleAnimArgs[4];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ }
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[4];
+ sprite->data[5] = gBattleAnimArgs[5];
+ sprite->invisible = 1;
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80A66DC;
+}
+
+static void sub_8113100(struct Sprite *sprite)
+{
+ sub_80A6838(sprite);
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x -= gBattleAnimArgs[1];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[2] -= gBattleAnimArgs[2];
+ sprite->data[4] += gBattleAnimArgs[3];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[2] += gBattleAnimArgs[2];
+ sprite->data[4] += gBattleAnimArgs[3];
+ StartSpriteAnim(sprite, 1);
+ }
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+}
+
+void sub_81131B4(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ }
+
+ sub_80A6864(sprite, gBattleAnimArgs[1]);
+ sprite->pos1.y += gBattleAnimArgs[2];
+ sprite->callback = sub_80A67D8;
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+}
+
+void sub_8113224(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ StartSpriteAffineAnim(sprite, 1);
+
+ sub_8113100(sprite);
+}
+
+void sub_8113250(struct Sprite *sprite)
+{
+ u16 r5;
+ u16 r0;
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[4] = 0;
+ sprite->data[5] = 1;
+ sprite->data[6] = gBattleAnimArgs[0];
+ r5 = sub_80A861C(gBattlerAttacker, 0);
+ r0 = sub_80A861C(gBattlerAttacker, 1);
+ if (r5 > r0)
+ sprite->data[7] = r5 / 2;
+ else
+ sprite->data[7] = r0 / 2;
+ sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
+ sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ sprite->callback = sub_81132E0;
+}
+
+static void sub_81132E0(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
+ sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
+ sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ if (++sprite->data[4] > 5)
+ {
+ sprite->data[4] = 0;
+ if (sprite->data[5] <= 15 && ++sprite->data[5] > 15)
+ sprite->data[5] = 16;
+ }
+ if (++sprite->data[3] > 0x3C)
+ {
+ sprite->data[3] = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
+ if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95)
+ sprite->data[7] = 0x96;
+ sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
+ sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ if (++sprite->data[4] > 5)
+ {
+ sprite->data[4] = 0;
+ if (sprite->data[5] <= 15 && ++sprite->data[5] > 15)
+ sprite->data[5] = 16;
+ }
+ if (++sprite->data[3] > 20)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_81133E8(u8 taskId)
+{
+ struct ScanlineEffectParams sp;
+ struct Task *task = &gTasks[taskId];
+ u16 i;
+ u8 r1;
+ if (sub_80A8364(gBattleAnimAttacker) == 1)
+ {
+ sp.dmaDest = &REG_BG1HOFS;
+ task->data[2] = gBattle_BG1_X;
+ }
+ else
+ {
+ sp.dmaDest = &REG_BG2HOFS;
+ task->data[2] = gBattle_BG2_X;
+ }
+
+ sp.dmaControl = 0xA2600001;
+ sp.initState = 1;
+ sp.unused9 = 0;
+ r1 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
+ task->data[3] = r1 - 32;
+ task->data[4] = r1 + 32;
+ if (task->data[3] < 0)
+ task->data[3] = 0;
+
+ for (i = task->data[3]; i <= task->data[4]; i++)
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[2];
+ gScanlineEffectRegBuffers[1][i] = task->data[2];
+ }
+
+ ScanlineEffect_SetParams(sp);
+ task->func = sub_81134B8;
+}
+
+static void sub_81134B8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[7] > 1)
+ {
+ task->data[7] = 0;
+ if (++task->data[6] == 3)
+ task->data[0]++;
+ }
+ sub_8113574(task);
+ break;
+ case 1:
+ if (++task->data[1] > 0x3C)
+ task->data[0]++;
+ sub_8113574(task);
+ break;
+ case 2:
+ if (++task->data[7] > 1)
+ {
+ task->data[7] = 0;
+ if (--task->data[6] == 0)
+ task->data[0]++;
+ }
+ sub_8113574(task);
+ break;
+ case 3:
+ gScanlineEffect.state = 3;
+ task->data[0]++;
+ break;
+ case 4:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_8113574(struct Task *task)
+{
+ u16 r3 = task->data[5];
+ u16 i;
+ for (i = task->data[3]; i <= task->data[4]; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2];
+ r3 = (r3 + 8) & 0xFF;
+ }
+
+ task->data[5] = (task->data[5] + 9) & 0xFF;
+}
+
+void sub_81135EC(struct Sprite *sprite)
+{
+ int r6 = (gBattleAnimArgs[2] * 3) / 5;
+ int i;
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 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];
+ sprite->pos1.y += sprite->data[2] * gBattleAnimArgs[0];
+ sprite->data[3] = gBattleAnimArgs[3];
+ sprite->callback = sub_811369C;
+ for (i = 0; i < 7; i++)
+ gUnknown_0203A100[i] = sprite->data[i];
+}
+
+static void sub_811369C(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[1];
+ sprite->data[5] += sprite->data[2];
+ sprite->pos2.x = sprite->data[4] / 10;
+ sprite->pos2.y = sprite->data[5] / 10;
+ if (++sprite->data[0] > sprite->data[3])
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 7d25d1430..e4233fb7f 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -13,6 +13,7 @@
#include "palette.h"
#include "event_data.h"
#include "easy_chat.h"
+#include "string_util.h"
// Static type declarations
diff --git a/src/effects_1.c b/src/effects_1.c
new file mode 100644
index 000000000..a8687bc38
--- /dev/null
+++ b/src/effects_1.c
@@ -0,0 +1,2093 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_80FE840(struct Sprite *);
+extern void sub_80FE8E0(struct Sprite *);
+extern void sub_80FE930(struct Sprite *);
+extern void sub_80FE988(struct Sprite *);
+extern void sub_80FEAD8(struct Sprite *);
+extern void sub_80FEB44(struct Sprite *);
+extern void sub_80FEC48(struct Sprite *);
+extern void sub_80FED28(struct Sprite *);
+extern void sub_80FEE78(struct Sprite *);
+extern void sub_80FEF44(struct Sprite *);
+extern void sub_80FEFFC(struct Sprite *);
+extern void AnimMoveTwisterParticle(struct Sprite *);
+extern void sub_80FF0F4(struct Sprite *);
+extern void sub_80FF374(struct Sprite *);
+extern void sub_80FF698(struct Sprite *);
+extern void sub_80FF768(struct Sprite *);
+extern void sub_80FF7EC(struct Sprite *);
+extern void sub_80FF934(struct Sprite *);
+extern void sub_80FFB18(struct Sprite *);
+extern void sub_80FFBF4(struct Sprite *);
+extern void sub_80FFC70(struct Sprite *);
+extern void sub_80FFCB4(struct Sprite *);
+extern void sub_80FFDBC(struct Sprite *);
+extern void sub_8100640(struct Sprite *);
+extern void sub_8100898(struct Sprite *);
+extern void sub_8100A50(struct Sprite *);
+extern void sub_81009F8(struct Sprite *);
+extern void sub_8100A94(struct Sprite *);
+extern void sub_8100AE0(struct Sprite *);
+extern void sub_8100B88(struct Sprite *);
+extern void sub_8100E1C(struct Sprite *);
+extern void sub_8100EF0(struct Sprite *);
+extern void sub_81010CC(struct Sprite *);
+extern void sub_810130C(struct Sprite *);
+extern void sub_810135C(struct Sprite *);
+extern void sub_8101440(struct Sprite *);
+extern void sub_81014F4(struct Sprite *);
+extern void sub_81015AC(struct Sprite *);
+extern void sub_8101898(struct Sprite *);
+extern void sub_8101940(struct Sprite *);
+extern void sub_8101B90(struct Sprite *);
+extern void sub_8101F40(struct Sprite *);
+extern void sub_8101FA8(struct Sprite *);
+extern void sub_8101FF0(struct Sprite *);
+extern void sub_81020D8(struct Sprite *);
+extern void sub_810217C(struct Sprite *);
+extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite);
+extern void sub_80A77C8(struct Sprite *);
+extern void sub_8102268(struct Sprite *);
+extern void sub_810234C(struct Sprite *);
+extern void sub_81024E0(struct Sprite *);
+extern void sub_8102540(struct Sprite *);
+extern void sub_80A77C8(struct Sprite *);
+extern void sub_8102844(struct Sprite *);
+extern void sub_8102BCC(struct Sprite *);
+extern void sub_8102CD4(struct Sprite *);
+extern void sub_8102EB0(struct Sprite *);
+extern void sub_8102FB8(struct Sprite *);
+extern void sub_8103028(struct Sprite *);
+extern void sub_8103164(struct Sprite *);
+extern void sub_8103208(struct Sprite *);
+extern void sub_8103284(struct Sprite *);
+extern void sub_8103390(struct Sprite *);
+
+const union AnimCmd gUnknown_085920F0[] =
+{
+ 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 gUnknown_08592114[] =
+{
+ gUnknown_085920F0,
+};
+
+const struct SpriteTemplate gSleepPowderParticleSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SLEEP_POWDER,
+ .paletteTag = ANIM_TAG_SLEEP_POWDER,
+ .oam = &gUnknown_08524944,
+ .anims = gUnknown_08592114,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FE840,
+};
+
+const struct SpriteTemplate gStunSporeParticleSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_STUN_SPORE,
+ .paletteTag = ANIM_TAG_STUN_SPORE,
+ .oam = &gUnknown_08524944,
+ .anims = gUnknown_08592114,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FE840,
+};
+
+const struct SpriteTemplate gPoisonPowderParticleSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_POISON_POWDER,
+ .paletteTag = ANIM_TAG_POISON_POWDER,
+ .oam = &gUnknown_08524944,
+ .anims = gUnknown_08592114,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FE840,
+};
+
+const union AnimCmd gUnknown_08592160[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592168[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592170[] =
+{
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592178[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592180[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592188[] =
+{
+ ANIMCMD_FRAME(5, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592190[] =
+{
+ ANIMCMD_FRAME(6, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592198[] =
+{
+ ANIMCMD_FRAME(7, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085921A0[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085921A8[] =
+{
+ gUnknown_08592160,
+ gUnknown_08592168,
+ gUnknown_08592170,
+ gUnknown_08592178,
+ gUnknown_08592180,
+ gUnknown_08592188,
+ gUnknown_08592190,
+};
+
+const union AnimCmd *const gUnknown_085921C4[] =
+{
+ gUnknown_08592198,
+};
+
+const union AnimCmd *const gUnknown_085921C8[] =
+{
+ gUnknown_085921A0,
+};
+
+const union AffineAnimCmd gUnknown_085921CC[] = {
+ AFFINEANIMCMD_FRAME(-5, -5, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_085921DC[] = {
+ gUnknown_085921CC,
+};
+
+const struct SpriteTemplate gUnknown_085921E0 =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_08524A8C,
+ .anims = gUnknown_085921C8,
+ .images = NULL,
+ .affineAnims = gUnknown_085921DC,
+ .callback = sub_80FE8E0,
+};
+
+const struct SpriteTemplate gUnknown_085921F8 =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085921A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FE930,
+};
+
+const struct SpriteTemplate gUnknown_08592210 =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085921C4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FE988,
+};
+
+const union AffineAnimCmd gUnknown_08592228[] = {
+ AFFINEANIMCMD_FRAME(320, 320, 0, 0),
+ AFFINEANIMCMD_FRAME(-14, -14, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08592240[] = {
+ gUnknown_08592228,
+};
+
+const struct SpriteTemplate gUnknown_08592244 =
+{
+ .tileTag = ANIM_TAG_GRAY_ORB,
+ .paletteTag = ANIM_TAG_GRAY_ORB,
+ .oam = &gUnknown_085249C4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08592240,
+ .callback = sub_80FE8E0,
+};
+
+const union AffineAnimCmd gUnknown_0859225C[] = {
+ AFFINEANIMCMD_FRAME(-5, -5, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_0859226C[] = {
+ gUnknown_0859225C,
+};
+
+const struct SpriteTemplate gUnknown_08592270 =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_08524A8C,
+ .anims = gUnknown_085921C8,
+ .images = NULL,
+ .affineAnims = gUnknown_0859226C,
+ .callback = sub_80FEAD8,
+};
+
+const struct SpriteTemplate gUnknown_08592288 =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085921A8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FEB44,
+};
+
+const union AnimCmd gUnknown_085922A0[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085922A8[] =
+{
+ ANIMCMD_FRAME(4, 7),
+ ANIMCMD_FRAME(8, 7),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_085922B4[] =
+{
+ gUnknown_085922A0,
+ gUnknown_085922A8,
+};
+
+const struct SpriteTemplate gLeechSeedSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SEED,
+ .paletteTag = ANIM_TAG_SEED,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_085922B4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FEC48,
+};
+
+const union AnimCmd gUnknown_085922D4[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085922DC[] =
+{
+ ANIMCMD_FRAME(4, 7),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085922E4[] =
+{
+ gUnknown_085922D4,
+ gUnknown_085922DC,
+};
+
+const struct SpriteTemplate gUnknown_085922EC =
+{
+ .tileTag = ANIM_TAG_SPORE,
+ .paletteTag = ANIM_TAG_SPORE,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_085922E4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FED28,
+};
+
+const union AnimCmd gUnknown_08592304[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859230C[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592314[] =
+{
+ gUnknown_08592304,
+};
+
+const union AnimCmd *const gUnknown_08592318[] =
+{
+ gUnknown_0859230C,
+};
+
+const struct SpriteTemplate gUnknown_0859231C =
+{
+ .tileTag = ANIM_TAG_FLOWER,
+ .paletteTag = ANIM_TAG_FLOWER,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592314,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FEE78,
+};
+
+const struct SpriteTemplate gUnknown_08592334 =
+{
+ .tileTag = ANIM_TAG_FLOWER,
+ .paletteTag = ANIM_TAG_FLOWER,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08592318,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FEF44,
+};
+
+const union AnimCmd gUnknown_0859234C[] =
+{
+ 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 gUnknown_08592378[] =
+{
+ ANIMCMD_FRAME(24, 5),
+ ANIMCMD_FRAME(28, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592388[] =
+{
+ gUnknown_0859234C,
+ gUnknown_08592378,
+};
+
+const struct SpriteTemplate gUnknown_08592390 =
+{
+ .tileTag = ANIM_TAG_LEAF,
+ .paletteTag = ANIM_TAG_LEAF,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592388,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FEFFC,
+};
+
+const struct SpriteTemplate gUnknown_085923A8 =
+{
+ .tileTag = ANIM_TAG_LEAF,
+ .paletteTag = ANIM_TAG_LEAF,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592388,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMoveTwisterParticle,
+};
+
+const union AnimCmd gUnknown_085923C0[] =
+{
+ 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 gUnknown_085923D4[] =
+{
+ gUnknown_085923C0,
+};
+
+const struct SpriteTemplate gUnknown_085923D8 =
+{
+ .tileTag = ANIM_TAG_RAZOR_LEAF,
+ .paletteTag = ANIM_TAG_RAZOR_LEAF,
+ .oam = &gUnknown_08524934,
+ .anims = gUnknown_085923D4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FF0F4,
+};
+
+const union AffineAnimCmd gUnknown_085923F0[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08592400[] = {
+ gUnknown_085923F0,
+};
+
+const struct SpriteTemplate gSwiftStarSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_YELLOW_STAR,
+ .paletteTag = ANIM_TAG_YELLOW_STAR,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08592400,
+ .callback = sub_80FF0F4,
+};
+
+const union AnimCmd gUnknown_0859241C[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_FRAME(96, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592430[] =
+{
+ 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 gUnknown_08592444[] =
+{
+ gUnknown_0859241C,
+ gUnknown_08592430,
+};
+
+const union AffineAnimCmd gUnknown_0859244C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(-11, 0, 0, 6),
+ AFFINEANIMCMD_FRAME(11, 0, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859246C[] = {
+ AFFINEANIMCMD_FRAME(-256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(11, 0, 0, 6),
+ AFFINEANIMCMD_FRAME(-11, 0, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_0859248C[] = {
+ gUnknown_0859244C,
+ gUnknown_0859246C,
+};
+
+const struct SpriteTemplate gUnknown_08592494 =
+{
+ .tileTag = ANIM_TAG_TENDRILS,
+ .paletteTag = ANIM_TAG_TENDRILS,
+ .oam = &gUnknown_0852499C,
+ .anims = gUnknown_08592444,
+ .images = NULL,
+ .affineAnims = gUnknown_0859248C,
+ .callback = sub_80FF374,
+};
+
+const union AffineAnimCmd gUnknown_085924AC[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 0),
+ AFFINEANIMCMD_FRAME(48, 48, 0, 14),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085924C4[] = {
+ AFFINEANIMCMD_FRAME(-16, -16, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_085924D4[] = {
+ gUnknown_085924AC,
+ gUnknown_085924C4,
+};
+
+const struct SpriteTemplate gUnknown_085924DC =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_085249CC,
+ .anims = gUnknown_085921C8,
+ .images = NULL,
+ .affineAnims = gUnknown_085924D4,
+ .callback = sub_80FF698,
+};
+
+const union AnimCmd gUnknown_085924F4[] =
+{
+ ANIMCMD_FRAME(0, 7),
+ ANIMCMD_FRAME(16, 7),
+ ANIMCMD_FRAME(32, 7),
+ ANIMCMD_FRAME(48, 7),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592508[] =
+{
+ 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 gUnknown_0859251C[] =
+{
+ ANIMCMD_FRAME(0, 7),
+ ANIMCMD_FRAME(16, 7),
+ ANIMCMD_FRAME(32, 7),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859252C[] =
+{
+ ANIMCMD_FRAME(0, 7, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 7, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 7, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_0859253C[] =
+{
+ gUnknown_085924F4,
+ gUnknown_08592508,
+ gUnknown_0859251C,
+ gUnknown_0859252C,
+};
+
+const struct SpriteTemplate gUnknown_0859254C =
+{
+ .tileTag = ANIM_TAG_ROOTS,
+ .paletteTag = ANIM_TAG_ROOTS,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_0859253C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FF768,
+};
+
+const struct SpriteTemplate gUnknown_08592564 =
+{
+ .tileTag = ANIM_TAG_ROOTS,
+ .paletteTag = ANIM_TAG_ROOTS,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_0859253C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FF7EC,
+};
+
+const union AnimCmd gUnknown_0859257C[] =
+{
+ ANIMCMD_FRAME(3, 3),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08592588[] =
+{
+ gUnknown_0859257C,
+};
+
+const struct SpriteTemplate gUnknown_0859258C =
+{
+ .tileTag = ANIM_TAG_ORBS,
+ .paletteTag = ANIM_TAG_ORBS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08592588,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FF934,
+};
+
+const union AnimCmd gUnknown_085925A4[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085925AC[] =
+{
+ gUnknown_085925A4,
+};
+
+const union AffineAnimCmd gUnknown_085925B0[] = {
+ AFFINEANIMCMD_FRAME(0, 0, -4, 10),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 20),
+ AFFINEANIMCMD_FRAME(0, 0, -4, 10),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085925D0[] = {
+ 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 gUnknown_08592608[] = {
+ gUnknown_085925B0,
+ gUnknown_085925D0,
+};
+
+const struct SpriteTemplate gUnknown_08592610 =
+{
+ .tileTag = ANIM_TAG_ITEM_BAG,
+ .paletteTag = ANIM_TAG_ITEM_BAG,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085925AC,
+ .images = NULL,
+ .affineAnims = gUnknown_08592608,
+ .callback = sub_80FFB18,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8592628 =
+{
+ .tileTag = ANIM_TAG_ITEM_BAG,
+ .paletteTag = ANIM_TAG_ITEM_BAG,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085925AC,
+ .images = NULL,
+ .affineAnims = gUnknown_08592608,
+ .callback = sub_80FFBF4,
+};
+
+const union AnimCmd gUnknown_08592640[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592654[] =
+{
+ gUnknown_08592640,
+};
+
+const struct SpriteTemplate gUnknown_08592658 =
+{
+ .tileTag = ANIM_TAG_GREEN_SPARKLE,
+ .paletteTag = ANIM_TAG_GREEN_SPARKLE,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592654,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80FFC70,
+};
+
+const struct SpriteTemplate gUnknown_08592670 =
+{
+ .tileTag = ANIM_TAG_ITEM_BAG,
+ .paletteTag = ANIM_TAG_ITEM_BAG,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085925AC,
+ .images = NULL,
+ .affineAnims = gUnknown_08592608,
+ .callback = sub_80FFCB4,
+};
+
+const union AffineAnimCmd gUnknown_08592688[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 3),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08592698[] = {
+ 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 gUnknown_085926D8[] = {
+ gUnknown_08592688,
+ gUnknown_08592698,
+ gUnknown_085925B0,
+ gUnknown_085925D0,
+};
+
+const struct SpriteTemplate gUnknown_085926E8 =
+{
+ .tileTag = ANIM_TAG_ITEM_BAG,
+ .paletteTag = ANIM_TAG_ITEM_BAG,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085925AC,
+ .images = NULL,
+ .affineAnims = gUnknown_085926D8,
+ .callback = sub_80FFDBC,
+};
+
+const s8 gUnknown_08592700[][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},
+};
+
+const union AnimCmd gUnknown_08592724[] =
+{
+ ANIMCMD_FRAME(28, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859272C[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592734[] =
+{
+ ANIMCMD_FRAME(20, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859273C[] =
+{
+ ANIMCMD_FRAME(28, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592744[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859274C[] =
+{
+ ANIMCMD_FRAME(16, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592754[] =
+{
+ ANIMCMD_FRAME(28, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_0859275C[] =
+{
+ gUnknown_08592724,
+ gUnknown_0859272C,
+ gUnknown_08592734,
+ gUnknown_0859273C,
+ gUnknown_08592744,
+ gUnknown_0859274C,
+ gUnknown_08592754,
+};
+
+const struct SpriteTemplate gUnknown_08592778 =
+{
+ .tileTag = ANIM_TAG_LEAF,
+ .paletteTag = ANIM_TAG_LEAF,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_0859275C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const union AffineAnimCmd gUnknown_08592790[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 4, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_085927A8[] = {
+ gUnknown_08592790,
+};
+
+const struct SpriteTemplate gUnknown_085927AC =
+{
+ .tileTag = ANIM_TAG_FLOWER,
+ .paletteTag = ANIM_TAG_FLOWER,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08592318,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100640,
+};
+
+const struct SpriteTemplate gUnknown_085927C4 =
+{
+ .tileTag = ANIM_TAG_FLOWER,
+ .paletteTag = ANIM_TAG_FLOWER,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_08592314,
+ .images = NULL,
+ .affineAnims = gUnknown_085927A8,
+ .callback = sub_8100640,
+};
+
+const union AffineAnimCmd gUnknown_085927DC[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, -10, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd gUnknown_085927F4[] = {
+ AFFINEANIMCMD_FRAME(192, 192, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, -12, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd gUnknown_0859280C[] = {
+ AFFINEANIMCMD_FRAME(143, 143, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, -15, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08592824[] = {
+ gUnknown_085927DC,
+};
+
+const union AffineAnimCmd *const gUnknown_08592828[] = {
+ gUnknown_085927F4,
+};
+
+const union AffineAnimCmd *const gUnknown_0859282C[] = {
+ gUnknown_0859280C,
+};
+
+const struct SpriteTemplate gUnknown_08592830 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_6,
+ .paletteTag = ANIM_TAG_SPARKLE_6,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08592824,
+ .callback = sub_8100640,
+};
+
+const struct SpriteTemplate gUnknown_08592848 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_6,
+ .paletteTag = ANIM_TAG_SPARKLE_6,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08592828,
+ .callback = sub_8100640,
+};
+
+const struct SpriteTemplate gUnknown_08592860 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_6,
+ .paletteTag = ANIM_TAG_SPARKLE_6,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859282C,
+ .callback = sub_8100640,
+};
+
+// sMagicalLeafBlendColors
+const u16 gUnknown_08592878[] =
+{
+ 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),
+};
+
+const struct SpriteTemplate gUnknown_08592888 =
+{
+ .tileTag = ANIM_TAG_GREEN_SPIKE,
+ .paletteTag = ANIM_TAG_GREEN_SPIKE,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100898,
+};
+
+const union AnimCmd gUnknown_085928A0[] =
+{
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_FRAME(80, 3),
+ ANIMCMD_FRAME(96, 3),
+ ANIMCMD_FRAME(112, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085928B4[] =
+{
+ 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 gUnknown_085928C8[] =
+{
+ gUnknown_085928A0,
+ gUnknown_085928B4,
+};
+
+const struct SpriteTemplate gUnknown_085928D0 =
+{
+ .tileTag = ANIM_TAG_SLAM_HIT,
+ .paletteTag = ANIM_TAG_SLAM_HIT,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085928C8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100A50,
+};
+
+const struct SpriteTemplate gUnknown_085928E8 =
+{
+ .tileTag = ANIM_TAG_WHIP_HIT,
+ .paletteTag = ANIM_TAG_WHIP_HIT,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085928C8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100A50,
+};
+
+const union AnimCmd gUnknown_08592900[] =
+{
+ 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 gUnknown_08592918[] =
+{
+ gUnknown_08592900,
+};
+
+const struct SpriteTemplate gUnknown_0859291C =
+{
+ .tileTag = ANIM_TAG_UNUSED_HIT,
+ .paletteTag = ANIM_TAG_UNUSED_HIT,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592918,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81009F8,
+};
+
+const struct SpriteTemplate gUnknown_08592934 =
+{
+ .tileTag = ANIM_TAG_UNUSED_HIT_2,
+ .paletteTag = ANIM_TAG_UNUSED_HIT_2,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592918,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81009F8,
+};
+
+const union AffineAnimCmd gUnknown_0859294C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859295C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 32, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859296C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 64, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859297C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 96, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859298C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, -128, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859299C[] = {
+ AFFINEANIMCMD_FRAME(256, 256, -96, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085929AC[] = {
+ AFFINEANIMCMD_FRAME(256, 256, -64, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085929BC[] = {
+ AFFINEANIMCMD_FRAME(256, 256, -32, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085929CC[] = {
+ gUnknown_0859294C,
+ gUnknown_0859295C,
+ gUnknown_0859296C,
+ gUnknown_0859297C,
+ gUnknown_0859298C,
+ gUnknown_0859299C,
+ gUnknown_085929AC,
+ gUnknown_085929BC,
+};
+
+const struct SpriteTemplate gUnknown_085929EC =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085929CC,
+ .callback = sub_8100A94,
+};
+
+const union AnimCmd gUnknown_08592A04[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592A18[] =
+{
+ gUnknown_08592A04,
+};
+
+const struct SpriteTemplate gCuttingSliceSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_CUT,
+ .paletteTag = ANIM_TAG_CUT,
+ .oam = &gUnknown_08524A34,
+ .anims = gUnknown_08592A18,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100AE0,
+};
+
+const struct SpriteTemplate gUnknown_08592A34 =
+{
+ .tileTag = ANIM_TAG_CUT,
+ .paletteTag = ANIM_TAG_CUT,
+ .oam = &gUnknown_08524A34,
+ .anims = gUnknown_08592A18,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100B88,
+};
+
+const union AnimCmd gUnknown_08592A4C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A54[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A5C[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A64[] =
+{
+ ANIMCMD_FRAME(12, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A6C[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A74[] =
+{
+ ANIMCMD_FRAME(20, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A7C[] =
+{
+ ANIMCMD_FRAME(0, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A84[] =
+{
+ ANIMCMD_FRAME(4, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A8C[] =
+{
+ ANIMCMD_FRAME(8, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592A94[] =
+{
+ ANIMCMD_FRAME(12, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592A9C[] =
+{
+ gUnknown_08592A4C,
+ gUnknown_08592A54,
+ gUnknown_08592A5C,
+ gUnknown_08592A64,
+ gUnknown_08592A6C,
+ gUnknown_08592A74,
+ gUnknown_08592A7C,
+ gUnknown_08592A84,
+ gUnknown_08592A8C,
+ gUnknown_08592A94,
+};
+
+const struct SpriteTemplate gUnknown_08592AC4 =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592A9C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100E1C,
+};
+
+const struct SpriteTemplate gUnknown_08592ADC =
+{
+ .tileTag = ANIM_TAG_PROTECT,
+ .paletteTag = ANIM_TAG_PROTECT,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8100EF0,
+};
+
+const union AffineAnimCmd gUnknown_08592AF4[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08592B04[] =
+{
+ 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 gUnknown_08592B34[] =
+{
+ gUnknown_08592AF4,
+ gUnknown_08592B04,
+};
+
+const struct SpriteTemplate gUnknown_08592B3C =
+{
+ .tileTag = ANIM_TAG_MILK_BOTTLE,
+ .paletteTag = ANIM_TAG_MILK_BOTTLE,
+ .oam = &gUnknown_08524A94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08592B34,
+ .callback = sub_81010CC,
+};
+
+const union AnimCmd gUnknown_08592B54[] =
+{
+ 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 gUnknown_08592B78[] =
+{
+ gUnknown_08592B54,
+};
+
+const struct SpriteTemplate gUnknown_08592B7C =
+{
+ .tileTag = ANIM_TAG_SPARKLE_2,
+ .paletteTag = ANIM_TAG_SPARKLE_2,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592B78,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810130C,
+};
+
+const struct SpriteTemplate gUnknown_08592B94 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_2,
+ .paletteTag = ANIM_TAG_SPARKLE_2,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592B78,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810135C,
+};
+
+const union AnimCmd gUnknown_08592BAC[] =
+{
+ 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 gUnknown_08592BD0[] =
+{
+ 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 gUnknown_08592BF4[] =
+{
+ gUnknown_08592BAC,
+ gUnknown_08592BD0,
+};
+
+const struct SpriteTemplate gUnknown_08592BFC =
+{
+ .tileTag = ANIM_TAG_UNUSED_BUBBLE_BURST,
+ .paletteTag = ANIM_TAG_UNUSED_BUBBLE_BURST,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592BF4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101440,
+};
+
+const union AnimCmd gUnknown_08592C14[] =
+{
+ ANIMCMD_FRAME(0, 40),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592C1C[] =
+{
+ gUnknown_08592C14,
+};
+
+const union AffineAnimCmd gUnknown_08592C20[] =
+{
+ AFFINEANIMCMD_FRAME(0x14, 0x14, -30, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 1, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08592C20_2[] =
+{
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24),
+ AFFINEANIMCMD_LOOP(10),
+};
+
+const union AffineAnimCmd gUnknown_08592C50[] =
+{
+ AFFINEANIMCMD_FRAME(0x14, 0x14, 30, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, -1, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08592C50_2[] =
+{
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 24),
+ AFFINEANIMCMD_LOOP(10),
+};
+
+const union AffineAnimCmd *const gUnknown_08592C80[] =
+{
+ gUnknown_08592C20,
+ gUnknown_08592C50,
+};
+
+const struct SpriteTemplate gUnknown_08592C88 =
+{
+ .tileTag = ANIM_TAG_LETTER_Z,
+ .paletteTag = ANIM_TAG_LETTER_Z,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_08592C1C,
+ .images = NULL,
+ .affineAnims = gUnknown_08592C80,
+ .callback = sub_81014F4,
+};
+
+const struct SpriteTemplate gUnknown_08592CA0 =
+{
+ .tileTag = ANIM_TAG_LOCK_ON,
+ .paletteTag = ANIM_TAG_LOCK_ON,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81015AC,
+};
+
+const struct SpriteTemplate gUnknown_08592CB8 =
+{
+ .tileTag = ANIM_TAG_LOCK_ON,
+ .paletteTag = ANIM_TAG_LOCK_ON,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101898,
+};
+
+const s8 gUnknown_08592CD0[][2] =
+{
+ { 64, 64},
+ { 0, -64},
+ {-64, 64},
+ { 32, -32},
+};
+
+const struct SpriteTemplate gUnknown_08592CD8 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101940,
+};
+
+const struct SpriteTemplate gUnknown_08592CF0 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101B90,
+};
+
+const union AnimCmd gUnknown_08592D08[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592D1C[] =
+{
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592D24[] =
+{
+ gUnknown_08592D08,
+ gUnknown_08592D1C,
+};
+
+const struct SpriteTemplate gUnknown_08592D2C =
+{
+ .tileTag = ANIM_TAG_SLASH,
+ .paletteTag = ANIM_TAG_SLASH,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592D24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101F40,
+};
+
+const struct SpriteTemplate gUnknown_08592D44 =
+{
+ .tileTag = ANIM_TAG_SLASH_2,
+ .paletteTag = ANIM_TAG_SLASH_2,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592D24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101FA8,
+};
+
+const struct SpriteTemplate gUnknown_08592D5C =
+{
+ .tileTag = ANIM_TAG_SLASH_2,
+ .paletteTag = ANIM_TAG_SLASH_2,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592D24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101FF0,
+};
+
+const union AnimCmd gUnknown_08592D74[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(8, 12),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592D88[] =
+{
+ gUnknown_08592D74,
+};
+
+const struct SpriteTemplate gUnknown_08592D8C =
+{
+ .tileTag = ANIM_TAG_FOCUS_ENERGY,
+ .paletteTag = ANIM_TAG_FOCUS_ENERGY,
+ .oam = &gUnknown_08524954,
+ .anims = gUnknown_08592D88,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81020D8,
+};
+
+const union AnimCmd gUnknown_08592DA4[] =
+{
+ 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 gUnknown_08592DE0[] =
+{
+ gUnknown_08592DA4,
+};
+
+const struct SpriteTemplate gUnknown_08592DE4 =
+{
+ .tileTag = ANIM_TAG_SPHERE_TO_CUBE,
+ .paletteTag = ANIM_TAG_SPHERE_TO_CUBE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592DE0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810217C,
+};
+
+const struct SpriteTemplate gUnknown_08592DFC =
+{
+ .tileTag = ANIM_TAG_BLACK_BALL,
+ .paletteTag = ANIM_TAG_BLACK_BALL,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const union AnimCmd gUnknown_08592E14[] =
+{
+ 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 gUnknown_08592E2C[] =
+{
+ gUnknown_08592E14,
+};
+
+const struct SpriteTemplate gUnknown_08592E30 =
+{
+ .tileTag = ANIM_TAG_GRAY_SMOKE,
+ .paletteTag = ANIM_TAG_GRAY_SMOKE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592E2C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A77C8,
+};
+
+const union AnimCmd gUnknown_08592E48[] =
+{
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592E5C[] =
+{
+ gUnknown_08592E48,
+};
+
+const union AffineAnimCmd gUnknown_08592E60[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08592E70[] =
+{
+ gUnknown_08592E60,
+};
+
+const struct SpriteTemplate gUnknown_08592E74 =
+{
+ .tileTag = ANIM_TAG_CONVERSION,
+ .paletteTag = ANIM_TAG_CONVERSION,
+ .oam = &gUnknown_08524AE4,
+ .anims = gUnknown_08592E5C,
+ .images = NULL,
+ .affineAnims = gUnknown_08592E70,
+ .callback = sub_8102268,
+};
+
+const union AnimCmd gUnknown_08592E8C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592EA0[] =
+{
+ gUnknown_08592E8C,
+};
+
+const struct SpriteTemplate gUnknown_08592EA4 =
+{
+ .tileTag = ANIM_TAG_CONVERSION,
+ .paletteTag = ANIM_TAG_CONVERSION,
+ .oam = &gUnknown_08524AE4,
+ .anims = gUnknown_08592EA0,
+ .images = NULL,
+ .affineAnims = gUnknown_08592E70,
+ .callback = sub_810234C,
+};
+
+const struct SpriteTemplate gUnknown_08592EBC =
+{
+ .tileTag = ANIM_TAG_MOON,
+ .paletteTag = ANIM_TAG_MOON,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81024E0,
+};
+
+const union AnimCmd gUnknown_08592ED4[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_FRAME(12, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08592EE8[] =
+{
+ gUnknown_08592ED4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8592EEC =
+{
+ .tileTag = ANIM_TAG_GREEN_SPARKLE,
+ .paletteTag = ANIM_TAG_GREEN_SPARKLE,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08592EE8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8102540,
+};
+
+const union AnimCmd gUnknown_08592F04[] =
+{
+ 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 gUnknown_08592F28[] =
+{
+ gUnknown_08592F04,
+};
+
+const struct SpriteTemplate gUnknown_08592F2C =
+{
+ .tileTag = ANIM_TAG_BLUE_STAR,
+ .paletteTag = ANIM_TAG_BLUE_STAR,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592F28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A77C8,
+};
+
+const struct SpriteTemplate gUnknown_08592F44 =
+{
+ .tileTag = ANIM_TAG_HORN_HIT,
+ .paletteTag = ANIM_TAG_HORN_HIT,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8102844,
+};
+
+const union AnimCmd gUnknown_08592F5C[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592F70[] =
+{
+ gUnknown_08592F5C,
+};
+
+const struct SpriteTemplate gUnknown_08592F74 =
+{
+ .tileTag = ANIM_TAG_FANG_ATTACK,
+ .paletteTag = ANIM_TAG_FANG_ATTACK,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08592F70,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8102BCC,
+};
+
+const union AnimCmd gUnknown_08592F8C[] =
+{
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592F94[] =
+{
+ ANIMCMD_FRAME(4, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592F9C[] =
+{
+ ANIMCMD_FRAME(8, 41),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592FA4[] =
+{
+ ANIMCMD_FRAME(12, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592FAC[] =
+{
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592FB4[] =
+{
+ ANIMCMD_FRAME(20, 10),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592FBC[] =
+{
+ ANIMCMD_FRAME(0, 10, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08592FC4[] =
+{
+ ANIMCMD_FRAME(4, 10, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08592FCC[] =
+{
+ gUnknown_08592F8C,
+ gUnknown_08592F94,
+ gUnknown_08592F9C,
+ gUnknown_08592FA4,
+ gUnknown_08592FAC,
+ gUnknown_08592FB4,
+ gUnknown_08592FBC,
+ gUnknown_08592FC4,
+};
+
+const union AffineAnimCmd gUnknown_08592FEC[] =
+{
+ AFFINEANIMCMD_FRAME(0xC, 0xC, 0, 16),
+ AFFINEANIMCMD_FRAME(0xFFF4, 0xFFF4, 0, 16),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08593004[] =
+{
+ gUnknown_08592FEC,
+};
+
+const struct SpriteTemplate gUnknown_08593008 =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES,
+ .oam = &gUnknown_085249CC,
+ .anims = gUnknown_08592FCC,
+ .images = NULL,
+ .affineAnims = gUnknown_08593004,
+ .callback = sub_8102CD4,
+};
+
+const u16 gUnknown_08593020[][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 gUnknown_08593050 =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES,
+ .oam = &gUnknown_085249CC,
+ .anims = gUnknown_08592FCC,
+ .images = NULL,
+ .affineAnims = gUnknown_08593004,
+ .callback = sub_8102EB0,
+};
+
+const struct SpriteTemplate gUnknown_08593068 =
+{
+ .tileTag = ANIM_TAG_PURPLE_HAND_OUTLINE,
+ .paletteTag = ANIM_TAG_PURPLE_HAND_OUTLINE,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8102FB8,
+};
+
+const union AffineAnimCmd gUnknown_08593080[] =
+{
+ AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08593098[] =
+{
+ gUnknown_08593080,
+};
+
+const struct SpriteTemplate gUnknown_0859309C =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES,
+ .oam = &gUnknown_085249CC,
+ .anims = gUnknown_08592FCC,
+ .images = NULL,
+ .affineAnims = gUnknown_08593098,
+ .callback = sub_8103028,
+};
+
+const union AnimCmd gUnknown_085930B4[] =
+{
+ 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 gUnknown_085930C8[] =
+{
+ 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 gUnknown_085930DC[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085930F0[] =
+{
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593104[] =
+{
+ gUnknown_085930B4,
+ gUnknown_085930DC,
+ gUnknown_085930C8,
+ gUnknown_085930F0,
+};
+
+const struct SpriteTemplate gUnknown_08593114 =
+{
+ .tileTag = ANIM_TAG_THOUGHT_BUBBLE,
+ .paletteTag = ANIM_TAG_THOUGHT_BUBBLE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593104,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8103164,
+};
+
+const union AffineAnimCmd gUnknown_0859312C[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x1E, 0x1E, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08593144[] =
+{
+ 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 gUnknown_08593144_2[] =
+{
+ 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 gUnknown_085931B4[] =
+{
+ gUnknown_0859312C,
+ gUnknown_08593144,
+};
+
+const struct SpriteTemplate gUnknown_085931BC =
+{
+ .tileTag = ANIM_TAG_FINGER,
+ .paletteTag = ANIM_TAG_FINGER,
+ .oam = &gUnknown_085249D4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085931B4,
+ .callback = sub_8103208,
+};
+
+const struct SpriteTemplate gUnknown_085931D4 =
+{
+ .tileTag = ANIM_TAG_FINGER,
+ .paletteTag = ANIM_TAG_FINGER,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085931B4,
+ .callback = sub_8103284,
+};
+
+const union AnimCmd gUnknown_085931EC[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085931F4[] =
+{
+ ANIMCMD_FRAME(0, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085931FC[] =
+{
+ 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 gUnknown_0859321C[] =
+{
+ 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 gUnknown_0859323C[] =
+{
+ gUnknown_085931EC,
+ gUnknown_085931F4,
+ gUnknown_085931FC,
+ gUnknown_0859321C,
+};
+
+const struct SpriteTemplate gUnknown_0859324C =
+{
+ .tileTag = ANIM_TAG_FINGER_2,
+ .paletteTag = ANIM_TAG_FINGER_2,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_0859323C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8103390,
+};
diff --git a/src/effects_2.c b/src/effects_2.c
new file mode 100644
index 000000000..82336be5c
--- /dev/null
+++ b/src/effects_2.c
@@ -0,0 +1,1197 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_8103448(struct Sprite *);
+extern void sub_8103498(struct Sprite *);
+extern void sub_810358C(struct Sprite *);
+extern void sub_8103620(struct Sprite *);
+extern void sub_80A77C8(struct Sprite *);
+extern void sub_81037D8(struct Sprite *);
+extern void sub_810387C(struct Sprite *);
+extern void sub_81038C8(struct Sprite *);
+extern void sub_8103AA4(struct Sprite *);
+extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *);
+extern void sub_8108C94(struct Sprite *);
+extern void sub_80A78AC(struct Sprite *);
+extern void sub_8103FE8(struct Sprite *);
+extern void sub_8104088(struct Sprite *);
+extern void sub_810413C(struct Sprite *);
+extern void sub_81041C4(struct Sprite *);
+extern void sub_8104304(struct Sprite *);
+extern void sub_8104364(struct Sprite *);
+extern void sub_8104414(struct Sprite *);
+extern void sub_8104B1C(struct Sprite *);
+extern void sub_8104BAC(struct Sprite *);
+extern void sub_810501C(struct Sprite *);
+extern void sub_80A7938(struct Sprite *);
+extern void sub_8105538(struct Sprite *);
+extern void sub_81051C4(struct Sprite *);
+extern void sub_81052A4(struct Sprite *);
+extern void sub_81054E8(struct Sprite *);
+extern void sub_8105C48(struct Sprite *);
+extern void sub_8105DE8(struct Sprite *);
+extern void sub_8105E60(struct Sprite *);
+extern void sub_8106140(struct Sprite *);
+extern void sub_81061C4(struct Sprite *);
+extern void sub_810624C(struct Sprite *);
+extern void sub_810673C(struct Sprite *);
+extern void sub_8106878(struct Sprite *);
+extern void sub_8106944(struct Sprite *);
+extern void sub_81069B8(struct Sprite *);
+extern void sub_81069D0(struct Sprite *);
+extern void sub_8106AD0(struct Sprite *);
+extern void sub_8106B54(struct Sprite *);
+extern void sub_8106C80(struct Sprite *);
+extern void sub_8106CD0(struct Sprite *);
+extern void sub_8106E00(struct Sprite *);
+extern void sub_8106F60(struct Sprite *);
+extern void sub_8106F00(struct Sprite *);
+extern void sub_81070AC(struct Sprite *);
+
+const struct SpriteTemplate gUnknown_08593264 =
+{
+ .tileTag = ANIM_TAG_FINGER,
+ .paletteTag = ANIM_TAG_FINGER,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8103448,
+};
+
+const union AnimCmd gUnknown_0859327C[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593284[] =
+{
+ gUnknown_0859327C,
+};
+
+const struct SpriteTemplate gUnknown_08593288 =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8103498,
+};
+
+const struct SpriteTemplate gUnknown_085932A0 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810358C,
+};
+
+extern const union AffineAnimCmd *const gUnknown_08597060[];
+const struct SpriteTemplate gUnknown_085932B8 =
+{
+ .tileTag = ANIM_TAG_CLAMP,
+ .paletteTag = ANIM_TAG_CLAMP,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597060,
+ .callback = sub_8103620,
+};
+
+const union AnimCmd gUnknown_085932D0[] =
+{
+ ANIMCMD_FRAME(0, 9),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085932E4[] =
+{
+ gUnknown_085932D0,
+};
+
+const union AffineAnimCmd gUnknown_085932E8[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
+ AFFINEANIMCMD_FRAME(0x9, 0x9, 0, 18),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08593300[] =
+{
+ gUnknown_085932E8,
+};
+
+const struct SpriteTemplate gUnknown_08593304 =
+{
+ .tileTag = ANIM_TAG_UNUSED_EXPLOSION,
+ .paletteTag = ANIM_TAG_UNUSED_EXPLOSION,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085932E4,
+ .images = NULL,
+ .affineAnims = gUnknown_08593300,
+ .callback = sub_80A77C8,
+};
+
+const union AnimCmd gUnknown_0859331C[] =
+{
+ 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 gUnknown_08593340[] =
+{
+ gUnknown_0859331C,
+};
+
+const struct SpriteTemplate gUnknown_08593344 =
+{
+ .tileTag = ANIM_TAG_ALERT,
+ .paletteTag = ANIM_TAG_ALERT,
+ .oam = &gUnknown_08524934,
+ .anims = gUnknown_08593340,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81037D8,
+};
+
+const union AffineAnimCmd gUnknown_0859335C[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x14, 0x0, 0, 12),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_0859337C[] =
+{
+ gUnknown_0859335C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8593380 =
+{
+ .tileTag = ANIM_TAG_SWORD,
+ .paletteTag = ANIM_TAG_SWORD,
+ .oam = &gUnknown_08524ADC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859337C,
+ .callback = sub_810387C,
+};
+
+const struct SpriteTemplate gSonicBoomSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_AIR_WAVE,
+ .paletteTag = ANIM_TAG_AIR_WAVE,
+ .oam = &gUnknown_08524B14,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81038C8,
+};
+
+const struct SpriteTemplate gUnknown_085933B0 =
+{
+ .tileTag = ANIM_TAG_AIR_WAVE,
+ .paletteTag = ANIM_TAG_AIR_WAVE,
+ .oam = &gUnknown_08524A54,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8103AA4,
+};
+
+const union AffineAnimCmd gUnknown_085933C8[] =
+{
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
+ AFFINEANIMCMD_FRAME(0x7, 0x7, 0, -56),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085933E0[] =
+{
+ 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 gUnknown_08593420[] =
+{
+ gUnknown_085933C8,
+};
+
+const union AffineAnimCmd *const gUnknown_08593424[] =
+{
+ gUnknown_085933E0,
+};
+
+const struct SpriteTemplate gSupersonicWaveSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_GOLD_RING,
+ .paletteTag = ANIM_TAG_GOLD_RING,
+ .oam = &gUnknown_08524A14,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593420,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gScreechWaveSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_PURPLE_RING,
+ .paletteTag = ANIM_TAG_PURPLE_RING,
+ .oam = &gUnknown_08524A14,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593420,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gUnknown_08593458 =
+{
+ .tileTag = ANIM_TAG_METAL_SOUND_WAVES,
+ .paletteTag = ANIM_TAG_METAL_SOUND_WAVES,
+ .oam = &gUnknown_08524A1C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593420,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gUnknown_08593470 =
+{
+ .tileTag = ANIM_TAG_BLUE_RING_2,
+ .paletteTag = ANIM_TAG_BLUE_RING_2,
+ .oam = &gUnknown_08524A14,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593424,
+ .callback = sub_8108C94,
+};
+
+const struct SpriteTemplate gUnknown_08593488 =
+{
+ .tileTag = ANIM_TAG_LARGE_FRESH_EGG,
+ .paletteTag = ANIM_TAG_LARGE_FRESH_EGG,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A78AC,
+};
+
+const struct SpriteTemplate gUnknown_085934A0 =
+{
+ .tileTag = ANIM_TAG_UNUSED_VOID_LINES,
+ .paletteTag = ANIM_TAG_UNUSED_VOID_LINES,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8103FE8,
+};
+
+const union AnimCmd gUnknown_085934B8[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085934C0[] =
+{
+ gUnknown_085934B8,
+};
+
+const union AffineAnimCmd gUnknown_085934C4[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_085934D4[] =
+{
+ gUnknown_085934C4,
+};
+
+const struct SpriteTemplate gUnknown_085934D8 =
+{
+ .tileTag = ANIM_TAG_COIN,
+ .paletteTag = ANIM_TAG_COIN,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_085934C0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8104088,
+};
+
+const struct SpriteTemplate gUnknown_085934F0 =
+{
+ .tileTag = ANIM_TAG_COIN,
+ .paletteTag = ANIM_TAG_COIN,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_085934C0,
+ .images = NULL,
+ .affineAnims = gUnknown_085934D4,
+ .callback = sub_810413C,
+};
+
+const union AffineAnimCmd gUnknown_08593508[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08593518[] =
+{
+ gUnknown_08593508,
+};
+
+const struct SpriteTemplate gUnknown_0859351C =
+{
+ .tileTag = ANIM_TAG_SEED,
+ .paletteTag = ANIM_TAG_SEED,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593518,
+ .callback = sub_81041C4,
+};
+
+const union AffineAnimCmd gUnknown_08593534[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x0, 0, 40),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_0859354C[] =
+{
+ gUnknown_08593534,
+};
+
+const struct SpriteTemplate gUnknown_08593550 =
+{
+ .tileTag = ANIM_TAG_GUST,
+ .paletteTag = ANIM_TAG_GUST,
+ .oam = &gUnknown_085249BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859354C,
+ .callback = sub_8104304,
+};
+
+const union AnimCmd gUnknown_08593568[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 20),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08593578[] =
+{
+ 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 gUnknown_08593588[] =
+{
+ gUnknown_08593568,
+ gUnknown_08593578,
+};
+
+const struct SpriteTemplate gUnknown_08593590 =
+{
+ .tileTag = ANIM_TAG_CUT,
+ .paletteTag = ANIM_TAG_CUT,
+ .oam = &gUnknown_08524A34,
+ .anims = gUnknown_08593588,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8104364,
+};
+
+const union AnimCmd gUnknown_085935A8[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085935B8[] =
+{
+ 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 gUnknown_085935C8[] =
+{
+ gUnknown_085935A8,
+ gUnknown_085935B8,
+};
+
+const struct SpriteTemplate gUnknown_085935D0 =
+{
+ .tileTag = ANIM_TAG_CUT,
+ .paletteTag = ANIM_TAG_CUT,
+ .oam = &gUnknown_08524A34,
+ .anims = gUnknown_085935C8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8104414,
+};
+
+const union AffineAnimCmd gUnknown_085935E8[] =
+{
+ AFFINEANIMCMD_FRAME(-6, 4, 0, 8),
+ AFFINEANIMCMD_FRAME(10, -10, 0, 8),
+ AFFINEANIMCMD_FRAME(-4, 6, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08593608[] =
+{
+ AFFINEANIMCMD_FRAME(-4, -5, 0, 12),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 24),
+ AFFINEANIMCMD_FRAME(4, 5, 0, 12),
+ AFFINEANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08593628[] =
+{
+ 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 gUnknown_0859363C[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(4, 40),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593650[] =
+{
+ gUnknown_08593628,
+ gUnknown_0859363C,
+};
+
+const struct SpriteTemplate gUnknown_08593658 =
+{
+ .tileTag = ANIM_TAG_BREATH,
+ .paletteTag = ANIM_TAG_BREATH,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08593650,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8104B1C,
+};
+
+const union AffineAnimCmd gUnknown_08593670[] =
+{
+ AFFINEANIMCMD_FRAME(0xB, 0xB, 0, 8),
+ AFFINEANIMCMD_FRAME(0xFFF5, 0xFFF5, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08593688[] =
+{
+ gUnknown_08593670,
+};
+
+const struct SpriteTemplate gUnknown_0859368C =
+{
+ .tileTag = ANIM_TAG_ANGER,
+ .paletteTag = ANIM_TAG_ANGER,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593688,
+ .callback = sub_8104BAC,
+};
+
+const union AffineAnimCmd gUnknown_085936A4[] =
+{
+ 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,
+};
+
+const struct SpriteTemplate gUnknown_085936D4 =
+{
+ .tileTag = ANIM_TAG_PENCIL,
+ .paletteTag = ANIM_TAG_PENCIL,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810501C,
+};
+
+const struct SpriteTemplate gUnknown_085936EC =
+{
+ .tileTag = ANIM_TAG_SNORE_Z,
+ .paletteTag = ANIM_TAG_SNORE_Z,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A7938,
+};
+
+const union AnimCmd gUnknown_08593704[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593718[] =
+{
+ gUnknown_08593704,
+};
+//*
+const struct SpriteTemplate gBattleAnimSpriteTemplate_859371C =
+{
+ .tileTag = ANIM_TAG_EXPLOSION,
+ .paletteTag = ANIM_TAG_EXPLOSION,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593718,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A77C8,
+};
+
+const union AffineAnimCmd gUnknown_08593734[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 2),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 2),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gUnknown_08593754[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08593764[] =
+{
+ 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 gUnknown_085937A4[] =
+{
+ gUnknown_08593734,
+ gUnknown_08593754,
+ gUnknown_08593764,
+};
+//*
+const struct SpriteTemplate gUnknown_085937B0 =
+{
+ .tileTag = ANIM_TAG_BREAKING_EGG,
+ .paletteTag = ANIM_TAG_BREAKING_EGG,
+ .oam = &gUnknown_08524AF4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085937A4,
+ .callback = sub_8105538,
+};
+
+const union AffineAnimCmd gUnknown_085937C8[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 30),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd gUnknown_085937E0[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 15),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd gUnknown_085937F8[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0xB, 0xB, 0, 45),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08593810[] =
+{
+ gUnknown_085937C8,
+ gUnknown_085937E0,
+};
+
+const union AffineAnimCmd *const gUnknown_08593818[] =
+{
+ gUnknown_085937F8,
+};
+
+const struct SpriteTemplate gUnknown_0859381C =
+{
+ .tileTag = ANIM_TAG_THIN_RING,
+ .paletteTag = ANIM_TAG_THIN_RING,
+ .oam = &gUnknown_085249DC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593810,
+ .callback = sub_80A77C8,
+};
+//*
+const union AffineAnimCmd gUnknown_08593834[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF0, 0xFFF0, 0, 30),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd *const gUnknown_0859384C[] =
+{
+ gUnknown_08593834,
+};
+
+const struct SpriteTemplate gUnknown_08593850 =
+{
+ .tileTag = ANIM_TAG_THIN_RING,
+ .paletteTag = ANIM_TAG_THIN_RING,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859384C,
+ .callback = sub_80A77C8,
+};
+
+const struct SpriteTemplate gUnknown_08593868 =
+{
+ .tileTag = ANIM_TAG_THIN_RING,
+ .paletteTag = ANIM_TAG_THIN_RING,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593810,
+ .callback = sub_81051C4,
+};
+
+const struct SpriteTemplate gUnknown_08593880 =
+{
+ .tileTag = ANIM_TAG_THIN_RING,
+ .paletteTag = ANIM_TAG_THIN_RING,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593818,
+ .callback = sub_81052A4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8593898 =
+{
+ .tileTag = ANIM_TAG_THIN_RING,
+ .paletteTag = ANIM_TAG_THIN_RING,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593810,
+ .callback = sub_81054E8,
+};
+
+const union AffineAnimCmd gUnknown_085938B0[] =
+{
+ AFFINEANIMCMD_FRAME(96, -13, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085938C0[] =
+{
+ 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 gUnknown_085938D8[] =
+{
+ gUnknown_085938C0,
+};
+
+const struct SpriteTemplate gUnknown_085938DC =
+{
+ .tileTag = ANIM_TAG_SPEED_DUST,
+ .paletteTag = ANIM_TAG_SPEED_DUST,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_085938D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8105C48,
+};
+
+const s8 gUnknown_085938F4[][2] =
+{
+ {30, 28},
+ {-20, 24},
+ {16, 26},
+ {-10, 28},
+};
+
+const union AnimCmd gUnknown_085938FC[] =
+{
+ 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 gUnknown_08593934[] =
+{
+ gUnknown_085938FC,
+};
+
+const struct SpriteTemplate gUnknown_08593938 =
+{
+ .tileTag = ANIM_TAG_BELL,
+ .paletteTag = ANIM_TAG_BELL,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593934,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A77C8,
+};
+
+const u16 gUnknown_08593950[] =
+{
+ 10206,
+ 9999,
+ 9998,
+ 0,
+};
+
+const struct SpriteTemplate gUnknown_08593958 =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES_2,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES_2,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8105DE8,
+};
+
+const struct SpriteTemplate gUnknown_08593970 =
+{
+ .tileTag = ANIM_TAG_MAGENTA_HEART,
+ .paletteTag = ANIM_TAG_MAGENTA_HEART,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8105E60,
+};
+
+const union AffineAnimCmd gUnknown_08593988[] =
+{
+ AFFINEANIMCMD_FRAME(0x000A, 0xFFF3, 0x00, 0x0A),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0x000D, 0x00, 0x0A),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gUnknown_085939A0 =
+{
+ .tileTag = ANIM_TAG_RED_HEART,
+ .paletteTag = ANIM_TAG_RED_HEART,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8106140,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_85939B8 =
+{
+ .tileTag = ANIM_TAG_RED_HEART,
+ .paletteTag = ANIM_TAG_RED_HEART,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81061C4,
+};
+
+const struct SpriteTemplate gUnknown_085939D0 =
+{
+ .tileTag = ANIM_TAG_RED_HEART,
+ .paletteTag = ANIM_TAG_RED_HEART,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810624C,
+};
+
+const union AffineAnimCmd gUnknown_085939E8[] =
+{
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08593A00[] =
+{
+ gUnknown_085939E8,
+};
+
+const struct SpriteTemplate gHiddenPowerOrbSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_RED_ORB,
+ .paletteTag = ANIM_TAG_RED_ORB,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593A00,
+ .callback = sub_810673C,
+};
+
+const struct SpriteTemplate gHiddenPowerOrbScatterSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_RED_ORB,
+ .paletteTag = ANIM_TAG_RED_ORB,
+ .oam = &gUnknown_085249CC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593A00,
+ .callback = sub_8106878,
+};
+
+const union AffineAnimCmd gUnknown_08593A34[] =
+{
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08593A4C[] =
+{
+ gUnknown_08593A34,
+};
+
+const struct SpriteTemplate gUnknown_08593A50 =
+{
+ .tileTag = ANIM_TAG_RED_ORB_2,
+ .paletteTag = ANIM_TAG_RED_ORB_2,
+ .oam = &gUnknown_085249C4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593A4C,
+ .callback = sub_8106944,
+};
+
+const union AnimCmd gUnknown_08593A68[] =
+{
+ 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 gUnknown_08593A80[] =
+{
+ gUnknown_08593A68,
+};
+
+const struct SpriteTemplate gUnknown_08593A84 =
+{
+ .tileTag = ANIM_TAG_EYE_SPARKLE,
+ .paletteTag = ANIM_TAG_EYE_SPARKLE,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08593A80,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81069B8,
+};
+
+const union AnimCmd gUnknown_08593A9C[] =
+{
+ ANIMCMD_FRAME(0, 24),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08593AA4[] =
+{
+ gUnknown_08593A9C,
+};
+
+const struct SpriteTemplate gUnknown_08593AA8 =
+{
+ .tileTag = ANIM_TAG_ANGEL,
+ .paletteTag = ANIM_TAG_ANGEL,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593AA4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81069D0,
+};
+
+const struct SpriteTemplate gUnknown_08593AC0 =
+{
+ .tileTag = ANIM_TAG_PINK_HEART,
+ .paletteTag = ANIM_TAG_PINK_HEART,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8106AD0,
+};
+
+const union AnimCmd gUnknown_08593AD8[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_08593AE0[] =
+{
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08593AE8[] =
+{
+ gUnknown_08593AD8,
+ gUnknown_08593AE0,
+};
+
+const struct SpriteTemplate gUnknown_08593AF0 =
+{
+ .tileTag = ANIM_TAG_DEVIL,
+ .paletteTag = ANIM_TAG_DEVIL,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593AE8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8106B54,
+};
+
+const union AnimCmd gUnknown_08593B08[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08593B1C[] =
+{
+ 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 gUnknown_08593B30[] =
+{
+ gUnknown_08593B08,
+ gUnknown_08593B1C,
+};
+
+const struct SpriteTemplate gUnknown_08593B38 =
+{
+ .tileTag = ANIM_TAG_SWIPE,
+ .paletteTag = ANIM_TAG_SWIPE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593B30,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8106C80,
+};
+
+const union AnimCmd gUnknown_08593B50[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08593B64[] =
+{
+ 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 gUnknown_08593B78[] =
+{
+ gUnknown_08593B50,
+ gUnknown_08593B64,
+};
+
+const struct SpriteTemplate gUnknown_08593B80 =
+{
+ .tileTag = ANIM_TAG_MOVEMENT_WAVES,
+ .paletteTag = ANIM_TAG_MOVEMENT_WAVES,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08593B78,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8106CD0,
+};
+
+const union AffineAnimCmd gUnknown_08593B98[] =
+{
+ AFFINEANIMCMD_FRAME(-12, 8, 0, 4),
+ AFFINEANIMCMD_FRAME(20, -20, 0, 4),
+ AFFINEANIMCMD_FRAME(-8, 12, 0, 4),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8593BB8 =
+{
+ .tileTag = ANIM_TAG_JAGGED_MUSIC_NOTE,
+ .paletteTag = ANIM_TAG_JAGGED_MUSIC_NOTE,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8106E00,
+};
+
+const union AffineAnimCmd gUnknown_08593BD0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 5),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08593BE0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 16),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd gUnknown_08593BF0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 16),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08593C00[] =
+{
+ gUnknown_08593BD0,
+ gUnknown_08593BE0,
+ gUnknown_08593BF0,
+};
+
+extern const union AnimCmd *const gUnknown_08592FCC[];
+const struct SpriteTemplate gUnknown_08593C0C =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES_2,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES_2,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_08592FCC,
+ .images = NULL,
+ .affineAnims = gUnknown_08593C00,
+ .callback = sub_8106F60,
+};
+
+const struct SpriteTemplate gUnknown_08593C24 =
+{
+ .tileTag = ANIM_TAG_MUSIC_NOTES_2,
+ .paletteTag = ANIM_TAG_MUSIC_NOTES_2,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_08592FCC,
+ .images = NULL,
+ .affineAnims = gUnknown_08593C00,
+ .callback = sub_8106F00,
+};
+
+const union AffineAnimCmd gUnknown_08593C3C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08593C4C[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08593C5C[] =
+{
+ gUnknown_08593C3C,
+ gUnknown_08593C4C,
+};
+
+const struct SpriteTemplate gUnknown_08593C64 =
+{
+ .tileTag = ANIM_TAG_GUARD_RING,
+ .paletteTag = ANIM_TAG_GUARD_RING,
+ .oam = &gUnknown_08524B1C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593C5C,
+ .callback = sub_81070AC,
+};
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 9f2526295..4b7ee9a61 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -26,6 +26,11 @@
#include "constants/abilities.h"
#include "daycare.h"
#include "overworld.h"
+#include "scanline_effect.h"
+#include "field_weather.h"
+#include "international_string_util.h"
+#include "naming_screen.h"
+#include "field_screen.h"
#include "battle.h" // to get rid of later
struct EggHatchData
@@ -55,14 +60,7 @@ extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle
extern const u8 gText_HatchedFromEgg[];
extern const u8 gText_NickHatchPrompt[];
-extern u8 sav1_map_get_name(void);
-extern void TVShowConvertInternationalString(u8* str1, u8* str2, u8);
-extern void FadeScreen(u8, u8);
-extern void overworld_free_bg_tilemaps(void);
-extern void sub_80AF168(void);
-extern void ScanlineEffect_Stop(void);
extern void play_some_sound(void);
-extern void DoNamingScreen(u8, const u8*, u16, u8, u32, MainCallback);
extern u16 sub_80D22D0(void);
extern u8 CountPartyAliveNonEggMonsExcept(u8);
@@ -254,7 +252,7 @@ static const struct BgTemplate sBgTemplates_EggHatch[2] =
static const struct WindowTemplate sWinTemplates_EggHatch[2] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 26,
@@ -267,7 +265,7 @@ static const struct WindowTemplate sWinTemplates_EggHatch[2] =
static const struct WindowTemplate sYesNoWinTemplate =
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 21,
.tilemapTop = 9,
.width = 5,
@@ -307,7 +305,7 @@ static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
u32 personality, pokerus;
u8 i, friendship, language, gameMet, markings, obedience;
u16 moves[4];
- u32 ivs[6];
+ u32 ivs[NUM_STATS];
species = GetMonData(egg, MON_DATA_SPECIES);
@@ -319,7 +317,7 @@ static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
personality = GetMonData(egg, MON_DATA_PERSONALITY);
- for (i = 0; i < 6; i++)
+ for (i = 0; i < NUM_STATS; i++)
{
ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i);
}
@@ -337,7 +335,7 @@ static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
SetMonData(temp, MON_DATA_MOVE1 + i, &moves[i]);
}
- for (i = 0; i < 6; i++)
+ for (i = 0; i < NUM_STATS; i++)
{
SetMonData(temp, MON_DATA_HP_IV + i, &ivs[i]);
}
@@ -673,7 +671,7 @@ static void CB2_EggHatch_1(void)
}
break;
case 10:
- switch (Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
diff --git a/src/electric.c b/src/electric.c
new file mode 100644
index 000000000..5d65915b2
--- /dev/null
+++ b/src/electric.c
@@ -0,0 +1,438 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_810A1A8(struct Sprite *);
+extern void sub_810A214(struct Sprite *);
+extern void sub_810A274(struct Sprite *);
+extern void sub_810A308(struct Sprite *);
+extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *);
+extern void sub_810A46C(struct Sprite *);
+extern void sub_810A5BC(struct Sprite *);
+extern void sub_810A628(struct Sprite *);
+extern void sub_810A75C(struct Sprite *);
+extern void sub_810A9DC(struct Sprite *);
+extern void sub_810AA2C(struct Sprite *);
+extern void sub_810ACD8(struct Sprite *);
+extern void sub_810AD30(struct Sprite *);
+extern void sub_810AD98(struct Sprite *);
+extern void sub_810B1F0(struct Sprite *);
+extern void sub_810B23C(struct Sprite *);
+extern void sub_810B51C(struct Sprite *);
+
+const union AnimCmd gUnknown_085956A4[] =
+{
+ 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 gUnknown_085956BC[] =
+{
+ gUnknown_085956A4,
+};
+
+const struct SpriteTemplate gUnknown_085956C0 =
+{
+ .tileTag = ANIM_TAG_LIGHTNING,
+ .paletteTag = ANIM_TAG_LIGHTNING,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085956BC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A1A8,
+};
+
+const union AffineAnimCmd gUnknown_085956D8[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 20),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 60),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085956F8[] =
+{
+ gUnknown_085956D8,
+};
+
+const struct SpriteTemplate gUnknown_085956FC =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085956F8,
+ .callback = sub_810A214,
+};
+
+const union AnimCmd gUnknown_08595714[] =
+{
+ 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 gUnknown_08595730[] =
+{
+ gUnknown_08595714,
+};
+
+const struct SpriteTemplate gUnknown_08595734 =
+{
+ .tileTag = ANIM_TAG_SHOCK,
+ .paletteTag = ANIM_TAG_SHOCK,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595730,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A274,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_859574C =
+{
+ .tileTag = ANIM_TAG_SPARK_2,
+ .paletteTag = ANIM_TAG_SPARK_2,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A308,
+};
+
+const struct SpriteTemplate gUnknown_08595764 =
+{
+ .tileTag = ANIM_TAG_BLACK_BALL_2,
+ .paletteTag = ANIM_TAG_BLACK_BALL_2,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const union AffineAnimCmd gUnknown_0859577C[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_0859578C[] =
+{
+ gUnknown_0859577C,
+};
+
+const struct SpriteTemplate gUnknown_08595790 =
+{
+ .tileTag = ANIM_TAG_SPARK_2,
+ .paletteTag = ANIM_TAG_SPARK_2,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859578C,
+ .callback = sub_810A46C,
+};
+
+const union AnimCmd gUnknown_085957A8[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_085957B8[] =
+{
+ gUnknown_085957A8,
+};
+
+const union AffineAnimCmd gUnknown_085957BC[] =
+{
+ 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 gUnknown_085957DC[] =
+{
+ gUnknown_085957BC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_85957E0 =
+{
+ .tileTag = ANIM_TAG_SHOCK_3,
+ .paletteTag = ANIM_TAG_SHOCK_3,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085957B8,
+ .images = NULL,
+ .affineAnims = gUnknown_085957DC,
+ .callback = sub_810A5BC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_85957F8 =
+{
+ .tileTag = ANIM_TAG_SPARK_2,
+ .paletteTag = ANIM_TAG_SPARK_2,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859578C,
+ .callback = sub_810A628,
+};
+
+const struct SpriteTemplate gElectricitySpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SPARK_2,
+ .paletteTag = ANIM_TAG_SPARK_2,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A75C,
+};
+
+const struct SpriteTemplate gUnknown_08595828 =
+{
+ .tileTag = ANIM_TAG_SPARK,
+ .paletteTag = ANIM_TAG_SPARK,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A9DC,
+};
+
+const struct SpriteTemplate gUnknown_08595840 =
+{
+ .tileTag = ANIM_TAG_SPARK_H,
+ .paletteTag = ANIM_TAG_SPARK_H,
+ .oam = &gUnknown_08524934,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810AA2C,
+};
+
+const s8 gUnknown_08595858[][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 gUnknown_08595878[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859588C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085958A0[] =
+{
+ gUnknown_08595878,
+ gUnknown_0859588C,
+};
+
+const struct SpriteTemplate gUnknown_085958A8 =
+{
+ .tileTag = ANIM_TAG_ELECTRIC_ORBS,
+ .paletteTag = ANIM_TAG_ELECTRIC_ORBS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085958A0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const union AffineAnimCmd gUnknown_085958C0[] =
+{
+ 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 gUnknown_08595900[] =
+{
+ 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 gUnknown_08595930[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 30),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 30),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08595950[] =
+{
+ gUnknown_085958C0,
+ gUnknown_08595900,
+ gUnknown_08595930,
+};
+
+const struct SpriteTemplate gUnknown_0859595C =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08595950,
+ .callback = sub_810ACD8,
+};
+
+const union AnimCmd gUnknown_08595974[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08595988[] =
+{
+ gUnknown_08595974,
+};
+
+const struct SpriteTemplate gUnknown_0859598C =
+{
+ .tileTag = ANIM_TAG_ELECTRICITY,
+ .paletteTag = ANIM_TAG_ELECTRICITY,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595988,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810AD30,
+};
+
+const struct SpriteTemplate gUnknown_085959A4 =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08595950,
+ .callback = sub_810AD98,
+};
+
+const union AnimCmd gUnknown_085959BC[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085959C4[] =
+{
+ ANIMCMD_FRAME(2, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085959CC[] =
+{
+ ANIMCMD_FRAME(4, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085959D4[] =
+{
+ ANIMCMD_FRAME(6, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085959DC[] =
+{
+ gUnknown_085959BC,
+ gUnknown_085959C4,
+ gUnknown_085959CC,
+ gUnknown_085959D4,
+};
+
+const union AffineAnimCmd gUnknown_085959EC[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085959FC[] =
+{
+ gUnknown_085959EC,
+};
+
+const struct SpriteTemplate gUnknown_08595A00 =
+{
+ .tileTag = ANIM_TAG_SPARK,
+ .paletteTag = ANIM_TAG_SPARK,
+ .oam = &gUnknown_08524A04,
+ .anims = gUnknown_085959DC,
+ .images = NULL,
+ .affineAnims = gUnknown_085959FC,
+ .callback = sub_810B1F0,
+};
+
+const struct SpriteTemplate gUnknown_08595A18 =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08595950,
+ .callback = sub_810B23C,
+};
+
+const struct SpriteTemplate gUnknown_08595A30 =
+{
+ .tileTag = ANIM_TAG_SPARK,
+ .paletteTag = ANIM_TAG_SPARK,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B51C,
+};
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 57f72b284..e509c7738 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -18,13 +18,37 @@
#include "random.h"
#include "rom_818CFC8.h"
#include "sprite.h"
+#include "task.h"
#include "trainer_see.h"
#include "util.h"
#include "constants/event_object_movement_constants.h"
#include "constants/event_objects.h"
+#include "constants/field_effects.h"
// this file was known as evobjmv.c in Game Freak's original source
+#define movement_type_def(setup, table) \
+static u8 setup##_callback(struct EventObject *, struct Sprite *);\
+void setup(struct Sprite *sprite)\
+{\
+ UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, setup##_callback);\
+}\
+static u8 setup##_callback(struct EventObject *eventObject, struct Sprite *sprite)\
+{\
+ return table[sprite->data[1]](eventObject, sprite);\
+}
+
+#define movement_type_empty_callback(setup) \
+static u8 setup##_callback(struct EventObject *, struct Sprite *);\
+void setup(struct Sprite *sprite)\
+{\
+ UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, setup##_callback);\
+}\
+static u8 setup##_callback(struct EventObject *eventObject, struct Sprite *sprite)\
+{\
+ return 0;\
+}
+
EWRAM_DATA u8 sCurrentReflectionType = 0;
EWRAM_DATA u16 sCurrentSpecialObjectPaletteTag = 0;
EWRAM_DATA struct LockedAnimEventObjects *gLockedAnimEventObjects = {0};
@@ -42,7 +66,7 @@ static bool8 IsCoordOutsideEventObjectMovementRange(struct EventObject *, s16, s
static bool8 IsMetatileDirectionallyImpassable(struct EventObject *, s16, s16, u8);
static bool8 DoesObjectCollideWithObjectAt(struct EventObject *, s16, s16);
static void sub_8096530(struct EventObject *, struct Sprite *);
-static void npc_update_obj_anim_flag(struct EventObject *, struct Sprite *);
+static void UpdateEventObjSpriteVisibility(struct EventObject *, struct Sprite *);
static void EventObjectUpdateMetatileBehaviors(struct EventObject*);
static void GetGroundEffectFlags_Reflection(struct EventObject*, u32*);
static void GetGroundEffectFlags_TallGrassOnSpawn(struct EventObject*, u32*);
@@ -73,7 +97,7 @@ static void sub_8097D68(struct Sprite*);
static void ApplyLevitateMovement(u8);
static bool8 MovementType_Disguise_Callback(struct EventObject *, struct Sprite *);
static bool8 MovementType_Hidden_Callback(struct EventObject *, struct Sprite *);
-static void sub_808D450(void);
+static void CreateReflectionEffectSprites(void);
static u8 GetEventObjectIdByLocalId(u8);
static u8 GetEventObjectIdByLocalIdAndMapInternal(u8, u8, u8);
static bool8 GetAvailableEventObjectId(u16, u8, u8, u8 *);
@@ -84,7 +108,7 @@ static void UpdateEventObjectVisibility(struct EventObject *, struct Sprite *);
static void MakeObjectTemplateFromEventObjectTemplate(struct EventObjectTemplate *, struct SpriteTemplate *, const struct SubspriteTable **);
static void GetEventObjectMovingCameraOffset(s16 *, s16 *);
static struct EventObjectTemplate *GetEventObjectTemplateByLocalIdAndMap(u8, u8, u8);
-static void sub_808E894(u16);
+static void LoadEventObjectPalette(u16);
static void RemoveEventObjectIfOutsideView(struct EventObject *);
static void sub_808E1B8(u8, s16, s16);
static void SetPlayerAvatarEventObjectIdAndObjectId(u8, u8);
@@ -100,6 +124,8 @@ static void CameraObject_2(struct Sprite *);
static struct EventObjectTemplate *FindEventObjectTemplateByLocalId(u8 localId, struct EventObjectTemplate *templates, u8 count);
static void ClearEventObjectMovement(struct EventObject *, struct Sprite *);
static void EventObjectSetSingleMovement(struct EventObject *, struct Sprite *, u8);
+static void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
+static void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *);
const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
@@ -625,7 +651,6 @@ const u16 gObjectPaletteTags3[] = {
EVENT_OBJ_PAL_TAG_7,
};
-
const u16 *const gObjectPaletteTagSets[] = {
gObjectPaletteTags0,
gObjectPaletteTags1,
@@ -1078,19 +1103,19 @@ static void ClearAllEventObjects(void)
{
u8 i;
- for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
ClearEventObject(&gEventObjects[i]);
}
-void sub_808D438(void)
+void ResetEventObjects(void)
{
ClearLinkPlayerEventObjects();
ClearAllEventObjects();
ClearPlayerAvatarInfo();
- sub_808D450();
+ CreateReflectionEffectSprites();
}
-static void sub_808D450(void)
+static void CreateReflectionEffectSprites(void)
{
u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 31);
gSprites[spriteId].oam.affineMode = 1;
@@ -1108,7 +1133,7 @@ static void sub_808D450(void)
u8 GetFirstInactiveEventObjectId(void)
{
u8 i;
- for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
if (!gEventObjects[i].active)
break;
@@ -1119,7 +1144,7 @@ u8 GetFirstInactiveEventObjectId(void)
u8 GetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId)
{
- if (localId < 0xff)
+ if (localId < 0xFF)
{
return GetEventObjectIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId);
}
@@ -1129,7 +1154,7 @@ u8 GetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId)
bool8 TryGetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId, u8 *eventObjectId)
{
*eventObjectId = GetEventObjectIdByLocalIdAndMap(localId, mapNum, mapGroupId);
- if (*eventObjectId == NUM_EVENT_OBJECTS)
+ if (*eventObjectId == EVENT_OBJECTS_COUNT)
return TRUE;
else
return FALSE;
@@ -1138,7 +1163,7 @@ bool8 TryGetEventObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId, u
u8 GetEventObjectIdByXY(s16 x, s16 y)
{
u8 i;
- for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
if (gEventObjects[i].active && gEventObjects[i].currentCoords.x == x && gEventObjects[i].currentCoords.y == y)
break;
@@ -1150,25 +1175,25 @@ u8 GetEventObjectIdByXY(s16 x, s16 y)
static u8 GetEventObjectIdByLocalIdAndMapInternal(u8 localId, u8 mapNum, u8 mapGroupId)
{
u8 i;
- for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
if (gEventObjects[i].active && gEventObjects[i].localId == localId && gEventObjects[i].mapNum == mapNum && gEventObjects[i].mapGroup == mapGroupId)
return i;
}
- return NUM_EVENT_OBJECTS;
+ return EVENT_OBJECTS_COUNT;
}
static u8 GetEventObjectIdByLocalId(u8 localId)
{
u8 i;
- for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
if (gEventObjects[i].active && gEventObjects[i].localId == localId)
return i;
}
- return NUM_EVENT_OBJECTS;
+ return EVENT_OBJECTS_COUNT;
}
// This function has the same nonmatching quirk as in Ruby/Sapphire.
@@ -1183,7 +1208,7 @@ static u8 InitEventObjectStateFromTemplate(struct EventObjectTemplate *template,
// mapNum and mapGroup are in the wrong registers (r7/r6 instead of r6/r7)
if (GetAvailableEventObjectId(template->localId, mapNum, mapGroup, &eventObjectId))
{
- return NUM_EVENT_OBJECTS;
+ return EVENT_OBJECTS_COUNT;
}
eventObject = &gEventObjects[eventObjectId];
ClearEventObject(eventObject);
@@ -1387,24 +1412,24 @@ static NAKED u8 InitEventObjectStateFromTemplate(struct EventObjectTemplate *tem
u8 Unref_TryInitLocalEventObject(u8 localId)
{
u8 i;
- u8 nObjects;
+ u8 eventObjectCount;
struct EventObjectTemplate *template;
if (gMapHeader.events != NULL)
{
if (InBattlePyramid())
{
- nObjects = sub_81AAA40();
+ eventObjectCount = sub_81AAA40();
}
else if (InTrainerHill())
{
- nObjects = 2;
+ eventObjectCount = 2;
}
else
{
- nObjects = gMapHeader.events->eventObjectCount;
+ eventObjectCount = gMapHeader.events->eventObjectCount;
}
- for (i = 0; i < nObjects; i++)
+ for (i = 0; i < eventObjectCount; i++)
{
template = &gSaveBlock1Ptr->eventObjectTemplates[i];
if (template->localId == localId && !FlagGet(template->flagId))
@@ -1413,7 +1438,7 @@ u8 Unref_TryInitLocalEventObject(u8 localId)
}
}
}
- return NUM_EVENT_OBJECTS;
+ return EVENT_OBJECTS_COUNT;
}
static bool8 GetAvailableEventObjectId(u16 localId, u8 mapNum, u8 mapGroup, u8 *eventObjectId)
@@ -1425,14 +1450,14 @@ static bool8 GetAvailableEventObjectId(u16 localId, u8 mapNum, u8 mapGroup, u8 *
{
u8 i = 0;
- for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
if (!gEventObjects[i].active)
break;
if (gEventObjects[i].localId == localId && gEventObjects[i].mapNum == mapNum && gEventObjects[i].mapGroup == mapGroup)
return TRUE;
}
- if (i >= NUM_EVENT_OBJECTS)
+ if (i >= EVENT_OBJECTS_COUNT)
return TRUE;
*eventObjectId = i;
do
@@ -1440,7 +1465,7 @@ static bool8 GetAvailableEventObjectId(u16 localId, u8 mapNum, u8 mapGroup, u8 *
if (gEventObjects[i].active && gEventObjects[i].localId == localId && gEventObjects[i].mapNum == mapNum && gEventObjects[i].mapGroup == mapGroup)
return TRUE;
i++;
- } while (i < NUM_EVENT_OBJECTS);
+ } while (i < EVENT_OBJECTS_COUNT);
return FALSE;
}
@@ -1472,7 +1497,7 @@ void RemoveAllEventObjectsExceptPlayer(void)
{
u8 i;
- for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
if (i != gPlayerAvatar.eventObjectId)
RemoveEventObject(&gEventObjects[i]);
@@ -1481,16 +1506,16 @@ void RemoveAllEventObjectsExceptPlayer(void)
static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
{
+ u8 spriteId;
+ u8 paletteSlot;
+ u8 eventObjectId;
+ struct Sprite *sprite;
struct EventObject *eventObject;
const struct EventObjectGraphicsInfo *graphicsInfo;
- struct Sprite *sprite;
- u8 eventObjectId;
- u8 paletteSlot;
- u8 spriteId;
eventObjectId = InitEventObjectStateFromTemplate(eventObjectTemplate, mapNum, mapGroup);
- if (eventObjectId == NUM_EVENT_OBJECTS)
- return NUM_EVENT_OBJECTS;
+ if (eventObjectId == EVENT_OBJECTS_COUNT)
+ return EVENT_OBJECTS_COUNT;
eventObject = &gEventObjects[eventObjectId];
graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
@@ -1508,7 +1533,7 @@ static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTempl
paletteSlot -= 16;
sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
}
- if (eventObject->movementType == 0x4c)
+ if (eventObject->movementType == MOVEMENT_TYPE_INVISIBLE)
{
eventObject->invisible = TRUE;
}
@@ -1517,7 +1542,7 @@ static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTempl
if (spriteId == MAX_SPRITES)
{
gEventObjects[eventObjectId].active = FALSE;
- return NUM_EVENT_OBJECTS;
+ return EVENT_OBJECTS_COUNT;
}
sprite = &gSprites[spriteId];
sub_8092FF0(eventObject->currentCoords.x + cameraX, eventObject->currentCoords.y + cameraY, &sprite->pos1.x, &sprite->pos1.y);
@@ -1541,21 +1566,20 @@ static u8 TrySetupEventObjectSprite(struct EventObjectTemplate *eventObjectTempl
static u8 TrySpawnEventObject(struct EventObjectTemplate *eventObjectTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY)
{
- const struct EventObjectGraphicsInfo *graphicsInfo;
+ u8 eventObjectId;
struct SpriteTemplate spriteTemplate;
- const struct SubspriteTable *subspriteTables;
struct SpriteFrameImage spriteFrameImage;
- u8 eventObjectId;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
+ const struct SubspriteTable *subspriteTables = NULL;
- subspriteTables = NULL;
graphicsInfo = GetEventObjectGraphicsInfo(eventObjectTemplate->graphicsId);
MakeObjectTemplateFromEventObjectTemplate(eventObjectTemplate, &spriteTemplate, &subspriteTables);
spriteFrameImage.size = graphicsInfo->size;
spriteTemplate.images = &spriteFrameImage;
eventObjectId = TrySetupEventObjectSprite(eventObjectTemplate, &spriteTemplate, mapNum, mapGroup, cameraX, cameraY);
- if (eventObjectId == NUM_EVENT_OBJECTS)
+ if (eventObjectId == EVENT_OBJECTS_COUNT)
{
- return NUM_EVENT_OBJECTS;
+ return EVENT_OBJECTS_COUNT;
}
gSprites[gEventObjects[eventObjectId].spriteId].images = graphicsInfo->images;
if (subspriteTables != NULL)
@@ -1603,29 +1627,29 @@ u8 show_sprite(u8 localId, u8 mapNum, u8 mapGroup)
eventObjectTemplate = GetEventObjectTemplateByLocalIdAndMap(localId, mapNum, mapGroup);
if (eventObjectTemplate == NULL)
{
- return NUM_EVENT_OBJECTS;
+ return EVENT_OBJECTS_COUNT;
}
GetEventObjectMovingCameraOffset(&cameraX, &cameraY);
return TrySpawnEventObject(eventObjectTemplate, mapNum, mapGroup, cameraX, cameraY);
}
-static void MakeObjectTemplateFromEventObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
+static void MakeObjectTemplateFromEventObjectGraphicsInfo(u16 graphicsId, void (*callback)(struct Sprite *), struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables)
{
- const struct EventObjectGraphicsInfo *gfxInfo = GetEventObjectGraphicsInfo(graphicsId);
+ const struct EventObjectGraphicsInfo *graphicsInfo = GetEventObjectGraphicsInfo(graphicsId);
- sprTemplate->tileTag = gfxInfo->tileTag;
- sprTemplate->paletteTag = gfxInfo->paletteTag1;
- sprTemplate->oam = gfxInfo->oam;
- sprTemplate->anims = gfxInfo->anims;
- sprTemplate->images = gfxInfo->images;
- sprTemplate->affineAnims = gfxInfo->affineAnims;
- sprTemplate->callback = callback;
- *subspriteTables = gfxInfo->subspriteTables;
+ spriteTemplate->tileTag = graphicsInfo->tileTag;
+ spriteTemplate->paletteTag = graphicsInfo->paletteTag1;
+ spriteTemplate->oam = graphicsInfo->oam;
+ spriteTemplate->anims = graphicsInfo->anims;
+ spriteTemplate->images = graphicsInfo->images;
+ spriteTemplate->affineAnims = graphicsInfo->affineAnims;
+ spriteTemplate->callback = callback;
+ *subspriteTables = graphicsInfo->subspriteTables;
}
-static void MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *sprTemplate, const struct SubspriteTable **subspriteTables)
+static void MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables)
{
- MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, sMovementTypeCallbacks[callbackIndex], sprTemplate, subspriteTables);
+ MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, sMovementTypeCallbacks[callbackIndex], spriteTemplate, subspriteTables);
}
static void MakeObjectTemplateFromEventObjectTemplate(struct EventObjectTemplate *eventObjectTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables)
@@ -1638,37 +1662,37 @@ u8 AddPseudoEventObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x
struct SpriteTemplate *spriteTemplate;
const struct SubspriteTable *subspriteTables;
struct Sprite *sprite;
- u8 spriteIdx;
+ u8 spriteId;
spriteTemplate = malloc(sizeof(struct SpriteTemplate));
MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, callback, spriteTemplate, &subspriteTables);
- if (spriteTemplate->paletteTag != 0xffff)
+ if (spriteTemplate->paletteTag != 0xFFFF)
{
- sub_808E894(spriteTemplate->paletteTag);
+ LoadEventObjectPalette(spriteTemplate->paletteTag);
}
- spriteIdx = CreateSprite(spriteTemplate, x, y, subpriority);
+ spriteId = CreateSprite(spriteTemplate, x, y, subpriority);
free(spriteTemplate);
- if (spriteIdx != MAX_SPRITES && subspriteTables != NULL)
+ if (spriteId != MAX_SPRITES && subspriteTables != NULL)
{
- sprite = &gSprites[spriteIdx];
+ sprite = &gSprites[spriteId];
SetSubspriteTables(sprite, subspriteTables);
sprite->subspriteMode = 2;
}
- return spriteIdx;
+ return spriteId;
}
u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
{
- const struct EventObjectGraphicsInfo *graphicsInfo;
- struct SpriteTemplate spriteTemplate;
- const struct SubspriteTable *subspriteTables;
u8 spriteId;
struct Sprite *sprite;
+ struct SpriteTemplate spriteTemplate;
+ const struct SubspriteTable *subspriteTables;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
graphicsInfo = GetEventObjectGraphicsInfo(graphicsId);
MakeObjectTemplateFromEventObjectGraphicsInfo(graphicsId, UpdateEventObjectSpriteSubpriorityAndVisibility, &spriteTemplate, &subspriteTables);
- *(u16 *)&spriteTemplate.paletteTag = 0xffff;
+ *(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
x += 7;
y += 7;
sub_80930E0(&x, &y, 8, 16);
@@ -1710,20 +1734,14 @@ u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
void TrySpawnEventObjects(s16 cameraX, s16 cameraY)
{
u8 i;
- s16 left;
- s16 right;
- s16 top;
- s16 bottom;
u8 objectCount;
- s16 npcX;
- s16 npcY;
if (gMapHeader.events != NULL)
{
- left = gSaveBlock1Ptr->pos.x - 2;
- right = gSaveBlock1Ptr->pos.x + 17;
- top = gSaveBlock1Ptr->pos.y;
- bottom = gSaveBlock1Ptr->pos.y + 16;
+ s16 left = gSaveBlock1Ptr->pos.x - 2;
+ s16 right = gSaveBlock1Ptr->pos.x + 17;
+ s16 top = gSaveBlock1Ptr->pos.y;
+ s16 bottom = gSaveBlock1Ptr->pos.y + 16;
if (InBattlePyramid())
{
@@ -1741,8 +1759,8 @@ void TrySpawnEventObjects(s16 cameraX, s16 cameraY)
for (i = 0; i < objectCount; i++)
{
struct EventObjectTemplate *template = &gSaveBlock1Ptr->eventObjectTemplates[i];
- npcX = template->x + 7;
- npcY = template->y + 7;
+ s16 npcX = template->x + 7;
+ s16 npcY = template->y + 7;
if (top <= npcY && bottom >= npcY && left <= npcX && right >= npcX
&& !FlagGet(template->flagId))
@@ -1753,12 +1771,10 @@ void TrySpawnEventObjects(s16 cameraX, s16 cameraY)
void RemoveEventObjectsOutsideView(void)
{
- u8 i;
- u8 j;
+ u8 i, j;
bool8 isActiveLinkPlayer;
- struct EventObject *eventObject;
- for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
for (j = 0, isActiveLinkPlayer = FALSE; j < ARRAY_COUNT(gLinkPlayerEventObjects); j++)
{
@@ -1767,7 +1783,7 @@ void RemoveEventObjectsOutsideView(void)
}
if (!isActiveLinkPlayer)
{
- eventObject = &gEventObjects[i];
+ struct EventObject *eventObject = &gEventObjects[i];
if (eventObject->active && !eventObject->isPlayer)
RemoveEventObjectIfOutsideView(eventObject);
@@ -1777,21 +1793,16 @@ void RemoveEventObjectsOutsideView(void)
static void RemoveEventObjectIfOutsideView(struct EventObject *eventObject)
{
- s16 left;
- s16 right;
- s16 top;
- s16 bottom;
-
- left = gSaveBlock1Ptr->pos.x - 2;
- right = gSaveBlock1Ptr->pos.x + 17;
- top = gSaveBlock1Ptr->pos.y;
- bottom = gSaveBlock1Ptr->pos.y + 16;
+ s16 left = gSaveBlock1Ptr->pos.x - 2;
+ s16 right = gSaveBlock1Ptr->pos.x + 17;
+ s16 top = gSaveBlock1Ptr->pos.y;
+ s16 bottom = gSaveBlock1Ptr->pos.y + 16;
if (eventObject->currentCoords.x >= left && eventObject->currentCoords.x <= right
- && eventObject->currentCoords.y >= top && eventObject->currentCoords.y <= bottom)
+ && eventObject->currentCoords.y >= top && eventObject->currentCoords.y <= bottom)
return;
if (eventObject->initialCoords.x >= left && eventObject->initialCoords.x <= right
- && eventObject->initialCoords.y >= top && eventObject->initialCoords.y <= bottom)
+ && eventObject->initialCoords.y >= top && eventObject->initialCoords.y <= bottom)
return;
RemoveEventObject(eventObject);
}
@@ -1801,26 +1812,26 @@ void sub_808E16C(s16 x, s16 y)
u8 i;
ClearPlayerAvatarInfo();
- for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
if (gEventObjects[i].active)
{
sub_808E1B8(i, x, y);
}
}
- sub_808D450();
+ CreateReflectionEffectSprites();
}
static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
{
u8 spriteId;
u8 paletteSlot;
+ struct Sprite *sprite;
struct EventObject *eventObject;
+ struct SpriteTemplate spriteTemplate;
+ struct SpriteFrameImage spriteFrameImage;
const struct SubspriteTable *subspriteTables;
const struct EventObjectGraphicsInfo *graphicsInfo;
- struct SpriteFrameImage spriteFrameImage;
- struct SpriteTemplate spriteTemplate;
- struct Sprite *sprite;
#define i spriteId
for (i = 0; i < ARRAY_COUNT(gLinkPlayerEventObjects); i++)
@@ -1838,7 +1849,7 @@ static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
spriteFrameImage.size = graphicsInfo->size;
MakeObjectTemplateFromEventObjectGraphicsInfoWithCallbackIndex(eventObject->graphicsId, eventObject->movementType, &spriteTemplate, &subspriteTables);
spriteTemplate.images = &spriteFrameImage;
- *(u16 *)&spriteTemplate.paletteTag = 0xffff;
+ *(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
paletteSlot = graphicsInfo->paletteSlot;
if (paletteSlot == 0)
{
@@ -1853,7 +1864,7 @@ static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
paletteSlot -= 16;
sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
}
- *(u16 *)&spriteTemplate.paletteTag = 0xffff;
+ *(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
spriteId = CreateSprite(&spriteTemplate, 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
@@ -1864,7 +1875,7 @@ static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
sprite->pos1.x += 8;
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
sprite->images = graphicsInfo->images;
- if (eventObject->movementType == 0x0b)
+ if (eventObject->movementType == MOVEMENT_TYPE_PLAYER)
{
SetPlayerAvatarEventObjectIdAndObjectId(eventObjectId, spriteId);
eventObject->warpArrowSpriteId = CreateWarpArrowSprite();
@@ -1877,7 +1888,7 @@ static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
sprite->coordOffsetEnabled = TRUE;
sprite->data[0] = eventObjectId;
eventObject->spriteId = spriteId;
- if (!eventObject->inanimate && eventObject->movementType != 0x0b)
+ if (!eventObject->inanimate && eventObject->movementType != MOVEMENT_TYPE_PLAYER)
{
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObject->facingDirection));
}
@@ -1888,7 +1899,7 @@ static void sub_808E1B8(u8 eventObjectId, s16 x, s16 y)
static void sub_808E38C(struct EventObject *eventObject)
{
- eventObject->singleMovementActive = 0;
+ eventObject->singleMovementActive = FALSE;
eventObject->triggerGroundEffectsOnMove = TRUE;
eventObject->hasShadow = FALSE;
eventObject->hasReflection = FALSE;
@@ -1983,7 +1994,7 @@ void PlayerObjectTurn(struct PlayerAvatar *playerAvatar, u8 direction)
EventObjectTurn(&gEventObjects[playerAvatar->eventObjectId], direction);
}
-/*static*/ void get_berry_tree_graphics(struct EventObject *eventObject, struct Sprite *sprite)
+static void get_berry_tree_graphics(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 berryStage;
u8 berryId;
@@ -1996,7 +2007,7 @@ void PlayerObjectTurn(struct PlayerAvatar *playerAvatar, u8 direction)
eventObject->invisible = FALSE;
sprite->invisible = FALSE;
berryId = GetBerryTypeByBerryTreeId(eventObject->trainerRange_berryTreeId) - 1;
- berryStage -= 1;
+ berryStage--;
if (berryId >= NUM_BERRIES)
{
berryId = 0;
@@ -2059,7 +2070,7 @@ void sub_808E75C(s16 x, s16 y)
struct EventObject *eventObject;
eventObjectId = GetEventObjectIdByXY(x, y);
- if (eventObjectId != NUM_EVENT_OBJECTS)
+ if (eventObjectId != EVENT_OBJECTS_COUNT)
{
eventObject = &gEventObjects[eventObjectId];
eventObject->triggerGroundEffectsOnMove = TRUE;
@@ -2113,42 +2124,40 @@ void FreeAndReserveObjectSpritePalettes(void)
gReservedSpritePaletteCount = 12;
}
-static void sub_808E894(u16 paletteTag)
+static void LoadEventObjectPalette(u16 paletteTag)
{
- u16 paletteSlot;
+ u16 i = FindEventObjectPaletteIndexByTag(paletteTag);
- paletteSlot = FindEventObjectPaletteIndexByTag(paletteTag);
- if (paletteSlot != EVENT_OBJ_PAL_TAG_NONE) // always true
+ if (i != EVENT_OBJ_PAL_TAG_NONE) // always true
{
- sub_808E8F4(&sEventObjectSpritePalettes[paletteSlot]);
+ sub_808E8F4(&sEventObjectSpritePalettes[i]);
}
}
-void sub_808E8C0(u16 *paletteTags)
+void Unused_LoadEventObjectPaletteSet(u16 *paletteTags)
{
u8 i;
for (i = 0; paletteTags[i] != EVENT_OBJ_PAL_TAG_NONE; i++)
{
- sub_808E894(paletteTags[i]);
+ LoadEventObjectPalette(paletteTags[i]);
}
}
static u8 sub_808E8F4(const struct SpritePalette *spritePalette)
{
- if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xff)
+ if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF)
{
- return 0xff;
+ return 0xFF;
}
return LoadSpritePalette(spritePalette);
}
void PatchObjectPalette(u16 paletteTag, u8 paletteSlot)
{
- u16 paletteIdx;
+ u8 paletteIndex = FindEventObjectPaletteIndexByTag(paletteTag);
- paletteIdx = FindEventObjectPaletteIndexByTag(paletteTag);
- LoadPalette(sEventObjectSpritePalettes[paletteIdx].data, 16 * paletteSlot + 256, 0x20);
+ LoadPalette(sEventObjectSpritePalettes[paletteIndex].data, 16 * paletteSlot + 0x100, 0x20);
}
void PatchObjectPaletteRange(const u16 *paletteTags, u8 minSlot, u8 maxSlot)
@@ -2172,7 +2181,7 @@ static u8 FindEventObjectPaletteIndexByTag(u16 tag)
return i;
}
}
- return 0xff;
+ return 0xFF;
}
void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot)
@@ -2227,7 +2236,7 @@ void ShiftEventObjectCoords(struct EventObject *eventObject, s16 x, s16 y)
eventObject->currentCoords.y = y;
}
-/*static*/ void SetEventObjectCoords(struct EventObject *eventObject, s16 x, s16 y)
+static void SetEventObjectCoords(struct EventObject *eventObject, s16 x, s16 y)
{
eventObject->previousCoords.x = x;
eventObject->previousCoords.y = y;
@@ -2282,7 +2291,7 @@ void UpdateEventObjectCoordsForCameraUpdate(void)
{
dx = gCamera.x;
dy = gCamera.y;
- for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
if (gEventObjects[i].active)
{
@@ -2300,7 +2309,8 @@ void UpdateEventObjectCoordsForCameraUpdate(void)
u8 GetEventObjectIdByXYZ(u16 x, u16 y, u8 z)
{
u8 i;
- for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
if (gEventObjects[i].active)
{
@@ -2310,7 +2320,7 @@ u8 GetEventObjectIdByXYZ(u16 x, u16 y, u8 z)
}
}
}
- return NUM_EVENT_OBJECTS;
+ return EVENT_OBJECTS_COUNT;
}
static bool8 EventObjectDoesZCoordMatch(struct EventObject *eventObject, u8 z)
@@ -2331,9 +2341,8 @@ void UpdateEventObjectsForCameraUpdate(s16 x, s16 y)
u8 AddCameraObject(u8 linkedSpriteId)
{
- u8 spriteId;
+ u8 spriteId = CreateSprite(&gCameraSpriteTemplate, 0, 0, 4);
- spriteId = CreateSprite(&gCameraSpriteTemplate, 0, 0, 4);
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].data[0] = linkedSpriteId;
return spriteId;
@@ -2358,11 +2367,9 @@ static void CameraObject_0(struct Sprite *sprite)
static void CameraObject_1(struct Sprite *sprite)
{
- s16 x;
- s16 y;
+ s16 x = gSprites[sprite->data[0]].pos1.x;
+ s16 y = gSprites[sprite->data[0]].pos1.y;
- y = gSprites[sprite->data[0]].pos1.y;
- x = gSprites[sprite->data[0]].pos1.x;
sprite->data[2] = x - sprite->pos1.x;
sprite->data[3] = y - sprite->pos1.y;
sprite->pos1.x = x;
@@ -2379,13 +2386,13 @@ static void CameraObject_2(struct Sprite *sprite)
static struct Sprite *FindCameraObject(void)
{
- u8 spriteId;
+ u8 i;
- for (spriteId = 0; spriteId < MAX_SPRITES; spriteId++)
+ for (i = 0; i < MAX_SPRITES; i++)
{
- if (gSprites[spriteId].inUse && gSprites[spriteId].callback == ObjectCB_CameraObject)
+ if (gSprites[i].inUse && gSprites[i].callback == ObjectCB_CameraObject)
{
- return &gSprites[spriteId];
+ return &gSprites[i];
}
}
return NULL;
@@ -2454,7 +2461,7 @@ u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
{
s16 i;
- for (i = MAX_SPRITES - 1; i > -1; i --)
+ for (i = MAX_SPRITES - 1; i > -1; i--)
{
if (!gSprites[i].inUse)
{
@@ -2574,7 +2581,7 @@ struct EventObjectTemplate *GetBaseTemplateForEventObject(const struct EventObje
{
return NULL;
}
- for (i = 0; i < 64; i++) // Using ARRAY_COUNT here results in the wrong conditional branch instruction (bls instead of ble)
+ for (i = 0; i < EVENT_OBJECT_TEMPLATES_COUNT; i++)
{
if (eventObject->localId == gSaveBlock1Ptr->eventObjectTemplates[i].localId)
{
@@ -2978,10 +2985,8 @@ u8 GetLimitedVectorDirection_SouthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy)
u8 TryGetTrainerEncounterDirection(struct EventObject *eventObject, u8 movementType)
{
- s16 dx;
- s16 dy;
- s16 absdx;
- s16 absdy;
+ s16 dx, dy;
+ s16 absdx, absdy;
if (!EventObjectIsTrainerAndCloseToPlayer(eventObject))
{
@@ -4449,7 +4454,7 @@ bool8 CopyablePlayerMovement_GoSpeed1(struct EventObject *eventObject, struct Sp
{
EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
}
- eventObject->singleMovementActive = 1;
+ eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2;
return TRUE;
}
@@ -4468,7 +4473,7 @@ bool8 CopyablePlayerMovement_GoSpeed2(struct EventObject *eventObject, struct Sp
{
EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
}
- eventObject->singleMovementActive = 1;
+ eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2;
return TRUE;
}
@@ -4487,7 +4492,7 @@ bool8 CopyablePlayerMovement_Slide(struct EventObject *eventObject, struct Sprit
{
EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
}
- eventObject->singleMovementActive = 1;
+ eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2;
return TRUE;
}
@@ -4499,7 +4504,7 @@ bool8 cph_IM_DIFFERENT(struct EventObject *eventObject, struct Sprite *sprite, u
direction = playerDirection;
direction = state_to_direction(gInitialMovementTypeFacingDirections[eventObject->movementType], eventObject->directionSequenceIndex, direction);
EventObjectSetSingleMovement(eventObject, sprite, GetJumpInPlaceMovementAction(direction));
- eventObject->singleMovementActive = 1;
+ eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2;
return TRUE;
}
@@ -4518,7 +4523,7 @@ bool8 CopyablePlayerMovement_GoSpeed4(struct EventObject *eventObject, struct Sp
{
EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
}
- eventObject->singleMovementActive = 1;
+ eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2;
return TRUE;
}
@@ -4539,7 +4544,7 @@ bool8 CopyablePlayerMovement_Jump(struct EventObject *eventObject, struct Sprite
{
EventObjectSetSingleMovement(eventObject, sprite, GetFaceDirectionMovementAction(direction));
}
- eventObject->singleMovementActive = 1;
+ eventObject->singleMovementActive = TRUE;
sprite->data[1] = 2;
return TRUE;
}
@@ -4951,7 +4956,7 @@ static bool8 DoesObjectCollideWithObjectAt(struct EventObject *eventObject, s16
u8 i;
struct EventObject *curObject;
- for (i = 0; i < NUM_EVENT_OBJECTS; i++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
{
curObject = &gEventObjects[i];
if (curObject->active && curObject != eventObject)
@@ -5022,8 +5027,8 @@ void sub_8092FF0(s16 x, s16 y, s16 *dest_x, s16 *dest_y)
{
*dest_x = (x - gSaveBlock1Ptr->pos.x) << 4;
*dest_y = (y - gSaveBlock1Ptr->pos.y) << 4;
- *dest_x -= gUnknown_03005DEC;
- *dest_y -= gUnknown_03005DE8;
+ *dest_x -= gTotalCameraPixelOffsetX;
+ *dest_y -= gTotalCameraPixelOffsetY;
}
void sub_8093038(s16 x, s16 y, s16 *dest_x, s16 *dest_y)
@@ -5031,21 +5036,21 @@ void sub_8093038(s16 x, s16 y, s16 *dest_x, s16 *dest_y)
s16 dx;
s16 dy;
- dx = -gUnknown_03005DEC - gUnknown_03005DD0.x;
- dy = -gUnknown_03005DE8 - gUnknown_03005DD0.y;
- if (gUnknown_03005DD0.x > 0)
+ dx = -gTotalCameraPixelOffsetX - gFieldCamera.x;
+ dy = -gTotalCameraPixelOffsetY - gFieldCamera.y;
+ if (gFieldCamera.x > 0)
{
dx += 0x10;
}
- if (gUnknown_03005DD0.x < 0)
+ if (gFieldCamera.x < 0)
{
dx -= 0x10;
}
- if (gUnknown_03005DD0.y > 0)
+ if (gFieldCamera.y > 0)
{
dy += 0x10;
}
- if (gUnknown_03005DD0.y < 0)
+ if (gFieldCamera.y < 0)
{
dy -= 0x10;
}
@@ -5064,19 +5069,19 @@ static void GetEventObjectMovingCameraOffset(s16 *x, s16 *y)
{
*x = 0;
*y = 0;
- if (gUnknown_03005DD0.x > 0)
+ if (gFieldCamera.x > 0)
{
(*x)++;
}
- if (gUnknown_03005DD0.x < 0)
+ if (gFieldCamera.x < 0)
{
(*x) --;
}
- if (gUnknown_03005DD0.y > 0)
+ if (gFieldCamera.y > 0)
{
(*y)++;
}
- if (gUnknown_03005DD0.y < 0)
+ if (gFieldCamera.y < 0)
{
(*y) --;
}
@@ -5332,7 +5337,7 @@ void npc_apply_direction(struct EventObject *eventObject, struct Sprite *sprite,
ShiftEventObjectCoords(eventObject, x, y);
oamt_npc_ministep_reset(sprite, direction, speed);
sprite->animPaused = FALSE;
- if (gLockedAnimEventObjects != NULL && FindLockedEventObjectIndex(eventObject) != NUM_EVENT_OBJECTS)
+ if (gLockedAnimEventObjects != NULL && FindLockedEventObjectIndex(eventObject) != EVENT_OBJECTS_COUNT)
{
sprite->animPaused = TRUE;
}
@@ -7435,7 +7440,7 @@ bool8 MovementAction_AcroWheelieMoveLeft_Step1(struct EventObject *eventObject,
bool8 MovementAction_AcroWheelieMoveRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8096200(eventObject, sprite, DIR_EAST, 1);
+ sub_8096200(eventObject, sprite, DIR_EAST, 1);
return MovementAction_AcroWheelieMoveRight_Step1(eventObject, sprite);
}
@@ -7490,7 +7495,7 @@ bool8 MovementAction_AcroEndWheelieMoveUp_Step1(struct EventObject *eventObject,
bool8 MovementAction_AcroEndWheelieMoveLeft_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8096330(eventObject, sprite, DIR_WEST, 1);
+ sub_8096330(eventObject, sprite, DIR_WEST, 1);
return MovementAction_AcroEndWheelieMoveLeft_Step1(eventObject, sprite);
}
@@ -7506,7 +7511,7 @@ bool8 MovementAction_AcroEndWheelieMoveLeft_Step1(struct EventObject *eventObjec
bool8 MovementAction_AcroEndWheelieMoveRight_Step0(struct EventObject *eventObject, struct Sprite *sprite)
{
- sub_8096330(eventObject, sprite, DIR_EAST, 1);
+ sub_8096330(eventObject, sprite, DIR_EAST, 1);
return MovementAction_AcroEndWheelieMoveRight_Step1(eventObject, sprite);
}
@@ -7578,15 +7583,13 @@ static void TryEnableEventObjectAnim(struct EventObject *eventObject, struct Spr
static void UpdateEventObjectVisibility(struct EventObject *eventObject, struct Sprite *sprite)
{
sub_8096530(eventObject, sprite);
- npc_update_obj_anim_flag(eventObject, sprite);
+ UpdateEventObjSpriteVisibility(eventObject, sprite);
}
static void sub_8096530(struct EventObject *eventObject, struct Sprite *sprite)
{
- u16 x;
- u16 y;
- u16 x2;
- u16 y2;
+ u16 x, y;
+ u16 x2, y2;
const struct EventObjectGraphicsInfo *graphicsInfo;
eventObject->offScreen = FALSE;
@@ -7615,7 +7618,7 @@ static void sub_8096530(struct EventObject *eventObject, struct Sprite *sprite)
}
}
-static void npc_update_obj_anim_flag(struct EventObject *eventObject, struct Sprite *sprite)
+static void UpdateEventObjSpriteVisibility(struct EventObject *eventObject, struct Sprite *sprite)
{
sprite->invisible = FALSE;
if (eventObject->invisible || eventObject->offScreen)
@@ -7624,7 +7627,7 @@ static void npc_update_obj_anim_flag(struct EventObject *eventObject, struct Spr
}
}
-/*static*/ void GetAllGroundEffectFlags_OnSpawn(struct EventObject *eventObj, u32 *flags)
+static void GetAllGroundEffectFlags_OnSpawn(struct EventObject *eventObj, u32 *flags)
{
EventObjectUpdateMetatileBehaviors(eventObj);
GetGroundEffectFlags_Reflection(eventObj, flags);
@@ -7650,7 +7653,7 @@ static void GetAllGroundEffectFlags_OnBeginStep(struct EventObject *eventObj, u3
GetGroundEffectFlags_HotSprings(eventObj, flags);
}
-/*static*/ void GetAllGroundEffectFlags_OnFinishStep(struct EventObject *eventObj, u32 *flags)
+static void GetAllGroundEffectFlags_OnFinishStep(struct EventObject *eventObj, u32 *flags)
{
EventObjectUpdateMetatileBehaviors(eventObj);
GetGroundEffectFlags_ShallowFlowingWater(eventObj, flags);
@@ -7930,7 +7933,7 @@ u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z)
return 0;
}
-void EventObjectSetSpriteOamTableForLongGrass(struct EventObject *eventObj, struct Sprite *sprite)
+static void SetEventObjectSpriteOamTableForLongGrass(struct EventObject *eventObj, struct Sprite *sprite)
{
if (eventObj->disableCoveringGroundEffects)
return;
@@ -7983,7 +7986,7 @@ static const u8 sEventObjectPriorities_08376070[] = {
1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1,
};
-void EventObjectUpdateZCoordAndPriority(struct EventObject *eventObj, struct Sprite *sprite)
+void UpdateEventObjectZCoordAndPriority(struct EventObject *eventObj, struct Sprite *sprite)
{
if (eventObj->fixedPriority)
return;
@@ -8206,7 +8209,11 @@ void GroundEffect_JumpOnTallGrass(struct EventObject *eventObj, struct Sprite *s
FieldEffectStart(FLDEFF_JUMP_TALL_GRASS);
spriteId = FindTallGrassFieldEffectSpriteId(
- eventObj->localId, eventObj->mapNum, eventObj->mapGroup, eventObj->currentCoords.x, eventObj->currentCoords.y);
+ eventObj->localId,
+ eventObj->mapNum,
+ eventObj->mapGroup,
+ eventObj->currentCoords.x,
+ eventObj->currentCoords.y);
if (spriteId == MAX_SPRITES)
GroundEffect_SpawnOnTallGrass(eventObj, sprite);
@@ -8288,7 +8295,7 @@ static void (*const sGroundEffectFuncs[])(struct EventObject *eventObj, struct S
GroundEffect_Seaweed
};
-/*static*/ void DoFlaggedGroundEffects(struct EventObject *eventObj, struct Sprite *sprite, u32 flags)
+static void DoFlaggedGroundEffects(struct EventObject *eventObj, struct Sprite *sprite, u32 flags)
{
u8 i;
@@ -8329,9 +8336,9 @@ static void DoGroundEffects_OnSpawn(struct EventObject *eventObj, struct Sprite
if (eventObj->triggerGroundEffectsOnMove)
{
flags = 0;
- EventObjectUpdateZCoordAndPriority(eventObj, sprite);
+ UpdateEventObjectZCoordAndPriority(eventObj, sprite);
GetAllGroundEffectFlags_OnSpawn(eventObj, &flags);
- EventObjectSetSpriteOamTableForLongGrass(eventObj, sprite);
+ SetEventObjectSpriteOamTableForLongGrass(eventObj, sprite);
DoFlaggedGroundEffects(eventObj, sprite, flags);
eventObj->triggerGroundEffectsOnMove = 0;
eventObj->disableCoveringGroundEffects = 0;
@@ -8345,9 +8352,9 @@ static void DoGroundEffects_OnBeginStep(struct EventObject *eventObj, struct Spr
if (eventObj->triggerGroundEffectsOnMove)
{
flags = 0;
- EventObjectUpdateZCoordAndPriority(eventObj, sprite);
+ UpdateEventObjectZCoordAndPriority(eventObj, sprite);
GetAllGroundEffectFlags_OnBeginStep(eventObj, &flags);
- EventObjectSetSpriteOamTableForLongGrass(eventObj, sprite);
+ SetEventObjectSpriteOamTableForLongGrass(eventObj, sprite);
filters_out_some_ground_effects(eventObj, &flags);
DoFlaggedGroundEffects(eventObj, sprite, flags);
eventObj->triggerGroundEffectsOnMove = 0;
@@ -8362,9 +8369,9 @@ static void DoGroundEffects_OnFinishStep(struct EventObject *eventObj, struct Sp
if (eventObj->triggerGroundEffectsOnStop)
{
flags = 0;
- EventObjectUpdateZCoordAndPriority(eventObj, sprite);
+ UpdateEventObjectZCoordAndPriority(eventObj, sprite);
GetAllGroundEffectFlags_OnFinishStep(eventObj, &flags);
- EventObjectSetSpriteOamTableForLongGrass(eventObj, sprite);
+ SetEventObjectSpriteOamTableForLongGrass(eventObj, sprite);
FilterOutStepOnPuddleGroundEffectIfJumping(eventObj, &flags);
DoFlaggedGroundEffects(eventObj, sprite, flags);
eventObj->triggerGroundEffectsOnStop = 0;
@@ -8397,11 +8404,11 @@ void FreezeEventObjects(void)
FreezeEventObject(&gEventObjects[i]);
}
-void FreezeEventObjectsExceptOne(u8 a1)
+void FreezeEventObjectsExceptOne(u8 eventObjectId)
{
u8 i;
for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
- if (i != a1 && gEventObjects[i].active && i != gPlayerAvatar.eventObjectId)
+ if (i != eventObjectId && gEventObjects[i].active && i != gPlayerAvatar.eventObjectId)
FreezeEventObject(&gEventObjects[i]);
}
@@ -8423,44 +8430,44 @@ void UnfreezeEventObjects(void)
UnfreezeEventObject(&gEventObjects[i]);
}
-void Step1(struct Sprite *sprite, u8 dir)
+static void Step1(struct Sprite *sprite, u8 dir)
{
sprite->pos1.x += sDirectionToVectors[dir].x;
sprite->pos1.y += sDirectionToVectors[dir].y;
}
-void Step2(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;
}
-void Step3(struct Sprite *sprite, u8 dir)
+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 Step4(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;
}
-void Step8(struct Sprite *sprite, u8 dir)
+static void Step8(struct Sprite *sprite, u8 dir)
{
sprite->pos1.x += 8 * (u16) sDirectionToVectors[dir].x;
sprite->pos1.y += 8 * (u16) sDirectionToVectors[dir].y;
}
-void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3)
+static void oamt_npc_ministep_reset(struct Sprite *sprite, u8 direction, u8 a3)
{
- sprite->data[3] = a2;
+ sprite->data[3] = direction;
sprite->data[4] = a3;
sprite->data[5] = 0;
}
-typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir);
+typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 direction);
static const SpriteStepFunc gUnknown_0850E6C4[] = {
Step1,
@@ -8540,9 +8547,9 @@ bool8 obj_npc_ministep(struct Sprite *sprite)
return TRUE;
}
-void sub_80976DC(struct Sprite *sprite, u8 a2)
+void sub_80976DC(struct Sprite *sprite, u8 direction)
{
- sprite->data[3] = a2;
+ sprite->data[3] = direction;
sprite->data[4] = 0;
sprite->data[5] = 0;
}
@@ -8563,7 +8570,7 @@ bool8 sub_80976EC(struct Sprite *sprite)
return FALSE;
}
-const s8 gUnknown_0850E772[] = {
+static const s8 gUnknown_0850E772[] = {
1, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 1, 2, 2, 1, 2,
2, 1, 2, 2, 1, 2, 1, 1,
@@ -8575,7 +8582,7 @@ const s8 gUnknown_0850E772[] = {
0, 1, 0, 0, 0, 0, 0, 0,
};
-const s8 gUnknown_0850E7BA[] = {
+static const s8 gUnknown_0850E7BA[] = {
0, 0, 1, 0, 0, 1, 0, 0,
1, 0, 1, 1, 0, 1, 1, 0,
1, 1, 0, 1, 1, 0, 1, 1,
@@ -8745,7 +8752,7 @@ u8 sub_80978E4(struct Sprite *sprite)
return v2;
}
-void SetMovementDelay(struct Sprite *sprite, s16 timer)
+static void SetMovementDelay(struct Sprite *sprite, s16 timer)
{
sprite->data[3] = timer;
}
@@ -8760,11 +8767,11 @@ static bool8 WaitForMovementDelay(struct Sprite *sprite)
return FALSE;
}
-void SetAndStartSpriteAnim(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 = FALSE;
+ SeekSpriteAnim(sprite, animCmdIndex);
}
bool8 SpriteAnimEnded(struct Sprite *sprite)
@@ -8802,7 +8809,7 @@ void UpdateEventObjectSpriteVisibility(struct Sprite *sprite, bool8 invisible)
sprite->invisible = TRUE;
}
-void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *sprite)
+static void UpdateEventObjectSpriteSubpriorityAndVisibility(struct Sprite *sprite)
{
sub_8097D68(sprite);
SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1);
@@ -8849,15 +8856,15 @@ void sub_8097BB4(u8 var1, u8 graphicsId)
if(spriteId != MAX_SPRITES)
{
struct Sprite *sprite = &gSprites[spriteId];
- const struct EventObjectGraphicsInfo *gfxInfo = GetEventObjectGraphicsInfo(graphicsId);
+ const struct EventObjectGraphicsInfo *graphicsInfo = GetEventObjectGraphicsInfo(graphicsId);
u16 tileNum = sprite->oam.tileNum;
- sprite->oam = *gfxInfo->oam;
+ sprite->oam = *graphicsInfo->oam;
sprite->oam.tileNum = tileNum;
- sprite->oam.paletteNum = gfxInfo->paletteSlot;
- sprite->images = gfxInfo->images;
+ sprite->oam.paletteNum = graphicsInfo->paletteSlot;
+ sprite->images = graphicsInfo->images;
- if(gfxInfo->subspriteTables == NULL)
+ if(graphicsInfo->subspriteTables == NULL)
{
sprite->subspriteTables = NULL;
sprite->subspriteTableNum = 0;
@@ -8865,7 +8872,7 @@ void sub_8097BB4(u8 var1, u8 graphicsId)
}
else
{
- SetSubspriteTables(sprite, gfxInfo->subspriteTables);
+ SetSubspriteTables(sprite, graphicsInfo->subspriteTables);
sprite->subspriteMode = 2;
}
StartSpriteAnim(sprite, 0);
@@ -8990,9 +8997,9 @@ void DoShadowFieldEffect(struct EventObject *eventObject)
static void DoRippleFieldEffect(struct EventObject *eventObject, struct Sprite *sprite)
{
- const struct EventObjectGraphicsInfo *gfxInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
+ const struct EventObjectGraphicsInfo *graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
gFieldEffectArguments[0] = sprite->pos1.x;
- gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
+ gFieldEffectArguments[1] = sprite->pos1.y + (graphicsInfo->height >> 1) - 2;
gFieldEffectArguments[2] = 151;
gFieldEffectArguments[3] = 3;
FieldEffectStart(FLDEFF_RIPPLE);
diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c
index 77f65289e..022599dfb 100644
--- a/src/evolution_graphics.c
+++ b/src/evolution_graphics.c
@@ -32,7 +32,7 @@ static void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskID);
static void sub_817C560(u8 taskID);
static const u16 sEvoSparklePalette[] = INCBIN_U16("graphics/misc/evo_sparkle.gbapal");
-static const u8 sEvoSparkleTiles[] = INCBIN_U8("graphics/misc/evo_sparkle.4bpp.lz");
+static const u32 sEvoSparkleTiles[] = INCBIN_U32("graphics/misc/evo_sparkle.4bpp.lz");
static const struct CompressedSpriteSheet sEvoSparkleSpriteSheets[] =
{
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index c00aaeb15..0d2072a15 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -27,6 +27,7 @@
#include "link.h"
#include "util.h"
#include "trig.h"
+#include "data2.h"
struct EvoInfo
{
@@ -40,17 +41,6 @@ struct EvoInfo
static EWRAM_DATA struct EvoInfo *sEvoStructPtr = NULL;
static EWRAM_DATA u16 *sEvoMovingBgPtr = NULL;
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
-extern u16 gBattle_BG1_X;
-extern u16 gBattle_BG1_Y;
-extern u16 gBattle_BG2_X;
-extern u16 gBattle_BG2_Y;
-extern u16 gBattle_BG3_X;
-extern u16 gBattle_BG3_Y;
-extern bool8 gAffineAnimsDisabled;
-extern const u8 gSpeciesNames[][11];
-
#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
#define sEvoGraphicsTaskID gBattleCommunication[2]
@@ -60,12 +50,9 @@ extern const struct CompressedSpriteSheet gMonFrontPicTable[];
// strings
extern const u8 gText_CommunicationStandby5[];
-extern void sub_80356D0(void);
extern void sub_807B154(void);
extern void sub_807F19C(void);
extern void sub_807B140(void);
-extern void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
-extern void Overworld_PlaySpecialMapMusic(void);
extern void ShowSelectMovePokemonSummaryScreen(struct Pokemon *party, u8 monId, u8 partyCount, void *CB2_ptr, u16 move);
extern u8 sub_81C1B94(void);
extern void sub_807F1A8(u8 arg0, const u8 *arg1, u8 arg2);
@@ -535,7 +522,7 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri
gBattle_BG3_X = 256;
gBattle_BG3_Y = 0;
- gTextFlags.flag_1 = 1;
+ gTextFlags.useAlternateDownArrow = 1;
SetVBlankCallback(VBlankCB_TradeEvolutionScene);
SetMainCallback2(CB2_TradeEvolutionSceneUpdate);
@@ -1139,7 +1126,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
DestroyTask(taskID);
Free(sEvoStructPtr);
sEvoStructPtr = NULL;
- gTextFlags.flag_1 = 0;
+ gTextFlags.useAlternateDownArrow = 0;
SetMainCallback2(gCB2_AfterEvolution);
}
break;
@@ -1222,7 +1209,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
}
break;
case 4:
- switch (Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
sEvoCursorPos = 0;
diff --git a/src/field_camera.c b/src/field_camera.c
index e8900e06a..b976cf2ff 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -15,71 +15,71 @@
EWRAM_DATA bool8 gUnusedBikeCameraAheadPanback = FALSE;
// Static type declarations
-struct FieldCameraUnknownStruct
+struct FieldCameraOffset
{
- u8 unk0;
- u8 unk1;
- u8 unk2;
- u8 unk3;
- bool8 unk4;
+ u8 xPixelOffset;
+ u8 yPixelOffset;
+ u8 xTileOffset;
+ u8 yTileOffset;
+ bool8 copyBGToVRAM;
};
// static functions
-static void RedrawMapSliceNorth(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout);
-static void RedrawMapSliceSouth(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout);
-static void RedrawMapSliceEast(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout);
-static void RedrawMapSliceWest(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout);
-static s32 MapPosToBgTilemapOffset(struct FieldCameraUnknownStruct *a, s32 x, s32 y);
+static void RedrawMapSliceNorth(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout);
+static void RedrawMapSliceSouth(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout);
+static void RedrawMapSliceEast(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout);
+static void RedrawMapSliceWest(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout);
+static s32 MapPosToBgTilemapOffset(struct FieldCameraOffset *a, s32 x, s32 y);
static void DrawWholeMapViewInternal(int x, int y, const struct MapLayout *mapLayout);
static void DrawMetatileAt(const struct MapLayout *mapLayout, u16, int, int);
static void DrawMetatile(s32 a, u16 *b, u16 c);
static void CameraPanningCB_PanAhead(void);
// IWRAM bss vars
-static IWRAM_DATA struct FieldCameraUnknownStruct gUnknown_03000E20;
-static IWRAM_DATA s16 gUnknown_03000E28;
-static IWRAM_DATA s16 gUnknown_03000E2A;
+static IWRAM_DATA struct FieldCameraOffset sFieldCameraOffset;
+static IWRAM_DATA s16 sHorizontalCameraPan;
+static IWRAM_DATA s16 sVerticalCameraPan;
static IWRAM_DATA u8 gUnknown_03000E2C;
-static IWRAM_DATA void (*gUnknown_03000E30)(void);
+static IWRAM_DATA void (*sFieldCameraPanningCallback)(void);
-struct CameraObject gUnknown_03005DD0;
-u16 gUnknown_03005DE8;
-u16 gUnknown_03005DEC;
+struct CameraObject gFieldCamera;
+u16 gTotalCameraPixelOffsetY;
+u16 gTotalCameraPixelOffsetX;
// text
-static void move_tilemap_camera_to_upper_left_corner_(struct FieldCameraUnknownStruct *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 FieldCameraUnknownStruct *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 FieldCameraUnknownStruct *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_03000E20);
+ move_tilemap_camera_to_upper_left_corner_(&sFieldCameraOffset);
}
void FieldUpdateBgTilemapScroll(void)
{
u32 r4, r5;
- r5 = gUnknown_03000E20.unk0 + gUnknown_03000E28;
- r4 = gUnknown_03000E2A + gUnknown_03000E20.unk1 + 8;
+ r5 = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
+ r4 = sVerticalCameraPan + sFieldCameraOffset.yPixelOffset + 8;
SetGpuReg(REG_OFFSET_BG1HOFS, r5);
SetGpuReg(REG_OFFSET_BG1VOFS, r4);
@@ -91,14 +91,14 @@ void FieldUpdateBgTilemapScroll(void)
void sub_8089C08(s16 *a, s16 *b)
{
- *a = gUnknown_03000E20.unk0 + gUnknown_03000E28;
- *b = gUnknown_03000E20.unk1 + gUnknown_03000E2A + 8;
+ *a = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
+ *b = sFieldCameraOffset.yPixelOffset + sVerticalCameraPan + 8;
}
void DrawWholeMapView(void)
{
DrawWholeMapViewInternal(gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y, gMapHeader.mapLayout);
- gUnknown_03000E20.unk4 = TRUE;
+ sFieldCameraOffset.copyBGToVRAM = TRUE;
}
static void DrawWholeMapViewInternal(int x, int y, const struct MapLayout *mapLayout)
@@ -110,13 +110,13 @@ static void DrawWholeMapViewInternal(int x, int y, const struct MapLayout *mapLa
for (i = 0; i < 32; i += 2)
{
- temp = gUnknown_03000E20.unk3 + i;
+ temp = sFieldCameraOffset.yTileOffset + i;
if (temp >= 32)
temp -= 32;
r6 = temp * 32;
for (j = 0; j < 32; j += 2)
{
- temp = gUnknown_03000E20.unk2 + j;
+ temp = sFieldCameraOffset.xTileOffset + j;
if (temp >= 32)
temp -= 32;
DrawMetatileAt(mapLayout, r6 + temp, x + j / 2, y + i / 2);
@@ -124,112 +124,112 @@ static void DrawWholeMapViewInternal(int x, int y, const struct MapLayout *mapLa
}
}
-static void RedrawMapSlicesForCameraUpdate(struct FieldCameraUnknownStruct *a, int x, int y)
+static void RedrawMapSlicesForCameraUpdate(struct FieldCameraOffset *cameraOffset, int x, int y)
{
const struct MapLayout *mapLayout = gMapHeader.mapLayout;
if (x > 0)
- RedrawMapSliceWest(a, mapLayout);
+ RedrawMapSliceWest(cameraOffset, mapLayout);
if (x < 0)
- RedrawMapSliceEast(a, mapLayout);
+ RedrawMapSliceEast(cameraOffset, mapLayout);
if (y > 0)
- RedrawMapSliceNorth(a, mapLayout);
+ RedrawMapSliceNorth(cameraOffset, mapLayout);
if (y < 0)
- RedrawMapSliceSouth(a, mapLayout);
- a->unk4 = TRUE;
+ RedrawMapSliceSouth(cameraOffset, mapLayout);
+ cameraOffset->copyBGToVRAM = TRUE;
}
-static void RedrawMapSliceNorth(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout)
+static void RedrawMapSliceNorth(struct FieldCameraOffset *cameraOffset, const 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(mapLayout, r7 + temp, gSaveBlock1Ptr->pos.x + i / 2, gSaveBlock1Ptr->pos.y + 14);
}
}
-static void RedrawMapSliceSouth(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout)
+static void RedrawMapSliceSouth(struct FieldCameraOffset *cameraOffset, const 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(mapLayout, r7 + temp, gSaveBlock1Ptr->pos.x + i / 2, gSaveBlock1Ptr->pos.y);
}
}
-static void RedrawMapSliceEast(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout)
+static void RedrawMapSliceEast(struct FieldCameraOffset *cameraOffset, const 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(mapLayout, temp * 32 + r6, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y + i / 2);
}
}
-static void RedrawMapSliceWest(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout)
+static void RedrawMapSliceWest(struct FieldCameraOffset *cameraOffset, const 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(mapLayout, temp * 32 + r5, gSaveBlock1Ptr->pos.x + 14, gSaveBlock1Ptr->pos.y + i / 2);
}
}
-void CurrentMapDrawMetatileAt(int a, int b)
+void CurrentMapDrawMetatileAt(int x, int y)
{
- int offset = MapPosToBgTilemapOffset(&gUnknown_03000E20, a, b);
+ int offset = MapPosToBgTilemapOffset(&sFieldCameraOffset, x, y);
if (offset >= 0)
{
- DrawMetatileAt(gMapHeader.mapLayout, offset, a, b);
- gUnknown_03000E20.unk4 = TRUE;
+ DrawMetatileAt(gMapHeader.mapLayout, offset, x, y);
+ sFieldCameraOffset.copyBGToVRAM = TRUE;
}
}
void DrawDoorMetatileAt(int x, int y, u16 *arr)
{
- int offset = MapPosToBgTilemapOffset(&gUnknown_03000E20, x, y);
+ int offset = MapPosToBgTilemapOffset(&sFieldCameraOffset, x, y);
if (offset >= 0)
{
DrawMetatile(1, arr, offset);
- gUnknown_03000E20.unk4 = TRUE;
+ sFieldCameraOffset.copyBGToVRAM = TRUE;
}
}
-static void DrawMetatileAt(const struct MapLayout *mapLayout, u16 b, int c, int d)
+static void DrawMetatileAt(const struct MapLayout *mapLayout, u16 offset, int x, int y)
{
- u16 metatileId = MapGridGetMetatileIdAt(c, d);
+ u16 metatileId = MapGridGetMetatileIdAt(x, y);
u16 *metatiles;
if (metatileId > NUM_METATILES_TOTAL)
@@ -241,60 +241,69 @@ static void DrawMetatileAt(const struct MapLayout *mapLayout, u16 b, int c, int
metatiles = mapLayout->secondaryTileset->metatiles;
metatileId -= NUM_METATILES_IN_PRIMARY;
}
- 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:
- gBGTilemapBuffers3[c] = b[0];
- gBGTilemapBuffers3[c + 1] = b[1];
- gBGTilemapBuffers3[c + 0x20] = b[2];
- gBGTilemapBuffers3[c + 0x21] = b[3];
-
- gBGTilemapBuffers1[c] = 0;
- gBGTilemapBuffers1[c + 1] = 0;
- gBGTilemapBuffers1[c + 0x20] = 0;
- gBGTilemapBuffers1[c + 0x21] = 0;
-
- gBGTilemapBuffers2[c] = b[4];
- gBGTilemapBuffers2[c + 1] = b[5];
- gBGTilemapBuffers2[c + 0x20] = b[6];
- gBGTilemapBuffers2[c + 0x21] = b[7];
+ case 2: // LAYER_TYPE_
+ // Draw metatile's bottom layer to the bottom background layer.
+ gBGTilemapBuffers3[offset] = metatiles[0];
+ gBGTilemapBuffers3[offset + 1] = metatiles[1];
+ gBGTilemapBuffers3[offset + 0x20] = metatiles[2];
+ gBGTilemapBuffers3[offset + 0x21] = metatiles[3];
+
+ // Draw transparent tiles to the middle background layer.
+ gBGTilemapBuffers1[offset] = 0;
+ gBGTilemapBuffers1[offset + 1] = 0;
+ gBGTilemapBuffers1[offset + 0x20] = 0;
+ gBGTilemapBuffers1[offset + 0x21] = 0;
+
+ // Draw metatile's top layer to the top background layer.
+ gBGTilemapBuffers2[offset] = metatiles[4];
+ gBGTilemapBuffers2[offset + 1] = metatiles[5];
+ gBGTilemapBuffers2[offset + 0x20] = metatiles[6];
+ gBGTilemapBuffers2[offset + 0x21] = metatiles[7];
break;
- case 1:
- gBGTilemapBuffers3[c] = b[0];
- gBGTilemapBuffers3[c + 1] = b[1];
- gBGTilemapBuffers3[c + 0x20] = b[2];
- gBGTilemapBuffers3[c + 0x21] = b[3];
-
- gBGTilemapBuffers1[c] = b[4];
- gBGTilemapBuffers1[c + 1] = b[5];
- gBGTilemapBuffers1[c + 0x20] = b[6];
- gBGTilemapBuffers1[c + 0x21] = b[7];
-
- gBGTilemapBuffers2[c] = 0;
- gBGTilemapBuffers2[c + 1] = 0;
- gBGTilemapBuffers2[c + 0x20] = 0;
- gBGTilemapBuffers2[c + 0x21] = 0;
+ case 1: // LAYER_TYPE_COVERED_BY_OBJECTS
+ // Draw metatile's bottom layer to the bottom background layer.
+ gBGTilemapBuffers3[offset] = metatiles[0];
+ gBGTilemapBuffers3[offset + 1] = metatiles[1];
+ gBGTilemapBuffers3[offset + 0x20] = metatiles[2];
+ gBGTilemapBuffers3[offset + 0x21] = metatiles[3];
+
+ // Draw metatile's top layer to the middle background layer.
+ gBGTilemapBuffers1[offset] = metatiles[4];
+ gBGTilemapBuffers1[offset + 1] = metatiles[5];
+ gBGTilemapBuffers1[offset + 0x20] = metatiles[6];
+ gBGTilemapBuffers1[offset + 0x21] = metatiles[7];
+
+ // Draw transparent tiles to the top background layer.
+ gBGTilemapBuffers2[offset] = 0;
+ gBGTilemapBuffers2[offset + 1] = 0;
+ gBGTilemapBuffers2[offset + 0x20] = 0;
+ gBGTilemapBuffers2[offset + 0x21] = 0;
break;
- case 0:
- gBGTilemapBuffers3[c] = 0x3014;
- gBGTilemapBuffers3[c + 1] = 0x3014;
- gBGTilemapBuffers3[c + 0x20] = 0x3014;
- gBGTilemapBuffers3[c + 0x21] = 0x3014;
-
- gBGTilemapBuffers1[c] = b[0];
- gBGTilemapBuffers1[c + 1] = b[1];
- gBGTilemapBuffers1[c + 0x20] = b[2];
- gBGTilemapBuffers1[c + 0x21] = b[3];
-
- gBGTilemapBuffers2[c] = b[4];
- gBGTilemapBuffers2[c + 1] = b[5];
- gBGTilemapBuffers2[c + 0x20] = b[6];
- gBGTilemapBuffers2[c + 0x21] = b[7];
+ case 0: // LAYER_TYPE_NORMAL
+ // Draw garbage to the bottom background layer.
+ gBGTilemapBuffers3[offset] = 0x3014;
+ gBGTilemapBuffers3[offset + 1] = 0x3014;
+ gBGTilemapBuffers3[offset + 0x20] = 0x3014;
+ gBGTilemapBuffers3[offset + 0x21] = 0x3014;
+
+ // Draw metatile's bottom layer to the middle background layer.
+ gBGTilemapBuffers1[offset] = metatiles[0];
+ gBGTilemapBuffers1[offset + 1] = metatiles[1];
+ gBGTilemapBuffers1[offset + 0x20] = metatiles[2];
+ gBGTilemapBuffers1[offset + 0x21] = metatiles[3];
+
+ // Draw metatile's top layer to the top background layer, which covers event object sprites.
+ gBGTilemapBuffers2[offset] = metatiles[4];
+ gBGTilemapBuffers2[offset + 1] = metatiles[5];
+ gBGTilemapBuffers2[offset + 0x20] = metatiles[6];
+ gBGTilemapBuffers2[offset + 0x21] = metatiles[7];
break;
}
schedule_bg_copy_tilemap_to_vram(1);
@@ -302,51 +311,51 @@ static void DrawMetatile(s32 a, u16 *b, u16 c)
schedule_bg_copy_tilemap_to_vram(3);
}
-static s32 MapPosToBgTilemapOffset(struct FieldCameraUnknownStruct *a, s32 x, s32 y)
+static s32 MapPosToBgTilemapOffset(struct FieldCameraOffset *cameraOffset, s32 x, s32 y)
{
x -= gSaveBlock1Ptr->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 - gSaveBlock1Ptr->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 CameraObject *a)
+static void CameraUpdateCallback(struct CameraObject *fieldCamera)
{
- if (a->spriteId != 0)
+ if (fieldCamera->spriteId != 0)
{
- a->unk8 = gSprites[a->spriteId].data[2];
- a->unkC = gSprites[a->spriteId].data[3];
+ fieldCamera->movementSpeedX = gSprites[fieldCamera->spriteId].data[2];
+ fieldCamera->movementSpeedY = gSprites[fieldCamera->spriteId].data[3];
}
}
void ResetCameraUpdateInfo(void)
{
- gUnknown_03005DD0.unk8 = 0;
- gUnknown_03005DD0.unkC = 0;
- gUnknown_03005DD0.x = 0;
- gUnknown_03005DD0.y = 0;
- gUnknown_03005DD0.spriteId = 0;
- gUnknown_03005DD0.callback = NULL;
+ gFieldCamera.movementSpeedX = 0;
+ gFieldCamera.movementSpeedY = 0;
+ gFieldCamera.x = 0;
+ gFieldCamera.y = 0;
+ gFieldCamera.spriteId = 0;
+ gFieldCamera.callback = NULL;
}
-u32 InitCameraUpdateCallback(u8 a)
+u32 InitCameraUpdateCallback(u8 trackedSpriteId)
{
- if (gUnknown_03005DD0.spriteId != 0)
- DestroySprite(&gSprites[gUnknown_03005DD0.spriteId]);
- gUnknown_03005DD0.spriteId = AddCameraObject(a);
- gUnknown_03005DD0.callback = CameraUpdateCallback;
+ if (gFieldCamera.spriteId != 0)
+ DestroySprite(&gSprites[gFieldCamera.spriteId]);
+ gFieldCamera.spriteId = AddCameraObject(trackedSpriteId);
+ gFieldCamera.callback = CameraUpdateCallback;
return 0;
}
@@ -354,54 +363,54 @@ void CameraUpdate(void)
{
int deltaX;
int deltaY;
- int r0;
- int r1;
- int r7;
- int r8;
-
- if (gUnknown_03005DD0.callback != NULL)
- gUnknown_03005DD0.callback(&gUnknown_03005DD0);
- r7 = gUnknown_03005DD0.unk8;
- r8 = gUnknown_03005DD0.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_03005DD0.x;
- r0 = gUnknown_03005DD0.y;
+ curMovementOffsetX = gFieldCamera.x;
+ curMovementOffsetY = gFieldCamera.y;
- 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_03005DD0.x += r7;
- gUnknown_03005DD0.x = gUnknown_03005DD0.x - 16 * (gUnknown_03005DD0.x / 16);
- gUnknown_03005DD0.y += r8;
- gUnknown_03005DD0.y = gUnknown_03005DD0.y - 16 * (gUnknown_03005DD0.y / 16);
+ gFieldCamera.x += movementSpeedX;
+ gFieldCamera.x = gFieldCamera.x - 16 * (gFieldCamera.x / 16);
+ gFieldCamera.y += movementSpeedY;
+ gFieldCamera.y = gFieldCamera.y - 16 * (gFieldCamera.y / 16);
if (deltaX != 0 || deltaY != 0)
{
@@ -409,50 +418,50 @@ void CameraUpdate(void)
UpdateEventObjectsForCameraUpdate(deltaX, deltaY);
RotatingGatePuzzleCameraUpdate(deltaX, deltaY);
ResetBerryTreeSparkleFlags();
- tilemap_move_something(&gUnknown_03000E20, deltaX * 2, deltaY * 2);
- RedrawMapSlicesForCameraUpdate(&gUnknown_03000E20, deltaX * 2, deltaY * 2);
+ tilemap_move_something(&sFieldCameraOffset, deltaX * 2, deltaY * 2);
+ RedrawMapSlicesForCameraUpdate(&sFieldCameraOffset, deltaX * 2, deltaY * 2);
}
- coords8_add(&gUnknown_03000E20, r7, r8);
- gUnknown_03005DEC -= r7;
- gUnknown_03005DE8 -= r8;
+ coords8_add(&sFieldCameraOffset, movementSpeedX, movementSpeedY);
+ gTotalCameraPixelOffsetX -= movementSpeedX;
+ gTotalCameraPixelOffsetY -= movementSpeedY;
}
-void camera_move_and_redraw(int a, int b) //unused
+void MoveCameraAndRedrawMap(int deltaX, int deltaY) //unused
{
- CameraMove(a, b);
- UpdateEventObjectsForCameraUpdate(a, b);
+ CameraMove(deltaX, deltaY);
+ UpdateEventObjectsForCameraUpdate(deltaX, deltaY);
DrawWholeMapView();
- gUnknown_03005DEC -= a * 16;
- gUnknown_03005DE8 -= b * 16;
+ gTotalCameraPixelOffsetX -= deltaX * 16;
+ gTotalCameraPixelOffsetY -= deltaY * 16;
}
void SetCameraPanningCallback(void (*a)(void))
{
- gUnknown_03000E30 = a;
+ sFieldCameraPanningCallback = a;
}
void SetCameraPanning(s16 a, s16 b)
{
- gUnknown_03000E28 = a;
- gUnknown_03000E2A = b + 32;
+ sHorizontalCameraPan = a;
+ sVerticalCameraPan = b + 32;
}
void InstallCameraPanAheadCallback(void)
{
- gUnknown_03000E30 = CameraPanningCB_PanAhead;
+ sFieldCameraPanningCallback = CameraPanningCB_PanAhead;
gUnknown_03000E2C = 0;
- gUnknown_03000E28 = 0;
- gUnknown_03000E2A = 32;
+ sHorizontalCameraPan = 0;
+ sVerticalCameraPan = 32;
}
void UpdateCameraPanning(void)
{
- if (gUnknown_03000E30 != NULL)
- gUnknown_03000E30();
+ if (sFieldCameraPanningCallback != NULL)
+ sFieldCameraPanningCallback();
//Update sprite offset of overworld objects
- gSpriteCoordOffsetX = gUnknown_03005DEC - gUnknown_03000E28;
- gSpriteCoordOffsetY = gUnknown_03005DE8 - gUnknown_03000E2A - 8;
+ gSpriteCoordOffsetX = gTotalCameraPixelOffsetX - sHorizontalCameraPan;
+ gSpriteCoordOffsetY = gTotalCameraPixelOffsetY - sVerticalCameraPan - 8;
}
static void CameraPanningCB_PanAhead(void)
@@ -480,22 +489,21 @@ static void CameraPanningCB_PanAhead(void)
var = GetPlayerMovementDirection();
if (var == 2)
{
- if (gUnknown_03000E2A > -8)
- gUnknown_03000E2A -= 2;
+ if (sVerticalCameraPan > -8)
+ sVerticalCameraPan -= 2;
}
else if (var == 1)
{
- if (gUnknown_03000E2A < 72)
- gUnknown_03000E2A += 2;
+ if (sVerticalCameraPan < 72)
+ sVerticalCameraPan += 2;
}
- else if (gUnknown_03000E2A < 32)
+ else if (sVerticalCameraPan < 32)
{
- gUnknown_03000E2A += 2;
+ sVerticalCameraPan += 2;
}
- else if (gUnknown_03000E2A > 32)
+ else if (sVerticalCameraPan > 32)
{
- gUnknown_03000E2A -= 2;
+ sVerticalCameraPan -= 2;
}
}
}
-
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index fef403c04..c52f5190f 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -1,11 +1,11 @@
#include "global.h"
#include "battle_setup.h"
-#include "battle_frontier_1.h"
#include "bike.h"
#include "coord_event_weather.h"
#include "daycare.h"
#include "event_data.h"
#include "event_object_movement.h"
+#include "event_scripts.h"
#include "fieldmap.h"
#include "field_control_avatar.h"
#include "field_fadetransition.h"
@@ -31,62 +31,13 @@
#include "constants/map_types.h"
#include "constants/songs.h"
+extern bool32 sub_8196034(void);
+
static EWRAM_DATA u8 sWildEncounterImmunitySteps = 0;
static EWRAM_DATA u16 sPreviousPlayerMetatileBehavior = 0;
u8 gSelectedEventObject;
-//scripts
-extern const u8 EventScript_PlayerPCMale[];
-extern const u8 EventScript_PlayerPCFemale[];
-extern const u8 EventScript_SecretBasePC[];
-extern const u8 EventScript_RecordMixingSecretBasePC[];
-extern const u8 EventScript_SecretPower1[];
-extern const u8 EventScript_SecretPower2[];
-extern const u8 EventScript_PC[];
-extern const u8 EventScript_TestSignpostMsg[];
-extern const u8 EventScript_HiddenItemScript[];
-extern const u8 EventScript_2759F1[];
-extern const u8 EventScript_TV[];
-extern const u8 EventScript_ClosedSootopolisDoor[];
-extern const u8 SkyPillar_Outside_EventScript_2393F9[];
-extern const u8 EventScript_CableBoxResults[];
-extern const u8 EventScript_2A4BAC[];
-extern const u8 Route110_TrickHouseEntrance_EventScript_26A22A[];
-extern const u8 EventScript_RegionMap[];
-extern const u8 EventScript_RunningShoesManual[];
-extern const u8 EventScript_PictureBookShelf[];
-extern const u8 EventScript_BookShelf[];
-extern const u8 EventScript_PokemonCenterBookshelf[];
-extern const u8 EventScript_Vase[];
-extern const u8 EventScript_TrashCan[];
-extern const u8 EventScript_ShopShelf[];
-extern const u8 EventScript_Blueprint[];
-extern const u8 EventScript_WirelessBoxResults[];
-extern const u8 EventScript_CableBoxResults[];
-extern const u8 EventScript_Questionnaire[];
-extern const u8 EventScript_TrainerHillTimer[];
-extern const u8 EventScript_SecretBaseSandOrnament[];
-extern const u8 EventScript_SecretBaseShieldOrToyTV[];
-extern const u8 EventScript_UseSurf[];
-extern const u8 EventScript_UseWaterfall[];
-extern const u8 EventScript_CannotUseWaterfall[];
-extern const u8 EventScript_UseDive[];
-extern const u8 EventScript_UseDiveUnderwater[];
-extern const u8 EventScript_FallDownHole[];
-extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252BE8[];
-extern const u8 EventScript_Poison[];
-extern const u8 EventScript_EggHatch[];
-extern const u8 gUnknown_08273D1F[];
-extern const u8 IslandCave_EventScript_238EAF[];
-extern const u8 MauvilleCity_EventScript_1DF7BA[];
-extern const u8 Route119_EventScript_1F49EC[];
-extern const u8 LittlerootTown_ProfessorBirchsLab_EventScript_1FA4D6[];
-extern const u8 RustboroCity_Gym_EventScript_21307B[];
-extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_224175[];
-extern const u8 SSTidalCorridor_EventScript_23C050[];
-extern const u8 gUnknown_082A8350[];
-
static void GetPlayerPosition(struct MapPosition *);
static void GetInFrontOfPlayerPosition(struct MapPosition *);
static u16 GetPlayerCurMetatileBehavior(int);
@@ -178,7 +129,7 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
input->dpadDirection = DIR_EAST;
}
-int sub_809C014(struct FieldInput *input)
+int ProcessPlayerFieldInput(struct FieldInput *input)
{
struct MapPosition position;
u8 playerDirection;
@@ -557,8 +508,7 @@ static bool8 TryStartCoordEventScript(struct MapPosition *position)
static bool8 TryStartMiscWalkingScripts(u16 metatileBehavior)
{
- s16 x;
- s16 y;
+ s16 x, y;
if (MetatileBehavior_IsCrackedFloorHole(metatileBehavior))
{
diff --git a/src/field_door.c b/src/field_door.c
index fe9de01fd..c197aca14 100644
--- a/src/field_door.c
+++ b/src/field_door.c
@@ -1,13 +1,13 @@
#include "global.h"
+#include "event_data.h"
#include "field_door.h"
#include "field_camera.h"
#include "fieldmap.h"
#include "metatile_behavior.h"
-#include "event_data.h"
-#include "constants/songs.h"
+#include "task.h"
#include "constants/flags.h"
#include "constants/maps.h"
-#include "task.h"
+#include "constants/songs.h"
bool8 sub_808A964(void);
diff --git a/src/field_effect.c b/src/field_effect.c
index e7ecca183..935501130 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -1,10 +1,10 @@
#include "global.h"
-#include "field_effect.h"
-#include "trainer_pokemon_sprites.h"
#include "decompress.h"
+#include "event_object_movement.h"
#include "field_camera.h"
+#include "field_control_avatar.h"
+#include "field_effect.h"
#include "field_effect_helpers.h"
-#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "field_screen.h"
#include "field_weather.h"
@@ -22,24 +22,229 @@
#include "sound.h"
#include "sprite.h"
#include "task.h"
+#include "trainer_pokemon_sprites.h"
#include "trig.h"
#include "util.h"
+#include "constants/field_effects.h"
+#include "constants/event_object_movement_constants.h"
#include "constants/rgb.h"
#include "constants/songs.h"
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
+extern struct CompressedSpritePalette gMonPaletteTable[]; // GF made a mistake and did not extern it as const.
+
EWRAM_DATA s32 gFieldEffectArguments[8] = {0};
// Static type declarations
+static void Task_PokecenterHeal(u8 taskId);
+static void PokecenterHealEffect_0(struct Task *);
+static void PokecenterHealEffect_1(struct Task *);
+static void PokecenterHealEffect_2(struct Task *);
+static void PokecenterHealEffect_3(struct Task *);
+
+static void Task_HallOfFameRecord(u8 taskId);
+static void HallOfFameRecordEffect_0(struct Task *);
+static void HallOfFameRecordEffect_1(struct Task *);
+static void HallOfFameRecordEffect_2(struct Task *);
+static void HallOfFameRecordEffect_3(struct Task *);
+
+static u8 CreatePokeballGlowSprite(s16, s16, s16, u16);
+static void SpriteCB_PokeballGlowEffect(struct Sprite *);
+static void PokeballGlowEffect_0(struct Sprite *);
+static void PokeballGlowEffect_1(struct Sprite *);
+static void PokeballGlowEffect_2(struct Sprite *);
+static void PokeballGlowEffect_3(struct Sprite *);
+static void PokeballGlowEffect_4(struct Sprite *);
+static void PokeballGlowEffect_5(struct Sprite *);
+static void PokeballGlowEffect_6(struct Sprite *);
+static void PokeballGlowEffect_7(struct Sprite *);
+
+static u8 PokecenterHealEffectHelper(s16, s16);
+static void HallOfFameRecordEffectHelper(s16, s16, s16, u8);
+
+static void mapldr_080842E8(void);
+static void task00_8084310(u8);
+static void mapldr_08084390(void);
+static void c3_080843F8(u8);
+
+static void sub_80B6B94(u8);
+static bool8 sub_80B6BCC(struct Task *);
+static bool8 sub_80B6C74(struct Task *);
+static bool8 sub_80B6C90(struct Task *);
+static bool8 sub_80B6D04(struct Task *);
+static bool8 sub_80B6DBC(struct Task *);
+static bool8 sub_80B6DD8(struct Task *);
+static bool8 sub_80B6E18(struct Task *);
+
+static void sub_80B6E88(u8);
+static bool8 sub_80B6EC0(struct Task *);
+static bool8 sub_80B6EE0(struct Task *);
+static bool8 sub_80B6F50(struct Task *);
+static bool8 sub_80B6F74(struct Task *);
+static bool8 sub_80B6F84(struct Task *);
+static bool8 sub_80B6FA8(struct Task *);
+
+static void sub_80B6FB8(struct Task *);
+static void sub_80B7004(struct Task *);
+static void sub_80B7050(void);
+static void sub_80B7060(void);
+static void sub_80B70B4(void);
+static void sub_80B70DC(u8);
+
+static bool8 sub_80B7114(struct Task *);
+static bool8 sub_80B7190(struct Task *);
+static bool8 sub_80B71D0(struct Task *);
+static bool8 sub_80B7230(struct Task *);
+static bool8 sub_80B7270(struct Task *);
+static bool8 sub_80B72D0(struct Task *);
+static bool8 sub_80B72F4(struct Task *);
+
+static void sub_80B7384(u8);
+static bool8 sub_80B73D0(struct Task *, struct EventObject *);
+static bool8 waterfall_1_do_anim_probably(struct Task *, struct EventObject *);
+static bool8 waterfall_2_wait_anim_finish_probably(struct Task *, struct EventObject *);
+static bool8 sub_80B7450(struct Task *, struct EventObject *);
+static bool8 sub_80B7478(struct Task *, struct EventObject *);
+
+static void Task_Dive(u8);
+static bool8 dive_1_lock(struct Task *);
+static bool8 dive_2_unknown(struct Task *);
+static bool8 dive_3_unknown(struct Task *);
+
+static void sub_80B75F0(u8);
+static bool8 sub_80B764C(struct Task *, struct EventObject *, struct Sprite *);
+static bool8 sub_80B7684(struct Task *, struct EventObject *, struct Sprite *);
+static bool8 sub_80B76B8(struct Task *, struct EventObject *, struct Sprite *);
+static bool8 sub_80B7704(struct Task *, struct EventObject *, struct Sprite *);
+static bool8 sub_80B77F8(struct Task *, struct EventObject *, struct Sprite *);
+static bool8 sub_80B7814(struct Task *, struct EventObject *, struct Sprite *);
+
+static void mapldr_080851BC(void);
+static void sub_80B7890(u8);
+
+static bool8 sub_80B78EC(struct Task *, struct EventObject *, struct Sprite *);
+static bool8 sub_80B791C(struct Task *, struct EventObject *, struct Sprite *);
+static bool8 sub_80B7968(struct Task *, struct EventObject *, struct Sprite *);
+static bool8 sub_80B79BC(struct Task *, struct EventObject *, struct Sprite *);
+
+static void sub_80B7A8C(u8);
+
+static bool8 sub_80B7AE8(struct Task *, struct EventObject *, struct Sprite *);
+static bool8 sub_80B7B18(struct Task *, struct EventObject *, struct Sprite *);
+static bool8 sub_80B7B94(struct Task *, struct EventObject *, struct Sprite *);
+static bool8 sub_80B7BCC(struct Task *, struct EventObject *, struct Sprite *);
+static bool8 sub_80B7BF4(struct Task *, struct EventObject *, struct Sprite *);
+
+static void DoEscapeRopeFieldEffect(u8);
+static void EscapeRopeFieldEffect_Step0(struct Task *);
+static void EscapeRopeFieldEffect_Step1(struct Task *);
+
+static void mapldr_080859D4(void);
+static void sub_80B7E94(u8);
+
+static void sub_80B7EC4(struct Task *);
+static void sub_80B7EE8(struct Task *);
+
+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);
+static void sub_80B8250(u8);
+
+static void sub_80B8280(struct Task *);
+static void sub_80B830C(struct Task *);
+static void sub_80B8410(struct Task *);
+
+static void sub_80B8554(u8);
+static void sub_80B8584(struct Task *);
+static void sub_80B85F8(struct Task *);
+static void sub_80B8660(struct Task *);
+static void sub_80B86EC(struct Task *);
+static void sub_80B871C(struct Task *);
+static void sub_80B8770(struct Task *);
+static void overworld_bg_setup_2(struct Task *);
+
+static void sub_80B880C(void);
+static void sub_80B8874(u16);
+
+static void sub_80B88B4(u8);
+static void sub_80B88E4(struct Task *);
+static void sub_80B8920(struct Task *);
+static void sub_80B898C(struct Task *);
+static void sub_80B89DC(struct Task *);
+static void sub_80B8A0C(struct Task *);
+static void sub_80B8A44(struct Task *);
+static void sub_80B8A64(struct Task *);
+
+static void sub_80B8AE0(void);
+static void sub_80B8B28(struct Task *);
+static bool8 sub_80B8B38(struct Task *);
+static bool8 sub_80B8BF0(struct Task *);
+
+static u8 sub_80B8C60(u32, u32, u32);
+static void sub_80B8CC0(struct Sprite *);
+static void sub_80B8D04(struct Sprite *);
+static void sub_80B8D20(struct Sprite *);
+
+static void sub_80B8D84(u8);
+static void sub_80B8DB4(struct Task *);
+static void sub_80B8E14(struct Task *);
+static void sub_80B8E60(struct Task *);
+static void sub_80B8EA8(struct Task *);
+static void sub_80B8F24(struct Task *);
+
+static void sub_80B9128(struct Sprite *);
+
+static void sub_80B91D4(u8);
+static void sub_80B9204(struct Task *);
+static void sub_80B925C(struct Task *);
+static void sub_80B92A0(struct Task *);
+static void sub_80B92F8(struct Task *);
+static void sub_80B933C(struct Task *);
+static void sub_80B9390(struct Task *);
+static void sub_80B9418(struct Task *);
+static void sub_80B9474(struct Task *);
+static void sub_80B9494(struct Task *);
+
+static u8 sub_80B94C4(void);
+static u8 sub_80B9508(u8);
+static void sub_80B9524(u8);
+static void sub_80B9560(u8, u8);
+static void sub_80B957C(struct Sprite *);
+static void sub_80B963C(struct Sprite *);
+
+static void sub_80B97D4(u8);
+static void sub_80B9804(struct Task *);
+static void sub_80B98B8(struct Task *);
+static void sub_80B9924(struct Task *);
+static void sub_80B9978(struct Task *);
+static void sub_80B99F0(struct Task *);
+static void sub_80B9A28(struct Task *);
+static void sub_80B9A60(struct Task *);
+
+static void sub_80B9BE8(u8 taskId);
+static void sub_80B9DB8(struct Sprite* sprite);
+static void sub_80B9EDC(u8 taskId);
+
// Static RAM declarations
static IWRAM_DATA u8 sActiveList[32];
-// Static ROM declarations
+// External declarations
extern u8 *gFieldEffectScriptPointers[];
+extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
+extern void sub_81555D8(u8, u8);
+extern void pal_fill_for_maplights(void);
+extern void sub_80E1558(u8);
+extern void sub_80E1570(void);
+extern bool8 sub_80E1584(void);
+extern void sub_80AF0B4(void);
// .rodata
const u32 gNewGameBirchPic[] = INCBIN_U32("graphics/birch_speech/birch.4bpp");
@@ -322,9 +527,9 @@ bool8 (*const gUnknown_0855C460[])(struct Task *, struct EventObject *, struct S
sub_80B7BF4,
};
-void (*const gUnknown_0855C474[])(struct Task *) = {
- sub_80B7D14,
- sub_80B7D34,
+void (*const gEscapeRopeFieldEffectFuncs[])(struct Task *) = {
+ EscapeRopeFieldEffect_Step0,
+ EscapeRopeFieldEffect_Step1,
};
// .text
@@ -552,67 +757,15 @@ u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority)
return CreateSprite(&gNewGameBirchObjectTemplate, x, y, subpriority);
}
-#ifdef NONMATCHING
-u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y)
+u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority)
{
- u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, 0, 0x8000, 1, x, y, 0, gMonPaletteTable[species].tag);
+ s32 spriteId = CreateMonPicSprite_HandleDeoxys(species, 0, 0x8000, 1, x, y, 0, gMonPaletteTable[species].tag);
PreservePaletteInWeather(IndexOfSpritePaletteTag(gMonPaletteTable[species].tag) + 0x10);
if (spriteId == 0xFFFF)
- return 0x40;
-
- return spriteId;
+ return MAX_SPRITES;
+ else
+ return spriteId;
}
-#else
-NAKED
-u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y)
-{
- asm_unified("push {r4,r5,lr}\n\
- sub sp, 0x10\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r3, 0x80\n\
- lsls r3, 8\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- str r1, [sp]\n\
- lsls r2, 16\n\
- asrs r2, 16\n\
- str r2, [sp, 0x4]\n\
- movs r1, 0\n\
- str r1, [sp, 0x8]\n\
- ldr r1, =gMonPaletteTable\n\
- lsls r4, r0, 3\n\
- adds r4, r1\n\
- ldrh r1, [r4, 0x4]\n\
- str r1, [sp, 0xC]\n\
- movs r1, 0\n\
- adds r2, r3, 0\n\
- movs r3, 0x1\n\
- bl CreateMonPicSprite_HandleDeoxys\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- ldrh r0, [r4, 0x4]\n\
- bl IndexOfSpritePaletteTag\n\
- adds r0, 0x10\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl PreservePaletteInWeather\n\
- ldr r0, =0x0000ffff\n\
- cmp r5, r0\n\
- beq _080B5FDC\n\
- lsls r0, r5, 24\n\
- lsrs r0, 24\n\
- b _080B5FDE\n\
- .pool\n\
-_080B5FDC:\n\
- movs r0, 0x40\n\
-_080B5FDE:\n\
- add sp, 0x10\n\
- pop {r4,r5}\n\
- pop {r1}\n\
- bx r1");
-}
-#endif //NONMATCHING
u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subpriority)
{
@@ -620,9 +773,9 @@ u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subprio
u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, d, g, 1, x, y, 0, spritePalette->tag);
PreservePaletteInWeather(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10);
if (spriteId == 0xFFFF)
- return 0x40;
-
- return spriteId;
+ return MAX_SPRITES;
+ else
+ return spriteId;
}
void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId)
@@ -807,10 +960,6 @@ void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
}
#endif
-void Task_PokecenterHeal(u8 taskId);
-u8 CreatePokeballGlowSprite(s16, s16, s16, u16);
-u8 PokecenterHealEffectHelper(s16, s16);
-
bool8 FldEff_PokecenterHeal(void)
{
u8 nPokemon;
@@ -826,21 +975,21 @@ bool8 FldEff_PokecenterHeal(void)
return FALSE;
}
-void Task_PokecenterHeal(u8 taskId)
+static void Task_PokecenterHeal(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
gUnknown_0855C364[task->data[0]](task);
}
-void PokecenterHealEffect_0(struct Task *task)
+static void PokecenterHealEffect_0(struct Task *task)
{
task->data[0]++;
task->data[6] = CreatePokeballGlowSprite(task->data[1], task->data[2], task->data[3], 1);
task->data[7] = PokecenterHealEffectHelper(task->data[4], task->data[5]);
}
-void PokecenterHealEffect_1(struct Task *task)
+static void PokecenterHealEffect_1(struct Task *task)
{
if (gSprites[task->data[6]].data[0] > 1)
{
@@ -849,7 +998,7 @@ void PokecenterHealEffect_1(struct Task *task)
}
}
-void PokecenterHealEffect_2(struct Task *task)
+static void PokecenterHealEffect_2(struct Task *task)
{
if (gSprites[task->data[6]].data[0] > 4)
{
@@ -857,7 +1006,7 @@ void PokecenterHealEffect_2(struct Task *task)
}
}
-void PokecenterHealEffect_3(struct Task *task)
+static void PokecenterHealEffect_3(struct Task *task)
{
if (gSprites[task->data[6]].data[0] > 6)
{
@@ -867,9 +1016,6 @@ void PokecenterHealEffect_3(struct Task *task)
}
}
-void Task_HallOfFameRecord(u8 taskId);
-void HallOfFameRecordEffectHelper(s16, s16, s16, u8);
-
bool8 FldEff_HallOfFameRecord(void)
{
u8 nPokemon;
@@ -883,14 +1029,14 @@ bool8 FldEff_HallOfFameRecord(void)
return FALSE;
}
-void Task_HallOfFameRecord(u8 taskId)
+static void Task_HallOfFameRecord(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
gUnknown_0855C374[task->data[0]](task);
}
-void HallOfFameRecordEffect_0(struct Task *task)
+static void HallOfFameRecordEffect_0(struct Task *task)
{
u8 taskId;
task->data[0]++;
@@ -903,7 +1049,7 @@ void HallOfFameRecordEffect_0(struct Task *task)
HallOfFameRecordEffectHelper(taskId, 0xc8, 0x08, 1);
}
-void HallOfFameRecordEffect_1(struct Task *task)
+static void HallOfFameRecordEffect_1(struct Task *task)
{
if (gSprites[task->data[6]].data[0] > 1)
{
@@ -912,7 +1058,7 @@ void HallOfFameRecordEffect_1(struct Task *task)
}
}
-void HallOfFameRecordEffect_2(struct Task *task)
+static void HallOfFameRecordEffect_2(struct Task *task)
{
if (gSprites[task->data[6]].data[0] > 4)
{
@@ -920,7 +1066,7 @@ void HallOfFameRecordEffect_2(struct Task *task)
}
}
-void HallOfFameRecordEffect_3(struct Task *task)
+static void HallOfFameRecordEffect_3(struct Task *task)
{
if (gSprites[task->data[6]].data[0] > 6)
{
@@ -930,9 +1076,8 @@ void HallOfFameRecordEffect_3(struct Task *task)
}
}
-void SpriteCB_PokeballGlowEffect(struct Sprite *);
-u8 CreatePokeballGlowSprite(s16 data6, s16 x, s16 y, u16 data5)
+static u8 CreatePokeballGlowSprite(s16 data6, s16 x, s16 y, u16 data5)
{
u8 spriteId;
struct Sprite *sprite;
@@ -946,12 +1091,12 @@ u8 CreatePokeballGlowSprite(s16 data6, s16 x, s16 y, u16 data5)
return spriteId;
}
-void SpriteCB_PokeballGlowEffect(struct Sprite *sprite)
+static void SpriteCB_PokeballGlowEffect(struct Sprite *sprite)
{
gUnknown_0855C384[sprite->data[0]](sprite);
}
-void PokeballGlowEffect_0(struct Sprite *sprite)
+static void PokeballGlowEffect_0(struct Sprite *sprite)
{
u8 endSpriteId;
if (sprite->data[1] == 0 || (--sprite->data[1]) == 0)
@@ -971,7 +1116,7 @@ void PokeballGlowEffect_0(struct Sprite *sprite)
}
}
-void PokeballGlowEffect_1(struct Sprite *sprite)
+static void PokeballGlowEffect_1(struct Sprite *sprite)
{
if ((--sprite->data[1]) == 0)
{
@@ -986,7 +1131,7 @@ void PokeballGlowEffect_1(struct Sprite *sprite)
}
}
-void PokeballGlowEffect_2(struct Sprite *sprite)
+static void PokeballGlowEffect_2(struct Sprite *sprite)
{
u8 phase;
if ((--sprite->data[1]) == 0)
@@ -1016,7 +1161,7 @@ void PokeballGlowEffect_2(struct Sprite *sprite)
}
}
-void PokeballGlowEffect_3(struct Sprite *sprite)
+static void PokeballGlowEffect_3(struct Sprite *sprite)
{
u8 phase;
if ((--sprite->data[1]) == 0)
@@ -1038,7 +1183,7 @@ void PokeballGlowEffect_3(struct Sprite *sprite)
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x103, gUnknown_0855C3BC[phase], gUnknown_0855C3C0[phase], gUnknown_0855C3C4[phase]);
}
-void PokeballGlowEffect_4(struct Sprite *sprite)
+static void PokeballGlowEffect_4(struct Sprite *sprite)
{
if ((--sprite->data[1]) == 0)
{
@@ -1046,12 +1191,12 @@ void PokeballGlowEffect_4(struct Sprite *sprite)
}
}
-void PokeballGlowEffect_5(struct Sprite *sprite)
+static void PokeballGlowEffect_5(struct Sprite *sprite)
{
sprite->data[0]++;
}
-void PokeballGlowEffect_6(struct Sprite *sprite)
+static void PokeballGlowEffect_6(struct Sprite *sprite)
{
if (sprite->data[5] == 0 || IsFanfareTaskInactive())
{
@@ -1059,7 +1204,7 @@ void PokeballGlowEffect_6(struct Sprite *sprite)
}
}
-void PokeballGlowEffect_7(struct Sprite *sprite)
+static void PokeballGlowEffect_7(struct Sprite *sprite)
{
}
@@ -1071,7 +1216,7 @@ void SpriteCB_PokeballGlow(struct Sprite *sprite)
}
}
-u8 PokecenterHealEffectHelper(s16 x, s16 y)
+static u8 PokecenterHealEffectHelper(s16 x, s16 y)
{
u8 spriteIdAtEnd;
struct Sprite *sprite;
@@ -1097,7 +1242,7 @@ void SpriteCB_PokecenterMonitor(struct Sprite *sprite)
}
}
-void HallOfFameRecordEffectHelper(s16 a0, s16 a1, s16 a2, u8 a3)
+static void HallOfFameRecordEffectHelper(s16 a0, s16 a1, s16 a2, u8 a3)
{
u8 spriteIdAtEnd;
if (!a3)
@@ -1129,10 +1274,6 @@ void SpriteCB_HallOfFameMonitor(struct Sprite *sprite)
}
}
-void mapldr_080842E8(void);
-void mapldr_08084390(void);
-void task00_8084310(u8);
-void c3_080843F8(u8);
void sub_80B69DC(void)
{
@@ -1140,7 +1281,7 @@ void sub_80B69DC(void)
gFieldCallback = mapldr_080842E8;
}
-void mapldr_080842E8(void)
+static void mapldr_080842E8(void)
{
pal_fill_black();
CreateTask(task00_8084310, 0);
@@ -1149,7 +1290,7 @@ void mapldr_080842E8(void)
gFieldCallback = NULL;
}
-void task00_8084310(u8 taskId)
+static void task00_8084310(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
@@ -1177,7 +1318,7 @@ void task00_8084310(u8 taskId)
}
}
-void mapldr_08084390(void)
+static void mapldr_08084390(void)
{
Overworld_PlaySpecialMapMusic();
pal_fill_black();
@@ -1192,7 +1333,7 @@ void mapldr_08084390(void)
gFieldCallback = NULL;
}
-void c3_080843F8(u8 taskId)
+static void c3_080843F8(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
@@ -1213,11 +1354,6 @@ void c3_080843F8(u8 taskId)
}
}
-extern void pal_fill_for_maplights(void);
-void sub_80B6B94(u8);
-extern void CameraObjectReset2(void);
-extern void CameraObjectReset1(void);
-
void sub_80B6B68(void)
{
Overworld_PlaySpecialMapMusic();
@@ -1228,14 +1364,14 @@ void sub_80B6B68(void)
gFieldCallback = NULL;
}
-void sub_80B6B94(u8 taskId)
+static void sub_80B6B94(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
while (gUnknown_0855C3C8[task->data[0]](task)); // return code signifies whether to continue blocking here
}
-bool8 sub_80B6BCC(struct Task *task) // gUnknown_0855C3C8[0]
+static bool8 sub_80B6BCC(struct Task *task) // gUnknown_0855C3C8[0]
{
struct EventObject *playerObject;
struct Sprite *playerSprite;
@@ -1253,7 +1389,7 @@ bool8 sub_80B6BCC(struct Task *task) // gUnknown_0855C3C8[0]
return TRUE;
}
-bool8 sub_80B6C74(struct Task *task) // gUnknown_0855C3C8[1]
+static bool8 sub_80B6C74(struct Task *task) // gUnknown_0855C3C8[1]
{
if (IsWeatherNotFadingIn())
{
@@ -1262,7 +1398,7 @@ bool8 sub_80B6C74(struct Task *task) // gUnknown_0855C3C8[1]
return FALSE;
}
-bool8 sub_80B6C90(struct Task *task) // gUnknown_0855C3C8[2]
+static bool8 sub_80B6C90(struct Task *task) // gUnknown_0855C3C8[2]
{
struct Sprite *sprite;
s16 centerToCornerVecY;
@@ -1277,7 +1413,7 @@ bool8 sub_80B6C90(struct Task *task) // gUnknown_0855C3C8[2]
return FALSE;
}
-bool8 sub_80B6D04(struct Task *task)
+static bool8 sub_80B6D04(struct Task *task)
{
struct EventObject *eventObject;
struct Sprite *sprite;
@@ -1311,7 +1447,7 @@ bool8 sub_80B6D04(struct Task *task)
return FALSE;
}
-bool8 sub_80B6DBC(struct Task *task)
+static bool8 sub_80B6DBC(struct Task *task)
{
task->data[0]++;
task->data[1] = 4;
@@ -1320,7 +1456,7 @@ bool8 sub_80B6DBC(struct Task *task)
return TRUE;
}
-bool8 sub_80B6DD8(struct Task *task)
+static bool8 sub_80B6DD8(struct Task *task)
{
SetCameraPanning(0, task->data[1]);
task->data[1] = -task->data[1];
@@ -1336,7 +1472,7 @@ bool8 sub_80B6DD8(struct Task *task)
return FALSE;
}
-bool8 sub_80B6E18(struct Task *task)
+static bool8 sub_80B6E18(struct Task *task)
{
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
@@ -1347,19 +1483,6 @@ bool8 sub_80B6E18(struct Task *task)
return FALSE;
}
-void sub_80B6E88(u8);
-extern void sub_80E1558(u8);
-extern void sub_80AF0B4(void);
-
-void sub_80B6FB8(struct Task *);
-void sub_80B7004(struct Task *);
-void sub_80B7050(void);
-void sub_80B7060(void);
-bool8 BGMusicStopped(void);
-void sub_80B70B4(void);
-void sub_80E1570(void);
-void sub_80B70DC(u8);
-
void sub_80B6E4C(u8 a0, u8 priority)
{
u8 taskId;
@@ -1371,14 +1494,14 @@ void sub_80B6E4C(u8 a0, u8 priority)
}
}
-void sub_80B6E88(u8 taskId)
+static void sub_80B6E88(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
while (gUnknown_0855C3E4[task->data[0]](task));
}
-bool8 sub_80B6EC0(struct Task *task)
+static bool8 sub_80B6EC0(struct Task *task)
{
FreezeEventObjects();
CameraObjectReset2();
@@ -1387,7 +1510,7 @@ bool8 sub_80B6EC0(struct Task *task)
return FALSE;
}
-bool8 sub_80B6EE0(struct Task *task)
+static bool8 sub_80B6EE0(struct Task *task)
{
struct EventObject *eventObject;
eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
@@ -1406,7 +1529,7 @@ bool8 sub_80B6EE0(struct Task *task)
return FALSE;
}
-bool8 sub_80B6F50(struct Task *task)
+static bool8 sub_80B6F50(struct Task *task)
{
sub_80B6FB8(task);
if (task->data[2] > 3)
@@ -1417,14 +1540,14 @@ bool8 sub_80B6F50(struct Task *task)
return FALSE;
}
-bool8 sub_80B6F74(struct Task *task)
+static bool8 sub_80B6F74(struct Task *task)
{
sub_80B6FB8(task);
sub_80B7060();
return FALSE;
}
-bool8 sub_80B6F84(struct Task *task)
+static bool8 sub_80B6F84(struct Task *task)
{
sub_80B7004(task);
if (task->data[2] > 3)
@@ -1435,14 +1558,14 @@ bool8 sub_80B6F84(struct Task *task)
return FALSE;
}
-bool8 sub_80B6FA8(struct Task *task)
+static bool8 sub_80B6FA8(struct Task *task)
{
sub_80B7004(task);
sub_80B7060();
return FALSE;
}
-void sub_80B6FB8(struct Task *task)
+static void sub_80B6FB8(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
@@ -1455,7 +1578,7 @@ void sub_80B6FB8(struct Task *task)
}
}
-void sub_80B7004(struct Task *task)
+static void sub_80B7004(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
@@ -1468,13 +1591,13 @@ void sub_80B7004(struct Task *task)
}
}
-void sub_80B7050(void)
+static void sub_80B7050(void)
{
music_something();
sub_80AF0B4();
}
-void sub_80B7060(void)
+static void sub_80B7060(void)
{
if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
@@ -1486,7 +1609,7 @@ void sub_80B7060(void)
}
}
-void sub_80B70B4(void)
+static void sub_80B70B4(void)
{
Overworld_PlaySpecialMapMusic();
pal_fill_for_maplights();
@@ -1495,14 +1618,14 @@ void sub_80B70B4(void)
gFieldCallback = NULL;
}
-void sub_80B70DC(u8 taskId)
+static void sub_80B70DC(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
while (gUnknown_0855C3FC[task->data[0]](task));
}
-bool8 sub_80B7114(struct Task *task)
+static bool8 sub_80B7114(struct Task *task)
{
struct EventObject *eventObject;
s16 x;
@@ -1527,7 +1650,7 @@ bool8 sub_80B7114(struct Task *task)
return TRUE;
}
-bool8 sub_80B7190(struct Task *task)
+static bool8 sub_80B7190(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
@@ -1537,7 +1660,7 @@ bool8 sub_80B7190(struct Task *task)
return FALSE;
}
-bool8 sub_80B71D0(struct Task *task)
+static bool8 sub_80B71D0(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
@@ -1557,7 +1680,7 @@ bool8 sub_80B71D0(struct Task *task)
return FALSE;
}
-bool8 sub_80B7230(struct Task *task)
+static bool8 sub_80B7230(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
@@ -1567,7 +1690,7 @@ bool8 sub_80B7230(struct Task *task)
return FALSE;
}
-bool8 sub_80B7270(struct Task *task)
+static bool8 sub_80B7270(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
@@ -1587,9 +1710,7 @@ bool8 sub_80B7270(struct Task *task)
return FALSE;
}
-extern bool8 sub_80E1584(void);
-
-bool8 sub_80B72D0(struct Task *task)
+static bool8 sub_80B72D0(struct Task *task)
{
if (sub_80E1584())
{
@@ -1600,7 +1721,7 @@ bool8 sub_80B72D0(struct Task *task)
return TRUE;
}
-bool8 sub_80B72F4(struct Task *task)
+static bool8 sub_80B72F4(struct Task *task)
{
struct EventObject *eventObject;
eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
@@ -1614,8 +1735,6 @@ bool8 sub_80B72F4(struct Task *task)
return FALSE;
}
-void sub_80B7384(u8);
-
bool8 FldEff_UseWaterfall(void)
{
u8 taskId;
@@ -1625,12 +1744,12 @@ bool8 FldEff_UseWaterfall(void)
return FALSE;
}
-void sub_80B7384(u8 taskId)
+static void sub_80B7384(u8 taskId)
{
while (gUnknown_0855C418[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId]));
}
-bool8 sub_80B73D0(struct Task *task, struct EventObject *eventObject)
+static bool8 sub_80B73D0(struct Task *task, struct EventObject *eventObject)
{
ScriptContext2_Enable();
gPlayerAvatar.preventStep = TRUE;
@@ -1638,7 +1757,7 @@ bool8 sub_80B73D0(struct Task *task, struct EventObject *eventObject)
return FALSE;
}
-bool8 waterfall_1_do_anim_probably(struct Task *task, struct EventObject *eventObject)
+static bool8 waterfall_1_do_anim_probably(struct Task *task, struct EventObject *eventObject)
{
ScriptContext2_Enable();
if (!EventObjectIsMovementOverridden(eventObject))
@@ -1651,7 +1770,7 @@ bool8 waterfall_1_do_anim_probably(struct Task *task, struct EventObject *eventO
return FALSE;
}
-bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct EventObject *eventObject)
+static bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct EventObject *eventObject)
{
if (FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
@@ -1661,14 +1780,14 @@ bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct EventObjec
return TRUE;
}
-bool8 sub_80B7450(struct Task *task, struct EventObject *eventObject)
+static bool8 sub_80B7450(struct Task *task, struct EventObject *eventObject)
{
EventObjectSetHeldMovement(eventObject, GetWalkSlowMovementAction(DIR_NORTH));
task->data[0]++;
return FALSE;
}
-bool8 sub_80B7478(struct Task *task, struct EventObject *eventObject)
+static bool8 sub_80B7478(struct Task *task, struct EventObject *eventObject)
{
if (!EventObjectClearHeldMovementIfFinished(eventObject))
{
@@ -1686,9 +1805,6 @@ bool8 sub_80B7478(struct Task *task, struct EventObject *eventObject)
return FALSE;
}
-void Task_Dive(u8);
-extern int dive_warp(struct MapPosition *, u16);
-
bool8 FldEff_UseDive(void)
{
u8 taskId;
@@ -1704,14 +1820,14 @@ void Task_Dive(u8 taskId)
while (gUnknown_0855C42C[gTasks[taskId].data[0]](&gTasks[taskId]));
}
-bool8 dive_1_lock(struct Task *task)
+static bool8 dive_1_lock(struct Task *task)
{
gPlayerAvatar.preventStep = TRUE;
task->data[0]++;
return FALSE;
}
-bool8 dive_2_unknown(struct Task *task)
+static bool8 dive_2_unknown(struct Task *task)
{
ScriptContext2_Enable();
gFieldEffectArguments[0] = task->data[15];
@@ -1720,7 +1836,7 @@ bool8 dive_2_unknown(struct Task *task)
return FALSE;
}
-bool8 dive_3_unknown(struct Task *task)
+static bool8 dive_3_unknown(struct Task *task)
{
struct MapPosition mapPosition;
PlayerGetDestCoords(&mapPosition.x, &mapPosition.y);
@@ -1733,20 +1849,17 @@ bool8 dive_3_unknown(struct Task *task)
return FALSE;
}
-void sub_80B75F0(u8);
-void mapldr_080851BC(void);
-
void sub_80B75D8(u8 priority)
{
CreateTask(sub_80B75F0, priority);
}
-void sub_80B75F0(u8 taskId)
+static void sub_80B75F0(u8 taskId)
{
while (gUnknown_0855C438[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
}
-bool8 sub_80B764C(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B764C(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
FreezeEventObjects();
CameraObjectReset2();
@@ -1758,7 +1871,7 @@ bool8 sub_80B764C(struct Task *task, struct EventObject *eventObject, struct Spr
return TRUE;
}
-bool8 sub_80B7684(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B7684(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
SetCameraPanning(0, task->data[1]);
task->data[1] = -task->data[1];
@@ -1771,7 +1884,7 @@ bool8 sub_80B7684(struct Task *task, struct EventObject *eventObject, struct Spr
return FALSE;
}
-bool8 sub_80B76B8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B76B8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
sprite->pos2.y = 0;
task->data[3] = 1;
@@ -1785,7 +1898,7 @@ bool8 sub_80B76B8(struct Task *task, struct EventObject *eventObject, struct Spr
return TRUE;
}
-bool8 sub_80B7704(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B7704(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
s16 centerToCornerVecY;
SetCameraPanning(0, task->data[1]);
@@ -1828,7 +1941,7 @@ bool8 sub_80B7704(struct Task *task, struct EventObject *eventObject, struct Spr
return FALSE;
}
-bool8 sub_80B77F8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B77F8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
music_something();
sub_80AF0B4();
@@ -1836,7 +1949,7 @@ bool8 sub_80B77F8(struct Task *task, struct EventObject *eventObject, struct Spr
return FALSE;
}
-bool8 sub_80B7814(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B7814(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
@@ -1848,9 +1961,7 @@ bool8 sub_80B7814(struct Task *task, struct EventObject *eventObject, struct Spr
return FALSE;
}
-void sub_80B7890(u8);
-
-void mapldr_080851BC(void)
+static void mapldr_080851BC(void)
{
Overworld_PlaySpecialMapMusic();
pal_fill_for_maplights();
@@ -1859,12 +1970,12 @@ void mapldr_080851BC(void)
CreateTask(sub_80B7890, 0);
}
-void sub_80B7890(u8 taskId)
+static void sub_80B7890(u8 taskId)
{
while (gUnknown_0855C450[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
}
-bool8 sub_80B78EC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B78EC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
CameraObjectReset2();
FreezeEventObjects();
@@ -1874,7 +1985,7 @@ bool8 sub_80B78EC(struct Task *task, struct EventObject *eventObject, struct Spr
return FALSE;
}
-bool8 sub_80B791C(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B791C(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (IsWeatherNotFadingIn())
{
@@ -1888,7 +1999,7 @@ bool8 sub_80B791C(struct Task *task, struct EventObject *eventObject, struct Spr
return FALSE;
}
-bool8 sub_80B7968(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B7968(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
sprite = &gSprites[task->data[1]];
if (sprite->animCmdIndex > 1)
@@ -1902,7 +2013,7 @@ bool8 sub_80B7968(struct Task *task, struct EventObject *eventObject, struct Spr
return FALSE;
}
-bool8 sub_80B79BC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B79BC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (EventObjectClearHeldMovementIfFinished(eventObject))
{
@@ -1914,8 +2025,6 @@ bool8 sub_80B79BC(struct Task *task, struct EventObject *eventObject, struct Spr
return FALSE;
}
-extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36];
-
u8 FldEff_LavaridgeGymWarp(void)
{
u8 spriteId;
@@ -1934,19 +2043,17 @@ void sub_80B7A58(struct Sprite *sprite)
}
}
-void sub_80B7A8C(u8);
-
void sub_80B7A74(u8 priority)
{
CreateTask(sub_80B7A8C, priority);
}
-void sub_80B7A8C(u8 taskId)
+static void sub_80B7A8C(u8 taskId)
{
while(gUnknown_0855C460[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId], &gSprites[gPlayerAvatar.spriteId]));
}
-bool8 sub_80B7AE8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B7AE8(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
FreezeEventObjects();
CameraObjectReset2();
@@ -1956,7 +2063,7 @@ bool8 sub_80B7AE8(struct Task *task, struct EventObject *eventObject, struct Spr
return FALSE;
}
-bool8 sub_80B7B18(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B7B18(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (EventObjectClearHeldMovementIfFinished(eventObject))
{
@@ -1978,7 +2085,7 @@ bool8 sub_80B7B18(struct Task *task, struct EventObject *eventObject, struct Spr
return FALSE;
}
-bool8 sub_80B7B94(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B7B94(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (gSprites[task->data[1]].animCmdIndex == 2)
{
@@ -1988,7 +2095,7 @@ bool8 sub_80B7B94(struct Task *task, struct EventObject *eventObject, struct Spr
return FALSE;
}
-bool8 sub_80B7BCC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B7BCC(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
{
@@ -1999,10 +2106,7 @@ bool8 sub_80B7BCC(struct Task *task, struct EventObject *eventObject, struct Spr
return FALSE;
}
-void sub_80B7CE4(u8);
-void mapldr_080859D4(void);
-
-bool8 sub_80B7BF4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
+static bool8 sub_80B7BF4(struct Task *task, struct EventObject *eventObject, struct Sprite *sprite)
{
if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
@@ -2032,29 +2136,29 @@ void sub_80B7CAC(struct Sprite *sprite)
}
}
-void sub_80B7CC8(void)
+void StartEscapeRopeFieldEffect(void)
{
ScriptContext2_Enable();
FreezeEventObjects();
- CreateTask(sub_80B7CE4, 0x50);
+ CreateTask(DoEscapeRopeFieldEffect, 0x50);
}
-void sub_80B7CE4(u8 taskId)
+static void DoEscapeRopeFieldEffect(u8 taskId)
{
- gUnknown_0855C474[gTasks[taskId].data[0]](&gTasks[taskId]);
+ gEscapeRopeFieldEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-void sub_80B7D14(struct Task *task)
+static void EscapeRopeFieldEffect_Step0(struct Task *task)
{
task->data[0]++;
task->data[14] = 64;
task->data[15] = GetPlayerFacingDirection();
}
-void sub_80B7D34(struct Task *task)
+static void EscapeRopeFieldEffect_Step1(struct Task *task)
{
struct EventObject *eventObject;
- u8 spinDirections[5] = {1, 3, 4, 2, 1};
+ u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
if (task->data[14] != 0 && (--task->data[14]) == 0)
{
music_something();
@@ -2070,7 +2174,7 @@ void sub_80B7D34(struct Task *task)
WarpIntoMap();
gFieldCallback = mapldr_080859D4;
SetMainCallback2(CB2_LoadMap);
- DestroyTask(FindTaskIdByFunc(sub_80B7CE4));
+ DestroyTask(FindTaskIdByFunc(DoEscapeRopeFieldEffect));
} else if (task->data[1] == 0 || (--task->data[1]) == 0)
{
EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(spinDirections[eventObject->facingDirection]));
@@ -2088,9 +2192,7 @@ void (*const gUnknown_0855C484[])(struct Task *) = {
sub_80B7EE8
};
-void sub_80B7E94(u8);
-
-void mapldr_080859D4(void)
+static void mapldr_080859D4(void)
{
Overworld_PlaySpecialMapMusic();
pal_fill_for_maplights();
@@ -2101,12 +2203,12 @@ void mapldr_080859D4(void)
CreateTask(sub_80B7E94, 0);
}
-void sub_80B7E94(u8 taskId)
+static void sub_80B7E94(u8 taskId)
{
gUnknown_0855C484[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-void sub_80B7EC4(struct Task *task)
+static void sub_80B7EC4(struct Task *task)
{
if (IsWeatherNotFadingIn())
{
@@ -2115,7 +2217,7 @@ void sub_80B7EC4(struct Task *task)
}
}
-void sub_80B7EE8(struct Task *task)
+static void sub_80B7EE8(struct Task *task)
{
u8 spinDirections[5] = {1, 3, 4, 2, 1};
struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
@@ -2143,13 +2245,6 @@ void sub_80B7EE8(struct Task *task)
eventObject->invisible ^= 1;
}
-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 CreateTeleportFieldEffectTask(void)
{
CreateTask(ExecuteTeleportFieldEffectTask, 0);
@@ -2245,8 +2340,6 @@ static void TeleportFieldEffectTask4(struct Task *task)
}
}
-void sub_80B8250(u8);
-
static void mapldr_08085D88(void)
{
Overworld_PlaySpecialMapMusic();
@@ -2265,12 +2358,12 @@ void (*const gUnknown_0855C49C[])(struct Task *) = {
sub_80B8410
};
-void sub_80B8250(u8 taskId)
+static void sub_80B8250(u8 taskId)
{
gUnknown_0855C49C[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-void sub_80B8280(struct Task *task)
+static void sub_80B8280(struct Task *task)
{
struct Sprite *sprite;
s16 centerToCornerVecY;
@@ -2289,7 +2382,7 @@ void sub_80B8280(struct Task *task)
}
}
-void sub_80B830C(struct Task *task)
+static void sub_80B830C(struct Task *task)
{
u8 spinDirections[5] = {1, 3, 4, 2, 1};
struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
@@ -2328,7 +2421,7 @@ void sub_80B830C(struct Task *task)
}
}
-void sub_80B8410(struct Task *task)
+static void sub_80B8410(struct Task *task)
{
u8 spinDirections[5] = {1, 3, 4, 2, 1};
struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
@@ -2346,13 +2439,6 @@ void sub_80B8410(struct Task *task)
}
}
-void sub_80B8554(u8);
-void sub_80B88B4(u8);
-u8 sub_80B8C60(u32, u32, u32);
-void sub_80B880C(void);
-void sub_80B8874(u16);
-void sub_80B8CC0(struct Sprite *);
-
bool8 FldEff_FieldMoveShowMon(void)
{
u8 taskId;
@@ -2391,12 +2477,12 @@ void (*const gUnknown_0855C4A8[])(struct Task *) = {
overworld_bg_setup_2,
};
-void sub_80B8554(u8 taskId)
+static void sub_80B8554(u8 taskId)
{
gUnknown_0855C4A8[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-void sub_80B8584(struct Task *task)
+static void sub_80B8584(struct Task *task)
{
task->data[11] = REG_WININ;
task->data[12] = REG_WINOUT;
@@ -2413,12 +2499,10 @@ void sub_80B8584(struct Task *task)
task->data[0]++;
}
-void sub_80B85F8(struct Task *task)
+static void sub_80B85F8(struct Task *task)
{
- u16 offset;
- u16 delta;
- offset = ((REG_BG0CNT >> 2) << 14);
- delta = ((REG_BG0CNT >> 8) << 11);
+ u16 offset = ((REG_BG0CNT >> 2) << 14);
+ u16 delta = ((REG_BG0CNT >> 8) << 11);
CpuCopy16(gFieldMoveStreaksTiles, (void *)(VRAM + offset), 0x200);
CpuFill32(0, (void *)(VRAM + delta), 0x800);
LoadPalette(gFieldMoveStreaksPalette, 0xf0, 0x20);
@@ -2426,7 +2510,7 @@ void sub_80B85F8(struct Task *task)
task->data[0]++;
}
-void sub_80B8660(struct Task *task)
+static void sub_80B8660(struct Task *task)
{
s16 v0;
s16 v2;
@@ -2459,7 +2543,7 @@ void sub_80B8660(struct Task *task)
}
}
-void sub_80B86EC(struct Task *task)
+static void sub_80B86EC(struct Task *task)
{
task->data[5] -= 16;
if (gSprites[task->data[15]].data[7])
@@ -2468,7 +2552,7 @@ void sub_80B86EC(struct Task *task)
}
}
-void sub_80B871C(struct Task *task)
+static void sub_80B871C(struct Task *task)
{
s16 v2;
s16 v3;
@@ -2492,10 +2576,9 @@ void sub_80B871C(struct Task *task)
}
}
-void sub_80B8770(struct Task *task)
+static void sub_80B8770(struct Task *task)
{
- u16 bg0cnt;
- bg0cnt = (REG_BG0CNT >> 8) << 11;
+ u16 bg0cnt = (REG_BG0CNT >> 8) << 11;
CpuFill32(0, (void *)VRAM + bg0cnt, 0x800);
task->data[1] = 0xf1;
task->data[2] = 0xa1;
@@ -2504,7 +2587,7 @@ void sub_80B8770(struct Task *task)
task->data[0]++;
}
-void overworld_bg_setup_2(struct Task *task)
+static void overworld_bg_setup_2(struct Task *task)
{
IntrCallback callback;
LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback);
@@ -2515,11 +2598,10 @@ void overworld_bg_setup_2(struct Task *task)
DestroyTask(FindTaskIdByFunc(sub_80B8554));
}
-void sub_80B880C(void)
+static void sub_80B880C(void)
{
- struct Task *task;
IntrCallback callback;
- task = &gTasks[FindTaskIdByFunc(sub_80B8554)];
+ struct Task *task = &gTasks[FindTaskIdByFunc(sub_80B8554)];
LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback);
callback();
SetGpuReg(REG_OFFSET_WIN0H, task->data[1]);
@@ -2530,7 +2612,7 @@ void sub_80B880C(void)
SetGpuReg(REG_OFFSET_BG0VOFS, task->data[6]);
}
-void sub_80B8874(u16 offs)
+static void sub_80B8874(u16 offs)
{
u16 i;
u16 *dest;
@@ -2541,11 +2623,6 @@ void sub_80B8874(u16 offs)
}
}
-void sub_80B8AE0(void);
-bool8 sub_80B8B38(struct Task *);
-void sub_80B8B28(struct Task *);
-bool8 sub_80B8BF0(struct Task *);
-
void (*const gUnknown_0855C4C4[])(struct Task *) = {
sub_80B88E4,
sub_80B8920,
@@ -2556,12 +2633,12 @@ void (*const gUnknown_0855C4C4[])(struct Task *) = {
sub_80B8A64,
};
-void sub_80B88B4(u8 taskId)
+static void sub_80B88B4(u8 taskId)
{
gUnknown_0855C4C4[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-void sub_80B88E4(struct Task *task)
+static void sub_80B88E4(struct Task *task)
{
SetGpuReg(REG_OFFSET_BG0HOFS, task->data[1]);
SetGpuReg(REG_OFFSET_BG0VOFS, task->data[2]);
@@ -2570,7 +2647,7 @@ void sub_80B88E4(struct Task *task)
task->data[0]++;
}
-void sub_80B8920(struct Task *task)
+static void sub_80B8920(struct Task *task)
{
u16 offset;
u16 delta;
@@ -2583,7 +2660,7 @@ void sub_80B8920(struct Task *task)
task->data[0]++;
}
-void sub_80B898C(struct Task *task)
+static void sub_80B898C(struct Task *task)
{
if (sub_80B8B38(task))
{
@@ -2595,7 +2672,7 @@ void sub_80B898C(struct Task *task)
sub_80B8B28(task);
}
-void sub_80B89DC(struct Task *task)
+static void sub_80B89DC(struct Task *task)
{
sub_80B8B28(task);
if (gSprites[task->data[15]].data[7])
@@ -2604,7 +2681,7 @@ void sub_80B89DC(struct Task *task)
}
}
-void sub_80B8A0C(struct Task *task)
+static void sub_80B8A0C(struct Task *task)
{
sub_80B8B28(task);
task->data[3] = task->data[1] & 7;
@@ -2614,7 +2691,7 @@ void sub_80B8A0C(struct Task *task)
task->data[0]++;
}
-void sub_80B8A44(struct Task *task)
+static void sub_80B8A44(struct Task *task)
{
sub_80B8B28(task);
if (sub_80B8BF0(task))
@@ -2623,7 +2700,7 @@ void sub_80B8A44(struct Task *task)
}
}
-void sub_80B8A64(struct Task *task)
+static void sub_80B8A64(struct Task *task)
{
IntrCallback intrCallback;
u16 bg0cnt;
@@ -2637,7 +2714,7 @@ void sub_80B8A64(struct Task *task)
DestroyTask(FindTaskIdByFunc(sub_80B88B4));
}
-void sub_80B8AE0(void)
+static void sub_80B8AE0(void)
{
IntrCallback intrCallback;
struct Task *task;
@@ -2648,14 +2725,13 @@ void sub_80B8AE0(void)
SetGpuReg(REG_OFFSET_BG0VOFS, task->data[2]);
}
-void sub_80B8B28(struct Task *task)
+static void sub_80B8B28(struct Task *task)
{
task->data[1] -= 16;
task->data[3] += 16;
}
-#ifdef NONMATCHING
-bool8 sub_80B8B38(struct Task *task)
+static bool8 sub_80B8B38(struct Task *task)
{
u16 i;
u16 srcOffs;
@@ -2671,118 +2747,20 @@ bool8 sub_80B8B38(struct Task *task)
dstOffs = (32 - dstOffs) & 0x1f;
srcOffs = (32 - task->data[4]) & 0x1f;
dest = (u16 *)(VRAM + 0x140 + (u16)task->data[12]);
- for (i=0; i<10; i++)
+ for (i = 0; i < 10; i++)
{
- dest[dstOffs + i * 32] = gDarknessFieldMoveStreaksTilemap[srcOffs + i * 32] | 0xf000;
+ dest[dstOffs + i * 32] = gDarknessFieldMoveStreaksTilemap[srcOffs + i * 32];
+ dest[dstOffs + i * 32] |= 0xf000;
+
dest[((dstOffs + 1) & 0x1f) + i * 32] = gDarknessFieldMoveStreaksTilemap[((srcOffs + 1) & 0x1f) + i * 32] | 0xf000;
+ dest[((dstOffs + 1) & 0x1f) + i * 32] |= 0xf000;
}
task->data[4] += 2;
}
return FALSE;
}
-#else
-NAKED
-bool8 sub_80B8B38(struct Task *task)
-{
- 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, 0x4\n"
- "\tadds r5, r0, 0\n"
- "\tldrh r2, [r5, 0x10]\n"
- "\tmovs r1, 0x10\n"
- "\tldrsh r0, [r5, r1]\n"
- "\tcmp r0, 0x1F\n"
- "\tble _08088724\n"
- "\tmovs r0, 0x1\n"
- "\tb _080887A8\n"
- "_08088724:\n"
- "\tldrh r0, [r5, 0xE]\n"
- "\tlsls r0, 16\n"
- "\tasrs r3, r0, 19\n"
- "\tmovs r1, 0x1F\n"
- "\tands r3, r1\n"
- "\tmovs r4, 0x10\n"
- "\tldrsh r0, [r5, r4]\n"
- "\tcmp r3, r0\n"
- "\tblt _080887A6\n"
- "\tmovs r0, 0x20\n"
- "\tsubs r3, r0, r3\n"
- "\tands r3, r1\n"
- "\tsubs r0, r2\n"
- "\tmov r12, r0\n"
- "\tmov r7, r12\n"
- "\tands r7, r1\n"
- "\tmov r12, r7\n"
- "\tldrh r0, [r5, 0x20]\n"
- "\tldr r1, _080887B8 @ =0x06000140\n"
- "\tadds r1, r0\n"
- "\tmov r8, r1\n"
- "\tmovs r4, 0\n"
- "\tldr r7, _080887BC @ =gDarknessFieldMoveStreaksTilemap\n"
- "\tmov r10, r7\n"
- "\tmovs r0, 0xF0\n"
- "\tlsls r0, 8\n"
- "\tmov r9, r0\n"
- "\tadds r1, r3, 0x1\n"
- "\tmovs r0, 0x1F\n"
- "\tands r1, r0\n"
- "\tstr r1, [sp]\n"
- "\tmov r6, r12\n"
- "\tadds r6, 0x1\n"
- "\tands r6, r0\n"
- "_08088768:\n"
- "\tlsls r1, r4, 5\n"
- "\tadds r2, r1, r3\n"
- "\tlsls r2, 1\n"
- "\tadd r2, r8\n"
- "\tmov r7, r12\n"
- "\tadds r0, r7, r1\n"
- "\tlsls r0, 1\n"
- "\tadd r0, r10\n"
- "\tldrh r0, [r0]\n"
- "\tmov r7, r9\n"
- "\torrs r0, r7\n"
- "\tstrh r0, [r2]\n"
- "\tldr r0, [sp]\n"
- "\tadds r2, r1, r0\n"
- "\tlsls r2, 1\n"
- "\tadd r2, r8\n"
- "\tadds r1, r6, r1\n"
- "\tlsls r1, 1\n"
- "\tadd r1, r10\n"
- "\tldrh r0, [r1]\n"
- "\tmov r1, r9\n"
- "\torrs r0, r1\n"
- "\tstrh r0, [r2]\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r4, r0, 16\n"
- "\tcmp r4, 0x9\n"
- "\tbls _08088768\n"
- "\tldrh r0, [r5, 0x10]\n"
- "\tadds r0, 0x2\n"
- "\tstrh r0, [r5, 0x10]\n"
- "_080887A6:\n"
- "\tmovs r0, 0\n"
- "_080887A8:\n"
- "\tadd sp, 0x4\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\n"
- "\t.align 2, 0\n"
- "_080887B8: .4byte 0x06000140\n"
- "_080887BC: .4byte gDarknessFieldMoveStreaksTilemap");
-}
-#endif
-bool8 sub_80B8BF0(struct Task *task)
+static bool8 sub_80B8BF0(struct Task *task)
{
u16 i;
u16 dstOffs;
@@ -2796,7 +2774,7 @@ bool8 sub_80B8BF0(struct Task *task)
{
dstOffs = (task->data[1] >> 3) & 0x1f;
dest = (u16 *)(VRAM + 0x140 + (u16)task->data[12]);
- for (i=0; i<10; i++)
+ for (i = 0; i < 10; i++)
{
dest[dstOffs + i * 32] = 0xf000;
dest[((dstOffs + 1) & 0x1f) + i * 32] = 0xf000;
@@ -2806,7 +2784,7 @@ bool8 sub_80B8BF0(struct Task *task)
return FALSE;
}
-u8 sub_80B8C60(u32 a0, u32 a1, u32 a2)
+static u8 sub_80B8C60(u32 a0, u32 a1, u32 a2)
{
u16 v0;
u8 monSprite;
@@ -2822,9 +2800,7 @@ u8 sub_80B8C60(u32 a0, u32 a1, u32 a2)
return monSprite;
}
-void sub_80B8D04(struct Sprite *);
-
-void sub_80B8CC0(struct Sprite *sprite)
+static void sub_80B8CC0(struct Sprite *sprite)
{
if ((sprite->pos1.x -= 20) <= 0x78)
{
@@ -2834,16 +2810,15 @@ void sub_80B8CC0(struct Sprite *sprite)
if (sprite->data[6])
{
PlayCry2(sprite->data[0], 0, 0x7d, 0xa);
- } else
+ }
+ else
{
PlayCry1(sprite->data[0], 0);
}
}
}
-void sub_80B8D20(struct Sprite *);
-
-void sub_80B8D04(struct Sprite *sprite)
+static void sub_80B8D04(struct Sprite *sprite)
{
if ((--sprite->data[1]) == 0)
{
@@ -2851,23 +2826,21 @@ void sub_80B8D04(struct Sprite *sprite)
}
}
-void sub_80B8D20(struct Sprite *sprite)
+static void sub_80B8D20(struct Sprite *sprite)
{
if (sprite->pos1.x < -0x40)
{
sprite->data[7] = 1;
- } else
+ }
+ else
{
sprite->pos1.x -= 20;
}
}
-void sub_80B8D84(u8);
-
u8 FldEff_UseSurf(void)
{
- u8 taskId;
- taskId = CreateTask(sub_80B8D84, 0xff);
+ u8 taskId = CreateTask(sub_80B8D84, 0xff);
gTasks[taskId].data[15] = gFieldEffectArguments[0];
Overworld_ClearSavedMusic();
Overworld_ChangeMusicTo(MUS_NAMINORI);
@@ -2882,12 +2855,12 @@ void (*const gUnknown_0855C4E0[])(struct Task *) = {
sub_80B8F24,
};
-void sub_80B8D84(u8 taskId)
+static void sub_80B8D84(u8 taskId)
{
gUnknown_0855C4E0[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-void sub_80B8DB4(struct Task *task)
+static void sub_80B8DB4(struct Task *task)
{
ScriptContext2_Enable();
FreezeEventObjects();
@@ -2898,19 +2871,19 @@ void sub_80B8DB4(struct Task *task)
task->data[0]++;
}
-void sub_80B8E14(struct Task *task)
+static void sub_80B8E14(struct Task *task)
{
struct EventObject *eventObject;
eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
sub_808C114();
- EventObjectSetHeldMovement(eventObject, 0x39);
+ EventObjectSetHeldMovement(eventObject, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
task->data[0]++;
}
}
-void sub_80B8E60(struct Task *task)
+static void sub_80B8E60(struct Task *task)
{
struct EventObject *eventObject;
eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
@@ -2922,7 +2895,7 @@ void sub_80B8E60(struct Task *task)
}
}
-void sub_80B8EA8(struct Task *task)
+static void sub_80B8EA8(struct Task *task)
{
struct EventObject *eventObject;
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
@@ -2939,7 +2912,7 @@ void sub_80B8EA8(struct Task *task)
}
}
-void sub_80B8F24(struct Task *task)
+static void sub_80B8F24(struct Task *task)
{
struct EventObject *eventObject;
eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
@@ -2956,13 +2929,12 @@ void sub_80B8F24(struct Task *task)
}
}
-#ifdef NONMATCHING
u8 sub_80B8F98(void)
{
- u8 spriteId, i, j, k, l;
- struct Sprite *sprite;
- spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[36], 0x78, -0x18, 1);
- sprite = &gSprites[spriteId];
+ u8 i, j, k;
+ u8 spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[36], 0x78, -0x18, 1);
+ struct Sprite *sprite = &gSprites[spriteId];
+
sprite->oam.priority = 1;
sprite->oam.paletteNum = 4;
sprite->data[0] = 0;
@@ -2973,7 +2945,7 @@ u8 sub_80B8F98(void)
sprite->data[5] = 0;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(14, 14));
- SetGpuReg(REG_OFFSET_WININ, 0x3F3F);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
LoadPalette(gUnknown_0855B610, 0xC0, sizeof(gUnknown_0855B610));
SetGpuReg(REG_OFFSET_BG0VOFS, 120);
for (i = 3; i < 15; i++)
@@ -2985,158 +2957,20 @@ u8 sub_80B8F98(void)
}
for (k = 0; k < 90; k++)
{
- for (l = 0; l < 8; l++)
+ for (i = 0; i < 8; i++)
{
- *(u16*)(VRAM + 0x8000 + (k + 1) * 32 + l * 4) = (gUnknown_0855B630[k * 32 + l * 4 + 1] << 8) + gUnknown_0855B630[k * 32 + l * 4];
- *(u16*)(VRAM + 0x8000 + (k + 1) * 32 + l * 4 + 2) = (gUnknown_0855B630[k * 32 + l * 4 + 3] << 8) + gUnknown_0855B630[k * 32 + l * 4 + 2];
+ *(u16*)(VRAM + 0x8000 + (k + 1) * 32 + i * 4) = (gUnknown_0855B630[k * 32 + i * 4 + 1] << 8) + gUnknown_0855B630[k * 32 + i * 4];
+ *(u16*)(VRAM + 0x8000 + (k + 1) * 32 + i * 4 + 2) = (gUnknown_0855B630[k * 32 + i * 4 + 3] << 8) + gUnknown_0855B630[k * 32 + i * 4 + 2];
}
}
return spriteId;
}
-#else
-NAKED
-u8 sub_80B8F98(void)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- ldr r0, =gFieldEffectObjectTemplatePointers\n\
- adds r0, 0x90\n\
- ldr r0, [r0]\n\
- movs r2, 0x18\n\
- negs r2, r2\n\
- movs r1, 0x78\n\
- movs r3, 0x1\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- lsls r1, r0, 4\n\
- add r1, r8\n\
- lsls r1, 2\n\
- ldr r0, =gSprites\n\
- adds r1, r0\n\
- ldrb r2, [r1, 0x5]\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r2\n\
- movs r2, 0x4\n\
- orrs r0, r2\n\
- movs r2, 0xF\n\
- ands r0, r2\n\
- movs r2, 0x40\n\
- orrs r0, r2\n\
- strb r0, [r1, 0x5]\n\
- movs r2, 0\n\
- strh r2, [r1, 0x2E]\n\
- strh r2, [r1, 0x30]\n\
- strh r2, [r1, 0x32]\n\
- ldr r0, =0x0000ffff\n\
- strh r0, [r1, 0x34]\n\
- ldrh r0, [r1, 0x22]\n\
- strh r0, [r1, 0x36]\n\
- strh r2, [r1, 0x38]\n\
- ldr r1, =0x00003e41\n\
- movs r0, 0x50\n\
- bl SetGpuReg\n\
- ldr r1, =0x00000e0e\n\
- movs r0, 0x52\n\
- bl SetGpuReg\n\
- ldr r1, =0x00003f3f\n\
- movs r0, 0x48\n\
- bl SetGpuReg\n\
- ldr r0, =gUnknown_0855B610\n\
- movs r1, 0xC0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- movs r0, 0x12\n\
- movs r1, 0x78\n\
- bl SetGpuReg\n\
- movs r4, 0x3\n\
- ldr r7, =0x0600f800\n\
- ldr r0, =0x0000bff4\n\
- adds r6, r0, 0\n\
-_080B901A:\n\
- movs r2, 0xC\n\
- lsls r0, r4, 1\n\
- lsls r5, r4, 5\n\
- adds r0, r4\n\
- lsls r3, r0, 1\n\
-_080B9024:\n\
- adds r0, r5, r2\n\
- lsls r0, 1\n\
- adds r0, r7\n\
- adds r1, r2, r6\n\
- adds r1, r3, r1\n\
- adds r1, 0x1\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- cmp r2, 0x11\n\
- bls _080B9024\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0xE\n\
- bls _080B901A\n\
- movs r0, 0\n\
- ldr r5, =gUnknown_0855B630\n\
-_080B904A:\n\
- movs r4, 0\n\
- adds r7, r0, 0x1\n\
- lsls r6, r0, 5\n\
-_080B9050:\n\
- lsls r1, r4, 2\n\
- adds r1, r6, r1\n\
- ldr r0, =0x06008020\n\
- adds r3, r1, r0\n\
- adds r0, r1, 0x1\n\
- adds r0, r5\n\
- ldrb r2, [r0]\n\
- lsls r2, 8\n\
- adds r0, r1, r5\n\
- ldrb r0, [r0]\n\
- adds r0, r2\n\
- strh r0, [r3]\n\
- ldr r0, =0x06008022\n\
- adds r3, r1, r0\n\
- adds r0, r1, 0x3\n\
- adds r0, r5\n\
- ldrb r2, [r0]\n\
- lsls r2, 8\n\
- adds r1, 0x2\n\
- adds r1, r5\n\
- ldrb r0, [r1]\n\
- adds r0, r2\n\
- strh r0, [r3]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x7\n\
- bls _080B9050\n\
- lsls r0, r7, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x59\n\
- bls _080B904A\n\
- mov r0, r8\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .pool");
-}
-#endif // NONMATCHING
-
-void sub_80B9128(struct Sprite *);
u8 FldEff_NPCFlyOut(void)
{
- u8 spriteId;
- struct Sprite *sprite;
- spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[26], 0x78, 0, 1);
- sprite = &gSprites[spriteId];
+ u8 spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[26], 0x78, 0, 1);
+ struct Sprite *sprite = &gSprites[spriteId];
+
sprite->oam.paletteNum = 0;
sprite->oam.priority = 1;
sprite->callback = sub_80B9128;
@@ -3145,9 +2979,10 @@ u8 FldEff_NPCFlyOut(void)
return spriteId;
}
-void sub_80B9128(struct Sprite *sprite)
+static void sub_80B9128(struct Sprite *sprite)
{
struct Sprite *npcSprite;
+
sprite->pos2.x = Cos(sprite->data[2], 0x8c);
sprite->pos2.y = Sin(sprite->data[2], 0x48);
sprite->data[2] = (sprite->data[2] + 4) & 0xff;
@@ -3166,19 +3001,9 @@ void sub_80B9128(struct Sprite *sprite)
}
}
-void sub_80B91D4(u8);
-extern void sub_81555D8(u8, u8);
-u8 sub_80B94C4(void);
-bool8 sub_80B9508(u8);
-void sub_80B9524(u8);
-void sub_80B9560(u8, u8);
-void sub_80B957C(struct Sprite *);
-void sub_80B963C(struct Sprite *);
-
u8 FldEff_UseFly(void)
{
- u8 taskId;
- taskId = CreateTask(sub_80B91D4, 0xfe);
+ u8 taskId = CreateTask(sub_80B91D4, 0xfe);
gTasks[taskId].data[1] = gFieldEffectArguments[0];
return 0;
}
@@ -3195,30 +3020,28 @@ void (*const gUnknown_0855C4F4[])(struct Task *) = {
sub_80B9494,
};
-void sub_80B91D4(u8 taskId)
+static void sub_80B91D4(u8 taskId)
{
gUnknown_0855C4F4[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-void sub_80B9204(struct Task *task)
+static void sub_80B9204(struct Task *task)
{
- struct EventObject *eventObject;
- eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (!EventObjectIsMovementOverridden(eventObject) || EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[15] = gPlayerAvatar.flags;
gPlayerAvatar.preventStep = TRUE;
SetPlayerAvatarStateMask(1);
sub_808C114();
- EventObjectSetHeldMovement(eventObject, 0x39);
+ EventObjectSetHeldMovement(eventObject, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
task->data[0]++;
}
}
-void sub_80B925C(struct Task *task)
+static void sub_80B925C(struct Task *task)
{
- struct EventObject *eventObject;
- eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[0]++;
@@ -3227,12 +3050,11 @@ void sub_80B925C(struct Task *task)
}
}
-void sub_80B92A0(struct Task *task)
+static void sub_80B92A0(struct Task *task)
{
- struct EventObject *eventObject;
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
- eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if (task->data[15] & 0x08)
{
sub_81555AC(eventObject->fieldEffectSpriteId, 2);
@@ -3243,21 +3065,20 @@ void sub_80B92A0(struct Task *task)
}
}
-void sub_80B92F8(struct Task *task)
+static void sub_80B92F8(struct Task *task)
{
if (sub_80B9508(task->data[1]))
{
task->data[0]++;
task->data[2] = 16;
SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
- EventObjectSetHeldMovement(&gEventObjects[gPlayerAvatar.eventObjectId], 0x02);
+ EventObjectSetHeldMovement(&gEventObjects[gPlayerAvatar.eventObjectId], MOVEMENT_ACTION_FACE_LEFT);
}
}
-void sub_80B933C(struct Task *task)
+static void sub_80B933C(struct Task *task)
{
- struct EventObject *eventObject;
- eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
if ((task->data[2] == 0 || (--task->data[2]) == 0) && EventObjectClearHeldMovementIfFinished(eventObject))
{
task->data[0]++;
@@ -3266,16 +3087,15 @@ void sub_80B933C(struct Task *task)
}
}
-void sub_80B9390(struct Task *task)
+static void sub_80B9390(struct Task *task)
{
- struct EventObject *eventObject;
if ((++task->data[2]) >= 8)
{
- eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
EventObjectSetGraphicsId(eventObject, GetPlayerAvatarGraphicsIdByStateId(0x03));
StartSpriteAnim(&gSprites[eventObject->spriteId], 0x16);
eventObject->inanimate = 1;
- EventObjectSetHeldMovement(eventObject, 0x48);
+ EventObjectSetHeldMovement(eventObject, MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT);
if (task->data[15] & 0x08)
{
DestroySprite(&gSprites[eventObject->fieldEffectSpriteId]);
@@ -3285,12 +3105,11 @@ void sub_80B9390(struct Task *task)
}
}
-void sub_80B9418(struct Task *task)
+static void sub_80B9418(struct Task *task)
{
- struct EventObject *eventObject;
if ((++task->data[2]) >= 10)
{
- eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
+ struct EventObject *eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
EventObjectClearHeldMovementIfActive(eventObject);
eventObject->inanimate = 0;
eventObject->hasShadow = 0;
@@ -3300,7 +3119,7 @@ void sub_80B9418(struct Task *task)
}
}
-void sub_80B9474(struct Task *task)
+static void sub_80B9474(struct Task *task)
{
if (sub_80B9508(task->data[1]))
{
@@ -3309,7 +3128,7 @@ void sub_80B9474(struct Task *task)
}
}
-void sub_80B9494(struct Task *task)
+static void sub_80B9494(struct Task *task)
{
if (!gPaletteFade.active)
{
@@ -3318,7 +3137,7 @@ void sub_80B9494(struct Task *task)
}
}
-u8 sub_80B94C4(void)
+static u8 sub_80B94C4(void)
{
u8 spriteId;
struct Sprite *sprite;
@@ -3330,12 +3149,12 @@ u8 sub_80B94C4(void)
return spriteId;
}
-u8 sub_80B9508(u8 spriteId)
+static u8 sub_80B9508(u8 spriteId)
{
return gSprites[spriteId].data[7];
}
-void sub_80B9524(u8 spriteId)
+static void sub_80B9524(u8 spriteId)
{
struct Sprite *sprite;
sprite = &gSprites[spriteId];
@@ -3348,7 +3167,7 @@ void sub_80B9524(u8 spriteId)
sprite->data[6] = 0x40;
}
-void sub_80B9560(u8 a0, u8 a1)
+static void sub_80B9560(u8 a0, u8 a1)
{
gSprites[a0].data[6] = a1;
}
@@ -3370,7 +3189,7 @@ const union AffineAnimCmd *const gSpriteAffineAnimTable_0855C548[] = {
SpriteAffineAnim_855C530
};
-void sub_80B957C(struct Sprite *sprite)
+static void sub_80B957C(struct Sprite *sprite)
{
if (sprite->data[7] == 0)
{
@@ -3403,15 +3222,14 @@ void sub_80B957C(struct Sprite *sprite)
}
}
-void sub_80B963C(struct Sprite *sprite)
+static void sub_80B963C(struct Sprite *sprite)
{
- struct Sprite *sprite1;
sprite->pos2.x = Cos(sprite->data[2], 0x8c);
sprite->pos2.y = Sin(sprite->data[2], 0x48);
sprite->data[2] = (sprite->data[2] + 4) & 0xff;
- if (sprite->data[6] != 0x40)
+ if (sprite->data[6] != MAX_SPRITES)
{
- sprite1 = &gSprites[sprite->data[6]];
+ struct Sprite *sprite1 = &gSprites[sprite->data[6]];
sprite1->coordOffsetEnabled = 0;
sprite1->pos1.x = sprite->pos1.x + sprite->pos2.x;
sprite1->pos1.y = sprite->pos1.y + sprite->pos2.y - 8;
@@ -3474,8 +3292,6 @@ void sub_80B9794(u8 spriteId)
gSprites[spriteId].callback = sub_80B96B0;
}
-void sub_80B97D4(u8);
-
u8 FldEff_FlyIn(void)
{
CreateTask(sub_80B97D4, 0xfe);
@@ -3492,12 +3308,12 @@ void (*const gUnknown_0855C550[])(struct Task *) = {
sub_80B9A60,
};
-void sub_80B97D4(u8 taskId)
+static void sub_80B97D4(u8 taskId)
{
gUnknown_0855C550[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-void sub_80B9804(struct Task *task)
+static void sub_80B9804(struct Task *task)
{
struct EventObject *eventObject;
eventObject = &gEventObjects[gPlayerAvatar.eventObjectId];
@@ -3523,7 +3339,7 @@ void sub_80B9804(struct Task *task)
}
}
-void sub_80B98B8(struct Task *task)
+static void sub_80B98B8(struct Task *task)
{
struct EventObject *eventObject;
struct Sprite *sprite;
@@ -3541,7 +3357,7 @@ void sub_80B98B8(struct Task *task)
}
}
-void sub_80B9924(struct Task *task)
+static void sub_80B9924(struct Task *task)
{
s16 unknown_0855C56C[18] = {
-2,
@@ -3571,7 +3387,7 @@ void sub_80B9924(struct Task *task)
}
}
-void sub_80B9978(struct Task *task)
+static void sub_80B9978(struct Task *task)
{
struct EventObject *eventObject;
struct Sprite *sprite;
@@ -3585,12 +3401,12 @@ void sub_80B9978(struct Task *task)
sprite->pos2.y = 0;
sprite->coordOffsetEnabled = 1;
sub_808C114();
- EventObjectSetHeldMovement(eventObject, 0x39);
+ EventObjectSetHeldMovement(eventObject, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
task->data[0]++;
}
}
-void sub_80B99F0(struct Task *task)
+static void sub_80B99F0(struct Task *task)
{
if (EventObjectClearHeldMovementIfFinished(&gEventObjects[gPlayerAvatar.eventObjectId]))
{
@@ -3599,7 +3415,7 @@ void sub_80B99F0(struct Task *task)
}
}
-void sub_80B9A28(struct Task *task)
+static void sub_80B9A28(struct Task *task)
{
if (sub_80B9508(task->data[1]))
{
@@ -3609,7 +3425,7 @@ void sub_80B9A28(struct Task *task)
}
}
-void sub_80B9A60(struct Task *task)
+static void sub_80B9A60(struct Task *task)
{
u8 state;
struct EventObject *eventObject;
@@ -3631,8 +3447,6 @@ void sub_80B9A60(struct Task *task)
}
}
-void sub_80B9BE8(u8 taskId);
-
bool8 sub_80B9ADC(void)
{
u8 taskId;
@@ -3697,7 +3511,7 @@ void (*const gUnknown_0855C590[])(s16*, u8) = {
sub_80B9CDC,
};
-void sub_80B9BE8(u8 taskId)
+static void sub_80B9BE8(u8 taskId)
{
s16 *data = gTasks[taskId].data;
InstallCameraPanAheadCallback();
@@ -3742,8 +3556,6 @@ void sub_80B9CDC(s16* a0, u8 taskId)
}
}
-void sub_80B9DB8(struct Sprite* sprite);
-
const struct SpriteFrameImage gSpriteImageTable_855C59C[] = {
obj_frame_tiles(gUnknown_0855C170),
obj_frame_tiles(gUnknown_0855C190),
@@ -3791,13 +3603,13 @@ const struct SpriteTemplate gUnknown_0855C5EC = {
void sub_80B9D24(struct Sprite* sprite)
{
int i;
- int xPos = (s16)gUnknown_03005DEC + sprite->pos1.x + sprite->pos2.x;
- int yPos = (s16)gUnknown_03005DE8 + sprite->pos1.y + sprite->pos2.y - 4;
+ int xPos = (s16)gTotalCameraPixelOffsetX + sprite->pos1.x + sprite->pos2.x;
+ int yPos = (s16)gTotalCameraPixelOffsetY + sprite->pos1.y + sprite->pos2.y - 4;
for (i = 0; i < 4; i++)
{
u8 spriteId = CreateSprite(&gUnknown_0855C5EC, xPos, yPos, 0);
- if (spriteId != 0x40)
+ if (spriteId != MAX_SPRITES)
{
StartSpriteAnim(&gSprites[spriteId], i);
gSprites[spriteId].data[0] = i;
@@ -3806,33 +3618,31 @@ void sub_80B9D24(struct Sprite* sprite)
}
}
-void sub_80B9DB8(struct Sprite* sprite)
+static void sub_80B9DB8(struct Sprite* sprite)
{
switch (sprite->data[0])
{
- case 0:
- sprite->pos1.x -= 16;
- sprite->pos1.y -= 12;
- break;
- case 1:
- sprite->pos1.x += 16;
- sprite->pos1.y -= 12;
- break;
- case 2:
- sprite->pos1.x -= 16;
- sprite->pos1.y += 12;
- break;
- case 3:
- sprite->pos1.x += 16;
- sprite->pos1.y += 12;
- break;
+ case 0:
+ sprite->pos1.x -= 16;
+ sprite->pos1.y -= 12;
+ break;
+ case 1:
+ sprite->pos1.x += 16;
+ sprite->pos1.y -= 12;
+ break;
+ case 2:
+ sprite->pos1.x -= 16;
+ sprite->pos1.y += 12;
+ break;
+ case 3:
+ sprite->pos1.x += 16;
+ sprite->pos1.y += 12;
+ break;
}
if ((u16)(sprite->pos1.x + 4) > 0xF8 || sprite->pos1.y < -4 || sprite->pos1.y > 0xA4)
DestroySprite(sprite);
}
-void sub_80B9EDC(u8 taskId);
-
bool8 sub_80B9E28(struct Sprite* sprite)
{
u8 eventObjectIdBuffer;
@@ -3857,7 +3667,7 @@ bool8 sub_80B9E28(struct Sprite* sprite)
return FALSE;
}
-void sub_80B9EDC(u8 taskId)
+static void sub_80B9EDC(u8 taskId)
{
// BUG: Possible divide by zero
s16 *data = gTasks[taskId].data;
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 3534e0a71..a68a72c76 100755
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -10,26 +10,27 @@
#include "sound.h"
#include "sprite.h"
#include "trig.h"
+#include "constants/field_effects.h"
#include "constants/songs.h"
#define EVENT_OBJ_PAL_TAG_NONE 0x11FF // duplicate of define in event_object_movement.c
-void UpdateObjectReflectionSprite(struct Sprite *);
-void LoadObjectReflectionPalette(struct EventObject *eventObject, struct Sprite *sprite);
-void LoadObjectHighBridgeReflectionPalette(struct EventObject *, u8);
-void LoadObjectRegularReflectionPalette(struct EventObject *, u8);
-void sub_81561FC(struct Sprite *, u8, u8);
-void FadeFootprintsTireTracks_Step0(struct Sprite *);
-void FadeFootprintsTireTracks_Step1(struct Sprite *);
-void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *);
-void UpdateAshFieldEffect_Step0(struct Sprite *);
-void UpdateAshFieldEffect_Step1(struct Sprite *);
-void UpdateAshFieldEffect_Step2(struct Sprite *);
-void sub_81556B0(struct EventObject *, struct Sprite *);
-void sub_81556E8(struct EventObject *, struct Sprite *);
-void sub_815577C(struct EventObject *, struct Sprite *, struct Sprite *);
-void sub_8155850(struct Sprite *);
-u32 ShowDisguiseFieldEffect(u8, u8, u8);
+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 sub_81561FC(struct Sprite *, u8, u8);
+static void FadeFootprintsTireTracks_Step0(struct Sprite *);
+static void FadeFootprintsTireTracks_Step1(struct Sprite *);
+static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *);
+static void UpdateAshFieldEffect_Step0(struct Sprite *);
+static void UpdateAshFieldEffect_Step1(struct Sprite *);
+static void UpdateAshFieldEffect_Step2(struct Sprite *);
+static void SynchroniseSurfAnim(struct EventObject *, struct Sprite *);
+static void sub_81556E8(struct EventObject *, struct Sprite *);
+static void CreateBobbingEffect(struct EventObject *, struct Sprite *, struct Sprite *);
+static void sub_8155850(struct Sprite *);
+static u32 ShowDisguiseFieldEffect(u8, u8, u8);
void SetUpReflection(struct EventObject *eventObject, struct Sprite *sprite, bool8 stillReflection)
{
@@ -59,12 +60,12 @@ static s16 GetReflectionVerticalOffset(struct EventObject *eventObject)
return GetEventObjectGraphicsInfo(eventObject->graphicsId)->height - 2;
}
-void LoadObjectReflectionPalette(struct EventObject *eventObject, struct Sprite *sprite)
+static void LoadObjectReflectionPalette(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 bridgeType;
u16 bridgeReflectionVerticalOffsets[] = { 12, 28, 44 };
sprite->data[2] = 0;
- if (!GetEventObjectGraphicsInfo(eventObject->graphicsId)->disableReflectionPaletteLoad && ((bridgeType = MetatileBehavior_GetBridgeSth(eventObject->previousMetatileBehavior)) || (bridgeType = MetatileBehavior_GetBridgeSth(eventObject->currentMetatileBehavior))))
+ if (!GetEventObjectGraphicsInfo(eventObject->graphicsId)->disableReflectionPaletteLoad && ((bridgeType = MetatileBehavior_GetBridgeType(eventObject->previousMetatileBehavior)) || (bridgeType = MetatileBehavior_GetBridgeType(eventObject->currentMetatileBehavior))))
{
sprite->data[2] = bridgeReflectionVerticalOffsets[bridgeType - 1];
LoadObjectHighBridgeReflectionPalette(eventObject, sprite->oam.paletteNum);
@@ -75,7 +76,7 @@ void LoadObjectReflectionPalette(struct EventObject *eventObject, struct Sprite
}
}
-void LoadObjectRegularReflectionPalette(struct EventObject *eventObject, u8 paletteIndex)
+static void LoadObjectRegularReflectionPalette(struct EventObject *eventObject, u8 paletteIndex)
{
const struct EventObjectGraphicsInfo *graphicsInfo;
@@ -100,7 +101,7 @@ void LoadObjectRegularReflectionPalette(struct EventObject *eventObject, u8 pale
// 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.
-void LoadObjectHighBridgeReflectionPalette(struct EventObject *eventObject, u8 paletteNum)
+static void LoadObjectHighBridgeReflectionPalette(struct EventObject *eventObject, u8 paletteNum)
{
const struct EventObjectGraphicsInfo *graphicsInfo;
@@ -112,7 +113,7 @@ void LoadObjectHighBridgeReflectionPalette(struct EventObject *eventObject, u8 p
}
}
-void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
+static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
{
struct EventObject *eventObject;
struct Sprite *mainSprite;
@@ -141,7 +142,7 @@ void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
reflectionSprite->pos2.x = mainSprite->pos2.x;
reflectionSprite->pos2.y = -mainSprite->pos2.y;
reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled;
-
+
if (eventObject->unk3_3 == TRUE)
reflectionSprite->invisible = TRUE;
@@ -579,7 +580,7 @@ void UpdateFootprintsTireTracksFieldEffect(struct Sprite *sprite)
gFadeFootprintsTireTracksFuncs[sprite->data[0]](sprite);
}
-void FadeFootprintsTireTracks_Step0(struct Sprite *sprite)
+static void FadeFootprintsTireTracks_Step0(struct Sprite *sprite)
{
// Wait 40 frames before the flickering starts.
if (++sprite->data[1] > 40)
@@ -588,7 +589,7 @@ void FadeFootprintsTireTracks_Step0(struct Sprite *sprite)
UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
-void FadeFootprintsTireTracks_Step1(struct Sprite *sprite)
+static void FadeFootprintsTireTracks_Step1(struct Sprite *sprite)
{
sprite->invisible ^= 1;
sprite->data[1]++;
@@ -708,7 +709,7 @@ u32 FldEff_FeetInFlowingWater(void)
return 0;
}
-void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite)
+static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite)
{
u8 eventObjectId;
struct Sprite *linkedSprite;
@@ -913,7 +914,7 @@ void UpdateAshFieldEffect(struct Sprite *sprite)
gAshFieldEffectFuncs[sprite->data[0]](sprite);
}
-void UpdateAshFieldEffect_Step0(struct Sprite *sprite)
+static void UpdateAshFieldEffect_Step0(struct Sprite *sprite)
{
sprite->invisible = TRUE;
sprite->animPaused = TRUE;
@@ -921,7 +922,7 @@ void UpdateAshFieldEffect_Step0(struct Sprite *sprite)
sprite->data[0] = 1;
}
-void UpdateAshFieldEffect_Step1(struct Sprite *sprite)
+static void UpdateAshFieldEffect_Step1(struct Sprite *sprite)
{
sprite->invisible = FALSE;
sprite->animPaused = FALSE;
@@ -931,7 +932,7 @@ void UpdateAshFieldEffect_Step1(struct Sprite *sprite)
sprite->data[0] = 2;
}
-void UpdateAshFieldEffect_Step2(struct Sprite *sprite)
+static void UpdateAshFieldEffect_Step2(struct Sprite *sprite)
{
UpdateEventObjectSpriteVisibility(sprite, FALSE);
if (sprite->animEnded)
@@ -975,17 +976,17 @@ void sub_8155604(u8 spriteId, u8 value, s16 data1)
gSprites[spriteId].data[1] = data1;
}
-u8 sub_8155638(struct Sprite *sprite)
+static u8 sub_8155638(struct Sprite *sprite)
{
return sprite->data[0] & 0xF;
}
-u8 sub_8155640(struct Sprite *sprite)
+static u8 sub_8155640(struct Sprite *sprite)
{
return (sprite->data[0] & 0xF0) >> 4;
}
-u8 sub_815564C(struct Sprite *sprite)
+static u8 sub_815564C(struct Sprite *sprite)
{
return (sprite->data[0] & 0xF00) >> 8;
}
@@ -997,13 +998,13 @@ void UpdateSurfBlobFieldEffect(struct Sprite *sprite)
eventObject = &gEventObjects[sprite->data[2]];
linkedSprite = &gSprites[eventObject->spriteId];
- sub_81556B0(eventObject, sprite);
+ SynchroniseSurfAnim(eventObject, sprite);
sub_81556E8(eventObject, sprite);
- sub_815577C(eventObject, linkedSprite, sprite);
+ CreateBobbingEffect(eventObject, linkedSprite, sprite);
sprite->oam.priority = linkedSprite->oam.priority;
}
-void sub_81556B0(struct EventObject *eventObject, struct Sprite *sprite)
+static void SynchroniseSurfAnim(struct EventObject *eventObject, struct Sprite *sprite)
{
u8 surfBlobDirectionAnims[] = {
0, // DIR_NONE
@@ -1021,19 +1022,19 @@ void sub_81556B0(struct EventObject *eventObject, struct Sprite *sprite)
StartSpriteAnimIfDifferent(sprite, surfBlobDirectionAnims[eventObject->movementDirection]);
}
-#ifdef NONMATCHING
void sub_81556E8(struct EventObject *eventObject, struct Sprite *sprite)
{
- s16 x;
- s16 y;
u8 i;
+ s16 x = eventObject->currentCoords.x;
+ s16 y = eventObject->currentCoords.y;
+ s32 spriteY = sprite->pos2.y;
- x = eventObject->currentCoords.x;
- y = eventObject->currentCoords.y;
- if (sprite->pos2.y == 0 && (x != sprite->data[6] || y != sprite->data[7]))
+ if (spriteY == 0 && (x != sprite->data[6] || y != sprite->data[7]))
{
- sprite->data[5] = sprite->pos2.y;
- for (sprite->data[6] = x, sprite->data[7] = y, i = DIR_SOUTH; i <= DIR_EAST; i ++, x = sprite->data[6], y = sprite->data[7])
+ sprite->data[5] = spriteY;
+ sprite->data[6] = x;
+ sprite->data[7] = y;
+ for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = sprite->data[6], y = sprite->data[7])
{
MoveCoords(i, &x, &y);
if (MapGridGetZCoordAt(x, y) == 3)
@@ -1044,89 +1045,8 @@ void sub_81556E8(struct EventObject *eventObject, struct Sprite *sprite)
}
}
}
-#else
-NAKED void sub_81556E8(struct EventObject *eventObject, struct Sprite *sprite)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- sub sp, 0x4\n\
- adds r4, r1, 0\n\
- ldrh r2, [r0, 0x10]\n\
- mov r1, sp\n\
- strh r2, [r1]\n\
- ldrh r1, [r0, 0x12]\n\
- mov r0, sp\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- movs r2, 0x26\n\
- ldrsh r3, [r4, r2]\n\
- mov r8, r0\n\
- cmp r3, 0\n\
- bne _08155770\n\
- mov r0, sp\n\
- movs r5, 0\n\
- ldrsh r2, [r0, r5]\n\
- movs r5, 0x3A\n\
- ldrsh r0, [r4, r5]\n\
- cmp r2, r0\n\
- bne _08155724\n\
- lsls r0, r1, 16\n\
- asrs r0, 16\n\
- movs r5, 0x3C\n\
- ldrsh r1, [r4, r5]\n\
- cmp r0, r1\n\
- beq _08155770\n\
-_08155724:\n\
- strh r3, [r4, 0x38]\n\
- strh r2, [r4, 0x3A]\n\
- mov r1, r8\n\
- movs r2, 0\n\
- ldrsh r0, [r1, r2]\n\
- strh r0, [r4, 0x3C]\n\
- movs r5, 0x1\n\
- mov r7, r8\n\
- mov r6, sp\n\
-_08155736:\n\
- adds r0, r5, 0\n\
- mov r1, sp\n\
- adds r2, r7, 0\n\
- bl MoveCoords\n\
- movs r1, 0\n\
- ldrsh r0, [r6, r1]\n\
- movs r2, 0\n\
- ldrsh r1, [r7, r2]\n\
- bl MapGridGetZCoordAt\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x3\n\
- bne _0815575C\n\
- ldrh r0, [r4, 0x38]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x38]\n\
- b _08155770\n\
-_0815575C:\n\
- adds r0, r5, 0x1\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldrh r0, [r4, 0x3A]\n\
- strh r0, [r6]\n\
- ldrh r0, [r4, 0x3C]\n\
- mov r1, r8\n\
- strh r0, [r1]\n\
- cmp r5, 0x4\n\
- bls _08155736\n\
-_08155770:\n\
- add sp, 0x4\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0");
-}
-#endif
-
-void sub_815577C(struct EventObject *eventObject, struct Sprite *linkedSprite, struct Sprite *sprite)
+
+static void CreateBobbingEffect(struct EventObject *eventObject, struct Sprite *linkedSprite, struct Sprite *sprite)
{
u16 unk_085CDC6A[] = {3, 7};
u8 v0 = sub_8155638(sprite);
@@ -1166,7 +1086,7 @@ u8 sub_8155800(u8 oldSpriteId)
return spriteId;
}
-void sub_8155850(struct Sprite *sprite)
+static void sub_8155850(struct Sprite *sprite)
{
struct Sprite *oldSprite;
@@ -1320,7 +1240,7 @@ u32 ShowSandDisguiseFieldEffect(void)
return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, 28, 2);
}
-u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum)
+static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum)
{
u8 spriteId;
struct Sprite *sprite;
@@ -1449,7 +1369,7 @@ void sub_8155EA0(struct Sprite *sprite)
bool8 sub_8155EA8(struct Sprite *sprite)
{
bool8 returnBool = FALSE;
-
+
switch (sprite->data[7])
{
case 0:
@@ -1469,7 +1389,7 @@ bool8 sub_8155EA8(struct Sprite *sprite)
sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
break;
}
-
+
SetGpuReg(REG_OFFSET_BG0HOFS, -sprite->pos2.x);
if (++sprite->data[6] == 72)
{
@@ -1482,14 +1402,14 @@ bool8 sub_8155EA8(struct Sprite *sprite)
sprite->pos2.x = 0;
returnBool = TRUE;
}
-
+
return returnBool;
}
void sub_8155F80(struct Sprite *sprite)
{
u8 i, j;
-
+
switch (sprite->data[2])
{
case 0:
@@ -1593,7 +1513,7 @@ void sub_8155F80(struct Sprite *sprite)
FieldEffectStop(sprite, FLDEFF_64);
break;
}
-
+
if (sprite->data[2] == 1)
{
if ((sprite->data[1] & 7) == 0)
@@ -1602,7 +1522,7 @@ void sub_8155F80(struct Sprite *sprite)
sprite->data[3] = -sprite->data[3];
sprite->data[1]++;
}
-
+
sprite->data[0]++;
}
@@ -1619,7 +1539,7 @@ void sub_8156194(struct Sprite *sprite)
}
}
-void sub_81561D0(struct Sprite *sprite)
+void WaitFieldEffectSpriteAnim(struct Sprite *sprite)
{
if (sprite->animEnded)
FieldEffectStop(sprite, sprite->data[0]);
@@ -1627,150 +1547,35 @@ void sub_81561D0(struct Sprite *sprite)
UpdateEventObjectSpriteVisibility(sprite, FALSE);
}
-#ifdef NONMATCHING
-void sub_81561FC(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
+static void sub_81561FC(struct Sprite *sprite, u8 z, u8 offset)
{
u8 i;
- s16 xlo;
- s16 xhi;
- s16 lx;
- s16 lyhi;
- s16 ly;
- s16 ylo;
- s16 yhi;
- struct EventObject *eventObject; // r4
- const struct EventObjectGraphicsInfo *graphicsInfo; // destroyed
- struct Sprite *linkedSprite; // r5
+ s16 var, xhi, lyhi, yhi, ylo;
+ const struct EventObjectGraphicsInfo *graphicsInfo; // Unused Variable
+ struct Sprite *linkedSprite;
SetObjectSubpriorityByZCoord(z, sprite, offset);
- for (i = 0; i < 16; i ++)
+ for (i = 0; i < EVENT_OBJECTS_COUNT; i ++)
{
- eventObject = &gEventObjects[i];
+ struct EventObject *eventObject = &gEventObjects[i];
if (eventObject->active)
{
graphicsInfo = GetEventObjectGraphicsInfo(eventObject->graphicsId);
linkedSprite = &gSprites[eventObject->spriteId];
xhi = sprite->pos1.x + sprite->centerToCornerVecX;
- xlo = sprite->pos1.x - sprite->centerToCornerVecX;
- lx = linkedSprite->pos1.x;
- if (xhi < lx && xlo > lx)
+ var = sprite->pos1.x - sprite->centerToCornerVecX;
+ if (xhi < linkedSprite->pos1.x && var > linkedSprite->pos1.x)
{
lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY;
- ly = linkedSprite->pos1.y;
+ var = linkedSprite->pos1.y;
ylo = sprite->pos1.y - sprite->centerToCornerVecY;
yhi = ylo + linkedSprite->centerToCornerVecY;
- if ((lyhi < yhi || lyhi < ylo) && ly > yhi)
+ if ((lyhi < yhi || lyhi < ylo) && var > yhi && sprite->subpriority <= linkedSprite->subpriority)
{
- if (sprite->subpriority <= linkedSprite->subpriority)
- {
- sprite->subpriority = linkedSprite->subpriority + 2;
- break;
- }
+ sprite->subpriority = linkedSprite->subpriority + 2;
+ break;
}
}
}
}
}
-#else
-NAKED void sub_81561FC(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
-{
- asm_unified("push {r4-r7,lr}\n\
- adds r6, r0, 0\n\
- adds r0, r1, 0\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- adds r1, r6, 0\n\
- bl SetObjectSubpriorityByZCoord\n\
- movs r7, 0\n\
-_08156212:\n\
- lsls r0, r7, 3\n\
- adds r0, r7\n\
- lsls r0, 2\n\
- ldr r1, =gEventObjects\n\
- adds r4, r0, r1\n\
- ldrb r0, [r4]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _081562B4\n\
- ldrb r0, [r4, 0x5]\n\
- bl GetEventObjectGraphicsInfo\n\
- ldrb r1, [r4, 0x4]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r1, =gSprites\n\
- adds r5, r0, r1\n\
- adds r0, r6, 0\n\
- adds r0, 0x28\n\
- movs r2, 0\n\
- ldrsb r2, [r0, r2]\n\
- ldrh r0, [r6, 0x20]\n\
- adds r1, r0, r2\n\
- subs r0, r2\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- movs r0, 0x20\n\
- ldrsh r2, [r5, r0]\n\
- cmp r1, r2\n\
- bge _081562B4\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- cmp r0, r2\n\
- ble _081562B4\n\
- adds r0, r5, 0\n\
- adds r0, 0x29\n\
- movs r3, 0\n\
- ldrsb r3, [r0, r3]\n\
- ldrh r2, [r5, 0x22]\n\
- adds r2, r3\n\
- ldrh r4, [r5, 0x22]\n\
- adds r0, r6, 0\n\
- adds r0, 0x29\n\
- movs r1, 0\n\
- ldrsb r1, [r0, r1]\n\
- ldrh r0, [r6, 0x22]\n\
- subs r0, r1\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- adds r3, r0, r3\n\
- lsls r2, 16\n\
- asrs r2, 16\n\
- lsls r3, 16\n\
- asrs r3, 16\n\
- cmp r2, r3\n\
- blt _0815628C\n\
- cmp r2, r0\n\
- bge _081562B4\n\
-_0815628C:\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- cmp r0, r3\n\
- ble _081562B4\n\
- adds r2, r6, 0\n\
- adds r2, 0x43\n\
- adds r0, r5, 0\n\
- adds r0, 0x43\n\
- ldrb r1, [r0]\n\
- ldrb r0, [r2]\n\
- cmp r0, r1\n\
- bhi _081562B4\n\
- adds r0, r1, 0x2\n\
- strb r0, [r2]\n\
- b _081562BE\n\
- .pool\n\
-_081562B4:\n\
- adds r0, r7, 0x1\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- cmp r7, 0xF\n\
- bls _08156212\n\
-_081562BE:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0");
-}
-#endif
diff --git a/src/field_message_box.c b/src/field_message_box.c
index f45b6607d..46da9e9e5 100755
--- a/src/field_message_box.c
+++ b/src/field_message_box.c
@@ -16,10 +16,10 @@ void textbox_auto_and_task_add(void);
void sub_8098128(void)
{
gUnknown_020375BC = 0;
- gTextFlags.flag_0 = 0;
- gTextFlags.flag_1 = 0;
- gTextFlags.flag_2 = 0;
- gTextFlags.flag_3 = 0;
+ gTextFlags.canABSpeedUpPrint = 0;
+ gTextFlags.useAlternateDownArrow = 0;
+ gTextFlags.autoScroll = 0;
+ gTextFlags.forceMidTextSpeed = 0;
}
void sub_8098154(u8 taskId)
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index b9cf7d102..a5aa23e32 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -1,85 +1,148 @@
#include "global.h"
+#include "main.h"
#include "bike.h"
#include "event_data.h"
#include "event_object_movement.h"
+#include "field_camera.h"
+#include "field_effect.h"
+#include "field_effect_helpers.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
-#include "global.fieldmap.h"
+#include "menu.h"
#include "metatile_behavior.h"
#include "overworld.h"
+#include "party_menu.h"
+#include "random.h"
#include "rotating_gate.h"
+#include "script.h"
+#include "sound.h"
#include "sprite.h"
+#include "strings.h"
#include "task.h"
+#include "tv.h"
+#include "wild_encounter.h"
+#include "constants/abilities.h"
#include "constants/event_objects.h"
#include "constants/event_object_movement_constants.h"
+#include "constants/field_effects.h"
#include "constants/flags.h"
+#include "constants/maps.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+
+static EWRAM_DATA u8 gUnknown_0203734C = 0;
+EWRAM_DATA struct EventObject gEventObjects[EVENT_OBJECTS_COUNT] = {};
+EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {};
+
+// static declarations
-extern void task_add_bump_boulder(u8, u8);
-static bool8 ShouldJumpLedge(s16, s16, u8);
-static bool8 sub_808B1BC(s16, s16, u8);
-static u8 sub_808B164(struct EventObject *, s16, s16, u8, u8);
-static u8 sub_808B238(s16, s16, u8);
-static void check_acro_bike_metatile(s16, s16, u8, u8 *);
-extern void PlayerNotOnBikeCollide(u8);
-extern void PlayerNotOnBikeCollideWithFarawayIslandMew(u8);
-extern void PlayerRun(u8);
-static void MovePlayerNotOnBike(u8, u16);
-static u8 CheckMovementInputNotOnBike(u8);
-extern void sub_808C5B0(void);
-extern void sub_808C4D8(void);
-static u8 CheckForPlayerAvatarCollision(u8);
static u8 EventObjectCB2_NoMovement2();
-extern void sub_808C280(struct EventObject *);
static bool8 TryInterruptEventObjectSpecialAnim(struct EventObject *, u8);
-void npc_clear_strange_bits(struct EventObject *);
-extern void DoPlayerAvatarTransition(void);
-static bool8 TryDoMetatileBehaviorForcedMovement();
+static void npc_clear_strange_bits(struct EventObject *);
static void MovePlayerAvatarUsingKeypadInput(u8, u16, u16);
static void PlayerAllowForcedMovementIfMovingSameDirection();
-static u8 sub_808B028(u8);
+static bool8 TryDoMetatileBehaviorForcedMovement();
static u8 GetForcedMovementByMetatileBehavior();
+
+static bool8 ForcedMovement_None(void);
+static bool8 ForcedMovement_Slip(void);
+static bool8 ForcedMovement_WalkSouth(void);
+static bool8 ForcedMovement_WalkNorth(void);
+static bool8 ForcedMovement_WalkWest(void);
+static bool8 ForcedMovement_WalkEast(void);
+static bool8 ForcedMovement_PushedSouthByCurrent(void);
+static bool8 ForcedMovement_PushedNorthByCurrent(void);
+static bool8 ForcedMovement_PushedWestByCurrent(void);
+static bool8 ForcedMovement_PushedEastByCurrent(void);
+static bool8 ForcedMovement_SlideSouth(void);
+static bool8 ForcedMovement_SlideNorth(void);
+static bool8 ForcedMovement_SlideWest(void);
+static bool8 ForcedMovement_SlideEast(void);
+static bool8 ForcedMovement_0xBB(void);
+static bool8 ForcedMovement_0xBC(void);
+static bool8 ForcedMovement_MuddySlope(void);
+
+static void MovePlayerNotOnBike(u8, u16);
+static u8 CheckMovementInputNotOnBike(u8);
static void PlayerNotOnBikeNotMoving(u8, u16);
static void PlayerNotOnBikeTurningInPlace(u8, u16);
static void PlayerNotOnBikeMoving(u8, u16);
-extern void sub_808C750(u8);
-
-extern void PlayerAvatarTransition_Normal(struct EventObject *a);
-extern void PlayerAvatarTransition_MachBike(struct EventObject *a);
-extern void PlayerAvatarTransition_AcroBike(struct EventObject *a);
-extern void PlayerAvatarTransition_Surfing(struct EventObject *a);
-extern void PlayerAvatarTransition_Underwater(struct EventObject *a);
-extern void PlayerAvatarTransition_ReturnToField(struct EventObject *a);
-extern void PlayerAvatarTransition_Dummy(struct EventObject *a);
-
-extern u8 sub_808C3A4(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject);
-extern u8 do_boulder_dust(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject);
-extern u8 sub_808C484(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject);
-
-extern u8 sub_808C544(struct Task *task, struct EventObject *eventObject);
-
-extern u8 sub_808C61C(struct Task *task, struct EventObject *eventObject);
-extern u8 sub_808C644(struct Task *task, struct EventObject *eventObject);
-extern u8 sub_808C6BC(struct Task *task, struct EventObject *eventObject);
-extern u8 sub_808C6FC(struct Task *task, struct EventObject *eventObject);
-
-extern u8 fish0(struct Task *task);
-extern u8 fish1(struct Task *task);
-extern u8 fish2(struct Task *task);
-extern u8 fish3(struct Task *task);
-extern u8 fish4(struct Task *task);
-extern u8 fish5(struct Task *task);
-extern u8 fish6(struct Task *task);
-extern u8 fish7(struct Task *task);
-extern u8 fish8(struct Task *task);
-extern u8 fish9(struct Task *task);
-extern u8 fishA_wait_for_a_pressed(struct Task *task);
-extern u8 fishB(struct Task *task);
-extern u8 fishC(struct Task *task);
-extern u8 fishD(struct Task *task);
-extern u8 fishE(struct Task *task);
-extern u8 fishF(struct Task *task);
-
-static bool8 (*const gUnknown_084973FC[])(u8) =
+static u8 CheckForPlayerAvatarCollision(u8);
+static u8 sub_808B028(u8);
+static u8 sub_808B164(struct EventObject *, s16, s16, u8, u8);
+static bool8 sub_808B1BC(s16, s16, u8);
+static bool8 ShouldJumpLedge(s16, s16, u8);
+static u8 sub_808B238(s16, s16, u8);
+static void check_acro_bike_metatile(s16, s16, u8, u8 *);
+
+static void DoPlayerAvatarTransition(void);
+static void PlayerAvatarTransition_Dummy(struct EventObject *a);
+static void PlayerAvatarTransition_Normal(struct EventObject *a);
+static void PlayerAvatarTransition_MachBike(struct EventObject *a);
+static void PlayerAvatarTransition_AcroBike(struct EventObject *a);
+static void PlayerAvatarTransition_Surfing(struct EventObject *a);
+static void PlayerAvatarTransition_Underwater(struct EventObject *a);
+static void PlayerAvatarTransition_ReturnToField(struct EventObject *a);
+
+static bool8 player_is_anim_in_certain_ranges(void);
+static bool8 sub_808B618(void);
+static bool8 PlayerIsAnimActive(void);
+static bool8 PlayerCheckIfAnimFinishedOrInactive(void);
+
+static void PlayerRun(u8);
+static void PlayerNotOnBikeCollide(u8);
+static void PlayerNotOnBikeCollideWithFarawayIslandMew(u8);
+
+static void PlayCollisionSoundIfNotFacingWarp(u8 a);
+
+static void sub_808C280(struct EventObject *);
+
+static void StartStrengthAnim(u8, u8);
+static void Task_BumpBoulder(u8 taskId);
+static u8 sub_808C3A4(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject);
+static u8 do_boulder_dust(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject);
+static u8 sub_808C484(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject);
+
+static void DoPlayerMatJump(void);
+static void DoPlayerAvatarSecretBaseMatJump(u8 taskId);
+static u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct EventObject *eventObject);
+
+static void DoPlayerMatSpin(void);
+static void PlayerAvatar_DoSecretBaseMatSpin(u8 taskId);
+static bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *task, struct EventObject *eventObject);
+static bool8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task *task, struct EventObject *eventObject);
+static bool8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task *task, struct EventObject *eventObject);
+static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct EventObject *eventObject);
+
+static void sub_808C750(u8);
+static void taskFF_0805D1D4(u8 taskId);
+static void sub_808C814(u8 taskId);
+
+static void Task_Fishing(u8 taskId);
+static u8 Fishing1(struct Task *task);
+static u8 Fishing2(struct Task *task);
+static u8 Fishing3(struct Task *task);
+static u8 Fishing4(struct Task *task);
+static u8 Fishing5(struct Task *task);
+static u8 Fishing6(struct Task *task);
+static u8 Fishing7(struct Task *task);
+static u8 Fishing8(struct Task *task);
+static u8 Fishing9(struct Task *task);
+static u8 Fishing10(struct Task *task);
+static u8 Fishing11(struct Task *task);
+static u8 Fishing12(struct Task *task);
+static u8 Fishing13(struct Task *task);
+static u8 Fishing14(struct Task *task);
+static u8 Fishing15(struct Task *task);
+static u8 Fishing16(struct Task *task);
+static void AlignFishingAnimationFrames(void);
+
+static u8 sub_808D38C(struct EventObject *object, s16 *a1);
+
+// .rodata
+
+static bool8 (*const sForcedMovementTestFuncs[])(u8) =
{
MetatileBehavior_IsTrickHouseSlipperyFloor,
MetatileBehavior_IsIce_2,
@@ -101,7 +164,7 @@ static bool8 (*const gUnknown_084973FC[])(u8) =
MetatileBehavior_IsMuddySlope,
};
-static bool8 (*const gUnknown_08497444[])(void) =
+static bool8 (*const sForcedMovementFuncs[])(void) =
{
ForcedMovement_None,
ForcedMovement_Slip,
@@ -142,7 +205,7 @@ static bool8 (*const gUnknown_0849749C[])(u8) =
static const u8 gUnknown_084974B0[] = {9, 10, 11, 12, 13, 0, 0, 0};
-void (*const gUnknown_084974B8[])(struct EventObject *) =
+static void (*const gUnknown_084974B8[])(struct EventObject *) =
{
PlayerAvatarTransition_Normal,
PlayerAvatarTransition_MachBike,
@@ -154,7 +217,7 @@ void (*const gUnknown_084974B8[])(struct EventObject *) =
PlayerAvatarTransition_Dummy,
};
-bool8 (*const gUnknown_084974D8[])(u8) =
+static bool8 (*const sArrowWarpMetatileBehaviorChecks[])(u8) =
{
MetatileBehavior_IsSouthArrowWarp,
MetatileBehavior_IsNorthArrowWarp,
@@ -162,7 +225,7 @@ bool8 (*const gUnknown_084974D8[])(u8) =
MetatileBehavior_IsEastArrowWarp,
};
-const u8 gUnknown_084974E8[][2] =
+static const u8 sRivalAvatarGfxIds[][2] =
{
{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},
@@ -174,7 +237,7 @@ const u8 gUnknown_084974E8[][2] =
{EVENT_OBJ_GFX_BRENDAN_WATERING, EVENT_OBJ_GFX_MAY_WATERING}
};
-const u8 gUnknown_084974F8[][2] =
+static const u8 sPlayerAvatarGfxIds[][2] =
{
{EVENT_OBJ_GFX_BRENDAN_NORMAL, EVENT_OBJ_GFX_MAY_NORMAL},
{EVENT_OBJ_GFX_BRENDAN_MACH_BIKE, EVENT_OBJ_GFX_MAY_MACH_BIKE},
@@ -186,11 +249,11 @@ const u8 gUnknown_084974F8[][2] =
{EVENT_OBJ_GFX_BRENDAN_WATERING, EVENT_OBJ_GFX_MAY_WATERING},
};
-const u8 gUnknown_08497508[] = {EVENT_OBJ_GFX_RED, EVENT_OBJ_GFX_LEAF};
+static const u8 sFRLGAvatarGfxIds[] = {EVENT_OBJ_GFX_RED, EVENT_OBJ_GFX_LEAF};
-const u8 gUnknown_0849750A[] = {EVENT_OBJ_GFX_LINK_RS_BRENDAN, EVENT_OBJ_GFX_LINK_RS_MAY};
+static const u8 sRSAvatarGfxIds[] = {EVENT_OBJ_GFX_LINK_RS_BRENDAN, EVENT_OBJ_GFX_LINK_RS_MAY};
-const u8 gUnknown_0849750C[2][5][2] =
+static const u8 gUnknown_0849750C[2][5][2] =
{
//male
{
@@ -210,7 +273,7 @@ const u8 gUnknown_0849750C[2][5][2] =
}
};
-bool8 (*const gUnknown_08497520[])(u8) = //Duplicate of sArrowWarpMetatileBehaviorChecks
+static bool8 (*const sArrowWarpMetatileBehaviorChecks2[])(u8) = //Duplicate of sArrowWarpMetatileBehaviorChecks
{
MetatileBehavior_IsSouthArrowWarp,
MetatileBehavior_IsNorthArrowWarp,
@@ -218,76 +281,36 @@ bool8 (*const gUnknown_08497520[])(u8) = //Duplicate of sArrowWarpMetatileBehav
MetatileBehavior_IsEastArrowWarp,
};
-u8 (*const gUnknown_08497530[])(struct Task *, struct EventObject *, struct EventObject *) =
+static bool8 (*const gUnknown_08497530[])(struct Task *, struct EventObject *, struct EventObject *) =
{
sub_808C3A4,
do_boulder_dust,
sub_808C484,
};
-u8 (*const gUnknown_0849753C[])(struct Task *, struct EventObject *) =
+static bool8 (*const sPlayerAvatarSecretBaseMatJump[])(struct Task *, struct EventObject *) =
{
- sub_808C544,
+ PlayerAvatar_DoSecretBaseMatJump,
};
-u8 (*const gUnknown_08497540[])(struct Task *, struct EventObject *) =
+static bool8 (*const sPlayerAvatarSecretBaseMatSpin[])(struct Task *, struct EventObject *) =
{
- sub_808C61C,
- sub_808C644,
- sub_808C6BC,
- sub_808C6FC,
+ PlayerAvatar_SecretBaseMatSpinStep0,
+ PlayerAvatar_SecretBaseMatSpinStep1,
+ PlayerAvatar_SecretBaseMatSpinStep2,
+ PlayerAvatar_SecretBaseMatSpinStep3,
};
-const u8 gUnknown_08497550[] = {3, 4, 2, 1};
-
-const u8 gUnknown_08497554[] = {16, 16, 17, 18, 19};
-
-u8 (*const gUnknown_0849755C[])(struct Task *) =
-{
- fish0,
- fish1,
- fish2,
- fish3,
- fish4,
- fish5,
- fish6,
- fish7,
- fish8,
- fish9,
- fishA_wait_for_a_pressed,
- fishB,
- fishC,
- fishD,
- fishE,
- fishF,
-};
-
-const u16 gUnknown_0849759C[] = {1, 1, 1};
-
-const u16 gUnknown_084975A2[] = {1, 3, 6};
-
-const u8 gUnknown_084975A8[] = _("·");
-
-const u16 gUnknown_084975AA[] = {36, 33, 30};
-
-const u16 gUnknown_084975B0[] =
-{
- 0, 0,
- 0x28, 10,
- 0x46, 30,
-};
-
-const u8 gUnknown_084975BC[] = {0x01, 0x03, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00};
-
// .text
+
void MovementType_Player(struct Sprite *sprite)
{
- UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, EventObjectCB2_NoMovement2);
+ UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, EventObjectCB2_NoMovement2);
}
static u8 EventObjectCB2_NoMovement2(void)
{
- return 0;
+ return 0;
}
void player_step(u8 direction, u16 newKeys, u16 heldKeys)
@@ -352,7 +375,7 @@ static bool8 TryInterruptEventObjectSpecialAnim(struct EventObject *playerEventO
return FALSE;
}
-void npc_clear_strange_bits(struct EventObject *eventObj)
+static void npc_clear_strange_bits(struct EventObject *eventObj)
{
eventObj->inanimate = 0;
eventObj->disableAnim = 0;
@@ -377,7 +400,7 @@ static void PlayerAllowForcedMovementIfMovingSameDirection(void)
static bool8 TryDoMetatileBehaviorForcedMovement(void)
{
- return gUnknown_08497444[GetForcedMovementByMetatileBehavior()]();
+ return sForcedMovementFuncs[GetForcedMovementByMetatileBehavior()]();
}
static u8 GetForcedMovementByMetatileBehavior(void)
@@ -390,14 +413,14 @@ static u8 GetForcedMovementByMetatileBehavior(void)
for (i = 0; i < 18; i++)
{
- if (gUnknown_084973FC[i](metatileBehavior))
+ if (sForcedMovementTestFuncs[i](metatileBehavior))
return i + 1;
}
}
return 0;
}
-bool8 ForcedMovement_None(void)
+static bool8 ForcedMovement_None(void)
{
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_6)
{
@@ -441,7 +464,7 @@ static u8 DoForcedMovement(u8 direction, void (*b)(u8))
}
}
-u8 DoForcedMovementInCurrentDirection(void (*a)(u8))
+static u8 DoForcedMovementInCurrentDirection(void (*a)(u8))
{
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
@@ -449,49 +472,49 @@ u8 DoForcedMovementInCurrentDirection(void (*a)(u8))
return DoForcedMovement(playerEventObj->movementDirection, a);
}
-bool8 ForcedMovement_Slip(void)
+static bool8 ForcedMovement_Slip(void)
{
return DoForcedMovementInCurrentDirection(PlayerGoSpeed2);
}
-bool8 ForcedMovement_WalkSouth(void)
+static bool8 ForcedMovement_WalkSouth(void)
{
return DoForcedMovement(DIR_SOUTH, PlayerGoSpeed1);
}
-bool8 ForcedMovement_WalkNorth(void)
+static bool8 ForcedMovement_WalkNorth(void)
{
return DoForcedMovement(DIR_NORTH, PlayerGoSpeed1);
}
-bool8 ForcedMovement_WalkWest(void)
+static bool8 ForcedMovement_WalkWest(void)
{
return DoForcedMovement(DIR_WEST, PlayerGoSpeed1);
}
-bool8 ForcedMovement_WalkEast(void)
+static bool8 ForcedMovement_WalkEast(void)
{
return DoForcedMovement(DIR_EAST, PlayerGoSpeed1);
}
-bool8 ForcedMovement_PushedSouthByCurrent(void)
+static bool8 ForcedMovement_PushedSouthByCurrent(void)
{
- return DoForcedMovement(DIR_SOUTH, PlayerGoSpeed3);
+ return DoForcedMovement(DIR_SOUTH, PlayerRideWaterCurrent);
}
-bool8 ForcedMovement_PushedNorthByCurrent(void)
+static bool8 ForcedMovement_PushedNorthByCurrent(void)
{
- return DoForcedMovement(DIR_NORTH, PlayerGoSpeed3);
+ return DoForcedMovement(DIR_NORTH, PlayerRideWaterCurrent);
}
-bool8 ForcedMovement_PushedWestByCurrent(void)
+static bool8 ForcedMovement_PushedWestByCurrent(void)
{
- return DoForcedMovement(DIR_WEST, PlayerGoSpeed3);
+ return DoForcedMovement(DIR_WEST, PlayerRideWaterCurrent);
}
-bool8 ForcedMovement_PushedEastByCurrent(void)
+static bool8 ForcedMovement_PushedEastByCurrent(void)
{
- return DoForcedMovement(DIR_EAST, PlayerGoSpeed3);
+ return DoForcedMovement(DIR_EAST, PlayerRideWaterCurrent);
}
u8 ForcedMovement_Slide(u8 direction, void (*b)(u8))
@@ -503,39 +526,39 @@ u8 ForcedMovement_Slide(u8 direction, void (*b)(u8))
return DoForcedMovement(direction, b);
}
-bool8 ForcedMovement_SlideSouth(void)
+static bool8 ForcedMovement_SlideSouth(void)
{
return ForcedMovement_Slide(DIR_SOUTH, PlayerGoSpeed2);
}
-bool8 ForcedMovement_SlideNorth(void)
+static bool8 ForcedMovement_SlideNorth(void)
{
return ForcedMovement_Slide(DIR_NORTH, PlayerGoSpeed2);
}
-bool8 ForcedMovement_SlideWest(void)
+static bool8 ForcedMovement_SlideWest(void)
{
return ForcedMovement_Slide(DIR_WEST, PlayerGoSpeed2);
}
-bool8 ForcedMovement_SlideEast(void)
+static bool8 ForcedMovement_SlideEast(void)
{
return ForcedMovement_Slide(DIR_EAST, PlayerGoSpeed2);
}
-bool8 ForcedMovement_0xBB(void)
+static bool8 ForcedMovement_0xBB(void)
{
- sub_808C4D8();
+ DoPlayerMatJump();
return TRUE;
}
-bool8 ForcedMovement_0xBC(void)
+static bool8 ForcedMovement_0xBC(void)
{
- sub_808C5B0();
+ DoPlayerMatSpin();
return TRUE;
}
-bool8 ForcedMovement_MuddySlope(void)
+static bool8 ForcedMovement_MuddySlope(void)
{
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
@@ -619,12 +642,12 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys)
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
{
- // speed 2 is fast, same speed as running
+ // speed 2 is fast, same speed as running
PlayerGoSpeed2(direction);
return;
}
- if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_4) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH)
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_UNDERWATER) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH)
&& IsRunningDisallowed(gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior) == 0)
{
PlayerRun(direction);
@@ -725,18 +748,18 @@ static u8 sub_808B238(s16 x, s16 y, u8 direction)
{
u8 eventObjectId = GetEventObjectIdByXY(x, y);
- if (eventObjectId != 16 && gEventObjects[eventObjectId].graphicsId == 0x57)
+ if (eventObjectId != 16 && gEventObjects[eventObjectId].graphicsId == EVENT_OBJ_GFX_PUSHABLE_BOULDER)
+ {
+ x = gEventObjects[eventObjectId].currentCoords.x;
+ y = gEventObjects[eventObjectId].currentCoords.y;
+ MoveCoords(direction, &x, &y);
+ if (GetCollisionAtCoords(&gEventObjects[eventObjectId], x, y, direction) == 0
+ && MetatileBehavior_IsNonAnimDoor(MapGridGetMetatileBehaviorAt(x, y)) == 0)
{
- x = gEventObjects[eventObjectId].currentCoords.x;
- y = gEventObjects[eventObjectId].currentCoords.y;
- MoveCoords(direction, &x, &y);
- if (GetCollisionAtCoords(&gEventObjects[eventObjectId], x, y, direction) == 0
- && MetatileBehavior_IsNonAnimDoor(MapGridGetMetatileBehaviorAt(x, y)) == 0)
- {
- task_add_bump_boulder(eventObjectId, direction);
- return 1;
- }
+ StartStrengthAnim(eventObjectId, direction);
+ return 1;
}
+ }
}
return 0;
}
@@ -754,3 +777,1458 @@ static void check_acro_bike_metatile(s16 unused1, s16 unused2, u8 c, u8 *d)
}
}
}
+
+bool8 IsPlayerCollidingWithFarawayIslandMew(u8 direction)
+{
+ u8 mewObjectId;
+ struct EventObject *object;
+ s16 playerX;
+ s16 playerY;
+ s16 mewPrevX;
+
+ object = &gEventObjects[gPlayerAvatar.eventObjectId];
+ playerX = object->currentCoords.x;
+ playerY = object->currentCoords.y;
+
+ MoveCoords(direction, &playerX, &playerY);
+ mewObjectId = GetEventObjectIdByLocalIdAndMap(1, 0x39, 0x1A);
+
+ if (mewObjectId == 16)
+ {
+ return FALSE;
+ }
+
+ object = &gEventObjects[mewObjectId];
+ mewPrevX = object->previousCoords.x;
+
+ if (mewPrevX == playerX)
+ {
+ if (object->previousCoords.y != playerY
+ || object->currentCoords.x != mewPrevX
+ || object->currentCoords.y != object->previousCoords.y)
+ {
+ if (object->previousCoords.x == playerX &&
+ object->previousCoords.y == playerY)
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void SetPlayerAvatarTransitionFlags(u16 transitionFlags)
+{
+ gPlayerAvatar.unk1 |= transitionFlags;
+ DoPlayerAvatarTransition();
+}
+
+static void DoPlayerAvatarTransition(void)
+{
+ u8 i;
+ u32 flags = gPlayerAvatar.unk1;
+
+ if (flags != 0)
+ {
+ for (i = 0; i < 8; i++, flags >>= 1)
+ {
+#ifdef NONMATCHING
+ if (flags & 1)
+ {
+ gUnknown_084974B8[i](&gEventObjects[gPlayerAvatar.eventObjectId]);
+ }
+#else
+ if (flags & 1)
+ {
+ register void (*const *funcs)(struct EventObject *) asm("r0") = gUnknown_084974B8;
+ funcs[i](&gEventObjects[gPlayerAvatar.eventObjectId]);
+ }
+#endif
+ }
+ gPlayerAvatar.unk1 = 0;
+ }
+}
+
+static void PlayerAvatarTransition_Dummy(struct EventObject *eventObj)
+{
+
+}
+
+static void PlayerAvatarTransition_Normal(struct EventObject *eventObj)
+{
+ EventObjectSetGraphicsId(eventObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_NORMAL));
+ EventObjectTurn(eventObj, eventObj->movementDirection);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ON_FOOT);
+}
+
+static void PlayerAvatarTransition_MachBike(struct EventObject *eventObj)
+{
+ EventObjectSetGraphicsId(eventObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_MACH_BIKE));
+ EventObjectTurn(eventObj, eventObj->movementDirection);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_MACH_BIKE);
+ BikeClearState(0, 0);
+}
+
+static void PlayerAvatarTransition_AcroBike(struct EventObject *eventObj)
+{
+ EventObjectSetGraphicsId(eventObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_ACRO_BIKE));
+ EventObjectTurn(eventObj, eventObj->movementDirection);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ACRO_BIKE);
+ BikeClearState(0, 0);
+ Bike_HandleBumpySlopeJump();
+}
+
+static void PlayerAvatarTransition_Surfing(struct EventObject *eventObj)
+{
+ u8 spriteId;
+
+ EventObjectSetGraphicsId(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;
+ spriteId = FieldEffectStart(FLDEFF_SURF_BLOB);
+ eventObj->fieldEffectSpriteId = spriteId;
+ sub_81555AC(spriteId, 1);
+}
+
+static void PlayerAvatarTransition_Underwater(struct EventObject *eventObj)
+{
+ EventObjectSetGraphicsId(eventObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_UNDERWATER));
+ EventObjectTurn(eventObj, eventObj->movementDirection);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_UNDERWATER);
+ eventObj->fieldEffectSpriteId = sub_8155800(eventObj->spriteId);
+}
+
+static void PlayerAvatarTransition_ReturnToField(struct EventObject *eventObj)
+{
+ gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_5;
+}
+
+void sub_808B578(void)
+{
+ gPlayerAvatar.tileTransitionState = T_NOT_MOVING;
+ if (PlayerIsAnimActive())
+ {
+ if (!PlayerCheckIfAnimFinishedOrInactive())
+ {
+ if (!player_is_anim_in_certain_ranges())
+ gPlayerAvatar.tileTransitionState = T_TILE_TRANSITION;
+ }
+ else
+ {
+ if (!sub_808B618())
+ gPlayerAvatar.tileTransitionState = T_TILE_CENTER;
+ }
+ }
+}
+
+static bool8 player_is_anim_in_certain_ranges(void)
+{
+ u8 movementActionId = gEventObjects[gPlayerAvatar.eventObjectId].movementActionId;
+
+ if (movementActionId <= MOVEMENT_ACTION_FACE_RIGHT
+ || (movementActionId >= MOVEMENT_ACTION_DELAY_1 && movementActionId <= MOVEMENT_ACTION_DELAY_16)
+ || (movementActionId >= MOVEMENT_ACTION_WALK_IN_PLACE_SLOW_DOWN && movementActionId <= MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT)
+ || (movementActionId >= MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN && movementActionId <= MOVEMENT_ACTION_ACRO_END_WHEELIE_FACE_RIGHT)
+ || (movementActionId >= MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_DOWN && movementActionId <= MOVEMENT_ACTION_ACRO_WHEELIE_IN_PLACE_RIGHT))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 sub_808B618(void)
+{
+ if (player_is_anim_in_certain_ranges() && gPlayerAvatar.runningState != TURN_DIRECTION)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 PlayerIsAnimActive(void)
+{
+ return EventObjectIsMovementOverridden(&gEventObjects[gPlayerAvatar.eventObjectId]);
+}
+
+static bool8 PlayerCheckIfAnimFinishedOrInactive(void)
+{
+ return EventObjectCheckHeldMovementStatus(&gEventObjects[gPlayerAvatar.eventObjectId]);
+}
+
+static void PlayerSetCopyableMovement(u8 a)
+{
+ gEventObjects[gPlayerAvatar.eventObjectId].playerCopyableMovement = a;
+}
+
+u8 PlayerGetCopyableMovement(void)
+{
+ return gEventObjects[gPlayerAvatar.eventObjectId].playerCopyableMovement;
+}
+
+static void sub_808B6BC(u8 a)
+{
+ EventObjectForceSetHeldMovement(&gEventObjects[gPlayerAvatar.eventObjectId], a);
+}
+
+void PlayerSetAnimId(u8 movementActionId, u8 copyableMovement)
+{
+ if (!PlayerIsAnimActive())
+ {
+ PlayerSetCopyableMovement(copyableMovement);
+ EventObjectSetHeldMovement(&gEventObjects[gPlayerAvatar.eventObjectId], movementActionId);
+ }
+}
+
+// normal speed (1 speed)
+void PlayerGoSpeed1(u8 a)
+{
+ PlayerSetAnimId(GetWalkNormalMovementAction(a), 2);
+}
+
+// fast speed (2 speed)
+void PlayerGoSpeed2(u8 a)
+{
+ PlayerSetAnimId(GetWalkFastMovementAction(a), 2);
+}
+
+void PlayerRideWaterCurrent(u8 a)
+{
+ PlayerSetAnimId(GetRideWaterCurrentMovementAction(a), 2);
+}
+
+// fastest speed (4 speed)
+void PlayerGoSpeed4(u8 a)
+{
+ PlayerSetAnimId(GetWalkFastestMovementAction(a), 2);
+}
+
+static void PlayerRun(u8 a)
+{
+ PlayerSetAnimId(GetPlayerRunMovementAction(a), 2);
+}
+
+void PlayerOnBikeCollide(u8 a)
+{
+ PlayCollisionSoundIfNotFacingWarp(a);
+ PlayerSetAnimId(GetWalkInPlaceNormalMovementAction(a), 2);
+}
+
+void PlayerOnBikeCollideWithFarawayIslandMew(u8 a)
+{
+ PlayerSetAnimId(GetWalkInPlaceNormalMovementAction(a), 2);
+}
+
+static void PlayerNotOnBikeCollide(u8 a)
+{
+ PlayCollisionSoundIfNotFacingWarp(a);
+ PlayerSetAnimId(GetWalkInPlaceSlowMovementAction(a), 2);
+}
+
+static void PlayerNotOnBikeCollideWithFarawayIslandMew(u8 a)
+{
+ PlayerSetAnimId(GetWalkInPlaceSlowMovementAction(a), 2);
+}
+
+void PlayerFaceDirection(u8 direction)
+{
+ PlayerSetAnimId(GetFaceDirectionMovementAction(direction), 1);
+}
+
+void PlayerTurnInPlace(u8 direction)
+{
+ PlayerSetAnimId(GetWalkInPlaceFastMovementAction(direction), 1);
+}
+
+void PlayerJumpLedge(u8 direction)
+{
+ PlaySE(SE_DANSA);
+ PlayerSetAnimId(GetJump2MovementAction(direction), 8);
+}
+
+void sub_808B864(void)
+{
+ if (gPlayerAvatar.tileTransitionState == T_TILE_CENTER || gPlayerAvatar.tileTransitionState == T_NOT_MOVING)
+ {
+ if (player_should_look_direction_be_enforced_upon_movement())
+ sub_808B6BC(GetFaceDirectionMovementAction(gEventObjects[gPlayerAvatar.eventObjectId].facingDirection));
+ }
+}
+
+// wheelie idle
+void PlayerIdleWheelie(u8 direction)
+{
+ PlayerSetAnimId(GetAcroWheelieFaceDirectionMovementAction(direction), 1);
+}
+
+// normal to wheelie
+void PlayerStartWheelie(u8 direction)
+{
+ PlayerSetAnimId(GetAcroPopWheelieFaceDirectionMovementAction(direction), 1);
+}
+
+// wheelie to normal
+void PlayerEndWheelie(u8 direction)
+{
+ PlayerSetAnimId(GetAcroEndWheelieFaceDirectionMovementAction(direction), 1);
+}
+
+// wheelie hopping standing
+void PlayerStandingHoppingWheelie(u8 a)
+{
+ PlaySE(SE_JITE_PYOKO);
+ PlayerSetAnimId(GetAcroWheelieHopFaceDirectionMovementAction(a), 1);
+}
+
+// wheelie hopping moving
+void PlayerMovingHoppingWheelie(u8 a)
+{
+ PlaySE(SE_JITE_PYOKO);
+ PlayerSetAnimId(GetAcroWheelieHopDirectionMovementAction(a), 2);
+}
+
+// wheelie hopping ledge
+void PlayerLedgeHoppingWheelie(u8 a)
+{
+ PlaySE(SE_JITE_PYOKO);
+ PlayerSetAnimId(GetAcroWheelieJumpDirectionMovementAction(a), 8);
+}
+
+// acro turn jump
+void PlayerAcroTurnJump(u8 direction)
+{
+ PlaySE(SE_JITE_PYOKO);
+ PlayerSetAnimId(GetJumpInPlaceTurnAroundMovementAction(direction), 1);
+}
+
+void sub_808B980(u8 direction)
+{
+ PlaySE(SE_WALL_HIT);
+ PlayerSetAnimId(GetAcroWheelieInPlaceDirectionMovementAction(direction), 2);
+}
+
+void sub_808B9A4(u8 direction)
+{
+ PlayerSetAnimId(GetAcroPopWheelieMoveDirectionMovementAction(direction), 2);
+}
+
+void sub_808B9BC(u8 direction)
+{
+ PlayerSetAnimId(GetAcroWheelieMoveDirectionMovementAction(direction), 2);
+}
+
+void sub_808B9D4(u8 direction)
+{
+ PlayerSetAnimId(GetAcroEndWheelieMoveDirectionMovementAction(direction), 2);
+}
+
+static void PlayCollisionSoundIfNotFacingWarp(u8 a)
+{
+ s16 x, y;
+ u8 metatileBehavior = gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior;
+
+ if (!sArrowWarpMetatileBehaviorChecks[a - 1](metatileBehavior))
+ {
+ if (a == 2)
+ {
+ PlayerGetDestCoords(&x, &y);
+ MoveCoords(2, &x, &y);
+ if (MetatileBehavior_IsWarpDoor(MapGridGetMetatileBehaviorAt(x, y)))
+ return;
+ }
+ PlaySE(SE_WALL_HIT);
+ }
+}
+
+void GetXYCoordsOneStepInFrontOfPlayer(s16 *x, s16 *y)
+{
+ *x = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.x;
+ *y = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.y;
+ MoveCoords(GetPlayerFacingDirection(), x, y);
+}
+
+void PlayerGetDestCoords(s16 *x, s16 *y)
+{
+ *x = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.x;
+ *y = gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.y;
+}
+
+u8 player_get_pos_including_state_based_drift(s16 *x, s16 *y)
+{
+ struct EventObject *object = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ if (object->heldMovementActive && !object->heldMovementFinished && !gSprites[object->spriteId].data[2])
+ {
+ *x = object->currentCoords.x;
+ *y = object->currentCoords.y;
+
+ switch (object->movementActionId)
+ {
+ case MOVEMENT_ACTION_WALK_NORMAL_DOWN:
+ case MOVEMENT_ACTION_PLAYER_RUN_DOWN:
+ (*y)++;
+ return TRUE;
+ case MOVEMENT_ACTION_WALK_NORMAL_UP:
+ case MOVEMENT_ACTION_PLAYER_RUN_UP:
+ (*y)--;
+ return TRUE;
+ case MOVEMENT_ACTION_WALK_NORMAL_LEFT:
+ case MOVEMENT_ACTION_PLAYER_RUN_LEFT:
+ (*x)--;
+ return TRUE;
+ case MOVEMENT_ACTION_WALK_NORMAL_RIGHT:
+ case MOVEMENT_ACTION_PLAYER_RUN_RIGHT:
+ (*x)++;
+ return TRUE;
+ }
+ }
+
+ *x = -1;
+ *y = -1;
+ return FALSE;
+}
+
+u8 GetPlayerFacingDirection(void)
+{
+ return gEventObjects[gPlayerAvatar.eventObjectId].facingDirection;
+}
+
+u8 GetPlayerMovementDirection(void)
+{
+ return gEventObjects[gPlayerAvatar.eventObjectId].movementDirection;
+}
+
+u8 PlayerGetZCoord(void)
+{
+ return gEventObjects[gPlayerAvatar.eventObjectId].previousElevation;
+}
+
+void sub_808BC90(s16 a, s16 b)
+{
+ sub_808EB08(&gEventObjects[gPlayerAvatar.eventObjectId], a, b);
+}
+
+u8 TestPlayerAvatarFlags(u8 a)
+{
+ return gPlayerAvatar.flags & a;
+}
+
+u8 sub_808BCD0(void)
+{
+ return gPlayerAvatar.flags;
+}
+
+u8 GetPlayerAvatarObjectId(void)
+{
+ return gPlayerAvatar.spriteId;
+}
+
+void sub_808BCE8(void)
+{
+ ForcedMovement_None();
+}
+
+void sub_808BCF4(void)
+{
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ npc_clear_strange_bits(playerEventObj);
+ SetEventObjectDirection(playerEventObj, playerEventObj->facingDirection);
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
+ {
+ Bike_HandleBumpySlopeJump();
+ Bike_UpdateBikeCounterSpeed(0);
+ }
+}
+
+u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender)
+{
+ return sRivalAvatarGfxIds[state][gender];
+}
+
+u8 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender)
+{
+ return sPlayerAvatarGfxIds[state][gender];
+}
+
+u8 GetFRLGAvatarGraphicsIdByGender(u8 gender)
+{
+ return sFRLGAvatarGfxIds[gender];
+}
+
+u8 GetRSAvatarGraphicsIdByGender(u8 gender)
+{
+ return sRSAvatarGfxIds[gender];
+}
+
+u8 GetPlayerAvatarGraphicsIdByStateId(u8 state)
+{
+ return GetPlayerAvatarGraphicsIdByStateIdAndGender(state, gPlayerAvatar.gender);
+}
+
+u8 unref_GetRivalAvatarGenderByGraphicsId(u8 gfxId)
+{
+ switch (gfxId)
+ {
+ 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;
+ }
+}
+
+u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId)
+{
+ switch (gfxId)
+ {
+ 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;
+ }
+}
+
+bool8 PartyHasMonWithSurf(void)
+{
+ u8 i;
+
+ if (!TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ {
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == SPECIES_NONE)
+ break;
+ if (pokemon_has_move(&gPlayerParty[i], MOVE_SURF))
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 IsPlayerSurfingNorth(void)
+{
+ if (GetPlayerMovementDirection() == DIR_NORTH && TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 IsPlayerFacingSurfableFishableWater(void)
+{
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+ s16 x = playerEventObj->currentCoords.x;
+ s16 y = playerEventObj->currentCoords.y;
+
+ MoveCoords(playerEventObj->facingDirection, &x, &y);
+ if (GetCollisionAtCoords(playerEventObj, x, y, playerEventObj->facingDirection) == 3 && PlayerGetZCoord() == 3
+ && MetatileBehavior_IsSurfableFishableWater(MapGridGetMetatileBehaviorAt(x, y)))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void ClearPlayerAvatarInfo(void)
+{
+ memset(&gPlayerAvatar, 0, sizeof(struct PlayerAvatar));
+}
+
+void SetPlayerAvatarStateMask(u8 flags)
+{
+ gPlayerAvatar.flags &= (PLAYER_AVATAR_FLAG_DASH | PLAYER_AVATAR_FLAG_6 | PLAYER_AVATAR_FLAG_5);
+ gPlayerAvatar.flags |= flags;
+}
+
+static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 a, u8 gender)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (gUnknown_0849750C[gender][i][0] == a)
+ return gUnknown_0849750C[gender][i][1];
+ }
+ return 1;
+}
+
+u8 GetPlayerAvatarGraphicsIdByCurrentState(void)
+{
+ u8 i;
+ u8 r5 = gPlayerAvatar.flags;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (gUnknown_0849750C[gPlayerAvatar.gender][i][1] & r5)
+ return gUnknown_0849750C[gPlayerAvatar.gender][i][0];
+ }
+ return 0;
+}
+
+void SetPlayerAvatarExtraStateTransition(u8 a, u8 b)
+{
+ u8 unk = GetPlayerAvatarStateTransitionByGraphicsId(a, gPlayerAvatar.gender);
+
+ gPlayerAvatar.unk1 |= unk | b;
+ DoPlayerAvatarTransition();
+}
+
+void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
+{
+ 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.eventObjectId = eventObjectId;
+ gPlayerAvatar.spriteId = eventObject->spriteId;
+ gPlayerAvatar.gender = gender;
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_5 | PLAYER_AVATAR_FLAG_ON_FOOT);
+}
+
+void sub_808C0A8(u8 a)
+{
+ gEventObjects[gPlayerAvatar.eventObjectId].invisible = a;
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ gSprites[gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId].invisible = a;
+}
+
+void sub_808C114(void)
+{
+ EventObjectSetGraphicsId(&gEventObjects[gPlayerAvatar.eventObjectId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_FIELD_MOVE));
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 0);
+}
+
+void sub_808C15C(u8 direction)
+{
+ EventObjectSetGraphicsId(&gEventObjects[gPlayerAvatar.eventObjectId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_FISHING));
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingDirectionAnimNum(direction));
+}
+
+void sub_808C1B4(u8 direction)
+{
+ EventObjectSetGraphicsId(&gEventObjects[gPlayerAvatar.eventObjectId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_ACRO_BIKE));
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetAcroWheelieDirectionAnimNum(direction));
+ SeekSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 1);
+}
+
+void sub_808C228(u8 direction)
+{
+ EventObjectSetGraphicsId(&gEventObjects[gPlayerAvatar.eventObjectId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_WATERING));
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFaceDirectionAnimNum(direction));
+}
+
+static void sub_808C280(struct EventObject *eventObject)
+{
+ s16 x;
+ s16 y;
+ u8 direction;
+ u8 metatileBehavior = eventObject->currentMetatileBehavior;
+
+ for (x = 0, direction = DIR_SOUTH; x < 4; x++, direction++)
+ {
+ if (sArrowWarpMetatileBehaviorChecks2[x](metatileBehavior) && direction == eventObject->movementDirection)
+ {
+ x = eventObject->currentCoords.x;
+ y = eventObject->currentCoords.y;
+ MoveCoords(direction, &x, &y);
+ ShowWarpArrowSprite(eventObject->warpArrowSpriteId, direction, x, y);
+ return;
+ }
+ }
+ SetSpriteInvisible(eventObject->warpArrowSpriteId);
+}
+
+/* Strength */
+
+static void StartStrengthAnim(u8 a, u8 b)
+{
+ u8 taskId = CreateTask(Task_BumpBoulder, 0xFF);
+
+ gTasks[taskId].data[1] = a;
+ gTasks[taskId].data[2] = b;
+ Task_BumpBoulder(taskId);
+}
+
+static void Task_BumpBoulder(u8 taskId)
+{
+ while (gUnknown_08497530[gTasks[taskId].data[0]](&gTasks[taskId],
+ &gEventObjects[gPlayerAvatar.eventObjectId],
+ &gEventObjects[gTasks[taskId].data[1]]))
+ ;
+}
+
+static bool8 sub_808C3A4(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject)
+{
+ ScriptContext2_Enable();
+ gPlayerAvatar.preventStep = TRUE;
+ task->data[0]++;
+ return FALSE;
+}
+
+static bool8 do_boulder_dust(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject)
+{
+ if (EventObjectIsHeldMovementActive(playerObject))
+ {
+ EventObjectClearHeldMovementIfFinished(playerObject);
+ }
+
+ if (EventObjectIsHeldMovementActive(strengthObject))
+ {
+ EventObjectClearHeldMovementIfFinished(strengthObject);
+ }
+
+ if (!EventObjectIsMovementOverridden(playerObject)
+ && !EventObjectIsMovementOverridden(strengthObject))
+ {
+ 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]++;
+ }
+ return FALSE;
+}
+
+static bool8 sub_808C484(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject)
+{
+ if (EventObjectCheckHeldMovementStatus(playerObject)
+ && EventObjectCheckHeldMovementStatus(strengthObject))
+ {
+ EventObjectClearHeldMovementIfFinished(playerObject);
+ EventObjectClearHeldMovementIfFinished(strengthObject);
+ gPlayerAvatar.preventStep = FALSE;
+ ScriptContext2_Disable();
+ DestroyTask(FindTaskIdByFunc(Task_BumpBoulder));
+ }
+ return FALSE;
+}
+
+/* Some field effect */
+
+static void DoPlayerMatJump(void)
+{
+ DoPlayerAvatarSecretBaseMatJump(CreateTask(DoPlayerAvatarSecretBaseMatJump, 0xFF));
+}
+
+static void DoPlayerAvatarSecretBaseMatJump(u8 taskId)
+{
+ 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.
+static u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct EventObject *eventObject)
+{
+ gPlayerAvatar.preventStep = TRUE;
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
+ {
+ PlaySE(SE_DANSA);
+ EventObjectSetHeldMovement(eventObject, GetJumpInPlaceMovementAction(eventObject->facingDirection));
+ task->data[1]++;
+ if (task->data[1] > 1)
+ {
+ gPlayerAvatar.preventStep = FALSE;
+ gPlayerAvatar.unk1 |= 0x20;
+ DestroyTask(FindTaskIdByFunc(DoPlayerAvatarSecretBaseMatJump));
+ }
+ }
+ return FALSE;
+}
+
+/* Some field effect */
+
+static void DoPlayerMatSpin(void)
+{
+ u8 taskId = CreateTask(PlayerAvatar_DoSecretBaseMatSpin, 0xFF);
+
+ PlayerAvatar_DoSecretBaseMatSpin(taskId);
+}
+
+static void PlayerAvatar_DoSecretBaseMatSpin(u8 taskId)
+{
+ while (sPlayerAvatarSecretBaseMatSpin[gTasks[taskId].data[0]](&gTasks[taskId], &gEventObjects[gPlayerAvatar.eventObjectId]))
+ ;
+}
+
+static bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *task, struct EventObject *eventObject)
+{
+ task->data[0]++;
+ task->data[1] = eventObject->movementDirection;
+ gPlayerAvatar.preventStep = TRUE;
+ ScriptContext2_Enable();
+ PlaySE(SE_TK_WARPIN);
+ return TRUE;
+}
+
+static bool8 PlayerAvatar_SecretBaseMatSpinStep1(struct Task *task, struct EventObject *eventObject)
+{
+ u8 directions[] = {DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
+ {
+ u8 direction;
+
+ EventObjectSetHeldMovement(eventObject, GetFaceDirectionMovementAction(direction = directions[eventObject->movementDirection - 1]));
+ if (direction == (u8)task->data[1])
+ task->data[2]++;
+ task->data[0]++;
+ if (task->data[2] > 3 && direction == GetOppositeDirection(task->data[1]))
+ task->data[0]++;
+ }
+ return FALSE;
+}
+
+static bool8 PlayerAvatar_SecretBaseMatSpinStep2(struct Task *task, struct EventObject *eventObject)
+{
+ const u8 actions[] = {
+ MOVEMENT_ACTION_DELAY_1,
+ MOVEMENT_ACTION_DELAY_1,
+ MOVEMENT_ACTION_DELAY_2,
+ MOVEMENT_ACTION_DELAY_4,
+ MOVEMENT_ACTION_DELAY_8,
+ };
+
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
+ {
+ EventObjectSetHeldMovement(eventObject, actions[task->data[2]]);
+ task->data[0] = 1;
+ }
+ return FALSE;
+}
+
+static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct EventObject *eventObject)
+{
+ if (EventObjectClearHeldMovementIfFinished(eventObject))
+ {
+ EventObjectSetHeldMovement(eventObject, GetWalkSlowMovementAction(GetOppositeDirection(task->data[1])));
+ ScriptContext2_Disable();
+ gPlayerAvatar.preventStep = FALSE;
+ DestroyTask(FindTaskIdByFunc(PlayerAvatar_DoSecretBaseMatSpin));
+ }
+ return FALSE;
+}
+
+/* Some Field effect */
+
+static void sub_808C750(u8 a)
+{
+ u8 taskId;
+
+ ScriptContext2_Enable();
+ Overworld_ClearSavedMusic();
+ Overworld_ChangeMusicToDefault();
+ gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_SURFING;
+ gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_ON_FOOT;
+ gPlayerAvatar.preventStep = TRUE;
+ taskId = CreateTask(taskFF_0805D1D4, 0xFF);
+ gTasks[taskId].data[0] = a;
+ taskFF_0805D1D4(taskId);
+}
+
+static void taskFF_0805D1D4(u8 taskId)
+{
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ if (EventObjectIsMovementOverridden(playerEventObj))
+ {
+ if (!EventObjectClearHeldMovementIfFinished(playerEventObj))
+ return;
+ }
+ sub_81555AC(playerEventObj->fieldEffectSpriteId, 2);
+ EventObjectSetHeldMovement(playerEventObj, GetJumpSpecialMovementAction((u8)gTasks[taskId].data[0]));
+ gTasks[taskId].func = sub_808C814;
+}
+
+static void sub_808C814(u8 taskId)
+{
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ if (EventObjectClearHeldMovementIfFinished(playerEventObj))
+ {
+ EventObjectSetGraphicsId(playerEventObj, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_NORMAL));
+ EventObjectSetHeldMovement(playerEventObj, GetFaceDirectionMovementAction(playerEventObj->facingDirection));
+ gPlayerAvatar.preventStep = FALSE;
+ ScriptContext2_Disable();
+ DestroySprite(&gSprites[playerEventObj->fieldEffectSpriteId]);
+ DestroyTask(taskId);
+ }
+}
+
+static bool8 (*const sFishingStateFuncs[])(struct Task *) =
+{
+ Fishing1,
+ Fishing2,
+ Fishing3,
+ Fishing4,
+ Fishing5,
+ Fishing6,
+ Fishing7,
+ Fishing8,
+ Fishing9,
+ Fishing10,
+ Fishing11,
+ Fishing12,
+ Fishing13,
+ Fishing14,
+ Fishing15,
+ Fishing16,
+};
+
+#define tStep data[0]
+#define tFrameCounter data[1]
+#define tNumDots data[2]
+#define tDotsRequired data[3]
+#define tRoundsPlayed data[12]
+#define tMinRoundsRequired data[13]
+#define tPlayerGfxId data[14]
+#define tFishingRod data[15]
+
+#define FISHING_START_ROUND 3
+#define FISHING_GOT_BITE 6
+#define FISHING_ON_HOOK 9
+#define FISHING_NO_BITE 11
+#define FISHING_GOT_AWAY 12
+#define FISHING_SHOW_RESULT 13
+
+void StartFishing(u8 rod)
+{
+ u8 taskId = CreateTask(Task_Fishing, 0xFF);
+
+ gTasks[taskId].tFishingRod = rod;
+ Task_Fishing(taskId);
+}
+
+static void Task_Fishing(u8 taskId)
+{
+ while (sFishingStateFuncs[gTasks[taskId].tStep](&gTasks[taskId]))
+ ;
+}
+
+static bool8 Fishing1(struct Task *task)
+{
+ ScriptContext2_Enable();
+ gPlayerAvatar.preventStep = TRUE;
+ task->tStep++;
+ return FALSE;
+}
+
+static bool8 Fishing2(struct Task *task)
+{
+ 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 = gEventObjects[gPlayerAvatar.eventObjectId].graphicsId;
+ playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+ EventObjectClearHeldMovementIfActive(playerEventObj);
+ playerEventObj->enableAnim = 1;
+ sub_808C15C(playerEventObj->facingDirection);
+ task->tStep++;
+ return FALSE;
+}
+
+static bool8 Fishing3(struct Task *task)
+{
+ AlignFishingAnimationFrames();
+
+ // Wait one second
+ task->tFrameCounter++;
+ if (task->tFrameCounter >= 60)
+ task->tStep++;
+ return FALSE;
+}
+
+static bool8 Fishing4(struct Task *task)
+{
+ u32 randVal;
+
+ sub_819786C(0, TRUE);
+ task->tStep++;
+ task->tFrameCounter = 0;
+ task->tNumDots = 0;
+ randVal = Random();
+ randVal %= 10;
+ task->tDotsRequired = randVal + 1;
+ if (task->tRoundsPlayed == 0)
+ task->tDotsRequired = randVal + 4;
+ if (task->tDotsRequired >= 10)
+ task->tDotsRequired = 10;
+ return TRUE;
+}
+
+// Play a round of the dot game
+static bool8 Fishing5(struct Task *task)
+{
+ const u8 dot[] = _("·");
+
+ AlignFishingAnimationFrames();
+ task->tFrameCounter++;
+ if (gMain.newKeys & A_BUTTON)
+ {
+ task->tStep = FISHING_NO_BITE;
+ if (task->tRoundsPlayed != 0)
+ task->tStep = FISHING_GOT_AWAY;
+ return TRUE;
+ }
+ else
+ {
+ if (task->tFrameCounter >= 20)
+ {
+ task->tFrameCounter = 0;
+ if (task->tNumDots >= task->tDotsRequired)
+ {
+ task->tStep++;
+ if (task->tRoundsPlayed != 0)
+ task->tStep++;
+ task->tRoundsPlayed++;
+ }
+ else
+ {
+ AddTextPrinterParameterized(0, 1, dot, task->tNumDots * 8, 1, 0, NULL);
+ task->tNumDots++;
+ }
+ }
+ return FALSE;
+ }
+}
+
+// Determine if fish bites
+static bool8 Fishing6(struct Task *task)
+{
+ bool8 bite;
+
+ AlignFishingAnimationFrames();
+ task->tStep++;
+ bite = FALSE;
+
+ if (!DoesCurrentMapHaveFishingMons())
+ {
+ task->tStep = FISHING_NO_BITE;
+ }
+ else
+ {
+ if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_BIT3))
+ {
+ u8 ability = GetMonAbility(&gPlayerParty[0]);
+ if (ability == ABILITY_SUCTION_CUPS || ability == ABILITY_STICKY_HOLD)
+ {
+ if (Random() % 100 > 14)
+ {
+ bite = TRUE;
+ }
+ }
+ }
+
+ if (!bite)
+ {
+ if (Random() & 1)
+ {
+ task->tStep = FISHING_NO_BITE;
+ }
+ else
+ {
+ bite = TRUE;
+ }
+ }
+
+ if (bite == TRUE)
+ {
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingBiteDirectionAnimNum(GetPlayerFacingDirection()));
+ }
+ }
+ return TRUE;
+}
+
+// Oh! A Bite!
+static bool8 Fishing7(struct Task *task)
+{
+ AlignFishingAnimationFrames();
+ AddTextPrinterParameterized(0, 1, gText_OhABite, 0, 17, 0, NULL);
+ task->tStep++;
+ task->tFrameCounter = 0;
+ return FALSE;
+}
+
+// We have a bite. Now, wait for the player to press A, or the timer to expire.
+static bool8 Fishing8(struct Task *task)
+{
+ const s16 reelTimeouts[3] = {36, 33, 30};
+
+ AlignFishingAnimationFrames();
+ task->tFrameCounter++;
+ if (task->tFrameCounter >= reelTimeouts[task->tFishingRod])
+ task->tStep = FISHING_GOT_AWAY;
+ else if (gMain.newKeys & A_BUTTON)
+ task->tStep++;
+ return FALSE;
+}
+
+// Determine if we're going to play the dot game again
+static bool8 Fishing9(struct Task *task)
+{
+ const s16 arr[][2] =
+ {
+ {0, 0},
+ {40, 10},
+ {70, 30}
+ };
+
+ AlignFishingAnimationFrames();
+ task->tStep++;
+ if (task->tRoundsPlayed < task->tMinRoundsRequired)
+ {
+ task->tStep = FISHING_START_ROUND;
+ }
+ else if (task->tRoundsPlayed < 2)
+ {
+ // probability of having to play another round
+ s16 probability = Random() % 100;
+
+ if (arr[task->tFishingRod][task->tRoundsPlayed] > probability)
+ task->tStep = FISHING_START_ROUND;
+ }
+ return FALSE;
+}
+
+static bool8 Fishing10(struct Task *task)
+{
+ AlignFishingAnimationFrames();
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized2(0, 1, gText_PokemonOnHook, 1, 0, 2, 1, 3);
+ task->tStep++;
+ task->tFrameCounter = 0;
+ return FALSE;
+}
+
+static bool8 Fishing11(struct Task *task)
+{
+ if (task->tFrameCounter == 0)
+ AlignFishingAnimationFrames();
+
+ RunTextPrinters();
+
+ if (task->tFrameCounter == 0)
+ {
+ if (!IsTextPrinterActive(0))
+ {
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ EventObjectSetGraphicsId(playerEventObj, task->tPlayerGfxId);
+ EventObjectTurn(playerEventObj, playerEventObj->movementDirection);
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
+ sub_8155604(gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId, 0, 0);
+ gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
+ gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
+ sub_8197434(0, TRUE);
+ task->tFrameCounter++;
+ return FALSE;
+ }
+ }
+
+ if (task->tFrameCounter != 0)
+ {
+ gPlayerAvatar.preventStep = FALSE;
+ ScriptContext2_Disable();
+ FishingWildEncounter(task->tFishingRod);
+ sub_80ED950(1);
+ DestroyTask(FindTaskIdByFunc(Task_Fishing));
+ }
+ return FALSE;
+}
+
+// Not even a nibble
+static bool8 Fishing12(struct Task *task)
+{
+ AlignFishingAnimationFrames();
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection()));
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized2(0, 1, gText_NotEvenANibble, 1, 0, 2, 1, 3);
+ task->tStep = FISHING_SHOW_RESULT;
+ return TRUE;
+}
+
+// It got away
+static bool8 Fishing13(struct Task *task)
+{
+ AlignFishingAnimationFrames();
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection()));
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized2(0, 1, gText_ItGotAway, 1, 0, 2, 1, 3);
+ task->tStep++;
+ return TRUE;
+}
+
+// Wait one second
+static bool8 Fishing14(struct Task *task)
+{
+ AlignFishingAnimationFrames();
+ task->tStep++;
+ return FALSE;
+}
+
+static bool8 Fishing15(struct Task *task)
+{
+ AlignFishingAnimationFrames();
+ if (gSprites[gPlayerAvatar.spriteId].animEnded)
+ {
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ EventObjectSetGraphicsId(playerEventObj, task->tPlayerGfxId);
+ EventObjectTurn(playerEventObj, playerEventObj->movementDirection);
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
+ sub_8155604(gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId, 0, 0);
+ gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
+ gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
+ task->tStep++;
+ }
+ return FALSE;
+}
+
+static bool8 Fishing16(struct Task *task)
+{
+ RunTextPrinters();
+ if (!IsTextPrinterActive(0))
+ {
+ gPlayerAvatar.preventStep = FALSE;
+ ScriptContext2_Disable();
+ UnfreezeEventObjects();
+ sub_8197434(0, TRUE);
+ sub_80ED950(0);
+ DestroyTask(FindTaskIdByFunc(Task_Fishing));
+ }
+ return FALSE;
+}
+
+#undef tStep
+#undef tFrameCounter
+#undef tFishingRod
+
+static void AlignFishingAnimationFrames(void)
+{
+ struct Sprite *playerSprite = &gSprites[gPlayerAvatar.spriteId];
+ u8 animCmdIndex;
+ u8 animType;
+
+ AnimateSprite(playerSprite);
+ playerSprite->pos2.x = 0;
+ playerSprite->pos2.y = 0;
+ animCmdIndex = playerSprite->animCmdIndex;
+ if (playerSprite->anims[playerSprite->animNum][animCmdIndex].type == -1)
+ {
+ animCmdIndex--;
+ }
+ else
+ {
+ playerSprite->animDelayCounter++;
+ if (playerSprite->anims[playerSprite->animNum][animCmdIndex].type == -1)
+ animCmdIndex--;
+ }
+ animType = playerSprite->anims[playerSprite->animNum][animCmdIndex].type;
+ if (animType == 1 || animType == 2 || animType == 3)
+ {
+ playerSprite->pos2.x = 8;
+ if (GetPlayerFacingDirection() == 3)
+ playerSprite->pos2.x = -8;
+ }
+ if (animType == 5)
+ playerSprite->pos2.y = -8;
+ if (animType == 10 || animType == 11)
+ playerSprite->pos2.y = 8;
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
+ sub_8155604(gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId, 1, playerSprite->pos2.y);
+}
+
+void sub_808D074(u8 a0)
+{
+ gUnknown_0203734C = a0;
+}
+
+static u8 sub_808D080(void)
+{
+ if (gUnknown_0203734C == 0)
+ {
+ return 1;
+ }
+ return gUnknown_0203734C;
+}
+
+static void sub_808D094(u8 taskId)
+{
+ struct EventObject *object = &gEventObjects[gPlayerAvatar.eventObjectId];
+ struct Sprite *sprite = &gSprites[object->spriteId];
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ if (!EventObjectClearHeldMovementIfFinished(object))
+ {
+ return;
+ }
+
+ sub_808D074(object->facingDirection);
+ data[1] = 0;
+ data[2] = 1;
+ data[3] = (u16)(sprite->pos1.y + sprite->pos2.y) * 16;
+ sprite->pos2.y = 0;
+ CameraObjectReset2();
+ object->fixedPriority = TRUE;
+ sprite->oam.priority = 0;
+ sprite->subpriority = 0;
+ sprite->subspriteMode = 0;
+ data[0]++;
+ case 1:
+ sub_808D38C(object, &data[1]);
+ data[3] -= data[2];
+ data[2] += 3;
+ sprite->pos1.y = data[3] >> 4;
+ if (sprite->pos1.y + (s16)gTotalCameraPixelOffsetY < -32)
+ {
+ data[0]++;
+ }
+ break;
+ case 2:
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void sub_808D1FC(u8 taskId);
+
+void sub_808D194(void)
+{
+ sub_808D1FC(CreateTask(sub_808D1FC, 0));
+}
+
+bool8 sub_808D1B4(void)
+{
+ return FuncIsActiveTask(sub_808D1FC);
+}
+
+void sub_808D1C8(void)
+{
+ sub_808D094(CreateTask(sub_808D094, 0));
+}
+
+bool8 sub_808D1E8(void)
+{
+ return FuncIsActiveTask(sub_808D094);
+}
+
+static const u8 gUnknown_084975BC[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+
+static void sub_808D1FC(u8 taskId)
+{
+ struct EventObject *object = &gEventObjects[gPlayerAvatar.eventObjectId];
+ struct Sprite *sprite = &gSprites[object->spriteId];
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ data[5] = sub_808D080();
+ EventObjectForceSetHeldMovement(object, GetFaceDirectionMovementAction(gUnknown_084975BC[data[5]]));
+ data[1] = 0;
+ data[2] = 116;
+ data[4] = sprite->pos1.y;
+ data[6] = sprite->oam.priority;
+ data[7] = sprite->subpriority;
+ data[3] = -((u16)sprite->pos2.y + 32) * 16;
+ sprite->pos2.y = 0;
+ CameraObjectReset2();
+ object->fixedPriority = TRUE;
+ sprite->oam.priority = 1;
+ sprite->subpriority = 0;
+ sprite->subspriteMode = 0;
+ data[0]++;
+ case 1:
+ sub_808D38C(object, &data[1]);
+ data[3] += data[2];
+ data[2] -= 3;
+ if (data[2] < 4)
+ {
+ data[2] = 4;
+ }
+ sprite->pos1.y = data[3] >> 4;
+ if (sprite->pos1.y >= data[4])
+ {
+ sprite->pos1.y = data[4];
+ data[8] = 0;
+ data[0]++;
+ }
+ break;
+ case 2:
+ sub_808D38C(object, &data[1]);
+ data[8]++;
+ if (data[8] > 8)
+ {
+ data[0]++;
+ }
+ break;
+ case 3:
+ if (data[5] == sub_808D38C(object, &data[1]))
+ {
+ object->fixedPriority = 0;
+ sprite->oam.priority = data[6];
+ sprite->subpriority = data[7];
+ CameraObjectReset1();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static u8 sub_808D38C(struct EventObject *object, s16 *a1)
+{
+ if (*a1 < 8 && ++(*a1) < 8)
+ {
+ return object->facingDirection;
+ }
+
+ if (!EventObjectCheckHeldMovementStatus(object))
+ {
+ return object->facingDirection;
+ }
+
+ EventObjectForceSetHeldMovement(object, GetFaceDirectionMovementAction(gUnknown_084975BC[object->facingDirection]));
+ *a1 = 0;
+ return gUnknown_084975BC[object->facingDirection];
+}
diff --git a/src/field_poison.c b/src/field_poison.c
index 6a519d90c..02f37f69f 100644
--- a/src/field_poison.c
+++ b/src/field_poison.c
@@ -1,20 +1,21 @@
#include "global.h"
-#include "string_util.h"
-#include "party_menu.h"
-#include "constants/species.h"
-#include "task.h"
+#include "battle.h"
+#include "battle_pike.h"
+#include "event_data.h"
#include "field_message_box.h"
-#include "strings.h"
-#include "rom_818CFC8.h"
-#include "battle_frontier_2.h"
+#include "field_poison.h"
+#include "fldeff_80F9BCC.h"
+#include "frontier_util.h"
+#include "party_menu.h"
#include "pokenav.h"
-#include "event_data.h"
+#include "rom_818CFC8.h"
#include "script.h"
-#include "battle.h"
-#include "fldeff_80F9BCC.h"
-#include "field_poison.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "constants/species.h"
-static bool32 sub_80F9568(struct Pokemon *pokemon)
+static bool32 IsMonValidSpecies(struct Pokemon *pokemon)
{
u16 species = GetMonData(pokemon, MON_DATA_SPECIES2);
if (species == SPECIES_NONE || species == SPECIES_EGG)
@@ -24,14 +25,14 @@ static bool32 sub_80F9568(struct Pokemon *pokemon)
return TRUE;
}
-static bool32 sub_80F958C(void)
+static bool32 AllMonsFainted(void)
{
int i;
- struct Pokemon *pokemon;
+ struct Pokemon *pokemon = gPlayerParty;
- for (pokemon = gPlayerParty, i = 0; i < PARTY_SIZE; i++, pokemon++)
+ for (i = 0; i < PARTY_SIZE; i++, pokemon++)
{
- if (sub_80F9568(pokemon) && GetMonData(pokemon, MON_DATA_HP) != 0)
+ if (IsMonValidSpecies(pokemon) && GetMonData(pokemon, MON_DATA_HP) != 0)
{
return FALSE;
}
@@ -39,27 +40,28 @@ static bool32 sub_80F958C(void)
return TRUE;
}
-static void sub_80F95C0(u8 partyIdx)
+static void FaintFromFieldPoison(u8 partyIdx)
{
struct Pokemon *pokemon = gPlayerParty + partyIdx;
- unsigned int status = STATUS1_NONE;
+ u32 status = STATUS1_NONE;
+
AdjustFriendship(pokemon, 0x07);
SetMonData(pokemon, MON_DATA_STATUS, &status);
GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1);
StringGetEnd10(gStringVar1);
}
-static bool32 sub_80F960C(u8 partyIdx)
+static bool32 MonFaintedFromPoison(u8 partyIdx)
{
struct Pokemon *pokemon = gPlayerParty + partyIdx;
- if (sub_80F9568(pokemon) && GetMonData(pokemon, MON_DATA_HP) == 0 && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
+ if (IsMonValidSpecies(pokemon) && GetMonData(pokemon, MON_DATA_HP) == 0 && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
{
return TRUE;
}
return FALSE;
}
-static void sub_80F9654(u8 taskId)
+static void Task_WhiteOut(u8 taskId)
{
s16 *data = gTasks[taskId].data;
switch (data[0])
@@ -67,9 +69,9 @@ static void sub_80F9654(u8 taskId)
case 0:
for (; data[1] < PARTY_SIZE; data[1]++)
{
- if (sub_80F960C(data[1]))
+ if (MonFaintedFromPoison(data[1]))
{
- sub_80F95C0(data[1]);
+ FaintFromFieldPoison(data[1]);
ShowFieldMessage(gText_PkmnFainted3);
data[0]++;
return;
@@ -84,7 +86,7 @@ static void sub_80F9654(u8 taskId)
}
break;
case 2:
- if (sub_80F958C())
+ if (AllMonsFainted())
{
if (InBattlePyramid() | InBattlePike() || sub_81D5C18())
{
@@ -105,19 +107,19 @@ static void sub_80F9654(u8 taskId)
}
}
-void sub_80F972C(void)
+void ExecuteWhiteOut(void)
{
- CreateTask(sub_80F9654, 80);
+ CreateTask(Task_WhiteOut, 80);
ScriptContext1_Stop();
}
-int DoPoisonFieldEffect(void)
+s32 DoPoisonFieldEffect(void)
{
int i;
- unsigned int hp;
+ u32 hp;
struct Pokemon *pokemon = gPlayerParty;
- unsigned int numPoisoned = 0;
- unsigned int numFainted = 0;
+ u32 numPoisoned = 0;
+ u32 numFainted = 0;
for (i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(pokemon, MON_DATA_SANITY_BIT2) && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
@@ -134,7 +136,7 @@ int DoPoisonFieldEffect(void)
}
if (numFainted != 0 || numPoisoned != 0)
{
- overworld_poison_effect();
+ FldeffPoison_Start();
}
if (numFainted != 0)
{
diff --git a/src/field_region_map.c b/src/field_region_map.c
index 7e8794cab..40f48e668 100644
--- a/src/field_region_map.c
+++ b/src/field_region_map.c
@@ -1,18 +1,16 @@
-
-// Includes
#include "global.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "international_string_util.h"
#include "main.h"
#include "malloc.h"
-#include "gpu_regs.h"
-#include "bg.h"
-#include "text.h"
-#include "window.h"
-#include "text_window.h"
-#include "palette.h"
#include "menu.h"
-#include "strings.h"
-#include "international_string_util.h"
+#include "palette.h"
#include "region_map.h"
+#include "strings.h"
+#include "text.h"
+#include "text_window.h"
+#include "window.h"
// Static type declarations
@@ -58,7 +56,7 @@ static const struct BgTemplate gUnknown_085E5068[] = {
static const struct WindowTemplate gUnknown_085E5070[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 17,
.tilemapTop = 17,
.width = 12,
@@ -67,7 +65,7 @@ static const struct WindowTemplate gUnknown_085E5070[] =
.baseBlock = 1
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 22,
.tilemapTop = 1,
.width = 7,
diff --git a/src/field_specials.c b/src/field_specials.c
index fcef56f14..4da751b27 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1,5 +1,4 @@
#include "global.h"
-#include "main.h"
#include "battle.h"
#include "battle_tower.h"
#include "cable_club.h"
@@ -13,7 +12,6 @@
#include "field_effect.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
-#include "field_region_map.h"
#include "field_screen.h"
#include "field_specials.h"
#include "field_weather.h"
@@ -21,6 +19,7 @@
#include "item_icon.h"
#include "link.h"
#include "list_menu.h"
+#include "main.h"
#include "malloc.h"
#include "match_call.h"
#include "menu.h"
@@ -46,6 +45,7 @@
#include "wallclock.h"
#include "window.h"
#include "constants/event_objects.h"
+#include "constants/field_effects.h"
#include "constants/items.h"
#include "constants/maps.h"
#include "constants/songs.h"
@@ -80,6 +80,7 @@ extern const u16 gEventObjectPalette34[];
extern void LoadPalette(const void *src, u32 offset, u16 size); // incorrect signature, needed to match
extern void BlendPalettes(u32, u8, u16);
+extern void FieldInitRegionMap(MainCallback callback);
void UpdateMovedLilycoveFanClubMembers(void);
void sub_813BF60(void);
@@ -595,7 +596,7 @@ static void LoadLinkPartnerEventObjectSpritePalette(u8 graphicsId, u8 localEvent
graphicsId == EVENT_OBJ_GFX_RIVAL_MAY_NORMAL)
{
u8 obj = GetEventObjectIdByLocalIdAndMap(localEventId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
- if (obj != NUM_EVENT_OBJECTS)
+ if (obj != EVENT_OBJECTS_COUNT)
{
u8 spriteId = gEventObjects[obj].spriteId;
struct Sprite *sprite = &gSprites[spriteId];
@@ -1328,7 +1329,7 @@ u16 GetSlotMachineId(void)
bool8 FoundAbandonedShipRoom1Key(void)
{
u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = FLAG_HIDDEN_ITEM_1F;
+ u16 flag = FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_1_KEY;
*specVar = flag;
if (!FlagGet(flag))
{
@@ -1340,7 +1341,7 @@ bool8 FoundAbandonedShipRoom1Key(void)
bool8 FoundAbandonedShipRoom2Key(void)
{
u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = FLAG_HIDDEN_ITEM_20;
+ u16 flag = FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_2_KEY;
*specVar = flag;
if (!FlagGet(flag))
{
@@ -1352,7 +1353,7 @@ bool8 FoundAbandonedShipRoom2Key(void)
bool8 FoundAbandonedShipRoom4Key(void)
{
u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = FLAG_HIDDEN_ITEM_21;
+ u16 flag = FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_4_KEY;
*specVar = flag;
if (!FlagGet(flag))
{
@@ -1364,7 +1365,7 @@ bool8 FoundAbandonedShipRoom4Key(void)
bool8 FoundAbandonedShipRoom6Key(void)
{
u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = FLAG_HIDDEN_ITEM_22;
+ u16 flag = FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_6_KEY;
*specVar = flag;
if (!FlagGet(flag))
{
@@ -1508,12 +1509,12 @@ static void sub_8139620(u8 taskId)
bool8 FoundBlackGlasses(void)
{
- return FlagGet(FLAG_HIDDEN_ITEM_BLACK_GLASSES);
+ return FlagGet(FLAG_HIDDEN_ITEM_ROUTE_116_BLACK_GLASSES);
}
void SetRoute119Weather(void)
{
- if (is_map_type_1_2_3_5_or_6(get_map_light_from_warp0()) != TRUE)
+ if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE)
{
SetSav1Weather(20);
}
@@ -1521,7 +1522,7 @@ void SetRoute119Weather(void)
void SetRoute123Weather(void)
{
- if (is_map_type_1_2_3_5_or_6(get_map_light_from_warp0()) != TRUE)
+ if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE)
{
SetSav1Weather(21);
}
@@ -1680,7 +1681,7 @@ void sub_8139980(void)
}
const struct WindowTemplate gUnknown_085B2BAC = {
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 21,
.tilemapTop = 1,
.width = 8,
@@ -1708,8 +1709,18 @@ const u8 *const gElevatorFloorsTable[] = {
gText_Rooftop
};
-const u16 gUnknown_085B2BF4[] = { 0x0329, 0x032a, 0x032b, 0x0331, 0x0332, 0x0333, 0x0339, 0x033a, 0x033b };
-const u16 gUnknown_085B2C06[] = { 0x0329, 0x032b, 0x032a, 0x0331, 0x0333, 0x0332, 0x0339, 0x033b, 0x033a };
+const u16 gUnknown_085B2BF4[][3] =
+{
+ {0x0329, 0x032a, 0x032b},
+ {0x0331, 0x0332, 0x0333},
+ {0x0339, 0x033a, 0x033b},
+};
+const u16 gUnknown_085B2C06[][3] =
+{
+ {0x0329, 0x032b, 0x032a},
+ {0x0331, 0x0333, 0x0332},
+ {0x0339, 0x033b, 0x033a},
+};
void SetDepartmentStoreFloorVar(void)
{
@@ -1865,9 +1876,6 @@ static void sub_8139C2C(u16 a1, u8 a2)
}
}
-// Annoyingly close but compiler wants to add all the parts of the index into the arrays
-// first and then shift by one, whereas we need each individual part to shift and then be added.
-#ifdef NONMATCHING
static void sub_8139C80(u8 taskId)
{
u8 x, y;
@@ -1882,7 +1890,7 @@ static void sub_8139C80(u8 taskId)
{
for (x = 0; x < 3; x++)
{
- MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y * 3 + data[0] % 3] | 0xC00);
+ MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y][data[0] % 3] | 0xC00);
}
}
}
@@ -1892,7 +1900,7 @@ static void sub_8139C80(u8 taskId)
{
for (x = 0; x < 3; x++)
{
- MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y * 3 + data[0] % 3] | 0xC00);
+ MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y][data[0] % 3] | 0xC00);
}
}
}
@@ -1905,172 +1913,30 @@ static void sub_8139C80(u8 taskId)
}
data[1]++;
}
-#else
-NAKED
-static void sub_8139C80(u8 taskId)
-{
- asm_unified("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\
- str r0, [sp]\n\
- lsls r0, 2\n\
- ldr r1, [sp]\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- ldr r1, =gTasks + 0x8\n\
- adds r6, r0, r1\n\
- movs r2, 0x2\n\
- ldrsh r0, [r6, r2]\n\
- cmp r0, 0x6\n\
- bne _08139D7C\n\
- ldrh r0, [r6]\n\
- adds r0, 0x1\n\
- strh r0, [r6]\n\
- movs r1, 0x4\n\
- ldrsh r0, [r6, r1]\n\
- cmp r0, 0\n\
- bne _08139D10\n\
- movs r1, 0\n\
- ldr r2, =gUnknown_085B2BF4\n\
- mov r10, r2\n\
-_08139CBA:\n\
- movs r5, 0\n\
- adds r7, r1, 0x7\n\
- lsls r0, r1, 1\n\
- adds r2, r1, 0x1\n\
- mov r8, r2\n\
- adds r0, r1\n\
- lsls r0, 1\n\
- mov r9, r0\n\
-_08139CCA:\n\
- adds r4, r5, 0\n\
- adds r4, 0x8\n\
- movs r1, 0\n\
- ldrsh r0, [r6, r1]\n\
- movs r1, 0x3\n\
- bl __modsi3\n\
- lsls r0, 16\n\
- asrs r0, 15\n\
- add r0, r9\n\
- add r0, r10\n\
- ldrh r0, [r0]\n\
- movs r1, 0xC0\n\
- lsls r1, 4\n\
- adds r2, r1, 0\n\
- orrs r2, r0\n\
- adds r0, r4, 0\n\
- adds r1, r7, 0\n\
- bl MapGridSetMetatileIdAt\n\
- adds r0, r5, 0x1\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- cmp r5, 0x2\n\
- bls _08139CCA\n\
- mov r2, r8\n\
- lsls r0, r2, 24\n\
- lsrs r1, r0, 24\n\
- cmp r1, 0x2\n\
- bls _08139CBA\n\
- b _08139D62\n\
- .pool\n\
-_08139D10:\n\
- movs r1, 0\n\
- ldr r0, =gUnknown_085B2C06\n\
- mov r10, r0\n\
-_08139D16:\n\
- movs r5, 0\n\
- adds r7, r1, 0x7\n\
- lsls r0, r1, 1\n\
- adds r2, r1, 0x1\n\
- mov r8, r2\n\
- adds r0, r1\n\
- lsls r0, 1\n\
- mov r9, r0\n\
-_08139D26:\n\
- adds r4, r5, 0\n\
- adds r4, 0x8\n\
- movs r1, 0\n\
- ldrsh r0, [r6, r1]\n\
- movs r1, 0x3\n\
- bl __modsi3\n\
- lsls r0, 16\n\
- asrs r0, 15\n\
- add r0, r9\n\
- add r0, r10\n\
- ldrh r0, [r0]\n\
- movs r1, 0xC0\n\
- lsls r1, 4\n\
- adds r2, r1, 0\n\
- orrs r2, r0\n\
- adds r0, r4, 0\n\
- adds r1, r7, 0\n\
- bl MapGridSetMetatileIdAt\n\
- adds r0, r5, 0x1\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- cmp r5, 0x2\n\
- bls _08139D26\n\
- mov r2, r8\n\
- lsls r0, r2, 24\n\
- lsrs r1, r0, 24\n\
- cmp r1, 0x2\n\
- bls _08139D16\n\
-_08139D62:\n\
- bl DrawWholeMapView\n\
- movs r0, 0\n\
- strh r0, [r6, 0x2]\n\
- movs r0, 0\n\
- ldrsh r1, [r6, r0]\n\
- movs r2, 0x6\n\
- ldrsh r0, [r6, r2]\n\
- cmp r1, r0\n\
- bne _08139D7C\n\
- ldr r0, [sp]\n\
- bl DestroyTask\n\
-_08139D7C:\n\
- ldrh r0, [r6, 0x2]\n\
- adds r0, 0x1\n\
- strh r0, [r6, 0x2]\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\
- .pool");
-}
-#endif // NAKED
void sub_8139D98(void)
{
u8 i;
- u32 ivStorage[6];
+ u32 ivStorage[NUM_STATS];
- ivStorage[0] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_HP_IV);
- ivStorage[1] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_ATK_IV);
- ivStorage[2] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_DEF_IV);
- ivStorage[3] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPEED_IV);
- ivStorage[4] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPATK_IV);
- ivStorage[5] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPDEF_IV);
+ ivStorage[STAT_HP] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_HP_IV);
+ ivStorage[STAT_ATK] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_ATK_IV);
+ ivStorage[STAT_DEF] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_DEF_IV);
+ ivStorage[STAT_SPEED] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPEED_IV);
+ ivStorage[STAT_SPATK] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPATK_IV);
+ ivStorage[STAT_SPDEF] = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPDEF_IV);
gSpecialVar_0x8005 = 0;
- for (i = 0; i < ARRAY_COUNT(ivStorage); i++)
+ for (i = 0; i < NUM_STATS; i++)
{
gSpecialVar_0x8005 += ivStorage[i];
}
gSpecialVar_0x8006 = 0;
- gSpecialVar_0x8007 = ivStorage[0]; // HP IV
+ gSpecialVar_0x8007 = ivStorage[STAT_HP];
- for (i = 1; i < 6; i++)
+ for (i = 1; i < NUM_STATS; i++)
{
if (ivStorage[gSpecialVar_0x8006] < ivStorage[i])
{
@@ -2080,7 +1946,7 @@ void sub_8139D98(void)
else if (ivStorage[gSpecialVar_0x8006] == ivStorage[i])
{
u16 randomNumber = Random();
- if ((randomNumber & 1) != 0)
+ if (randomNumber & 1)
{
gSpecialVar_0x8006 = i;
gSpecialVar_0x8007 = ivStorage[i];
@@ -2158,73 +2024,73 @@ void sub_8139F20(void)
case 1:
case 2:
case 3:
- if (gSaveBlock2Ptr->frontier.field_CE0[var][0] >= gSaveBlock2Ptr->frontier.field_CE0[var][1])
+ if (gSaveBlock2Ptr->frontier.towerWinStreaks[var][0] >= gSaveBlock2Ptr->frontier.towerWinStreaks[var][1])
{
- unk = gSaveBlock2Ptr->frontier.field_CE0[var][0];
+ unk = gSaveBlock2Ptr->frontier.towerWinStreaks[var][0];
}
else
{
- unk = gSaveBlock2Ptr->frontier.field_CE0[var][1];
+ unk = gSaveBlock2Ptr->frontier.towerWinStreaks[var][1];
}
break;
case 4:
- if (gSaveBlock2Ptr->frontier.field_D0C[0][0] >= gSaveBlock2Ptr->frontier.field_D0C[0][1])
+ if (gSaveBlock2Ptr->frontier.domeWinStreaks[0][0] >= gSaveBlock2Ptr->frontier.domeWinStreaks[0][1])
{
- unk = gSaveBlock2Ptr->frontier.field_D0C[0][0];
+ unk = gSaveBlock2Ptr->frontier.domeWinStreaks[0][0];
}
else
{
- unk = gSaveBlock2Ptr->frontier.field_D0C[0][1];
+ unk = gSaveBlock2Ptr->frontier.domeWinStreaks[0][1];
}
break;
case 5:
- if (gSaveBlock2Ptr->frontier.field_DE2[0][0] >= gSaveBlock2Ptr->frontier.field_DE2[0][1])
+ if (gSaveBlock2Ptr->frontier.factoryWinStreaks[0][0] >= gSaveBlock2Ptr->frontier.factoryWinStreaks[0][1])
{
- unk = gSaveBlock2Ptr->frontier.field_DE2[0][0];
+ unk = gSaveBlock2Ptr->frontier.factoryWinStreaks[0][0];
}
else
{
- unk = gSaveBlock2Ptr->frontier.field_DE2[0][1];
+ unk = gSaveBlock2Ptr->frontier.factoryWinStreaks[0][1];
}
break;
case 6:
- if (gSaveBlock2Ptr->frontier.field_DC8[0][0] >= gSaveBlock2Ptr->frontier.field_DC8[0][1])
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[0][0] >= gSaveBlock2Ptr->frontier.palaceWinStreaks[0][1])
{
- unk = gSaveBlock2Ptr->frontier.field_DC8[0][0];
+ unk = gSaveBlock2Ptr->frontier.palaceWinStreaks[0][0];
}
else
{
- unk = gSaveBlock2Ptr->frontier.field_DC8[0][1];
+ unk = gSaveBlock2Ptr->frontier.palaceWinStreaks[0][1];
}
break;
case 7:
- if (gSaveBlock2Ptr->frontier.field_DDA[0] >= gSaveBlock2Ptr->frontier.field_DDA[1])
+ if (gSaveBlock2Ptr->frontier.arenaWinStreaks[0] >= gSaveBlock2Ptr->frontier.arenaWinStreaks[1])
{
- unk = gSaveBlock2Ptr->frontier.field_DDA[0];
+ unk = gSaveBlock2Ptr->frontier.arenaWinStreaks[0];
}
else
{
- unk = gSaveBlock2Ptr->frontier.field_DDA[1];
+ unk = gSaveBlock2Ptr->frontier.arenaWinStreaks[1];
}
break;
case 8:
- if (gSaveBlock2Ptr->frontier.field_E04[0] >= gSaveBlock2Ptr->frontier.field_E04[1])
+ if (gSaveBlock2Ptr->frontier.pikeWinStreaks[0] >= gSaveBlock2Ptr->frontier.pikeWinStreaks[1])
{
- unk = gSaveBlock2Ptr->frontier.field_E04[0];
+ unk = gSaveBlock2Ptr->frontier.pikeWinStreaks[0];
}
else
{
- unk = gSaveBlock2Ptr->frontier.field_E04[1];
+ unk = gSaveBlock2Ptr->frontier.pikeWinStreaks[1];
}
break;
case 9:
- if (gSaveBlock2Ptr->frontier.field_E1A[0] >= gSaveBlock2Ptr->frontier.field_E1A[1])
+ if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[0] >= gSaveBlock2Ptr->frontier.pyramidWinStreaks[1])
{
- unk = gSaveBlock2Ptr->frontier.field_E1A[0];
+ unk = gSaveBlock2Ptr->frontier.pyramidWinStreaks[0];
}
else
{
- unk = gSaveBlock2Ptr->frontier.field_E1A[1];
+ unk = gSaveBlock2Ptr->frontier.pyramidWinStreaks[1];
}
break;
}
@@ -2244,7 +2110,7 @@ void sub_813A080(void)
u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- if (battleMode == 2 && !FlagGet(FLAG_0x152))
+ if (battleMode == FRONTIER_MODE_MULTIS && !FlagGet(FLAG_0x152))
{
gSpecialVar_0x8005 = 5;
gSpecialVar_0x8006 = 4;
@@ -2253,7 +2119,7 @@ void sub_813A080(void)
for (i = 0; i < 9; i++)
{
- if (gUnknown_085B2CDC[i] > gSaveBlock2Ptr->frontier.field_CE0[battleMode][lvlMode])
+ if (gUnknown_085B2CDC[i] > gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode])
{
gSpecialVar_0x8005 = 4;
gSpecialVar_0x8006 = i + 5;
@@ -2733,8 +2599,6 @@ static void sub_813A46C(s32 itemIndex, bool8 onInit, struct ListMenu *list)
}
}
-// stupid r5<->r6 swap
-#ifdef NONMATCHING
static void sub_813A4EC(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -2752,7 +2616,11 @@ static void sub_813A4EC(u8 taskId)
default:
gSpecialVar_Result = itemId;
PlaySE(SE_SELECT);
- if (!task->data[6] || itemId == task->data[1] - 1)
+ if (!task->data[6])
+ {
+ sub_813A570(taskId);
+ }
+ else if (itemId == task->data[1] - 1)
{
sub_813A570(taskId);
}
@@ -2765,72 +2633,6 @@ static void sub_813A4EC(u8 taskId)
break;
}
}
-#else
-NAKED
-static void sub_813A4EC(u8 taskId)
-{
- asm_unified("push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- ldr r1, =gTasks\n\
- adds r6, r0, r1\n\
- ldrh r0, [r6, 0x24]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl ListMenuHandleInputGetItemId\n\
- adds r4, r0, 0\n\
- movs r0, 0x2\n\
- negs r0, r0\n\
- cmp r4, r0\n\
- beq _0813A51C\n\
- adds r0, 0x1\n\
- cmp r4, r0\n\
- bne _0813A530\n\
- b _0813A566\n\
- .pool\n\
-_0813A51C:\n\
- ldr r1, =gSpecialVar_Result\n\
- movs r0, 0x7F\n\
- strh r0, [r1]\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- b _0813A54C\n\
- .pool\n\
-_0813A530:\n\
- ldr r0, =gSpecialVar_Result\n\
- strh r4, [r0]\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r1, 0x14\n\
- ldrsh r0, [r6, r1]\n\
- cmp r0, 0\n\
- beq _0813A54C\n\
- movs r1, 0xA\n\
- ldrsh r0, [r6, r1]\n\
- subs r0, 0x1\n\
- cmp r4, r0\n\
- bne _0813A558\n\
-_0813A54C:\n\
- adds r0, r5, 0\n\
- bl sub_813A570\n\
- b _0813A566\n\
- .pool\n\
-_0813A558:\n\
- adds r0, r5, 0\n\
- bl sub_813A738\n\
- ldr r0, =sub_813A600\n\
- str r0, [r6]\n\
- bl EnableBothScriptContexts\n\
-_0813A566:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .pool");
-}
-#endif // NONMATCHING
static void sub_813A570(u8 taskId)
{
@@ -3061,7 +2863,7 @@ void sub_813A8FC(void)
{
u8 string[32];
u32 x;
- StringCopy(ConvertIntToDecimalStringN(string, gSaveBlock2Ptr->frontier.frontierBattlePoints, STR_CONV_MODE_RIGHT_ALIGN, 4), gText_BP);
+ StringCopy(ConvertIntToDecimalStringN(string, gSaveBlock2Ptr->frontier.battlePoints, STR_CONV_MODE_RIGHT_ALIGN, 4), gText_BP);
x = GetStringRightAlignXOffset(1, string, 48);
AddTextPrinterParameterized(gUnknown_0203AB6D, 1, string, x, 1, 0, NULL);
}
@@ -3069,7 +2871,7 @@ void sub_813A8FC(void)
void sub_813A958(void)
{
static const struct WindowTemplate gUnknown_085B311C = {
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 6,
@@ -3092,37 +2894,37 @@ void sub_813A988(void)
void sub_813A9A4(void)
{
- if (gSaveBlock2Ptr->frontier.frontierBattlePoints < gSpecialVar_0x8004)
+ if (gSaveBlock2Ptr->frontier.battlePoints < gSpecialVar_0x8004)
{
- gSaveBlock2Ptr->frontier.frontierBattlePoints = 0;
+ gSaveBlock2Ptr->frontier.battlePoints = 0;
}
else
{
- gSaveBlock2Ptr->frontier.frontierBattlePoints -= gSpecialVar_0x8004;
+ gSaveBlock2Ptr->frontier.battlePoints -= gSpecialVar_0x8004;
}
}
void sub_813A9D0(void)
{
- if (gSaveBlock2Ptr->frontier.frontierBattlePoints + gSpecialVar_0x8004 > 0x270F)
+ if (gSaveBlock2Ptr->frontier.battlePoints + gSpecialVar_0x8004 > 9999)
{
- gSaveBlock2Ptr->frontier.frontierBattlePoints = 0x270f;
+ gSaveBlock2Ptr->frontier.battlePoints = 9999;
}
else
{
- gSaveBlock2Ptr->frontier.frontierBattlePoints = gSaveBlock2Ptr->frontier.frontierBattlePoints + gSpecialVar_0x8004;
+ gSaveBlock2Ptr->frontier.battlePoints = gSaveBlock2Ptr->frontier.battlePoints + gSpecialVar_0x8004;
}
}
u16 sub_813AA04(void)
{
- return gSaveBlock2Ptr->frontier.frontierBattlePoints;
+ return gSaveBlock2Ptr->frontier.battlePoints;
}
void sub_813AA18(void)
{
static const struct WindowTemplate gUnknown_085B3124 = {
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 9,
.width = 4,
@@ -3284,7 +3086,7 @@ void sub_813AC7C(void)
static void sub_813ACE8(u8 a0, u16 a1)
{
static const struct WindowTemplate gUnknown_085B3220 = {
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 7,
.width = 12,
@@ -4081,7 +3883,7 @@ void sub_813BA60(void)
FlagClear(FLAG_HIDE_FANCLUB_BOY);
FlagClear(FLAG_HIDE_FANCLUB_LITTLE_BOY);
FlagClear(FLAG_HIDE_FANCLUB_LADY);
- FlagClear(FLAG_0x2DA);
+ FlagClear(FLAG_HIDE_LILYCOVE_FAN_CLUB_INTERVIEWER);
VarSet(VAR_LILYCOVE_FAN_CLUB_STATE, 1);
}
}
diff --git a/src/field_tasks.c b/src/field_tasks.c
index 5fb23f536..7a7f49120 100644
--- a/src/field_tasks.c
+++ b/src/field_tasks.c
@@ -1,24 +1,24 @@
#include "global.h"
-#include "task.h"
-#include "main.h"
-#include "constants/vars.h"
#include "bike.h"
-#include "item.h"
-#include "constants/items.h"
+#include "clock.h"
#include "event_data.h"
+#include "field_camera.h"
+#include "field_effect_helpers.h"
+#include "field_player_avatar.h"
+#include "field_special_scene.h"
+#include "field_tasks.h"
+#include "fieldmap.h"
+#include "item.h"
+#include "main.h"
+#include "metatile_behavior.h"
#include "overworld.h"
-#include "clock.h"
#include "script.h"
-#include "field_special_scene.h"
-#include "field_effect_helpers.h"
#include "secret_base.h"
-#include "metatile_behavior.h"
-#include "fieldmap.h"
-#include "field_player_avatar.h"
-#include "field_camera.h"
-#include "constants/songs.h"
#include "sound.h"
-#include "field_tasks.h"
+#include "task.h"
+#include "constants/items.h"
+#include "constants/songs.h"
+#include "constants/vars.h"
struct MetatileOffset
{
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 96f5d2b85..0d8a706b1 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -1,18 +1,20 @@
#include "global.h"
-#include "overworld.h"
#include "bg.h"
-#include "battle_frontier_2.h"
-#include "constants/rgb.h"
#include "fieldmap.h"
#include "fldeff_80F9BCC.h"
#include "fldeff_cut.h"
#include "fldeff_groundshake.h"
+#include "frontier_util.h"
#include "menu.h"
+#include "overworld.h"
#include "palette.h"
#include "pokenav.h"
#include "script.h"
#include "secret_base.h"
#include "tv.h"
+#include "constants/rgb.h"
+
+extern void sub_81AA078(u16*, u8);
struct ConnectionFlags
{
diff --git a/src/fight.c b/src/fight.c
new file mode 100644
index 000000000..c9000fae4
--- /dev/null
+++ b/src/fight.c
@@ -0,0 +1,1035 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "gpu_regs.h"
+#include "random.h"
+#include "task.h"
+#include "trig.h"
+#include "constants/rgb.h"
+
+void unc_080B08A0(struct Sprite *);
+void sub_810CE68(struct Sprite *);
+void sub_810CEB4(struct Sprite *);
+void AnimBasicFistOrFoot(struct Sprite *);
+void sub_810CF30(struct Sprite *);
+void sub_810D10C(struct Sprite *);
+void sub_810D1B4(struct Sprite *);
+void AnimSpinningKickOrPunch(struct Sprite *);
+void AnimStompFoot(struct Sprite *);
+void sub_810D37C(struct Sprite *);
+void sub_810D40C(struct Sprite *);
+void sub_810D4F4(struct Sprite *);
+void sub_810D608(struct Sprite *);
+void sub_810D714(struct Sprite *);
+void sub_810D874(struct Sprite *);
+void sub_810D984(struct Sprite *);
+void sub_810DA10(struct Sprite *);
+void sub_810DA7C(struct Sprite *);
+static void sub_810D0B8(struct Sprite *);
+static void sub_810D164(struct Sprite *);
+static void sub_810D240(struct Sprite *);
+static void AnimSpinningKickOrPunchFinish(struct Sprite *);
+static void AnimStompFootStep(struct Sprite *);
+static void AnimStompFootEnd(struct Sprite *);
+static void sub_810D47C(struct Sprite *);
+static void sub_810D5DC(struct Sprite *);
+static void sub_810D6A8(struct Sprite *);
+static void sub_810D770(struct Sprite *);
+static void sub_810D830(struct Sprite *);
+
+extern struct SpriteTemplate gBasicHitSplatSpriteTemplate;
+
+const struct SpriteTemplate gUnknown_08595E14 =
+{
+ .tileTag = ANIM_TAG_HUMANOID_FOOT,
+ .paletteTag = ANIM_TAG_HUMANOID_FOOT,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = unc_080B08A0,
+};
+
+const union AnimCmd gUnknown_08595E2C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595E34[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595E3C[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595E44[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595E4C[] =
+{
+ ANIMCMD_FRAME(48, 1, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08595E54[] =
+{
+ gUnknown_08595E2C,
+};
+
+const union AnimCmd *const gUnknown_08595E58[] =
+{
+ gUnknown_08595E34,
+ gUnknown_08595E3C,
+};
+
+const union AnimCmd *const gUnknown_08595E60[] =
+{
+ gUnknown_08595E44,
+ gUnknown_08595E4C,
+};
+
+const struct SpriteTemplate gUnknown_08595E68 =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595E54,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810CE68,
+};
+
+const struct SpriteTemplate gUnknown_08595E80 =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595E54,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810CEB4,
+};
+
+const struct SpriteTemplate gFistFootSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595E54,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimBasicFistOrFoot,
+};
+
+const struct SpriteTemplate gUnknown_08595EB0 =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595E54,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810CF30,
+};
+
+const struct SpriteTemplate gUnknown_08595EC8 =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595E60,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810D10C,
+};
+
+const struct SpriteTemplate gUnknown_08595EE0 =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595E58,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810D1B4,
+};
+
+const union AffineAnimCmd gUnknown_08595EF8[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 20, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08595F10[] =
+{
+ gUnknown_08595EF8,
+};
+
+const struct SpriteTemplate gUnknown_08595F14 =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_085249D4,
+ .anims = gUnknown_08595E54,
+ .images = NULL,
+ .affineAnims = gUnknown_08595F10,
+ .callback = AnimSpinningKickOrPunch,
+};
+
+const union AffineAnimCmd gUnknown_08595F2C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFC, 20, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08595F44[] =
+{
+ gUnknown_08595F2C,
+};
+
+const struct SpriteTemplate gMegaPunchKickSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_085249D4,
+ .anims = gUnknown_08595E54,
+ .images = NULL,
+ .affineAnims = gUnknown_08595F44,
+ .callback = AnimSpinningKickOrPunch,
+};
+
+const struct SpriteTemplate gUnknown_08595F60 =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595E58,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimStompFoot,
+};
+
+const struct SpriteTemplate gUnknown_08595F78 =
+{
+ .tileTag = ANIM_TAG_DUCK,
+ .paletteTag = ANIM_TAG_DUCK,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810D37C,
+};
+
+const struct SpriteTemplate gUnknown_08595F90 =
+{
+ .tileTag = ANIM_TAG_BLUE_LIGHT_WALL,
+ .paletteTag = ANIM_TAG_BLUE_LIGHT_WALL,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810D40C,
+};
+
+const struct SpriteTemplate gUnknown_08595FA8 =
+{
+ .tileTag = ANIM_TAG_TORN_METAL,
+ .paletteTag = ANIM_TAG_TORN_METAL,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810D4F4,
+};
+
+const union AffineAnimCmd gUnknown_08595FC0[] =
+{
+ 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 gUnknown_08595FE8[] =
+{
+ gUnknown_08595FC0,
+};
+
+const struct SpriteTemplate gUnknown_08595FEC =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08595FE8,
+ .callback = sub_810D608,
+};
+
+const struct SpriteTemplate gUnknown_08596004 =
+{
+ .tileTag = ANIM_TAG_FLAT_ROCK,
+ .paletteTag = ANIM_TAG_FLAT_ROCK,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810D714,
+};
+
+const struct SpriteTemplate gUnknown_0859601C =
+{
+ .tileTag = ANIM_TAG_METEOR,
+ .paletteTag = ANIM_TAG_METEOR,
+ .oam = &gUnknown_0852491C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810D874,
+};
+
+const struct SpriteTemplate gUnknown_08596034 =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595E54,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810D984,
+};
+
+const union AnimCmd gUnknown_0859604C[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859605C[] =
+{
+ ANIMCMD_FRAME(0, 4, .vFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .vFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859606C[] =
+{
+ ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_0859607C[] =
+{
+ gUnknown_0859604C,
+ gUnknown_0859605C,
+ gUnknown_0859606C,
+};
+
+const struct SpriteTemplate gUnknown_08596088 =
+{
+ .tileTag = ANIM_TAG_PURPLE_SCRATCH,
+ .paletteTag = ANIM_TAG_PURPLE_SCRATCH,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_0859607C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810DA10,
+};
+
+const union AnimCmd gUnknown_085960A0[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(64, 6),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085960AC[] =
+{
+ ANIMCMD_FRAME(0, 6, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 6, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085960B8[] =
+{
+ ANIMCMD_FRAME(0, 6, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 6, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085960C4[] =
+{
+ gUnknown_085960A0,
+ gUnknown_085960AC,
+ gUnknown_085960B8,
+};
+
+const struct SpriteTemplate gUnknown_085960D0 =
+{
+ .tileTag = ANIM_TAG_PURPLE_SWIPE,
+ .paletteTag = ANIM_TAG_PURPLE_SWIPE,
+ .oam = &gUnknown_0852491C,
+ .anims = gUnknown_085960C4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810DA10,
+};
+
+const union AffineAnimCmd gUnknown_085960E8[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFE0, 0xFFE0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08596100[] =
+{
+ gUnknown_085960E8,
+};
+
+const struct SpriteTemplate gUnknown_08596104 =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_085249D4,
+ .anims = gUnknown_08595E54,
+ .images = NULL,
+ .affineAnims = gUnknown_08596100,
+ .callback = sub_810DA7C,
+};
+
+void unc_080B08A0(struct Sprite *sprite)
+{
+ sub_80A6864(sprite, gBattleAnimArgs[0]);
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = 15;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_810CE68(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[7] == 1 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+
+ StartSpriteAnim(sprite, gBattleAnimArgs[6]);
+ gBattleAnimArgs[6] = 0;
+ sub_80A7938(sprite);
+}
+
+void sub_810CEB4(struct Sprite *sprite)
+{
+ if (IsContest())
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+
+ sub_810CE68(sprite);
+}
+
+// Displays a basic fist or foot sprite for a given duration.
+// Used by many fighting moves (and elemental "punch" moves).
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: duration
+// arg 3: ? (todo: related to initial pixel offsets)
+// arg 4: anim num
+void AnimBasicFistOrFoot(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gBattleAnimArgs[4]);
+
+ if (gBattleAnimArgs[3] == 0)
+ InitAnimSpritePos(sprite, 1);
+ else
+ sub_80A6980(sprite, TRUE);
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_810CF30(struct Sprite *sprite)
+{
+ u8 battler;
+ s16 xMod, yMod;
+ s16 x, y;
+
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ if (gBattleAnimArgs[2] < 0)
+ gBattleAnimArgs[2] = Random2() % 5;
+
+ StartSpriteAnim(sprite, gBattleAnimArgs[2]);
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
+
+ xMod = sub_80A861C(battler, 1) / 2;
+ yMod = sub_80A861C(battler, 0) / 4;
+
+ x = Random2() % xMod;
+ y = Random2() % yMod;
+
+ if (Random2() & 1)
+ x *= -1;
+ if (Random2() & 1)
+ y *= -1;
+
+ if ((gBattlerPositions[battler] & BIT_SIDE) == B_SIDE_PLAYER)
+ y += 0xFFF0;
+
+ sprite->pos1.x += x;
+ sprite->pos1.y += y;
+
+ sprite->data[0] = gBattleAnimArgs[1];
+ sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
+ if (sprite->data[7] != 64)
+ {
+ StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0);
+ gSprites[sprite->data[7]].callback = SpriteCallbackDummy;
+ }
+
+ sprite->callback = sub_810D0B8;
+}
+
+static void sub_810D0B8(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ if (sprite->data[7] != 64)
+ {
+ FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum);
+ DestroySprite(&gSprites[sprite->data[7]]);
+ }
+
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ sprite->data[0]--;
+ }
+}
+
+void sub_810D10C(struct Sprite *sprite)
+{
+ sub_80A6980(sprite, TRUE);
+ sprite->data[0] = 30;
+
+ if (gBattleAnimArgs[2] == 0)
+ {
+ sprite->data[2] = sprite->pos1.x - 20;
+ }
+ else
+ {
+ sprite->data[2] = sprite->pos1.x + 20;
+ sprite->hFlip = 1;
+ }
+
+ sprite->data[4] = sprite->pos1.y - 20;
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, sub_810D164);
+}
+
+static void sub_810D164(struct Sprite *sprite)
+{
+ if (++sprite->data[5] == 11)
+ {
+ sprite->data[2] = sprite->pos1.x - sprite->pos2.x;
+ sprite->data[4] = sprite->pos1.y - sprite->pos2.y;
+ sprite->data[0] = 8;
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ }
+}
+
+void sub_810D1B4(struct Sprite *sprite)
+{
+ if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget && GetBattlerPosition(gBattleAnimTarget) < B_POSITION_PLAYER_RIGHT)
+ gBattleAnimArgs[0] *= -1;
+
+ sub_80A6980(sprite, TRUE);
+
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sprite->pos1.y;
+
+ InitAnimLinearTranslation(sprite);
+
+ sprite->data[5] = gBattleAnimArgs[5];
+ sprite->data[6] = gBattleAnimArgs[4];
+ sprite->data[7] = 0;
+
+ sprite->callback = sub_810D240;
+}
+
+static void sub_810D240(struct Sprite *sprite)
+{
+ if (!TranslateAnimLinear(sprite))
+ {
+ sprite->pos2.y += Sin(sprite->data[7] >> 8, sprite->data[5]);
+ sprite->data[7] += sprite->data[6];
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+// Animates the spinning, shrinking kick or punch, which then
+// reappears at full size. Used by moves such as MOVE_MEGA_PUNCH and MOVE_MEGA_KICK.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: anim num
+// arg 3: spin duration
+void AnimSpinningKickOrPunch(struct Sprite *sprite)
+{
+ sub_80A6980(sprite, TRUE);
+ StartSpriteAnim(sprite, gBattleAnimArgs[2]);
+ sprite->data[0] = gBattleAnimArgs[3];
+
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, AnimSpinningKickOrPunchFinish);
+}
+
+static void AnimSpinningKickOrPunchFinish(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, 0);
+ sprite->affineAnimPaused = 1;
+ sprite->data[0] = 20;
+
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// Animates MOVE_STOMP's foot that slides downward.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: initial wait duration
+void AnimStompFoot(struct Sprite *sprite)
+{
+ sub_80A6980(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[2];
+
+ sprite->callback = AnimStompFootStep;
+}
+
+static void AnimStompFootStep(struct Sprite *sprite)
+{
+ if (--sprite->data[0] == -1)
+ {
+ sprite->data[0] = 6;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, AnimStompFootEnd);
+ }
+}
+
+static void AnimStompFootEnd(struct Sprite *sprite)
+{
+ sprite->data[0] = 15;
+
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_810D37C(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sub_80A6980(sprite, TRUE);
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[3];
+ sprite->data[0]++;
+ }
+ else
+ {
+ sprite->data[4] += sprite->data[1];
+ sprite->pos2.x = sprite->data[4] >> 8;
+ sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
+ sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
+
+ if (sprite->data[3] > 100)
+ sprite->invisible = sprite->data[3] % 2;
+
+ if (sprite->data[3] > 120)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_810D40C(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ }
+
+ sprite->pos1.x += gBattleAnimArgs[1];
+ sprite->pos1.y += gBattleAnimArgs[2];
+
+ sprite->data[0] = 0;
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[2] = gBattleAnimArgs[4];
+ sprite->data[3] = 0;
+ sprite->callback = sub_810D47C;
+}
+
+static void sub_810D47C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (--sprite->data[1] == 0)
+ {
+ if (sprite->data[2] == 0)
+ DestroyAnimSprite(sprite);
+ else
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ sprite->data[3]++;
+ if (sprite->data[3] & 1)
+ sprite->pos2.x = 2;
+ else
+ sprite->pos2.x = -2;
+ }
+
+ if (--sprite->data[2] == 0)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_810D4F4(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3];
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3];
+ }
+
+ sprite->oam.tileNum += gBattleAnimArgs[1] * 16;
+ sprite->data[0] = 0;
+
+ switch (gBattleAnimArgs[1])
+ {
+ case 0:
+ sprite->data[6] = -3;
+ sprite->data[7] = -3;
+ break;
+ case 1:
+ sprite->data[6] = 3;
+ sprite->data[7] = -3;
+ break;
+ case 2:
+ sprite->data[6] = -3;
+ sprite->data[7] = 3;
+ break;
+ case 3:
+ sprite->data[6] = 3;
+ sprite->data[7] = 3;
+ break;
+ default:
+ DestroyAnimSprite(sprite);
+ return;
+ }
+
+ sprite->callback = sub_810D5DC;
+}
+
+static void sub_810D5DC(struct Sprite *sprite)
+{
+ sprite->pos1.x += sprite->data[6];
+ sprite->pos1.y += sprite->data[7];
+
+ if (++sprite->data[0] > 40)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810D608(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
+ sprite->oam.priority = sub_80A8328(gBattleAnimAttacker);
+ sprite->data[7] = gBattleAnimTarget;
+ }
+ else
+ {
+ sprite->oam.priority = sub_80A8328(gBattleAnimTarget);
+ sprite->data[7] = gBattleAnimAttacker;
+ }
+
+ sprite->data[0] = 0;
+ sprite->data[1] = 12;
+ sprite->data[2] = 8;
+ sprite->callback = sub_810D6A8;
+}
+
+static void sub_810D6A8(struct Sprite *sprite)
+{
+ if (++sprite->data[0] == 180)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+
+ sprite->data[0] = 16;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3);
+
+ InitAnimLinearTranslation(sprite);
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80A6F98;
+ }
+}
+
+void sub_810D714(struct Sprite *sprite)
+{
+ sprite->pos1.x = gBattleAnimArgs[0];
+ sprite->pos1.y = 120;
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sub_80A8048(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8));
+
+ sprite->data[6] = gBattleAnimArgs[1];
+ sprite->oam.tileNum += gBattleAnimArgs[2] * 4;
+
+ sprite->callback = sub_810D770;
+}
+
+static void sub_810D770(struct Sprite *sprite)
+{
+ void *var0;
+
+ if (sprite->data[0] != 0)
+ {
+ var0 = sub_80A8050(sprite->data[4], sprite->data[5]);
+ var0 -= sprite->data[6];
+ sub_80A8048(&sprite->data[4], &sprite->data[5], var0);
+
+ var0 = (void *)(((intptr_t)var0) >> 8);
+ sprite->pos1.y = (intptr_t)var0;
+ if (sprite->pos1.y < -8)
+ DestroyAnimSprite(sprite);
+ else
+ sprite->data[0]--;
+ }
+ else
+ {
+ s16 pos0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ s16 pos1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ s16 pos2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ s16 pos3 = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+
+ sprite->data[0] = pos2 - pos0;
+ sprite->data[1] = pos3 - pos1;
+ sprite->data[2] = sprite->pos1.x << 4;
+ sprite->data[3] = sprite->pos1.y << 4;
+
+ sprite->callback = sub_810D830;
+ }
+}
+
+static void sub_810D830(struct Sprite *sprite)
+{
+ u16 edgeX;
+
+ sprite->data[2] += sprite->data[0];
+ sprite->data[3] += sprite->data[1];
+ sprite->pos1.x = sprite->data[2] >> 4;
+ sprite->pos1.y = sprite->data[3] >> 4;
+
+ edgeX = sprite->pos1.x + 8;
+ if (edgeX > 256 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810D874(struct Sprite *sprite)
+{
+ u8 battler;
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
+ battler = gBattleAnimTarget;
+ sprite->oam.priority = sub_80A8328(gBattleAnimAttacker);
+ }
+ else
+ {
+ battler = gBattleAnimAttacker;
+ sprite->oam.priority = sub_80A8328(gBattleAnimTarget);
+ }
+
+ if (IsContest())
+ sprite->oam.matrixNum |= 0x8;
+ else if (GetBattlerSide(battler) == B_SIDE_PLAYER)
+ sprite->oam.matrixNum |= 0x18;
+
+ sprite->data[0] = 16;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(battler, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(battler, 3);
+
+ InitAnimLinearTranslation(sprite);
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback = sub_80A6F98;
+}
+
+static void sub_810D960(struct Sprite *sprite)
+{
+ if (sprite->data[0] == sprite->data[4])
+ DestroyAnimSprite(sprite);
+
+ sprite->data[0]++;
+}
+
+void sub_810D984(struct Sprite *sprite)
+{
+ u8 turn;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[2] = gBattleAnimArgs[0];
+ sprite->data[3] = gBattleAnimArgs[1];
+ sprite->data[4] = gBattleAnimArgs[2];
+
+ turn = gAnimMoveTurn;
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ turn++;
+
+ if (turn & 1)
+ {
+ sprite->data[2] = -sprite->data[2];
+ sprite->data[1]++;
+ }
+
+ StartSpriteAnim(sprite, sprite->data[1]);
+ sprite->pos2.x = sprite->data[2];
+ sprite->pos2.y = sprite->data[3];
+ sprite->callback = sub_810D960;
+}
+
+void sub_810DA10(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[2] == 0)
+ InitAnimSpritePos(sprite, 0);
+ else
+ sub_80A6980(sprite, FALSE);
+
+ if (IsContest())
+ {
+ StartSpriteAnim(sprite, 2);
+ }
+ else if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ StartSpriteAnim(sprite, 1);
+ }
+
+ sprite->callback = sub_80A67D8;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_810DA7C(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ sprite->data[1] = (sprite->data[1] + 40) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[1], 2);
+ if (++sprite->data[0] > 40)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_810DABC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_80A6DAC(0);
+ task->data[8] = gBattleAnimArgs[0];
+ task->data[0]++;
+ break;
+ case 1:
+ if (--task->data[8] == -1)
+ task->data[0]++;
+ break;
+ case 2:
+ default:
+ task->data[9] += 1280;
+ break;
+ }
+
+ task->data[10] += 2816;
+
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ gBattle_BG3_X += task->data[9] >> 8;
+ else
+ gBattle_BG3_X -= task->data[9] >> 8;
+
+ gBattle_BG3_Y += task->data[10] >> 8;
+ task->data[9] &= 0xFF;
+ task->data[10] &= 0xFF;
+
+ if (gBattleAnimArgs[7] == -1)
+ {
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ sub_80A6DAC(1);
+ DestroyAnimVisualTask(taskId);
+ }
+}
diff --git a/src/fire.c b/src/fire.c
new file mode 100644
index 000000000..02c0db81c
--- /dev/null
+++ b/src/fire.c
@@ -0,0 +1,438 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_8108EC8(struct Sprite *);
+extern void sub_8108F08(struct Sprite *);
+extern void sub_8108FBC(struct Sprite *);
+extern void sub_8108F4C(struct Sprite *);
+extern void sub_8109064(struct Sprite *);
+extern void sub_810916C(struct Sprite *);
+extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *);
+extern void sub_8109198(struct Sprite *);
+extern void sub_8109200(struct Sprite *);
+extern void sub_810921C(struct Sprite *);
+extern void sub_8109364(struct Sprite *);
+extern void sub_81093A4(struct Sprite *);
+extern void sub_80A8EE4(struct Sprite *);
+extern void sub_81098EC(struct Sprite *);
+extern void sub_8109A10(struct Sprite *);
+extern void sub_8109AFC(struct Sprite *);
+extern void sub_8109CB0(struct Sprite *);
+
+const union AnimCmd gUnknown_08595340[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_08595350[] =
+{
+ 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 gUnknown_08595360[] =
+{
+ gUnknown_08595340,
+ gUnknown_08595350,
+};
+
+const struct SpriteTemplate gUnknown_08595368 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595360,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8108EC8,
+};
+
+const struct SpriteTemplate gUnknown_08595380 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595360,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8108F08,
+};
+
+const union AnimCmd gUnknown_08595398[] =
+{
+ 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 gUnknown_085953BC[] =
+{
+ gUnknown_08595398,
+};
+
+const union AnimCmd gUnknown_085953C0[] =
+{
+ 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 gUnknown_085953D8[] =
+{
+ gUnknown_085953C0,
+};
+
+const union AffineAnimCmd gUnknown_085953DC[] =
+{
+ AFFINEANIMCMD_FRAME(0x32, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x20, 0x0, 0, 7),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085953F4[] =
+{
+ gUnknown_085953DC,
+};
+
+const struct SpriteTemplate gUnknown_085953F8 =
+{
+ .tileTag = ANIM_TAG_FIRE,
+ .paletteTag = ANIM_TAG_FIRE,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085953BC,
+ .images = NULL,
+ .affineAnims = gUnknown_085953F4,
+ .callback = sub_8108FBC,
+};
+
+const struct SpriteTemplate gUnknown_08595410 =
+{
+ .tileTag = ANIM_TAG_FIRE,
+ .paletteTag = ANIM_TAG_FIRE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085953BC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8108FBC,
+};
+
+const struct SpriteTemplate gUnknown_08595428 =
+{
+ .tileTag = ANIM_TAG_FIRE_PLUME,
+ .paletteTag = ANIM_TAG_FIRE_PLUME,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085953D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8108F4C,
+};
+
+const struct SpriteTemplate gUnknown_08595440 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085953D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8108F4C,
+};
+
+const union AnimCmd gUnknown_08595458[] =
+{
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595468[] =
+{
+ gUnknown_08595458,
+};
+
+const struct SpriteTemplate gUnknown_0859546C =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595468,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109064,
+};
+
+const union AffineAnimCmd gUnknown_08595484[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
+ AFFINEANIMCMD_FRAME(0x2, 0x2, 10, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_0859549C[] =
+{
+ gUnknown_08595484,
+};
+
+const struct SpriteTemplate gUnknown_085954A0 =
+{
+ .tileTag = ANIM_TAG_SUNLIGHT,
+ .paletteTag = ANIM_TAG_SUNLIGHT,
+ .oam = &gUnknown_08524A94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859549C,
+ .callback = sub_810916C,
+};
+
+const union AnimCmd gUnknown_085954B8[] =
+{
+ 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 gUnknown_085954D0[] =
+{
+ gUnknown_085954B8,
+};
+
+const struct SpriteTemplate gEmberSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gEmberFlareSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085954D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109198,
+};
+
+const struct SpriteTemplate gUnknown_08595504 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085954D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109200,
+};
+
+const struct SpriteTemplate gUnknown_0859551C =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085954D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810921C,
+};
+
+const union AnimCmd gUnknown_08595534[] =
+{
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595540[] =
+{
+ gUnknown_08595534,
+};
+
+const union AffineAnimCmd gUnknown_08595544[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595554[] =
+{
+ AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08595564[] =
+{
+ gUnknown_08595544,
+ gUnknown_08595554,
+};
+
+const struct SpriteTemplate gUnknown_0859556C =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595540,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109364,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8595584 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085954D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81093A4,
+};
+
+const struct SpriteTemplate gUnknown_0859559C =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085954D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8EE4,
+};
+
+const struct SpriteTemplate gUnknown_085955B4 =
+{
+ .tileTag = ANIM_TAG_WARM_ROCK,
+ .paletteTag = ANIM_TAG_WARM_ROCK,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81098EC,
+};
+
+// gHeatedRockCoords
+const s16 gUnknown_085955CC[][2] =
+{
+ {-2, -5},
+ {-1, -1},
+ { 3, -6},
+ { 4, -2},
+ { 2, -8},
+ {-5, -5},
+ { 4, -7},
+};
+
+const struct SpriteTemplate gUnknown_085955E8 =
+{
+ .tileTag = ANIM_TAG_WARM_ROCK,
+ .paletteTag = ANIM_TAG_WARM_ROCK,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109A10,
+};
+
+const union AnimCmd gUnknown_08595600[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_08595614[] =
+{
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859561C[] =
+{
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595624[] =
+{
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_0859562C[] =
+{
+ gUnknown_08595600,
+ gUnknown_08595614,
+ gUnknown_0859561C,
+ gUnknown_08595624,
+};
+
+const struct SpriteTemplate gUnknown_0859563C =
+{
+ .tileTag = ANIM_TAG_WISP_ORB,
+ .paletteTag = ANIM_TAG_WISP_ORB,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_0859562C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109AFC,
+};
+
+const union AnimCmd gUnknown_08595654[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595668[] =
+{
+ gUnknown_08595654,
+};
+
+const struct SpriteTemplate gUnknown_0859566C =
+{
+ .tileTag = ANIM_TAG_WISP_FIRE,
+ .paletteTag = ANIM_TAG_WISP_FIRE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595668,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109CB0,
+};
+
+const s8 gUnknown_08595684[16] =
+{
+ -1, -1, 0, 1, 1, 0, 0, -1, -1, 1, 1, 0, 0, -1, 0, 1,
+};
+
+const s8 gUnknown_08595694[16] =
+{
+ -1, 0, 1, 0, -1, 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, 1,
+};
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index 5a9181789..230a95e0b 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -18,6 +18,7 @@
#include "trig.h"
#include "constants/abilities.h"
#include "constants/event_objects.h"
+#include "constants/field_effects.h"
#include "constants/songs.h"
extern void ScriptUnfreezeEventObjects(void);
diff --git a/src/fldeff_escalator.c b/src/fldeff_escalator.c
new file mode 100644
index 000000000..7d3e07123
--- /dev/null
+++ b/src/fldeff_escalator.c
@@ -0,0 +1,132 @@
+#include "global.h"
+#include "field_camera.h"
+#include "field_player_avatar.h"
+#include "fieldmap.h"
+#include "task.h"
+
+static EWRAM_DATA u8 sEscalatorAnim_TaskId = 0;
+
+void sub_80E12E8(u8 taskId, const s16 *list, u16 c)
+{
+ s16 r5 = gTasks[taskId].data[4] - 1;
+ s16 r3 = gTasks[taskId].data[5] - 1;
+ s16 r4 = gTasks[taskId].data[1];
+ s16 y;
+ s16 x;
+
+ if (gTasks[taskId].data[2] == 0)
+ {
+ for (y = 0; y < 3; y++)
+ {
+ for (x = 0; x < 3; x++)
+ {
+ s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y);
+
+ if (list[r4] == metatileId)
+ {
+ if (r4 != 2)
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]);
+ else
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]);
+ }
+ }
+ }
+ }
+ else
+ {
+ for (y = 0; y < 3; y++)
+ {
+ for (x = 0; x < 3; x++)
+ {
+ s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y);
+
+ if (list[2 - r4] == metatileId)
+ {
+ if (r4 != 2)
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]);
+ else
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]);
+ }
+ }
+ }
+ }
+}
+
+static const u16 gUnknown_08589ABA[] = {0x284, 0x282, 0x280};
+static const u16 gUnknown_08589AC0[] = {0x285, 0x283, 0x281};
+static const u16 gUnknown_08589AC6[] = {0x28C, 0x28A, 0x288};
+static const u16 gUnknown_08589ACC[] = {0x28D, 0x28B, 0x289};
+static const u16 gUnknown_08589AD2[] = {0x2A0, 0x2A2, 0x2A4};
+static const u16 gUnknown_08589AD8[] = {0x2A1, 0x2A3, 0x2A5};
+static const u16 gUnknown_08589ADE[] = {0x2A8, 0x2AA, 0x2AC};
+
+void sub_80E1444(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ data[3] = 1;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_80E12E8(taskId, gUnknown_08589ABA, 0);
+ break;
+ case 1:
+ sub_80E12E8(taskId, gUnknown_08589AC0, 0);
+ break;
+ case 2:
+ sub_80E12E8(taskId, gUnknown_08589AC6, 0xC00);
+ break;
+ case 3:
+ sub_80E12E8(taskId, gUnknown_08589ACC, 0);
+ break;
+ case 4:
+ sub_80E12E8(taskId, gUnknown_08589AD2, 0xC00);
+ break;
+ case 5:
+ sub_80E12E8(taskId, gUnknown_08589AD8, 0);
+ break;
+ case 6:
+ sub_80E12E8(taskId, gUnknown_08589ADE, 0);
+ break;
+ }
+
+ data[0] = (data[0] + 1) & 7;
+ if (!data[0])
+ {
+ DrawWholeMapView();
+ data[1] = (data[1] + 1) % 3;
+ data[3] = 0;
+ }
+}
+
+u8 sub_80E150C(u16 var)
+{
+ u8 taskId = CreateTask(sub_80E1444, 0);
+ s16 *data = gTasks[taskId].data;
+
+ PlayerGetDestCoords(&data[4], &data[5]);
+ data[0] = 0;
+ data[1] = 0;
+ data[2] = var;
+ sub_80E1444(taskId);
+ return taskId;
+}
+
+void sub_80E1558(u8 var)
+{
+ sEscalatorAnim_TaskId = sub_80E150C(var);
+}
+
+void sub_80E1570(void)
+{
+ DestroyTask(sEscalatorAnim_TaskId);
+}
+
+bool8 sub_80E1584(void)
+{
+ if (gTasks[sEscalatorAnim_TaskId].data[3] == 0 && gTasks[sEscalatorAnim_TaskId].data[1] == 2)
+ return FALSE;
+ else
+ return TRUE;
+}
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
index 654f02c23..9771232f2 100644
--- a/src/fldeff_flash.c
+++ b/src/fldeff_flash.c
@@ -1,20 +1,19 @@
#include "global.h"
-#include "constants/songs.h"
#include "braille_puzzles.h"
#include "event_data.h"
#include "event_scripts.h"
#include "field_effect.h"
#include "gpu_regs.h"
-#include "gba/io_reg.h"
#include "main.h"
+#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
-#include "overworld.h"
#include "rom6.h"
#include "script.h"
#include "sound.h"
#include "sprite.h"
#include "task.h"
+#include "constants/songs.h"
// structures
struct FlashStruct
@@ -69,8 +68,8 @@ static const u16 gCaveTransitionPalette_Black[] = INCBIN_U16("graphics/misc/cave
static const u16 gUnknown_085B2890[] = INCBIN_U16("graphics/misc/85B2890.gbapal");
static const u16 gUnknown_085B28A0[] = INCBIN_U16("graphics/misc/85B28A0.gbapal");
-static const u16 gCaveTransitionTilemap[] = INCBIN_U16("graphics/misc/cave_transition_map.bin.lz");
-static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transition.4bpp.lz");
+static const u32 gCaveTransitionTilemap[] = INCBIN_U32("graphics/misc/cave_transition_map.bin.lz");
+static const u32 gCaveTransitionTiles[] = INCBIN_U32("graphics/misc/cave_transition.4bpp.lz");
// text
bool8 SetUpFieldMove_Flash(void)
@@ -156,7 +155,7 @@ void c2_change_map(void)
static bool8 sub_8137304(void)
{
u8 i;
- u8 v0 = get_map_light_from_warp0();
+ u8 v0 = GetLastUsedWarpMapType();
u8 v1 = Overworld_GetMapTypeOfSaveblockLocation();
for (i = 0; gUnknown_085B27C8[i].unk0; i++)
diff --git a/src/fldeff_groundshake.c b/src/fldeff_groundshake.c
index 60b078982..e9a46bb86 100644
--- a/src/fldeff_groundshake.c
+++ b/src/fldeff_groundshake.c
@@ -1,10 +1,7 @@
#include "global.h"
-#include "global.fieldmap.h"
-#include "constants/flags.h"
-#include "constants/songs.h"
#include "event_data.h"
-#include "field_camera.h"
#include "event_object_movement.h"
+#include "field_camera.h"
#include "malloc.h"
#include "random.h"
#include "roulette_util.h"
@@ -12,6 +9,8 @@
#include "sound.h"
#include "sprite.h"
#include "task.h"
+#include "constants/flags.h"
+#include "constants/songs.h"
// structures
struct Struct203CF18 {
diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c
index 3b2d4988f..adec780b3 100644
--- a/src/fldeff_softboiled.c
+++ b/src/fldeff_softboiled.c
@@ -2,12 +2,12 @@
#include "menu.h"
#include "party_menu.h"
#include "pokemon.h"
-#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
#include "strings.h"
#include "task.h"
+#include "constants/songs.h"
static void sub_816166C(u8 taskId);
static void sub_81616C0(u8 taskId);
diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c
index 74eb100bc..f796ecea6 100644
--- a/src/fldeff_strength.c
+++ b/src/fldeff_strength.c
@@ -5,8 +5,10 @@
#include "party_menu.h"
#include "rom6.h"
#include "script.h"
+#include "string_util.h"
#include "task.h"
#include "constants/event_objects.h"
+#include "constants/field_effects.h"
// static functions
static void FldEff_UseStrength(void);
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index f592ed532..9951fe581 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
@@ -1,6 +1,4 @@
#include "global.h"
-#include "constants/rgb.h"
-#include "constants/songs.h"
#include "event_data.h"
#include "event_scripts.h"
#include "field_effect.h"
@@ -14,22 +12,25 @@
#include "sprite.h"
#include "task.h"
#include "wild_encounter.h"
+#include "constants/field_effects.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
-void hm2_sweet_scent(void);
-void sub_8159F5C(void);
-void sub_8159FEC(u8 taskId);
-void sub_815A090(u8 taskId);
+static void FieldCallback_SweetScent(void);
+static void StartSweetScentFieldEffect(void);
+static void TrySweetScentEncounter(u8 taskId);
+static void FailSweetScentEncounter(u8 taskId);
void sub_81BE6B8(void);
void sub_81BE72C(void);
bool8 SetUpFieldMove_SweetScent(void)
{
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
- gPostMenuFieldCallback = hm2_sweet_scent;
+ gPostMenuFieldCallback = FieldCallback_SweetScent;
return TRUE;
}
-void hm2_sweet_scent(void)
+static void FieldCallback_SweetScent(void)
{
FieldEffectStart(FLDEFF_SWEET_SCENT);
gFieldEffectArguments[0] = GetCursorSelectionMonId();
@@ -41,12 +42,12 @@ bool8 FldEff_SweetScent(void)
sub_80AC3D0();
taskId = oei_task_add();
- gTasks[taskId].data[8] = (u32)sub_8159F5C >> 16;
- gTasks[taskId].data[9] = (u32)sub_8159F5C;
+ gTasks[taskId].data[8] = (u32)StartSweetScentFieldEffect >> 16;
+ gTasks[taskId].data[9] = (u32)StartSweetScentFieldEffect;
return FALSE;
}
-void sub_8159F5C(void)
+static void StartSweetScentFieldEffect(void)
{
u8 taskId;
@@ -54,12 +55,12 @@ void sub_8159F5C(void)
CpuFastSet(gPlttBufferUnfaded, gPaletteDecompressionBuffer, 0x100);
CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100);
BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, RGB_RED);
- taskId = CreateTask(sub_8159FEC, 0);
+ taskId = CreateTask(TrySweetScentEncounter, 0);
gTasks[taskId].data[0] = 0;
FieldEffectActiveListRemove(FLDEFF_SWEET_SCENT);
}
-void sub_8159FEC(u8 taskId)
+static void TrySweetScentEncounter(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -74,7 +75,7 @@ void sub_8159FEC(u8 taskId)
}
else
{
- gTasks[taskId].func = sub_815A090;
+ gTasks[taskId].func = FailSweetScentEncounter;
BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 8, 0, RGB_RED);
sub_81BE6B8();
}
@@ -86,7 +87,7 @@ void sub_8159FEC(u8 taskId)
}
}
-void sub_815A090(u8 taskId)
+static void FailSweetScentEncounter(u8 taskId)
{
if (!gPaletteFade.active)
{
diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c
index e82a26cd1..8562908bd 100644
--- a/src/fldeff_teleport.c
+++ b/src/fldeff_teleport.c
@@ -1,24 +1,27 @@
#include "global.h"
-#include "fldeff_teleport.h"
#include "field_effect.h"
#include "field_player_avatar.h"
#include "party_menu.h"
#include "overworld.h"
#include "rom6.h"
#include "task.h"
+#include "constants/field_effects.h"
+
+static void FieldCallback_Teleport(void);
+static void StartTeleportFieldEffect(void);
bool8 SetUpFieldMove_Teleport(void)
{
if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
{
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
- gPostMenuFieldCallback = hm_teleport_run_dp02scr;
+ gPostMenuFieldCallback = FieldCallback_Teleport;
return TRUE;
}
return FALSE;
}
-void hm_teleport_run_dp02scr(void)
+static void FieldCallback_Teleport(void)
{
Overworld_ResetStateAfterTeleport();
FieldEffectStart(FLDEFF_USE_TELEPORT);
@@ -28,16 +31,14 @@ void hm_teleport_run_dp02scr(void)
bool8 FldEff_UseTeleport(void)
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (u32)sub_817C94C >> 16;
- gTasks[taskId].data[9] = (u32)sub_817C94C;
- SetPlayerAvatarTransitionFlags(1);
+ gTasks[taskId].data[8] = (u32)StartTeleportFieldEffect >> 16;
+ gTasks[taskId].data[9] = (u32)StartTeleportFieldEffect;
+ SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
return FALSE;
}
-void sub_817C94C(void)
+static void StartTeleportFieldEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_TELEPORT);
CreateTeleportFieldEffectTask();
}
-
-
diff --git a/src/flying.c b/src/flying.c
new file mode 100644
index 000000000..d3ea3f11b
--- /dev/null
+++ b/src/flying.c
@@ -0,0 +1,328 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_810DE70(struct Sprite *);
+extern void sub_810DFA8(struct Sprite *);
+extern void sub_810E044(struct Sprite *);
+extern void sub_810E13C(struct Sprite *);
+extern void sub_810E1C8(struct Sprite *);
+extern void sub_810E314(struct Sprite *);
+extern void sub_810EA4C(struct Sprite *);
+extern void sub_810EAA0(struct Sprite *);
+extern void sub_810EC34(struct Sprite *);
+extern void sub_810EC94(struct Sprite *);
+extern void sub_810ED28(struct Sprite *);
+extern void sub_810EE14(struct Sprite *);
+extern void sub_810EEF8(struct Sprite *);
+extern void sub_810F004(struct Sprite *);
+extern void sub_810F084(struct Sprite *);
+
+const struct SpriteTemplate gUnknown_08596270 =
+{
+ .tileTag = ANIM_TAG_GUST,
+ .paletteTag = ANIM_TAG_GUST,
+ .oam = &gUnknown_0852495C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810DE70,
+};
+
+const union AffineAnimCmd gUnknown_08596288[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xA, 0x0, 0, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085962A0[] =
+{
+ gUnknown_08596288,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_85962A4 =
+{
+ .tileTag = ANIM_TAG_GUST,
+ .paletteTag = ANIM_TAG_GUST,
+ .oam = &gUnknown_085249BC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085962A0,
+ .callback = sub_810DFA8,
+};
+
+const union AnimCmd gUnknown_085962BC[] =
+{
+ 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 gUnknown_085962D0[] =
+{
+ gUnknown_085962BC,
+};
+
+const struct SpriteTemplate gUnknown_085962D4 =
+{
+ .tileTag = ANIM_TAG_AIR_WAVE_2,
+ .paletteTag = ANIM_TAG_AIR_WAVE_2,
+ .oam = &gUnknown_08524934,
+ .anims = gUnknown_085962D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810E044,
+};
+
+const union AffineAnimCmd gUnknown_085962EC[] =
+{
+ 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 gUnknown_08596314[] =
+{
+ gUnknown_085962EC,
+};
+
+const union AffineAnimCmd gUnknown_08596318[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 50, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08596328[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -40, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08596338[] =
+{
+ gUnknown_08596318,
+ gUnknown_08596328,
+};
+
+const struct SpriteTemplate gUnknown_08596340 =
+{
+ .tileTag = ANIM_TAG_ROUND_SHADOW,
+ .paletteTag = ANIM_TAG_ROUND_SHADOW,
+ .oam = &gUnknown_085249DC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08596314,
+ .callback = sub_810E13C,
+};
+
+const struct SpriteTemplate gUnknown_08596358 =
+{
+ .tileTag = ANIM_TAG_ROUND_SHADOW,
+ .paletteTag = ANIM_TAG_ROUND_SHADOW,
+ .oam = &gUnknown_0852497C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08596338,
+ .callback = sub_810E1C8,
+};
+
+const union AnimCmd gUnknown_08596370[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08596378[] =
+{
+ ANIMCMD_FRAME(16, 0, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08596380[] =
+{
+ gUnknown_08596370,
+ gUnknown_08596378,
+};
+
+const struct SpriteTemplate gUnknown_08596388 =
+{
+ .tileTag = ANIM_TAG_WHITE_FEATHER,
+ .paletteTag = ANIM_TAG_WHITE_FEATHER,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_08596380,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810E314,
+};
+
+const struct SpriteTemplate gUnknown_085963A0 =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810EA4C,
+};
+
+const union AnimCmd gUnknown_085963B8[] =
+{
+ 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 gUnknown_085963D0[] =
+{
+ gUnknown_085963B8,
+};
+
+const struct SpriteTemplate gUnknown_085963D4 =
+{
+ .tileTag = ANIM_TAG_WHIRLWIND_LINES,
+ .paletteTag = ANIM_TAG_WHIRLWIND_LINES,
+ .oam = &gUnknown_08524934,
+ .anims = gUnknown_085963D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810EAA0,
+};
+
+const union AffineAnimCmd gUnknown_085963EC[] =
+{
+ 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 gUnknown_0859641C[] =
+{
+ gUnknown_085963EC,
+};
+
+const struct SpriteTemplate gUnknown_08596420 =
+{
+ .tileTag = ANIM_TAG_ROUND_SHADOW,
+ .paletteTag = ANIM_TAG_ROUND_SHADOW,
+ .oam = &gUnknown_085249DC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859641C,
+ .callback = sub_810EC34,
+};
+
+const union AffineAnimCmd gUnknown_08596438[] =
+{
+ AFFINEANIMCMD_FRAME(0xA0, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08596448[] =
+{
+ gUnknown_08596438,
+};
+
+const struct SpriteTemplate gUnknown_0859644C =
+{
+ .tileTag = ANIM_TAG_ROUND_SHADOW,
+ .paletteTag = ANIM_TAG_ROUND_SHADOW,
+ .oam = &gUnknown_085249DC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08596448,
+ .callback = sub_810EC94,
+};
+
+const union AffineAnimCmd gUnknown_08596464[] =
+{
+ 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 gUnknown_0859648C[] =
+{
+ gUnknown_08596464,
+};
+
+const struct SpriteTemplate gUnknown_08596490 =
+{
+ .tileTag = ANIM_TAG_ROUND_SHADOW,
+ .paletteTag = ANIM_TAG_ROUND_SHADOW,
+ .oam = &gUnknown_085249DC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859648C,
+ .callback = sub_810ED28,
+};
+
+const union AffineAnimCmd gUnknown_085964A8[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12),
+ AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 11),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085964C8[] =
+{
+ gUnknown_085964A8,
+};
+
+const struct SpriteTemplate gUnknown_085964CC =
+{
+ .tileTag = ANIM_TAG_SPLASH,
+ .paletteTag = ANIM_TAG_SPLASH,
+ .oam = &gUnknown_085249DC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810EE14,
+};
+
+const struct SpriteTemplate gUnknown_085964E4 =
+{
+ .tileTag = ANIM_TAG_SWEAT_BEAD,
+ .paletteTag = ANIM_TAG_SWEAT_BEAD,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810EEF8,
+};
+
+const struct SpriteTemplate gUnknown_085964FC =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810F004,
+};
+
+const struct SpriteTemplate gUnknown_08596514 =
+{
+ .tileTag = ANIM_TAG_BIRD,
+ .paletteTag = ANIM_TAG_BIRD,
+ .oam = &gUnknown_085249DC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810F084,
+};
diff --git a/src/fossil_specials.c b/src/fossil_specials.c
index 49db0f5b6..8164a3a78 100644
--- a/src/fossil_specials.c
+++ b/src/fossil_specials.c
@@ -17,29 +17,32 @@
#include "task.h"
#include "window.h"
-#define MIRAGE_TOWER_GFX_LENGTH (sizeof(gUnknown_08617274) + sizeof(gMirageTower_Gfx))
+#define MIRAGE_TOWER_GFX_LENGTH (32 + sizeof(gMirageTower_Gfx))
#define MIRAGE_TOWER_PALETTE_LENGTH 0x800
#define ROOT_FOSSIL_GFX_LENGTH sizeof(gRootFossil_Gfx)
#define ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH 0x100
-//struct
-struct Struct8617DA4 {
+struct Struct8617DA4
+{
u8 x;
u8 y;
u16 tileId;
};
-struct Struct203CF10 {
+struct Struct203CF10
+{
u8 *buffer;
- u8 curr_buffer_index;
+ u8 currIndex;
};
-struct DynamicSpriteFrameImage{
+struct DynamicSpriteFrameImage
+{
u8 *data;
u16 size;
};
-struct Struct203CF0C {
+struct Struct203CF0C
+{
u8 *frameImageTiles;
struct DynamicSpriteFrameImage *frameImage;
u8 spriteId;
@@ -52,10 +55,10 @@ static void sub_81BED50(u8 taskId);
static void sub_81BEBF4(u8 taskId);
static void sub_81BF028(u8 taskId);
static void sub_81BF248(struct Sprite *);
-/*static*/ void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e);
+static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e);
// .rodata
-static const u8 gUnknown_08617274[] = {00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00};
+static const u8 gUnknown_08617274[32] = {0};
static const u8 gMirageTower_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower.4bpp");
static const u16 gUnknown_08617B94[] = INCBIN_U16("graphics/misc/mirage_tower.bin");
static const u16 gRootFossil_Pal[] = INCBIN_U16("graphics/misc/fossil.gbapal");
@@ -64,16 +67,16 @@ static const u8 gMirageTowerCrumbles_Gfx[] = INCBIN_U8("graphics/misc/mirage_tow
static const u16 gMirageTowerCrumbles_Palette[] = INCBIN_U16("graphics/misc/mirage_tower_crumbles.gbapal");
const s16 gUnknown_08617D64[][3] =
- {
- { 0, 10, 65},
- { 17, 3, 50},
- {-12, 0, 75},
- { 10, 15, 90},
- { 7, 8, 65},
- {-18, 5, 75},
- { 22, -10, 55},
- {-24, -4, 65},
- };
+{
+ { 0, 10, 65},
+ { 17, 3, 50},
+ {-12, 0, 75},
+ { 10, 15, 90},
+ { 7, 8, 65},
+ {-18, 5, 75},
+ { 22, -10, 55},
+ {-24, -4, 65},
+};
const struct SpriteSheet gUnknown_08617D94[] =
{
@@ -82,26 +85,26 @@ const struct SpriteSheet gUnknown_08617D94[] =
};
static const struct Struct8617DA4 gUnknown_08617DA4[] =
- {
- {0x12, 0x35, 0x251},
- {0x13, 0x35, 0x251},
- {0x14, 0x35, 0x251},
- {0x12, 0x36, 0x251},
- {0x13, 0x36, 0x251},
- {0x14, 0x36, 0x251},
- {0x12, 0x37, 0x251},
- {0x13, 0x37, 0x251},
- {0x14, 0x37, 0x251},
- {0x12, 0x38, 0x251},
- {0x13, 0x38, 0x251},
- {0x14, 0x38, 0x251},
- {0x12, 0x39, 0x259},
- {0x13, 0x39, 0x259},
- {0x14, 0x39, 0x259},
- {0x12, 0x3A, 0x121},
- {0x13, 0x3A, 0x121},
- {0x14, 0x3A, 0x121},
- };
+{
+ {0x12, 0x35, 0x251},
+ {0x13, 0x35, 0x251},
+ {0x14, 0x35, 0x251},
+ {0x12, 0x36, 0x251},
+ {0x13, 0x36, 0x251},
+ {0x14, 0x36, 0x251},
+ {0x12, 0x37, 0x251},
+ {0x13, 0x37, 0x251},
+ {0x14, 0x37, 0x251},
+ {0x12, 0x38, 0x251},
+ {0x13, 0x38, 0x251},
+ {0x14, 0x38, 0x251},
+ {0x12, 0x39, 0x259},
+ {0x13, 0x39, 0x259},
+ {0x14, 0x39, 0x259},
+ {0x12, 0x3A, 0x121},
+ {0x13, 0x3A, 0x121},
+ {0x14, 0x3A, 0x121},
+};
static const union AnimCmd gSpriteAnim_8617DEC[] =
{
@@ -131,67 +134,70 @@ static const union AnimCmd *const gSpriteAnimTable_8617DFC[] =
gSpriteAnim_8617DEC,
};
-static const struct SpriteTemplate gUnknown_08617E00 = {
+static const struct SpriteTemplate gUnknown_08617E00 =
+{
0xFFFF, 0xFFFF, &gOamData_8617DF4, gSpriteAnimTable_8617DFC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
};
-// ewram
-EWRAM_DATA u8* gUnknown_0203CF04 = NULL;
-EWRAM_DATA u8* gUnknown_0203CF08 = NULL;
-EWRAM_DATA struct Struct203CF0C *gUnknown_0203CF0C = NULL;
-EWRAM_DATA struct Struct203CF10 *gUnknown_0203CF10 = NULL;
-EWRAM_DATA u16 *gUnknown_0203CF14 = NULL;
+// EWRAM
+EWRAM_DATA static u8* sUnknown_0203CF04 = NULL;
+EWRAM_DATA static u8* sUnknown_0203CF08 = NULL;
+EWRAM_DATA static struct Struct203CF0C *sUnknown_0203CF0C = NULL;
+EWRAM_DATA static struct Struct203CF10 *sUnknown_0203CF10 = NULL;
+EWRAM_DATA static u16 *sUnknown_0203CF14 = NULL;
-// iwram
-IWRAM_DATA u16 gUnknown_030012A8[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+// IWRAM bss
+IWRAM_DATA static u16 gUnknown_030012A8[8];
// text
void sub_81BEB24(void)
{
u8 i;
- for(i = 0; i < (sizeof(gUnknown_08617DA4)/sizeof(gUnknown_08617DA4[0])); i++)
+ for (i = 0; i < (sizeof(gUnknown_08617DA4)/sizeof(gUnknown_08617DA4[0])); i++)
MapGridSetMetatileIdAt(gUnknown_08617DA4[i].x + 7, gUnknown_08617DA4[i].y + 7, gUnknown_08617DA4[i].tileId);
DrawWholeMapView();
}
void sub_81BEB54(void)
{
- CreateTask(sub_81BED50, 0x9);
+ CreateTask(sub_81BED50, 9);
}
void sub_81BEB68(void)
{
- CreateTask(sub_81BEBF4, 0x9);
+ CreateTask(sub_81BEBF4, 9);
}
void sub_81BEB7C(void)
{
- CreateTask(sub_81BF028, 0x9);
+ CreateTask(sub_81BF028, 9);
}
void sub_81BEB90(void)
{
- SetGpuReg(REG_OFFSET_BG0HOFS, gUnknown_0203CF14[0]);
- SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_0203CF14[1]);
+ SetGpuReg(REG_OFFSET_BG0HOFS, sUnknown_0203CF14[0]);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sUnknown_0203CF14[1]);
}
void sub_81BEBB4(u8 taskId)
{
- if(!(gTasks[taskId].data[0]))
+ if (!(gTasks[taskId].data[0]))
{
- gUnknown_0203CF14[0] = -gUnknown_0203CF14[0];
+ sUnknown_0203CF14[0] = -sUnknown_0203CF14[0];
gTasks[taskId].data[0] = 2;
sub_81BEB90();
}
else
+ {
gTasks[taskId].data[0]--;
+ }
}
static void sub_81BEBF4(u8 taskId)
{
u8 zero;
- switch(gTasks[taskId].data[0])
+ switch (gTasks[taskId].data[0])
{
case 0:
FreeAllWindowBuffers();
@@ -199,19 +205,19 @@ static void sub_81BEBF4(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 1:
- gUnknown_0203CF04 = (u8 *)AllocZeroed(MIRAGE_TOWER_GFX_LENGTH);
- gUnknown_0203CF08 = (u8 *)AllocZeroed(MIRAGE_TOWER_PALETTE_LENGTH);
+ sUnknown_0203CF04 = (u8 *)AllocZeroed(MIRAGE_TOWER_GFX_LENGTH);
+ sUnknown_0203CF08 = (u8 *)AllocZeroed(MIRAGE_TOWER_PALETTE_LENGTH);
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
gTasks[taskId].data[0]++;
break;
case 2:
- CpuSet(gUnknown_08617274, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH / 2);
- LoadBgTiles(0, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
+ CpuSet(gUnknown_08617274, sUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH / 2);
+ LoadBgTiles(0, sUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
gTasks[taskId].data[0]++;
break;
case 3:
- SetBgTilemapBuffer(0, gUnknown_0203CF08);
+ SetBgTilemapBuffer(0, sUnknown_0203CF08);
CopyToBgTilemapBufferRect_ChangePalette(0, &gUnknown_08617B94, 12, 29, 6, 12, 17);
CopyBgTilemapBufferToVram(0);
gTasks[taskId].data[0]++;
@@ -225,10 +231,10 @@ static void sub_81BEBF4(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 6:
- gUnknown_0203CF14 = (u16 *)Alloc(4);
+ sUnknown_0203CF14 = Alloc(4);
zero = 0;
- gUnknown_0203CF14[0] = 2;
- gUnknown_0203CF14[1] = zero;
+ sUnknown_0203CF14[0] = 2;
+ sUnknown_0203CF14[1] = zero;
CreateTask(sub_81BEBB4, 0xA);
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -236,86 +242,76 @@ static void sub_81BEBF4(u8 taskId)
}
}
-#ifdef NONMATCHING
#define OUTER_BUFFER_LENGTH 0x60
#define INNER_BUFFER_LENGTH 0x30
static void sub_81BED50(u8 taskId)
{
u8 anotherTaskId, j;
+ u16 i;
+ u8 index;
-
- switch(gTasks[taskId].data[0])
+ switch (gTasks[taskId].data[0])
{
case 1:
- gUnknown_0203CF10 = (struct Struct203CF10 *)AllocZeroed(OUTER_BUFFER_LENGTH * sizeof(struct Struct203CF10));
+ sUnknown_0203CF10 = AllocZeroed(OUTER_BUFFER_LENGTH * sizeof(struct Struct203CF10));
break;
case 3:
+ if (gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
{
- u16 i;
- u16 left;
- u32 index, next;
-
- index = (u16)gTasks[taskId].data[3];
- if(gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
+ if (gTasks[taskId].data[1] > 1)
{
- if(gTasks[taskId].data[1] > 1)
+ index = gTasks[taskId].data[3];
+ sUnknown_0203CF10[index].buffer = Alloc(INNER_BUFFER_LENGTH);
+ for (i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
+ sUnknown_0203CF10[index].buffer[i] = i;
+ for (i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
{
- index = (u8)index;
- gUnknown_0203CF10[index].buffer = (u8 *)Alloc(INNER_BUFFER_LENGTH);
- for(i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
- gUnknown_0203CF10[index].buffer[i] = i;
- for(i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
- {
- u16 rand1, rand2, temp;
-
- rand1 = Random() % 0x30;
- rand2 = Random() % 0x30;
- temp = gUnknown_0203CF10[index].buffer[rand2];
- gUnknown_0203CF10[index].buffer[rand2] = gUnknown_0203CF10[index].buffer[rand1];
- gUnknown_0203CF10[index].buffer[rand1] = temp;
- }
- if(gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
- gTasks[taskId].data[3]++;
- gTasks[taskId].data[1] = 0;
+ u16 rand1, rand2, temp;
+
+ rand1 = Random() % 0x30;
+ rand2 = Random() % 0x30;
+ SWAP(sUnknown_0203CF10[index].buffer[rand2], sUnknown_0203CF10[index].buffer[rand1], temp);
}
- gTasks[taskId].data[1]++;
+ if (gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
+ gTasks[taskId].data[3]++;
+ gTasks[taskId].data[1] = 0;
}
- index = (u8)gTasks[taskId].data[3];
- for(left = (u8)gTasks[taskId].data[2]; left < (u16)index; left = next)
+ gTasks[taskId].data[1]++;
+ }
+ index = gTasks[taskId].data[3];
+ for (i = (u8)(gTasks[taskId].data[2]); i < index; i++)
+ {
+ for (j = 0; j < 1; j++)
{
- j = 0;
- next = left + 1;
- while(!j)
- {
- sub_81BF2B8(gUnknown_0203CF04, ((((OUTER_BUFFER_LENGTH - 1) - left) * INNER_BUFFER_LENGTH) + gUnknown_0203CF10[left].buffer[(gUnknown_0203CF10[left].curr_buffer_index)++]), 0, INNER_BUFFER_LENGTH, 1);
- j++;
- }
- if(gUnknown_0203CF10[left].curr_buffer_index > (INNER_BUFFER_LENGTH - 1))
- {
- FREE_AND_SET_NULL(gUnknown_0203CF10[left].buffer);
- gTasks[taskId].data[2]++;
- if((left % 2) == 1)
- gUnknown_0203CF14[1]--;
- }
+ sub_81BF2B8(sUnknown_0203CF04,
+ ((((OUTER_BUFFER_LENGTH - 1) - i) * INNER_BUFFER_LENGTH) + sUnknown_0203CF10[i].buffer[(sUnknown_0203CF10[i].currIndex)++]),
+ 0, INNER_BUFFER_LENGTH, 1);
+ }
+ if (sUnknown_0203CF10[i].currIndex > (INNER_BUFFER_LENGTH - 1))
+ {
+ FREE_AND_SET_NULL(sUnknown_0203CF10[i].buffer);
+ gTasks[taskId].data[2]++;
+ if ((i % 2) == 1)
+ sUnknown_0203CF14[1]--;
}
- LoadBgTiles(0, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
- if(gUnknown_0203CF10[OUTER_BUFFER_LENGTH - 1].curr_buffer_index > (INNER_BUFFER_LENGTH - 1))
- break;
- return;
}
+ LoadBgTiles(0, sUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
+ if (sUnknown_0203CF10[OUTER_BUFFER_LENGTH - 1].currIndex > (INNER_BUFFER_LENGTH - 1))
+ break;
+ return;
case 4:
UnsetBgTilemapBuffer(0);
anotherTaskId = FindTaskIdByFunc(sub_81BEBB4);
- if(anotherTaskId != 0xFF)
+ if (anotherTaskId != 0xFF)
DestroyTask(anotherTaskId);
- gUnknown_0203CF14[1] = gUnknown_0203CF14[0] = 0;
+ sUnknown_0203CF14[1] = sUnknown_0203CF14[0] = 0;
sub_81BEB90();
break;
case 5:
- FREE_AND_SET_NULL(gUnknown_0203CF14);
- FREE_AND_SET_NULL(gUnknown_0203CF10);
- FREE_AND_SET_NULL(gUnknown_0203CF04);
- FREE_AND_SET_NULL(gUnknown_0203CF08);
+ FREE_AND_SET_NULL(sUnknown_0203CF14);
+ FREE_AND_SET_NULL(sUnknown_0203CF10);
+ FREE_AND_SET_NULL(sUnknown_0203CF04);
+ FREE_AND_SET_NULL(sUnknown_0203CF08);
break;
case 6:
SetGpuRegBits(REG_OFFSET_BG2CNT, 0x2);
@@ -334,423 +330,75 @@ static void sub_81BED50(u8 taskId)
gTasks[taskId].data[0]++;
}
-#else
-NAKED
-static void sub_81BED50(u8 taskId)
-{
- asm("\n\
- .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, 0x10\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldr r1, =gTasks\n\
- lsls r0, 2\n\
- add r0, r10\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x8]\n\
- subs r0, 0x1\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- adds r6, r1, 0\n\
- cmp r0, 0x7\n\
- bls _081BED7C\n\
- b _081BF002\n\
- _081BED7C:\n\
- lsls r0, 2\n\
- ldr r1, =_081BED90\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
- _081BED90:\n\
- .4byte _081BEDB0\n\
- .4byte _081BF002\n\
- .4byte _081BEDC4\n\
- .4byte _081BEF64\n\
- .4byte _081BEF94\n\
- .4byte _081BEFD0\n\
- .4byte _081BEFF0\n\
- .4byte _081BEFF8\n\
- _081BEDB0:\n\
- ldr r4, =gUnknown_0203CF10\n\
- movs r0, 0xC0\n\
- lsls r0, 2\n\
- bl AllocZeroed\n\
- str r0, [r4]\n\
- b _081BF002\n\
- .pool\n\
- _081BEDC4:\n\
- mov r1, r10\n\
- lsls r0, r1, 2\n\
- adds r1, r0, r1\n\
- lsls r1, 3\n\
- adds r2, r1, r6\n\
- ldrh r3, [r2, 0xE]\n\
- movs r4, 0xE\n\
- ldrsh r1, [r2, r4]\n\
- str r0, [sp, 0x8]\n\
- cmp r1, 0x5F\n\
- bgt _081BEE8A\n\
- movs r1, 0xA\n\
- ldrsh r0, [r2, r1]\n\
- cmp r0, 0x1\n\
- ble _081BEE7C\n\
- lsls r0, r3, 24\n\
- lsrs r4, r0, 24\n\
- movs r0, 0x30\n\
- bl Alloc\n\
- ldr r3, =gUnknown_0203CF10\n\
- ldr r1, [r3]\n\
- lsls r2, r4, 3\n\
- adds r1, r2, r1\n\
- str r0, [r1]\n\
- movs r5, 0\n\
- adds r4, r2, 0\n\
- _081BEDFA:\n\
- ldr r0, [r3]\n\
- adds r0, r4, r0\n\
- ldr r0, [r0]\n\
- adds r0, r5\n\
- strb r5, [r0]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0x2F\n\
- bls _081BEDFA\n\
- movs r5, 0\n\
- ldr r7, =gUnknown_0203CF10\n\
- adds r6, r2, 0\n\
- _081BEE14:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x30\n\
- bl __umodsi3\n\
- adds r4, r0, 0\n\
- lsls r4, 16\n\
- lsrs r4, 16\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x30\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- ldr r1, [r7]\n\
- adds r1, r6, r1\n\
- ldr r1, [r1]\n\
- adds r0, r1, r0\n\
- ldrb r2, [r0]\n\
- adds r1, r4 \n\
- ldrb r1, [r1]\n\
- strb r1, [r0]\n\
- ldr r0, [r7]\n\
- adds r0, r6, r0\n\
- ldr r0, [r0]\n\
- adds r0, r4\n\
- strb r2, [r0]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0x2F\n\
- bls _081BEE14\n\
- ldr r0, =gTasks\n\
- ldr r1, [sp, 0x8]\n\
- add r1, r10\n\
- lsls r1, 3\n\
- adds r2, r1, r0\n\
- ldrh r3, [r2, 0xE]\n\
- movs r4, 0xE\n\
- ldrsh r1, [r2, r4]\n\
- adds r6, r0, 0\n\
- cmp r1, 0x5F\n\
- bgt _081BEE78\n\
- adds r0, r3, 0x1\n\
- strh r0, [r2, 0xE]\n\
- _081BEE78:\n\
- movs r0, 0\n\
- strh r0, [r2, 0xA]\n\
- _081BEE7C:\n\
- ldr r1, [sp, 0x8]\n\
- add r1, r10\n\
- lsls r1, 3\n\
- adds r1, r6\n\
- ldrh r0, [r1, 0xA]\n\
- adds r0, 0x1\n\
- strh r0, [r1, 0xA]\n\
- _081BEE8A:\n\
- ldr r0, [sp, 0x8]\n\
- add r0, r10\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- ldrb r4, [r0, 0xE]\n\
- ldrb r5, [r0, 0xC]\n\
- lsls r0, r4, 16\n\
- cmp r5, r4\n\
- bcs _081BEF32\n\
- str r0, [sp, 0xC]\n\
- _081BEE9E:\n\
- movs r6, 0\n\
- adds r0, r5, 0x1\n\
- str r0, [sp, 0x4]\n\
- lsls r4, r5, 3\n\
- movs r2, 0x5F\n\
- subs r1, r2, r5\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 4\n\
- mov r9, r0\n\
- _081BEEB2:\n\
- ldr r0, =gUnknown_0203CF04\n\
- ldr r0, [r0]\n\
- ldr r7, =gUnknown_0203CF10\n\
- ldr r3, [r7]\n\
- adds r3, r4, r3\n\
- ldrb r2, [r3, 0x4]\n\
- adds r1, r2, 0x1\n\
- strb r1, [r3, 0x4]\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- ldr r1, [r3]\n\
- adds r1, r2\n\
- ldrb r1, [r1]\n\
- add r1, r9\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- movs r2, 0x1\n\
- mov r8, r2\n\
- str r2, [sp]\n\
- movs r2, 0\n\
- movs r3, 0x30\n\
- bl sub_81BF2B8\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- cmp r6, 0\n\
- beq _081BEEB2\n\
- ldr r0, [r7]\n\
- adds r1, r4, r0\n\
- ldrb r0, [r1, 0x4]\n\
- cmp r0, 0x2F\n\
- bls _081BEF24\n\
- ldr r0, [r1]\n\
- bl Free\n\
- ldr r0, [r7]\n\
- adds r0, r4, r0\n\
- movs r1, 0\n\
- str r1, [r0]\n\
- ldr r1, [sp, 0x8]\n\
- add r1, r10\n\
- lsls r1, 3\n\
- ldr r4, =gTasks\n\
- adds r1, r4\n\
- ldrh r0, [r1, 0xC]\n\
- adds r0, 0x1\n\
- strh r0, [r1, 0xC]\n\
- mov r0, r8\n\
- ands r5, r0\n\
- cmp r5, 0x1\n\
- bne _081BEF24\n\
- ldr r0, =gUnknown_0203CF14\n\
- ldr r1, [r0]\n\
- ldrh r0, [r1, 0x2]\n\
- subs r0, 0x1\n\
- strh r0, [r1, 0x2]\n\
- _081BEF24:\n\
- ldr r1, [sp, 0x4]\n\
- lsls r0, r1, 16\n\
- lsrs r5, r0, 16\n\
- ldr r2, [sp, 0xC]\n\
- lsrs r0, r2, 16\n\
- cmp r5, r0\n\
- bcc _081BEE9E\n\
- _081BEF32:\n\
- ldr r0, =gUnknown_0203CF04\n\
- ldr r1, [r0]\n\
- movs r2, 0x92\n\
- lsls r2, 4\n\
- movs r0, 0\n\
- movs r3, 0\n\
- bl LoadBgTiles\n\
- ldr r0, =gUnknown_0203CF10\n\
- ldr r0, [r0]\n\
- movs r4, 0xBE\n\
- lsls r4, 2\n\
- adds r0, r4\n\
- ldrb r0, [r0, 0x4]\n\
- cmp r0, 0x2F\n\
- bhi _081BF002\n\
- b _081BF014\n\
- .pool\n\
- _081BEF64:\n\
- movs r0, 0\n\
- bl UnsetBgTilemapBuffer\n\
- ldr r0, =sub_81BEBB4\n\
- bl FindTaskIdByFunc\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xFF\n\
- beq _081BEF7C\n\
- bl DestroyTask\n\
- _081BEF7C:\n\
- ldr r0, =gUnknown_0203CF14\n\
- ldr r1, [r0]\n\
- movs r0, 0\n\
- strh r0, [r1]\n\
- strh r0, [r1, 0x2]\n\
- bl sub_81BEB90\n\
- b _081BF002\n\
- .pool\n\
- _081BEF94:\n\
- ldr r4, =gUnknown_0203CF14\n\
- ldr r0, [r4]\n\
- bl Free\n\
- movs r5, 0\n\
- str r5, [r4]\n\
- ldr r4, =gUnknown_0203CF10\n\
- ldr r0, [r4]\n\
- bl Free\n\
- str r5, [r4]\n\
- ldr r4, =gUnknown_0203CF04\n\
- ldr r0, [r4]\n\
- bl Free\n\
- str r5, [r4]\n\
- ldr r4, =gUnknown_0203CF08\n\
- ldr r0, [r4]\n\
- bl Free\n\
- str r5, [r4]\n\
- b _081BF002\n\
- .pool\n\
- _081BEFD0:\n\
- movs r0, 0xC\n\
- movs r1, 0x2\n\
- bl SetGpuRegBits\n\
- movs r0, 0x8\n\
- movs r1, 0\n\
- bl SetGpuRegBits\n\
- movs r0, 0\n\
- movs r1, 0x7\n\
- movs r2, 0\n\
- bl SetBgAttribute\n\
- bl sub_81971D0\n\
- b _081BF002\n\
- _081BEFF0:\n\
- movs r0, 0\n\
- bl ShowBg\n\
- b _081BF002\n\
- _081BEFF8:\n\
- mov r0, r10\n\
- bl DestroyTask\n\
- bl EnableBothScriptContexts\n\
- _081BF002:\n\
- ldr r0, =gTasks\n\
- mov r2, r10\n\
- lsls r1, r2, 2\n\
- add r1, r10\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldrh r0, [r1, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r1, 0x8]\n\
- _081BF014:\n\
- add sp, 0x10\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\
- .pool\n\
- .syntax divided");
-}
-#endif // NONMATCHING
-
static void sub_81BF028(u8 taskId)
{
u16 i;
+ u8 *buffer;
- switch(gTasks[taskId].data[0])
+ switch (gTasks[taskId].data[0])
{
case 1:
- gUnknown_0203CF0C = (struct Struct203CF0C *)AllocZeroed(sizeof(struct Struct203CF0C));
- gUnknown_0203CF0C->frameImageTiles = (u8 *)AllocZeroed(ROOT_FOSSIL_GFX_LENGTH);
- gUnknown_0203CF0C->frameImage = (struct DynamicSpriteFrameImage *) AllocZeroed(sizeof(struct DynamicSpriteFrameImage));
- gUnknown_0203CF0C->unkC = (u16 *)AllocZeroed(ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16));
- gUnknown_0203CF0C->unk10 = 0;
+ sUnknown_0203CF0C = AllocZeroed(sizeof(*sUnknown_0203CF0C));
+ sUnknown_0203CF0C->frameImageTiles = AllocZeroed(ROOT_FOSSIL_GFX_LENGTH);
+ sUnknown_0203CF0C->frameImage = AllocZeroed(sizeof(*sUnknown_0203CF0C->frameImage));
+ sUnknown_0203CF0C->unkC = AllocZeroed(ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16));
+ sUnknown_0203CF0C->unk10 = 0;
break;
case 2:
- {
- u8 *buffer;
- buffer = gUnknown_0203CF0C->frameImageTiles;
- for(i = 0; i < ROOT_FOSSIL_GFX_LENGTH; i++, buffer++)
- *buffer = gRootFossil_Gfx[i];
- }
+ buffer = sUnknown_0203CF0C->frameImageTiles;
+ for (i = 0; i < ROOT_FOSSIL_GFX_LENGTH; i++, buffer++)
+ *buffer = gRootFossil_Gfx[i];
break;
case 3:
- gUnknown_0203CF0C->frameImage->data = gUnknown_0203CF0C->frameImageTiles;
- gUnknown_0203CF0C->frameImage->size = ROOT_FOSSIL_GFX_LENGTH;
+ sUnknown_0203CF0C->frameImage->data = sUnknown_0203CF0C->frameImageTiles;
+ sUnknown_0203CF0C->frameImage->size = ROOT_FOSSIL_GFX_LENGTH;
break;
case 4:
{
- u8 spriteId, zero;
struct SpriteTemplate fossilTemplate;
fossilTemplate = gUnknown_08617E00;
- fossilTemplate.images = (struct SpriteFrameImage *)(gUnknown_0203CF0C->frameImage);
- spriteId = CreateSprite(&fossilTemplate, 128, -16, 1);
- gUnknown_0203CF0C->spriteId = spriteId;
- zero = 0;
- gSprites[gUnknown_0203CF0C->spriteId].centerToCornerVecX = zero;
- gSprites[gUnknown_0203CF0C->spriteId].data[0] = gSprites[gUnknown_0203CF0C->spriteId].pos1.x;
- gSprites[gUnknown_0203CF0C->spriteId].data[1] = 1;
+ fossilTemplate.images = (struct SpriteFrameImage *)(sUnknown_0203CF0C->frameImage);
+ sUnknown_0203CF0C->spriteId = CreateSprite(&fossilTemplate, 128, -16, 1);
+ gSprites[sUnknown_0203CF0C->spriteId].centerToCornerVecX = 0;
+ gSprites[sUnknown_0203CF0C->spriteId].data[0] = gSprites[sUnknown_0203CF0C->spriteId].pos1.x;
+ gSprites[sUnknown_0203CF0C->spriteId].data[1] = 1;
}
case 5:
- for(i = 0; i < ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH; i++)
- gUnknown_0203CF0C->unkC[i] = i;
+ for (i = 0; i < ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH; i++)
+ sUnknown_0203CF0C->unkC[i] = i;
break;
case 6:
+ for (i = 0; i < (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)); i++)
{
- u16 rand1, rand2, temp, j;
- j = (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)) - 1;
- for(i = 0; i <= j; i++)
- {
- rand1 = Random() % 0x100;
- rand2 = Random() % 0x100;
- j = (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)) - 1;
- temp = gUnknown_0203CF0C->unkC[rand2];
- gUnknown_0203CF0C->unkC[rand2] = gUnknown_0203CF0C->unkC[rand1];
- gUnknown_0203CF0C->unkC[rand1] = temp;
- }
- gSprites[gUnknown_0203CF0C->spriteId].callback = sub_81BF248;
- break;
+ u16 rand1, rand2, temp;
+
+ rand1 = Random() % 0x100;
+ rand2 = Random() % 0x100;
+ SWAP(sUnknown_0203CF0C->unkC[rand2], sUnknown_0203CF0C->unkC[rand1], temp);
}
+ gSprites[sUnknown_0203CF0C->spriteId].callback = sub_81BF248;
+ break;
case 7:
- if(gSprites[gUnknown_0203CF0C->spriteId].callback != SpriteCallbackDummy)
+ if (gSprites[sUnknown_0203CF0C->spriteId].callback != SpriteCallbackDummy)
return;
- DestroySprite(&gSprites[gUnknown_0203CF0C->spriteId]);
- FREE_AND_SET_NULL(gUnknown_0203CF0C->unkC);;
- FREE_AND_SET_NULL(gUnknown_0203CF0C->frameImage);
- FREE_AND_SET_NULL(gUnknown_0203CF0C->frameImageTiles);
- FREE_AND_SET_NULL(gUnknown_0203CF0C);
+ DestroySprite(&gSprites[sUnknown_0203CF0C->spriteId]);
+ FREE_AND_SET_NULL(sUnknown_0203CF0C->unkC);;
+ FREE_AND_SET_NULL(sUnknown_0203CF0C->frameImage);
+ FREE_AND_SET_NULL(sUnknown_0203CF0C->frameImageTiles);
+ FREE_AND_SET_NULL(sUnknown_0203CF0C);
break;
case 8:
EnableBothScriptContexts();
+ break;
}
- ++gTasks[taskId].data[0];
+
+ gTasks[taskId].data[0]++;
}
static void sub_81BF248(struct Sprite *sprite)
{
- if (gUnknown_0203CF0C->unk10 >= (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH))
+ if (sUnknown_0203CF0C->unk10 >= (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH))
{
sprite->callback = SpriteCallbackDummy;
}
@@ -759,7 +407,7 @@ static void sub_81BF248(struct Sprite *sprite)
u8 i;
for (i = 0; i < 2; i++)
{
- sub_81BF2B8(gUnknown_0203CF0C->frameImageTiles, gUnknown_0203CF0C->unkC[gUnknown_0203CF0C->unk10++], 0, 16, 0);
+ sub_81BF2B8(sUnknown_0203CF0C->frameImageTiles, sUnknown_0203CF0C->unkC[sUnknown_0203CF0C->unk10++], 0, 16, 0);
}
StartSpriteAnim(sprite, 0);
}
@@ -768,3 +416,146 @@ static void sub_81BF248(struct Sprite *sprite)
sprite->pos1.y++;
}
}
+
+#ifdef NONMATCHING
+static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e)
+{
+ u8 r5, r4, r0, r2;
+ u16 var;
+
+ r4 = r5 = b / d;
+ gUnknown_030012A8[0] = r4;
+
+ r0 = r2 = b % d;
+ gUnknown_030012A8[1] = r2;
+
+ r4 &= 7;
+ r2 &= 7;
+ gUnknown_030012A8[2] = r4;
+ gUnknown_030012A8[3] = r2;
+
+ r0 /= 8;
+ r5 /= 8;
+ gUnknown_030012A8[4] = r0;
+ gUnknown_030012A8[5] = r5;
+
+ var = ((d / 8) * (r5 * 64)) + (r0 * 64);
+ gUnknown_030012A8[6] = var;
+
+ var += (r4 * 8) + r2;
+ gUnknown_030012A8[7] = var;
+
+ // This part is non-matching. 99% sure it IS functionally equivalent, though.
+ b = (b & 1) ^ 1;
+ c = (c << ((b) << 2)) | (15 << ((b ^ 1) << 2));
+
+ a[(var / 2) + (e * 32)] &= c;
+}
+
+#else
+NAKED
+static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e)
+{
+ asm_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, 0x8\n\
+ str r0, [sp]\n\
+ mov r10, r1\n\
+ adds r6, r2, 0\n\
+ mov r8, r3\n\
+ ldr r0, [sp, 0x28]\n\
+ mov r9, r0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r10, r1\n\
+ lsls r6, 24\n\
+ lsrs r6, 24\n\
+ mov r0, r8\n\
+ lsls r0, 24\n\
+ mov r8, r0\n\
+ lsrs r7, r0, 24\n\
+ mov r1, r9\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r9, r1\n\
+ mov r0, r10\n\
+ adds r1, r7, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ lsls r5, 24\n\
+ lsrs r4, r5, 24\n\
+ ldr r3, =gUnknown_030012A8\n\
+ strh r4, [r3]\n\
+ mov r0, r10\n\
+ adds r1, r7, 0\n\
+ str r3, [sp, 0x4]\n\
+ bl __modsi3\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ ldr r3, [sp, 0x4]\n\
+ strh r2, [r3, 0x2]\n\
+ movs r1, 0x7\n\
+ ands r4, r1\n\
+ ands r2, r1\n\
+ strh r4, [r3, 0x4]\n\
+ strh r2, [r3, 0x6]\n\
+ lsrs r0, 27\n\
+ lsrs r5, 27\n\
+ strh r0, [r3, 0x8]\n\
+ strh r5, [r3, 0xA]\n\
+ mov r1, r8\n\
+ lsrs r1, 27\n\
+ lsls r1, 6\n\
+ mov r8, r1\n\
+ mov r1, r8\n\
+ muls r1, r5\n\
+ lsls r0, 6\n\
+ adds r1, r0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ strh r1, [r3, 0xC]\n\
+ lsls r4, 3\n\
+ adds r4, r2\n\
+ adds r1, r4\n\
+ lsls r4, r1, 16\n\
+ lsrs r4, 17\n\
+ strh r1, [r3, 0xE]\n\
+ movs r1, 0x1\n\
+ mov r0, r10\n\
+ ands r1, r0\n\
+ movs r2, 0x1\n\
+ eors r1, r2\n\
+ lsls r0, r1, 2\n\
+ lsls r6, r0\n\
+ eors r1, r2\n\
+ lsls r1, 2\n\
+ movs r0, 0xF\n\
+ lsls r0, r1\n\
+ orrs r6, r0\n\
+ lsls r6, 24\n\
+ lsrs r6, 24\n\
+ mov r1, r9\n\
+ lsls r1, 5\n\
+ mov r9, r1\n\
+ add r9, r4\n\
+ ldr r1, [sp]\n\
+ add r1, r9\n\
+ ldrb r0, [r1]\n\
+ ands r6, r0\n\
+ strb r6, [r1]\n\
+ add sp, 0x8\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\
+ .pool\n\
+ ");
+}
+#endif // NONMATCHING
diff --git a/src/frontier_util.c b/src/frontier_util.c
new file mode 100644
index 000000000..5af7b3db7
--- /dev/null
+++ b/src/frontier_util.c
@@ -0,0 +1,2847 @@
+#include "global.h"
+#include "frontier_util.h"
+#include "event_data.h"
+#include "battle_setup.h"
+#include "overworld.h"
+#include "random.h"
+#include "battle_tower.h"
+#include "field_specials.h"
+#include "battle.h"
+#include "script_pokemon_util_80F87D8.h"
+#include "main.h"
+#include "window.h"
+#include "menu.h"
+#include "text.h"
+#include "battle_records.h"
+#include "international_string_util.h"
+#include "string_util.h"
+#include "new_game.h"
+#include "link.h"
+#include "tv.h"
+#include "apprentice.h"
+#include "pokedex.h"
+#include "recorded_battle.h"
+#include "data2.h"
+#include "record_mixing.h"
+#include "strings.h"
+#include "malloc.h"
+#include "save.h"
+#include "load_save.h"
+#include "battle_dome.h"
+#include "constants/battle_frontier.h"
+#include "constants/trainers.h"
+#include "constants/species.h"
+#include "constants/game_stat.h"
+#include "constants/moves.h"
+#include "constants/items.h"
+#include "constants/event_objects.h"
+
+extern u8 gSelectedOrderFromParty[];
+
+struct FrontierBrainMon
+{
+ u16 species;
+ u16 heldItem;
+ u8 fixedIV;
+ u8 nature;
+ u8 evs[NUM_STATS];
+ u16 moves[4];
+};
+
+extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
+
+extern void sub_81B8558(void);
+
+// This file's functions.
+static void sub_81A17A0(void);
+static void sub_81A1830(void);
+static void sub_81A1968(void);
+static void sub_81A1AD4(void);
+static void DoSoftReset_(void);
+static void sub_81A1B28(void);
+static void sub_81A1B38(void);
+static void ShowFacilityResultsWindow(void);
+static void sub_81A31FC(void);
+static void sub_81A35EC(void);
+static void sub_81A3B00(void);
+static void sub_81A3B64(void);
+static void sub_81A3D30(void);
+static void sub_81A3D58(void);
+static void sub_81A3DA0(void);
+static void sub_81A3FD4(void);
+static void sub_81A4224(void);
+static void sub_81A4230(void);
+static void sub_81A43A8(void);
+static void sub_81A4410(void);
+static void sub_81A443C(void);
+static void sub_81A447C(void);
+static void sub_81A457C(void);
+static void ShowTowerResultsWindow(u8);
+static void ShowDomeResultsWindow(u8);
+static void ShowPalaceResultsWindow(u8);
+static void ShowPikeResultsWindow(void);
+static void ShowFactoryResultsWindow(u8);
+static void ShowArenaResultsWindow(void);
+static void ShowPyramidResultsWindow(void);
+static void ShowLinkContestResultsWindow(void);
+static void CopyFrontierBrainText(bool8 playerWonText);
+
+// const rom data
+static const u8 gUnknown_08611550[][4] =
+{
+ [FRONTIER_FACILITY_TOWER] = {0x23, 0x46, 0x23, 0x01},
+ [FRONTIER_FACILITY_DOME] = {0x04, 0x09, 0x05, 0x00},
+ [FRONTIER_FACILITY_PALACE] = {0x15, 0x2a, 0x15, 0x01},
+ [FRONTIER_FACILITY_ARENA] = {0x1c, 0x38, 0x1c, 0x01},
+ [FRONTIER_FACILITY_FACTORY] = {0x15, 0x2a, 0x15, 0x01},
+ [FRONTIER_FACILITY_PIKE] = {0x1c, 0x8c, 0x38, 0x01},
+ [FRONTIER_FACILITY_PYRAMID] = {0x15, 0x46, 0x23, 0x00},
+};
+
+static const struct FrontierBrainMon sFrontierBrainsMons[][2][3] =
+{
+ [FRONTIER_FACILITY_TOWER] =
+ {
+ // Silver Symbol.
+ {
+ {
+ .species = SPECIES_ALAKAZAM,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .fixedIV = 24,
+ .nature = 15,
+ .evs = {106, 0, 152, 152, 100, 0},
+ .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_DISABLE},
+ },
+ {
+ .species = SPECIES_ENTEI,
+ .heldItem = ITEM_LUM_BERRY,
+ .fixedIV = 24,
+ .nature = 1,
+ .evs = {100, 152, 152, 0, 100, 6},
+ .moves = {MOVE_FIRE_BLAST, MOVE_CALM_MIND, MOVE_RETURN, MOVE_ROAR},
+ },
+ {
+ .species = SPECIES_SNORLAX,
+ .heldItem = ITEM_QUICK_CLAW,
+ .fixedIV = 24,
+ .nature = 3,
+ .evs = {152, 152, 0, 0, 106, 100},
+ .moves = {MOVE_BODY_SLAM, MOVE_BELLY_DRUM, MOVE_YAWN, MOVE_SHADOW_BALL},
+ },
+ },
+ // Gold Symbol.
+ {
+ {
+ .species = SPECIES_RAIKOU,
+ .heldItem = ITEM_LUM_BERRY,
+ .fixedIV = 31,
+ .nature = 15,
+ .evs = {158, 0, 252, 100, 0, 0},
+ .moves = {MOVE_THUNDERBOLT, MOVE_CALM_MIND, MOVE_REFLECT, MOVE_REST},
+ },
+ {
+ .species = SPECIES_LATIOS,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .fixedIV = 31,
+ .nature = 15,
+ .evs = {252, 0, 252, 6, 0, 0},
+ .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_RECOVER, MOVE_DRAGON_CLAW},
+ },
+ {
+ .species = SPECIES_SNORLAX,
+ .heldItem = ITEM_CHESTO_BERRY,
+ .fixedIV = 31,
+ .nature = 3,
+ .evs = {252, 252, 0, 0, 6, 0},
+ .moves = {MOVE_CURSE, MOVE_RETURN, MOVE_REST, MOVE_SHADOW_BALL},
+ },
+ },
+ },
+ [FRONTIER_FACILITY_DOME] =
+ {
+ // Silver Symbol.
+ {
+ {
+ .species = SPECIES_SWAMPERT,
+ .heldItem = ITEM_FOCUS_BAND,
+ .fixedIV = 20,
+ .nature = 2,
+ .evs = {152, 152, 106, 0, 100, 0},
+ .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER},
+ },
+ {
+ .species = SPECIES_SALAMENCE,
+ .heldItem = ITEM_LUM_BERRY,
+ .fixedIV = 20,
+ .nature = 3,
+ .evs = {152, 152, 106, 100, 0, 0},
+ .moves = {MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE},
+ },
+ {
+ .species = SPECIES_CHARIZARD,
+ .heldItem = ITEM_WHITE_HERB,
+ .fixedIV = 20,
+ .nature = 17,
+ .evs = {100, 152, 106, 152, 0, 0},
+ .moves = {MOVE_OVERHEAT, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE, MOVE_EARTHQUAKE},
+ },
+ },
+ // Gold Symbol.
+ {
+ {
+ .species = SPECIES_SWAMPERT,
+ .heldItem = ITEM_LEFTOVERS,
+ .fixedIV = 31,
+ .nature = 2,
+ .evs = {252, 252, 6, 0, 0, 0},
+ .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT},
+ },
+ {
+ .species = SPECIES_METAGROSS,
+ .heldItem = ITEM_QUICK_CLAW,
+ .fixedIV = 31,
+ .nature = 2,
+ .evs = {252, 252, 6, 0, 0, 0},
+ .moves = {MOVE_PSYCHIC, MOVE_METEOR_MASH, MOVE_EARTHQUAKE, MOVE_PROTECT},
+ },
+ {
+ .species = SPECIES_LATIAS,
+ .heldItem = ITEM_CHESTO_BERRY,
+ .fixedIV = 31,
+ .nature = 15,
+ .evs = {252, 0, 252, 6, 0, 0},
+ .moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_REST},
+ },
+ },
+ },
+ [FRONTIER_FACILITY_PALACE] =
+ {
+ // Silver Symbol.
+ {
+ {
+ .species = SPECIES_CROBAT,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .fixedIV = 16,
+ .nature = 3,
+ .evs = {152, 0, 0, 152, 100, 106},
+ .moves = {MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM, MOVE_TOXIC, MOVE_FLY},
+ },
+ {
+ .species = SPECIES_SLAKING,
+ .heldItem = ITEM_SCOPE_LENS,
+ .fixedIV = 16,
+ .nature = 0,
+ .evs = {152, 152, 0, 106, 100, 0},
+ .moves = {MOVE_EARTHQUAKE, MOVE_SWAGGER, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK},
+ },
+ {
+ .species = SPECIES_LAPRAS,
+ .heldItem = ITEM_QUICK_CLAW,
+ .fixedIV = 16,
+ .nature = 17,
+ .evs = {0, 0, 252, 0, 106, 152},
+ .moves = {MOVE_ICE_BEAM, MOVE_HORN_DRILL, MOVE_CONFUSE_RAY, MOVE_PROTECT},
+ },
+ },
+ // Gold Symbol.
+ {
+ {
+ .species = SPECIES_ARCANINE,
+ .heldItem = ITEM_WHITE_HERB,
+ .fixedIV = 31,
+ .nature = 11,
+ .evs = {6, 252, 252, 0, 0, 0},
+ .moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_ROAR, MOVE_PROTECT},
+ },
+ {
+ .species = SPECIES_SLAKING,
+ .heldItem = ITEM_SCOPE_LENS,
+ .fixedIV = 31,
+ .nature = 0,
+ .evs = {6, 252, 0, 252, 0, 0},
+ .moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_YAWN},
+ },
+ {
+ .species = SPECIES_SUICUNE,
+ .heldItem = ITEM_KINGS_ROCK,
+ .fixedIV = 31,
+ .nature = 11,
+ .evs = {252, 0, 252, 6, 0, 0},
+ .moves = {MOVE_BLIZZARD, MOVE_SURF, MOVE_BITE, MOVE_CALM_MIND},
+ },
+ },
+ },
+ [FRONTIER_FACILITY_ARENA] =
+ {
+ // Silver Symbol.
+ {
+ {
+ .species = SPECIES_HERACROSS,
+ .heldItem = ITEM_SALAC_BERRY,
+ .fixedIV = 20,
+ .nature = 13,
+ .evs = {106, 152, 0, 152, 0, 100},
+ .moves = {MOVE_MEGAHORN, MOVE_ROCK_TOMB, MOVE_ENDURE, MOVE_REVERSAL},
+ },
+ {
+ .species = SPECIES_UMBREON,
+ .heldItem = ITEM_LEFTOVERS,
+ .fixedIV = 20,
+ .nature = 20,
+ .evs = {152, 0, 100, 0, 152, 106},
+ .moves = {MOVE_BODY_SLAM, MOVE_CONFUSE_RAY, MOVE_PSYCHIC, MOVE_FAINT_ATTACK},
+ },
+ {
+ .species = SPECIES_SHEDINJA,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .fixedIV = 20,
+ .nature = 3,
+ .evs = {0, 252, 6, 252, 0, 0},
+ .moves = {MOVE_SHADOW_BALL, MOVE_RETURN, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE},
+ },
+ },
+ // Gold Symbol.
+ {
+ {
+ .species = SPECIES_UMBREON,
+ .heldItem = ITEM_CHESTO_BERRY,
+ .fixedIV = 31,
+ .nature = 20,
+ .evs = {252, 0, 0, 0, 252, 6},
+ .moves = {MOVE_DOUBLE_EDGE, MOVE_CONFUSE_RAY, MOVE_REST, MOVE_PSYCHIC},
+ },
+ {
+ .species = SPECIES_GENGAR,
+ .heldItem = ITEM_LEFTOVERS,
+ .fixedIV = 31,
+ .nature = 15,
+ .evs = {252, 0, 252, 0, 6, 0},
+ .moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_DESTINY_BOND},
+ },
+ {
+ .species = SPECIES_BRELOOM,
+ .heldItem = ITEM_LUM_BERRY,
+ .fixedIV = 31,
+ .nature = 13,
+ .evs = {6, 252, 0, 252, 0, 0},
+ .moves = {MOVE_SPORE, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_HEADBUTT},
+ },
+ },
+ },
+ [FRONTIER_FACILITY_FACTORY] =
+ {
+ // Because Factory's pokemon are random, this facility's Brain also uses random pokemon.
+ // What is interesting, this team is actually the one Steven uses in the multi tag battle alongside the player.
+ {
+ {
+ .species = SPECIES_METANG,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .fixedIV = 31,
+ .nature = 2,
+ .evs = {0, 252, 252, 0, 6, 0},
+ .moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_METAL_CLAW},
+ },
+ {
+ .species = SPECIES_SKARMORY,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .fixedIV = 31,
+ .nature = 8,
+ .evs = {252, 0, 0, 0, 6, 252},
+ .moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_PROTECT, MOVE_STEEL_WING},
+ },
+ {
+ .species = SPECIES_AGGRON,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .fixedIV = 31,
+ .nature = 3,
+ .evs = {0, 252, 0, 0, 252, 6},
+ .moves = {MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW},
+ },
+ },
+ {
+ {
+ .species = SPECIES_METANG,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .fixedIV = 31,
+ .nature = 2,
+ .evs = {0, 252, 252, 0, 6, 0},
+ .moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_METAL_CLAW},
+ },
+ {
+ .species = SPECIES_SKARMORY,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .fixedIV = 31,
+ .nature = 8,
+ .evs = {252, 0, 0, 0, 6, 252},
+ .moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_PROTECT, MOVE_STEEL_WING},
+ },
+ {
+ .species = SPECIES_AGGRON,
+ .heldItem = ITEM_SITRUS_BERRY,
+ .fixedIV = 31,
+ .nature = 3,
+ .evs = {0, 252, 0, 0, 252, 6},
+ .moves = {MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW},
+ },
+ },
+ },
+ [FRONTIER_FACILITY_PIKE] =
+ {
+ // Silver Symbol.
+ {
+ {
+ .species = SPECIES_SEVIPER,
+ .heldItem = ITEM_QUICK_CLAW,
+ .fixedIV = 16,
+ .nature = 2,
+ .evs = {252, 0, 252, 0, 6, 0},
+ .moves = {MOVE_SWAGGER, MOVE_CRUNCH, MOVE_POISON_FANG, MOVE_GIGA_DRAIN},
+ },
+ {
+ .species = SPECIES_SHUCKLE,
+ .heldItem = ITEM_CHESTO_BERRY,
+ .fixedIV = 16,
+ .nature = 5,
+ .evs = {252, 0, 0, 0, 106, 252},
+ .moves = {MOVE_TOXIC, MOVE_SANDSTORM, MOVE_PROTECT, MOVE_REST},
+ },
+ {
+ .species = SPECIES_MILOTIC,
+ .heldItem = ITEM_LEFTOVERS,
+ .fixedIV = 16,
+ .nature = 15,
+ .evs = {152, 0, 100, 0, 152, 106},
+ .moves = {MOVE_ICE_BEAM, MOVE_MIRROR_COAT, MOVE_SURF, MOVE_RECOVER},
+ },
+ },
+ // Gold Symbol.
+ {
+ {
+ .species = SPECIES_SEVIPER,
+ .heldItem = ITEM_FOCUS_BAND,
+ .fixedIV = 31,
+ .nature = 5,
+ .evs = {252, 0, 0, 0, 252, 6},
+ .moves = {MOVE_SWAGGER, MOVE_CRUNCH, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN},
+ },
+ {
+ .species = SPECIES_STEELIX,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .fixedIV = 31,
+ .nature = 2,
+ .evs = {252, 0, 0, 0, 6, 252},
+ .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_EXPLOSION, MOVE_SCREECH},
+ },
+ {
+ .species = SPECIES_GYARADOS,
+ .heldItem = ITEM_CHESTO_BERRY,
+ .fixedIV = 31,
+ .nature = 3,
+ .evs = {252, 6, 0, 0, 0, 252},
+ .moves = {MOVE_DRAGON_DANCE, MOVE_RETURN, MOVE_ROAR, MOVE_REST},
+ },
+ },
+ },
+ [FRONTIER_FACILITY_PYRAMID] =
+ {
+ // Silver Symbol.
+ {
+ {
+ .species = SPECIES_REGIROCK,
+ .heldItem = ITEM_QUICK_CLAW,
+ .fixedIV = 16,
+ .nature = 3,
+ .evs = {152, 152, 0, 0, 106, 100},
+ .moves = {MOVE_EXPLOSION, MOVE_SUPERPOWER, MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER},
+ },
+ {
+ .species = SPECIES_REGISTEEL,
+ .heldItem = ITEM_LEFTOVERS,
+ .fixedIV = 16,
+ .nature = 3,
+ .evs = {152, 152, 0, 0, 6, 200},
+ .moves = {MOVE_EARTHQUAKE, MOVE_METAL_CLAW, MOVE_TOXIC, MOVE_IRON_DEFENSE},
+ },
+ {
+ .species = SPECIES_REGICE,
+ .heldItem = ITEM_CHESTO_BERRY,
+ .fixedIV = 16,
+ .nature = 15,
+ .evs = {106, 0, 152, 0, 100, 152},
+ .moves = {MOVE_ICE_BEAM, MOVE_AMNESIA, MOVE_THUNDER, MOVE_REST},
+ },
+ },
+ // Gold Symbol.
+ {
+ {
+ .species = SPECIES_ARTICUNO,
+ .heldItem = ITEM_SCOPE_LENS,
+ .fixedIV = 31,
+ .nature = 16,
+ .evs = {6, 0, 252, 252, 0, 0},
+ .moves = {MOVE_BLIZZARD, MOVE_WATER_PULSE, MOVE_AERIAL_ACE, MOVE_REFLECT},
+ },
+ {
+ .species = SPECIES_ZAPDOS,
+ .heldItem = ITEM_LUM_BERRY,
+ .fixedIV = 31,
+ .nature = 16,
+ .evs = {6, 0, 252, 252, 0, 0},
+ .moves = {MOVE_THUNDER, MOVE_DETECT, MOVE_DRILL_PECK, MOVE_LIGHT_SCREEN},
+ },
+ {
+ .species = SPECIES_MOLTRES,
+ .heldItem = ITEM_BRIGHT_POWDER,
+ .fixedIV = 31,
+ .nature = 16,
+ .evs = {6, 0, 252, 252, 0, 0},
+ .moves = {MOVE_FIRE_BLAST, MOVE_HYPER_BEAM, MOVE_AERIAL_ACE, MOVE_SAFEGUARD},
+ },
+ },
+ },
+};
+
+static const u8 gUnknown_086118B4[][7][4] =
+{
+ {
+ {1, 2, 3, 3}, {1, 1, 0, 0}, {4, 5, 0, 0}, {1, 0, 0, 0}, {3, 4, 0, 0}, {1, 0, 0, 0}, {5, 0, 0, 0}
+ },
+ {
+ {2, 3, 4, 4}, {1, 1, 0, 0}, {4, 5, 0, 0}, {1, 0, 0, 0}, {3, 4, 0, 0}, {1, 0, 0, 0}, {5, 0, 0, 0}
+ },
+ {
+ {3, 4, 5, 5}, {2, 2, 0, 0}, {5, 6, 0, 0}, {1, 0, 0, 0}, {4, 5, 0, 0}, {2, 0, 0, 0}, {6, 0, 0, 0}
+ },
+ {
+ {4, 5, 6, 6}, {2, 2, 0, 0}, {5, 6, 0, 0}, {2, 0, 0, 0}, {4, 5, 0, 0}, {2, 0, 0, 0}, {6, 0, 0, 0}
+ },
+ {
+ {5, 6, 7, 7}, {3, 3, 0, 0}, {6, 7, 0, 0}, {2, 0, 0, 0}, {5, 6, 0, 0}, {2, 0, 0, 0}, {7, 0, 0, 0}
+ },
+ {
+ {6, 7, 8, 8}, {3, 3, 0, 0}, {6, 7, 0, 0}, {2, 0, 0, 0}, {5, 6, 0, 0}, {4, 0, 0, 0}, {7, 0, 0, 0}
+ },
+ {
+ {7, 8, 9, 9}, {4, 4, 0, 0}, {7, 8, 0, 0}, {3, 0, 0, 0}, {6, 7, 0, 0}, {4, 0, 0, 0}, {8, 0, 0, 0}
+ },
+ {
+ {8, 9, 10, 10}, {4, 4, 0, 0}, {7, 8, 0, 0}, {3, 0, 0, 0},{6, 7, 0, 0}, {4, 0, 0, 0}, {8, 0, 0, 0}
+ },
+ {
+ {9, 10, 11, 11}, {5, 5, 0, 0}, {8, 9, 0, 0}, {4, 0, 0, 0}, {7, 8, 0, 0}, {8, 0, 0, 0}, {9, 0, 0, 0}
+ },
+ {
+ {10, 11, 12, 12}, {5, 5, 0, 0}, {8, 9, 0, 0}, {4, 0, 0, 0}, {7, 8, 0, 0}, {8, 0, 0, 0}, {9, 0, 0, 0}
+ },
+ {
+ {11, 12, 13, 13}, {6, 6, 0, 0}, {9, 10, 0, 0}, {5, 0, 0,0}, {8, 9, 0, 0}, {8, 0, 0, 0}, {10, 0, 0, 0}
+ },
+ {
+ {12, 13, 14, 14}, {6, 6, 0, 0}, {9, 10, 0, 0}, {6, 0, 0,0}, {8, 9, 0, 0}, {8, 0, 0, 0}, {10, 0, 0, 0}
+ },
+ {
+ {13, 14, 15, 15}, {7, 7, 0, 0}, {10, 11, 0, 0}, {7, 0, 0, 0}, {9, 10, 0, 0}, {10, 0, 0, 0}, {11, 0, 0, 0}
+ },
+ {
+ {14, 15, 15, 15}, {7, 7, 0, 0}, {10, 11, 0, 0}, {8, 0, 0, 0}, {9, 10, 0, 0}, {10, 0, 0, 0}, {11, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {8, 8, 0, 0}, {11, 12, 0, 0}, {9, 0, 0, 0}, {10, 11, 0, 0}, {10, 0, 0, 0}, {12, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {8, 8, 0, 0}, {11, 12, 0, 0}, {10, 0, 0, 0}, {10, 11, 0, 0}, {10, 0, 0, 0}, {12, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {9, 9, 0, 0}, {12, 13, 0, 0}, {11, 0, 0, 0}, {11, 12, 0, 0}, {12, 0, 0, 0}, {13, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {9, 9, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {11, 12, 0, 0}, {12, 0, 0, 0}, {13, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {10, 10, 0, 0}, {13, 14, 0, 0}, {13, 0, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {14, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {10, 10, 0, 0}, {13, 14, 0, 0}, {14, 0, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {14, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {11, 11, 0, 0}, {14, 15, 0, 0}, {15, 0, 0, 0}, {13, 14, 0, 0}, {12, 0, 0, 0}, {15, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {11, 11, 0, 0}, {14, 15, 0, 0}, {15, 0, 0, 0}, {13, 14, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {12, 12, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {14, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {12, 12, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {14, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {13, 13, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {13, 13, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {14, 14, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {14, 14, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {15, 15, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0}
+ },
+ {
+ {15, 15, 15, 15}, {15, 15, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0}
+ },
+};
+
+static const u16 gUnknown_08611BFC[][2] =
+{
+ [FRONTIER_FACILITY_TOWER] = {0x0001, 0x0002},
+ [FRONTIER_FACILITY_DOME] = {0x0004, 0x0008},
+ [FRONTIER_FACILITY_PALACE] = {0x0010, 0x0020},
+ [FRONTIER_FACILITY_ARENA] = {0x0040, 0x0080},
+ [FRONTIER_FACILITY_FACTORY] = {0x0100, 0x0200},
+ [FRONTIER_FACILITY_PIKE] = {0x0400, 0x0800},
+ [FRONTIER_FACILITY_PYRAMID] = {0x1000, 0x2000},
+};
+
+static void (* const sFrontierUtilFuncs[])(void) =
+{
+ sub_81A17A0,
+ sub_81A1830,
+ sub_81A1968,
+ sub_81A1AD4,
+ DoSoftReset_,
+ sub_81A1B28,
+ sub_81A1B38,
+ ShowFacilityResultsWindow,
+ sub_81A31FC,
+ sub_81A35EC,
+ sub_81A3B00,
+ sub_81A3B64,
+ sub_81A3D30,
+ sub_81A3D58,
+ sub_81A3DA0,
+ sub_81A3FD4,
+ sub_81A4224,
+ sub_81A4230,
+ sub_81A43A8,
+ sub_81A4410,
+ sub_81A443C,
+ sub_81A447C,
+ sub_81A457C,
+};
+
+static const struct WindowTemplate gUnknown_08611C74 =
+{
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 0x1c,
+ .height = 0x12,
+ .paletteNum = 15,
+ .baseBlock = 1
+};
+
+static const struct WindowTemplate gUnknown_08611C7C =
+{
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 2,
+ .width = 0x1a,
+ .height = 15,
+ .paletteNum = 15,
+ .baseBlock = 1
+};
+
+static const struct WindowTemplate gUnknown_08611C84 =
+{
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 1,
+ .width = 0x1a,
+ .height = 17,
+ .paletteNum = 15,
+ .baseBlock = 1
+};
+
+// Second field - whether the character is female.
+static const u8 sFacilityToBrainEventObjGfx[][2] =
+{
+ [FRONTIER_FACILITY_TOWER] = {EVENT_OBJ_GFX_ANABEL, TRUE},
+ [FRONTIER_FACILITY_DOME] = {EVENT_OBJ_GFX_TUCKER, FALSE},
+ [FRONTIER_FACILITY_PALACE] = {EVENT_OBJ_GFX_SPENSER, FALSE},
+ [FRONTIER_FACILITY_ARENA] = {EVENT_OBJ_GFX_GRETA, TRUE},
+ [FRONTIER_FACILITY_FACTORY] = {EVENT_OBJ_GFX_NOLAND, FALSE},
+ [FRONTIER_FACILITY_PIKE] = {EVENT_OBJ_GFX_LUCY, TRUE},
+ [FRONTIER_FACILITY_PYRAMID] = {EVENT_OBJ_GFX_BRANDON, FALSE},
+};
+
+const u16 gFrontierBannedSpecies[] =
+{
+ SPECIES_MEW, SPECIES_MEWTWO, SPECIES_HO_OH, SPECIES_LUGIA, SPECIES_CELEBI,
+ SPECIES_KYOGRE, SPECIES_GROUDON, SPECIES_RAYQUAZA, SPECIES_JIRACHI, SPECIES_DEOXYS, 0xFFFF
+};
+
+static const u8 *const gUnknown_08611CB0[][2] =
+{
+ {gText_BattleTower2, gUnknown_085ED164},
+ {gText_BattleTower2, gUnknown_085ED170},
+ {gText_BattleTower2, gUnknown_085ED17C},
+ {gText_BattleDome, gUnknown_085ED164},
+ {gText_BattlePalace, gUnknown_085ED164},
+ {gText_BattleArena, gUnknown_085ED190},
+ {gText_BattleFactory, gUnknown_085ED164},
+ {gText_BattlePike, gUnknown_085ED190},
+ {gText_BattlePyramid, gUnknown_085ED190},
+ {gText_BattleTower2, gUnknown_085ED188},
+};
+
+static const u8 *const gLevelModeText[] =
+{
+ gText_RecordsLv50,
+ gText_RecordsOpenLevel,
+};
+
+static const u8 *const gHallFacilityToRecordsText[] =
+{
+ gText_FrontierFacilityWinStreak,
+ gText_FrontierFacilityWinStreak,
+ gText_FrontierFacilityWinStreak,
+ gText_FrontierFacilityClearStreak,
+ gText_FrontierFacilityWinStreak,
+ gText_FrontierFacilityKOsStreak,
+ gText_FrontierFacilityWinStreak,
+ gText_FrontierFacilityRoomsCleared,
+ gText_FrontierFacilityFloorsCleared,
+ gText_FrontierFacilityWinStreak,
+};
+
+static const u16 gFacilityToBrainTrainerId[] =
+{
+ [FRONTIER_FACILITY_TOWER] = TRAINER_ANABEL,
+ [FRONTIER_FACILITY_DOME] = TRAINER_TUCKER,
+ [FRONTIER_FACILITY_PALACE] = TRAINER_SPENSER,
+ [FRONTIER_FACILITY_ARENA] = TRAINER_GRETA,
+ [FRONTIER_FACILITY_FACTORY] = TRAINER_NOLAND,
+ [FRONTIER_FACILITY_PIKE] = TRAINER_LUCY,
+ [FRONTIER_FACILITY_PYRAMID] = TRAINER_BRANDON,
+};
+
+static const u8 *const gUnknown_08611D40[] =
+{
+ gText_082C843F,
+ gText_082C848B,
+ gText_082C8628,
+ gText_082C85B4,
+ gText_082C8512,
+ gText_082C859D,
+ gText_082C86C3,
+};
+
+static const u8 *const gUnknown_08611D5C[] =
+{
+ gText_082C8458,
+ gText_082C84C1,
+ gText_082C8662,
+ gText_082C85E3,
+ gText_082C853B,
+ gText_082C85A4,
+ gText_082C86FE,
+};
+
+static const u8 *const gUnknown_08611D78[] =
+{
+ gText_082C846C,
+ gText_082C84D0,
+ gText_082C8682,
+ gText_082C85F5,
+ gText_082C8561,
+ gText_082C85A9,
+ gText_082C8739,
+};
+
+static const u8 *const gUnknown_08611D94[] =
+{
+ gText_082C8480,
+ gText_082C84F7,
+ gText_082C86B3,
+ gText_082C8611,
+ gText_082C8589,
+ gText_082C85AE,
+ gText_082C877B,
+};
+
+static const u8 *const *const gUnknown_08611DB0[] =
+{
+ gUnknown_08611D40,
+ gUnknown_08611D78,
+};
+
+static const u8 *const *const gUnknown_08611DB8[] =
+{
+ gUnknown_08611D5C,
+ gUnknown_08611D94,
+};
+
+// code
+void CallFrontierUtilFunc(void)
+{
+ sFrontierUtilFuncs[gSpecialVar_0x8004]();
+}
+
+static void sub_81A17A0(void)
+{
+ VarSet(VAR_TEMP_0, 0xFF);
+ switch (gSaveBlock2Ptr->frontier.field_CA8)
+ {
+ case 0:
+ break;
+ case 1:
+ sub_813A878(0);
+ VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8);
+ break;
+ case 4:
+ sub_813A878(0);
+ VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8);
+ break;
+ case 3:
+ sub_813A878(1);
+ VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8);
+ break;
+ case 2:
+ VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8);
+ break;
+ }
+}
+
+static void sub_81A1830(void)
+{
+ u8 facility = VarGet(VAR_FRONTIER_FACILITY);
+ u8 currSymbol = GetPlayerSymbolCountForFacility(facility);
+ if (currSymbol == 2)
+ currSymbol = 1;
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CA8;
+ break;
+ case 1:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.lvlMode;
+ break;
+ case 2:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
+ break;
+ case 3:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CA9_a;
+ break;
+ case 5:
+ gSpecialVar_Result = gBattleOutcome;
+ gBattleOutcome = 0;
+ break;
+ case 6:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CA9_b;
+ break;
+ case 7:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D00 & gUnknown_08611BFC[facility][currSymbol];
+ break;
+ }
+}
+
+static void sub_81A1968(void)
+{
+ s32 i;
+ u8 facility = VarGet(VAR_FRONTIER_FACILITY);
+ u8 currSymbol = GetPlayerSymbolCountForFacility(facility);
+ if (currSymbol == 2)
+ currSymbol = 1;
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8006;
+ break;
+ case 1:
+ gSaveBlock2Ptr->frontier.lvlMode = gSpecialVar_0x8006;
+ break;
+ case 2:
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = gSpecialVar_0x8006;
+ break;
+ case 3:
+ gSaveBlock2Ptr->frontier.field_CA9_a = gSpecialVar_0x8006;
+ break;
+ case 4:
+ for (i = 0; i < 4; i++)
+ gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i];
+ break;
+ case 6:
+ gSaveBlock2Ptr->frontier.field_CA9_b = gSpecialVar_0x8006;
+ break;
+ case 7:
+ gSaveBlock2Ptr->frontier.field_D00 |= gUnknown_08611BFC[facility][currSymbol];
+ break;
+ }
+}
+
+static void sub_81A1AD4(void)
+{
+ s32 i;
+
+ sub_81B8558();
+ for (i = 0; i < gSpecialVar_0x8005; i++)
+ gSelectedOrderFromParty[i] = gSaveBlock2Ptr->frontier.selectedPartyMons[i];
+ ReducePlayerPartyToSelectedMons();
+}
+
+static void DoSoftReset_(void)
+{
+ DoSoftReset();
+}
+
+static void sub_81A1B28(void)
+{
+ gFacilityTrainers = gBattleFrontierTrainers;
+}
+
+static void sub_81A1B38(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ u16 monId = gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1;
+ if (monId < PARTY_SIZE)
+ gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1] = gPlayerParty[i];
+ }
+}
+
+static void ShowFacilityResultsWindow(void)
+{
+ if (gSpecialVar_0x8006 > 3)
+ gSpecialVar_0x8006 = 0;
+ switch (gSpecialVar_0x8005)
+ {
+ case FRONTIER_FACILITY_TOWER:
+ ShowTowerResultsWindow(gSpecialVar_0x8006);
+ break;
+ case FRONTIER_FACILITY_DOME:
+ ShowDomeResultsWindow(gSpecialVar_0x8006);
+ break;
+ case FRONTIER_FACILITY_PALACE:
+ ShowPalaceResultsWindow(gSpecialVar_0x8006);
+ break;
+ case FRONTIER_FACILITY_PIKE:
+ ShowPikeResultsWindow();
+ break;
+ case FRONTIER_FACILITY_FACTORY:
+ ShowFactoryResultsWindow(gSpecialVar_0x8006);
+ break;
+ case FRONTIER_FACILITY_ARENA:
+ ShowArenaResultsWindow();
+ break;
+ case FRONTIER_FACILITY_PYRAMID:
+ ShowPyramidResultsWindow();
+ break;
+ case RESULTS_LINK_CONTEST:
+ ShowLinkContestResultsWindow();
+ break;
+ }
+}
+
+static bool8 sub_81A1C24(u32 flags)
+{
+ if (gSaveBlock2Ptr->frontier.field_CDC & flags)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void PrintAligned(const u8 *str, s32 y)
+{
+ s32 x = GetStringCenterAlignXOffset(1, str, 224);
+ y = (y * 8) + 1;
+ AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, y, TEXT_SPEED_FF, NULL);
+}
+
+static void PrintHyphens(s32 y)
+{
+ s32 i;
+ u8 text[37];
+
+ for (i = 0; i < 36; i++)
+ text[i] = CHAR_HYPHEN;
+ text[i] = EOS;
+
+ y = (y * 8) + 1;
+ AddTextPrinterParameterized(gRecordsWindowId, 1, text, 4, y, TEXT_SPEED_FF, NULL);
+}
+
+// Battle Tower records.
+static void TowerPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
+{
+ AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
+ if (num > 9999)
+ num = 9999;
+ ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, gText_WinStreak);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
+}
+
+static void TowerPrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
+{
+ u16 num = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[battleMode][lvlMode];
+ TowerPrintStreak(gText_Record, num, x1, x2, y);
+}
+
+static u16 TowerGetWinStreak(u8 battleMode, u8 lvlMode)
+{
+ u16 winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode];
+ if (winStreak > 9999)
+ return 9999;
+ else
+ return winStreak;
+}
+
+static void TowerPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
+{
+ bool8 isCurrent;
+ u16 winStreak = TowerGetWinStreak(battleMode, lvlMode);
+ switch (battleMode)
+ {
+ default:
+ case FRONTIER_MODE_SINGLES:
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(2);
+ else
+ isCurrent = sub_81A1C24(1);
+ break;
+ case FRONTIER_MODE_DOUBLES:
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(0x8000);
+ else
+ isCurrent = sub_81A1C24(0x4000);
+ break;
+ case FRONTIER_MODE_MULTIS:
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(0x20000);
+ else
+ isCurrent = sub_81A1C24(0x10000);
+ break;
+ case FRONTIER_MODE_LINK_MULTIS:
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(0x80000);
+ else
+ isCurrent = sub_81A1C24(0x40000);
+ break;
+ }
+
+ if (isCurrent == TRUE)
+ TowerPrintStreak(gText_Current, winStreak, x1, x2, y);
+ else
+ TowerPrintStreak(gText_Prev, winStreak, x1, x2, y);
+}
+
+static void ShowTowerResultsWindow(u8 battleMode)
+{
+ gRecordsWindowId = AddWindow(&gUnknown_08611C74);
+ NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ if (battleMode == FRONTIER_MODE_SINGLES)
+ StringExpandPlaceholders(gStringVar4, gText_SingleBattleRoomResults);
+ else if (battleMode == FRONTIER_MODE_DOUBLES)
+ StringExpandPlaceholders(gStringVar4, gText_DoubleBattleRoomResults);
+ else if (battleMode == FRONTIER_MODE_MULTIS)
+ StringExpandPlaceholders(gStringVar4, gText_MultiBattleRoomResults);
+ else
+ StringExpandPlaceholders(gStringVar4, gText_LinkMultiBattleRoomResults);
+
+ PrintAligned(gStringVar4, 2);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 16, 49, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 16, 97, TEXT_SPEED_FF, NULL);
+ PrintHyphens(10);
+ TowerPrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_50, 72, 132, 49);
+ TowerPrintRecordStreak(battleMode, FRONTIER_LVL_50, 72, 132, 65);
+ TowerPrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_OPEN, 72, 132, 97);
+ TowerPrintRecordStreak(battleMode, FRONTIER_LVL_OPEN, 72, 132, 113);
+ PutWindowTilemap(gRecordsWindowId);
+ CopyWindowToVram(gRecordsWindowId, 3);
+}
+
+// Battle Dome records.
+static u16 DomeGetWinStreak(u8 battleMode, u8 lvlMode)
+{
+ u16 winStreak = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode];
+ if (winStreak > 9999)
+ return 9999;
+ else
+ return winStreak;
+}
+
+static void PrintTwoStrings(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y)
+{
+ AddTextPrinterParameterized(gRecordsWindowId, 1, str1, x1, y, TEXT_SPEED_FF, NULL);
+ ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, str2);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
+}
+
+static void DomePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
+{
+ bool8 isCurrent;
+ u16 winStreak = DomeGetWinStreak(battleMode, lvlMode);
+ switch (battleMode)
+ {
+ default:
+ case FRONTIER_MODE_SINGLES:
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(8);
+ else
+ isCurrent = sub_81A1C24(4);
+ break;
+ case FRONTIER_MODE_DOUBLES:
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(0x200000);
+ else
+ isCurrent = sub_81A1C24(0x100000);
+ break;
+ }
+
+ if (isCurrent == TRUE)
+ PrintTwoStrings(gText_Current, gText_ClearStreak, winStreak, x1, x2, y);
+ else
+ PrintTwoStrings(gText_Prev, gText_ClearStreak, winStreak, x1, x2, y);
+}
+
+static void ShowDomeResultsWindow(u8 battleMode)
+{
+ gRecordsWindowId = AddWindow(&gUnknown_08611C74);
+ NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ if (battleMode == FRONTIER_MODE_SINGLES)
+ StringExpandPlaceholders(gStringVar4, gText_SingleBattleTourneyResults);
+ else
+ StringExpandPlaceholders(gStringVar4, gText_DoubleBattleTourneyResults);
+
+ PrintAligned(gStringVar4, 0);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 33, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 8, 97, TEXT_SPEED_FF, NULL);
+ PrintHyphens(10);
+ DomePrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_50, 64, 121, 33);
+ PrintTwoStrings(gText_Record, gText_ClearStreak, gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][FRONTIER_LVL_50], 64, 121, 49);
+ PrintTwoStrings(gText_Total, gText_Championships, gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][FRONTIER_LVL_50], 64, 112, 65);
+ DomePrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_OPEN, 64, 121, 97);
+ PrintTwoStrings(gText_Record, gText_ClearStreak, gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][FRONTIER_LVL_OPEN], 64, 121, 113);
+ PrintTwoStrings(gText_Total, gText_Championships, gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][FRONTIER_LVL_OPEN], 64, 112, 129);
+ PutWindowTilemap(gRecordsWindowId);
+ CopyWindowToVram(gRecordsWindowId, 3);
+}
+
+// Battle Palace records.
+static void PalacePrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
+{
+ AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
+ if (num > 9999)
+ num = 9999;
+ ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, gText_WinStreak);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
+}
+
+static void PalacePrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
+{
+ u16 num = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode];
+ PalacePrintStreak(gText_Record, num, x1, x2, y);
+}
+
+static u16 PalaceGetWinStreak(u8 battleMode, u8 lvlMode)
+{
+ u16 winStreak = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
+ if (winStreak > 9999)
+ return 9999;
+ else
+ return winStreak;
+}
+
+static void PalacePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
+{
+ bool8 isCurrent;
+ u16 winStreak = PalaceGetWinStreak(battleMode, lvlMode);
+ switch (battleMode)
+ {
+ default:
+ case FRONTIER_MODE_SINGLES:
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(0x20);
+ else
+ isCurrent = sub_81A1C24(0x10);
+ break;
+ case FRONTIER_MODE_DOUBLES:
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(0x800000);
+ else
+ isCurrent = sub_81A1C24(0x400000);
+ }
+
+ if (isCurrent == TRUE)
+ PalacePrintStreak(gText_Current, winStreak, x1, x2, y);
+ else
+ PalacePrintStreak(gText_Prev, winStreak, x1, x2, y);
+}
+
+static void ShowPalaceResultsWindow(u8 battleMode)
+{
+ gRecordsWindowId = AddWindow(&gUnknown_08611C74);
+ NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ if (battleMode == FRONTIER_MODE_SINGLES)
+ StringExpandPlaceholders(gStringVar4, gText_SingleBattleHallResults);
+ else
+ StringExpandPlaceholders(gStringVar4, gText_DoubleBattleHallResults);
+
+ PrintAligned(gStringVar4, 2);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 16, 49, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 16, 97, TEXT_SPEED_FF, NULL);
+ PrintHyphens(10);
+ PalacePrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_50, 72, 131, 49);
+ PalacePrintRecordStreak(battleMode, FRONTIER_LVL_50, 72, 131, 65);
+ PalacePrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_OPEN, 72, 131, 97);
+ PalacePrintRecordStreak(battleMode, FRONTIER_LVL_OPEN, 72, 131, 113);
+ PutWindowTilemap(gRecordsWindowId);
+ CopyWindowToVram(gRecordsWindowId, 3);
+}
+
+// Battle Pike records.
+static u16 PikeGetWinStreak(u8 lvlMode)
+{
+ u16 winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode];
+ if (winStreak > 9999)
+ return 9999;
+ else
+ return winStreak;
+}
+
+static void PikePrintCleared(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y)
+{
+ AddTextPrinterParameterized(gRecordsWindowId, 1, str1, x1, y, TEXT_SPEED_FF, NULL);
+ ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, str2);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
+}
+
+static void PikePrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
+{
+ bool8 isCurrent;
+ u16 winStreak = PikeGetWinStreak(lvlMode);
+
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(0x800);
+ else
+ isCurrent = sub_81A1C24(0x400);
+
+ if (isCurrent == TRUE)
+ PrintTwoStrings(gText_Current, gText_RoomsCleared, winStreak, x1, x2, y);
+ else
+ PrintTwoStrings(gText_Prev, gText_RoomsCleared, winStreak, x1, x2, y);
+}
+
+static void ShowPikeResultsWindow(void)
+{
+ gRecordsWindowId = AddWindow(&gUnknown_08611C74);
+ NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ StringExpandPlaceholders(gStringVar4, gText_BattleChoiceResults);
+ PrintAligned(gStringVar4, 0);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 33, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 8, 97, TEXT_SPEED_FF, NULL);
+ PrintHyphens(10);
+ PikePrintPrevOrCurrentStreak(FRONTIER_LVL_50, 64, 114, 33);
+ PikePrintCleared(gText_Record, gText_RoomsCleared, gSaveBlock2Ptr->frontier.pikeRecordStreaks[FRONTIER_LVL_50], 64, 114, 49);
+ PikePrintCleared(gText_Total, gText_TimesCleared, gSaveBlock2Ptr->frontier.pikeTotalStreaks[FRONTIER_LVL_50], 64, 114, 65);
+ PikePrintPrevOrCurrentStreak(FRONTIER_LVL_OPEN, 64, 114, 97);
+ PikePrintCleared(gText_Record, gText_RoomsCleared, gSaveBlock2Ptr->frontier.pikeRecordStreaks[FRONTIER_LVL_OPEN], 64, 114, 113);
+ PikePrintCleared(gText_Total, gText_TimesCleared, gSaveBlock2Ptr->frontier.pikeTotalStreaks[FRONTIER_LVL_OPEN], 64, 114, 129);
+ PutWindowTilemap(gRecordsWindowId);
+ CopyWindowToVram(gRecordsWindowId, 3);
+}
+
+// Battle Arena records.
+static void ArenaPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
+{
+ AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
+ if (num > 9999)
+ num = 9999;
+ ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, gText_KOsInARow);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
+}
+
+static void ArenaPrintRecordStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
+{
+ u16 num = gSaveBlock2Ptr->frontier.arenaRecordStreaks[lvlMode];
+ ArenaPrintStreak(gText_Record, num, x1, x2, y);
+}
+
+static u16 ArenaGetWinStreak(u8 lvlMode)
+{
+ u16 winStreak = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode];
+ if (winStreak > 9999)
+ return 9999;
+ else
+ return winStreak;
+}
+
+static void ArenaPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
+{
+ bool8 isCurrent;
+ u16 winStreak = ArenaGetWinStreak(lvlMode);
+
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(0x80);
+ else
+ isCurrent = sub_81A1C24(0x40);
+
+ if (isCurrent == TRUE)
+ ArenaPrintStreak(gText_Current, winStreak, x1, x2, y);
+ else
+ ArenaPrintStreak(gText_Prev, winStreak, x1, x2, y);
+}
+
+static void ShowArenaResultsWindow(void)
+{
+ gRecordsWindowId = AddWindow(&gUnknown_08611C74);
+ NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ PrintHyphens(10);
+ StringExpandPlaceholders(gStringVar4, gText_SetKOTourneyResults);
+ PrintAligned(gStringVar4, 2);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 16, 49, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 16, 97, TEXT_SPEED_FF, NULL);
+ ArenaPrintPrevOrCurrentStreak(FRONTIER_LVL_50, 72, 126, 49);
+ ArenaPrintRecordStreak(FRONTIER_LVL_50, 72, 126, 65);
+ ArenaPrintPrevOrCurrentStreak(FRONTIER_LVL_OPEN, 72, 126, 97);
+ ArenaPrintRecordStreak(FRONTIER_LVL_OPEN, 72, 126, 113);
+ PutWindowTilemap(gRecordsWindowId);
+ CopyWindowToVram(gRecordsWindowId, 3);
+}
+
+// Battle Factory records.
+static void FactoryPrintStreak(const u8 *str, u16 num1, u16 num2, u8 x1, u8 x2, u8 x3, u8 y)
+{
+ AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
+ if (num1 > 9999)
+ num1 = 9999;
+ ConvertIntToDecimalStringN(gStringVar1, num1, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, gText_WinStreak);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
+
+ ConvertIntToDecimalStringN(gStringVar1, num2, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, gText_TimesVar1);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x3, y, TEXT_SPEED_FF, NULL);
+}
+
+static void FactoryPrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 x3, u8 y)
+{
+ u16 num1 = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[battleMode][lvlMode];
+ u16 num2 = gSaveBlock2Ptr->frontier.factoryRecordRentsCount[battleMode][lvlMode];
+ FactoryPrintStreak(gText_Record, num1, num2, x1, x2, x3, y);
+}
+
+static u16 FactoryGetWinStreak(u8 battleMode, u8 lvlMode)
+{
+ u16 winStreak = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode];
+ if (winStreak > 9999)
+ return 9999;
+ else
+ return winStreak;
+}
+
+static u16 FactoryGetRentsCount(u8 battleMode, u8 lvlMode)
+{
+ u16 rents = gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode];
+ if (rents > 9999)
+ return 9999;
+ else
+ return rents;
+}
+
+static void FactoryPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 x3, u8 y)
+{
+ bool8 isCurrent;
+ u16 winStreak = FactoryGetWinStreak(battleMode, lvlMode);
+ u16 rents = FactoryGetRentsCount(battleMode, lvlMode);
+ switch (battleMode)
+ {
+ default:
+ case FRONTIER_MODE_SINGLES:
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(0x200);
+ else
+ isCurrent = sub_81A1C24(0x100);
+ break;
+ case FRONTIER_MODE_DOUBLES:
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(0x2000000);
+ else
+ isCurrent = sub_81A1C24(0x1000000);
+ break;
+ }
+
+ if (isCurrent == TRUE)
+ FactoryPrintStreak(gText_Current, winStreak, rents, x1, x2, x3, y);
+ else
+ FactoryPrintStreak(gText_Prev, winStreak, rents, x1, x2, x3, y);
+}
+
+static void ShowFactoryResultsWindow(u8 battleMode)
+{
+ gRecordsWindowId = AddWindow(&gUnknown_08611C74);
+ NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ if (battleMode == FRONTIER_MODE_SINGLES)
+ StringExpandPlaceholders(gStringVar4, gText_BattleSwapSingleResults);
+ else
+ StringExpandPlaceholders(gStringVar4, gText_BattleSwapDoubleResults);
+
+ PrintAligned(gStringVar4, 0);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 33, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_RentalSwap, 152, 33, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 8, 97, TEXT_SPEED_FF, NULL);
+ PrintHyphens(10);
+ FactoryPrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_50, 8, 64, 158, 49);
+ FactoryPrintRecordStreak(battleMode, FRONTIER_LVL_50, 8, 64, 158, 65);
+ FactoryPrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_OPEN, 8, 64, 158, 113);
+ FactoryPrintRecordStreak(battleMode, FRONTIER_LVL_OPEN, 8, 64, 158, 129);
+ PutWindowTilemap(gRecordsWindowId);
+ CopyWindowToVram(gRecordsWindowId, 3);
+}
+
+// Battle Pyramid records.
+static void PyramidPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
+{
+ AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
+ if (num > 9999)
+ num = 9999;
+ ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, gText_FloorsCleared);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
+}
+
+static void PyramidPrintRecordStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
+{
+ u16 num = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode];
+ PyramidPrintStreak(gText_Record, num, x1, x2, y);
+}
+
+static u16 PyramidGetWinStreak(u8 lvlMode)
+{
+ u16 winStreak = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode];
+ if (winStreak > 9999)
+ return 9999;
+ else
+ return winStreak;
+}
+
+static void PyramidPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
+{
+ bool8 isCurrent;
+ u16 winStreak = PyramidGetWinStreak(lvlMode);
+
+ if (lvlMode != FRONTIER_LVL_50)
+ isCurrent = sub_81A1C24(0x2000);
+ else
+ isCurrent = sub_81A1C24(0x1000);
+
+ if (isCurrent == TRUE)
+ PyramidPrintStreak(gText_Current, winStreak, x1, x2, y);
+ else
+ PyramidPrintStreak(gText_Prev, winStreak, x1, x2, y);
+}
+
+static void ShowPyramidResultsWindow(void)
+{
+ gRecordsWindowId = AddWindow(&gUnknown_08611C74);
+ NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ StringExpandPlaceholders(gStringVar4, gText_BattleQuestResults);
+ PrintAligned(gStringVar4, 2);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 49, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 8, 97, TEXT_SPEED_FF, NULL);
+ PrintHyphens(10);
+ PyramidPrintPrevOrCurrentStreak(FRONTIER_LVL_50, 64, 111, 49);
+ PyramidPrintRecordStreak(FRONTIER_LVL_50, 64, 111, 65);
+ PyramidPrintPrevOrCurrentStreak(FRONTIER_LVL_OPEN, 64, 111, 97);
+ PyramidPrintRecordStreak(FRONTIER_LVL_OPEN, 64, 111, 113);
+ PutWindowTilemap(gRecordsWindowId);
+ CopyWindowToVram(gRecordsWindowId, 3);
+}
+
+// Link contest records. Why is it in this file?
+static void ShowLinkContestResultsWindow(void)
+{
+ const u8 *str;
+ s32 i, j;
+ s32 x;
+
+ gRecordsWindowId = AddWindow(&gUnknown_08611C7C);
+ NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+
+ StringExpandPlaceholders(gStringVar4, gText_LinkContestResults);
+ x = GetStringCenterAlignXOffset(1, gStringVar4, 208);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x, 1, TEXT_SPEED_FF, NULL);
+
+ str = gText_1st;
+ x = GetStringRightAlignXOffset(1, str, 38) + 50;
+ AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, 25, TEXT_SPEED_FF, NULL);
+
+ str = gText_2nd;
+ x = GetStringRightAlignXOffset(1, str, 38) + 88;
+ AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, 25, TEXT_SPEED_FF, NULL);
+
+ str = gText_3rd;
+ x = GetStringRightAlignXOffset(1, str, 38) + 126;
+ AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, 25, TEXT_SPEED_FF, NULL);
+
+ str = gText_4th;
+ x = GetStringRightAlignXOffset(1, str, 38) + 164;
+ AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, 25, TEXT_SPEED_FF, NULL);
+
+ x = 6;
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Cool, x, 41, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Beauty, x, 57, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Cute, x, 73, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Smart, x, 89, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Tough, x, 105, TEXT_SPEED_FF, NULL);
+
+ for (i = 0; i < 5; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ ConvertIntToDecimalStringN(gStringVar4, gSaveBlock2Ptr->contestLinkResults[i][j], STR_CONV_MODE_RIGHT_ALIGN, 4);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, (j * 38) + 64, (i * 16) + 41, TEXT_SPEED_FF, NULL);
+ }
+ }
+
+ PutWindowTilemap(gRecordsWindowId);
+ CopyWindowToVram(gRecordsWindowId, 3);
+}
+
+static void sub_81A31FC(void)
+{
+ u8 text[32];
+ s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+
+ switch (facility)
+ {
+ case FRONTIER_FACILITY_TOWER:
+ if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.towerRecordWinStreaks[battleMode][lvlMode])
+ {
+ gSaveBlock2Ptr->frontier.towerRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode];
+ if (battleMode == FRONTIER_MODE_LINK_MULTIS)
+ {
+ StringCopy(text, gLinkPlayers[gBattleScripting.multiplayerId ^ 1].name);
+ StripExtCtrlCodes(text);
+ StringCopy(gSaveBlock2Ptr->frontier.field_EE1[lvlMode], text);
+ SetTrainerId(gLinkPlayers[gBattleScripting.multiplayerId ^ 1].trainerId, gSaveBlock2Ptr->frontier.field_EF1[lvlMode]);
+ }
+ if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] > 1
+ && sub_80EE818())
+ {
+ switch (battleMode)
+ {
+ case FRONTIER_MODE_SINGLES:
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 1);
+ break;
+ case FRONTIER_MODE_DOUBLES:
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 2);
+ break;
+ case FRONTIER_MODE_MULTIS:
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 3);
+ break;
+ case FRONTIER_MODE_LINK_MULTIS:
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 4);
+ break;
+ }
+ }
+ }
+ break;
+ case FRONTIER_FACILITY_DOME:
+ if (gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][lvlMode])
+ {
+ gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode];
+ if (gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] > 1
+ && sub_80EE818())
+ {
+ if (battleMode == FRONTIER_MODE_SINGLES)
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode], 5);
+ else
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode], 6);
+ }
+ }
+ break;
+ case FRONTIER_FACILITY_PALACE:
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode])
+ {
+ gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] > 1
+ && sub_80EE818())
+ {
+ if (battleMode == FRONTIER_MODE_SINGLES)
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode], 11);
+ else
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode], 12);
+ }
+ }
+ break;
+ case FRONTIER_FACILITY_ARENA:
+ if (gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] > gSaveBlock2Ptr->frontier.arenaRecordStreaks[lvlMode])
+ {
+ gSaveBlock2Ptr->frontier.arenaRecordStreaks[lvlMode] = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode];
+ if (gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] > 1
+ && sub_80EE818())
+ {
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode], 10);
+ }
+ }
+ break;
+ case FRONTIER_FACILITY_FACTORY:
+ if (gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[battleMode][lvlMode])
+ {
+ gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode];
+ gSaveBlock2Ptr->frontier.factoryRecordRentsCount[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode];
+ if (gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] > 1
+ && sub_80EE818())
+ {
+ if (battleMode == FRONTIER_MODE_SINGLES)
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode], 7);
+ else
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode], 8);
+ }
+ }
+ break;
+ case FRONTIER_FACILITY_PIKE:
+ if (gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] > gSaveBlock2Ptr->frontier.pikeRecordStreaks[lvlMode])
+ {
+ gSaveBlock2Ptr->frontier.pikeRecordStreaks[lvlMode] = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode];
+ if (gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] > 1
+ && sub_80EE818())
+ {
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode], 9);
+ }
+ }
+ break;
+ case FRONTIER_FACILITY_PYRAMID:
+ if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] > gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode])
+ {
+ gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode] = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode];
+ if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] > 1
+ && sub_80EE818())
+ {
+ sub_80EE8C8(gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode], 13);
+ }
+ }
+ break;
+ }
+}
+
+static void sub_81A35EC(void)
+{
+ VarGet(VAR_FRONTIER_FACILITY); // Unused return value.
+ gSpecialVar_Result = sub_81A3610();
+}
+
+u8 sub_81A3610(void)
+{
+ s32 ret = 0;
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u16 val = GetCurrentFacilityWinStreak();
+ s32 r5 = val + gUnknown_08611550[facility][3];
+ s32 symbolsCount;
+
+ if (battleMode != FRONTIER_MODE_SINGLES)
+ return 0;
+
+ symbolsCount = GetPlayerSymbolCountForFacility(facility);
+ switch (symbolsCount)
+ {
+ case 0:
+ case 1:
+ if (r5 == gUnknown_08611550[facility][symbolsCount])
+ ret = symbolsCount + 1;
+ break;
+ case 2:
+ default:
+ if (r5 == gUnknown_08611550[facility][0])
+ ret = 3;
+ else if (r5 == gUnknown_08611550[facility][1])
+ ret = 4;
+ else if (r5 > gUnknown_08611550[facility][1] && (r5 - gUnknown_08611550[facility][1]) % gUnknown_08611550[facility][2] == 0)
+ ret = 4;
+ break;
+ }
+
+ return ret;
+}
+
+void CopyFrontierTrainerText(u8 whichText, u16 trainerId)
+{
+ switch (whichText)
+ {
+ case FRONTIER_BEFORE_TEXT:
+ if (trainerId == TRAINER_EREADER)
+ FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting);
+ else if (trainerId == TRAINER_FRONTIER_BRAIN)
+ CopyFrontierBrainText(FALSE);
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ FrontierSpeechToString(gFacilityTrainers[trainerId].speechBefore);
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].greeting);
+ else
+ CopyFriendsApprenticeChallengeText(trainerId - TRAINER_RECORD_MIXING_APPRENTICE);
+ break;
+ case FRONTIER_PLAYER_LOST_TEXT:
+ if (trainerId == TRAINER_EREADER)
+ {
+ FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.farewellPlayerLost);
+ }
+ else if (trainerId == TRAINER_FRONTIER_BRAIN)
+ {
+ CopyFrontierBrainText(FALSE);
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ FrontierSpeechToString(gFacilityTrainers[trainerId].speechWin);
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ FrontierSpeechToString(GetRecordedBattleEasyChatSpeech());
+ else
+ FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].speechWon);
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ FrontierSpeechToString(GetRecordedBattleEasyChatSpeech());
+ else
+ FrontierSpeechToString(gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].easyChatWords);
+ }
+ break;
+ case FRONTIER_PLAYER_WON_TEXT:
+ if (trainerId == TRAINER_EREADER)
+ {
+ FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.farewellPlayerWon);
+ }
+ else if (trainerId == TRAINER_FRONTIER_BRAIN)
+ {
+ CopyFrontierBrainText(TRUE);
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_FRIEND)
+ {
+ FrontierSpeechToString(gFacilityTrainers[trainerId].speechLose);
+ }
+ else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ FrontierSpeechToString(GetRecordedBattleEasyChatSpeech());
+ else
+ FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].speechLost);
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ {
+ trainerId = GetRecordedBattleApprenticeId();
+ FrontierSpeechToString(gApprentices[trainerId].easyChatWords);
+ }
+ else
+ {
+ trainerId = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id;
+ FrontierSpeechToString(gApprentices[trainerId].easyChatWords);
+ }
+ }
+ break;
+ }
+}
+
+void sub_81A3908(void)
+{
+ s32 battleMode, lvlMode;
+
+ gSaveBlock2Ptr->frontier.field_CDC = 0;
+ for (battleMode = 0; battleMode < 4; battleMode++)
+ {
+ for (lvlMode = 0; lvlMode < 2; lvlMode++)
+ {
+ gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = 0;
+ if (battleMode < FRONTIER_MODE_MULTIS)
+ {
+ gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] = 0;
+ gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = 0;
+ gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] = 0;
+ }
+ if (battleMode == FRONTIER_MODE_SINGLES)
+ {
+ gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] = 0;
+ gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] = 0;
+ gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] = 0;
+ }
+ }
+ }
+ if (gSaveBlock2Ptr->frontier.field_CA8 != 0)
+ gSaveBlock2Ptr->frontier.field_CA8 = 1;
+}
+
+u32 GetCurrentFacilityWinStreak(void)
+{
+ s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+
+ switch (facility)
+ {
+ case FRONTIER_FACILITY_TOWER:
+ return gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode];
+ case FRONTIER_FACILITY_DOME:
+ return gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode];
+ case FRONTIER_FACILITY_PALACE:
+ return gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
+ case FRONTIER_FACILITY_ARENA:
+ return gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode];
+ case FRONTIER_FACILITY_FACTORY:
+ return gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode];
+ case FRONTIER_FACILITY_PIKE:
+ return gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode];
+ case FRONTIER_FACILITY_PYRAMID:
+ return gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode];
+ default:
+ return 0;
+ }
+}
+
+void sub_81A3ACC(void)
+{
+ s32 i;
+
+ for (i = 0; i < 20; i++)
+ gSaveBlock2Ptr->frontier.field_CB4[i] |= 0xFFFF;
+}
+
+static void sub_81A3B00(void)
+{
+ if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN)
+ gSpecialVar_Result = TRUE;
+ else
+ gSpecialVar_Result = FALSE;
+}
+
+u8 GetPlayerSymbolCountForFacility(u8 facility)
+{
+ return FlagGet(FLAG_SYS_TOWER_SILVER + facility * 2)
+ + FlagGet(FLAG_SYS_TOWER_GOLD + facility * 2);
+}
+
+static void sub_81A3B64(void)
+{
+ s32 challengeNum = 0;
+ s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ s32 points;
+
+ switch (facility)
+ {
+ case FRONTIER_FACILITY_TOWER:
+ challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7;
+ break;
+ case FRONTIER_FACILITY_DOME:
+ challengeNum = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode];
+ break;
+ case FRONTIER_FACILITY_PALACE:
+ challengeNum = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] / 7;
+ break;
+ case FRONTIER_FACILITY_ARENA:
+ challengeNum = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] / 7;
+ break;
+ case FRONTIER_FACILITY_FACTORY:
+ challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7;
+ break;
+ case FRONTIER_FACILITY_PIKE:
+ challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14;
+ break;
+ case FRONTIER_FACILITY_PYRAMID:
+ challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7;
+ break;
+ }
+
+ if (challengeNum != 0)
+ challengeNum--;
+ if (challengeNum >= ARRAY_COUNT(gUnknown_086118B4))
+ challengeNum = ARRAY_COUNT(gUnknown_086118B4) - 1;
+
+ points = gUnknown_086118B4[challengeNum][facility][battleMode];
+ if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN)
+ points += 10;
+ gSaveBlock2Ptr->frontier.battlePoints += points;
+ ConvertIntToDecimalStringN(gStringVar1, points, STR_CONV_MODE_LEFT_ALIGN, 2);
+ if (gSaveBlock2Ptr->frontier.battlePoints > 9999)
+ gSaveBlock2Ptr->frontier.battlePoints = 9999;
+
+ points = gSaveBlock2Ptr->frontier.field_EBA;
+ points += gUnknown_086118B4[challengeNum][facility][battleMode];
+ sub_80EED60(gUnknown_086118B4[challengeNum][facility][battleMode]);
+ if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN)
+ {
+ points += 10;
+ sub_80EED60(10);
+ }
+ if (points > 0xFFFF)
+ points = 0xFFFF;
+ gSaveBlock2Ptr->frontier.field_EBA = points;
+}
+
+static void sub_81A3D30(void)
+{
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ gSpecialVar_Result = GetPlayerSymbolCountForFacility(facility);
+}
+
+static void sub_81A3D58(void)
+{
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ if (GetPlayerSymbolCountForFacility(facility) == 0)
+ FlagSet(FLAG_SYS_TOWER_SILVER + facility * 2);
+ else
+ FlagSet(FLAG_SYS_TOWER_GOLD + facility * 2);
+}
+
+static void sub_81A3DA0(void)
+{
+ if (gBattleTypeFlags & gSpecialVar_0x8005)
+ gSpecialVar_Result = TRUE;
+ else
+ gSpecialVar_Result = FALSE;
+}
+
+static u8 sub_81A3DD0(u16 species, u8 arg1, s32 arg2)
+{
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
+ {
+ arg1++;
+ switch (arg1)
+ {
+ case 1:
+ case 3:
+ case 5:
+ case 7:
+ case 9:
+ case 11:
+ if (arg2 == arg1)
+ StringAppend(gStringVar1, gText_SpaceAndSpace);
+ else if (arg2 > arg1)
+ StringAppend(gStringVar1, gText_CommaSpace);
+ break;
+ case 2:
+ if (arg1 == arg2)
+ StringAppend(gStringVar1, gText_SpaceAndSpace);
+ else
+ StringAppend(gStringVar1, gText_CommaSpace);
+ StringAppend(gStringVar1, gText_NewLine);
+ break;
+ default:
+ if (arg1 == arg2)
+ StringAppend(gStringVar1, gText_SpaceAndSpace);
+ else
+ StringAppend(gStringVar1, gText_CommaSpace);
+ StringAppend(gStringVar1, gText_ScrollTextUp);
+ break;
+ }
+ StringAppend(gStringVar1, gSpeciesNames[species]);
+ }
+
+ return arg1;
+}
+
+static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monLevel, u16 *speciesArray, u16 *itemsArray, u8 *count)
+{
+ s32 i = 0;
+
+ if (species == SPECIES_EGG || species == SPECIES_NONE)
+ return;
+
+ for (i = 0; gFrontierBannedSpecies[i] != 0xFFFF && gFrontierBannedSpecies[i] != species; i++)
+ ;
+
+ if (gFrontierBannedSpecies[i] != 0xFFFF)
+ return;
+ if (lvlMode == FRONTIER_LVL_50 && monLevel > 50)
+ return;
+
+ for (i = 0; i < *count && speciesArray[i] != species; i++)
+ ;
+ if (i != *count)
+ return;
+
+ if (heldItem != 0)
+ {
+ for (i = 0; i < *count && itemsArray[i] != heldItem; i++)
+ ;
+ if (i != *count)
+ return;
+ }
+
+ speciesArray[*count] = species;
+ itemsArray[*count] = heldItem;
+ (*count)++;
+}
+
+static void sub_81A3FD4(void)
+{
+ u16 speciesArray[6];
+ u16 itemArray[6];
+ s32 monId = 0;
+ s32 toChoose = 0;
+ u8 count = 0;
+ s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ s32 monIdLooper;
+
+ switch (battleMode)
+ {
+ case FRONTIER_MODE_SINGLES:
+ toChoose = 3;
+ break;
+ case FRONTIER_MODE_MULTIS:
+ case FRONTIER_MODE_LINK_MULTIS:
+ toChoose = 2;
+ break;
+ case FRONTIER_MODE_DOUBLES:
+ if (VarGet(VAR_FRONTIER_FACILITY) == FRONTIER_FACILITY_TOWER)
+ toChoose = 4;
+ else
+ toChoose = 3;
+ break;
+ }
+
+ monIdLooper = 0;
+ do
+ {
+ monId = monIdLooper;
+ count = 0;
+ do
+ {
+ u16 species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES2);
+ u16 heldItem = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM);
+ u8 level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
+ u16 hp = GetMonData(&gPlayerParty[monId], MON_DATA_HP);
+ if (VarGet(VAR_FRONTIER_FACILITY) == FRONTIER_FACILITY_PYRAMID)
+ {
+ if (heldItem == 0)
+ AppendIfValid(species, heldItem, hp, gSpecialVar_Result, level, speciesArray, itemArray, &count);
+ }
+ else
+ {
+ AppendIfValid(species, heldItem, hp, gSpecialVar_Result, level, speciesArray, itemArray, &count);
+ }
+ monId++;
+ if (monId >= PARTY_SIZE)
+ monId = 0;
+ } while (monId != monIdLooper);
+
+ monIdLooper++;
+ } while (monIdLooper < PARTY_SIZE && count < toChoose);
+
+ if (count < toChoose)
+ {
+ s32 i;
+ s32 caughtBannedMons = 0;
+ s32 species = gFrontierBannedSpecies[0];
+ for (i = 0; species != 0xFFFF; i++, species = gFrontierBannedSpecies[i])
+ {
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
+ caughtBannedMons++;
+ }
+ gStringVar1[0] = EOS;
+ gSpecialVar_0x8004 = 1;
+ count = 0;
+ for (i = 0; gFrontierBannedSpecies[i] != 0xFFFF; i++)
+ count = sub_81A3DD0(gFrontierBannedSpecies[i], count, caughtBannedMons);
+
+ if (count == 0)
+ {
+ StringAppend(gStringVar1, gText_Space2);
+ StringAppend(gStringVar1, gText_Are);
+ }
+ else
+ {
+ if (count & 1)
+ StringAppend(gStringVar1, gText_ScrollTextUp);
+ else
+ StringAppend(gStringVar1, gText_Space2);
+ StringAppend(gStringVar1, gText_Are2);
+ }
+ }
+ else
+ {
+ gSpecialVar_0x8004 = 0;
+ gSaveBlock2Ptr->frontier.lvlMode = gSpecialVar_Result;
+ }
+}
+
+static void sub_81A4224(void)
+{
+ ValidateEReaderTrainer();
+}
+
+static void sub_81A4230(void)
+{
+ s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+
+ switch (facility)
+ {
+ case FRONTIER_FACILITY_TOWER:
+ if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] < 9999)
+ {
+ gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]++;
+ if (battleMode == FRONTIER_MODE_SINGLES)
+ {
+ SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]);
+ gSaveBlock2Ptr->frontier.field_D02 = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode];
+ }
+ }
+ break;
+ case FRONTIER_FACILITY_DOME:
+ if (gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] < 9999)
+ gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]++;
+ if (gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][lvlMode] < 9999)
+ gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][lvlMode]++;
+ break;
+ case FRONTIER_FACILITY_PALACE:
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 9999)
+ gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode]++;
+ break;
+ case FRONTIER_FACILITY_ARENA:
+ if (gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] < 9999)
+ gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode]++;
+ break;
+ case FRONTIER_FACILITY_FACTORY:
+ if (gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] < 9999)
+ gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode]++;
+ break;
+ case FRONTIER_FACILITY_PIKE:
+ if (gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] < 9999)
+ gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode]++;
+ break;
+ case FRONTIER_FACILITY_PYRAMID:
+ if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] < 9999)
+ gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode]++;
+ break;
+ }
+}
+
+static void sub_81A43A8(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gSaveBlock2Ptr->frontier.selectedPartyMons[i] != 0)
+ {
+ u16 item = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_HELD_ITEM, NULL);
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &item);
+ }
+ }
+}
+
+static void sub_81A4410(void)
+{
+ gSpecialVar_Result = MoveRecordedBattleToSaveData();
+ gSaveBlock2Ptr->frontier.field_CA9_b = 1;
+}
+
+static void sub_81A443C(void)
+{
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ GetFrontierTrainerName(gStringVar1, gTrainerBattleOpponent_A);
+ break;
+ case 1:
+ GetFrontierTrainerName(gStringVar2, gTrainerBattleOpponent_A);
+ break;
+ }
+}
+
+static void sub_81A447C(void)
+{
+ u8 i, j, k;
+
+ for (i = 0; i < 4; i++)
+ {
+ u16 monId = gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1;
+ if (monId < PARTY_SIZE)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ for (k = 0; k < 4; k++)
+ {
+ if (GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_MOVE1 + k, NULL)
+ == GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j, NULL))
+ break;
+ }
+ if (k == 4)
+ SetMonMoveSlot(&gPlayerParty[i], MOVE_SKETCH, j);
+ }
+ gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1] = gPlayerParty[i];
+ }
+ }
+}
+
+static void sub_81A457C(void)
+{
+ SetFrontierBrainEventObjGfx(VarGet(VAR_FRONTIER_FACILITY));
+}
+
+// Battle Frontier Ranking Hall records.
+static void Print1PRecord(s32 position, s32 x, s32 y, struct RankingHall1P *hallRecord, s32 hallFacilityId)
+{
+ u8 text[32];
+ u16 winStreak;
+
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_123Dot[position], x * 8, (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
+ hallRecord->name[PLAYER_NAME_LENGTH] = EOS;
+ if (hallRecord->winStreak)
+ {
+ TVShowConvertInternationalString(text, hallRecord->name, hallRecord->language);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, text, (x + 2) * 8, (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
+ winStreak = hallRecord->winStreak;
+ if (winStreak > 9999)
+ winStreak = 9999;
+ ConvertIntToDecimalStringN(gStringVar2, winStreak, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, gHallFacilityToRecordsText[hallFacilityId]);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, GetStringRightAlignXOffset(1, gHallFacilityToRecordsText[hallFacilityId], 0xC8), (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
+ }
+}
+
+static void Print2PRecord(s32 position, s32 x, s32 y, struct RankingHall2P *hallRecord)
+{
+ u8 text[32];
+ u16 winStreak;
+
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gText_123Dot[position], x * 8, (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
+ if (hallRecord->winStreak)
+ {
+ hallRecord->name1[PLAYER_NAME_LENGTH] = EOS;
+ hallRecord->name2[PLAYER_NAME_LENGTH] = EOS;
+ TVShowConvertInternationalString(text, hallRecord->name1, hallRecord->language);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, text, (x + 2) * 8, (8 * (y + 5 * position - 1)) + 1, TEXT_SPEED_FF, NULL);
+ if (IsStringJapanese(hallRecord->name2))
+ TVShowConvertInternationalString(text, hallRecord->name2, LANGUAGE_JAPANESE);
+ else
+ StringCopy(text, hallRecord->name2);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, text, (x + 4) * 8, (8 * (y + 5 * position + 1)) + 1, TEXT_SPEED_FF, NULL);
+
+ winStreak = hallRecord->winStreak;
+ if (winStreak > 9999)
+ winStreak = 9999;
+ ConvertIntToDecimalStringN(gStringVar2, winStreak, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, gHallFacilityToRecordsText[9]);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, GetStringRightAlignXOffset(1, gHallFacilityToRecordsText[9], 0xC8), (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
+ }
+}
+
+static void Fill1PRecords(struct RankingHall1P *dst, s32 hallFacilityId, s32 lvlMode)
+{
+ s32 i, j;
+ struct RankingHall1P record1P[4];
+ struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords));
+ GetPlayerHallRecords(playerHallRecords);
+
+ for (i = 0; i < 3; i++)
+ record1P[i] = gSaveBlock2Ptr->hallRecords1P[hallFacilityId][lvlMode][i];
+
+ record1P[3] = playerHallRecords->onePlayer[hallFacilityId][lvlMode];
+
+ for (i = 0; i < 3; i++)
+ {
+ s32 highestWinStreak = 0;
+ s32 highestId = 0;
+ for (j = 0; j < 4; j++)
+ {
+ if (record1P[j].winStreak > highestWinStreak)
+ {
+ highestId = j;
+ highestWinStreak = record1P[j].winStreak;
+ }
+ }
+ if (record1P[3].winStreak >= highestWinStreak)
+ highestId = 3;
+
+ dst[i] = record1P[highestId];
+ record1P[highestId].winStreak = 0;
+ }
+
+ free(playerHallRecords);
+}
+
+static void Fill2PRecords(struct RankingHall2P *dst, s32 lvlMode)
+{
+ s32 i, j;
+ struct RankingHall2P record2P[4];
+ struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords));
+ GetPlayerHallRecords(playerHallRecords);
+
+ for (i = 0; i < 3; i++)
+ record2P[i] = gSaveBlock2Ptr->hallRecords2P[lvlMode][i];
+
+ record2P[3] = playerHallRecords->twoPlayers[lvlMode];
+
+ for (i = 0; i < 3; i++)
+ {
+ s32 highestWinStreak = 0;
+ s32 highestId = 0;
+ for (j = 0; j < 3; j++)
+ {
+ if (record2P[j].winStreak > highestWinStreak)
+ {
+ highestId = j;
+ highestWinStreak = record2P[j].winStreak;
+ }
+ }
+ if (record2P[3].winStreak >= highestWinStreak)
+ highestId = 3;
+
+ dst[i] = record2P[highestId];
+ record2P[highestId].winStreak = 0;
+ }
+
+ free(playerHallRecords);
+}
+
+static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode)
+{
+ s32 i;
+ s32 x;
+ struct RankingHall1P records1P[3];
+ struct RankingHall2P records2P[3];
+
+ StringCopy(gStringVar1, gUnknown_08611CB0[hallFacilityId][0]);
+ StringExpandPlaceholders(gStringVar4, gUnknown_08611CB0[hallFacilityId][1]);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL);
+ x = GetStringRightAlignXOffset(1, gLevelModeText[lvlMode], 0xD0);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gLevelModeText[lvlMode], x, 1, TEXT_SPEED_FF, NULL);
+ if (hallFacilityId == HALL_FACILITIES_COUNT)
+ {
+ gSaveBlock2Ptr->frontier.field_EE1[0][PLAYER_NAME_LENGTH] = EOS;
+ gSaveBlock2Ptr->frontier.field_EE1[1][PLAYER_NAME_LENGTH] = EOS;
+ Fill2PRecords(records2P, lvlMode);
+ for (i = 0; i < 3; i++)
+ Print2PRecord(i, 1, 4, &records2P[i]);
+ }
+ else
+ {
+ Fill1PRecords(records1P, hallFacilityId, lvlMode);
+ for (i = 0; i < 3; i++)
+ Print1PRecord(i, 1, 4, &records1P[i], hallFacilityId);
+ }
+}
+
+void ShowRankingHallRecordsWindow(void)
+{
+ gRecordsWindowId = AddWindow(&gUnknown_08611C84);
+ NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_50);
+ PutWindowTilemap(gRecordsWindowId);
+ CopyWindowToVram(gRecordsWindowId, 3);
+}
+
+void ScrollRankingHallRecordsWindow(void)
+{
+ FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_OPEN);
+ CopyWindowToVram(gRecordsWindowId, 2);
+}
+
+void ClearRankingHallRecords(void)
+{
+ s32 i, j, k;
+
+ for (i = 0; i < HALL_FACILITIES_COUNT; i++)
+ {
+ for (j = 0; j < 2; j++)
+ {
+ for (k = 0; k < 3; k++)
+ {
+ CopyTrainerId(gSaveBlock2Ptr->hallRecords1P[i][j][k].id, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0.
+ gSaveBlock2Ptr->hallRecords1P[i][j][k].name[0] = EOS;
+ gSaveBlock2Ptr->hallRecords1P[i][j][k].winStreak = 0;
+ }
+ }
+ }
+
+ for (j = 0; j < 2; j++)
+ {
+ for (k = 0; k < 3; k++)
+ {
+ CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id1, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0.
+ CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id2, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0.
+ gSaveBlock2Ptr->hallRecords2P[j][k].name1[0] = EOS;
+ gSaveBlock2Ptr->hallRecords2P[j][k].name2[0] = EOS;
+ gSaveBlock2Ptr->hallRecords2P[j][k].winStreak = 0;
+ }
+ }
+}
+
+void sub_81A4C30(void)
+{
+ s32 i;
+ struct Pokemon *monsParty = calloc(PARTY_SIZE, sizeof(struct Pokemon));
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ monsParty[i] = gPlayerParty[i];
+
+ i = gPlayerPartyCount;
+ LoadPlayerParty();
+ sub_8076D5C();
+ TrySavingData(SAVE_LINK);
+ sav2_gender2_inplace_and_xFE();
+ gPlayerPartyCount = i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ gPlayerParty[i] = monsParty[i];
+
+ free(monsParty);
+}
+
+// Frontier Brain functions.
+u8 GetFrontierBrainTrainerPicIndex(void)
+{
+ s32 facility;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ facility = GetRecordedBattleFrontierFacility();
+ else
+ facility = VarGet(VAR_FRONTIER_FACILITY);
+
+ return gTrainers[gFacilityToBrainTrainerId[facility]].trainerPic;
+}
+
+u8 GetFrontierBrainTrainerClass(void)
+{
+ s32 facility;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ facility = GetRecordedBattleFrontierFacility();
+ else
+ facility = VarGet(VAR_FRONTIER_FACILITY);
+
+ return gTrainers[gFacilityToBrainTrainerId[facility]].trainerClass;
+}
+
+void CopyFrontierBrainTrainerName(u8 *dst)
+{
+ s32 i;
+ s32 facility;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ facility = GetRecordedBattleFrontierFacility();
+ else
+ facility = VarGet(VAR_FRONTIER_FACILITY);
+
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ dst[i] = gTrainers[gFacilityToBrainTrainerId[facility]].trainerName[i];
+
+ dst[i] = EOS;
+}
+
+bool8 IsFrontierBrainFemale(void)
+{
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ return sFacilityToBrainEventObjGfx[facility][1];
+}
+
+void SetFrontierBrainEventObjGfx_2(void)
+{
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ VarSet(VAR_OBJ_GFX_ID_0, sFacilityToBrainEventObjGfx[facility][0]);
+}
+
+#define FRONTIER_BRAIN_OTID 61226
+
+#ifdef NONMATCHING
+void CreateFrontierBrainPokemon(void)
+{
+ s32 i, j;
+ s32 monCountInBits;
+ s32 monPartyId;
+ s32 monLevel = 0;
+ u8 friendship;
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ s32 symbol = GetFronterBrainSymbol();
+
+ if (facility == FRONTIER_FACILITY_DOME)
+ monCountInBits = GetDomeTrainerMonCountInBits(TrainerIdToDomeTournamentId(TRAINER_FRONTIER_BRAIN));
+ else
+ monCountInBits = 7;
+
+ ZeroEnemyPartyMons();
+ monPartyId = 0;
+ monLevel = SetFacilityPtrsGetLevel();
+ for (i = 0; i < 3; monCountInBits >>= 1, i++)
+ {
+ if (!(monCountInBits & 1))
+ continue;
+
+ do
+ {
+ j = Random32();
+ } while (IsShinyOtIdPersonality(FRONTIER_BRAIN_OTID, j) || sFrontierBrainsMons[facility][symbol][i].nature != GetNatureFromPersonality(j));
+ CreateMon(&gEnemyParty[monPartyId],
+ sFrontierBrainsMons[facility][symbol][i].species,
+ monLevel,
+ sFrontierBrainsMons[facility][symbol][i].fixedIV,
+ TRUE, j,
+ TRUE, FRONTIER_BRAIN_OTID);
+ SetMonData(&gEnemyParty[monPartyId], MON_DATA_HELD_ITEM, &sFrontierBrainsMons[facility][symbol][i].heldItem);
+ for (j = 0; j < NUM_STATS; j++)
+ SetMonData(&gEnemyParty[monPartyId], MON_DATA_HP_EV + j, &sFrontierBrainsMons[facility][symbol][i].evs[j]);
+ friendship = 0xFF;
+ for (j = 0; j < 4; j++)
+ {
+ SetMonMoveSlot(&gEnemyParty[monPartyId], sFrontierBrainsMons[facility][symbol][i].moves[j], j);
+ if (sFrontierBrainsMons[facility][symbol][i].moves[j] == MOVE_FRUSTRATION)
+ friendship = 0;
+ }
+ SetMonData(&gEnemyParty[monPartyId], MON_DATA_FRIENDSHIP, &friendship);
+ CalculateMonStats(&gEnemyParty[monPartyId]);
+ monPartyId++;
+ }
+}
+#else
+NAKED
+void CreateFrontierBrainPokemon(void)
+{
+ asm_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, 0x44\n\
+ ldr r0, =0x000040cf\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x20]\n\
+ bl GetFronterBrainSymbol\n\
+ str r0, [sp, 0x24]\n\
+ ldr r0, [sp, 0x20]\n\
+ cmp r0, 0x1\n\
+ bne _081A4E44\n\
+ ldr r0, =0x000003fe\n\
+ bl TrainerIdToDomeTournamentId\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl GetDomeTrainerMonCountInBits\n\
+ adds r4, r0, 0\n\
+ b _081A4E46\n\
+ .pool\n\
+_081A4E44:\n\
+ movs r4, 0x7\n\
+_081A4E46:\n\
+ bl ZeroEnemyPartyMons\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x18]\n\
+ bl SetFacilityPtrsGetLevel\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x1C]\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x14]\n\
+_081A4E5C:\n\
+ movs r0, 0x1\n\
+ ands r0, r4\n\
+ asrs r4, 1\n\
+ str r4, [sp, 0x30]\n\
+ ldr r3, [sp, 0x14]\n\
+ adds r3, 0x1\n\
+ str r3, [sp, 0x28]\n\
+ cmp r0, 0\n\
+ bne _081A4E70\n\
+ b _081A4FC4\n\
+_081A4E70:\n\
+ ldr r4, [sp, 0x14]\n\
+ lsls r4, 2\n\
+ mov r9, r4\n\
+ ldr r0, [sp, 0x24]\n\
+ lsls r0, 4\n\
+ str r0, [sp, 0x38]\n\
+ ldr r1, [sp, 0x20]\n\
+ lsls r1, 4\n\
+ str r1, [sp, 0x34]\n\
+ ldr r2, [sp, 0x1C]\n\
+ lsls r2, 24\n\
+ str r2, [sp, 0x3C]\n\
+ ldr r3, [sp, 0x18]\n\
+ adds r3, 0x1\n\
+ str r3, [sp, 0x2C]\n\
+ ldr r0, [sp, 0x14]\n\
+ add r0, r9\n\
+ lsls r0, 2\n\
+ mov r8, r0\n\
+_081A4E96:\n\
+ bl Random\n\
+ adds r4, r0, 0\n\
+ bl Random\n\
+ lsls r4, 16\n\
+ lsrs r7, r4, 16\n\
+ lsls r0, 16\n\
+ orrs r7, r0\n\
+ ldr r0, =0x0000ef2a\n\
+ adds r1, r7, 0\n\
+ bl IsShinyOtIdPersonality\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _081A4E96\n\
+ ldr r4, [sp, 0x38]\n\
+ ldr r1, [sp, 0x24]\n\
+ subs r0, r4, r1\n\
+ lsls r5, r0, 2\n\
+ mov r2, r8\n\
+ adds r4, r2, r5\n\
+ ldr r3, [sp, 0x34]\n\
+ ldr r1, [sp, 0x20]\n\
+ subs r0, r3, r1\n\
+ lsls r6, r0, 3\n\
+ adds r4, r6\n\
+ ldr r2, =sFrontierBrainsMons\n\
+ adds r4, r2\n\
+ adds r0, r7, 0\n\
+ bl GetNatureFromPersonality\n\
+ ldrb r1, [r4, 0x5]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r1, r0\n\
+ bne _081A4E96\n\
+ ldr r4, [sp, 0x18]\n\
+ movs r0, 0x64\n\
+ adds r3, r4, 0\n\
+ muls r3, r0\n\
+ mov r8, r3\n\
+ ldr r1, =gEnemyParty\n\
+ add r1, r8\n\
+ mov r10, r1\n\
+ ldr r4, [sp, 0x14]\n\
+ add r4, r9\n\
+ lsls r4, 2\n\
+ adds r0, r4, r5\n\
+ adds r0, r6\n\
+ ldr r2, =sFrontierBrainsMons\n\
+ adds r0, r2\n\
+ ldrh r1, [r0]\n\
+ ldr r3, [sp, 0x3C]\n\
+ lsrs r2, r3, 24\n\
+ ldrb r3, [r0, 0x4]\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ str r7, [sp, 0x4]\n\
+ str r0, [sp, 0x8]\n\
+ ldr r0, =0x0000ef2a\n\
+ str r0, [sp, 0xC]\n\
+ mov r0, r10\n\
+ bl CreateMon\n\
+ ldr r0, =sFrontierBrainsMons\n\
+ adds r5, r0\n\
+ adds r5, r6, r5\n\
+ adds r4, r5, r4\n\
+ adds r4, 0x2\n\
+ mov r0, r10\n\
+ movs r1, 0xC\n\
+ adds r2, r4, 0\n\
+ bl SetMonData\n\
+ movs r7, 0\n\
+ mov r6, r8\n\
+ ldr r3, =gEnemyParty\n\
+_081A4F32:\n\
+ adds r1, r7, 0\n\
+ adds r1, 0x1A\n\
+ ldr r0, [sp, 0x14]\n\
+ add r0, r9\n\
+ lsls r4, r0, 2\n\
+ adds r2, r5, r4\n\
+ adds r0, r7, 0x6\n\
+ adds r2, r0\n\
+ adds r0, r6, r3\n\
+ str r3, [sp, 0x40]\n\
+ bl SetMonData\n\
+ adds r7, 0x1\n\
+ ldr r3, [sp, 0x40]\n\
+ cmp r7, 0x5\n\
+ ble _081A4F32\n\
+ movs r1, 0xFF\n\
+ add r0, sp, 0x10\n\
+ strb r1, [r0]\n\
+ movs r7, 0\n\
+ ldr r1, [sp, 0x18]\n\
+ movs r2, 0x64\n\
+ adds r6, r1, 0\n\
+ muls r6, r2\n\
+ ldr r3, =sFrontierBrainsMons + 0xC\n\
+ mov r8, r3\n\
+ ldr r3, =gEnemyParty\n\
+ adds r5, r4, 0\n\
+_081A4F6A:\n\
+ ldr r4, [sp, 0x38]\n\
+ ldr r0, [sp, 0x24]\n\
+ subs r1, r4, r0\n\
+ lsls r1, 2\n\
+ adds r1, r5, r1\n\
+ ldr r2, [sp, 0x34]\n\
+ ldr r4, [sp, 0x20]\n\
+ subs r0, r2, r4\n\
+ lsls r0, 3\n\
+ adds r1, r0\n\
+ add r1, r8\n\
+ ldrh r4, [r1]\n\
+ lsls r2, r7, 24\n\
+ lsrs r2, 24\n\
+ adds r0, r6, r3\n\
+ adds r1, r4, 0\n\
+ str r3, [sp, 0x40]\n\
+ bl SetMonMoveSlot\n\
+ ldr r3, [sp, 0x40]\n\
+ cmp r4, 0xDA\n\
+ bne _081A4F9C\n\
+ movs r1, 0\n\
+ add r0, sp, 0x10\n\
+ strb r1, [r0]\n\
+_081A4F9C:\n\
+ adds r5, 0x2\n\
+ adds r7, 0x1\n\
+ cmp r7, 0x3\n\
+ ble _081A4F6A\n\
+ ldr r0, [sp, 0x18]\n\
+ movs r1, 0x64\n\
+ adds r4, r0, 0\n\
+ muls r4, r1\n\
+ ldr r0, =gEnemyParty\n\
+ adds r4, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x20\n\
+ add r2, sp, 0x10\n\
+ bl SetMonData\n\
+ adds r0, r4, 0\n\
+ bl CalculateMonStats\n\
+ ldr r2, [sp, 0x2C]\n\
+ str r2, [sp, 0x18]\n\
+_081A4FC4:\n\
+ ldr r4, [sp, 0x30]\n\
+ ldr r3, [sp, 0x28]\n\
+ str r3, [sp, 0x14]\n\
+ cmp r3, 0x2\n\
+ bgt _081A4FD0\n\
+ b _081A4E5C\n\
+_081A4FD0:\n\
+ add sp, 0x44\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\
+ .pool\n\
+");
+}
+#endif
+
+u16 GetFrontierBrainMonSpecies(u8 monId)
+{
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ s32 symbol = GetFronterBrainSymbol();
+
+ return sFrontierBrainsMons[facility][symbol][monId].species;
+}
+
+void SetFrontierBrainEventObjGfx(u8 facility)
+{
+ gTrainerBattleOpponent_A = TRAINER_FRONTIER_BRAIN;
+ VarSet(VAR_OBJ_GFX_ID_0, sFacilityToBrainEventObjGfx[facility][0]);
+}
+
+u16 GetFrontierBrainMonMove(u8 monId, u8 moveSlotId)
+{
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ s32 symbol = GetFronterBrainSymbol();
+
+ return sFrontierBrainsMons[facility][symbol][monId].moves[moveSlotId];
+}
+
+u8 GetFrontierBrainMonNature(u8 monId)
+{
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ s32 symbol = GetFronterBrainSymbol();
+
+ return sFrontierBrainsMons[facility][symbol][monId].nature;
+}
+
+u8 GetFrontierBrainMonEvs(u8 monId, u8 evStatId)
+{
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ s32 symbol = GetFronterBrainSymbol();
+
+ return sFrontierBrainsMons[facility][symbol][monId].evs[evStatId];
+}
+
+s32 GetFronterBrainSymbol(void)
+{
+ s32 facility = VarGet(VAR_FRONTIER_FACILITY);
+ s32 symbol = GetPlayerSymbolCountForFacility(facility);
+
+ if (symbol == 2)
+ {
+ u16 winStreak = GetCurrentFacilityWinStreak();
+ if (winStreak + gUnknown_08611550[facility][3] == gUnknown_08611550[facility][0])
+ symbol = 0;
+ else if (winStreak + gUnknown_08611550[facility][3] == gUnknown_08611550[facility][1])
+ symbol = 1;
+ else if (winStreak + gUnknown_08611550[facility][3] > gUnknown_08611550[facility][1]
+ && (winStreak + gUnknown_08611550[facility][3] - gUnknown_08611550[facility][1]) % gUnknown_08611550[facility][2] == 0)
+ symbol = 1;
+ }
+ return symbol;
+}
+
+static void CopyFrontierBrainText(bool8 playerWonText)
+{
+ s32 facility;
+ s32 symbol;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ {
+ facility = GetRecordedBattleFrontierFacility();
+ symbol = GetRecordedBattleFronterBrainSymbol();
+ }
+ else
+ {
+ facility = VarGet(VAR_FRONTIER_FACILITY);
+ symbol = GetFronterBrainSymbol();
+ }
+
+ switch (playerWonText)
+ {
+ case FALSE:
+ StringCopy(gStringVar4, gUnknown_08611DB0[symbol][facility]);
+ break;
+ case TRUE:
+ StringCopy(gStringVar4, gUnknown_08611DB8[symbol][facility]);
+ break;
+ }
+}
diff --git a/src/ghost.c b/src/ghost.c
new file mode 100644
index 000000000..ce57df7e8
--- /dev/null
+++ b/src/ghost.c
@@ -0,0 +1,186 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_811160C(struct Sprite *);
+extern void sub_81117F4(struct Sprite *);
+extern void sub_81119E0(struct Sprite *);
+extern void sub_8111B9C(struct Sprite *);
+extern void sub_8112264(struct Sprite *);
+extern void sub_81129F0(struct Sprite *);
+extern void sub_8112B78(struct Sprite *);
+extern void sub_8112E9C(struct Sprite *);
+extern void sub_8112F60(struct Sprite *);
+
+const union AffineAnimCmd gUnknown_08596CF8[] =
+{
+ AFFINEANIMCMD_FRAME(0x1E, 0x1E, 10, 5),
+ AFFINEANIMCMD_FRAME(0xFFE2, 0xFFE2, 10, 5),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08596D10[] =
+{
+ gUnknown_08596CF8,
+};
+
+const struct SpriteTemplate gUnknown_08596D14 =
+{
+ .tileTag = ANIM_TAG_YELLOW_BALL,
+ .paletteTag = ANIM_TAG_YELLOW_BALL,
+ .oam = &gUnknown_085249CC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08596D10,
+ .callback = sub_811160C,
+};
+
+const struct SpriteTemplate gUnknown_08596D2C =
+{
+ .tileTag = ANIM_TAG_YELLOW_BALL,
+ .paletteTag = ANIM_TAG_YELLOW_BALL,
+ .oam = &gUnknown_08524A2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81117F4,
+};
+
+const union AffineAnimCmd gUnknown_08596D44[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08596D54[] =
+{
+ gUnknown_08596D44,
+};
+
+const struct SpriteTemplate gUnknown_08596D58 =
+{
+ .tileTag = ANIM_TAG_SHADOW_BALL,
+ .paletteTag = ANIM_TAG_SHADOW_BALL,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08596D54,
+ .callback = sub_81119E0,
+};
+
+const union AnimCmd gUnknown_08596D70[] =
+{
+ 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 gUnknown_08596D88[] =
+{
+ gUnknown_08596D70,
+};
+
+const struct SpriteTemplate gUnknown_08596D8C =
+{
+ .tileTag = ANIM_TAG_LICK,
+ .paletteTag = ANIM_TAG_LICK,
+ .oam = &gUnknown_08524954,
+ .anims = gUnknown_08596D88,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8111B9C,
+};
+
+const union AffineAnimCmd gUnknown_08596DA4[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08596DB4[] =
+{
+ gUnknown_08596DA4,
+};
+
+const struct SpriteTemplate gUnknown_08596DB8 =
+{
+ .tileTag = ANIM_TAG_WHITE_SHADOW,
+ .paletteTag = ANIM_TAG_WHITE_SHADOW,
+ .oam = &gUnknown_08524A5C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8112264,
+};
+
+const struct SpriteTemplate gUnknown_08596DD0 =
+{
+ .tileTag = ANIM_TAG_NAIL,
+ .paletteTag = ANIM_TAG_NAIL,
+ .oam = &gUnknown_08524A54,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81129F0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8596DE8 =
+{
+ .tileTag = ANIM_TAG_GHOSTLY_SPIRIT,
+ .paletteTag = ANIM_TAG_GHOSTLY_SPIRIT,
+ .oam = &gUnknown_08524A34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8112B78,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8596E00 =
+{
+ .tileTag = ANIM_TAG_DEVIL,
+ .paletteTag = ANIM_TAG_DEVIL,
+ .oam = &gUnknown_08524A34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8112B78,
+};
+
+const union AnimCmd gUnknown_08596E18[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08596E2C[] =
+{
+ gUnknown_08596E18,
+};
+
+const struct SpriteTemplate gUnknown_08596E30 =
+{
+ .tileTag = ANIM_TAG_PURPLE_FLAME,
+ .paletteTag = ANIM_TAG_PURPLE_FLAME,
+ .oam = &gUnknown_08524A74,
+ .anims = gUnknown_08596E2C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8112E9C,
+};
+
+const struct SpriteTemplate gUnknown_08596E48 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8112F60,
+};
diff --git a/src/graphics.c b/src/graphics.c
index 5debb721a..b2de074bc 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -1,353 +1,353 @@
#include "global.h"
-const u8 gBattleTextboxTiles[] = INCBIN_U8("graphics/interface/menu.4bpp.lz");
-const u8 gBattleTextboxPalette[] = INCBIN_U8("graphics/interface/menu.gbapal.lz");
-const u16 gBattleTextboxTilemap[] = INCBIN_U16("graphics/interface/menu_map.bin.lz");
+const u32 gBattleTextboxTiles[] = INCBIN_U32("graphics/battle_interface/textbox.4bpp.lz");
+const u32 gBattleTextboxPalette[] = INCBIN_U32("graphics/battle_interface/textbox.gbapal.lz");
+const u32 gBattleTextboxTilemap[] = INCBIN_U32("graphics/battle_interface/textbox_map.bin.lz");
-const u8 gMonStillFrontPic_CircledQuestionMark[] = INCBIN_U8("graphics/pokemon/front_pics/circled_question_mark_still_front_pic.4bpp.lz");
-const u8 gMonBackPic_CircledQuestionMark[] = INCBIN_U8("graphics/pokemon/back_pics/circled_question_mark_back_pic.4bpp.lz");
-const u8 gMonPalette_CircledQuestionMark[] = INCBIN_U8("graphics/pokemon/palettes/circled_question_mark_palette.gbapal.lz");
-const u8 gMonShinyPalette_CircledQuestionMark[] = INCBIN_U8("graphics/pokemon/palettes/circled_question_mark_shiny_palette.gbapal.lz");
+const u32 gMonStillFrontPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/front_pics/circled_question_mark_still_front_pic.4bpp.lz");
+const u32 gMonBackPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/back_pics/circled_question_mark_back_pic.4bpp.lz");
+const u32 gMonPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/palettes/circled_question_mark_palette.gbapal.lz");
+const u32 gMonShinyPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/palettes/circled_question_mark_shiny_palette.gbapal.lz");
-const u8 gUnusedGfx_OldCharmap[] = INCBIN_U8("graphics/unused/old_charmap.4bpp.lz"); // japanese table and bunch of stuff
-const u16 gUnusedTimemap_OldCharmap[] = INCBIN_U16("graphics/unused/old_charmap.bin.lz");
-const u8 gUnusedPal_OldCharmap[] = INCBIN_U8("graphics/unused/old_charmap.gbapal.lz");
+const u32 gUnusedGfx_OldCharmap[] = INCBIN_U32("graphics/unused/old_charmap.4bpp.lz"); // japanese table and bunch of stuff
+const u32 gUnusedTimemap_OldCharmap[] = INCBIN_U32("graphics/unused/old_charmap.bin.lz");
+const u32 gUnusedPal_OldCharmap[] = INCBIN_U32("graphics/unused/old_charmap.gbapal.lz");
-const u8 gSmokescreenImpactTiles[] = INCBIN_U8("graphics/battle_anims/sprites/smokescreen_impact.4bpp.lz");
-const u8 gSmokescreenImpactPalette[] = INCBIN_U8("graphics/battle_anims/sprites/smokescreen_impact.gbapal.lz");
+const u32 gSmokescreenImpactTiles[] = INCBIN_U32("graphics/battle_anims/sprites/smokescreen_impact.4bpp.lz");
+const u32 gSmokescreenImpactPalette[] = INCBIN_U32("graphics/battle_anims/sprites/smokescreen_impact.gbapal.lz");
#include "data/graphics/interface_pokeballs.h"
-const u8 gBlankGfxCompressed[] = INCBIN_U8("graphics/interface/blank.4bpp.lz");
+const u32 gBlankGfxCompressed[] = INCBIN_U32("graphics/interface/blank.4bpp.lz");
// Battle anims
-const u8 gBattleAnimSpriteSheet_146[] = INCBIN_U8("graphics/battle_anims/sprites/146.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_000[] = INCBIN_U8("graphics/battle_anims/sprites/000.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_003[] = INCBIN_U8("graphics/battle_anims/sprites/003.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_004[] = INCBIN_U8("graphics/battle_anims/sprites/004.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_005[] = INCBIN_U8("graphics/battle_anims/sprites/005.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_006[] = INCBIN_U8("graphics/battle_anims/sprites/006.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_146[] = INCBIN_U32("graphics/battle_anims/sprites/146.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_000[] = INCBIN_U32("graphics/battle_anims/sprites/000.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_003[] = INCBIN_U32("graphics/battle_anims/sprites/003.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_004[] = INCBIN_U32("graphics/battle_anims/sprites/004.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_005[] = INCBIN_U32("graphics/battle_anims/sprites/005.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_006[] = INCBIN_U32("graphics/battle_anims/sprites/006.4bpp.lz");
-const u8 gBattleAnimSpritePalette_115[] = INCBIN_U8("graphics/battle_anims/sprites/115.gbapal.lz");
-const u8 gBattleAnimSpritePalette_000[] = INCBIN_U8("graphics/battle_anims/sprites/000.gbapal.lz");
-const u8 gBattleAnimSpritePalette_003[] = INCBIN_U8("graphics/battle_anims/sprites/003.gbapal.lz");
-const u8 gBattleAnimSpritePalette_004[] = INCBIN_U8("graphics/battle_anims/sprites/004.gbapal.lz");
-const u8 gBattleAnimSpritePalette_005[] = INCBIN_U8("graphics/battle_anims/sprites/005.gbapal.lz");
-const u8 gBattleAnimSpritePalette_006[] = INCBIN_U8("graphics/battle_anims/sprites/006.gbapal.lz");
+const u32 gBattleAnimSpritePalette_115[] = INCBIN_U32("graphics/battle_anims/sprites/115.gbapal.lz");
+const u32 gBattleAnimSpritePalette_000[] = INCBIN_U32("graphics/battle_anims/sprites/000.gbapal.lz");
+const u32 gBattleAnimSpritePalette_003[] = INCBIN_U32("graphics/battle_anims/sprites/003.gbapal.lz");
+const u32 gBattleAnimSpritePalette_004[] = INCBIN_U32("graphics/battle_anims/sprites/004.gbapal.lz");
+const u32 gBattleAnimSpritePalette_005[] = INCBIN_U32("graphics/battle_anims/sprites/005.gbapal.lz");
+const u32 gBattleAnimSpritePalette_006[] = INCBIN_U32("graphics/battle_anims/sprites/006.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_161[] = INCBIN_U8("graphics/battle_anims/sprites/161.4bpp.lz");
-const u8 gBattleAnimSpritePalette_161[] = INCBIN_U8("graphics/battle_anims/sprites/161.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_161[] = INCBIN_U32("graphics/battle_anims/sprites/161.4bpp.lz");
+const u32 gBattleAnimSpritePalette_161[] = INCBIN_U32("graphics/battle_anims/sprites/161.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_007[] = INCBIN_U8("graphics/battle_anims/sprites/007.4bpp.lz");
-const u8 gBattleAnimSpritePalette_007[] = INCBIN_U8("graphics/battle_anims/sprites/007.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_007[] = INCBIN_U32("graphics/battle_anims/sprites/007.4bpp.lz");
+const u32 gBattleAnimSpritePalette_007[] = INCBIN_U32("graphics/battle_anims/sprites/007.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_008[] = INCBIN_U8("graphics/battle_anims/sprites/008.4bpp.lz");
-const u8 gBattleAnimSpritePalette_008[] = INCBIN_U8("graphics/battle_anims/sprites/008.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_008[] = INCBIN_U32("graphics/battle_anims/sprites/008.4bpp.lz");
+const u32 gBattleAnimSpritePalette_008[] = INCBIN_U32("graphics/battle_anims/sprites/008.gbapal.lz");
-const u8 gBattleAnimSpritePalette_010[] = INCBIN_U8("graphics/battle_anims/sprites/010.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_010[] = INCBIN_U8("graphics/battle_anims/sprites/010.4bpp.lz");
+const u32 gBattleAnimSpritePalette_010[] = INCBIN_U32("graphics/battle_anims/sprites/010.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_010[] = INCBIN_U32("graphics/battle_anims/sprites/010.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_009[] = INCBIN_U8("graphics/battle_anims/sprites/009.4bpp.lz");
-const u8 gBattleAnimSpritePalette_009[] = INCBIN_U8("graphics/battle_anims/sprites/009.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_009[] = INCBIN_U32("graphics/battle_anims/sprites/009.4bpp.lz");
+const u32 gBattleAnimSpritePalette_009[] = INCBIN_U32("graphics/battle_anims/sprites/009.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_011[] = INCBIN_U8("graphics/battle_anims/sprites/011.4bpp.lz");
-const u8 gBattleAnimSpritePalette_011[] = INCBIN_U8("graphics/battle_anims/sprites/011.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_011[] = INCBIN_U32("graphics/battle_anims/sprites/011.4bpp.lz");
+const u32 gBattleAnimSpritePalette_011[] = INCBIN_U32("graphics/battle_anims/sprites/011.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_012[] = INCBIN_U8("graphics/battle_anims/sprites/012.4bpp.lz");
-const u8 gBattleAnimSpritePalette_012[] = INCBIN_U8("graphics/battle_anims/sprites/012.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_012[] = INCBIN_U32("graphics/battle_anims/sprites/012.4bpp.lz");
+const u32 gBattleAnimSpritePalette_012[] = INCBIN_U32("graphics/battle_anims/sprites/012.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_152[] = INCBIN_U8("graphics/battle_anims/sprites/152.4bpp.lz");
-const u8 gBattleAnimSpritePalette_152[] = INCBIN_U8("graphics/battle_anims/sprites/152.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_152[] = INCBIN_U32("graphics/battle_anims/sprites/152.4bpp.lz");
+const u32 gBattleAnimSpritePalette_152[] = INCBIN_U32("graphics/battle_anims/sprites/152.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_013[] = INCBIN_U8("graphics/battle_anims/sprites/013.4bpp.lz");
-const u8 gBattleAnimSpritePalette_013[] = INCBIN_U8("graphics/battle_anims/sprites/013.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_013[] = INCBIN_U32("graphics/battle_anims/sprites/013.4bpp.lz");
+const u32 gBattleAnimSpritePalette_013[] = INCBIN_U32("graphics/battle_anims/sprites/013.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_015[] = INCBIN_U8("graphics/battle_anims/sprites/015.4bpp.lz");
-const u8 gBattleAnimSpritePalette_015[] = INCBIN_U8("graphics/battle_anims/sprites/015.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_015[] = INCBIN_U32("graphics/battle_anims/sprites/015.4bpp.lz");
+const u32 gBattleAnimSpritePalette_015[] = INCBIN_U32("graphics/battle_anims/sprites/015.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_016[] = INCBIN_U8("graphics/battle_anims/sprites/016.4bpp.lz");
-const u8 gBattleAnimSpritePalette_016[] = INCBIN_U8("graphics/battle_anims/sprites/016.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_016[] = INCBIN_U32("graphics/battle_anims/sprites/016.4bpp.lz");
+const u32 gBattleAnimSpritePalette_016[] = INCBIN_U32("graphics/battle_anims/sprites/016.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_017[] = INCBIN_U8("graphics/battle_anims/sprites/017.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_017[] = INCBIN_U32("graphics/battle_anims/sprites/017.4bpp.lz");
-const u8 gUnknownGfx_C035B8[] = INCBIN_U8("graphics/unknown/unknown_C035B8.4bpp.lz");
+const u32 gUnknownGfx_C035B8[] = INCBIN_U32("graphics/unknown/unknown_C035B8.4bpp.lz");
-const u8 gBattleAnimSpritePalette_019[] = INCBIN_U8("graphics/battle_anims/sprites/019.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_019[] = INCBIN_U8("graphics/battle_anims/sprites/019.4bpp.lz");
+const u32 gBattleAnimSpritePalette_019[] = INCBIN_U32("graphics/battle_anims/sprites/019.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_019[] = INCBIN_U32("graphics/battle_anims/sprites/019.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_020[] = INCBIN_U8("graphics/battle_anims/sprites/020.4bpp.lz");
-const u8 gBattleAnimSpritePalette_020[] = INCBIN_U8("graphics/battle_anims/sprites/020.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_020[] = INCBIN_U32("graphics/battle_anims/sprites/020.4bpp.lz");
+const u32 gBattleAnimSpritePalette_020[] = INCBIN_U32("graphics/battle_anims/sprites/020.gbapal.lz");
-const u8 gBattleAnimSpritePalette_023[] = INCBIN_U8("graphics/battle_anims/sprites/023.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_023[] = INCBIN_U8("graphics/battle_anims/sprites/023.4bpp.lz");
+const u32 gBattleAnimSpritePalette_023[] = INCBIN_U32("graphics/battle_anims/sprites/023.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_023[] = INCBIN_U32("graphics/battle_anims/sprites/023.4bpp.lz");
-const u8 gUnused_BattleSpritePalette_023[] = INCBIN_U8("graphics/unused/battle_anim_023.gbapal.lz");
+const u32 gUnused_BattleSpritePalette_023[] = INCBIN_U32("graphics/unused/battle_anim_023.gbapal.lz");
-const u8 gUnusedGfx_MusicNotes[] = INCBIN_U8("graphics/unused/music_notes.4bpp.lz");
+const u32 gUnusedGfx_MusicNotes[] = INCBIN_U32("graphics/unused/music_notes.4bpp.lz");
-const u8 gBattleAnimSpritePalette_021[] = INCBIN_U8("graphics/battle_anims/sprites/021.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_021[] = INCBIN_U8("graphics/battle_anims/sprites/021.4bpp.lz");
+const u32 gBattleAnimSpritePalette_021[] = INCBIN_U32("graphics/battle_anims/sprites/021.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_021[] = INCBIN_U32("graphics/battle_anims/sprites/021.4bpp.lz");
-const u8 gBattleAnimSpritePalette_022[] = INCBIN_U8("graphics/battle_anims/sprites/022.gbapal.lz");
+const u32 gBattleAnimSpritePalette_022[] = INCBIN_U32("graphics/battle_anims/sprites/022.gbapal.lz");
-const u8 gBattleAnimSpritePalette_025[] = INCBIN_U8("graphics/battle_anims/sprites/025.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_025[] = INCBIN_U8("graphics/battle_anims/sprites/025.4bpp.lz");
+const u32 gBattleAnimSpritePalette_025[] = INCBIN_U32("graphics/battle_anims/sprites/025.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_025[] = INCBIN_U32("graphics/battle_anims/sprites/025.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_024[] = INCBIN_U8("graphics/battle_anims/sprites/024.4bpp.lz");
-const u8 gBattleAnimSpritePalette_024[] = INCBIN_U8("graphics/battle_anims/sprites/024.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_024[] = INCBIN_U32("graphics/battle_anims/sprites/024.4bpp.lz");
+const u32 gBattleAnimSpritePalette_024[] = INCBIN_U32("graphics/battle_anims/sprites/024.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_031[] = INCBIN_U8("graphics/battle_anims/sprites/031.4bpp.lz");
-const u8 gBattleAnimSpritePalette_031[] = INCBIN_U8("graphics/battle_anims/sprites/031.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_031[] = INCBIN_U32("graphics/battle_anims/sprites/031.4bpp.lz");
+const u32 gBattleAnimSpritePalette_031[] = INCBIN_U32("graphics/battle_anims/sprites/031.gbapal.lz");
-const u8 gBattleAnimSpritePalette_032[] = INCBIN_U8("graphics/battle_anims/sprites/032.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_032[] = INCBIN_U8("graphics/battle_anims/sprites/032.4bpp.lz");
+const u32 gBattleAnimSpritePalette_032[] = INCBIN_U32("graphics/battle_anims/sprites/032.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_032[] = INCBIN_U32("graphics/battle_anims/sprites/032.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_026[] = INCBIN_U8("graphics/battle_anims/sprites/026.4bpp.lz");
-const u8 gBattleAnimSpritePalette_026[] = INCBIN_U8("graphics/battle_anims/sprites/026.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_026[] = INCBIN_U32("graphics/battle_anims/sprites/026.4bpp.lz");
+const u32 gBattleAnimSpritePalette_026[] = INCBIN_U32("graphics/battle_anims/sprites/026.gbapal.lz");
-const u8 gBattleAnimSpritePalette_027[] = INCBIN_U8("graphics/battle_anims/sprites/027.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_027[] = INCBIN_U8("graphics/battle_anims/sprites/027.4bpp.lz");
+const u32 gBattleAnimSpritePalette_027[] = INCBIN_U32("graphics/battle_anims/sprites/027.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_027[] = INCBIN_U32("graphics/battle_anims/sprites/027.4bpp.lz");
-const u8 gBattleAnimSpritePalette_028[] = INCBIN_U8("graphics/battle_anims/sprites/028.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_028[] = INCBIN_U8("graphics/battle_anims/sprites/028.4bpp.lz");
+const u32 gBattleAnimSpritePalette_028[] = INCBIN_U32("graphics/battle_anims/sprites/028.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_028[] = INCBIN_U32("graphics/battle_anims/sprites/028.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_029[] = INCBIN_U8("graphics/battle_anims/sprites/029.4bpp.lz");
-const u8 gBattleAnimSpritePalette_029[] = INCBIN_U8("graphics/battle_anims/sprites/029.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_029[] = INCBIN_U32("graphics/battle_anims/sprites/029.4bpp.lz");
+const u32 gBattleAnimSpritePalette_029[] = INCBIN_U32("graphics/battle_anims/sprites/029.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_030[] = INCBIN_U8("graphics/battle_anims/sprites/030.4bpp.lz");
-const u8 gBattleAnimSpritePalette_030[] = INCBIN_U8("graphics/battle_anims/sprites/030.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_030[] = INCBIN_U32("graphics/battle_anims/sprites/030.4bpp.lz");
+const u32 gBattleAnimSpritePalette_030[] = INCBIN_U32("graphics/battle_anims/sprites/030.gbapal.lz");
-const u8 gBattleAnimSpritePalette_033[] = INCBIN_U8("graphics/battle_anims/sprites/033.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_033[] = INCBIN_U8("graphics/battle_anims/sprites/033.4bpp.lz");
+const u32 gBattleAnimSpritePalette_033[] = INCBIN_U32("graphics/battle_anims/sprites/033.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_033[] = INCBIN_U32("graphics/battle_anims/sprites/033.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_034[] = INCBIN_U8("graphics/battle_anims/sprites/034.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_035[] = INCBIN_U8("graphics/battle_anims/sprites/035.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_034[] = INCBIN_U32("graphics/battle_anims/sprites/034.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_035[] = INCBIN_U32("graphics/battle_anims/sprites/035.4bpp.lz");
-const u8 gBattleAnimSpritePalette_036[] = INCBIN_U8("graphics/battle_anims/sprites/036.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_036[] = INCBIN_U8("graphics/battle_anims/sprites/036.4bpp.lz");
+const u32 gBattleAnimSpritePalette_036[] = INCBIN_U32("graphics/battle_anims/sprites/036.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_036[] = INCBIN_U32("graphics/battle_anims/sprites/036.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_037[] = INCBIN_U8("graphics/battle_anims/sprites/037.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_037[] = INCBIN_U32("graphics/battle_anims/sprites/037.4bpp.lz");
-const u8 gUnknownGfx_C06D98[] = INCBIN_U8("graphics/unknown/unknown_C06D98.4bpp.lz");
-const u8 gUnknownPal_C06D98[] = INCBIN_U8("graphics/unknown/unknown_C06D98.gbapal.lz");
-const u8 gUnknownPal_C06D98_2[] = INCBIN_U8("graphics/unknown/unknown_C06D98_2.gbapal.lz");
+const u32 gUnknownGfx_C06D98[] = INCBIN_U32("graphics/unknown/unknown_C06D98.4bpp.lz");
+const u32 gUnknownPal_C06D98[] = INCBIN_U32("graphics/unknown/unknown_C06D98.gbapal.lz");
+const u32 gUnknownPal_C06D98_2[] = INCBIN_U32("graphics/unknown/unknown_C06D98_2.gbapal.lz");
// old battle interface data, unused
-const u8 gOldBattleInterfaceGfx[] = INCBIN_U8("graphics/unused/obi1.4bpp.lz");
-const u8 gOldBattleInterfacePal_1_2_3[] = INCBIN_U8("graphics/unused/obi_palpak1.gbapal.lz"); // palettes 1-3
-const u8 gOldBattleInterfacePal4[] = INCBIN_U8("graphics/unused/old_pal4.gbapal.lz"); // 4 is by itself
-const u8 gOldBattleInterfacePal_5_6_7[] = INCBIN_U8("graphics/unused/obi_palpak3.gbapal.lz"); // palettes 5-7
-const u8 gOldBattleInterfaceGfx2[] = INCBIN_U8("graphics/unused/obi2.4bpp.lz");
-const u16 gOldBattleInterfaceTilemap[] = INCBIN_U16("graphics/unused/old_battle_interface_tilemap.bin.lz");
+const u32 gOldBattleInterfaceGfx[] = INCBIN_U32("graphics/unused/obi1.4bpp.lz");
+const u32 gOldBattleInterfacePal_1_2_3[] = INCBIN_U32("graphics/unused/obi_palpak1.gbapal.lz"); // palettes 1-3
+const u32 gOldBattleInterfacePal4[] = INCBIN_U32("graphics/unused/old_pal4.gbapal.lz"); // 4 is by itself
+const u32 gOldBattleInterfacePal_5_6_7[] = INCBIN_U32("graphics/unused/obi_palpak3.gbapal.lz"); // palettes 5-7
+const u32 gOldBattleInterfaceGfx2[] = INCBIN_U32("graphics/unused/obi2.4bpp.lz");
+const u32 gOldBattleInterfaceTilemap[] = INCBIN_U32("graphics/unused/old_battle_interface_tilemap.bin.lz");
-const u8 gBattleAnimSpritePalette_038[] = INCBIN_U8("graphics/battle_anims/sprites/038.gbapal.lz");
-const u8 gBattleAnimSpritePalette_039[] = INCBIN_U8("graphics/battle_anims/sprites/039.gbapal.lz");
+const u32 gBattleAnimSpritePalette_038[] = INCBIN_U32("graphics/battle_anims/sprites/038.gbapal.lz");
+const u32 gBattleAnimSpritePalette_039[] = INCBIN_U32("graphics/battle_anims/sprites/039.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_038[] = INCBIN_U8("graphics/battle_anims/sprites/038.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_039[] = INCBIN_U8("graphics/battle_anims/sprites/039.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_040[] = INCBIN_U8("graphics/battle_anims/sprites/040.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_041[] = INCBIN_U8("graphics/battle_anims/sprites/041.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_038[] = INCBIN_U32("graphics/battle_anims/sprites/038.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_039[] = INCBIN_U32("graphics/battle_anims/sprites/039.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_040[] = INCBIN_U32("graphics/battle_anims/sprites/040.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_041[] = INCBIN_U32("graphics/battle_anims/sprites/041.4bpp.lz");
-const u8 gPartyMenuHpBar_Gfx[] = INCBIN_U8("graphics/interface/party_menu_hpbar.4bpp.lz");
+const u32 gPartyMenuHpBar_Gfx[] = INCBIN_U32("graphics/interface/party_menu_hpbar.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_042[] = INCBIN_U8("graphics/battle_anims/sprites/042.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_042[] = INCBIN_U32("graphics/battle_anims/sprites/042.4bpp.lz");
-const u8 gBattleAnimSpritePalette_042[] = INCBIN_U8("graphics/battle_anims/sprites/042.gbapal.lz");
+const u32 gBattleAnimSpritePalette_042[] = INCBIN_U32("graphics/battle_anims/sprites/042.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_043[] = INCBIN_U8("graphics/battle_anims/sprites/043.4bpp.lz");
-const u8 gBattleAnimSpritePalette_043[] = INCBIN_U8("graphics/battle_anims/sprites/043.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_043[] = INCBIN_U32("graphics/battle_anims/sprites/043.4bpp.lz");
+const u32 gBattleAnimSpritePalette_043[] = INCBIN_U32("graphics/battle_anims/sprites/043.gbapal.lz");
-const u8 gBattleAnimSpritePalette_044[] = INCBIN_U8("graphics/battle_anims/sprites/044.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_044[] = INCBIN_U8("graphics/battle_anims/sprites/044.4bpp.lz");
+const u32 gBattleAnimSpritePalette_044[] = INCBIN_U32("graphics/battle_anims/sprites/044.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_044[] = INCBIN_U32("graphics/battle_anims/sprites/044.4bpp.lz");
-const u8 gBattleAnimSpritePalette_045[] = INCBIN_U8("graphics/battle_anims/sprites/045.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_045[] = INCBIN_U8("graphics/battle_anims/sprites/045.4bpp.lz");
+const u32 gBattleAnimSpritePalette_045[] = INCBIN_U32("graphics/battle_anims/sprites/045.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_045[] = INCBIN_U32("graphics/battle_anims/sprites/045.4bpp.lz");
-const u8 gUnknown_08C08F0C[] = INCBIN_U8("graphics/battle_interface/unused_window.4bpp.lz");
-const u8 gUnknown_08C093C8[] = INCBIN_U8("graphics/battle_interface/unused_window.gbapal.lz");
+const u32 gUnknown_08C08F0C[] = INCBIN_U32("graphics/battle_interface/unused_window.4bpp.lz");
+const u32 gUnknown_08C093C8[] = INCBIN_U32("graphics/battle_interface/unused_window.gbapal.lz");
-const u8 gUnknown_08C093F0[] = INCBIN_U8("graphics/interface/hp_numbers.4bpp.lz");
+const u32 gUnknown_08C093F0[] = INCBIN_U32("graphics/interface/hp_numbers.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_046[] = INCBIN_U8("graphics/battle_anims/sprites/046.4bpp.lz");
-const u8 gBattleAnimSpritePalette_046[] = INCBIN_U8("graphics/battle_anims/sprites/046.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_046[] = INCBIN_U32("graphics/battle_anims/sprites/046.4bpp.lz");
+const u32 gBattleAnimSpritePalette_046[] = INCBIN_U32("graphics/battle_anims/sprites/046.gbapal.lz");
-const u8 gBattleAnimSpritePalette_047[] = INCBIN_U8("graphics/battle_anims/sprites/047.gbapal.lz");
+const u32 gBattleAnimSpritePalette_047[] = INCBIN_U32("graphics/battle_anims/sprites/047.gbapal.lz");
-const u8 gUnusedGfx_Window2[] = INCBIN_U8("graphics/battle_interface/unused_window2.4bpp.lz");
-const u8 gUnusedGfx_Window2Bar[] = INCBIN_U8("graphics/battle_interface/unused_window2bar.4bpp.lz");
+const u32 gUnusedGfx_Window2[] = INCBIN_U32("graphics/battle_interface/unused_window2.4bpp.lz");
+const u32 gUnusedGfx_Window2Bar[] = INCBIN_U32("graphics/battle_interface/unused_window2bar.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_048[] = INCBIN_U8("graphics/battle_anims/sprites/048.4bpp.lz");
-const u8 gBattleAnimSpritePalette_048[] = INCBIN_U8("graphics/battle_anims/sprites/048.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_048[] = INCBIN_U32("graphics/battle_anims/sprites/048.4bpp.lz");
+const u32 gBattleAnimSpritePalette_048[] = INCBIN_U32("graphics/battle_anims/sprites/048.gbapal.lz");
-const u8 gBattleAnimSpritePalette_049[] = INCBIN_U8("graphics/battle_anims/sprites/049.gbapal.lz");
-const u8 gBattleAnimSpritePalette_050[] = INCBIN_U8("graphics/battle_anims/sprites/050.gbapal.lz");
+const u32 gBattleAnimSpritePalette_049[] = INCBIN_U32("graphics/battle_anims/sprites/049.gbapal.lz");
+const u32 gBattleAnimSpritePalette_050[] = INCBIN_U32("graphics/battle_anims/sprites/050.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_050[] = INCBIN_U8("graphics/battle_anims/sprites/050.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_051[] = INCBIN_U8("graphics/battle_anims/sprites/051.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_052[] = INCBIN_U8("graphics/battle_anims/sprites/052.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_050[] = INCBIN_U32("graphics/battle_anims/sprites/050.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_051[] = INCBIN_U32("graphics/battle_anims/sprites/051.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_052[] = INCBIN_U32("graphics/battle_anims/sprites/052.4bpp.lz");
-const u8 gUnusedGfx_LineSketch[] = INCBIN_U8("graphics/unused/line_sketch.4bpp.lz");
-const u8 gUnusedPal_LineSketch[] = INCBIN_U8("graphics/unused/line_sketch.gbapal.lz");
+const u32 gUnusedGfx_LineSketch[] = INCBIN_U32("graphics/unused/line_sketch.4bpp.lz");
+const u32 gUnusedPal_LineSketch[] = INCBIN_U32("graphics/unused/line_sketch.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_054[] = INCBIN_U8("graphics/battle_anims/sprites/054.4bpp.lz");
-const u8 gBattleAnimSpritePalette_054[] = INCBIN_U8("graphics/battle_anims/sprites/054.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_054[] = INCBIN_U32("graphics/battle_anims/sprites/054.4bpp.lz");
+const u32 gBattleAnimSpritePalette_054[] = INCBIN_U32("graphics/battle_anims/sprites/054.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_056[] = INCBIN_U8("graphics/battle_anims/sprites/056.4bpp.lz");
-const u8 gBattleAnimSpritePalette_056[] = INCBIN_U8("graphics/battle_anims/sprites/056.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_056[] = INCBIN_U32("graphics/battle_anims/sprites/056.4bpp.lz");
+const u32 gBattleAnimSpritePalette_056[] = INCBIN_U32("graphics/battle_anims/sprites/056.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_055[] = INCBIN_U8("graphics/battle_anims/sprites/055.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_055[] = INCBIN_U32("graphics/battle_anims/sprites/055.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_057[] = INCBIN_U8("graphics/battle_anims/sprites/057.4bpp.lz");
-const u8 gBattleAnimSpritePalette_057[] = INCBIN_U8("graphics/battle_anims/sprites/057.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_057[] = INCBIN_U32("graphics/battle_anims/sprites/057.4bpp.lz");
+const u32 gBattleAnimSpritePalette_057[] = INCBIN_U32("graphics/battle_anims/sprites/057.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_058[] = INCBIN_U8("graphics/battle_anims/sprites/058.4bpp.lz");
-const u8 gBattleAnimSpritePalette_058[] = INCBIN_U8("graphics/battle_anims/sprites/058.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_058[] = INCBIN_U32("graphics/battle_anims/sprites/058.4bpp.lz");
+const u32 gBattleAnimSpritePalette_058[] = INCBIN_U32("graphics/battle_anims/sprites/058.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_059[] = INCBIN_U8("graphics/battle_anims/sprites/059.4bpp.lz");
-const u8 gBattleAnimSpritePalette_059[] = INCBIN_U8("graphics/battle_anims/sprites/059.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_059[] = INCBIN_U32("graphics/battle_anims/sprites/059.4bpp.lz");
+const u32 gBattleAnimSpritePalette_059[] = INCBIN_U32("graphics/battle_anims/sprites/059.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_060[] = INCBIN_U8("graphics/battle_anims/sprites/060.4bpp.lz");
-const u8 gBattleAnimSpritePalette_060[] = INCBIN_U8("graphics/battle_anims/sprites/060.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_060[] = INCBIN_U32("graphics/battle_anims/sprites/060.4bpp.lz");
+const u32 gBattleAnimSpritePalette_060[] = INCBIN_U32("graphics/battle_anims/sprites/060.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_061[] = INCBIN_U8("graphics/battle_anims/sprites/061.4bpp.lz");
-const u8 gBattleAnimSpritePalette_061[] = INCBIN_U8("graphics/battle_anims/sprites/061.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_061[] = INCBIN_U32("graphics/battle_anims/sprites/061.4bpp.lz");
+const u32 gBattleAnimSpritePalette_061[] = INCBIN_U32("graphics/battle_anims/sprites/061.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_062[] = INCBIN_U8("graphics/battle_anims/sprites/062.4bpp.lz");
-const u8 gBattleAnimSpritePalette_062[] = INCBIN_U8("graphics/battle_anims/sprites/062.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_062[] = INCBIN_U32("graphics/battle_anims/sprites/062.4bpp.lz");
+const u32 gBattleAnimSpritePalette_062[] = INCBIN_U32("graphics/battle_anims/sprites/062.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_063[] = INCBIN_U8("graphics/battle_anims/sprites/063.4bpp.lz");
-const u8 gBattleAnimSpritePalette_063[] = INCBIN_U8("graphics/battle_anims/sprites/063.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_063[] = INCBIN_U32("graphics/battle_anims/sprites/063.4bpp.lz");
+const u32 gBattleAnimSpritePalette_063[] = INCBIN_U32("graphics/battle_anims/sprites/063.gbapal.lz");
-const u8 gUnusedGfx_Metronome[] = INCBIN_U8("graphics/unused/metronome_hand_small.4bpp.lz"); // unused, was for metronome at one point
+const u32 gUnusedGfx_Metronome[] = INCBIN_U32("graphics/unused/metronome_hand_small.4bpp.lz"); // unused, was for metronome at one point
-const u8 gBattleAnimSpritePalette_091[] = INCBIN_U8("graphics/battle_anims/sprites/091.gbapal.lz");
+const u32 gBattleAnimSpritePalette_091[] = INCBIN_U32("graphics/battle_anims/sprites/091.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_065[] = INCBIN_U8("graphics/battle_anims/sprites/065.4bpp.lz");
-const u8 gBattleAnimSpritePalette_065[] = INCBIN_U8("graphics/battle_anims/sprites/065.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_065[] = INCBIN_U32("graphics/battle_anims/sprites/065.4bpp.lz");
+const u32 gBattleAnimSpritePalette_065[] = INCBIN_U32("graphics/battle_anims/sprites/065.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_066[] = INCBIN_U8("graphics/battle_anims/sprites/066.4bpp.lz");
-const u8 gBattleAnimSpritePalette_066[] = INCBIN_U8("graphics/battle_anims/sprites/066.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_066[] = INCBIN_U32("graphics/battle_anims/sprites/066.4bpp.lz");
+const u32 gBattleAnimSpritePalette_066[] = INCBIN_U32("graphics/battle_anims/sprites/066.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_070[] = INCBIN_U8("graphics/battle_anims/sprites/070.4bpp.lz");
-const u8 gBattleAnimSpritePalette_070[] = INCBIN_U8("graphics/battle_anims/sprites/070.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_070[] = INCBIN_U32("graphics/battle_anims/sprites/070.4bpp.lz");
+const u32 gBattleAnimSpritePalette_070[] = INCBIN_U32("graphics/battle_anims/sprites/070.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_071[] = INCBIN_U8("graphics/battle_anims/sprites/071.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_071[] = INCBIN_U32("graphics/battle_anims/sprites/071.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_072[] = INCBIN_U8("graphics/battle_anims/sprites/072.4bpp.lz");
-const u8 gBattleAnimSpritePalette_072[] = INCBIN_U8("graphics/battle_anims/sprites/072.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_072[] = INCBIN_U32("graphics/battle_anims/sprites/072.4bpp.lz");
+const u32 gBattleAnimSpritePalette_072[] = INCBIN_U32("graphics/battle_anims/sprites/072.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_073[] = INCBIN_U8("graphics/battle_anims/sprites/073.4bpp.lz");
-const u8 gBattleAnimSpritePalette_073[] = INCBIN_U8("graphics/battle_anims/sprites/073.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_073[] = INCBIN_U32("graphics/battle_anims/sprites/073.4bpp.lz");
+const u32 gBattleAnimSpritePalette_073[] = INCBIN_U32("graphics/battle_anims/sprites/073.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_075[] = INCBIN_U8("graphics/battle_anims/sprites/075.4bpp.lz");
-const u8 gBattleAnimSpritePalette_075[] = INCBIN_U8("graphics/battle_anims/sprites/075.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_075[] = INCBIN_U32("graphics/battle_anims/sprites/075.4bpp.lz");
+const u32 gBattleAnimSpritePalette_075[] = INCBIN_U32("graphics/battle_anims/sprites/075.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_078[] = INCBIN_U8("graphics/battle_anims/sprites/078.4bpp.lz");
-const u8 gBattleAnimSpritePalette_078[] = INCBIN_U8("graphics/battle_anims/sprites/078.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_078[] = INCBIN_U32("graphics/battle_anims/sprites/078.4bpp.lz");
+const u32 gBattleAnimSpritePalette_078[] = INCBIN_U32("graphics/battle_anims/sprites/078.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_079[] = INCBIN_U8("graphics/battle_anims/sprites/079.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_079[] = INCBIN_U32("graphics/battle_anims/sprites/079.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_080[] = INCBIN_U8("graphics/battle_anims/sprites/080.4bpp.lz");
-const u8 gBattleAnimSpritePalette_080[] = INCBIN_U8("graphics/battle_anims/sprites/080.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_080[] = INCBIN_U32("graphics/battle_anims/sprites/080.4bpp.lz");
+const u32 gBattleAnimSpritePalette_080[] = INCBIN_U32("graphics/battle_anims/sprites/080.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_081[] = INCBIN_U8("graphics/battle_anims/sprites/081.4bpp.lz");
-const u8 gBattleAnimSpritePalette_081[] = INCBIN_U8("graphics/battle_anims/sprites/081.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_081[] = INCBIN_U32("graphics/battle_anims/sprites/081.4bpp.lz");
+const u32 gBattleAnimSpritePalette_081[] = INCBIN_U32("graphics/battle_anims/sprites/081.gbapal.lz");
const u16 gUnknown_C0CA1C[] = INCBIN_U16("graphics/unknown/unknown_C0CA1C.bin");
const u16 gUnknown_C0CA40[] = INCBIN_U16("graphics/unknown/unknown_C0CA40.bin");
const u16 gUnknown_C0CA64[] = INCBIN_U16("graphics/unknown/unknown_C0CA64.bin");
-const u16 gUnusedGfx8bpp_LineSketch2[] = INCBIN_U16("graphics/unused/line_sketch_2.8bpp.lz");
+const u32 gUnusedGfx8bpp_LineSketch2[] = INCBIN_U32("graphics/unused/line_sketch_2.8bpp.lz");
const u16 gUnknown_C0CAE0[] = INCBIN_U16("graphics/unknown/unknown_C0CAE0.bin");
-const u16 gUnusedTilemap_LineSketch2[] = INCBIN_U16("graphics/unused/line_sketch_2.bin.lz");
-
-const u8 gBattleAnimSpriteSheet_082[] = INCBIN_U8("graphics/battle_anims/sprites/082.4bpp.lz");
-const u8 gBattleAnimSpritePalette_082[] = INCBIN_U8("graphics/battle_anims/sprites/082.gbapal.lz");
-
-const u8 gBattleAnimSpritePalette_083[] = INCBIN_U8("graphics/battle_anims/sprites/083.gbapal.lz");
-const u8 gBattleAnimSpritePalette_084[] = INCBIN_U8("graphics/battle_anims/sprites/084.gbapal.lz");
-const u8 gBattleAnimSpritePalette_085[] = INCBIN_U8("graphics/battle_anims/sprites/085.gbapal.lz");
-const u8 gBattleAnimSpritePalette_086[] = INCBIN_U8("graphics/battle_anims/sprites/086.gbapal.lz");
-const u8 gBattleAnimSpritePalette_088[] = INCBIN_U8("graphics/battle_anims/sprites/088.gbapal.lz");
-const u8 gBattleAnimSpritePalette_089[] = INCBIN_U8("graphics/battle_anims/sprites/089.gbapal.lz");
-const u8 gBattleAnimSpritePalette_090[] = INCBIN_U8("graphics/battle_anims/sprites/090.gbapal.lz");
-const u8 gBattleAnimSpritePalette_092[] = INCBIN_U8("graphics/battle_anims/sprites/092.gbapal.lz");
-const u8 gBattleAnimSpritePalette_093[] = INCBIN_U8("graphics/battle_anims/sprites/093.gbapal.lz");
-const u8 gBattleAnimSpritePalette_094[] = INCBIN_U8("graphics/battle_anims/sprites/094.gbapal.lz");
-
-const u16 gUnknown_D0D2B4[] = INCBIN_U16("graphics/unknown/unknown_D0D2B4.bin.lz");
-
-const u8 gBattleAnimSpritePalette_095[] = INCBIN_U8("graphics/battle_anims/sprites/095.gbapal.lz");
-const u8 gBattleAnimSpritePalette_096[] = INCBIN_U8("graphics/battle_anims/sprites/096.gbapal.lz");
-const u8 gBattleAnimSpritePalette_097[] = INCBIN_U8("graphics/battle_anims/sprites/097.gbapal.lz");
-const u8 gBattleAnimSpritePalette_100[] = INCBIN_U8("graphics/battle_anims/sprites/100.gbapal.lz");
-const u8 gBattleAnimSpritePalette_101[] = INCBIN_U8("graphics/battle_anims/sprites/101.gbapal.lz");
-const u8 gBattleAnimSpritePalette_103[] = INCBIN_U8("graphics/battle_anims/sprites/103.gbapal.lz");
-
-const u8 gBattleAnimSpriteSheet_083[] = INCBIN_U8("graphics/battle_anims/sprites/083.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_084[] = INCBIN_U8("graphics/battle_anims/sprites/084.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_085[] = INCBIN_U8("graphics/battle_anims/sprites/085.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_086[] = INCBIN_U8("graphics/battle_anims/sprites/086.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_088[] = INCBIN_U8("graphics/battle_anims/sprites/088.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_089[] = INCBIN_U8("graphics/battle_anims/sprites/089.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_090[] = INCBIN_U8("graphics/battle_anims/sprites/090.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_091[] = INCBIN_U8("graphics/battle_anims/sprites/091.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_092[] = INCBIN_U8("graphics/battle_anims/sprites/092.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_093[] = INCBIN_U8("graphics/battle_anims/sprites/093.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_094[] = INCBIN_U8("graphics/battle_anims/sprites/094.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_095[] = INCBIN_U8("graphics/battle_anims/sprites/095.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_096[] = INCBIN_U8("graphics/battle_anims/sprites/096.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_097[] = INCBIN_U8("graphics/battle_anims/sprites/097.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_098[] = INCBIN_U8("graphics/battle_anims/sprites/098.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_100[] = INCBIN_U8("graphics/battle_anims/sprites/100.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_101[] = INCBIN_U8("graphics/battle_anims/sprites/101.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_102[] = INCBIN_U8("graphics/battle_anims/sprites/102.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_103[] = INCBIN_U8("graphics/battle_anims/sprites/103.4bpp.lz");
-
-const u8 gBattleAnimSpriteSheet_104[] = INCBIN_U8("graphics/battle_anims/sprites/104.4bpp.lz");
-const u8 gBattleAnimSpritePalette_104[] = INCBIN_U8("graphics/battle_anims/sprites/104.gbapal.lz");
-
-const u8 gBattleAnimSpriteSheet_105[] = INCBIN_U8("graphics/battle_anims/sprites/105.4bpp.lz");
-const u8 gBattleAnimSpritePalette_105[] = INCBIN_U8("graphics/battle_anims/sprites/105.gbapal.lz");
-
-const u8 gBattleAnimSpriteSheet_106[] = INCBIN_U8("graphics/battle_anims/sprites/106.4bpp.lz");
-
-const u8 gBattleAnimSpriteSheet_107[] = INCBIN_U8("graphics/battle_anims/sprites/107.4bpp.lz");
-const u8 gBattleAnimSpritePalette_107[] = INCBIN_U8("graphics/battle_anims/sprites/107.gbapal.lz");
-
-const u8 gBattleAnimSpriteSheet_108[] = INCBIN_U8("graphics/battle_anims/sprites/108.4bpp.lz");
-
-const u8 gBattleAnimSpriteSheet_109[] = INCBIN_U8("graphics/battle_anims/sprites/109.4bpp.lz");
-const u8 gBattleAnimSpritePalette_109[] = INCBIN_U8("graphics/battle_anims/sprites/109.gbapal.lz");
-
-const u8 gBattleAnimSpriteSheet_110[] = INCBIN_U8("graphics/battle_anims/sprites/110.4bpp.lz");
-
-const u8 gBattleAnimSpriteSheet_111[] = INCBIN_U8("graphics/battle_anims/sprites/111.4bpp.lz");
-const u8 gBattleAnimSpritePalette_111[] = INCBIN_U8("graphics/battle_anims/sprites/111.gbapal.lz");
-
-const u8 gBattleAnimSpriteSheet_112[] = INCBIN_U8("graphics/battle_anims/sprites/112.4bpp.lz");
-const u8 gBattleAnimSpritePalette_112[] = INCBIN_U8("graphics/battle_anims/sprites/112.gbapal.lz");
-
-const u8 gBattleAnimSpriteSheet_113[] = INCBIN_U8("graphics/battle_anims/sprites/113.4bpp.lz");
-const u8 gBattleAnimSpritePalette_113[] = INCBIN_U8("graphics/battle_anims/sprites/113.gbapal.lz");
-
-const u8 gBattleAnimSpriteSheet_114[] = INCBIN_U8("graphics/battle_anims/sprites/114.4bpp.lz");
-const u8 gBattleAnimSpritePalette_114[] = INCBIN_U8("graphics/battle_anims/sprites/114.gbapal.lz");
-
-const u16 gUnusedTilemap_BlueFrame[] = INCBIN_U16("graphics/unused/blue_frame.bin.lz"); // P1, P2, P3 and P4 tilemaps?
-const u16 gUnusedTilemap_RedYellowGreenFrame[] = INCBIN_U16("graphics/unused/redyellowgreen_frame.bin.lz");
-const u8 gUnusedGfx_ColorFrames[] = INCBIN_U8("graphics/unused/color_frames.4bpp.lz");
-const u16 gUnusedPal_ColorFrames[] = INCBIN_U16("graphics/unused/color_frames.gbapal.lz");
-
-const u8 gBattleAnimSpriteSheet_115[] = INCBIN_U8("graphics/battle_anims/sprites/115.4bpp.lz");
-
-const u16 gUnusedGfx8bpp_WaterSplash [] = INCBIN_U16("graphics/unused/water_splash.8bpp.lz");
-const u16 gUnusedTilemap_WaterSplash[] = INCBIN_U16("graphics/unused/water_splash.bin.lz");
-const u8 gUnusedPalette_WaterSplash[] = INCBIN_U8("graphics/unused/water_splash.gbapal.lz");
-
-const u8 gUnusedGfx_BasicFrame[] = INCBIN_U8("graphics/unused/basic_frame.4bpp.lz");
-const u8 gUnusedPal_BasicFrame[] = INCBIN_U8("graphics/unused/basic_frame.gbapal.lz");
-const u16 gUnusedTilemap_BasicFrame[] = INCBIN_U16("graphics/unused/basic_frame.bin.lz");
+const u32 gUnusedTilemap_LineSketch2[] = INCBIN_U32("graphics/unused/line_sketch_2.bin.lz");
+
+const u32 gBattleAnimSpriteSheet_082[] = INCBIN_U32("graphics/battle_anims/sprites/082.4bpp.lz");
+const u32 gBattleAnimSpritePalette_082[] = INCBIN_U32("graphics/battle_anims/sprites/082.gbapal.lz");
+
+const u32 gBattleAnimSpritePalette_083[] = INCBIN_U32("graphics/battle_anims/sprites/083.gbapal.lz");
+const u32 gBattleAnimSpritePalette_084[] = INCBIN_U32("graphics/battle_anims/sprites/084.gbapal.lz");
+const u32 gBattleAnimSpritePalette_085[] = INCBIN_U32("graphics/battle_anims/sprites/085.gbapal.lz");
+const u32 gBattleAnimSpritePalette_086[] = INCBIN_U32("graphics/battle_anims/sprites/086.gbapal.lz");
+const u32 gBattleAnimSpritePalette_088[] = INCBIN_U32("graphics/battle_anims/sprites/088.gbapal.lz");
+const u32 gBattleAnimSpritePalette_089[] = INCBIN_U32("graphics/battle_anims/sprites/089.gbapal.lz");
+const u32 gBattleAnimSpritePalette_090[] = INCBIN_U32("graphics/battle_anims/sprites/090.gbapal.lz");
+const u32 gBattleAnimSpritePalette_092[] = INCBIN_U32("graphics/battle_anims/sprites/092.gbapal.lz");
+const u32 gBattleAnimSpritePalette_093[] = INCBIN_U32("graphics/battle_anims/sprites/093.gbapal.lz");
+const u32 gBattleAnimSpritePalette_094[] = INCBIN_U32("graphics/battle_anims/sprites/094.gbapal.lz");
+
+const u32 gUnknown_D0D2B4[] = INCBIN_U32("graphics/unknown/unknown_D0D2B4.bin.lz");
+
+const u32 gBattleAnimSpritePalette_095[] = INCBIN_U32("graphics/battle_anims/sprites/095.gbapal.lz");
+const u32 gBattleAnimSpritePalette_096[] = INCBIN_U32("graphics/battle_anims/sprites/096.gbapal.lz");
+const u32 gBattleAnimSpritePalette_097[] = INCBIN_U32("graphics/battle_anims/sprites/097.gbapal.lz");
+const u32 gBattleAnimSpritePalette_100[] = INCBIN_U32("graphics/battle_anims/sprites/100.gbapal.lz");
+const u32 gBattleAnimSpritePalette_101[] = INCBIN_U32("graphics/battle_anims/sprites/101.gbapal.lz");
+const u32 gBattleAnimSpritePalette_103[] = INCBIN_U32("graphics/battle_anims/sprites/103.gbapal.lz");
+
+const u32 gBattleAnimSpriteSheet_083[] = INCBIN_U32("graphics/battle_anims/sprites/083.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_084[] = INCBIN_U32("graphics/battle_anims/sprites/084.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_085[] = INCBIN_U32("graphics/battle_anims/sprites/085.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_086[] = INCBIN_U32("graphics/battle_anims/sprites/086.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_088[] = INCBIN_U32("graphics/battle_anims/sprites/088.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_089[] = INCBIN_U32("graphics/battle_anims/sprites/089.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_090[] = INCBIN_U32("graphics/battle_anims/sprites/090.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_091[] = INCBIN_U32("graphics/battle_anims/sprites/091.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_092[] = INCBIN_U32("graphics/battle_anims/sprites/092.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_093[] = INCBIN_U32("graphics/battle_anims/sprites/093.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_094[] = INCBIN_U32("graphics/battle_anims/sprites/094.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_095[] = INCBIN_U32("graphics/battle_anims/sprites/095.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_096[] = INCBIN_U32("graphics/battle_anims/sprites/096.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_097[] = INCBIN_U32("graphics/battle_anims/sprites/097.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_098[] = INCBIN_U32("graphics/battle_anims/sprites/098.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_100[] = INCBIN_U32("graphics/battle_anims/sprites/100.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_101[] = INCBIN_U32("graphics/battle_anims/sprites/101.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_102[] = INCBIN_U32("graphics/battle_anims/sprites/102.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_103[] = INCBIN_U32("graphics/battle_anims/sprites/103.4bpp.lz");
+
+const u32 gBattleAnimSpriteSheet_104[] = INCBIN_U32("graphics/battle_anims/sprites/104.4bpp.lz");
+const u32 gBattleAnimSpritePalette_104[] = INCBIN_U32("graphics/battle_anims/sprites/104.gbapal.lz");
+
+const u32 gBattleAnimSpriteSheet_105[] = INCBIN_U32("graphics/battle_anims/sprites/105.4bpp.lz");
+const u32 gBattleAnimSpritePalette_105[] = INCBIN_U32("graphics/battle_anims/sprites/105.gbapal.lz");
+
+const u32 gBattleAnimSpriteSheet_106[] = INCBIN_U32("graphics/battle_anims/sprites/106.4bpp.lz");
+
+const u32 gBattleAnimSpriteSheet_107[] = INCBIN_U32("graphics/battle_anims/sprites/107.4bpp.lz");
+const u32 gBattleAnimSpritePalette_107[] = INCBIN_U32("graphics/battle_anims/sprites/107.gbapal.lz");
+
+const u32 gBattleAnimSpriteSheet_108[] = INCBIN_U32("graphics/battle_anims/sprites/108.4bpp.lz");
+
+const u32 gBattleAnimSpriteSheet_109[] = INCBIN_U32("graphics/battle_anims/sprites/109.4bpp.lz");
+const u32 gBattleAnimSpritePalette_109[] = INCBIN_U32("graphics/battle_anims/sprites/109.gbapal.lz");
+
+const u32 gBattleAnimSpriteSheet_110[] = INCBIN_U32("graphics/battle_anims/sprites/110.4bpp.lz");
+
+const u32 gBattleAnimSpriteSheet_111[] = INCBIN_U32("graphics/battle_anims/sprites/111.4bpp.lz");
+const u32 gBattleAnimSpritePalette_111[] = INCBIN_U32("graphics/battle_anims/sprites/111.gbapal.lz");
+
+const u32 gBattleAnimSpriteSheet_112[] = INCBIN_U32("graphics/battle_anims/sprites/112.4bpp.lz");
+const u32 gBattleAnimSpritePalette_112[] = INCBIN_U32("graphics/battle_anims/sprites/112.gbapal.lz");
+
+const u32 gBattleAnimSpriteSheet_113[] = INCBIN_U32("graphics/battle_anims/sprites/113.4bpp.lz");
+const u32 gBattleAnimSpritePalette_113[] = INCBIN_U32("graphics/battle_anims/sprites/113.gbapal.lz");
+
+const u32 gBattleAnimSpriteSheet_114[] = INCBIN_U32("graphics/battle_anims/sprites/114.4bpp.lz");
+const u32 gBattleAnimSpritePalette_114[] = INCBIN_U32("graphics/battle_anims/sprites/114.gbapal.lz");
+
+const u32 gUnusedTilemap_BlueFrame[] = INCBIN_U32("graphics/unused/blue_frame.bin.lz"); // P1, P2, P3 and P4 tilemaps?
+const u32 gUnusedTilemap_RedYellowGreenFrame[] = INCBIN_U32("graphics/unused/redyellowgreen_frame.bin.lz");
+const u32 gUnusedGfx_ColorFrames[] = INCBIN_U32("graphics/unused/color_frames.4bpp.lz");
+const u32 gUnusedPal_ColorFrames[] = INCBIN_U32("graphics/unused/color_frames.gbapal.lz");
+
+const u32 gBattleAnimSpriteSheet_115[] = INCBIN_U32("graphics/battle_anims/sprites/115.4bpp.lz");
+
+const u32 gUnusedGfx8bpp_WaterSplash [] = INCBIN_U32("graphics/unused/water_splash.8bpp.lz");
+const u32 gUnusedTilemap_WaterSplash[] = INCBIN_U32("graphics/unused/water_splash.bin.lz");
+const u32 gUnusedPalette_WaterSplash[] = INCBIN_U32("graphics/unused/water_splash.gbapal.lz");
+
+const u32 gUnusedGfx_BasicFrame[] = INCBIN_U32("graphics/unused/basic_frame.4bpp.lz");
+const u32 gUnusedPal_BasicFrame[] = INCBIN_U32("graphics/unused/basic_frame.gbapal.lz");
+const u32 gUnusedTilemap_BasicFrame[] = INCBIN_U32("graphics/unused/basic_frame.bin.lz");
// Battle Interface
@@ -376,579 +376,579 @@ const u8 gBattleInterfaceGfx_Status3[] = INCBIN_U8("graphics/battle_interface/st
const u8 gBattleInterfaceGfx_Status4[] = INCBIN_U8("graphics/battle_interface/status4.4bpp"); // coloring them is an extreme headache and wont be done for now
const u8 gUnknown_D12FEC[] = INCBIN_U8("graphics/unknown/unknown_D12FEC.4bpp");
const u8 gUnknown_D1300C[] = INCBIN_U8("graphics/unknown/unknown_D1300C.4bpp");
-const u8 gBattleInterfaceGfx_UnusedWindow3[] = INCBIN_U8("graphics/battle_interface/unused_window3.4bpp.lz");
-const u8 gBattleInterfaceGfx_UnusedWindow4[] = INCBIN_U8("graphics/battle_interface/unused_window4.4bpp.lz");
+const u32 gBattleInterfaceGfx_UnusedWindow3[] = INCBIN_U32("graphics/battle_interface/unused_window3.4bpp.lz");
+const u32 gBattleInterfaceGfx_UnusedWindow4[] = INCBIN_U32("graphics/battle_interface/unused_window4.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_116[] = INCBIN_U8("graphics/battle_anims/sprites/116.4bpp.lz");
-const u8 gBattleAnimSpritePalette_116[] = INCBIN_U8("graphics/battle_anims/sprites/116.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_116[] = INCBIN_U32("graphics/battle_anims/sprites/116.4bpp.lz");
+const u32 gBattleAnimSpritePalette_116[] = INCBIN_U32("graphics/battle_anims/sprites/116.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_117[] = INCBIN_U8("graphics/battle_anims/sprites/117.4bpp.lz");
-const u8 gBattleAnimSpritePalette_117[] = INCBIN_U8("graphics/battle_anims/sprites/117.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_117[] = INCBIN_U32("graphics/battle_anims/sprites/117.4bpp.lz");
+const u32 gBattleAnimSpritePalette_117[] = INCBIN_U32("graphics/battle_anims/sprites/117.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_118[] = INCBIN_U8("graphics/battle_anims/sprites/118.4bpp.lz");
-const u8 gBattleAnimSpritePalette_118[] = INCBIN_U8("graphics/battle_anims/sprites/118.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_118[] = INCBIN_U32("graphics/battle_anims/sprites/118.4bpp.lz");
+const u32 gBattleAnimSpritePalette_118[] = INCBIN_U32("graphics/battle_anims/sprites/118.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_119[] = INCBIN_U8("graphics/battle_anims/sprites/119.4bpp.lz");
-const u8 gBattleAnimSpritePalette_119[] = INCBIN_U8("graphics/battle_anims/sprites/119.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_119[] = INCBIN_U32("graphics/battle_anims/sprites/119.4bpp.lz");
+const u32 gBattleAnimSpritePalette_119[] = INCBIN_U32("graphics/battle_anims/sprites/119.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_120[] = INCBIN_U8("graphics/battle_anims/sprites/120.4bpp.lz");
-const u8 gBattleAnimSpritePalette_120[] = INCBIN_U8("graphics/battle_anims/sprites/120.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_120[] = INCBIN_U32("graphics/battle_anims/sprites/120.4bpp.lz");
+const u32 gBattleAnimSpritePalette_120[] = INCBIN_U32("graphics/battle_anims/sprites/120.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_121[] = INCBIN_U8("graphics/battle_anims/sprites/121.4bpp.lz");
-const u8 gBattleAnimSpritePalette_121[] = INCBIN_U8("graphics/battle_anims/sprites/121.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_121[] = INCBIN_U32("graphics/battle_anims/sprites/121.4bpp.lz");
+const u32 gBattleAnimSpritePalette_121[] = INCBIN_U32("graphics/battle_anims/sprites/121.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_122[] = INCBIN_U8("graphics/battle_anims/sprites/122.4bpp.lz");
-const u8 gBattleAnimSpritePalette_122[] = INCBIN_U8("graphics/battle_anims/sprites/122.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_122[] = INCBIN_U32("graphics/battle_anims/sprites/122.4bpp.lz");
+const u32 gBattleAnimSpritePalette_122[] = INCBIN_U32("graphics/battle_anims/sprites/122.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_123[] = INCBIN_U8("graphics/battle_anims/sprites/123.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_123[] = INCBIN_U32("graphics/battle_anims/sprites/123.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_124[] = INCBIN_U8("graphics/battle_anims/sprites/124.4bpp.lz");
-const u8 gBattleAnimSpritePalette_124[] = INCBIN_U8("graphics/battle_anims/sprites/124.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_124[] = INCBIN_U32("graphics/battle_anims/sprites/124.4bpp.lz");
+const u32 gBattleAnimSpritePalette_124[] = INCBIN_U32("graphics/battle_anims/sprites/124.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_125[] = INCBIN_U8("graphics/battle_anims/sprites/125.4bpp.lz");
-const u8 gBattleAnimSpritePalette_125[] = INCBIN_U8("graphics/battle_anims/sprites/125.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_125[] = INCBIN_U32("graphics/battle_anims/sprites/125.4bpp.lz");
+const u32 gBattleAnimSpritePalette_125[] = INCBIN_U32("graphics/battle_anims/sprites/125.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_126[] = INCBIN_U8("graphics/battle_anims/sprites/126.4bpp.lz");
-const u8 gBattleAnimSpritePalette_126[] = INCBIN_U8("graphics/battle_anims/sprites/126.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_126[] = INCBIN_U32("graphics/battle_anims/sprites/126.4bpp.lz");
+const u32 gBattleAnimSpritePalette_126[] = INCBIN_U32("graphics/battle_anims/sprites/126.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_127[] = INCBIN_U8("graphics/battle_anims/sprites/127.4bpp.lz");
-const u8 gBattleAnimSpritePalette_127[] = INCBIN_U8("graphics/battle_anims/sprites/127.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_127[] = INCBIN_U32("graphics/battle_anims/sprites/127.4bpp.lz");
+const u32 gBattleAnimSpritePalette_127[] = INCBIN_U32("graphics/battle_anims/sprites/127.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_128[] = INCBIN_U8("graphics/battle_anims/sprites/128.4bpp.lz");
-const u8 gBattleAnimSpritePalette_128[] = INCBIN_U8("graphics/battle_anims/sprites/128.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_128[] = INCBIN_U32("graphics/battle_anims/sprites/128.4bpp.lz");
+const u32 gBattleAnimSpritePalette_128[] = INCBIN_U32("graphics/battle_anims/sprites/128.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_129[] = INCBIN_U8("graphics/battle_anims/sprites/129.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_129[] = INCBIN_U32("graphics/battle_anims/sprites/129.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_130[] = INCBIN_U8("graphics/battle_anims/sprites/130.4bpp.lz");
-const u8 gBattleAnimSpritePalette_130[] = INCBIN_U8("graphics/battle_anims/sprites/130.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_130[] = INCBIN_U32("graphics/battle_anims/sprites/130.4bpp.lz");
+const u32 gBattleAnimSpritePalette_130[] = INCBIN_U32("graphics/battle_anims/sprites/130.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_131[] = INCBIN_U8("graphics/battle_anims/sprites/131.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_131[] = INCBIN_U32("graphics/battle_anims/sprites/131.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_132[] = INCBIN_U8("graphics/battle_anims/sprites/132.4bpp.lz");
-const u8 gBattleAnimSpritePalette_132[] = INCBIN_U8("graphics/battle_anims/sprites/132.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_132[] = INCBIN_U32("graphics/battle_anims/sprites/132.4bpp.lz");
+const u32 gBattleAnimSpritePalette_132[] = INCBIN_U32("graphics/battle_anims/sprites/132.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_133[] = INCBIN_U8("graphics/battle_anims/sprites/133.4bpp.lz");
-const u8 gBattleAnimSpritePalette_133[] = INCBIN_U8("graphics/battle_anims/sprites/133.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_133[] = INCBIN_U32("graphics/battle_anims/sprites/133.4bpp.lz");
+const u32 gBattleAnimSpritePalette_133[] = INCBIN_U32("graphics/battle_anims/sprites/133.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_134[] = INCBIN_U8("graphics/battle_anims/sprites/134.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_134[] = INCBIN_U32("graphics/battle_anims/sprites/134.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_076[] = INCBIN_U8("graphics/battle_anims/sprites/076.4bpp.lz");
-const u8 gBattleAnimSpritePalette_076[] = INCBIN_U8("graphics/battle_anims/sprites/076.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_076[] = INCBIN_U32("graphics/battle_anims/sprites/076.4bpp.lz");
+const u32 gBattleAnimSpritePalette_076[] = INCBIN_U32("graphics/battle_anims/sprites/076.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_077[] = INCBIN_U8("graphics/battle_anims/sprites/077.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_077[] = INCBIN_U32("graphics/battle_anims/sprites/077.4bpp.lz");
// Contest
-const u8 gUnusedGfx_OldContest[] = INCBIN_U8("graphics/unused/old_contest.4bpp.lz");
-const u8 gUnusedPal_OldContest[] = INCBIN_U8("graphics/unused/old_contest.gbapal.lz");
-const u16 gUnusedTilemap_OldContest[] = INCBIN_U16("graphics/unused/old_contest.bin.lz");
+const u32 gUnusedGfx_OldContest[] = INCBIN_U32("graphics/unused/old_contest.4bpp.lz");
+const u32 gUnusedPal_OldContest[] = INCBIN_U32("graphics/unused/old_contest.gbapal.lz");
+const u32 gUnusedTilemap_OldContest[] = INCBIN_U32("graphics/unused/old_contest.bin.lz");
-const u16 gUnknownTilemap_C15BC0[] = INCBIN_U16("graphics/unknown/unknown_C15BC0.bin.lz");
+const u32 gUnknownTilemap_C15BC0[] = INCBIN_U32("graphics/unknown/unknown_C15BC0.bin.lz");
-const u8 gUnusedGfx_OldContest2[] = INCBIN_U8("graphics/unused/old_contest_2.4bpp.lz");
-const u8 gUnknown_08C16E90[] = INCBIN_U8("graphics/unused/old_contest_2.gbapal.lz");
-const u16 gUnknown_08C16FA8[] = INCBIN_U16("graphics/unused/old_contest_2.bin.lz");
+const u32 gUnusedGfx_OldContest2[] = INCBIN_U32("graphics/unused/old_contest_2.4bpp.lz");
+const u32 gUnknown_08C16E90[] = INCBIN_U32("graphics/unused/old_contest_2.gbapal.lz");
+const u32 gUnknown_08C16FA8[] = INCBIN_U32("graphics/unused/old_contest_2.bin.lz");
-const u16 gUnknown_08C17170[] = INCBIN_U16("graphics/unknown/unknown_C17170.bin.lz");
+const u32 gUnknown_08C17170[] = INCBIN_U32("graphics/unknown/unknown_C17170.bin.lz");
-const u16 gUnknown_08C17410[] = INCBIN_U16("graphics/unknown/unknown_C17410.bin.lz");
+const u32 gUnknown_08C17410[] = INCBIN_U32("graphics/unknown/unknown_C17410.bin.lz");
-const u16 gUnknown_08C1751C[] = INCBIN_U16("graphics/unknown/unknown_C1751C.bin.lz");
+const u32 gUnknown_08C1751C[] = INCBIN_U32("graphics/unknown/unknown_C1751C.bin.lz");
-const u16 gUnknown_08C17980[] = INCBIN_U16("graphics/unknown/unknown_C17980.bin.lz");
+const u32 gUnknown_08C17980[] = INCBIN_U32("graphics/unknown/unknown_C17980.bin.lz");
-const u8 gContestMiscGfx[] = INCBIN_U8("graphics/contest/misc.4bpp.lz");
+const u32 gContestMiscGfx[] = INCBIN_U32("graphics/contest/misc.4bpp.lz");
-const u8 gContestAudienceGfx[] = INCBIN_U8("graphics/contest/audience.4bpp.lz");
+const u32 gContestAudienceGfx[] = INCBIN_U32("graphics/contest/audience.4bpp.lz");
-const u8 gUnknown_08C19168[] = INCBIN_U8("graphics/contest/faces.4bpp.lz");
+const u32 gUnknown_08C19168[] = INCBIN_U32("graphics/contest/faces.4bpp.lz");
-const u8 gContestJudgeSymbolsGfx[] = INCBIN_U8("graphics/contest/judge_symbols.4bpp.lz");
-const u8 gContest3Pal[] = INCBIN_U8("graphics/contest/judge_symbols.gbapal.lz");
+const u32 gContestJudgeSymbolsGfx[] = INCBIN_U32("graphics/contest/judge_symbols.4bpp.lz");
+const u32 gContest3Pal[] = INCBIN_U32("graphics/contest/judge_symbols.gbapal.lz");
const u8 gTiles_8C19450[] = INCBIN_U8("graphics/contest/heart.4bpp");
-const u8 gUnknownGfx_C19470[] = INCBIN_U8("graphics/unknown/unknown_C19470.4bpp.lz");
-const u8 gUnknownPal_C19470[] = INCBIN_U8("graphics/unknown/unknown_C19470.gbapal.lz");
+const u32 gUnknownGfx_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.4bpp.lz");
+const u32 gUnknownPal_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.gbapal.lz");
-const u8 gUnknown_08C19588[] = INCBIN_U8("graphics/contest/misc_2.4bpp.lz");
+const u32 gUnknown_08C19588[] = INCBIN_U32("graphics/contest/misc_2.4bpp.lz");
-const u16 gUnknown_08C19EEC[] = INCBIN_U16("graphics/contest/misc_2_tilemap_1.bin.lz");
-const u16 gUnknown_08C1A000[] = INCBIN_U16("graphics/contest/misc_2_tilemap_2.bin.lz");
-const u16 gUnknown_08C1A12C[] = INCBIN_U16("graphics/contest/misc_2_tilemap_3.bin.lz");
+const u32 gUnknown_08C19EEC[] = INCBIN_U32("graphics/contest/misc_2_tilemap_1.bin.lz");
+const u32 gUnknown_08C1A000[] = INCBIN_U32("graphics/contest/misc_2_tilemap_2.bin.lz");
+const u32 gUnknown_08C1A12C[] = INCBIN_U32("graphics/contest/misc_2_tilemap_3.bin.lz");
-const u8 gUnknown_08C1A2B4[] = INCBIN_U8("graphics/contest/misc_2.gbapal.lz");
+const u32 gUnknown_08C1A2B4[] = INCBIN_U32("graphics/contest/misc_2.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_135[] = INCBIN_U8("graphics/battle_anims/sprites/135.4bpp.lz");
-const u8 gBattleAnimSpritePalette_135[] = INCBIN_U8("graphics/battle_anims/sprites/135.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_135[] = INCBIN_U32("graphics/battle_anims/sprites/135.4bpp.lz");
+const u32 gBattleAnimSpritePalette_135[] = INCBIN_U32("graphics/battle_anims/sprites/135.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_Particles[] = INCBIN_U8("graphics/battle_anims/sprites/particles.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_Particles[] = INCBIN_U32("graphics/battle_anims/sprites/particles.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_136[] = INCBIN_U8("graphics/battle_anims/sprites/136.4bpp.lz");
-const u8 gBattleAnimSpritePalette_136[] = INCBIN_U8("graphics/battle_anims/sprites/136.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_136[] = INCBIN_U32("graphics/battle_anims/sprites/136.4bpp.lz");
+const u32 gBattleAnimSpritePalette_136[] = INCBIN_U32("graphics/battle_anims/sprites/136.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_137[] = INCBIN_U8("graphics/battle_anims/sprites/137.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_137[] = INCBIN_U32("graphics/battle_anims/sprites/137.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_139[] = INCBIN_U8("graphics/battle_anims/sprites/139.4bpp.lz");
-const u8 gBattleAnimSpritePalette_139[] = INCBIN_U8("graphics/battle_anims/sprites/139.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_139[] = INCBIN_U32("graphics/battle_anims/sprites/139.4bpp.lz");
+const u32 gBattleAnimSpritePalette_139[] = INCBIN_U32("graphics/battle_anims/sprites/139.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_145[] = INCBIN_U8("graphics/battle_anims/sprites/145.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_145[] = INCBIN_U32("graphics/battle_anims/sprites/145.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_138[] = INCBIN_U8("graphics/battle_anims/sprites/138.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_138[] = INCBIN_U32("graphics/battle_anims/sprites/138.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_140[] = INCBIN_U8("graphics/battle_anims/sprites/140.4bpp.lz");
-const u8 gBattleAnimSpritePalette_140[] = INCBIN_U8("graphics/battle_anims/sprites/140.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_140[] = INCBIN_U32("graphics/battle_anims/sprites/140.4bpp.lz");
+const u32 gBattleAnimSpritePalette_140[] = INCBIN_U32("graphics/battle_anims/sprites/140.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_141[] = INCBIN_U8("graphics/battle_anims/sprites/141.4bpp.lz");
-const u8 gBattleAnimSpritePalette_141[] = INCBIN_U8("graphics/battle_anims/sprites/141.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_141[] = INCBIN_U32("graphics/battle_anims/sprites/141.4bpp.lz");
+const u32 gBattleAnimSpritePalette_141[] = INCBIN_U32("graphics/battle_anims/sprites/141.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_142[] = INCBIN_U8("graphics/battle_anims/sprites/142.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_142[] = INCBIN_U32("graphics/battle_anims/sprites/142.4bpp.lz");
-const u8 gUnusedGfx_OldBeatUp[] = INCBIN_U8("graphics/unused/old_beatup.4bpp.lz");
-const u8 gUnusedPal_OldBeatUp[] = INCBIN_U8("graphics/unused/old_beatup.gbapal.lz");
+const u32 gUnusedGfx_OldBeatUp[] = INCBIN_U32("graphics/unused/old_beatup.4bpp.lz");
+const u32 gUnusedPal_OldBeatUp[] = INCBIN_U32("graphics/unused/old_beatup.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_147[] = INCBIN_U8("graphics/battle_anims/sprites/147.4bpp.lz");
-const u8 gBattleAnimSpritePalette_147[] = INCBIN_U8("graphics/battle_anims/sprites/147.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_147[] = INCBIN_U32("graphics/battle_anims/sprites/147.4bpp.lz");
+const u32 gBattleAnimSpritePalette_147[] = INCBIN_U32("graphics/battle_anims/sprites/147.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_149[] = INCBIN_U8("graphics/battle_anims/sprites/149.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_149[] = INCBIN_U32("graphics/battle_anims/sprites/149.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_148[] = INCBIN_U8("graphics/battle_anims/sprites/148.4bpp.lz");
-const u8 gBattleAnimSpritePalette_148[] = INCBIN_U8("graphics/battle_anims/sprites/148.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_148[] = INCBIN_U32("graphics/battle_anims/sprites/148.4bpp.lz");
+const u32 gBattleAnimSpritePalette_148[] = INCBIN_U32("graphics/battle_anims/sprites/148.gbapal.lz");
-const u8 gBattleAnimSpritePalette_259[] = INCBIN_U8("graphics/battle_anims/sprites/259.gbapal.lz");
+const u32 gBattleAnimSpritePalette_259[] = INCBIN_U32("graphics/battle_anims/sprites/259.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_074[] = INCBIN_U8("graphics/battle_anims/sprites/074.4bpp.lz");
-const u8 gBattleAnimSpritePalette_074[] = INCBIN_U8("graphics/battle_anims/sprites/074.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_074[] = INCBIN_U32("graphics/battle_anims/sprites/074.4bpp.lz");
+const u32 gBattleAnimSpritePalette_074[] = INCBIN_U32("graphics/battle_anims/sprites/074.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_150[] = INCBIN_U8("graphics/battle_anims/sprites/150.4bpp.lz");
-const u8 gBattleAnimSpritePalette_150[] = INCBIN_U8("graphics/battle_anims/sprites/150.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_150[] = INCBIN_U32("graphics/battle_anims/sprites/150.4bpp.lz");
+const u32 gBattleAnimSpritePalette_150[] = INCBIN_U32("graphics/battle_anims/sprites/150.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_151[] = INCBIN_U8("graphics/battle_anims/sprites/151.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_151[] = INCBIN_U32("graphics/battle_anims/sprites/151.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_153[] = INCBIN_U8("graphics/battle_anims/sprites/153.4bpp.lz");
-const u8 gBattleAnimSpritePalette_153[] = INCBIN_U8("graphics/battle_anims/sprites/153.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_153[] = INCBIN_U32("graphics/battle_anims/sprites/153.4bpp.lz");
+const u32 gBattleAnimSpritePalette_153[] = INCBIN_U32("graphics/battle_anims/sprites/153.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_154[] = INCBIN_U8("graphics/battle_anims/sprites/154.4bpp.lz");
-const u8 gBattleAnimSpritePalette_154[] = INCBIN_U8("graphics/battle_anims/sprites/154.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_154[] = INCBIN_U32("graphics/battle_anims/sprites/154.4bpp.lz");
+const u32 gBattleAnimSpritePalette_154[] = INCBIN_U32("graphics/battle_anims/sprites/154.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_155[] = INCBIN_U8("graphics/battle_anims/sprites/155.4bpp.lz");
-const u8 gBattleAnimSpritePalette_155[] = INCBIN_U8("graphics/battle_anims/sprites/155.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_155[] = INCBIN_U32("graphics/battle_anims/sprites/155.4bpp.lz");
+const u32 gBattleAnimSpritePalette_155[] = INCBIN_U32("graphics/battle_anims/sprites/155.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_156[] = INCBIN_U8("graphics/battle_anims/sprites/156.4bpp.lz");
-const u8 gBattleAnimSpritePalette_156[] = INCBIN_U8("graphics/battle_anims/sprites/156.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_156[] = INCBIN_U32("graphics/battle_anims/sprites/156.4bpp.lz");
+const u32 gBattleAnimSpritePalette_156[] = INCBIN_U32("graphics/battle_anims/sprites/156.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_157[] = INCBIN_U8("graphics/battle_anims/sprites/157.4bpp.lz");
-const u8 gBattleAnimSpritePalette_157[] = INCBIN_U8("graphics/battle_anims/sprites/157.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_157[] = INCBIN_U32("graphics/battle_anims/sprites/157.4bpp.lz");
+const u32 gBattleAnimSpritePalette_157[] = INCBIN_U32("graphics/battle_anims/sprites/157.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_158[] = INCBIN_U8("graphics/battle_anims/sprites/158.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_158[] = INCBIN_U32("graphics/battle_anims/sprites/158.4bpp.lz");
-const u8 gBattleAnimSpritePalette_158[] = INCBIN_U8("graphics/battle_anims/sprites/158.gbapal.lz");
+const u32 gBattleAnimSpritePalette_158[] = INCBIN_U32("graphics/battle_anims/sprites/158.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_159[] = INCBIN_U8("graphics/battle_anims/sprites/159.4bpp.lz");
-const u8 gBattleAnimSpritePalette_159[] = INCBIN_U8("graphics/battle_anims/sprites/159.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_159[] = INCBIN_U32("graphics/battle_anims/sprites/159.4bpp.lz");
+const u32 gBattleAnimSpritePalette_159[] = INCBIN_U32("graphics/battle_anims/sprites/159.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_160[] = INCBIN_U8("graphics/battle_anims/sprites/160.4bpp.lz");
-const u8 gBattleAnimSpritePalette_160[] = INCBIN_U8("graphics/battle_anims/sprites/160.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_160[] = INCBIN_U32("graphics/battle_anims/sprites/160.4bpp.lz");
+const u32 gBattleAnimSpritePalette_160[] = INCBIN_U32("graphics/battle_anims/sprites/160.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_144[] = INCBIN_U8("graphics/battle_anims/sprites/144.4bpp.lz");
-const u8 gBattleAnimSpritePalette_144[] = INCBIN_U8("graphics/battle_anims/sprites/144.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_144[] = INCBIN_U32("graphics/battle_anims/sprites/144.4bpp.lz");
+const u32 gBattleAnimSpritePalette_144[] = INCBIN_U32("graphics/battle_anims/sprites/144.gbapal.lz");
-const u8 gUnknownGfx_D1C060[] = INCBIN_U8("graphics/unknown/unknown_D1C060.4bpp.lz");
-const u8 gUnknownPal_D1C060[] = INCBIN_U8("graphics/unknown/unknown_D1C060.gbapal.lz");
-const u16 gUnknownTilemap_D1C060[] = INCBIN_U16("graphics/unknown/unknown_D1C060.bin.lz");
+const u32 gUnknownGfx_D1C060[] = INCBIN_U32("graphics/unknown/unknown_D1C060.4bpp.lz");
+const u32 gUnknownPal_D1C060[] = INCBIN_U32("graphics/unknown/unknown_D1C060.gbapal.lz");
+const u32 gUnknownTilemap_D1C060[] = INCBIN_U32("graphics/unknown/unknown_D1C060.bin.lz");
-const u8 gBattleAnimSpriteSheet_162[] = INCBIN_U8("graphics/battle_anims/sprites/162.4bpp.lz");
-const u8 gBattleAnimSpritePalette_162[] = INCBIN_U8("graphics/battle_anims/sprites/162.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_162[] = INCBIN_U32("graphics/battle_anims/sprites/162.4bpp.lz");
+const u32 gBattleAnimSpritePalette_162[] = INCBIN_U32("graphics/battle_anims/sprites/162.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_163[] = INCBIN_U8("graphics/battle_anims/sprites/163.4bpp.lz");
-const u8 gBattleAnimSpritePalette_163[] = INCBIN_U8("graphics/battle_anims/sprites/163.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_163[] = INCBIN_U32("graphics/battle_anims/sprites/163.4bpp.lz");
+const u32 gBattleAnimSpritePalette_163[] = INCBIN_U32("graphics/battle_anims/sprites/163.gbapal.lz");
-const u8 gBattleAnimSpritePalette_288[] = INCBIN_U8("graphics/battle_anims/sprites/288.gbapal.lz");
-const u8 gBattleAnimSpritePalette_164[] = INCBIN_U8("graphics/battle_anims/sprites/164.gbapal.lz");
-const u8 gBattleAnimSpritePalette_165[] = INCBIN_U8("graphics/battle_anims/sprites/165.gbapal.lz");
+const u32 gBattleAnimSpritePalette_288[] = INCBIN_U32("graphics/battle_anims/sprites/288.gbapal.lz");
+const u32 gBattleAnimSpritePalette_164[] = INCBIN_U32("graphics/battle_anims/sprites/164.gbapal.lz");
+const u32 gBattleAnimSpritePalette_165[] = INCBIN_U32("graphics/battle_anims/sprites/165.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_166[] = INCBIN_U8("graphics/battle_anims/sprites/166.4bpp.lz");
-const u8 gBattleAnimSpritePalette_166[] = INCBIN_U8("graphics/battle_anims/sprites/166.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_166[] = INCBIN_U32("graphics/battle_anims/sprites/166.4bpp.lz");
+const u32 gBattleAnimSpritePalette_166[] = INCBIN_U32("graphics/battle_anims/sprites/166.gbapal.lz");
-const u8 gBattleAnimSpritePalette_167[] = INCBIN_U8("graphics/battle_anims/sprites/167.gbapal.lz");
-const u8 gBattleAnimSpritePalette_168[] = INCBIN_U8("graphics/battle_anims/sprites/168.gbapal.lz");
-const u8 gBattleAnimSpritePalette_169[] = INCBIN_U8("graphics/battle_anims/sprites/169.gbapal.lz");
-const u8 gBattleAnimSpritePalette_170[] = INCBIN_U8("graphics/battle_anims/sprites/170.gbapal.lz");
+const u32 gBattleAnimSpritePalette_167[] = INCBIN_U32("graphics/battle_anims/sprites/167.gbapal.lz");
+const u32 gBattleAnimSpritePalette_168[] = INCBIN_U32("graphics/battle_anims/sprites/168.gbapal.lz");
+const u32 gBattleAnimSpritePalette_169[] = INCBIN_U32("graphics/battle_anims/sprites/169.gbapal.lz");
+const u32 gBattleAnimSpritePalette_170[] = INCBIN_U32("graphics/battle_anims/sprites/170.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_171[] = INCBIN_U8("graphics/battle_anims/sprites/171.4bpp.lz");
-const u8 gBattleAnimSpritePalette_171[] = INCBIN_U8("graphics/battle_anims/sprites/171.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_171[] = INCBIN_U32("graphics/battle_anims/sprites/171.4bpp.lz");
+const u32 gBattleAnimSpritePalette_171[] = INCBIN_U32("graphics/battle_anims/sprites/171.gbapal.lz");
-const u8 gBattleAnimSpritePalette_172[] = INCBIN_U8("graphics/battle_anims/sprites/172.gbapal.lz");
+const u32 gBattleAnimSpritePalette_172[] = INCBIN_U32("graphics/battle_anims/sprites/172.gbapal.lz");
-const u8 gContestJudgeGfx[] = INCBIN_U8("graphics/contest/judge.4bpp.lz");
-const u8 gContest2Pal[] = INCBIN_U8("graphics/contest/judge.gbapal.lz");
+const u32 gContestJudgeGfx[] = INCBIN_U32("graphics/contest/judge.4bpp.lz");
+const u32 gContest2Pal[] = INCBIN_U32("graphics/contest/judge.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_001[] = INCBIN_U8("graphics/battle_anims/sprites/001.4bpp.lz");
-const u8 gBattleAnimSpritePalette_001[] = INCBIN_U8("graphics/battle_anims/sprites/001.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_001[] = INCBIN_U32("graphics/battle_anims/sprites/001.4bpp.lz");
+const u32 gBattleAnimSpritePalette_001[] = INCBIN_U32("graphics/battle_anims/sprites/001.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_173[] = INCBIN_U8("graphics/battle_anims/sprites/173.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_173[] = INCBIN_U32("graphics/battle_anims/sprites/173.4bpp.lz");
-const u8 gBattleAnimBackgroundImage_00[] = INCBIN_U8("graphics/battle_anims/backgrounds/00.4bpp.lz");
-const u8 gBattleAnimBackgroundPalette_00[] = INCBIN_U8("graphics/battle_anims/backgrounds/00.gbapal.lz");
-const u16 gBattleAnimBackgroundTilemap_00[] = INCBIN_U16("graphics/battle_anims/backgrounds/00.bin.lz");
+const u32 gBattleAnimBackgroundImage_00[] = INCBIN_U32("graphics/battle_anims/backgrounds/00.4bpp.lz");
+const u32 gBattleAnimBackgroundPalette_00[] = INCBIN_U32("graphics/battle_anims/backgrounds/00.gbapal.lz");
+const u32 gBattleAnimBackgroundTilemap_00[] = INCBIN_U32("graphics/battle_anims/backgrounds/00.bin.lz");
-const u8 gUnknown_08C1D0AC[] = INCBIN_U8("graphics/battle_anims/masks/metal_shine.4bpp.lz");
-const u8 gUnknown_08C1D1E8[] = INCBIN_U8("graphics/battle_anims/masks/metal_shine.gbapal.lz");
-const u16 gUnknown_08C1D210[] = INCBIN_U16("graphics/battle_anims/masks/metal_shine.bin.lz");
+const u32 gUnknown_08C1D0AC[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.4bpp.lz");
+const u32 gUnknown_08C1D1E8[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.gbapal.lz");
+const u32 gUnknown_08C1D210[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.bin.lz");
-const u8 gUnusedGfx_Goosuto[] = INCBIN_U8("graphics/unused/goosuto.4bpp.lz"); // ghost
-const u8 gUnusedPal_Goosuto[] = INCBIN_U8("graphics/unused/goosuto.gbapal.lz");
-const u16 gUnusedTilemap_Goosuto[] = INCBIN_U16("graphics/unused/goosuto.bin.lz");
+const u32 gUnusedGfx_Goosuto[] = INCBIN_U32("graphics/unused/goosuto.4bpp.lz"); // ghost
+const u32 gUnusedPal_Goosuto[] = INCBIN_U32("graphics/unused/goosuto.gbapal.lz");
+const u32 gUnusedTilemap_Goosuto[] = INCBIN_U32("graphics/unused/goosuto.bin.lz");
-const u8 gBattleAnimSpriteSheet_174[] = INCBIN_U8("graphics/battle_anims/sprites/174.4bpp.lz");
-const u8 gBattleAnimSpritePalette_174[] = INCBIN_U8("graphics/battle_anims/sprites/174.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_174[] = INCBIN_U32("graphics/battle_anims/sprites/174.4bpp.lz");
+const u32 gBattleAnimSpritePalette_174[] = INCBIN_U32("graphics/battle_anims/sprites/174.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_175[] = INCBIN_U8("graphics/battle_anims/sprites/175.4bpp.lz");
-const u8 gBattleAnimSpritePalette_175[] = INCBIN_U8("graphics/battle_anims/sprites/175.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_175[] = INCBIN_U32("graphics/battle_anims/sprites/175.4bpp.lz");
+const u32 gBattleAnimSpritePalette_175[] = INCBIN_U32("graphics/battle_anims/sprites/175.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_176[] = INCBIN_U8("graphics/battle_anims/sprites/176.4bpp.lz");
-const u8 gBattleAnimSpritePalette_176[] = INCBIN_U8("graphics/battle_anims/sprites/176.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_176[] = INCBIN_U32("graphics/battle_anims/sprites/176.4bpp.lz");
+const u32 gBattleAnimSpritePalette_176[] = INCBIN_U32("graphics/battle_anims/sprites/176.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_177[] = INCBIN_U8("graphics/battle_anims/sprites/177.4bpp.lz");
-const u8 gBattleAnimSpritePalette_177[] = INCBIN_U8("graphics/battle_anims/sprites/177.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_177[] = INCBIN_U32("graphics/battle_anims/sprites/177.4bpp.lz");
+const u32 gBattleAnimSpritePalette_177[] = INCBIN_U32("graphics/battle_anims/sprites/177.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_178[] = INCBIN_U8("graphics/battle_anims/sprites/178.4bpp.lz");
-const u8 gBattleAnimSpritePalette_178[] = INCBIN_U8("graphics/battle_anims/sprites/178.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_178[] = INCBIN_U32("graphics/battle_anims/sprites/178.4bpp.lz");
+const u32 gBattleAnimSpritePalette_178[] = INCBIN_U32("graphics/battle_anims/sprites/178.gbapal.lz");
-const u8 gBattleAnimSpritePalette_179[] = INCBIN_U8("graphics/battle_anims/sprites/179.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_179[] = INCBIN_U8("graphics/battle_anims/sprites/179.4bpp.lz");
+const u32 gBattleAnimSpritePalette_179[] = INCBIN_U32("graphics/battle_anims/sprites/179.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_179[] = INCBIN_U32("graphics/battle_anims/sprites/179.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_180[] = INCBIN_U8("graphics/battle_anims/sprites/180.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_181[] = INCBIN_U8("graphics/battle_anims/sprites/181.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_180[] = INCBIN_U32("graphics/battle_anims/sprites/180.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_181[] = INCBIN_U32("graphics/battle_anims/sprites/181.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_182[] = INCBIN_U8("graphics/battle_anims/sprites/182.4bpp.lz");
-const u8 gBattleAnimSpritePalette_182[] = INCBIN_U8("graphics/battle_anims/sprites/182.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_182[] = INCBIN_U32("graphics/battle_anims/sprites/182.4bpp.lz");
+const u32 gBattleAnimSpritePalette_182[] = INCBIN_U32("graphics/battle_anims/sprites/182.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_183[] = INCBIN_U8("graphics/battle_anims/sprites/183.4bpp.lz");
-const u8 gBattleAnimSpritePalette_183[] = INCBIN_U8("graphics/battle_anims/sprites/183.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_183[] = INCBIN_U32("graphics/battle_anims/sprites/183.4bpp.lz");
+const u32 gBattleAnimSpritePalette_183[] = INCBIN_U32("graphics/battle_anims/sprites/183.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_184[] = INCBIN_U8("graphics/battle_anims/sprites/184.4bpp.lz");
-const u8 gBattleAnimSpritePalette_184[] = INCBIN_U8("graphics/battle_anims/sprites/184.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_184[] = INCBIN_U32("graphics/battle_anims/sprites/184.4bpp.lz");
+const u32 gBattleAnimSpritePalette_184[] = INCBIN_U32("graphics/battle_anims/sprites/184.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_185[] = INCBIN_U8("graphics/battle_anims/sprites/185.4bpp.lz");
-const u8 gBattleAnimSpritePalette_185[] = INCBIN_U8("graphics/battle_anims/sprites/185.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_185[] = INCBIN_U32("graphics/battle_anims/sprites/185.4bpp.lz");
+const u32 gBattleAnimSpritePalette_185[] = INCBIN_U32("graphics/battle_anims/sprites/185.gbapal.lz");
-const u8 gBattleAnimBackgroundImage_03[] = INCBIN_U8("graphics/battle_anims/backgrounds/03.4bpp.lz");
-const u8 gBattleAnimBackgroundPalette_03[] = INCBIN_U8("graphics/battle_anims/backgrounds/03.gbapal.lz");
-const u16 gBattleAnimBackgroundTilemap_03[] = INCBIN_U16("graphics/battle_anims/backgrounds/03.bin.lz");
+const u32 gBattleAnimBackgroundImage_03[] = INCBIN_U32("graphics/battle_anims/backgrounds/03.4bpp.lz");
+const u32 gBattleAnimBackgroundPalette_03[] = INCBIN_U32("graphics/battle_anims/backgrounds/03.gbapal.lz");
+const u32 gBattleAnimBackgroundTilemap_03[] = INCBIN_U32("graphics/battle_anims/backgrounds/03.bin.lz");
-const u8 gBattleAnimSpriteSheet_187[] = INCBIN_U8("graphics/battle_anims/sprites/187.4bpp.lz");
-const u8 gBattleAnimSpritePalette_187[] = INCBIN_U8("graphics/battle_anims/sprites/187.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_187[] = INCBIN_U32("graphics/battle_anims/sprites/187.4bpp.lz");
+const u32 gBattleAnimSpritePalette_187[] = INCBIN_U32("graphics/battle_anims/sprites/187.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_186[] = INCBIN_U8("graphics/battle_anims/sprites/186.4bpp.lz");
-const u8 gBattleAnimSpritePalette_186[] = INCBIN_U8("graphics/battle_anims/sprites/186.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_186[] = INCBIN_U32("graphics/battle_anims/sprites/186.4bpp.lz");
+const u32 gBattleAnimSpritePalette_186[] = INCBIN_U32("graphics/battle_anims/sprites/186.gbapal.lz");
-const u8 gHealthboxSinglesPlayerGfx[] = INCBIN_U8("graphics/battle_interface/healthbox_singles_player.4bpp.lz");
-const u8 gHealthboxSinglesOpponentGfx[] = INCBIN_U8("graphics/battle_interface/healthbox_singles_opponent.4bpp.lz");
-const u8 gHealthboxDoublesPlayerGfx[] = INCBIN_U8( "graphics/battle_interface/healthbox_doubles_player.4bpp.lz");
-const u8 gHealthboxDoublesOpponentGfx[] = INCBIN_U8("graphics/battle_interface/healthbox_doubles_opponent.4bpp.lz");
-const u8 gHealthboxSafariGfx[] = INCBIN_U8("graphics/battle_interface/healthbox_safari.4bpp.lz");
+const u32 gHealthboxSinglesPlayerGfx[] = INCBIN_U32("graphics/battle_interface/healthbox_singles_player.4bpp.lz");
+const u32 gHealthboxSinglesOpponentGfx[] = INCBIN_U32("graphics/battle_interface/healthbox_singles_opponent.4bpp.lz");
+const u32 gHealthboxDoublesPlayerGfx[] = INCBIN_U32( "graphics/battle_interface/healthbox_doubles_player.4bpp.lz");
+const u32 gHealthboxDoublesOpponentGfx[] = INCBIN_U32("graphics/battle_interface/healthbox_doubles_opponent.4bpp.lz");
+const u32 gHealthboxSafariGfx[] = INCBIN_U32("graphics/battle_interface/healthbox_safari.4bpp.lz");
-const u8 gUnusedGfx_Shadow[] = INCBIN_U8("graphics/unused/shadow.4bpp.lz");
-const u8 gUnusedPal_Shadow[] = INCBIN_U8("graphics/unused/shadow.gbapal.lz");
+const u32 gUnusedGfx_Shadow[] = INCBIN_U32("graphics/unused/shadow.4bpp.lz");
+const u32 gUnusedPal_Shadow[] = INCBIN_U32("graphics/unused/shadow.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_014[] = INCBIN_U8("graphics/battle_anims/sprites/014.4bpp.lz");
-const u8 gBattleAnimSpritePalette_014[] = INCBIN_U8("graphics/battle_anims/sprites/014.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_014[] = INCBIN_U32("graphics/battle_anims/sprites/014.4bpp.lz");
+const u32 gBattleAnimSpritePalette_014[] = INCBIN_U32("graphics/battle_anims/sprites/014.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_190[] = INCBIN_U8("graphics/battle_anims/sprites/190.4bpp.lz");
-const u8 gBattleAnimSpritePalette_190[] = INCBIN_U8("graphics/battle_anims/sprites/190.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_190[] = INCBIN_U32("graphics/battle_anims/sprites/190.4bpp.lz");
+const u32 gBattleAnimSpritePalette_190[] = INCBIN_U32("graphics/battle_anims/sprites/190.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_191[] = INCBIN_U8("graphics/battle_anims/sprites/191.4bpp.lz");
-const u8 gBattleAnimSpritePalette_191[] = INCBIN_U8("graphics/battle_anims/sprites/191.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_191[] = INCBIN_U32("graphics/battle_anims/sprites/191.4bpp.lz");
+const u32 gBattleAnimSpritePalette_191[] = INCBIN_U32("graphics/battle_anims/sprites/191.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_189[] = INCBIN_U8("graphics/battle_anims/sprites/189.4bpp.lz");
-const u8 gBattleAnimSpritePalette_189[] = INCBIN_U8("graphics/battle_anims/sprites/189.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_189[] = INCBIN_U32("graphics/battle_anims/sprites/189.4bpp.lz");
+const u32 gBattleAnimSpritePalette_189[] = INCBIN_U32("graphics/battle_anims/sprites/189.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_192[] = INCBIN_U8("graphics/battle_anims/sprites/192.4bpp.lz");
-const u8 gBattleAnimSpritePalette_192[] = INCBIN_U8("graphics/battle_anims/sprites/192.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_192[] = INCBIN_U32("graphics/battle_anims/sprites/192.4bpp.lz");
+const u32 gBattleAnimSpritePalette_192[] = INCBIN_U32("graphics/battle_anims/sprites/192.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_193[] = INCBIN_U8("graphics/battle_anims/sprites/193.4bpp.lz");
-const u8 gBattleAnimSpritePalette_193[] = INCBIN_U8("graphics/battle_anims/sprites/193.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_193[] = INCBIN_U32("graphics/battle_anims/sprites/193.4bpp.lz");
+const u32 gBattleAnimSpritePalette_193[] = INCBIN_U32("graphics/battle_anims/sprites/193.gbapal.lz");
-const u8 gUnknown_08C20668[] = INCBIN_U8("graphics/battle_anims/masks/curse.4bpp.lz");
-const u16 gUnknown_08C20684[] = INCBIN_U16("graphics/battle_anims/masks/curse.bin.lz");
+const u32 gUnknown_08C20668[] = INCBIN_U32("graphics/battle_anims/masks/curse.4bpp.lz");
+const u32 gUnknown_08C20684[] = INCBIN_U32("graphics/battle_anims/masks/curse.bin.lz");
-const u8 gBattleAnimSpriteSheet_002[] = INCBIN_U8("graphics/battle_anims/sprites/002.4bpp.lz");
-const u8 gBattleAnimSpritePalette_002[] = INCBIN_U8("graphics/battle_anims/sprites/002.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_002[] = INCBIN_U32("graphics/battle_anims/sprites/002.4bpp.lz");
+const u32 gBattleAnimSpritePalette_002[] = INCBIN_U32("graphics/battle_anims/sprites/002.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_196[] = INCBIN_U8("graphics/battle_anims/sprites/196.4bpp.lz");
-const u8 gBattleAnimSpritePalette_196[] = INCBIN_U8("graphics/battle_anims/sprites/196.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_196[] = INCBIN_U32("graphics/battle_anims/sprites/196.4bpp.lz");
+const u32 gBattleAnimSpritePalette_196[] = INCBIN_U32("graphics/battle_anims/sprites/196.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_194[] = INCBIN_U8("graphics/battle_anims/sprites/194.4bpp.lz");
-const u8 gBattleAnimSpritePalette_194[] = INCBIN_U8("graphics/battle_anims/sprites/194.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_194[] = INCBIN_U32("graphics/battle_anims/sprites/194.4bpp.lz");
+const u32 gBattleAnimSpritePalette_194[] = INCBIN_U32("graphics/battle_anims/sprites/194.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_195[] = INCBIN_U8("graphics/battle_anims/sprites/195.4bpp.lz");
-const u8 gBattleAnimSpritePalette_195[] = INCBIN_U8("graphics/battle_anims/sprites/195.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_195[] = INCBIN_U32("graphics/battle_anims/sprites/195.4bpp.lz");
+const u32 gBattleAnimSpritePalette_195[] = INCBIN_U32("graphics/battle_anims/sprites/195.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_197[] = INCBIN_U8("graphics/battle_anims/sprites/197.4bpp.lz");
-const u8 gBattleAnimSpritePalette_197[] = INCBIN_U8("graphics/battle_anims/sprites/197.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_197[] = INCBIN_U32("graphics/battle_anims/sprites/197.4bpp.lz");
+const u32 gBattleAnimSpritePalette_197[] = INCBIN_U32("graphics/battle_anims/sprites/197.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_198[] = INCBIN_U8("graphics/battle_anims/sprites/198.4bpp.lz");
-const u8 gBattleAnimSpritePalette_198[] = INCBIN_U8("graphics/battle_anims/sprites/198.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_198[] = INCBIN_U32("graphics/battle_anims/sprites/198.4bpp.lz");
+const u32 gBattleAnimSpritePalette_198[] = INCBIN_U32("graphics/battle_anims/sprites/198.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_199[] = INCBIN_U8("graphics/battle_anims/sprites/199.4bpp.lz");
-const u8 gBattleAnimSpritePalette_199[] = INCBIN_U8("graphics/battle_anims/sprites/199.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_199[] = INCBIN_U32("graphics/battle_anims/sprites/199.4bpp.lz");
+const u32 gBattleAnimSpritePalette_199[] = INCBIN_U32("graphics/battle_anims/sprites/199.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_200[] = INCBIN_U8("graphics/battle_anims/sprites/200.4bpp.lz");
-const u8 gBattleAnimSpritePalette_200[] = INCBIN_U8("graphics/battle_anims/sprites/200.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_200[] = INCBIN_U32("graphics/battle_anims/sprites/200.4bpp.lz");
+const u32 gBattleAnimSpritePalette_200[] = INCBIN_U32("graphics/battle_anims/sprites/200.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_201[] = INCBIN_U8("graphics/battle_anims/sprites/201.4bpp.lz");
-const u8 gBattleAnimSpritePalette_201[] = INCBIN_U8("graphics/battle_anims/sprites/201.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_201[] = INCBIN_U32("graphics/battle_anims/sprites/201.4bpp.lz");
+const u32 gBattleAnimSpritePalette_201[] = INCBIN_U32("graphics/battle_anims/sprites/201.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_204[] = INCBIN_U8("graphics/battle_anims/sprites/204.4bpp.lz");
-const u8 gBattleAnimSpritePalette_204[] = INCBIN_U8("graphics/battle_anims/sprites/204.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_204[] = INCBIN_U32("graphics/battle_anims/sprites/204.4bpp.lz");
+const u32 gBattleAnimSpritePalette_204[] = INCBIN_U32("graphics/battle_anims/sprites/204.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_202[] = INCBIN_U8("graphics/battle_anims/sprites/202.4bpp.lz");
-const u8 gBattleAnimSpritePalette_202[] = INCBIN_U8("graphics/battle_anims/sprites/202.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_202[] = INCBIN_U32("graphics/battle_anims/sprites/202.4bpp.lz");
+const u32 gBattleAnimSpritePalette_202[] = INCBIN_U32("graphics/battle_anims/sprites/202.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_203[] = INCBIN_U8("graphics/battle_anims/sprites/203.4bpp.lz");
-const u8 gBattleAnimSpritePalette_203[] = INCBIN_U8("graphics/battle_anims/sprites/203.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_203[] = INCBIN_U32("graphics/battle_anims/sprites/203.4bpp.lz");
+const u32 gBattleAnimSpritePalette_203[] = INCBIN_U32("graphics/battle_anims/sprites/203.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_206[] = INCBIN_U8("graphics/battle_anims/sprites/206.4bpp.lz");
-const u8 gBattleAnimSpritePalette_206[] = INCBIN_U8("graphics/battle_anims/sprites/206.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_206[] = INCBIN_U32("graphics/battle_anims/sprites/206.4bpp.lz");
+const u32 gBattleAnimSpritePalette_206[] = INCBIN_U32("graphics/battle_anims/sprites/206.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_205[] = INCBIN_U8("graphics/battle_anims/sprites/205.4bpp.lz");
-const u8 gBattleAnimSpritePalette_205[] = INCBIN_U8("graphics/battle_anims/sprites/205.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_205[] = INCBIN_U32("graphics/battle_anims/sprites/205.4bpp.lz");
+const u32 gBattleAnimSpritePalette_205[] = INCBIN_U32("graphics/battle_anims/sprites/205.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_207[] = INCBIN_U8("graphics/battle_anims/sprites/207.4bpp.lz");
-const u8 gBattleAnimSpritePalette_207[] = INCBIN_U8("graphics/battle_anims/sprites/207.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_207[] = INCBIN_U32("graphics/battle_anims/sprites/207.4bpp.lz");
+const u32 gBattleAnimSpritePalette_207[] = INCBIN_U32("graphics/battle_anims/sprites/207.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_208[] = INCBIN_U8("graphics/battle_anims/sprites/208.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_208[] = INCBIN_U32("graphics/battle_anims/sprites/208.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_209[] = INCBIN_U8("graphics/battle_anims/sprites/209.4bpp.lz");
-const u8 gBattleAnimSpritePalette_209[] = INCBIN_U8("graphics/battle_anims/sprites/209.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_209[] = INCBIN_U32("graphics/battle_anims/sprites/209.4bpp.lz");
+const u32 gBattleAnimSpritePalette_209[] = INCBIN_U32("graphics/battle_anims/sprites/209.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_064[] = INCBIN_U8("graphics/battle_anims/sprites/064.4bpp.lz");
-const u8 gBattleAnimSpritePalette_064[] = INCBIN_U8("graphics/battle_anims/sprites/064.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_064[] = INCBIN_U32("graphics/battle_anims/sprites/064.4bpp.lz");
+const u32 gBattleAnimSpritePalette_064[] = INCBIN_U32("graphics/battle_anims/sprites/064.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_210[] = INCBIN_U8("graphics/battle_anims/sprites/210.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_210[] = INCBIN_U32("graphics/battle_anims/sprites/210.4bpp.lz");
-const u8 gBattleAnimSpritePalette_219[] = INCBIN_U8("graphics/battle_anims/sprites/219.gbapal.lz");
-const u8 gBattleAnimSpritePalette_210[] = INCBIN_U8("graphics/battle_anims/sprites/210.gbapal.lz");
-const u8 gBattleAnimSpritePalette_216[] = INCBIN_U8("graphics/battle_anims/sprites/216.gbapal.lz");
+const u32 gBattleAnimSpritePalette_219[] = INCBIN_U32("graphics/battle_anims/sprites/219.gbapal.lz");
+const u32 gBattleAnimSpritePalette_210[] = INCBIN_U32("graphics/battle_anims/sprites/210.gbapal.lz");
+const u32 gBattleAnimSpritePalette_216[] = INCBIN_U32("graphics/battle_anims/sprites/216.gbapal.lz");
-const u8 gUnknown_08C232E0[] = INCBIN_U8("graphics/battle_anims/backgrounds/attract.4bpp.lz");
-const u8 gUnknown_08C23D50[] = INCBIN_U8("graphics/battle_anims/backgrounds/attract.gbapal.lz");
-const u16 gUnknown_08C23D78[] = INCBIN_U16("graphics/battle_anims/backgrounds/attract.bin.lz");
+const u32 gUnknown_08C232E0[] = INCBIN_U32("graphics/battle_anims/backgrounds/attract.4bpp.lz");
+const u32 gUnknown_08C23D50[] = INCBIN_U32("graphics/battle_anims/backgrounds/attract.gbapal.lz");
+const u32 gUnknown_08C23D78[] = INCBIN_U32("graphics/battle_anims/backgrounds/attract.bin.lz");
-const u8 gBattleAnimSpriteSheet_217[] = INCBIN_U8("graphics/battle_anims/sprites/217.4bpp.lz");
-const u8 gBattleAnimSpritePalette_217[] = INCBIN_U8("graphics/battle_anims/sprites/217.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_217[] = INCBIN_U32("graphics/battle_anims/sprites/217.4bpp.lz");
+const u32 gBattleAnimSpritePalette_217[] = INCBIN_U32("graphics/battle_anims/sprites/217.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_212[] = INCBIN_U8("graphics/battle_anims/sprites/212.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_211[] = INCBIN_U8("graphics/battle_anims/sprites/211.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_213[] = INCBIN_U8("graphics/battle_anims/sprites/213.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_212[] = INCBIN_U32("graphics/battle_anims/sprites/212.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_211[] = INCBIN_U32("graphics/battle_anims/sprites/211.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_213[] = INCBIN_U32("graphics/battle_anims/sprites/213.4bpp.lz");
-const u8 gBattleAnimSpritePalette_211[] = INCBIN_U8("graphics/battle_anims/sprites/211.gbapal.lz");
+const u32 gBattleAnimSpritePalette_211[] = INCBIN_U32("graphics/battle_anims/sprites/211.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_214[] = INCBIN_U8("graphics/battle_anims/sprites/214.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_214[] = INCBIN_U32("graphics/battle_anims/sprites/214.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_215[] = INCBIN_U8("graphics/battle_anims/sprites/215.4bpp.lz");
-const u8 gBattleAnimSpritePalette_215[] = INCBIN_U8("graphics/battle_anims/sprites/215.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_215[] = INCBIN_U32("graphics/battle_anims/sprites/215.4bpp.lz");
+const u32 gBattleAnimSpritePalette_215[] = INCBIN_U32("graphics/battle_anims/sprites/215.gbapal.lz");
-const u8 gUnknown_08C249D0[] = INCBIN_U8("graphics/battle_anims/backgrounds/scary_face.gbapal.lz");
-const u8 gUnknown_08C249F8[] = INCBIN_U8("graphics/battle_anims/backgrounds/scary_face.4bpp.lz");
+const u32 gUnknown_08C249D0[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face.gbapal.lz");
+const u32 gUnknown_08C249F8[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face.4bpp.lz");
-const u8 gBattleAnimSpritePalette_218[] = INCBIN_U8("graphics/battle_anims/sprites/218.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_218[] = INCBIN_U8("graphics/battle_anims/sprites/218.4bpp.lz");
+const u32 gBattleAnimSpritePalette_218[] = INCBIN_U32("graphics/battle_anims/sprites/218.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_218[] = INCBIN_U32("graphics/battle_anims/sprites/218.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_087[] = INCBIN_U8("graphics/battle_anims/sprites/087.4bpp.lz");
-const u8 gBattleAnimSpritePalette_087[] = INCBIN_U8("graphics/battle_anims/sprites/087.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_087[] = INCBIN_U32("graphics/battle_anims/sprites/087.4bpp.lz");
+const u32 gBattleAnimSpritePalette_087[] = INCBIN_U32("graphics/battle_anims/sprites/087.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_018[] = INCBIN_U8("graphics/battle_anims/sprites/018.4bpp.lz");
-const u8 gBattleAnimSpritePalette_018[] = INCBIN_U8("graphics/battle_anims/sprites/018.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_018[] = INCBIN_U32("graphics/battle_anims/sprites/018.4bpp.lz");
+const u32 gBattleAnimSpritePalette_018[] = INCBIN_U32("graphics/battle_anims/sprites/018.gbapal.lz");
-const u8 gBattleAnimSpritePalette_220[] = INCBIN_U8("graphics/battle_anims/sprites/220.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_220[] = INCBIN_U8("graphics/battle_anims/sprites/220.4bpp.lz");
+const u32 gBattleAnimSpritePalette_220[] = INCBIN_U32("graphics/battle_anims/sprites/220.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_220[] = INCBIN_U32("graphics/battle_anims/sprites/220.4bpp.lz");
-const u8 gBattleAnimSpritePalette_221[] = INCBIN_U8("graphics/battle_anims/sprites/221.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_221[] = INCBIN_U8("graphics/battle_anims/sprites/221.4bpp.lz");
+const u32 gBattleAnimSpritePalette_221[] = INCBIN_U32("graphics/battle_anims/sprites/221.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_221[] = INCBIN_U32("graphics/battle_anims/sprites/221.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_222[] = INCBIN_U8("graphics/battle_anims/sprites/222.4bpp.lz");
-const u8 gBattleAnimSpritePalette_222[] = INCBIN_U8("graphics/battle_anims/sprites/222.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_222[] = INCBIN_U32("graphics/battle_anims/sprites/222.4bpp.lz");
+const u32 gBattleAnimSpritePalette_222[] = INCBIN_U32("graphics/battle_anims/sprites/222.gbapal.lz");
-const u8 gBattleAnimSpritePalette_223[] = INCBIN_U8("graphics/battle_anims/sprites/223.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_223[] = INCBIN_U8("graphics/battle_anims/sprites/223.4bpp.lz");
+const u32 gBattleAnimSpritePalette_223[] = INCBIN_U32("graphics/battle_anims/sprites/223.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_223[] = INCBIN_U32("graphics/battle_anims/sprites/223.4bpp.lz");
-const u8 gBattleAnimSpritePalette_224[] = INCBIN_U8("graphics/battle_anims/sprites/224.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_224[] = INCBIN_U8("graphics/battle_anims/sprites/224.4bpp.lz");
+const u32 gBattleAnimSpritePalette_224[] = INCBIN_U32("graphics/battle_anims/sprites/224.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_224[] = INCBIN_U32("graphics/battle_anims/sprites/224.4bpp.lz");
-const u8 gBattleAnimSpritePalette_230[] = INCBIN_U8("graphics/battle_anims/sprites/230.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_230[] = INCBIN_U8("graphics/battle_anims/sprites/230.4bpp.lz");
+const u32 gBattleAnimSpritePalette_230[] = INCBIN_U32("graphics/battle_anims/sprites/230.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_230[] = INCBIN_U32("graphics/battle_anims/sprites/230.4bpp.lz");
-const u8 gBattleAnimSpritePalette_228[] = INCBIN_U8("graphics/battle_anims/sprites/228.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_228[] = INCBIN_U8("graphics/battle_anims/sprites/228.4bpp.lz");
+const u32 gBattleAnimSpritePalette_228[] = INCBIN_U32("graphics/battle_anims/sprites/228.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_228[] = INCBIN_U32("graphics/battle_anims/sprites/228.4bpp.lz");
-const u8 gBattleAnimBackgroundPalette_04[] = INCBIN_U8("graphics/battle_anims/backgrounds/04.gbapal.lz");
-const u8 gBattleAnimBackgroundImage_04[] = INCBIN_U8("graphics/battle_anims/backgrounds/04.4bpp.lz");
-const u16 gBattleAnimBackgroundTilemap_04[] = INCBIN_U16("graphics/battle_anims/backgrounds/04.bin.lz");
+const u32 gBattleAnimBackgroundPalette_04[] = INCBIN_U32("graphics/battle_anims/backgrounds/04.gbapal.lz");
+const u32 gBattleAnimBackgroundImage_04[] = INCBIN_U32("graphics/battle_anims/backgrounds/04.4bpp.lz");
+const u32 gBattleAnimBackgroundTilemap_04[] = INCBIN_U32("graphics/battle_anims/backgrounds/04.bin.lz");
-const u16 gBattleAnimBackgroundTilemap_05[] = INCBIN_U16("graphics/battle_anims/backgrounds/05.bin.lz");
-const u16 gBattleAnimBackgroundTilemap_06[] = INCBIN_U16("graphics/battle_anims/backgrounds/06.bin.lz");
+const u32 gBattleAnimBackgroundTilemap_05[] = INCBIN_U32("graphics/battle_anims/backgrounds/05.bin.lz");
+const u32 gBattleAnimBackgroundTilemap_06[] = INCBIN_U32("graphics/battle_anims/backgrounds/06.bin.lz");
-const u8 gBattleAnimSpriteSheet_225[] = INCBIN_U8("graphics/battle_anims/sprites/225.4bpp.lz");
-const u8 gBattleAnimSpritePalette_225[] = INCBIN_U8("graphics/battle_anims/sprites/225.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_225[] = INCBIN_U32("graphics/battle_anims/sprites/225.4bpp.lz");
+const u32 gBattleAnimSpritePalette_225[] = INCBIN_U32("graphics/battle_anims/sprites/225.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_227[] = INCBIN_U8("graphics/battle_anims/sprites/227.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_227[] = INCBIN_U32("graphics/battle_anims/sprites/227.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_226[] = INCBIN_U8("graphics/battle_anims/sprites/226.4bpp.lz");
-const u8 gBattleAnimSpritePalette_226[] = INCBIN_U8("graphics/battle_anims/sprites/226.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_226[] = INCBIN_U32("graphics/battle_anims/sprites/226.4bpp.lz");
+const u32 gBattleAnimSpritePalette_226[] = INCBIN_U32("graphics/battle_anims/sprites/226.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_229[] = INCBIN_U8("graphics/battle_anims/sprites/229.4bpp.lz");
-const u8 gBattleAnimSpritePalette_229[] = INCBIN_U8("graphics/battle_anims/sprites/229.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_229[] = INCBIN_U32("graphics/battle_anims/sprites/229.4bpp.lz");
+const u32 gBattleAnimSpritePalette_229[] = INCBIN_U32("graphics/battle_anims/sprites/229.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_099[] = INCBIN_U8("graphics/battle_anims/sprites/099.4bpp.lz");
-const u8 gBattleAnimSpritePalette_099[] = INCBIN_U8("graphics/battle_anims/sprites/099.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_099[] = INCBIN_U32("graphics/battle_anims/sprites/099.4bpp.lz");
+const u32 gBattleAnimSpritePalette_099[] = INCBIN_U32("graphics/battle_anims/sprites/099.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_232[] = INCBIN_U8("graphics/battle_anims/sprites/232.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_232[] = INCBIN_U32("graphics/battle_anims/sprites/232.4bpp.lz");
-const u8 gBattleAnimSpritePalette_231[] = INCBIN_U8("graphics/battle_anims/sprites/231.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_231[] = INCBIN_U8("graphics/battle_anims/sprites/231.4bpp.lz");
+const u32 gBattleAnimSpritePalette_231[] = INCBIN_U32("graphics/battle_anims/sprites/231.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_231[] = INCBIN_U32("graphics/battle_anims/sprites/231.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_233[] = INCBIN_U8("graphics/battle_anims/sprites/233.4bpp.lz");
-const u8 gBattleAnimSpritePalette_233[] = INCBIN_U8("graphics/battle_anims/sprites/233.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_233[] = INCBIN_U32("graphics/battle_anims/sprites/233.4bpp.lz");
+const u32 gBattleAnimSpritePalette_233[] = INCBIN_U32("graphics/battle_anims/sprites/233.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_234[] = INCBIN_U8("graphics/battle_anims/sprites/234.4bpp.lz");
-const u8 gBattleAnimSpritePalette_234[] = INCBIN_U8("graphics/battle_anims/sprites/234.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_234[] = INCBIN_U32("graphics/battle_anims/sprites/234.4bpp.lz");
+const u32 gBattleAnimSpritePalette_234[] = INCBIN_U32("graphics/battle_anims/sprites/234.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_238[] = INCBIN_U8("graphics/battle_anims/sprites/238.4bpp.lz");
-const u8 gBattleAnimSpritePalette_238[] = INCBIN_U8("graphics/battle_anims/sprites/238.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_238[] = INCBIN_U32("graphics/battle_anims/sprites/238.4bpp.lz");
+const u32 gBattleAnimSpritePalette_238[] = INCBIN_U32("graphics/battle_anims/sprites/238.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_235[] = INCBIN_U8("graphics/battle_anims/sprites/235.4bpp.lz");
-const u8 gBattleAnimSpritePalette_235[] = INCBIN_U8("graphics/battle_anims/sprites/235.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_235[] = INCBIN_U32("graphics/battle_anims/sprites/235.4bpp.lz");
+const u32 gBattleAnimSpritePalette_235[] = INCBIN_U32("graphics/battle_anims/sprites/235.gbapal.lz");
-const u8 gBattleAnimSpritePalette_236[] = INCBIN_U8("graphics/battle_anims/sprites/236.gbapal.lz");
-const u8 gBattleAnimSpritePalette_237[] = INCBIN_U8("graphics/battle_anims/sprites/237.gbapal.lz");
+const u32 gBattleAnimSpritePalette_236[] = INCBIN_U32("graphics/battle_anims/sprites/236.gbapal.lz");
+const u32 gBattleAnimSpritePalette_237[] = INCBIN_U32("graphics/battle_anims/sprites/237.gbapal.lz");
-const u8 gBattleAnimBackgroundImage_07[] = INCBIN_U8("graphics/battle_anims/backgrounds/07.4bpp.lz");
-const u8 gBattleAnimBackgroundPalette_07[] = INCBIN_U8("graphics/battle_anims/backgrounds/07.gbapal.lz");
+const u32 gBattleAnimBackgroundImage_07[] = INCBIN_U32("graphics/battle_anims/backgrounds/07.4bpp.lz");
+const u32 gBattleAnimBackgroundPalette_07[] = INCBIN_U32("graphics/battle_anims/backgrounds/07.gbapal.lz");
-const u8 gBattleAnimBackgroundPalette_18[] = INCBIN_U8("graphics/battle_anims/backgrounds/18.gbapal.lz");
+const u32 gBattleAnimBackgroundPalette_18[] = INCBIN_U32("graphics/battle_anims/backgrounds/18.gbapal.lz");
-const u16 gBattleAnimBackgroundTilemap_07[] = INCBIN_U16("graphics/battle_anims/backgrounds/07.bin.lz");
-const u16 gBattleAnimBackgroundTilemap_08[] = INCBIN_U16("graphics/battle_anims/backgrounds/08.bin.lz");
+const u32 gBattleAnimBackgroundTilemap_07[] = INCBIN_U32("graphics/battle_anims/backgrounds/07.bin.lz");
+const u32 gBattleAnimBackgroundTilemap_08[] = INCBIN_U32("graphics/battle_anims/backgrounds/08.bin.lz");
-const u8 gBattleAnimBackgroundImage_20[] = INCBIN_U8("graphics/battle_anims/backgrounds/20.4bpp.lz");
-const u8 gBattleAnimBackgroundPalette_20[] = INCBIN_U8("graphics/battle_anims/backgrounds/20.gbapal.lz");
-const u16 gBattleAnimBackgroundTilemap_20[] = INCBIN_U16("graphics/battle_anims/backgrounds/20.bin.lz");
+const u32 gBattleAnimBackgroundImage_20[] = INCBIN_U32("graphics/battle_anims/backgrounds/20.4bpp.lz");
+const u32 gBattleAnimBackgroundPalette_20[] = INCBIN_U32("graphics/battle_anims/backgrounds/20.gbapal.lz");
+const u32 gBattleAnimBackgroundTilemap_20[] = INCBIN_U32("graphics/battle_anims/backgrounds/20.bin.lz");
-const u16 gBattleAnimBackgroundTilemap_09[] = INCBIN_U16("graphics/battle_anims/backgrounds/09.bin.lz");
-const u8 gBattleAnimBackgroundPalette_09[] = INCBIN_U8("graphics/battle_anims/backgrounds/09.gbapal.lz");
+const u32 gBattleAnimBackgroundTilemap_09[] = INCBIN_U32("graphics/battle_anims/backgrounds/09.bin.lz");
+const u32 gBattleAnimBackgroundPalette_09[] = INCBIN_U32("graphics/battle_anims/backgrounds/09.gbapal.lz");
-const u8 gBattleAnimBackgroundPalette_22[] = INCBIN_U8("graphics/battle_anims/backgrounds/22.gbapal.lz");
+const u32 gBattleAnimBackgroundPalette_22[] = INCBIN_U32("graphics/battle_anims/backgrounds/22.gbapal.lz");
-const u8 gBattleAnimBackgroundImage_09[] = INCBIN_U8("graphics/battle_anims/backgrounds/09.4bpp.lz");
-const u16 gBattleAnimBackgroundTilemap_10[] = INCBIN_U16("graphics/battle_anims/backgrounds/10.bin.lz");
+const u32 gBattleAnimBackgroundImage_09[] = INCBIN_U32("graphics/battle_anims/backgrounds/09.4bpp.lz");
+const u32 gBattleAnimBackgroundTilemap_10[] = INCBIN_U32("graphics/battle_anims/backgrounds/10.bin.lz");
-const u8 gUnknown_08C2A634[] = INCBIN_U8("graphics/battle_anims/masks/morning_sun.4bpp.lz");
-const u8 gUnknown_08C2A6D4[] = INCBIN_U8("graphics/battle_anims/masks/morning_sun.gbapal.lz");
-const u16 gUnknown_08C2A6EC[] = INCBIN_U16("graphics/battle_anims/masks/morning_sun.bin.lz");
+const u32 gUnknown_08C2A634[] = INCBIN_U32("graphics/battle_anims/masks/morning_sun.4bpp.lz");
+const u32 gUnknown_08C2A6D4[] = INCBIN_U32("graphics/battle_anims/masks/morning_sun.gbapal.lz");
+const u32 gUnknown_08C2A6EC[] = INCBIN_U32("graphics/battle_anims/masks/morning_sun.bin.lz");
-const u16 gBattleAnimBackgroundTilemap_12[] = INCBIN_U16("graphics/battle_anims/backgrounds/12.bin.lz");
-const u16 gBattleAnimBackgroundTilemap_13[] = INCBIN_U16("graphics/battle_anims/backgrounds/13.bin.lz");
-const u16 gBattleAnimBackgroundTilemap_14[] = INCBIN_U16("graphics/battle_anims/backgrounds/14.bin.lz");
+const u32 gBattleAnimBackgroundTilemap_12[] = INCBIN_U32("graphics/battle_anims/backgrounds/12.bin.lz");
+const u32 gBattleAnimBackgroundTilemap_13[] = INCBIN_U32("graphics/battle_anims/backgrounds/13.bin.lz");
+const u32 gBattleAnimBackgroundTilemap_14[] = INCBIN_U32("graphics/battle_anims/backgrounds/14.bin.lz");
-const u8 gBattleAnimBackgroundImage_12[] = INCBIN_U8("graphics/battle_anims/backgrounds/12.4bpp.lz");
-const u8 gBattleAnimBackgroundPalette_12[] = INCBIN_U8("graphics/battle_anims/backgrounds/12.gbapal.lz");
+const u32 gBattleAnimBackgroundImage_12[] = INCBIN_U32("graphics/battle_anims/backgrounds/12.4bpp.lz");
+const u32 gBattleAnimBackgroundPalette_12[] = INCBIN_U32("graphics/battle_anims/backgrounds/12.gbapal.lz");
-const u8 gBattleAnimBackgroundImage_11[] = INCBIN_U8("graphics/battle_anims/backgrounds/11.4bpp.lz");
-const u8 gBattleAnimBackgroundPalette_11[] = INCBIN_U8("graphics/battle_anims/backgrounds/11.gbapal.lz");
-const u16 gBattleAnimBackgroundTilemap_11[] = INCBIN_U16("graphics/battle_anims/backgrounds/11.bin.lz");
+const u32 gBattleAnimBackgroundImage_11[] = INCBIN_U32("graphics/battle_anims/backgrounds/11.4bpp.lz");
+const u32 gBattleAnimBackgroundPalette_11[] = INCBIN_U32("graphics/battle_anims/backgrounds/11.gbapal.lz");
+const u32 gBattleAnimBackgroundTilemap_11[] = INCBIN_U32("graphics/battle_anims/backgrounds/11.bin.lz");
-const u8 gBattleAnimSpriteSheet_239[] = INCBIN_U8("graphics/battle_anims/sprites/239.4bpp.lz");
-const u8 gBattleAnimSpritePalette_239[] = INCBIN_U8("graphics/battle_anims/sprites/239.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_239[] = INCBIN_U32("graphics/battle_anims/sprites/239.4bpp.lz");
+const u32 gBattleAnimSpritePalette_239[] = INCBIN_U32("graphics/battle_anims/sprites/239.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_143[] = INCBIN_U8("graphics/battle_anims/sprites/143.4bpp.lz");
-const u8 gBattleAnimSpritePalette_143[] = INCBIN_U8("graphics/battle_anims/sprites/143.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_143[] = INCBIN_U32("graphics/battle_anims/sprites/143.4bpp.lz");
+const u32 gBattleAnimSpritePalette_143[] = INCBIN_U32("graphics/battle_anims/sprites/143.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_240[] = INCBIN_U8("graphics/battle_anims/sprites/240.4bpp.lz");
-const u8 gBattleAnimSpritePalette_240[] = INCBIN_U8("graphics/battle_anims/sprites/240.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_240[] = INCBIN_U32("graphics/battle_anims/sprites/240.4bpp.lz");
+const u32 gBattleAnimSpritePalette_240[] = INCBIN_U32("graphics/battle_anims/sprites/240.gbapal.lz");
-const u8 gSubstituteDollPal[] = INCBIN_U8("graphics/battle_anims/sprites/substitute.gbapal.lz");
-const u8 gSubstituteDollGfx[] = INCBIN_U8("graphics/battle_anims/sprites/substitute.4bpp.lz");
-const u16 gSubstituteDollTilemap[] = INCBIN_U16("graphics/battle_anims/sprites/substitute.bin.lz");
+const u32 gSubstituteDollPal[] = INCBIN_U32("graphics/battle_anims/sprites/substitute.gbapal.lz");
+const u32 gSubstituteDollGfx[] = INCBIN_U32("graphics/battle_anims/sprites/substitute.4bpp.lz");
+const u32 gSubstituteDollTilemap[] = INCBIN_U32("graphics/battle_anims/sprites/substitute.bin.lz");
-const u8 gBattleAnimSpriteSheet_241[] = INCBIN_U8("graphics/battle_anims/sprites/241.4bpp.lz");
-const u8 gBattleAnimSpritePalette_241[] = INCBIN_U8("graphics/battle_anims/sprites/241.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_241[] = INCBIN_U32("graphics/battle_anims/sprites/241.4bpp.lz");
+const u32 gBattleAnimSpritePalette_241[] = INCBIN_U32("graphics/battle_anims/sprites/241.gbapal.lz");
-const u8 gContestConfetti_Gfx[] = INCBIN_U8("graphics/misc/confetti.4bpp.lz");
-const u8 gContestConfetti_Pal[] = INCBIN_U8("graphics/misc/confetti.gbapal.lz");
+const u32 gContestConfetti_Gfx[] = INCBIN_U32("graphics/misc/confetti.4bpp.lz");
+const u32 gContestConfetti_Pal[] = INCBIN_U32("graphics/misc/confetti.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_242[] = INCBIN_U8("graphics/battle_anims/sprites/242.4bpp.lz");
-const u8 gBattleAnimSpritePalette_242[] = INCBIN_U8("graphics/battle_anims/sprites/242.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_242[] = INCBIN_U32("graphics/battle_anims/sprites/242.4bpp.lz");
+const u32 gBattleAnimSpritePalette_242[] = INCBIN_U32("graphics/battle_anims/sprites/242.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_243[] = INCBIN_U8("graphics/battle_anims/sprites/243.4bpp.lz");
-const u8 gBattleAnimSpritePalette_243[] = INCBIN_U8("graphics/battle_anims/sprites/243.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_243[] = INCBIN_U32("graphics/battle_anims/sprites/243.4bpp.lz");
+const u32 gBattleAnimSpritePalette_243[] = INCBIN_U32("graphics/battle_anims/sprites/243.gbapal.lz");
-const u8 gUnknown_08C2D720[] = INCBIN_U8("graphics/battle_anims/masks/stat.4bpp.lz");
-const u16 gUnknown_08C2D930[] = INCBIN_U16("graphics/battle_anims/masks/stat_tilemap_1.bin.lz");
-const u16 gUnknown_08C2DA4C[] = INCBIN_U16("graphics/battle_anims/masks/stat_tilemap_2.bin.lz");
+const u32 gBattleStatMask_Gfx[] = INCBIN_U32("graphics/battle_anims/masks/stat.4bpp.lz");
+const u32 gBattleStatMask1_Tilemap[] = INCBIN_U32("graphics/battle_anims/masks/stat_tilemap_1.bin.lz");
+const u32 gBattleStatMask2_Tilemap[] = INCBIN_U32("graphics/battle_anims/masks/stat_tilemap_2.bin.lz");
-const u8 gUnknown_08C2DB68[] = INCBIN_U8("graphics/battle_anims/masks/stat1.gbapal.lz");
-const u8 gUnknown_08C2DB88[] = INCBIN_U8("graphics/battle_anims/masks/stat2.gbapal.lz");
-const u8 gUnknown_08C2DBA8[] = INCBIN_U8("graphics/battle_anims/masks/stat3.gbapal.lz");
-const u8 gUnknown_08C2DBC8[] = INCBIN_U8("graphics/battle_anims/masks/stat4.gbapal.lz");
-const u8 gUnknown_08C2DBE8[] = INCBIN_U8("graphics/battle_anims/masks/stat5.gbapal.lz");
-const u8 gUnknown_08C2DC08[] = INCBIN_U8("graphics/battle_anims/masks/stat6.gbapal.lz");
-const u8 gUnknown_08C2DC28[] = INCBIN_U8("graphics/battle_anims/masks/stat7.gbapal.lz");
-const u8 gUnknown_08C2DC48[] = INCBIN_U8("graphics/battle_anims/masks/stat8.gbapal.lz");
+const u32 gBattleStatMask1_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat1.gbapal.lz");
+const u32 gBattleStatMask2_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat2.gbapal.lz");
+const u32 gBattleStatMask3_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat3.gbapal.lz");
+const u32 gBattleStatMask4_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat4.gbapal.lz");
+const u32 gBattleStatMask5_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat5.gbapal.lz");
+const u32 gBattleStatMask6_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat6.gbapal.lz");
+const u32 gBattleStatMask7_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat7.gbapal.lz");
+const u32 gBattleStatMask8_Pal[] = INCBIN_U32("graphics/battle_anims/masks/stat8.gbapal.lz");
-const u8 gUnknown_08C2DC68[] = INCBIN_U8("graphics/battle_anims/masks/cure_bubbles.4bpp.lz");
-const u8 gUnknown_08C2DDA4[] = INCBIN_U8("graphics/battle_anims/masks/cure_bubbles.gbapal.lz");
-const u16 gUnknown_08C2DDC4[] = INCBIN_U16("graphics/battle_anims/masks/cure_bubbles.bin.lz");
+const u32 gUnknown_08C2DC68[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.4bpp.lz");
+const u32 gUnknown_08C2DDA4[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.gbapal.lz");
+const u32 gUnknown_08C2DDC4[] = INCBIN_U32("graphics/battle_anims/masks/cure_bubbles.bin.lz");
-const u8 gBattleAnimSpritePalette_245[] = INCBIN_U8("graphics/battle_anims/sprites/245.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_245[] = INCBIN_U8("graphics/battle_anims/sprites/245.4bpp.lz");
+const u32 gBattleAnimSpritePalette_245[] = INCBIN_U32("graphics/battle_anims/sprites/245.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_245[] = INCBIN_U32("graphics/battle_anims/sprites/245.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_246[] = INCBIN_U8("graphics/battle_anims/sprites/246.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_246[] = INCBIN_U32("graphics/battle_anims/sprites/246.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_244[] = INCBIN_U8("graphics/battle_anims/sprites/244.4bpp.lz");
-const u8 gBattleAnimSpritePalette_244[] = INCBIN_U8("graphics/battle_anims/sprites/244.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_244[] = INCBIN_U32("graphics/battle_anims/sprites/244.4bpp.lz");
+const u32 gBattleAnimSpritePalette_244[] = INCBIN_U32("graphics/battle_anims/sprites/244.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_247[] = INCBIN_U8("graphics/battle_anims/sprites/247.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_247[] = INCBIN_U32("graphics/battle_anims/sprites/247.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_053[] = INCBIN_U8("graphics/battle_anims/sprites/053.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_053[] = INCBIN_U32("graphics/battle_anims/sprites/053.4bpp.lz");
-const u8 gUnknown_08C2EA50[] = INCBIN_U8("graphics/battle_anims/masks/unknown_C2EA50.4bpp.lz");
-const u16 gUnknown_08C2EA9C[] = INCBIN_U16("graphics/battle_anims/masks/unknown_C2EA50.bin.lz");
+const u32 gUnknown_08C2EA50[] = INCBIN_U32("graphics/battle_anims/masks/unknown_C2EA50.4bpp.lz");
+const u32 gUnknown_08C2EA9C[] = INCBIN_U32("graphics/battle_anims/masks/unknown_C2EA50.bin.lz");
-const u8 gBattleAnimSpriteSheet_248[] = INCBIN_U8("graphics/battle_anims/sprites/248.4bpp.lz");
-const u8 gBattleAnimSpritePalette_248[] = INCBIN_U8("graphics/battle_anims/sprites/248.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_248[] = INCBIN_U32("graphics/battle_anims/sprites/248.4bpp.lz");
+const u32 gBattleAnimSpritePalette_248[] = INCBIN_U32("graphics/battle_anims/sprites/248.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_249[] = INCBIN_U8("graphics/battle_anims/sprites/249.4bpp.lz");
-const u8 gBattleAnimSpritePalette_249[] = INCBIN_U8("graphics/battle_anims/sprites/249.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_249[] = INCBIN_U32("graphics/battle_anims/sprites/249.4bpp.lz");
+const u32 gBattleAnimSpritePalette_249[] = INCBIN_U32("graphics/battle_anims/sprites/249.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_250[] = INCBIN_U8("graphics/battle_anims/sprites/250.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_250[] = INCBIN_U32("graphics/battle_anims/sprites/250.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_251[] = INCBIN_U8("graphics/battle_anims/sprites/251.4bpp.lz");
-const u8 gBattleAnimSpritePalette_251[] = INCBIN_U8("graphics/battle_anims/sprites/251.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_251[] = INCBIN_U32("graphics/battle_anims/sprites/251.4bpp.lz");
+const u32 gBattleAnimSpritePalette_251[] = INCBIN_U32("graphics/battle_anims/sprites/251.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_252[] = INCBIN_U8("graphics/battle_anims/sprites/252.4bpp.lz");
-const u8 gBattleAnimSpritePalette_252[] = INCBIN_U8("graphics/battle_anims/sprites/252.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_252[] = INCBIN_U32("graphics/battle_anims/sprites/252.4bpp.lz");
+const u32 gBattleAnimSpritePalette_252[] = INCBIN_U32("graphics/battle_anims/sprites/252.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_253[] = INCBIN_U8("graphics/battle_anims/sprites/253.4bpp.lz");
-const u8 gBattleAnimSpritePalette_253[] = INCBIN_U8("graphics/battle_anims/sprites/253.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_253[] = INCBIN_U32("graphics/battle_anims/sprites/253.4bpp.lz");
+const u32 gBattleAnimSpritePalette_253[] = INCBIN_U32("graphics/battle_anims/sprites/253.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_254[] = INCBIN_U8("graphics/battle_anims/sprites/254.4bpp.lz");
-const u8 gBattleAnimSpritePalette_254[] = INCBIN_U8("graphics/battle_anims/sprites/254.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_254[] = INCBIN_U32("graphics/battle_anims/sprites/254.4bpp.lz");
+const u32 gBattleAnimSpritePalette_254[] = INCBIN_U32("graphics/battle_anims/sprites/254.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_255[] = INCBIN_U8("graphics/battle_anims/sprites/255.4bpp.lz");
-const u8 gBattleAnimSpritePalette_255[] = INCBIN_U8("graphics/battle_anims/sprites/255.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_255[] = INCBIN_U32("graphics/battle_anims/sprites/255.4bpp.lz");
+const u32 gBattleAnimSpritePalette_255[] = INCBIN_U32("graphics/battle_anims/sprites/255.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_258[] = INCBIN_U8("graphics/battle_anims/sprites/258.4bpp.lz");
-const u8 gBattleAnimSpritePalette_258[] = INCBIN_U8("graphics/battle_anims/sprites/258.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_258[] = INCBIN_U32("graphics/battle_anims/sprites/258.4bpp.lz");
+const u32 gBattleAnimSpritePalette_258[] = INCBIN_U32("graphics/battle_anims/sprites/258.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_256[] = INCBIN_U8("graphics/battle_anims/sprites/256.4bpp.lz");
-const u8 gBattleAnimSpritePalette_256[] = INCBIN_U8("graphics/battle_anims/sprites/256.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_256[] = INCBIN_U32("graphics/battle_anims/sprites/256.4bpp.lz");
+const u32 gBattleAnimSpritePalette_256[] = INCBIN_U32("graphics/battle_anims/sprites/256.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_257[] = INCBIN_U8("graphics/battle_anims/sprites/257.4bpp.lz");
-const u8 gBattleAnimSpritePalette_257[] = INCBIN_U8("graphics/battle_anims/sprites/257.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_257[] = INCBIN_U32("graphics/battle_anims/sprites/257.4bpp.lz");
+const u32 gBattleAnimSpritePalette_257[] = INCBIN_U32("graphics/battle_anims/sprites/257.gbapal.lz");
-const u8 gUnknownPal_C2F9E0[] = INCBIN_U8("graphics/unknown/unknown_C2F9E0.gbapal.lz");
+const u32 gUnknownPal_C2F9E0[] = INCBIN_U32("graphics/unknown/unknown_C2F9E0.gbapal.lz");
#include "data/graphics/pokemon.h"
#include "data/graphics/trainers.h"
@@ -956,38 +956,38 @@ const u8 gUnknownPal_C2F9E0[] = INCBIN_U8("graphics/unknown/unknown_C2F9E0.gbapa
const u8 gMonIcon_QuestionMark[] = INCBIN_U8("graphics/pokemon/icons/question_mark_icon.4bpp");
const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/footprints/question_mark_footprint.1bpp");
-const u8 gUnknown_08D778F0[] = INCBIN_U8("graphics/battle_transitions/vs_frame.4bpp.lz");
-const u16 gUnknown_08D779D8[] = INCBIN_U16("graphics/battle_transitions/vs_frame.bin.lz");
-const u8 gUnknown_08D77AE4[] = INCBIN_U8("graphics/battle_transitions/vs_frame.gbapal.lz");
+const u32 gUnknown_08D778F0[] = INCBIN_U32("graphics/battle_transitions/vs_frame.4bpp.lz");
+const u32 gUnknown_08D779D8[] = INCBIN_U32("graphics/battle_transitions/vs_frame.bin.lz");
+const u32 gUnknown_08D77AE4[] = INCBIN_U32("graphics/battle_transitions/vs_frame.gbapal.lz");
-const u8 gUnknown_08D77B0C[] = INCBIN_U8("graphics/battle_transitions/vs.4bpp.lz");
+const u32 gUnknown_08D77B0C[] = INCBIN_U32("graphics/battle_transitions/vs.4bpp.lz");
#include "data/graphics/battle_terrain.h"
-const u8 gUnknown_08D82F10[] = INCBIN_U8("graphics/battle_frontier/tourney_bg.4bpp.lz");
-const u8 gUnknown_08D834FC[] = INCBIN_U8("graphics/battle_frontier/tourney_line.4bpp.lz"); // the red glow mask for the tourney advancement lines
+const u32 gUnknown_08D82F10[] = INCBIN_U32("graphics/battle_frontier/tourney_bg.4bpp.lz");
+const u32 gUnknown_08D834FC[] = INCBIN_U32("graphics/battle_frontier/tourney_line.4bpp.lz"); // the red glow mask for the tourney advancement lines
-const u16 gUnknown_08D83900[] = INCBIN_U16("graphics/unknown/unknown_D83900.bin.lz"); // tilemaps likely
+const u32 gUnknown_08D83900[] = INCBIN_U32("graphics/unknown/unknown_D83900.bin.lz"); // tilemaps likely
-const u16 gUnknown_08D83B2C[] = INCBIN_U16("graphics/unknown/unknown_D83B2C.bin.lz");
+const u32 gUnknown_08D83B2C[] = INCBIN_U32("graphics/unknown/unknown_D83B2C.bin.lz");
-const u16 gUnknown_08D83C3C[] = INCBIN_U16("graphics/unknown/unknown_D83C3C.bin.lz");
+const u32 gUnknown_08D83C3C[] = INCBIN_U32("graphics/unknown/unknown_D83C3C.bin.lz");
-const u8 gUnknown_08D83D50[] = INCBIN_U8("graphics/battle_frontier/misc1.4bpp.lz");
+const u32 gUnknown_08D83D50[] = INCBIN_U32("graphics/battle_frontier/misc1.4bpp.lz");
-const u16 gUnknown_08D84970[] = INCBIN_U16("graphics/unknown/unknown_D84970.bin.lz");
+const u32 gUnknown_08D84970[] = INCBIN_U32("graphics/unknown/unknown_D84970.bin.lz");
-const u16 gUnknown_08D84F00[] = INCBIN_U16("graphics/unknown/unknown_D84F00.bin.lz");
+const u32 gUnknown_08D84F00[] = INCBIN_U32("graphics/unknown/unknown_D84F00.bin.lz");
-const u8 gBattleFrontierGfx_DomeOptions[] = INCBIN_U8("graphics/battle_frontier/options.4bpp.lz");
-const u8 gUnknown_08D85358[] = INCBIN_U8("graphics/battle_frontier/options_pal1.gbapal.lz");
-const u8 gUnknown_08D85444[] = INCBIN_U8("graphics/battle_frontier/options_pal2.gbapal.lz"); // pokeball pal
-const u8 gUnknown_08D854C8[] = INCBIN_U8("graphics/battle_frontier/options_pal3.gbapal.lz"); // arrow pal
+const u32 gBattleFrontierGfx_DomeOptions[] = INCBIN_U32("graphics/battle_frontier/options.4bpp.lz");
+const u32 gUnknown_08D85358[] = INCBIN_U32("graphics/battle_frontier/options_pal1.gbapal.lz");
+const u32 gUnknown_08D85444[] = INCBIN_U32("graphics/battle_frontier/options_pal2.gbapal.lz"); // pokeball pal
+const u32 gUnknown_08D854C8[] = INCBIN_U32("graphics/battle_frontier/options_pal3.gbapal.lz"); // arrow pal
-const u8 gUnknown_08D854E8[] = INCBIN_U8("graphics/battle_frontier/symbols.4bpp.lz");
-const u8 gUnknown_08D855E8[] = INCBIN_U8("graphics/battle_frontier/symbols.gbapal.lz");
+const u32 gUnknown_08D854E8[] = INCBIN_U32("graphics/battle_frontier/symbols.4bpp.lz");
+const u32 gUnknown_08D855E8[] = INCBIN_U32("graphics/battle_frontier/symbols.gbapal.lz");
-const u8 gUnknown_08D85600[] = INCBIN_U8("graphics/battle_frontier/text.gbapal.lz");
+const u32 gUnknown_08D85600[] = INCBIN_U32("graphics/battle_frontier/text.gbapal.lz");
const u16 gUnknown_08D85620[] = INCBIN_U16("graphics/battle_frontier/text_pp.gbapal");
const u16 gTilesetAnims_BattleDomePals0_0[] = INCBIN_U16("graphics/battle_frontier/dome_anim1.gbapal");
@@ -1000,253 +1000,253 @@ asm(".2byte 0x013F, 0x0119, 0x0113, 0x010E"); // unused?
const u16 gUnknown_08D856C8[] = INCBIN_U16("graphics/battle_frontier/pyramid_light.gbapal"); // unfaded pal for the player light in battle pyramid
-const u16 gUnknown_08D857A8[] = INCBIN_U16("graphics/battle_frontier/battle_tilemap1.bin.lz");
-const u16 gUnknown_08D85A1C[] = INCBIN_U16("graphics/battle_frontier/battle_tilemap2.bin.lz");
+const u32 gUnknown_08D857A8[] = INCBIN_U32("graphics/battle_frontier/battle_tilemap1.bin.lz");
+const u32 gUnknown_08D85A1C[] = INCBIN_U32("graphics/battle_frontier/battle_tilemap2.bin.lz");
#include "data/graphics/intro_scene.h"
-const u8 gBattleAnimSpriteSheet_261[] = INCBIN_U8("graphics/battle_anims/sprites/261.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_261[] = INCBIN_U32("graphics/battle_anims/sprites/261.4bpp.lz");
-const u16 gUnknown_08D8D410[] = INCBIN_U16("graphics/battle_anims/backgrounds/sandstorm_brew.bin.lz");
-const u8 gUnknown_08D8D58C[] = INCBIN_U8("graphics/battle_anims/backgrounds/sandstorm_brew.4bpp.lz");
+const u32 gUnknown_08D8D410[] = INCBIN_U32("graphics/battle_anims/backgrounds/sandstorm_brew.bin.lz");
+const u32 gUnknown_08D8D58C[] = INCBIN_U32("graphics/battle_anims/backgrounds/sandstorm_brew.4bpp.lz");
-const u8 gBattleAnimSpritePalette_261[] = INCBIN_U8("graphics/battle_anims/sprites/261.gbapal.lz");
+const u32 gBattleAnimSpritePalette_261[] = INCBIN_U32("graphics/battle_anims/sprites/261.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_260[] = INCBIN_U8("graphics/battle_anims/sprites/260.4bpp.lz");
-const u8 gBattleAnimSpritePalette_260[] = INCBIN_U8("graphics/battle_anims/sprites/260.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_260[] = INCBIN_U32("graphics/battle_anims/sprites/260.4bpp.lz");
+const u32 gBattleAnimSpritePalette_260[] = INCBIN_U32("graphics/battle_anims/sprites/260.gbapal.lz");
-const u8 gBattleAnimBackgroundImage_15[] = INCBIN_U8("graphics/battle_anims/backgrounds/15.4bpp.lz");
-const u8 gBattleAnimBackgroundPalette_15[] = INCBIN_U8("graphics/battle_anims/backgrounds/15.gbapal.lz");
-const u16 gBattleAnimBackgroundTilemap_15[] = INCBIN_U16("graphics/battle_anims/backgrounds/15.bin.lz");
+const u32 gBattleAnimBackgroundImage_15[] = INCBIN_U32("graphics/battle_anims/backgrounds/15.4bpp.lz");
+const u32 gBattleAnimBackgroundPalette_15[] = INCBIN_U32("graphics/battle_anims/backgrounds/15.gbapal.lz");
+const u32 gBattleAnimBackgroundTilemap_15[] = INCBIN_U32("graphics/battle_anims/backgrounds/15.bin.lz");
-const u8 gBattleAnimSpriteSheet_262[] = INCBIN_U8("graphics/battle_anims/sprites/262.4bpp.lz");
-const u8 gBattleAnimSpritePalette_262[] = INCBIN_U8("graphics/battle_anims/sprites/262.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_262[] = INCBIN_U32("graphics/battle_anims/sprites/262.4bpp.lz");
+const u32 gBattleAnimSpritePalette_262[] = INCBIN_U32("graphics/battle_anims/sprites/262.gbapal.lz");
-const u8 gContestNextTurnGfx[] = INCBIN_U8("graphics/contest/nextturn.4bpp.lz");
+const u32 gContestNextTurnGfx[] = INCBIN_U32("graphics/contest/nextturn.4bpp.lz");
const u8 gUnknown_08D8E9B4[] = INCBIN_U8("graphics/contest/nextturn_numbers.4bpp");
const u8 gUnknown_08D8EA34[] = INCBIN_U8("graphics/contest/nextturn_random.4bpp");
-const u8 gBattleAnimSpriteSheet_264[] = INCBIN_U8("graphics/battle_anims/sprites/264.4bpp.lz");
-const u8 gBattleAnimSpritePalette_264[] = INCBIN_U8("graphics/battle_anims/sprites/264.gbapal.lz");
-const u8 gBattleAnimSpritePalette_265[] = INCBIN_U8("graphics/battle_anims/sprites/265.gbapal.lz");
-const u8 gBattleAnimSpritePalette_067[] = INCBIN_U8("graphics/battle_anims/sprites/067.gbapal.lz");
-const u8 gBattleAnimSpritePalette_068[] = INCBIN_U8("graphics/battle_anims/sprites/068.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_264[] = INCBIN_U32("graphics/battle_anims/sprites/264.4bpp.lz");
+const u32 gBattleAnimSpritePalette_264[] = INCBIN_U32("graphics/battle_anims/sprites/264.gbapal.lz");
+const u32 gBattleAnimSpritePalette_265[] = INCBIN_U32("graphics/battle_anims/sprites/265.gbapal.lz");
+const u32 gBattleAnimSpritePalette_067[] = INCBIN_U32("graphics/battle_anims/sprites/067.gbapal.lz");
+const u32 gBattleAnimSpritePalette_068[] = INCBIN_U32("graphics/battle_anims/sprites/068.gbapal.lz");
-const u8 gContestApplauseGfx[] = INCBIN_U8("graphics/contest/applause.4bpp.lz");
+const u32 gContestApplauseGfx[] = INCBIN_U32("graphics/contest/applause.4bpp.lz");
const u8 gContestApplauseMeterGfx[] = INCBIN_U8("graphics/contest/applause_meter.4bpp");
const u16 gContestPal[] = INCBIN_U16("graphics/contest/nextturn.gbapal");
-const u8 gBattleAnimSpriteSheet_272[] = INCBIN_U8("graphics/battle_anims/sprites/272.4bpp.lz");
-const u8 gBattleAnimSpritePalette_272[] = INCBIN_U8("graphics/battle_anims/sprites/272.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_272[] = INCBIN_U32("graphics/battle_anims/sprites/272.4bpp.lz");
+const u32 gBattleAnimSpritePalette_272[] = INCBIN_U32("graphics/battle_anims/sprites/272.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_273[] = INCBIN_U8("graphics/battle_anims/sprites/273.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_273[] = INCBIN_U32("graphics/battle_anims/sprites/273.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_269[] = INCBIN_U8("graphics/battle_anims/sprites/269.4bpp.lz");
-const u8 gBattleAnimSpritePalette_269[] = INCBIN_U8("graphics/battle_anims/sprites/269.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_269[] = INCBIN_U32("graphics/battle_anims/sprites/269.4bpp.lz");
+const u32 gBattleAnimSpritePalette_269[] = INCBIN_U32("graphics/battle_anims/sprites/269.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_274[] = INCBIN_U8("graphics/battle_anims/sprites/274.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_275[] = INCBIN_U8("graphics/battle_anims/sprites/275.4bpp.lz");
-const u8 gBattleAnimSpriteSheet_276[] = INCBIN_U8("graphics/battle_anims/sprites/276.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_274[] = INCBIN_U32("graphics/battle_anims/sprites/274.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_275[] = INCBIN_U32("graphics/battle_anims/sprites/275.4bpp.lz");
+const u32 gBattleAnimSpriteSheet_276[] = INCBIN_U32("graphics/battle_anims/sprites/276.4bpp.lz");
-const u8 gBattleAnimSpritePalette_274[] = INCBIN_U8("graphics/battle_anims/sprites/274.gbapal.lz");
+const u32 gBattleAnimSpritePalette_274[] = INCBIN_U32("graphics/battle_anims/sprites/274.gbapal.lz");
-const u8 gBattleAnimBackgroundImage_17[] = INCBIN_U8("graphics/battle_anims/backgrounds/17.4bpp.lz");
-const u8 gBattleAnimBackgroundPalette_17[] = INCBIN_U8("graphics/battle_anims/backgrounds/17.gbapal.lz");
-const u16 gBattleAnimBackgroundTilemap_17[] = INCBIN_U16("graphics/battle_anims/backgrounds/17.bin.lz");
+const u32 gBattleAnimBackgroundImage_17[] = INCBIN_U32("graphics/battle_anims/backgrounds/17.4bpp.lz");
+const u32 gBattleAnimBackgroundPalette_17[] = INCBIN_U32("graphics/battle_anims/backgrounds/17.gbapal.lz");
+const u32 gBattleAnimBackgroundTilemap_17[] = INCBIN_U32("graphics/battle_anims/backgrounds/17.bin.lz");
-const u8 gBattleAnimSpriteSheet_280[] = INCBIN_U8("graphics/battle_anims/sprites/280.4bpp.lz");
-const u8 gBattleAnimSpritePalette_280[] = INCBIN_U8("graphics/battle_anims/sprites/280.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_280[] = INCBIN_U32("graphics/battle_anims/sprites/280.4bpp.lz");
+const u32 gBattleAnimSpritePalette_280[] = INCBIN_U32("graphics/battle_anims/sprites/280.gbapal.lz");
-const u8 gBattleAnimBackgroundImageMuddyWater_Pal[] = INCBIN_U8("graphics/battle_anims/backgrounds/water_muddy.gbapal.lz");
+const u32 gBattleAnimBackgroundImageMuddyWater_Pal[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_muddy.gbapal.lz");
-const u8 gEnemyMonShadow_Gfx[] = INCBIN_U8("graphics/battle_interface/enemy_mon_shadow.4bpp.lz");
+const u32 gEnemyMonShadow_Gfx[] = INCBIN_U32("graphics/battle_interface/enemy_mon_shadow.4bpp.lz");
-const u8 gBattleInterface_BallStatusBarGfx[] = INCBIN_U8("graphics/battle_interface/ball_status_bar.4bpp.lz");
+const u32 gBattleInterface_BallStatusBarGfx[] = INCBIN_U32("graphics/battle_interface/ball_status_bar.4bpp.lz");
const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/icons/egg_icon.4bpp");
-const u8 gBattleAnimBackgroundImage_02[] = INCBIN_U8("graphics/battle_anims/backgrounds/02.4bpp.lz");
-const u8 gBattleAnimBackgroundPalette_02[] = INCBIN_U8("graphics/battle_anims/backgrounds/02.gbapal.lz");
-const u16 gBattleAnimBackgroundTilemap_02[] = INCBIN_U16("graphics/battle_anims/backgrounds/02.bin.lz");
+const u32 gBattleAnimBackgroundImage_02[] = INCBIN_U32("graphics/battle_anims/backgrounds/02.4bpp.lz");
+const u32 gBattleAnimBackgroundPalette_02[] = INCBIN_U32("graphics/battle_anims/backgrounds/02.gbapal.lz");
+const u32 gBattleAnimBackgroundTilemap_02[] = INCBIN_U32("graphics/battle_anims/backgrounds/02.bin.lz");
-const u8 gBattleAnimSpritePalette_287[] = INCBIN_U8("graphics/battle_anims/sprites/287.gbapal.lz");
+const u32 gBattleAnimSpritePalette_287[] = INCBIN_U32("graphics/battle_anims/sprites/287.gbapal.lz");
-const u8 gBattleAnimBackgroundPalette_24[] = INCBIN_U8("graphics/battle_anims/backgrounds/24.gbapal.lz");
+const u32 gBattleAnimBackgroundPalette_24[] = INCBIN_U32("graphics/battle_anims/backgrounds/24.gbapal.lz");
-const u16 gUnknown_E6BC04[] = INCBIN_U16("graphics/unknown/unknown_E6BC04.bin.lz");
+const u32 gUnknown_E6BC04[] = INCBIN_U32("graphics/unknown/unknown_E6BC04.bin.lz");
-const u16 sBlenderCenterGfx[] = INCBIN_U16("graphics/berry_blender/center.8bpp.lz");
+const u32 sBlenderCenterGfx[] = INCBIN_U32("graphics/berry_blender/center.8bpp.lz");
-const u8 gUnknown_08D91DB8[] = INCBIN_U8("graphics/berry_blender/outer.4bpp.lz");
-const u16 gUnknown_08D927EC[] = INCBIN_U16("graphics/berry_blender/outer_map.bin.lz");
+const u32 gUnknown_08D91DB8[] = INCBIN_U32("graphics/berry_blender/outer.4bpp.lz");
+const u32 gUnknown_08D927EC[] = INCBIN_U32("graphics/berry_blender/outer_map.bin.lz");
-const u8 gBattleAnimBackgroundPalette_16[] = INCBIN_U8("graphics/battle_anims/backgrounds/16.gbapal.lz");
-const u8 gBattleAnimBackgroundImage_16[] = INCBIN_U8("graphics/battle_anims/backgrounds/16.4bpp.lz");
-const u16 gBattleAnimBackgroundTilemap_16[] = INCBIN_U16("graphics/battle_anims/backgrounds/16.bin.lz");
+const u32 gBattleAnimBackgroundPalette_16[] = INCBIN_U32("graphics/battle_anims/backgrounds/16.gbapal.lz");
+const u32 gBattleAnimBackgroundImage_16[] = INCBIN_U32("graphics/battle_anims/backgrounds/16.4bpp.lz");
+const u32 gBattleAnimBackgroundTilemap_16[] = INCBIN_U32("graphics/battle_anims/backgrounds/16.bin.lz");
-const u8 gBattleAnimSpritePalette_277[] = INCBIN_U8("graphics/battle_anims/sprites/277.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_277[] = INCBIN_U8("graphics/battle_anims/sprites/277.4bpp.lz");
+const u32 gBattleAnimSpritePalette_277[] = INCBIN_U32("graphics/battle_anims/sprites/277.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_277[] = INCBIN_U32("graphics/battle_anims/sprites/277.4bpp.lz");
-const u16 gBattleAnimFogTilemap[] = INCBIN_U16("graphics/battle_anims/backgrounds/fog.bin.lz");
+const u32 gBattleAnimFogTilemap[] = INCBIN_U32("graphics/battle_anims/backgrounds/fog.bin.lz");
-const u8 gBattleAnimSpritePalette_283[] = INCBIN_U8("graphics/battle_anims/sprites/283.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_283[] = INCBIN_U8("graphics/battle_anims/sprites/283.4bpp.lz");
+const u32 gBattleAnimSpritePalette_283[] = INCBIN_U32("graphics/battle_anims/sprites/283.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_283[] = INCBIN_U32("graphics/battle_anims/sprites/283.4bpp.lz");
-const u16 gBattleAnimBackgroundTilemap_ScaryFacePlayer[] = INCBIN_U16("graphics/battle_anims/backgrounds/scary_face_player.bin.lz");
-const u16 gBattleAnimBackgroundTilemap_ScaryFaceOpponent[] = INCBIN_U16("graphics/battle_anims/backgrounds/scary_face_opponent.bin.lz");
-const u16 gBattleAnimBackgroundTilemap_ScaryFaceContest[] = INCBIN_U16("graphics/battle_anims/backgrounds/scary_face_contest.bin.lz");
+const u32 gBattleAnimBackgroundTilemap_ScaryFacePlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face_player.bin.lz");
+const u32 gBattleAnimBackgroundTilemap_ScaryFaceOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face_opponent.bin.lz");
+const u32 gBattleAnimBackgroundTilemap_ScaryFaceContest[] = INCBIN_U32("graphics/battle_anims/backgrounds/scary_face_contest.bin.lz");
-const u8 gBattleAnimSpriteSheet_263[] = INCBIN_U8("graphics/battle_anims/sprites/263.4bpp.lz");
-const u8 gBattleAnimSpritePalette_263[] = INCBIN_U8("graphics/battle_anims/sprites/263.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_263[] = INCBIN_U32("graphics/battle_anims/sprites/263.4bpp.lz");
+const u32 gBattleAnimSpritePalette_263[] = INCBIN_U32("graphics/battle_anims/sprites/263.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_266[] = INCBIN_U8("graphics/battle_anims/sprites/266.4bpp.lz");
-const u8 gBattleAnimSpritePalette_266[] = INCBIN_U8("graphics/battle_anims/sprites/266.gbapal.lz");
-const u8 gBattleAnimSpritePalette_267[] = INCBIN_U8("graphics/battle_anims/sprites/267.gbapal.lz");
-const u8 gBattleAnimSpritePalette_268[] = INCBIN_U8("graphics/battle_anims/sprites/268.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_266[] = INCBIN_U32("graphics/battle_anims/sprites/266.4bpp.lz");
+const u32 gBattleAnimSpritePalette_266[] = INCBIN_U32("graphics/battle_anims/sprites/266.gbapal.lz");
+const u32 gBattleAnimSpritePalette_267[] = INCBIN_U32("graphics/battle_anims/sprites/267.gbapal.lz");
+const u32 gBattleAnimSpritePalette_268[] = INCBIN_U32("graphics/battle_anims/sprites/268.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_278[] = INCBIN_U8("graphics/battle_anims/sprites/278.4bpp.lz");
-const u8 gBattleAnimSpritePalette_278[] = INCBIN_U8("graphics/battle_anims/sprites/278.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_278[] = INCBIN_U32("graphics/battle_anims/sprites/278.4bpp.lz");
+const u32 gBattleAnimSpritePalette_278[] = INCBIN_U32("graphics/battle_anims/sprites/278.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_279[] = INCBIN_U8("graphics/battle_anims/sprites/279.4bpp.lz");
-const u8 gBattleAnimSpritePalette_279[] = INCBIN_U8("graphics/battle_anims/sprites/279.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_279[] = INCBIN_U32("graphics/battle_anims/sprites/279.4bpp.lz");
+const u32 gBattleAnimSpritePalette_279[] = INCBIN_U32("graphics/battle_anims/sprites/279.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_281[] = INCBIN_U8("graphics/battle_anims/sprites/281.4bpp.lz");
-const u8 gBattleAnimSpritePalette_281[] = INCBIN_U8("graphics/battle_anims/sprites/281.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_281[] = INCBIN_U32("graphics/battle_anims/sprites/281.4bpp.lz");
+const u32 gBattleAnimSpritePalette_281[] = INCBIN_U32("graphics/battle_anims/sprites/281.gbapal.lz");
-const u8 gBattleAnimBackgroundImage_21[] = INCBIN_U8("graphics/battle_anims/backgrounds/21.4bpp.lz");
-const u8 gBattleAnimBackgroundPalette_21[] = INCBIN_U8("graphics/battle_anims/backgrounds/21.gbapal.lz");
-const u16 gBattleAnimBackgroundTilemap_21[] = INCBIN_U16("graphics/battle_anims/backgrounds/21.bin.lz");
+const u32 gBattleAnimBackgroundImage_21[] = INCBIN_U32("graphics/battle_anims/backgrounds/21.4bpp.lz");
+const u32 gBattleAnimBackgroundPalette_21[] = INCBIN_U32("graphics/battle_anims/backgrounds/21.gbapal.lz");
+const u32 gBattleAnimBackgroundTilemap_21[] = INCBIN_U32("graphics/battle_anims/backgrounds/21.bin.lz");
-const u8 gBattleAnimSpriteSheet_284[] = INCBIN_U8("graphics/battle_anims/sprites/284.4bpp.lz");
-const u8 gBattleAnimSpritePalette_284[] = INCBIN_U8("graphics/battle_anims/sprites/284.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_284[] = INCBIN_U32("graphics/battle_anims/sprites/284.4bpp.lz");
+const u32 gBattleAnimSpritePalette_284[] = INCBIN_U32("graphics/battle_anims/sprites/284.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_285[] = INCBIN_U8("graphics/battle_anims/sprites/285.4bpp.lz");
-const u8 gBattleAnimSpritePalette_285[] = INCBIN_U8("graphics/battle_anims/sprites/285.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_285[] = INCBIN_U32("graphics/battle_anims/sprites/285.4bpp.lz");
+const u32 gBattleAnimSpritePalette_285[] = INCBIN_U32("graphics/battle_anims/sprites/285.gbapal.lz");
-const u8 gBattleAnimBackgroundImage_Surf[] = INCBIN_U8("graphics/battle_anims/backgrounds/water.4bpp.lz");
-const u8 gBattleAnimBackgroundPalette_Surf[] = INCBIN_U8("graphics/battle_anims/backgrounds/water.gbapal.lz");
+const u32 gBattleAnimBackgroundImage_Surf[] = INCBIN_U32("graphics/battle_anims/backgrounds/water.4bpp.lz");
+const u32 gBattleAnimBackgroundPalette_Surf[] = INCBIN_U32("graphics/battle_anims/backgrounds/water.gbapal.lz");
-const u16 gUnknown_08D95E00[] = INCBIN_U16("graphics/unknown/unknown_D95E00.bin.lz");
+const u32 gUnknown_08D95E00[] = INCBIN_U32("graphics/unknown/unknown_D95E00.bin.lz");
-const u16 gUnknown_08D960D0[] = INCBIN_U16("graphics/unknown/unknown_D960D0.bin.lz");
+const u32 gUnknown_08D960D0[] = INCBIN_U32("graphics/unknown/unknown_D960D0.bin.lz");
-const u16 gUnknown_08D963A4[] = INCBIN_U16("graphics/unknown/unknown_D963A4.bin.lz");
+const u32 gUnknown_08D963A4[] = INCBIN_U32("graphics/unknown/unknown_D963A4.bin.lz");
-const u8 gBattleAnimSpritePalette_286[] = INCBIN_U8("graphics/battle_anims/sprites/286.gbapal.lz");
+const u32 gBattleAnimSpritePalette_286[] = INCBIN_U32("graphics/battle_anims/sprites/286.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_188[] = INCBIN_U8("graphics/battle_anims/sprites/188.4bpp.lz");
-const u8 gBattleAnimSpritePalette_188[] = INCBIN_U8("graphics/battle_anims/sprites/188.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_188[] = INCBIN_U32("graphics/battle_anims/sprites/188.4bpp.lz");
+const u32 gBattleAnimSpritePalette_188[] = INCBIN_U32("graphics/battle_anims/sprites/188.gbapal.lz");
-const u8 gPartyMenuMisc_Gfx[] = INCBIN_U8("graphics/interface/party_menu_misc.4bpp.lz");
-const u8 gPartyMenuMisc_Pal[] = INCBIN_U8("graphics/interface/party_menu_misc.gbapal.lz");
-const u16 gPartyMenuMisc_Tilemap[] = INCBIN_U16("graphics/interface/party_menu_misc.bin.lz");
+const u32 gPartyMenuMisc_Gfx[] = INCBIN_U32("graphics/interface/party_menu_misc.4bpp.lz");
+const u32 gPartyMenuMisc_Pal[] = INCBIN_U32("graphics/interface/party_menu_misc.gbapal.lz");
+const u32 gPartyMenuMisc_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_misc.bin.lz");
-const u8 gPartyMenuPokeball_Gfx[] = INCBIN_U8("graphics/interface/party_menu_pokeball.4bpp.lz");
-const u8 gPartyMenuPokeballSmall_Gfx[] = INCBIN_U8("graphics/interface/party_menu_pokeball_small.4bpp.lz"); //unused
-const u8 gPartyMenuPokeball_Pal[] = INCBIN_U8("graphics/interface/party_menu_pokeball.gbapal.lz");
+const u32 gPartyMenuPokeball_Gfx[] = INCBIN_U32("graphics/interface/party_menu_pokeball.4bpp.lz");
+const u32 gPartyMenuPokeballSmall_Gfx[] = INCBIN_U32("graphics/interface/party_menu_pokeball_small.4bpp.lz"); //unused
+const u32 gPartyMenuPokeball_Pal[] = INCBIN_U32("graphics/interface/party_menu_pokeball.gbapal.lz");
-const u8 gStatusGfx_Icons[] = INCBIN_U8("graphics/interface/status_icons.4bpp.lz");
-const u8 gStatusPal_Icons[] = INCBIN_U8("graphics/interface/status_icons.gbapal.lz");
+const u32 gStatusGfx_Icons[] = INCBIN_U32("graphics/interface/status_icons.4bpp.lz");
+const u32 gStatusPal_Icons[] = INCBIN_U32("graphics/interface/status_icons.gbapal.lz");
-const u8 gMoveTypes_Gfx[] = INCBIN_U8("graphics/types/move_types.4bpp.lz");
-const u8 gMoveTypes_Pal[] = INCBIN_U8("graphics/types/move_types.gbapal.lz");
+const u32 gMoveTypes_Gfx[] = INCBIN_U32("graphics/types/move_types.4bpp.lz");
+const u32 gMoveTypes_Pal[] = INCBIN_U32("graphics/types/move_types.gbapal.lz");
-const u8 gUnknown_08D97BEC[] = INCBIN_U8("graphics/interface/summary_frames.4bpp.lz");
-const u8 gUnknown_08D97CF4[] = INCBIN_U8("graphics/interface/summary_frames.gbapal.lz");
+const u32 gUnknown_08D97BEC[] = INCBIN_U32("graphics/interface/summary_frames.4bpp.lz");
+const u32 gUnknown_08D97CF4[] = INCBIN_U32("graphics/interface/summary_frames.gbapal.lz");
-const u8 gUnknown_08D97D0C[] = INCBIN_U8("graphics/interface/status_screen.4bpp.lz");
-const u8 gUnknown_08D9853C[] = INCBIN_U8("graphics/interface/status_screen.gbapal.lz");
-const u16 gUnknown_08D9862C[] = INCBIN_U16("graphics/interface/status_screen.bin.lz");
+const u32 gUnknown_08D97D0C[] = INCBIN_U32("graphics/interface/status_screen.4bpp.lz");
+const u32 gUnknown_08D9853C[] = INCBIN_U32("graphics/interface/status_screen.gbapal.lz");
+const u32 gUnknown_08D9862C[] = INCBIN_U32("graphics/interface/status_screen.bin.lz");
-const u16 gUnknown_08D987FC[] = INCBIN_U16("graphics/interface/status_tilemap1.bin.lz");
-const u16 gUnknown_08D9898C[] = INCBIN_U16("graphics/interface/status_tilemap2.bin.lz");
-const u16 gUnknown_08D98B28[] = INCBIN_U16("graphics/interface/status_tilemap3.bin.lz");
-const u16 gUnknown_08D98CC8[] = INCBIN_U16("graphics/interface/status_tilemap0.bin.lz");
+const u32 gUnknown_08D987FC[] = INCBIN_U32("graphics/interface/status_tilemap1.bin.lz");
+const u32 gUnknown_08D9898C[] = INCBIN_U32("graphics/interface/status_tilemap2.bin.lz");
+const u32 gUnknown_08D98B28[] = INCBIN_U32("graphics/interface/status_tilemap3.bin.lz");
+const u32 gUnknown_08D98CC8[] = INCBIN_U32("graphics/interface/status_tilemap0.bin.lz");
-const u8 gBagMaleTiles[] = INCBIN_U8("graphics/misc/bag_male.4bpp.lz");
-const u8 gBagFemaleTiles[] = INCBIN_U8("graphics/misc/bag_female.4bpp.lz");
-const u8 gBagPalette[] = INCBIN_U8("graphics/misc/bag.gbapal.lz");
+const u32 gBagMaleTiles[] = INCBIN_U32("graphics/misc/bag_male.4bpp.lz");
+const u32 gBagFemaleTiles[] = INCBIN_U32("graphics/misc/bag_female.4bpp.lz");
+const u32 gBagPalette[] = INCBIN_U32("graphics/misc/bag.gbapal.lz");
-const u8 gBagScreenMale_Pal[] = INCBIN_U8("graphics/interface/bag_screen_male.gbapal.lz");
-const u8 gBagScreenFemale_Pal[] = INCBIN_U8("graphics/interface/bag_screen_female.gbapal.lz");
+const u32 gBagScreenMale_Pal[] = INCBIN_U32("graphics/interface/bag_screen_male.gbapal.lz");
+const u32 gBagScreenFemale_Pal[] = INCBIN_U32("graphics/interface/bag_screen_female.gbapal.lz");
-const u8 gBagScreen_Gfx[] = INCBIN_U8("graphics/interface/bag_screen.4bpp.lz");
+const u32 gBagScreen_Gfx[] = INCBIN_U32("graphics/interface/bag_screen.4bpp.lz");
-const u16 gUnknown_08D9A88C[] = INCBIN_U16("graphics/unknown/unknown_D9A88C.bin.lz");
+const u32 gUnknown_08D9A88C[] = INCBIN_U32("graphics/unknown/unknown_D9A88C.bin.lz");
-const u8 gBattleFrontierGfx_PyramidBag[] = INCBIN_U8("graphics/interface/bag_pyramid.4bpp.lz");
-const u16 gUnknown_08D9ADD0[] = INCBIN_U16("graphics/interface/bag_pyramid.gbapal.lz"); // female palette is first and male is second.
+const u32 gBattleFrontierGfx_PyramidBag[] = INCBIN_U32("graphics/interface/bag_pyramid.4bpp.lz");
+const u32 gUnknown_08D9ADD0[] = INCBIN_U32("graphics/interface/bag_pyramid.gbapal.lz"); // female palette is first and male is second.
-const u16 gUnknown_08D9AE04[] = INCBIN_U16("graphics/unknown/unknown_D9AE04.bin.lz");
+const u32 gUnknown_08D9AE04[] = INCBIN_U32("graphics/unknown/unknown_D9AE04.bin.lz");
-const u8 gUnknown_08D9AF44[] = INCBIN_U8("graphics/unknown/unknown_D9AF44.gbapal.lz");
+const u32 gUnknown_08D9AF44[] = INCBIN_U32("graphics/unknown/unknown_D9AF44.gbapal.lz");
-const u8 gBagSwapLineGfx[] = INCBIN_U8("graphics/interface/bag_swap.4bpp.lz");
-const u8 gBagSwapLinePal[] = INCBIN_U8("graphics/interface/bag_swap.gbapal.lz");
+const u32 gBagSwapLineGfx[] = INCBIN_U32("graphics/interface/bag_swap.4bpp.lz");
+const u32 gBagSwapLinePal[] = INCBIN_U32("graphics/interface/bag_swap.gbapal.lz");
-const u8 gBuyMenuFrame_Gfx[] = INCBIN_U8("graphics/interface/mart_frame.4bpp.lz");
-const u8 gMenuMoneyPal[] = INCBIN_U8("graphics/interface/mart_frame.gbapal.lz");
-const u16 gBuyMenuFrame_Tilemap[] = INCBIN_U16("graphics/interface/mart_frame.bin.lz");
+const u32 gBuyMenuFrame_Gfx[] = INCBIN_U32("graphics/interface/mart_frame.4bpp.lz");
+const u32 gMenuMoneyPal[] = INCBIN_U32("graphics/interface/mart_frame.gbapal.lz");
+const u32 gBuyMenuFrame_Tilemap[] = INCBIN_U32("graphics/interface/mart_frame.bin.lz");
-const u8 gMenuMoneyGfx[] = INCBIN_U8("graphics/interface/money.4bpp.lz");
+const u32 gMenuMoneyGfx[] = INCBIN_U32("graphics/interface/money.4bpp.lz");
// Pokeblock
-const u8 gMenuPokeblock_Gfx[] = INCBIN_U8("graphics/interface/pokeblock_case_frame.4bpp.lz");
-const u8 gMenuPokeblock_Pal[] = INCBIN_U8("graphics/interface/pokeblock_case_frame.gbapal.lz");
-
-const u8 gMenuPokeblockDevice_Gfx[] = INCBIN_U8("graphics/interface/pokeblock_device.4bpp.lz");
-const u8 gMenuPokeblockDevice_Pal[] = INCBIN_U8("graphics/interface/pokeblock_device.gbapal.lz");
-
-const u16 gMenuPokeblock_Tilemap[] = INCBIN_U16("graphics/interface/pokeblock.bin.lz");
-const u8 gPokeblock_Gfx[] = INCBIN_U8("graphics/pokeblock/pokeblock.4bpp.lz");
-const u8 gPokeblockRed_Pal[] = INCBIN_U8("graphics/pokeblock/red.gbapal.lz");
-const u8 gPokeblockBlue_Pal[] = INCBIN_U8("graphics/pokeblock/blue.gbapal.lz");
-const u8 gPokeblockPink_Pal[] = INCBIN_U8("graphics/pokeblock/pink.gbapal.lz");
-const u8 gPokeblockGreen_Pal[] = INCBIN_U8("graphics/pokeblock/green.gbapal.lz");
-const u8 gPokeblockYellow_Pal[] = INCBIN_U8("graphics/pokeblock/yellow.gbapal.lz");
-const u8 gPokeblockPurple_Pal[] = INCBIN_U8("graphics/pokeblock/purple.gbapal.lz");
-const u8 gPokeblockIndigo_Pal[] = INCBIN_U8("graphics/pokeblock/indigo.gbapal.lz");
-const u8 gPokeblockBrown_Pal[] = INCBIN_U8("graphics/pokeblock/brown.gbapal.lz");
-const u8 gPokeblockLiteBlue_Pal[] = INCBIN_U8("graphics/pokeblock/liteblue.gbapal.lz");
-const u8 gPokeblockOlive_Pal[] = INCBIN_U8("graphics/pokeblock/olive.gbapal.lz");
-const u8 gPokeblockGray_Pal[] = INCBIN_U8("graphics/pokeblock/gray.gbapal.lz");
-const u8 gPokeblockBlack_Pal[] = INCBIN_U8("graphics/pokeblock/black.gbapal.lz");
-const u8 gPokeblockWhite_Pal[] = INCBIN_U8("graphics/pokeblock/white.gbapal.lz");
-const u8 gPokeblockGold_Pal[] = INCBIN_U8("graphics/pokeblock/gold.gbapal.lz");
-
-const u16 gUnknown_08D9BA44[] = INCBIN_U16("graphics/interface/pokeblock_feeding_bg_map.bin.lz");
+const u32 gMenuPokeblock_Gfx[] = INCBIN_U32("graphics/interface/pokeblock_case_frame.4bpp.lz");
+const u32 gMenuPokeblock_Pal[] = INCBIN_U32("graphics/interface/pokeblock_case_frame.gbapal.lz");
+
+const u32 gMenuPokeblockDevice_Gfx[] = INCBIN_U32("graphics/interface/pokeblock_device.4bpp.lz");
+const u32 gMenuPokeblockDevice_Pal[] = INCBIN_U32("graphics/interface/pokeblock_device.gbapal.lz");
+
+const u32 gMenuPokeblock_Tilemap[] = INCBIN_U32("graphics/interface/pokeblock.bin.lz");
+const u32 gPokeblock_Gfx[] = INCBIN_U32("graphics/pokeblock/pokeblock.4bpp.lz");
+const u32 gPokeblockRed_Pal[] = INCBIN_U32("graphics/pokeblock/red.gbapal.lz");
+const u32 gPokeblockBlue_Pal[] = INCBIN_U32("graphics/pokeblock/blue.gbapal.lz");
+const u32 gPokeblockPink_Pal[] = INCBIN_U32("graphics/pokeblock/pink.gbapal.lz");
+const u32 gPokeblockGreen_Pal[] = INCBIN_U32("graphics/pokeblock/green.gbapal.lz");
+const u32 gPokeblockYellow_Pal[] = INCBIN_U32("graphics/pokeblock/yellow.gbapal.lz");
+const u32 gPokeblockPurple_Pal[] = INCBIN_U32("graphics/pokeblock/purple.gbapal.lz");
+const u32 gPokeblockIndigo_Pal[] = INCBIN_U32("graphics/pokeblock/indigo.gbapal.lz");
+const u32 gPokeblockBrown_Pal[] = INCBIN_U32("graphics/pokeblock/brown.gbapal.lz");
+const u32 gPokeblockLiteBlue_Pal[] = INCBIN_U32("graphics/pokeblock/liteblue.gbapal.lz");
+const u32 gPokeblockOlive_Pal[] = INCBIN_U32("graphics/pokeblock/olive.gbapal.lz");
+const u32 gPokeblockGray_Pal[] = INCBIN_U32("graphics/pokeblock/gray.gbapal.lz");
+const u32 gPokeblockBlack_Pal[] = INCBIN_U32("graphics/pokeblock/black.gbapal.lz");
+const u32 gPokeblockWhite_Pal[] = INCBIN_U32("graphics/pokeblock/white.gbapal.lz");
+const u32 gPokeblockGold_Pal[] = INCBIN_U32("graphics/pokeblock/gold.gbapal.lz");
+
+const u32 gUnknown_08D9BA44[] = INCBIN_U32("graphics/interface/pokeblock_feeding_bg_map.bin.lz");
#include "data/graphics/berries.h"
#include "data/graphics/rayquaza_scene.h"
#include "data/graphics/items.h"
#include "data/graphics/decorations.h"
-const u8 gBattleAnimSpritePalette_282[] = INCBIN_U8("graphics/battle_anims/sprites/282.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_282[] = INCBIN_U8("graphics/battle_anims/sprites/282.4bpp.lz");
+const u32 gBattleAnimSpritePalette_282[] = INCBIN_U32("graphics/battle_anims/sprites/282.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_282[] = INCBIN_U32("graphics/battle_anims/sprites/282.4bpp.lz");
-const u8 gBattleAnimSpritePalette_270[] = INCBIN_U8("graphics/battle_anims/sprites/270.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_270[] = INCBIN_U8("graphics/battle_anims/sprites/270.4bpp.lz");
+const u32 gBattleAnimSpritePalette_270[] = INCBIN_U32("graphics/battle_anims/sprites/270.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_270[] = INCBIN_U32("graphics/battle_anims/sprites/270.4bpp.lz");
-const u8 gBattleAnimSpritePalette_271[] = INCBIN_U8("graphics/battle_anims/sprites/271.gbapal.lz");
-const u8 gBattleAnimSpriteSheet_271[] = INCBIN_U8("graphics/battle_anims/sprites/271.4bpp.lz");
+const u32 gBattleAnimSpritePalette_271[] = INCBIN_U32("graphics/battle_anims/sprites/271.gbapal.lz");
+const u32 gBattleAnimSpriteSheet_271[] = INCBIN_U32("graphics/battle_anims/sprites/271.4bpp.lz");
const u16 gUnknown_08DBA518[] = INCBIN_U16("graphics/misc/cable_car_bg.gbapal");
const u16 gCableCar_Pal[] = INCBIN_U16("graphics/misc/cable_car.gbapal");
-const u8 gUnknown_08DBA5B8[] = INCBIN_U8("graphics/misc/cable_car_bg.4bpp.lz");
-const u8 gCableCar_Gfx[] = INCBIN_U8("graphics/misc/cable_car.4bpp.lz");
-const u8 gCableCarDoor_Gfx[] = INCBIN_U8("graphics/misc/cable_car_door.4bpp.lz");
-const u8 gCableCarCord_Gfx[] = INCBIN_U8("graphics/misc/cable_car_cord.4bpp.lz");
+const u32 gUnknown_08DBA5B8[] = INCBIN_U32("graphics/misc/cable_car_bg.4bpp.lz");
+const u32 gCableCar_Gfx[] = INCBIN_U32("graphics/misc/cable_car.4bpp.lz");
+const u32 gCableCarDoor_Gfx[] = INCBIN_U32("graphics/misc/cable_car_door.4bpp.lz");
+const u32 gCableCarCord_Gfx[] = INCBIN_U32("graphics/misc/cable_car_cord.4bpp.lz");
-const u8 gRouletteMenuTiles[] = INCBIN_U8("graphics/roulette/window.4bpp.lz");
-const u16 gRouletteWheelTiles[] = INCBIN_U16("graphics/roulette/wheel.8bpp.lz");
-const u8 gRouletteCenter_Gfx[] = INCBIN_U8("graphics/roulette/center.4bpp.lz");
-const u8 gRouletteHeadersTiles[] = INCBIN_U8("graphics/roulette/headers.4bpp.lz");
-const u8 gRouletteCreditTiles[] = INCBIN_U8("graphics/roulette/credit.4bpp.lz");
-const u8 gRouletteNumbersTiles[] = INCBIN_U8("graphics/roulette/numbers.4bpp.lz");
-const u8 gRouletteMultiplierTiles[] = INCBIN_U8("graphics/roulette/multiplier.4bpp.lz");
+const u32 gRouletteMenuTiles[] = INCBIN_U32("graphics/roulette/window.4bpp.lz");
+const u32 gRouletteWheelTiles[] = INCBIN_U32("graphics/roulette/wheel.8bpp.lz");
+const u32 gRouletteCenter_Gfx[] = INCBIN_U32("graphics/roulette/center.4bpp.lz");
+const u32 gRouletteHeadersTiles[] = INCBIN_U32("graphics/roulette/headers.4bpp.lz");
+const u32 gRouletteCreditTiles[] = INCBIN_U32("graphics/roulette/credit.4bpp.lz");
+const u32 gRouletteNumbersTiles[] = INCBIN_U32("graphics/roulette/numbers.4bpp.lz");
+const u32 gRouletteMultiplierTiles[] = INCBIN_U32("graphics/roulette/multiplier.4bpp.lz");
#include "data/graphics/mail.h"
@@ -1258,7 +1258,7 @@ const u8 gFrontierFactorySelectMenu_Gfx2[] = INCBIN_U8("graphics/battle_frontier
const u16 gFrontierFactorySelectMenu_Tilemap[] = INCBIN_U16("graphics/battle_frontier/factory_menu.bin");
-const u8 gFrontierPassMedals_Gfx[] = INCBIN_U8("graphics/frontier_pass/medals.4bpp.lz");
+const u32 gFrontierPassMedals_Gfx[] = INCBIN_U32("graphics/frontier_pass/medals.4bpp.lz");
const u16 gFrontierPassCursor_Pal[] = INCBIN_U16("graphics/frontier_pass/cursor.gbapal");
@@ -1274,25 +1274,25 @@ const u16 gPokedexCaughtScreenFade_Pal[] = INCBIN_U16("graphics/pokedex/fade.gba
const u16 gPokedexHoennBg_Pal[] = INCBIN_U16("graphics/pokedex/hoenn_bg.gbapal");
const u16 gPokedexNationalBg_Pal[] = INCBIN_U16("graphics/pokedex/national_bg.gbapal");
-const u8 gPokedexMenu_Gfx[] = INCBIN_U8("graphics/pokedex/menu.4bpp.lz");
-const u8 gPokedexMenu2_Gfx[] = INCBIN_U8("graphics/pokedex/menu2.4bpp.lz");
+const u32 gPokedexMenu_Gfx[] = INCBIN_U32("graphics/pokedex/menu.4bpp.lz");
+const u32 gPokedexMenu2_Gfx[] = INCBIN_U32("graphics/pokedex/menu2.4bpp.lz");
-const u8 gUnused_PokedexNoBall[] = INCBIN_U8("graphics/pokedex/noball_unused.4bpp.lz");
+const u32 gUnused_PokedexNoBall[] = INCBIN_U32("graphics/pokedex/noball_unused.4bpp.lz");
-const u16 gUnknown_08DC2A08[] = INCBIN_U16("graphics/pokedex/tilemap1.bin.lz");
-const u16 gUnknown_08DC2B1C[] = INCBIN_U16("graphics/pokedex/tilemap2.bin.lz");
-const u16 gUnknown_08DC2C5C[] = INCBIN_U16("graphics/pokedex/tilemap3.bin.lz");
-const u16 gUnknown_08DC2DAC[] = INCBIN_U16("graphics/pokedex/tilemap4.bin.lz");
-const u16 gUnknown_08DC2E6C[] = INCBIN_U16("graphics/pokedex/tilemap5.bin.lz");
-const u16 gUnknown_08DC2F5C[] = INCBIN_U16("graphics/pokedex/tilemap6.bin.lz");
-const u16 gUnknown_08DC2FEC[] = INCBIN_U16("graphics/pokedex/tilemap7.bin.lz");
-const u16 gUnknown_08DC3080[] = INCBIN_U16("graphics/pokedex/tilemap8.bin.lz");
-const u16 gUnknown_08DC3198[] = INCBIN_U16("graphics/pokedex/tilemap9.bin.lz");
+const u32 gPokedexTilemap_StartMenu1[] = INCBIN_U32("graphics/pokedex/tilemap1.bin.lz");
+const u32 gPokedexTilemap_StartMenu2[] = INCBIN_U32("graphics/pokedex/tilemap2.bin.lz");
+const u32 gPokedexTilemap_Main[] = INCBIN_U32("graphics/pokedex/tilemap3.bin.lz");
+const u32 gPokedexTilemap_MainUnderlay[] = INCBIN_U32("graphics/pokedex/tilemap4.bin.lz");
+const u32 gPokedexTilemap_SizeScreen[] = INCBIN_U32("graphics/pokedex/tilemap5.bin.lz");
+const u32 gPokedexTilemap_ScreenSelectBar1[] = INCBIN_U32("graphics/pokedex/tilemap6.bin.lz");
+const u32 gPokedexTilemap_ScreenSelectBar2[] = INCBIN_U32("graphics/pokedex/tilemap7.bin.lz");
+const u32 gPokedexTilemap_DescriptionScreen[] = INCBIN_U32("graphics/pokedex/tilemap8.bin.lz");
+const u32 gPokedexTilemap_CryScreen[] = INCBIN_U32("graphics/pokedex/tilemap9.bin.lz");
const u16 gPokedexSearchMenu_Pal[] = INCBIN_U16("graphics/pokedex/search_menu.gbapal");
-const u8 gPokedexSearchMenu_Gfx[] = INCBIN_U8("graphics/pokedex/search_menu.4bpp.lz");
-const u16 gPokedexSearch1_Tilemap[] = INCBIN_U16("graphics/pokedex/search1.bin.lz");
-const u16 gPokedexSearch2_Tilemap[] = INCBIN_U16("graphics/pokedex/search2.bin.lz");
+const u32 gPokedexSearchMenu_Gfx[] = INCBIN_U32("graphics/pokedex/search_menu.4bpp.lz");
+const u32 gPokedexSearch1_Tilemap[] = INCBIN_U32("graphics/pokedex/search1.bin.lz");
+const u32 gPokedexSearch2_Tilemap[] = INCBIN_U32("graphics/pokedex/search2.bin.lz");
const u16 gSummaryScreenPowAcc_Tilemap[] = INCBIN_U16("graphics/interface/powacc_tilemap.bin");
@@ -1301,11 +1301,11 @@ const u16 gUnknown_08DC3C34[] = INCBIN_U16("graphics/interface/unk_tilemap.bin")
const u16 gSummaryScreenWindow_Tilemap[] = INCBIN_U16("graphics/interface/summary.bin");
const u16 gIntroCopyright_Pal[] = INCBIN_U16("graphics/intro/copyright.gbapal");
-const u8 gIntroCopyright_Gfx[] = INCBIN_U8("graphics/intro/copyright.4bpp.lz");
-const u16 gIntroCopyright_Tilemap[] = INCBIN_U16("graphics/intro/copyright.bin.lz");
+const u32 gIntroCopyright_Gfx[] = INCBIN_U32("graphics/intro/copyright.4bpp.lz");
+const u32 gIntroCopyright_Tilemap[] = INCBIN_U32("graphics/intro/copyright.bin.lz");
const u16 gPokedexAreaScreenAreaUnknown_Pal[] = INCBIN_U16("graphics/pokedex/area_unknown.gbapal");
-const u8 gPokedexAreaScreenAreaUnknown_Gfx[] = INCBIN_U8("graphics/pokedex/area_unknown.4bpp.lz");
+const u32 gPokedexAreaScreenAreaUnknown_Gfx[] = INCBIN_U32("graphics/pokedex/area_unknown.4bpp.lz");
// seems to be fire red leftovers, but the menu elements is reused in the item menu for TM descriptions.
@@ -1334,37 +1334,37 @@ const u16 gUnknown_08DC6510[] = INCBIN_U16("graphics/contest/clink_tilemap11.bin
const u16 gPokenavCondition_Pal[] = INCBIN_U16("graphics/pokenav/condition.gbapal");
-const u8 gPokenavCondition_Gfx[] = INCBIN_U8("graphics/pokenav/condition.4bpp.lz");
-const u16 gPokenavCondition_Tilemap[] = INCBIN_U16("graphics/pokenav/condition.bin.lz");
+const u32 gPokenavCondition_Gfx[] = INCBIN_U32("graphics/pokenav/condition.4bpp.lz");
+const u32 gPokenavCondition_Tilemap[] = INCBIN_U32("graphics/pokenav/condition.bin.lz");
const u16 gPokenavOptions_Tilemap[] = INCBIN_U16("graphics/pokenav/options/options.bin");
-const u8 gPokenavOptions_Gfx[] = INCBIN_U8("graphics/pokenav/options/options.4bpp.lz");
+const u32 gPokenavOptions_Gfx[] = INCBIN_U32("graphics/pokenav/options/options.4bpp.lz");
const u16 gPokenavOptions_Pal[] = INCBIN_U16("graphics/pokenav/options/options.gbapal");
const u16 gPokenavHeader_Pal[] = INCBIN_U16("graphics/pokenav/header.gbapal");
-const u8 gPokenavHeader_Gfx[] = INCBIN_U8("graphics/pokenav/header.4bpp.lz"); // TODO: use width 9 and makefile rule for cleanliness, make wasnt behaving, didnt want to apply num_tiles to this
-const u16 gPokenavHeader_Tilemap[] = INCBIN_U16("graphics/pokenav/header.bin.lz");
+const u32 gPokenavHeader_Gfx[] = INCBIN_U32("graphics/pokenav/header.4bpp.lz"); // TODO: use width 9 and makefile rule for cleanliness, make wasnt behaving, didnt want to apply num_tiles to this
+const u32 gPokenavHeader_Tilemap[] = INCBIN_U32("graphics/pokenav/header.bin.lz");
const u16 gPokenavLeftHeader_Pal[] = INCBIN_U16("graphics/pokenav/left_headers/palette.gbapal");
-const u8 gPokenavLeftHeaderBeauty_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/beauty.4bpp.lz");
-const u8 gPokenavLeftHeaderSmart_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/smart.4bpp.lz");
-const u8 gPokenavLeftHeaderCondition_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/condition.4bpp.lz");
-const u8 gPokenavLeftHeaderCute_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/cute.4bpp.lz");
-const u8 gPokenavLeftHeaderMatchCall_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/match_call.4bpp.lz");
-const u8 gPokenavLeftHeaderMainMenu_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/main_menu.4bpp.lz");
-const u8 gPokenavLeftHeaderHoennMap_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/hoenn_map.4bpp.lz");
-const u8 gPokenavLeftHeaderRibbons_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/ribbons.4bpp.lz");
-const u8 gPokenavLeftHeaderSearch_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/search.4bpp.lz");
-const u8 gPokenavLeftHeaderTough_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/tough.4bpp.lz");
-const u8 gPokenavLeftHeaderCool_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/cool.4bpp.lz");
-const u8 gPokenavLeftHeaderParty_Gfx[] = INCBIN_U8("graphics/pokenav/left_headers/party.4bpp.lz");
+const u32 gPokenavLeftHeaderBeauty_Gfx[] = INCBIN_U32("graphics/pokenav/left_headers/beauty.4bpp.lz");
+const u32 gPokenavLeftHeaderSmart_Gfx[] = INCBIN_U32("graphics/pokenav/left_headers/smart.4bpp.lz");
+const u32 gPokenavLeftHeaderCondition_Gfx[] = INCBIN_U32("graphics/pokenav/left_headers/condition.4bpp.lz");
+const u32 gPokenavLeftHeaderCute_Gfx[] = INCBIN_U32("graphics/pokenav/left_headers/cute.4bpp.lz");
+const u32 gPokenavLeftHeaderMatchCall_Gfx[] = INCBIN_U32("graphics/pokenav/left_headers/match_call.4bpp.lz");
+const u32 gPokenavLeftHeaderMainMenu_Gfx[] = INCBIN_U32("graphics/pokenav/left_headers/main_menu.4bpp.lz");
+const u32 gPokenavLeftHeaderHoennMap_Gfx[] = INCBIN_U32("graphics/pokenav/left_headers/hoenn_map.4bpp.lz");
+const u32 gPokenavLeftHeaderRibbons_Gfx[] = INCBIN_U32("graphics/pokenav/left_headers/ribbons.4bpp.lz");
+const u32 gPokenavLeftHeaderSearch_Gfx[] = INCBIN_U32("graphics/pokenav/left_headers/search.4bpp.lz");
+const u32 gPokenavLeftHeaderTough_Gfx[] = INCBIN_U32("graphics/pokenav/left_headers/tough.4bpp.lz");
+const u32 gPokenavLeftHeaderCool_Gfx[] = INCBIN_U32("graphics/pokenav/left_headers/cool.4bpp.lz");
+const u32 gPokenavLeftHeaderParty_Gfx[] = INCBIN_U32("graphics/pokenav/left_headers/party.4bpp.lz");
const u16 gPokenavMessageBox_Pal[] = INCBIN_U16("graphics/pokenav/message.gbapal");
-const u8 gPokenavMessageBox_Gfx[] = INCBIN_U8("graphics/pokenav/message.4bpp.lz");
-const u16 gPokenavMessageBox_Tilemap[] = INCBIN_U16("graphics/pokenav/message.bin.lz");
+const u32 gPokenavMessageBox_Gfx[] = INCBIN_U32("graphics/pokenav/message.4bpp.lz");
+const u32 gPokenavMessageBox_Tilemap[] = INCBIN_U32("graphics/pokenav/message.bin.lz");
const u16 gHoennMapZoomIcons_Pal[] = INCBIN_U16("graphics/pokenav/zoom.gbapal");
-const u8 gHoennMapZoomIcons_Gfx[] = INCBIN_U8("graphics/pokenav/zoom.4bpp.lz");
+const u32 gHoennMapZoomIcons_Gfx[] = INCBIN_U32("graphics/pokenav/zoom.4bpp.lz");
const u16 gPokenavConditionCancel_Pal[] = INCBIN_U16("graphics/pokenav/cancel.gbapal");
const u8 gPokenavConditionCancel_Gfx[] = INCBIN_U8("graphics/pokenav/cancel.4bpp");
@@ -1395,33 +1395,33 @@ const u8 gBerryBlenderArrowTiles[] = INCBIN_U8("graphics/berry_blender/arrow.4bp
asm(".space 0x2C0");
const u16 gEasyChatCursor_Pal[] = INCBIN_U16("graphics/easy_chat/cursor.gbapal");
-const u8 gEasyChatCursor_Gfx[] = INCBIN_U8("graphics/easy_chat/cursor.4bpp.lz");
+const u32 gEasyChatCursor_Gfx[] = INCBIN_U32("graphics/easy_chat/cursor.4bpp.lz");
const u16 gEasyChatRightWindow_Pal[] = INCBIN_U16("graphics/easy_chat/rwindow.gbapal");
-const u8 gEasyChatRightWindow_Gfx[] = INCBIN_U8("graphics/easy_chat/rwindow.4bpp.lz");
+const u32 gEasyChatRightWindow_Gfx[] = INCBIN_U32("graphics/easy_chat/rwindow.4bpp.lz");
-const u8 gEasyChatMode_Gfx[] = INCBIN_U8("graphics/easy_chat/mode.4bpp.lz");
+const u32 gEasyChatMode_Gfx[] = INCBIN_U32("graphics/easy_chat/mode.4bpp.lz");
const u16 gEasyChatMode_Pal[] = INCBIN_U16("graphics/easy_chat/mode.gbapal");
-const u8 gEasyChatWindow_Gfx[] = INCBIN_U8("graphics/easy_chat/window.4bpp.lz"); // uses mode pal
-const u16 gEasyChatWindow_Tilemap[] = INCBIN_U16("graphics/easy_chat/window.bin.lz");
+const u32 gEasyChatWindow_Gfx[] = INCBIN_U32("graphics/easy_chat/window.4bpp.lz"); // uses mode pal
+const u32 gEasyChatWindow_Tilemap[] = INCBIN_U32("graphics/easy_chat/window.bin.lz");
const u16 gWallclockMale_Pal[] = INCBIN_U16("graphics/interface/wallclock_male.gbapal");
const u16 gWallclockFemale_Pal[] = INCBIN_U16("graphics/interface/wallclock_female.gbapal");
-const u8 gWallclock_Gfx[] = INCBIN_U8("graphics/interface/wallclock.4bpp.lz");
-const u16 gUnknown_08DCC648[] = INCBIN_U16("graphics/interface/wallclock1.bin.lz");
-const u16 gUnknown_08DCC908[] = INCBIN_U16("graphics/interface/wallclock2.bin.lz");
+const u32 gWallclock_Gfx[] = INCBIN_U32("graphics/interface/wallclock.4bpp.lz");
+const u32 gUnknown_08DCC648[] = INCBIN_U32("graphics/interface/wallclock1.bin.lz");
+const u32 gUnknown_08DCC908[] = INCBIN_U32("graphics/interface/wallclock2.bin.lz");
const u16 gUsePokeblockCondition_Pal[] = INCBIN_U16("graphics/pokeblock/use_screen/condition.gbapal");
-const u8 gUsePokeblockCondition_Gfx[] = INCBIN_U8("graphics/pokeblock/use_screen/condition.4bpp.lz");
+const u32 gUsePokeblockCondition_Gfx[] = INCBIN_U32("graphics/pokeblock/use_screen/condition.4bpp.lz");
const u16 gUsePokeblockUpDown_Pal[] = INCBIN_U16("graphics/pokeblock/use_screen/updown.gbapal");
const u8 gUsePokeblockUpDown_Gfx[] = INCBIN_U8("graphics/pokeblock/use_screen/updown.4bpp");
const u16 gUsePokeblockGraph_Pal[] = INCBIN_U16("graphics/pokeblock/use_screen/graph.gbapal");
-const u8 gUsePokeblockGraph_Gfx[] = INCBIN_U8("graphics/pokeblock/use_screen/graph.4bpp.lz");
+const u32 gUsePokeblockGraph_Gfx[] = INCBIN_U32("graphics/pokeblock/use_screen/graph.4bpp.lz");
-const u16 gUsePokeblockGraph_Tilemap[] = INCBIN_U16("graphics/pokeblock/use_screen/graph.bin.lz");
+const u32 gUsePokeblockGraph_Tilemap[] = INCBIN_U32("graphics/pokeblock/use_screen/graph.bin.lz");
const u16 gUsePokeblockNatureWin_Pal[] = INCBIN_U16("graphics/pokeblock/use_screen/nature.gbapal");
#include "data/graphics/slot_machine.h"
@@ -1433,31 +1433,31 @@ const u8 gUnknown_08DD1A18[] = INCBIN_U8("graphics/unknown/unknown_DD1A18.4bpp")
// trainer card
const u16 gEmeraldTrainerCard0Star_Pal[] = INCBIN_U16("graphics/trainer_card/0star.gbapal");
-const u8 gEmeraldTrainerCard_Gfx[] = INCBIN_U8("graphics/trainer_card/card.4bpp.lz");
+const u32 gEmeraldTrainerCard_Gfx[] = INCBIN_U32("graphics/trainer_card/card.4bpp.lz");
-const u16 gUnknown_08DD1F78[] = INCBIN_U16("graphics/unknown/unknown_DD1F78.bin.lz");
-const u16 gUnknown_08DD2010[] = INCBIN_U16("graphics/unknown/unknown_DD2010.bin.lz");
-const u16 gUnknown_08DD21B0[] = INCBIN_U16("graphics/unknown/unknown_DD21B0.bin.lz");
-const u16 gUnknown_08DD228C[] = INCBIN_U16("graphics/unknown/unknown_DD228C.bin.lz");
+const u32 gUnknown_08DD1F78[] = INCBIN_U32("graphics/unknown/unknown_DD1F78.bin.lz");
+const u32 gUnknown_08DD2010[] = INCBIN_U32("graphics/unknown/unknown_DD2010.bin.lz");
+const u32 gUnknown_08DD21B0[] = INCBIN_U32("graphics/unknown/unknown_DD21B0.bin.lz");
+const u32 gUnknown_08DD228C[] = INCBIN_U32("graphics/unknown/unknown_DD228C.bin.lz");
const u16 gFireRedTrainerCard0Star_Pal[] = INCBIN_U16("graphics/trainer_card/0star_fr.gbapal");
-const u8 gFireRedTrainerCard_Gfx[] = INCBIN_U8("graphics/trainer_card/card_fr.4bpp.lz");
+const u32 gFireRedTrainerCard_Gfx[] = INCBIN_U32("graphics/trainer_card/card_fr.4bpp.lz");
-const u16 gUnknown_08DD2AE0[] = INCBIN_U16("graphics/unknown/unknown_DD2AE0.bin.lz");
-const u16 gUnknown_08DD2B78[] = INCBIN_U16("graphics/unknown/unknown_DD2B78.bin.lz");
-const u16 gUnknown_08DD2D30[] = INCBIN_U16("graphics/unknown/unknown_DD2D30.bin.lz");
-const u16 gUnknown_08DD2E5C[] = INCBIN_U16("graphics/unknown/unknown_DD2E5C.bin.lz");
+const u32 gUnknown_08DD2AE0[] = INCBIN_U32("graphics/unknown/unknown_DD2AE0.bin.lz");
+const u32 gUnknown_08DD2B78[] = INCBIN_U32("graphics/unknown/unknown_DD2B78.bin.lz");
+const u32 gUnknown_08DD2D30[] = INCBIN_U32("graphics/unknown/unknown_DD2D30.bin.lz");
+const u32 gUnknown_08DD2E5C[] = INCBIN_U32("graphics/unknown/unknown_DD2E5C.bin.lz");
// pokemon storage system
-const u8 gPSSMenu_Gfx[] = INCBIN_U8("graphics/pokemon_storage/menu.4bpp.lz");
+const u32 gPSSMenu_Gfx[] = INCBIN_U32("graphics/pokemon_storage/menu.4bpp.lz");
const u16 gPSSMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/menu.gbapal");
-const u16 gUnknown_08DD36C8[] = INCBIN_U16("graphics/unknown/unknown_DD36C8.bin.lz");
+const u32 gUnknown_08DD36C8[] = INCBIN_U32("graphics/unknown/unknown_DD36C8.bin.lz");
// naming screen
const u16 gNamingScreenMenu_Pal[] = INCBIN_U16("graphics/naming_screen/menu.gbapal");
-const u8 gNamingScreenMenu_Gfx[] = INCBIN_U8("graphics/naming_screen/menu.4bpp.lz");
+const u32 gNamingScreenMenu_Gfx[] = INCBIN_U32("graphics/naming_screen/menu.4bpp.lz");
const u8 gNamingScreenRWindow_Gfx[] = INCBIN_U8("graphics/naming_screen/rwindow.4bpp");
const u8 gNamingScreenROptions_Gfx[] = INCBIN_U8("graphics/naming_screen/roptions.4bpp");
const u8 gNamingScreenCursor_Gfx[] = INCBIN_U8("graphics/naming_screen/cursor.4bpp");
@@ -1466,26 +1466,26 @@ const u8 gNamingScreenKeyboardButton_Gfx[] = INCBIN_U8("graphics/naming_screen/k
const u8 gNamingScreenRightPointingTriangleTiles[] = INCBIN_U8("graphics/naming_screen/right_pointing_triangle.4bpp");
const u8 gNamingScreenUnderscoreTiles[] = INCBIN_U8("graphics/naming_screen/underscore.4bpp");
-const u16 gUnknown_08DD4544[] = INCBIN_U16("graphics/unknown/unknown_DD4544.bin.lz");
-const u16 gUnknown_08DD4620[] = INCBIN_U16("graphics/unknown/unknown_DD4620.bin.lz");
-const u16 gUnknown_08DD46E0[] = INCBIN_U16("graphics/unknown/unknown_DD46E0.bin.lz");
-const u16 gUnknown_08DD47A0[] = INCBIN_U16("graphics/unknown/unknown_DD47A0.bin.lz");
+const u32 gUnknown_08DD4544[] = INCBIN_U32("graphics/unknown/unknown_DD4544.bin.lz");
+const u32 gUnknown_08DD4620[] = INCBIN_U32("graphics/unknown/unknown_DD4620.bin.lz");
+const u32 gUnknown_08DD46E0[] = INCBIN_U32("graphics/unknown/unknown_DD46E0.bin.lz");
+const u32 gUnknown_08DD47A0[] = INCBIN_U32("graphics/unknown/unknown_DD47A0.bin.lz");
// link
const u16 gLinkMiscMenu_Pal[] = INCBIN_U16("graphics/link/misc.gbapal");
-const u8 gLinkMiscMenu_Gfx[] = INCBIN_U8("graphics/link/misc.4bpp.lz");
-const u16 gLinkMiscMenu_Tilemap[] = INCBIN_U16("graphics/link/misc.bin.lz");
+const u32 gLinkMiscMenu_Gfx[] = INCBIN_U32("graphics/link/misc.4bpp.lz");
+const u32 gLinkMiscMenu_Tilemap[] = INCBIN_U32("graphics/link/misc.bin.lz");
const u16 gUnknown_08DD4BB0[] = INCBIN_U16("graphics/link/link1.gbapal");
const u16 gUnknown_08DD4BD0[] = INCBIN_U16("graphics/link/link2.gbapal");
-const u8 gUnknown_08DD4BF0[] = INCBIN_U8("graphics/link/link_winedge.4bpp.lz");
-const u16 gUnknown_08DD4C4C[] = INCBIN_U16("graphics/link/link_winedge.bin.lz");
+const u32 gUnknown_08DD4BF0[] = INCBIN_U32("graphics/link/link_winedge.4bpp.lz");
+const u32 gUnknown_08DD4C4C[] = INCBIN_U32("graphics/link/link_winedge.bin.lz");
-const u8 gUnknown_08DD4CF8[] = INCBIN_U8("graphics/interface/unk_change_case.4bpp.lz");
+const u32 gUnknown_08DD4CF8[] = INCBIN_U32("graphics/interface/unk_change_case.4bpp.lz");
-const u16 gTilesetPalettes_General[][16] =
+const u16 gTilesetPalettes_General[][16] =
{
INCBIN_U16("data/tilesets/primary/general/palettes/00.gbapal"),
INCBIN_U16("data/tilesets/primary/general/palettes/01.gbapal"),
@@ -1505,7 +1505,7 @@ const u16 gTilesetPalettes_General[][16] =
INCBIN_U16("data/tilesets/primary/general/palettes/15.gbapal"),
};
-const u8 gTilesetTiles_General[] = INCBIN_U8("data/tilesets/primary/general/tiles.4bpp.lz");
+const u32 gTilesetTiles_General[] = INCBIN_U32("data/tilesets/primary/general/tiles.4bpp.lz");
// trade/egg hatch
@@ -1537,9 +1537,9 @@ const u16 gUnknown_08DDD704[] = INCBIN_U16("graphics/unknown/unknown_DDD704.bin"
const u16 gMessageBox_Pal[] = INCBIN_U16("graphics/text_window/message_box.gbapal");
const u8 gMessageBox_Gfx[] = INCBIN_U8("graphics/text_window/message_box.4bpp");
-const u8 gWallpaperIcon_Cross[] = INCBIN_U8("graphics/pokemon_storage/cross_icon.4bpp.lz");
-const u8 gWallpaperIcon_Bolt[] = INCBIN_U8("graphics/pokemon_storage/bolt_icon.4bpp.lz");
-const u8 gWallpaperIcon_Plusle[] = INCBIN_U8("graphics/pokemon_storage/plusle_icon.4bpp.lz");
+const u32 gWallpaperIcon_Cross[] = INCBIN_U32("graphics/pokemon_storage/cross_icon.4bpp.lz");
+const u32 gWallpaperIcon_Bolt[] = INCBIN_U32("graphics/pokemon_storage/bolt_icon.4bpp.lz");
+const u32 gWallpaperIcon_Plusle[] = INCBIN_U32("graphics/pokemon_storage/plusle_icon.4bpp.lz");
const u16 gWallpaperPalettes_Horizontal[][16] =
{
@@ -1547,8 +1547,8 @@ const u16 gWallpaperPalettes_Horizontal[][16] =
INCBIN_U16("graphics/pokemon_storage/horizontal_bg.gbapal"),
};
-const u8 gWallpaperTiles_Horizontal[] = INCBIN_U8("graphics/pokemon_storage/horizontal.4bpp.lz");
-const u16 gWallpaperTilemap_Horizontal[] = INCBIN_U16("graphics/pokemon_storage/horizontal.bin.lz");
+const u32 gWallpaperTiles_Horizontal[] = INCBIN_U32("graphics/pokemon_storage/horizontal.4bpp.lz");
+const u32 gWallpaperTilemap_Horizontal[] = INCBIN_U32("graphics/pokemon_storage/horizontal.bin.lz");
const u16 gWallpaperPalettes_Ribbon[][16] =
{
@@ -1556,14 +1556,14 @@ const u16 gWallpaperPalettes_Ribbon[][16] =
INCBIN_U16("graphics/pokemon_storage/ribbon_bg.gbapal"),
};
-const u8 gWallpaperTiles_Ribbon[] = INCBIN_U8("graphics/pokemon_storage/ribbon.4bpp.lz");
-const u16 gWallpaperTilemap_Ribbon[] = INCBIN_U16("graphics/pokemon_storage/ribbon.bin.lz");
+const u32 gWallpaperTiles_Ribbon[] = INCBIN_U32("graphics/pokemon_storage/ribbon.4bpp.lz");
+const u32 gWallpaperTilemap_Ribbon[] = INCBIN_U32("graphics/pokemon_storage/ribbon.bin.lz");
// pokenav
const u16 gUnknown_08DDE010[] = INCBIN_U16("graphics/pokenav/ribbons.gbapal");
-const u8 gUnknown_08DDE030[] = INCBIN_U8("graphics/pokenav/ribbons.4bpp.lz");
-const u16 gUnknown_08DDE12C[] = INCBIN_U16("graphics/pokenav/ribbons.bin.lz");
+const u32 gUnknown_08DDE030[] = INCBIN_U32("graphics/pokenav/ribbons.4bpp.lz");
+const u32 gUnknown_08DDE12C[] = INCBIN_U32("graphics/pokenav/ribbons.bin.lz");
const u16 gMonIconPalettes[][16] =
{
@@ -1577,31 +1577,31 @@ const u16 gTitleScreenBgPalettes2[] = INCBIN_U16("graphics/title_screen/rayquaza
const u16 gTitleScreenEmeraldVersionPal[] = INCBIN_U16("graphics/title_screen/emerald_version.gbapal");
-const u16 gUnknown_08DDE458[] = INCBIN_U16("graphics/title_screen/title_screen1.bin.lz");
+const u32 gUnknown_08DDE458[] = INCBIN_U32("graphics/title_screen/title_screen1.bin.lz");
-const u16 gTitleScreenPokemonLogoGfx[] = INCBIN_U16("graphics/title_screen/pokemon_logo.8bpp.lz");
+const u32 gTitleScreenPokemonLogoGfx[] = INCBIN_U32("graphics/title_screen/pokemon_logo.8bpp.lz");
-const u16 gTitleScreenEmeraldVersionGfx[] = INCBIN_U16("graphics/title_screen/emerald_version.8bpp.lz");
+const u32 gTitleScreenEmeraldVersionGfx[] = INCBIN_U32("graphics/title_screen/emerald_version.8bpp.lz");
const u16 gTitleScreenPressStartPal[] = INCBIN_U16("graphics/title_screen/press_start.gbapal");
-const u8 gTitleScreenPressStartGfx[] = INCBIN_U8("graphics/title_screen/press_start.4bpp.lz");
+const u32 gTitleScreenPressStartGfx[] = INCBIN_U32("graphics/title_screen/press_start.4bpp.lz");
-const u16 gUnknown_08DE0644[] = INCBIN_U16("graphics/title_screen/title_screen2.bin.lz");
+const u32 gUnknown_08DE0644[] = INCBIN_U32("graphics/title_screen/title_screen2.bin.lz");
// more trainer card stuff
const u16 gUnknown_08DE07C8[] = INCBIN_U16("graphics/frontier_pass/tiles.gbapal");// size in LoadPalette calls is reported as 0xD0 << 1, which is 0x1A0, but palette is only 0x100 bytes long so it loads garbage as well
-const u8 gUnknown_08DE08C8[] = INCBIN_U8("graphics/frontier_pass/tiles.4bpp.lz");
-const u16 gUnknown_08DE2084[] = INCBIN_U16("graphics/frontier_pass/tiles2.8bpp.lz");
-const u16 gUnknown_08DE3060[] = INCBIN_U16("graphics/frontier_pass/tiles.bin.lz");
+const u32 gUnknown_08DE08C8[] = INCBIN_U32("graphics/frontier_pass/tiles.4bpp.lz");
+const u32 gUnknown_08DE2084[] = INCBIN_U32("graphics/frontier_pass/tiles2.8bpp.lz");
+const u32 gUnknown_08DE3060[] = INCBIN_U32("graphics/frontier_pass/tiles.bin.lz");
const u16 gUnknown_08DE3350[] = INCBIN_U16("graphics/frontier_pass/tilemap1.bin");
const u16 gUnknown_08DE3374[] = INCBIN_U16("graphics/frontier_pass/tilemap2.bin");
// berry crusher
const u16 gUnknown_08DE3398[] = INCBIN_U16("graphics/berry_crusher/tiles.gbapal");
-const u8 gUnknown_08DE34B8[] = INCBIN_U8("graphics/berry_crusher/tiles.4bpp.lz");
-const u16 gUnknown_08DE3FD4[] = INCBIN_U16("graphics/berry_crusher/tiles.bin.lz");
+const u32 gUnknown_08DE34B8[] = INCBIN_U32("graphics/berry_crusher/tiles.4bpp.lz");
+const u32 gUnknown_08DE3FD4[] = INCBIN_U32("graphics/berry_crusher/tiles.bin.lz");
// random garbage at the end.
asm(".space 0x54BAC \n\
diff --git a/src/ground.c b/src/ground.c
new file mode 100644
index 000000000..6cb7b8557
--- /dev/null
+++ b/src/ground.c
@@ -0,0 +1,748 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "random.h"
+#include "scanline_effect.h"
+#include "task.h"
+#include "trig.h"
+#include "constants/rgb.h"
+
+void AnimBonemerangProjectile(struct Sprite *);
+void AnimBoneHitProjectile(struct Sprite *);
+void AnimDirtScatter(struct Sprite *);
+void AnimMudSportDirt(struct Sprite *);
+void AnimFissureDirtPlumeParticle(struct Sprite *);
+void AnimDigDirtMound(struct Sprite *);
+static void AnimBonemerangProjectileStep(struct Sprite *);
+static void AnimBonemerangProjectileEnd(struct Sprite *);
+static void AnimMudSportDirtRising(struct Sprite *);
+static void AnimMudSportDirtFalling(struct Sprite *);
+static void sub_8114CFC(u8);
+static void sub_8114EB4(u8);
+static void sub_8114F54(u8);
+static void sub_8114FD8(u8);
+static void sub_81150E0(u8, s16, s16);
+static void AnimFissureDirtPlumeParticleStep(struct Sprite *);
+static void sub_81153AC(u8);
+static void sub_81154A4(u8);
+static void sub_8115588(struct Task *);
+static void sub_81156D0(u8);
+
+const union AffineAnimCmd gUnknown_08597150[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 15, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gUnknown_08597160[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08597170[] =
+{
+ gUnknown_08597150,
+};
+
+const union AffineAnimCmd *const gUnknown_08597174[] =
+{
+ gUnknown_08597160,
+};
+
+const struct SpriteTemplate gUnknown_08597178 =
+{
+ .tileTag = ANIM_TAG_BONE,
+ .paletteTag = ANIM_TAG_BONE,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597170,
+ .callback = AnimBonemerangProjectile,
+};
+
+const struct SpriteTemplate gUnknown_08597190 =
+{
+ .tileTag = ANIM_TAG_BONE,
+ .paletteTag = ANIM_TAG_BONE,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597174,
+ .callback = AnimBoneHitProjectile,
+};
+
+const struct SpriteTemplate gUnknown_085971A8 =
+{
+ .tileTag = ANIM_TAG_MUD_SAND,
+ .paletteTag = ANIM_TAG_MUD_SAND,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimDirtScatter,
+};
+
+const union AnimCmd gUnknown_085971C0[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085971C8[] =
+{
+ gUnknown_085971C0,
+};
+
+const struct SpriteTemplate gUnknown_085971CC =
+{
+ .tileTag = ANIM_TAG_MUD_SAND,
+ .paletteTag = ANIM_TAG_MUD_SAND,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_085971C8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimDirtScatter,
+};
+
+const struct SpriteTemplate gUnknown_085971E4 =
+{
+ .tileTag = ANIM_TAG_MUD_SAND,
+ .paletteTag = ANIM_TAG_MUD_SAND,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimMudSportDirt,
+};
+
+const struct SpriteTemplate gUnknown_085971FC =
+{
+ .tileTag = ANIM_TAG_MUD_SAND,
+ .paletteTag = ANIM_TAG_MUD_SAND,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimFissureDirtPlumeParticle,
+};
+
+const struct SpriteTemplate gUnknown_08597214 =
+{
+ .tileTag = ANIM_TAG_DIRT_MOUND,
+ .paletteTag = ANIM_TAG_DIRT_MOUND,
+ .oam = &gUnknown_08524934,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimDigDirtMound,
+};
+
+// Moves a bone projectile towards the target mon, which moves like
+// a boomerang. After hitting the target mon, it comes back to the user.
+void AnimBonemerangProjectile(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[0] = 20;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[5] = -40;
+ InitAnimArcTranslation(sprite);
+ sprite->callback = AnimBonemerangProjectileStep;
+}
+
+static void AnimBonemerangProjectileStep(struct Sprite *sprite)
+{
+ if (TranslateAnimArc(sprite))
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->data[0] = 20;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[5] = 40;
+ InitAnimArcTranslation(sprite);
+ sprite->callback = AnimBonemerangProjectileEnd;
+ }
+}
+
+static void AnimBonemerangProjectileEnd(struct Sprite *sprite)
+{
+ if (TranslateAnimArc(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+// Moves a bone projectile towards the target mon, starting right next to
+// the target mon.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+void AnimBoneHitProjectile(struct Sprite *sprite)
+{
+ sub_80A6980(sprite, TRUE);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// Moves a small dirt projectile towards the target mon.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: duration
+// arg 3: target x pixel offset
+// arg 4: target y pixel offset
+void AnimDirtScatter(struct Sprite *sprite)
+{
+ u8 targetXPos, targetYPos;
+ s16 xOffset, yOffset;
+
+ InitAnimSpritePos(sprite, 1);
+
+ targetXPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 2);
+ targetYPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 3);
+
+ xOffset = Random2() & 0x1F;
+ yOffset = Random2() & 0x1F;
+ if (xOffset > 16)
+ xOffset = 16 - xOffset;
+ if (yOffset > 16)
+ yOffset = 16 - yOffset;
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = targetXPos + xOffset;
+ sprite->data[4] = targetYPos + yOffset;
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+}
+
+// Moves a particle of dirt in the Mud Sport animation.
+// The dirt can either be rising upward, or falling down.
+// arg 0: 0 = dirt is rising into the air, 1 = dirt is falling down
+// arg 1: initial x pixel offset
+// arg 2: initial y pixel offset
+void AnimMudSportDirt(struct Sprite *sprite)
+{
+ sprite->oam.tileNum++;
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1;
+ sprite->callback = AnimMudSportDirtRising;
+ }
+ else
+ {
+ sprite->pos1.x = gBattleAnimArgs[1];
+ sprite->pos1.y = gBattleAnimArgs[2];
+ sprite->pos2.y = -gBattleAnimArgs[2];
+ sprite->callback = AnimMudSportDirtFalling;
+ }
+}
+
+static void AnimMudSportDirtRising(struct Sprite *sprite)
+{
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ sprite->pos1.x += sprite->data[0];
+ }
+
+ sprite->pos1.y -= 4;
+ if (sprite->pos1.y < -4)
+ DestroyAnimSprite(sprite);
+}
+
+static void AnimMudSportDirtFalling(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos2.y += 4;
+ if (sprite->pos2.y >= 0)
+ {
+ sprite->pos2.y = 0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 0)
+ {
+ sprite->data[1] = 0;
+ sprite->invisible ^= 1;
+ if (++sprite->data[2] == 10)
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_8114CBC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[0] == 0)
+ task->func = sub_8114CFC;
+ else
+ task->func = sub_8114EB4;
+
+ task->func(taskId);
+}
+
+static void sub_8114CFC(u8 taskId)
+{
+ u8 var0;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[10] = GetAnimBattlerSpriteId(0);
+ task->data[11] = sub_80A8364(gBattleAnimAttacker);
+ if (task->data[11] == 1)
+ {
+ task->data[12] = gBattle_BG1_X;
+ task->data[13] = gBattle_BG1_Y;
+ }
+ else
+ {
+ task->data[12] = gBattle_BG2_X;
+ task->data[13] = gBattle_BG2_Y;
+ }
+
+ var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
+ task->data[14] = var0 - 32;
+ task->data[15] = var0 + 32;
+ if (task->data[14] < 0)
+ task->data[14] = 0;
+
+ gSprites[task->data[10]].invisible = 1;
+ task->data[0]++;
+ break;
+ case 1:
+ sub_81150E0(task->data[11], task->data[14], task->data[15]);
+ task->data[0]++;
+ break;
+ case 2:
+ task->data[2] = (task->data[2] + 6) & 0x7F;
+ if (++task->data[4] > 2)
+ {
+ task->data[4] = 0;
+ task->data[3]++;
+ }
+
+ task->data[5] = task->data[3] + (gSineTable[task->data[2]] >> 4);
+ if (task->data[11] == 1)
+ gBattle_BG1_Y = task->data[13] - task->data[5];
+ else
+ gBattle_BG2_Y = task->data[13] - task->data[5];
+
+ if (task->data[5] > 63)
+ {
+ task->data[5] = 120 - task->data[14];
+ if (task->data[11] == 1)
+ gBattle_BG1_Y = task->data[13] - task->data[5];
+ else
+ gBattle_BG2_Y = task->data[13] - task->data[5];
+
+ gSprites[task->data[10]].pos2.x = 272 - gSprites[task->data[10]].pos1.x;
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ gScanlineEffect.state = 3;
+ task->data[0]++;
+ break;
+ case 4:
+ DestroyAnimVisualTask(taskId);
+ gSprites[task->data[10]].invisible = 1;
+ break;
+ }
+}
+
+static void sub_8114EB4(u8 taskId)
+{
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+ gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
+
+ if (sub_80A8364(gBattleAnimAttacker) == 1)
+ gBattle_BG1_Y = 0;
+ else
+ gBattle_BG2_Y = 0;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8114F14(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[0] == 0)
+ task->func = sub_8114F54;
+ else
+ task->func = sub_8114FD8;
+
+ task->func(taskId);
+}
+
+static void sub_8114F54(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[10] = GetAnimBattlerSpriteId(0);
+ gSprites[task->data[10]].invisible = 0;
+ gSprites[task->data[10]].pos2.x = 0;
+ gSprites[task->data[10]].pos2.y = 160 - gSprites[task->data[10]].pos1.y;
+ task->data[0]++;
+ break;
+ case 1:
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static void sub_8114FD8(u8 taskId)
+{
+ u8 var0;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[10] = GetAnimBattlerSpriteId(0);
+ task->data[11] = sub_80A8364(gBattleAnimAttacker);
+ if (task->data[11] == 1)
+ task->data[12] = gBattle_BG1_X;
+ else
+ task->data[12] = gBattle_BG2_X;
+
+ var0 = GetBattlerYCoordWithElevation(gBattleAnimAttacker);
+ task->data[14] = var0 - 32;
+ task->data[15] = var0 + 32;
+ task->data[0]++;
+ break;
+ case 1:
+ sub_81150E0(task->data[11], 0, task->data[15]);
+ task->data[0]++;
+ break;
+ case 2:
+ gSprites[task->data[10]].pos2.y = 96;
+ task->data[0]++;
+ break;
+ case 3:
+ gSprites[task->data[10]].pos2.y -= 8;
+ if (gSprites[task->data[10]].pos2.y == 0)
+ {
+ gScanlineEffect.state = 3;
+ task->data[0]++;
+ }
+ break;
+ case 4:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_81150E0(u8 useBG1, s16 y, s16 endY)
+{
+ s16 bgX;
+ struct ScanlineEffectParams scanlineParams;
+
+ if (useBG1 == 1)
+ {
+ bgX = gBattle_BG1_X;
+ scanlineParams.dmaDest = &REG_BG1HOFS;
+ }
+ else
+ {
+ bgX = gBattle_BG2_X;
+ scanlineParams.dmaDest = &REG_BG2HOFS;
+ }
+
+ if (y < 0)
+ y = 0;
+
+ while (y < endY)
+ {
+ gScanlineEffectRegBuffers[0][y] = bgX;
+ gScanlineEffectRegBuffers[1][y] = bgX;
+ y++;
+ }
+
+ while (y < 160)
+ {
+ gScanlineEffectRegBuffers[0][y] = bgX + 240;
+ gScanlineEffectRegBuffers[1][y] = bgX + 240;
+ y++;
+ }
+
+ scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ scanlineParams.initState = 1;
+ scanlineParams.unused9 = 0;
+ ScanlineEffect_SetParams(scanlineParams);
+}
+
+// Moves a particle of dirt in a plume of dirt. Used in Fissure and Dig.
+// arg 0: which mon (0 = attacker, 1 = target)
+// arg 1: which side of mon (0 = left, 1 = right)
+// arg 2: target x offset
+// arg 3: target y offset
+// arg 4: wave amplitude
+// arg 5: duration
+void AnimFissureDirtPlumeParticle(struct Sprite *sprite)
+{
+ s8 battler;
+ s16 xOffset;
+
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ xOffset = 24;
+ if (gBattleAnimArgs[1] == 1)
+ {
+ xOffset *= -1;
+ gBattleAnimArgs[2] *= -1;
+ }
+
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, 2) + xOffset;
+ sprite->pos1.y = GetBattlerYCoordWithElevation(battler) + 30;
+ sprite->data[0] = gBattleAnimArgs[5];
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
+ sprite->data[5] = gBattleAnimArgs[4];
+ InitAnimArcTranslation(sprite);
+ sprite->callback = AnimFissureDirtPlumeParticleStep;
+}
+
+static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite)
+{
+ if (TranslateAnimArc(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+// Displays the dirt mound seen in the move Dig for set duration.
+// The dirt mound image is too large for a single sprite, so two
+// sprites are lined up next to each other.
+// arg 0: which mon (0 = attacker, 1 = target)
+// arg 1: oam tile num (0 = left half of image, 1 = right half of image)
+// arg 2: duration
+void AnimDigDirtMound(struct Sprite *sprite)
+{
+ s8 battler;
+
+ if (gBattleAnimArgs[0] == 0)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32);
+ sprite->pos1.y = GetBattlerYCoordWithElevation(battler) + 32;
+ sprite->oam.tileNum += gBattleAnimArgs[1] * 8;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->callback = WaitAnimForDuration;
+}
+
+void sub_81152DC(u8 taskId)
+{
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[1])
+ task->data[14] = task->data[15] = gBattleAnimArgs[1] + 3;
+ else
+ task->data[14] = task->data[15] = (gAnimMovePower / 10) + 3;
+
+ task->data[3] = gBattleAnimArgs[2];
+ switch (gBattleAnimArgs[0])
+ {
+ case 5:
+ task->data[13] = gBattle_BG3_X;
+ task->func = sub_81153AC;
+ break;
+ case 4:
+ task->data[13] = 0;
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
+ {
+ if (IsBattlerSpriteVisible(i))
+ {
+ task->data[task->data[13] + 9] = gBattlerSpriteIds[i];
+ task->data[13]++;
+ }
+ }
+ task->func = sub_81154A4;
+ break;
+ default:
+ task->data[9] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ if (task->data[9] == 0xFF)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ task->data[13] = 1;
+ task->func = sub_81154A4;
+ }
+
+ break;
+ }
+}
+
+static void sub_81153AC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ if ((task->data[2] & 1) == 0)
+ gBattle_BG3_X = task->data[13] + task->data[15];
+ else
+ gBattle_BG3_X = task->data[13] - task->data[15];
+
+ if (++task->data[2] == task->data[3])
+ {
+ task->data[2] = 0;
+ task->data[14]--;
+ task->data[0]++;
+ }
+ }
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ if ((task->data[2] & 1) == 0)
+ gBattle_BG3_X = task->data[13] + task->data[14];
+ else
+ gBattle_BG3_X = task->data[13] - task->data[14];
+
+ if (++task->data[2] == 4)
+ {
+ task->data[2] = 0;
+ if (--task->data[14] == 0)
+ task->data[0]++;
+ }
+ }
+ break;
+ case 2:
+ gBattle_BG3_X = task->data[13];
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_81154A4(u8 taskId)
+{
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ sub_8115588(task);
+ if (++task->data[2] == task->data[3])
+ {
+ task->data[2] = 0;
+ task->data[14]--;
+ task->data[0]++;
+ }
+ }
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ sub_8115588(task);
+ if (++task->data[2] == 4)
+ {
+ task->data[2] = 0;
+ if (--task->data[14] == 0)
+ task->data[0]++;
+ }
+ }
+ break;
+ case 2:
+ for (i = 0; i < task->data[13]; i++)
+ gSprites[task->data[9 + i]].pos2.x = 0;
+
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_8115588(struct Task *task)
+{
+ u16 i;
+ u16 xOffset;
+
+ if ((task->data[2] & 1) == 0)
+ xOffset = (task->data[14] / 2) + (task->data[14] & 1);
+ else
+ xOffset = -(task->data[14] / 2);
+
+ for (i = 0; i < task->data[13]; i++)
+ {
+ gSprites[task->data[9 + i]].pos2.x = xOffset;
+ }
+}
+
+void AnimTask_IsPowerOver99(u8 taskId)
+{
+ gBattleAnimArgs[15] = gAnimMovePower > 99;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8115628(u8 taskId)
+{
+ struct Task *newTask;
+ u8 battler = (gBattleAnimArgs[0] & 1) ? gBattleAnimTarget : gBattleAnimAttacker;
+
+ if (gBattleAnimArgs[0] > 1)
+ battler ^= 2;
+
+ newTask = &gTasks[CreateTask(sub_81156D0, gBattleAnimArgs[1])];
+ newTask->data[1] = (32 - GetBattlerSpriteCoord(battler, 2)) & 0x1FF;
+ newTask->data[2] = (64 - GetBattlerSpriteCoord(battler, 3)) & 0xFF;
+ gBattle_BG3_X = newTask->data[1];
+ gBattle_BG3_Y = newTask->data[2];
+ newTask->data[3] = gBattleAnimArgs[2];
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_81156D0(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (gBattleAnimArgs[7] == task->data[3])
+ {
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ DestroyTask(taskId);
+ }
+ else
+ {
+ gBattle_BG3_X = task->data[1];
+ gBattle_BG3_Y = task->data[2];
+ }
+}
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index f2975e739..315990256 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -8,6 +8,7 @@
#include "text_window.h"
#include "malloc.h"
#include "gpu_regs.h"
+#include "graphics.h"
#include "main.h"
#include "sound.h"
#include "constants/songs.h"
@@ -30,6 +31,7 @@
#include "trainer_pokemon_sprites.h"
#include "data2.h"
#include "rom_81520A8.h"
+#include "constants/rgb.h"
struct HallofFameMon
{
@@ -77,10 +79,6 @@ extern const u8 gText_IDNumber[];
extern const u8 gText_Name[];
extern const u8 gText_MainMenuTime[];
-// graphics
-extern const u8 gContestConfetti_Gfx[];
-extern const u8 gContestConfetti_Pal[];
-
extern void sub_8175620(void);
extern bool8 sub_80F9C30(void);
extern void sub_8198314(void);
@@ -339,7 +337,7 @@ static const struct SpriteTemplate sSpriteTemplate_85E54D0 =
static const u16 sHallOfFame_Pal[] = INCBIN_U16("graphics/misc/japanese_hof.gbapal");
-static const u8 sHallOfFame_Gfx[] = INCBIN_U8("graphics/misc/japanese_hof.4bpp.lz");
+static const u32 sHallOfFame_Gfx[] = INCBIN_U32("graphics/misc/japanese_hof.4bpp.lz");
static const struct HallofFameMon sDummyFameMon =
{
@@ -391,7 +389,7 @@ static bool8 InitHallOfFameScreen(void)
if (!sub_8175024())
{
SetVBlankCallback(VBlankCB_HallOfFame);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
gMain.state++;
}
break;
@@ -441,7 +439,7 @@ static void Task_Hof_InitMonData(u8 taskId)
gTasks[taskId].tMonNumber = 0; // valid pokes
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
u8 nick[POKEMON_NAME_LENGTH + 2];
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES))
@@ -471,7 +469,7 @@ static void Task_Hof_InitMonData(u8 taskId)
gTasks[taskId].tDisplayedMonId = 0;
gTasks[taskId].tPlayerSpriteID = 0xFF;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
gTasks[taskId].tMonSpriteId(i) = 0xFF;
}
@@ -524,7 +522,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId)
static void Task_Hof_TrySaveData(u8 taskId)
{
gGameContinueCallback = CB2_DoHallOfFameScreenDontSaveData;
- if (TrySavingData(3) == 0xFF && gDamagedSaveSectors != 0)
+ if (TrySavingData(SAVE_HALL_OF_FAME) == 0xFF && gDamagedSaveSectors != 0)
{
UnsetBgTilemapBuffer(1);
UnsetBgTilemapBuffer(3);
@@ -629,7 +627,7 @@ static void Task_Hof_TryDisplayAnotherMon(u8 taskId)
if (gTasks[taskId].tDisplayedMonId <= 4 && currMon[1].species != SPECIES_NONE) // there is another pokemon to display
{
gTasks[taskId].tDisplayedMonId++;
- BeginNormalPaletteFade(sUnknown_0203BCD4, 0, 12, 12, 0x63B0);
+ BeginNormalPaletteFade(sUnknown_0203BCD4, 0, 12, 12, RGB(16, 29, 24));
gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.priority = 1;
gTasks[taskId].func = Task_Hof_DisplayMon;
}
@@ -644,8 +642,8 @@ static void Task_Hof_PaletteFadeAndPrintWelcomeText(u8 taskId)
{
u16 i;
- BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0, 0);
- for (i = 0; i < 6; i++)
+ BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0, RGB_BLACK);
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (gTasks[taskId].tMonSpriteId(i) != 0xFF)
gSprites[gTasks[taskId].tMonSpriteId(i)].oam.priority = 0;
@@ -668,12 +666,12 @@ static void sub_8173DC0(u8 taskId)
else
{
u16 i;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (gTasks[taskId].tMonSpriteId(i) != 0xFF)
gSprites[gTasks[taskId].tMonSpriteId(i)].oam.priority = 1;
}
- BeginNormalPaletteFade(sUnknown_0203BCD4, 0, 12, 12, 0x63B0);
+ BeginNormalPaletteFade(sUnknown_0203BCD4, 0, 12, 12, RGB(16, 29, 24));
FillWindowPixelBuffer(0, 0);
CopyWindowToVram(0, 3);
gTasks[taskId].tFrameCount = 7;
@@ -741,7 +739,7 @@ static void Task_Hof_ExitOnKeyPressed(u8 taskId)
static void Task_Hof_HandlePaletteOnExit(u8 taskId)
{
CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
- BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 0x10, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_Hof_HandleExit;
}
@@ -751,7 +749,7 @@ static void Task_Hof_HandleExit(u8 taskId)
{
s32 i;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
u8 spriteId = gTasks[taskId].tMonSpriteId(i);
if (spriteId != 0xFF)
@@ -847,7 +845,7 @@ void CB2_DoHallOfFamePC(void)
SetGpuReg(REG_OFFSET_BLDY, 0);
taskId = CreateTask(Task_HofPC_CopySaveData, 0);
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
gTasks[taskId].tMonSpriteId(i) = 0xFF;
}
@@ -904,7 +902,7 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskId)
gTasks[taskId].tCurrMonId = 0;
gTasks[taskId].tMonNo = 0;
- for (i = 0; i < 6; i++, currMon++)
+ for (i = 0; i < PARTY_SIZE; i++, currMon++)
{
if (currMon->species != 0)
gTasks[taskId].tMonNo++;
@@ -912,7 +910,7 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskId)
currMon = &savedTeams->mon[0];
- for (i = 0; i < 6; i++, currMon++)
+ for (i = 0; i < PARTY_SIZE; i++, currMon++)
{
if (currMon->species != 0)
{
@@ -943,7 +941,7 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskId)
}
}
- BlendPalettes(0xFFFF0000, 0xC, 0x63B0);
+ BlendPalettes(0xFFFF0000, 0xC, RGB(16, 29, 24));
ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tCurrPageNo, STR_CONV_MODE_RIGHT_ALIGN, 3);
StringExpandPlaceholders(gStringVar4, gText_HOFNumber);
@@ -966,7 +964,7 @@ static void Task_HofPC_PrintMonInfo(u8 taskId)
for (i = 0; i < gTasks[taskId].tCurrTeamNo; i++)
savedTeams++;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
u16 spriteId = gTasks[taskId].tMonSpriteId(i);
if (spriteId != 0xFF)
@@ -976,7 +974,7 @@ static void Task_HofPC_PrintMonInfo(u8 taskId)
currMonID = gTasks[taskId].tMonSpriteId(gTasks[taskId].tCurrMonId);
gSprites[currMonID].oam.priority = 0;
sUnknown_0203BCD4 = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000;
- BlendPalettesUnfaded(sUnknown_0203BCD4, 0xC, 0x63B0);
+ BlendPalettesUnfaded(sUnknown_0203BCD4, 0xC, RGB(16, 29, 24));
currMon = &savedTeams->mon[gTasks[taskId].tCurrMonId];
if (currMon->species != SPECIES_EGG)
@@ -1059,7 +1057,7 @@ static void Task_HofPC_HandleExit(u8 taskId)
{
u8 i;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
u16 spriteId = gTasks[taskId].tMonSpriteId(i);
if (spriteId != 0xFF)
diff --git a/src/hof_pc.c b/src/hof_pc.c
index 44b929337..2cea5540a 100644
--- a/src/hof_pc.c
+++ b/src/hof_pc.c
@@ -7,8 +7,6 @@
#include "script_menu.h"
#include "task.h"
-extern void (*gUnknown_0300485C)(void);
-
extern void Overworld_PlaySpecialMapMusic(void);
extern bool16 ScrSpecial_CreatePCMenu(void);
extern void ScriptMenu_DisplayPCStartupPrompt(void);
diff --git a/src/ice.c b/src/ice.c
new file mode 100644
index 000000000..ebd0d3cf6
--- /dev/null
+++ b/src/ice.c
@@ -0,0 +1,491 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_810B6C4(struct Sprite *);
+extern void sub_810B8AC(struct Sprite *);
+extern void sub_810B8EC(struct Sprite *);
+extern void sub_810B974(struct Sprite *);
+extern void sub_810BA24(struct Sprite *);
+extern void sub_810BC94(struct Sprite *);
+extern void sub_810BE48(struct Sprite *);
+extern void sub_810BED0(struct Sprite *);
+extern void sub_810C2F0(struct Sprite *);
+extern void sub_810C560(struct Sprite *);
+extern void sub_810CB58(struct Sprite *);
+extern void sub_80A8EE4(struct Sprite *);
+extern void unc_080B06FC(struct Sprite *);
+extern void sub_810CD4C(struct Sprite *);
+
+const union AnimCmd gUnknown_08595A48[] =
+{
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 5, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595A54[] =
+{
+ gUnknown_08595A48,
+};
+
+// unknown sprite template
+const struct SpriteTemplate gUnknown_08595A58 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B6C4,
+};
+
+const union AnimCmd gUnknown_08595A70[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595A78[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595A80[] =
+{
+ ANIMCMD_FRAME(6, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595A88[] =
+{
+ ANIMCMD_FRAME(7, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595A90[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595A98[] =
+{
+ ANIMCMD_FRAME(12, 6),
+ ANIMCMD_FRAME(13, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595AA4[] =
+{
+ gUnknown_08595A70,
+};
+
+const union AnimCmd *const gUnknown_08595AA8[] =
+{
+ gUnknown_08595A78,
+};
+
+const union AnimCmd *const gUnknown_08595AAC[] =
+{
+ gUnknown_08595A80,
+};
+
+const union AnimCmd *const gUnknown_08595AB0[] =
+{
+ gUnknown_08595A88,
+};
+
+const union AnimCmd *const gUnknown_08595AB4[] =
+{
+ gUnknown_08595A90,
+};
+
+const union AnimCmd *const gUnknown_08595AB8[] =
+{
+ gUnknown_08595A98,
+};
+
+const union AffineAnimCmd gUnknown_08595ABC[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 40, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08595ACC[] =
+{
+ gUnknown_08595ABC,
+};
+
+const struct SpriteTemplate gUnknown_08595AD0 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524B24,
+ .anims = gUnknown_08595AA8,
+ .images = NULL,
+ .affineAnims = gUnknown_08595ACC,
+ .callback = sub_810B8AC,
+};
+
+const struct SpriteTemplate gUnknown_08595AE8 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524A24,
+ .anims = gUnknown_08595AAC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B8AC,
+};
+
+const union AffineAnimCmd gUnknown_08595B00[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08595B10[] =
+{
+ gUnknown_08595B00,
+};
+
+const struct SpriteTemplate gUnknown_08595B14 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524AC4,
+ .anims = gUnknown_08595AA8,
+ .images = NULL,
+ .affineAnims = gUnknown_08595B10,
+ .callback = sub_810B8EC,
+};
+
+const struct SpriteTemplate gUnknown_08595B2C =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524A24,
+ .anims = gUnknown_08595AAC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B8EC,
+};
+
+const union AffineAnimCmd gUnknown_08595B44[] =
+{
+ AFFINEANIMCMD_FRAME(0xCE, 0xCE, 0, 0),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08595B64[] =
+{
+ gUnknown_08595B44,
+};
+
+const struct SpriteTemplate gUnknown_08595B68 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524AC4,
+ .anims = gUnknown_08595AA8,
+ .images = NULL,
+ .affineAnims = gUnknown_08595B64,
+ .callback = sub_810B974,
+};
+
+const struct SpriteTemplate gUnknown_08595B80 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524A84,
+ .anims = gUnknown_08595AAC,
+ .images = NULL,
+ .affineAnims = gUnknown_08595B64,
+ .callback = sub_810B974,
+};
+
+const struct SpriteTemplate gUnknown_08595B98 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08595AB0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810BA24,
+};
+
+const struct SpriteTemplate gUnknown_08595BB0 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08595AB4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810BC94,
+};
+
+const struct SpriteTemplate gUnknown_08595BC8 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08595AB0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810BC94,
+};
+
+const union AnimCmd gUnknown_08595BE0[] =
+{
+ 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 gUnknown_08595C00[] =
+{
+ gUnknown_08595BE0,
+};
+
+const struct SpriteTemplate gUnknown_08595C04 =
+{
+ .tileTag = ANIM_TAG_ICE_SPIKES,
+ .paletteTag = ANIM_TAG_ICE_SPIKES,
+ .oam = &gUnknown_08524A64,
+ .anims = gUnknown_08595C00,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810BE48,
+};
+
+const union AnimCmd gUnknown_08595C1C[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595C28[] =
+{
+ gUnknown_08595C1C,
+};
+
+const struct SpriteTemplate gUnknown_08595C2C =
+{
+ .tileTag = ANIM_TAG_MIST_CLOUD,
+ .paletteTag = ANIM_TAG_MIST_CLOUD,
+ .oam = &gUnknown_08524A54,
+ .anims = gUnknown_08595C28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810BED0,
+};
+
+const struct SpriteTemplate gUnknown_08595C44 =
+{
+ .tileTag = ANIM_TAG_PURPLE_GAS_CLOUD,
+ .paletteTag = ANIM_TAG_PURPLE_GAS_CLOUD,
+ .oam = &gUnknown_08524A54,
+ .anims = gUnknown_08595C28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810BED0,
+};
+
+const u8 gUnknown_08595C5C[] =
+{
+ 0, 1, 2, 2, 2, 2, 3, 4, 4, 4, 5, 6, 6, 6, 6, 7, 8, 8, 8, 9,
+};
+
+const struct SpriteTemplate gUnknown_08595C70 =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810C2F0,
+};
+
+const u8 gUnknown_08595C88[] =
+{
+ 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5,
+};
+
+const struct SpriteTemplate gUnknown_08595C9C =
+{
+ .tileTag = ANIM_TAG_PURPLE_GAS_CLOUD,
+ .paletteTag = ANIM_TAG_PURPLE_GAS_CLOUD,
+ .oam = &gUnknown_08524A54,
+ .anims = gUnknown_08595C28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810C560,
+};
+
+const u8 gUnknown_08595CB4[][4] =
+{
+ {0x64, 0xE0, 0x01, 0x20},
+ {0x55, 0xE0, 0x01, 0x00},
+ {0xF2, 0xE0, 0x11, 0x10},
+ {0x42, 0xE0, 0x21, 0x10},
+ {0xB6, 0xE0, 0x31, 0x00},
+ {0x3C, 0xE0, 0x01, 0x20},
+ {0xD6, 0xE0, 0x11, 0x00},
+ {0x71, 0xE0, 0x01, 0x10},
+ {0xD2, 0xE0, 0x31, 0x10},
+ {0x26, 0xE0, 0x21, 0x00},
+};
+
+const union AffineAnimCmd gUnknown_08595CDC[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595CEC[] =
+{
+ AFFINEANIMCMD_FRAME(0xF0, 0xF0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595CFC[] =
+{
+ AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595D0C[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08595D1C[] =
+{
+ gUnknown_08595CDC,
+ gUnknown_08595CEC,
+ gUnknown_08595CFC,
+};
+
+const union AffineAnimCmd *const gUnknown_08595D28[] =
+{
+ gUnknown_08595D0C,
+};
+
+const struct SpriteTemplate gUnknown_08595D2C =
+{
+ .tileTag = ANIM_TAG_HAIL,
+ .paletteTag = ANIM_TAG_HAIL,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08595D1C,
+ .callback = sub_810CB58,
+};
+
+const struct SpriteTemplate gUnknown_08595D44 =
+{
+ .tileTag = ANIM_TAG_HAIL,
+ .paletteTag = ANIM_TAG_HAIL,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08595D28,
+ .callback = sub_80A8EE4,
+};
+
+const union AnimCmd gUnknown_08595D5C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595D64[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08595D78[] =
+{
+ gUnknown_08595D5C,
+ gUnknown_08595D64,
+};
+
+const union AffineAnimCmd gUnknown_08595D80[] =
+{
+ AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595D90[] =
+{
+ AFFINEANIMCMD_FRAME(0x118, 0x118, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595DA0[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595DB0[] =
+{
+ AFFINEANIMCMD_FRAME(0x180, 0x180, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595DC0[] =
+{
+ AFFINEANIMCMD_FRAME(0x1C0, 0x1C0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08595DD0[] =
+{
+ gUnknown_08595D80,
+ gUnknown_08595D90,
+ gUnknown_08595DA0,
+ gUnknown_08595DB0,
+ gUnknown_08595DC0,
+};
+
+const struct SpriteTemplate gUnknown_08595DE4 =
+{
+ .tileTag = ANIM_TAG_ICE_CHUNK,
+ .paletteTag = ANIM_TAG_ICE_CHUNK,
+ .oam = &gUnknown_085249D4,
+ .anims = gUnknown_08595D78,
+ .images = NULL,
+ .affineAnims = gUnknown_08595DD0,
+ .callback = unc_080B06FC,
+};
+
+const struct SpriteTemplate gUnknown_08595DFC =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08595AAC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810CD4C,
+};
diff --git a/src/international_string_util.c b/src/international_string_util.c
index 9de338c59..a7c42c39e 100644
--- a/src/international_string_util.c
+++ b/src/international_string_util.c
@@ -1,40 +1,46 @@
#include "global.h"
-#include "text.h"
#include "international_string_util.h"
+#include "list_menu.h"
+#include "pokedex.h"
+#include "script_menu.h"
+#include "string_util.h"
+#include "strings.h"
+#include "text.h"
+#include "window.h"
-extern s32 convert_pixel_width_to_tile_width(s32 a0); // script menu
+extern const struct PokedexEntry gPokedexEntries[];
-s32 GetStringCenterAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth)
+int GetStringCenterAlignXOffset(int fontId, const u8 *str, int totalWidth)
{
return GetStringCenterAlignXOffsetWithLetterSpacing(fontId, str, totalWidth, 0);
}
-s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth)
+int GetStringRightAlignXOffset(int fontId, const u8 *str, int totalWidth)
{
return GetStringWidthDifference(fontId, str, totalWidth, 0);
}
-s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing)
+int GetStringCenterAlignXOffsetWithLetterSpacing(int fontId, const u8 *str, int totalWidth, int letterSpacing)
{
return GetStringWidthDifference(fontId, str, totalWidth, letterSpacing) / 2;
}
-s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing)
+int GetStringWidthDifference(int fontId, const u8 *str, int totalWidth, int letterSpacing)
{
- s32 stringWidth = GetStringWidth(fontId, str, letterSpacing);
+ int stringWidth = GetStringWidth(fontId, str, letterSpacing);
if (totalWidth > stringWidth)
return totalWidth - stringWidth;
else
return 0;
}
-s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1)
+int GetMaxWidthInMenuTable(const struct MenuAction *str, int arg1)
{
- s32 i, var;
+ int i, var;
for (var = 0, i = 0; i < arg1; i++)
{
- s32 stringWidth = GetStringWidth(1, str[i].text, 0);
+ int stringWidth = GetStringWidth(1, str[i].text, 0);
if (stringWidth > var)
var = stringWidth;
}
@@ -42,16 +48,192 @@ s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1)
return convert_pixel_width_to_tile_width(var);
}
-s32 sub_81DB3D8(const struct MenuAction *str, const u8* arg1, s32 arg2)
+int sub_81DB3D8(const struct MenuAction *str, const u8* arg1, int arg2)
{
- s32 i, var;
+ int i, var;
for (var = 0, i = 0; i < arg2; i++)
{
- s32 stringWidth = GetStringWidth(1, str[arg1[i]].text, 0);
+ int stringWidth = GetStringWidth(1, str[arg1[i]].text, 0);
if (stringWidth > var)
var = stringWidth;
}
return convert_pixel_width_to_tile_width(var);
}
+
+int sub_81DB41C(const struct ListMenuTemplate *listMenu)
+{
+ int i, maxWidth, finalWidth;
+ const struct ListMenuItem *items = listMenu->items;
+
+ maxWidth = 0;
+ for (i = 0; i < listMenu->totalItems; i++)
+ {
+ int width = GetStringWidth(listMenu->fontId, items[i].name, 0);
+ if (width > maxWidth)
+ maxWidth = width;
+ }
+
+ finalWidth = maxWidth + listMenu->item_X + 9;
+ if (finalWidth < 0)
+ finalWidth += 7;
+
+ finalWidth >>= 3;
+ if (finalWidth > 28)
+ finalWidth = 28;
+
+ return finalWidth;
+}
+
+void CopyMonCategoryText(int dexNum, u8 *dest)
+{
+ u8 *str = StringCopy(dest, gPokedexEntries[dexNum].categoryName);
+ *str = CHAR_SPACE;
+ StringCopy(str + 1, gText_Pokemon);
+}
+
+u8 *sub_81DB494(u8 *str, int fontId, u8 *str2, int totalStringWidth)
+{
+ u8 *buffer;
+ int width;
+ int clearWidth;
+
+ if (str2)
+ {
+ buffer = StringCopy(str, str2);
+ width = GetStringWidth(fontId, str2, 0);
+ }
+ else
+ {
+ buffer = str;
+ width = 0;
+ }
+
+ clearWidth = totalStringWidth - width;
+ if (clearWidth > 0)
+ {
+ *buffer = EXT_CTRL_CODE_BEGIN;
+ buffer++;
+ *buffer = EXT_CTRL_CODE_CLEAR;
+ buffer++;
+ *buffer = clearWidth;
+ buffer++;
+ *buffer = EOS;
+ }
+
+ return buffer;
+}
+
+void PadNameString(u8 *dest, u8 padChar)
+{
+ u8 length;
+
+ StripExtCtrlCodes(dest);
+ length = StringLength(dest);
+ if (padChar == EXT_CTRL_CODE_BEGIN)
+ {
+ while (length < PLAYER_NAME_LENGTH - 1)
+ {
+ dest[length] = EXT_CTRL_CODE_BEGIN;
+ dest[length + 1] = EXT_CTRL_CODE_UNKNOWN_7;
+ length += 2;
+ }
+ }
+ else
+ {
+ while (length < PLAYER_NAME_LENGTH - 1)
+ {
+ dest[length] = padChar;
+ length++;
+ }
+ }
+
+ dest[length] = EOS;
+}
+
+void sub_81DB52C(u8 *str)
+{
+ if (StringLength(str) < PLAYER_NAME_LENGTH - 1)
+ ConvertInternationalString(str, LANGUAGE_JAPANESE);
+ else
+ StripExtCtrlCodes(str);
+}
+
+void sub_81DB554(u8 *str, u8 arg1)
+{
+ u8 *buffer;
+ if (StringLength(str) < PLAYER_NAME_LENGTH - 1)
+ {
+ ConvertInternationalString(str, LANGUAGE_JAPANESE);
+ }
+ else if (arg1 == EXT_CTRL_CODE_BEGIN)
+ {
+ StripExtCtrlCodes(str);
+ }
+ else
+ {
+ buffer = str;
+ while (buffer[1] != EOS)
+ buffer++;
+
+ while (buffer >= str && buffer[0] == arg1)
+ {
+ buffer[0] = EOS;
+ buffer--;
+ }
+ }
+}
+
+void sub_81DB5AC(u8 *str)
+{
+ if (*str++ == EXT_CTRL_CODE_BEGIN && *str++ == EXT_CTRL_CODE_JPN)
+ {
+ while (*str != EOS)
+ {
+ if (str[0] == EXT_CTRL_CODE_BEGIN && str[1] == EXT_CTRL_CODE_ENG)
+ return;
+
+ str++;
+ }
+
+ *str++ = EXT_CTRL_CODE_BEGIN;
+ *str++ = EXT_CTRL_CODE_ENG;
+ *str = EOS;
+ }
+}
+
+void TVShowConvertInternationalString(u8 *dest, const u8 *src, int language)
+{
+ StringCopy(dest, src);
+ ConvertInternationalString(dest, language);
+}
+
+int sub_81DB604(u8 *str)
+{
+ if (str[0] == EXT_CTRL_CODE_BEGIN && str[1] == EXT_CTRL_CODE_JPN)
+ return LANGUAGE_JAPANESE;
+ else
+ return LANGUAGE_ENGLISH;
+}
+
+void sub_81DB620(int windowId, int columnStart, int rowStart, int numFillTiles, int numRows)
+{
+ u8 *windowTileData;
+ int fillSize, windowRowSize, rowsToFill;
+ struct Window *window = &gWindows[windowId];
+
+ fillSize = numFillTiles * TILE_SIZE_4BPP;
+ windowRowSize = window->window.width * TILE_SIZE_4BPP;
+ windowTileData = window->tileData + (rowStart * windowRowSize) + (columnStart * TILE_SIZE_4BPP);
+ if (numRows > 0)
+ {
+ rowsToFill = numRows;
+ while (rowsToFill)
+ {
+ CpuFastFill8(0x11, windowTileData, fillSize);
+ windowTileData += windowRowSize;
+ rowsToFill--;
+ }
+ }
+}
diff --git a/src/intro.c b/src/intro.c
index fe5c012b0..5a0e13869 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -43,24 +43,24 @@ struct GcmbStruct gMultibootProgramStruct;
//.rodata
static const u16 gIntro1DropsPal[] = INCBIN_U16("graphics/intro/intro1_drops.gbapal");
static const u16 gIntro1GFLogoPal[] = INCBIN_U16("graphics/intro/intro1_gflogo.gbapal");
-static const u8 gIntroTiles[] = INCBIN_U8("graphics/intro/intro.4bpp.lz");
+static const u32 gIntroTiles[] = INCBIN_U32("graphics/intro/intro.4bpp.lz");
static const u16 gIntro1BGPals[16][16] = INCBIN_U16("graphics/intro/intro1_bgpal.gbapal");
-static const u8 gIntro1BG0_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg0_map.bin.lz");
-static const u8 gIntro1BG1_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg1_map.bin.lz");
-static const u8 gIntro1BG2_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg2_map.bin.lz");
-static const u8 gIntro1BG3_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg3_map.bin.lz");
-static const u8 gIntro1BGLeavesGfx[] = INCBIN_U8("graphics/intro/introgfx.4bpp.lz");
+static const u32 gIntro1BG0_Tilemap[] = INCBIN_U32("graphics/intro/intro1_bg0_map.bin.lz");
+static const u32 gIntro1BG1_Tilemap[] = INCBIN_U32("graphics/intro/intro1_bg1_map.bin.lz");
+static const u32 gIntro1BG2_Tilemap[] = INCBIN_U32("graphics/intro/intro1_bg2_map.bin.lz");
+static const u32 gIntro1BG3_Tilemap[] = INCBIN_U32("graphics/intro/intro1_bg3_map.bin.lz");
+static const u32 gIntro1BGLeavesGfx[] = INCBIN_U32("graphics/intro/introgfx.4bpp.lz");
static const u16 gIntro3PokeballPal[] = INCBIN_U16("graphics/intro/intro3_pokeball.gbapal");
-static const u8 gIntro3Pokeball_Tilemap[] = INCBIN_U8("graphics/intro/intro3_pokeball_map.bin.lz");
-static const u8 gIntro3Pokeball_Gfx[] = INCBIN_U8("graphics/intro/intro3_pokeball.8bpp.lz");
+static const u32 gIntro3Pokeball_Tilemap[] = INCBIN_U32("graphics/intro/intro3_pokeball_map.bin.lz");
+static const u32 gIntro3Pokeball_Gfx[] = INCBIN_U32("graphics/intro/intro3_pokeball.8bpp.lz");
static const u16 gIntro3Streaks_Pal_Unused[] = INCBIN_U16("graphics/intro/intro3_streaks.gbapal");
-static const u8 gIntro3Streaks_Gfx_Unused[] = INCBIN_U8("graphics/intro/intro3_streaks.4bpp.lz");
-static const u8 gIntro3Streaks_Tilemap_Unused[] = INCBIN_U8("graphics/intro/intro3_streaks_map.bin.lz");
+static const u32 gIntro3Streaks_Gfx_Unused[] = INCBIN_U32("graphics/intro/intro3_streaks.4bpp.lz");
+static const u32 gIntro3Streaks_Tilemap_Unused[] = INCBIN_U32("graphics/intro/intro3_streaks_map.bin.lz");
static const u16 gIntro3Misc1Palette[] = INCBIN_U16("graphics/intro/intro3_misc1.gbapal");
static const u16 gIntro3Misc2Palette_Unused[] = INCBIN_U16("graphics/intro/intro3_misc2.gbapal");
-static const u8 gIntro3MiscTiles[] = INCBIN_U8("graphics/intro/intro3_misc.4bpp.lz");
+static const u32 gIntro3MiscTiles[] = INCBIN_U32("graphics/intro/intro3_misc.4bpp.lz");
static const u16 gIntro1FlygonPalette[] = INCBIN_U16("graphics/intro/intro1_flygon.gbapal");
-static const u8 gIntro1EonTiles_Unused[] = INCBIN_U8("graphics/intro/intro1_eon.4bpp.lz");
+static const u32 gIntro1EonTiles_Unused[] = INCBIN_U32("graphics/intro/intro1_eon.4bpp.lz");
static const u8 sUnknownBytes[] = {
0x02, 0x03, 0x04, 0x05, 0x01, 0x01, 0x01, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x02, 0x0D,
0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x02, 0x0D, 0x0E, 0x0F,
@@ -1542,8 +1542,8 @@ static void Task_IntroLoadPart1Graphics3(u8 taskId)
LZDecompressVram(gIntro3GroudonTilemap, (void *)(VRAM + 0xC000));
LZDecompressVram(gIntro3LegendBgGfx, (void *)(VRAM + 0x4000));
LZDecompressVram(gIntro3GroudonBgTilemap, (void *)(VRAM + 0xE000));
- LoadCompressedObjectPicUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_058)]);
- LoadCompressedObjectPaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_058)]);
+ LoadCompressedObjectPicUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]);
+ LoadCompressedObjectPaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]);
CpuCopy16(gIntro3BgPal, gPlttBufferUnfaded, sizeof(gIntro3BgPal));
gTasks[taskId].func = Task_IntroLoadPart1Graphics4;
}
diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c
index d570b2992..20a360901 100644
--- a/src/intro_credits_graphics.c
+++ b/src/intro_credits_graphics.c
@@ -21,36 +21,36 @@ struct IntroCreditsSpriteMetadata
static const u16 gUnknown_085F06E0[] = INCBIN_U16("graphics/intro/intro2_grass.gbapal");
static const u16 gUnknown_085F0700[] = INCBIN_U16("graphics/intro/intro2_grass_afternoon.gbapal");
static const u16 gUnknown_085F0720[] = INCBIN_U16("graphics/intro/intro2_grass_night.gbapal");
-static const u8 gUnknown_085F0740[] = INCBIN_U8("graphics/intro/intro2_grass.4bpp.lz");
-static const u8 gUnknown_085F0BC0[] = INCBIN_U8("graphics/intro/intro2_grass_map.bin.lz");
+static const u32 gUnknown_085F0740[] = INCBIN_U32("graphics/intro/intro2_grass.4bpp.lz");
+static const u32 gUnknown_085F0BC0[] = INCBIN_U32("graphics/intro/intro2_grass_map.bin.lz");
static const u16 gUnknown_085F0CFC[] = INCBIN_U16("graphics/intro/85F0CFC.gbapal");
static const u16 gUnknown_085F0D5C[] = INCBIN_U16("graphics/intro/85F0D5C.gbapal");
-static const u8 gUnknown_085F0DBC[] = INCBIN_U8("graphics/intro/intro2_bgclouds.4bpp.lz");
-static const u8 gUnknown_085F1398[] = INCBIN_U8("graphics/intro/intro2_bgclouds_map.bin.lz");
+static const u32 gUnknown_085F0DBC[] = INCBIN_U32("graphics/intro/intro2_bgclouds.4bpp.lz");
+static const u32 gUnknown_085F1398[] = INCBIN_U32("graphics/intro/intro2_bgclouds_map.bin.lz");
static const u16 gUnknown_085F1668[] = INCBIN_U16("graphics/intro/intro2_bgclouds.gbapal");
static const u16 gUnknown_085F1688[] = INCBIN_U16("graphics/intro/intro2_bgclouds_afternoon.gbapal");
-static const u8 gUnknown_085F16A8[] = INCBIN_U8("graphics/intro/intro2_bgclouds2.4bpp.lz");
+static const u32 gUnknown_085F16A8[] = INCBIN_U32("graphics/intro/intro2_bgclouds2.4bpp.lz");
static const u16 gUnknown_085F17E4[] = INCBIN_U16("graphics/intro/intro2_bgtrees2.gbapal");
static const u16 gUnknown_085F1804[] = INCBIN_U16("graphics/intro/intro2_bgtrees2_afternoon.gbapal");
-static const u8 gUnknown_085F1824[] = INCBIN_U8("graphics/intro/intro2_bgtrees.4bpp.lz");
-static const u8 gUnknown_085F1EAC[] = INCBIN_U8("graphics/intro/intro2_bgtrees_map.bin.lz");
+static const u32 gUnknown_085F1824[] = INCBIN_U32("graphics/intro/intro2_bgtrees.4bpp.lz");
+static const u32 gUnknown_085F1EAC[] = INCBIN_U32("graphics/intro/intro2_bgtrees_map.bin.lz");
static const u16 gUnknown_085F21B0[] = INCBIN_U16("graphics/intro/intro2_bgtrees.gbapal");
-static const u8 gIntro2TreeTiles[] = INCBIN_U8("graphics/intro/intro2_bgtreessmall.4bpp.lz");
+static const u32 gIntro2TreeTiles[] = INCBIN_U32("graphics/intro/intro2_bgtreessmall.4bpp.lz");
static const u16 gUnknown_085F231C[] = INCBIN_U16("graphics/intro/85F231C.gbapal");
-static const u8 gUnknown_085F235C[] = INCBIN_U8("graphics/intro/intro2_bgnight.4bpp.lz");
+static const u32 gUnknown_085F235C[] = INCBIN_U32("graphics/intro/intro2_bgnight.4bpp.lz");
static const u16 gUnknown_085F2548[] = INCBIN_U16("graphics/intro/intro2_bgnight.gbapal");
-static const u8 gUnknown_085F2568[] = INCBIN_U8("graphics/intro/intro2_bgnight_map.bin.lz");
-static const u8 gIntro2NightTiles[] = INCBIN_U8("graphics/intro/intro2_night.4bpp.lz");
+static const u32 gUnknown_085F2568[] = INCBIN_U32("graphics/intro/intro2_bgnight_map.bin.lz");
+static const u32 gIntro2NightTiles[] = INCBIN_U32("graphics/intro/intro2_night.4bpp.lz");
static const u16 gIntro2BrendanPalette[] = INCBIN_U16("graphics/intro/intro2_brendan.gbapal");
-static const u8 gIntro2BrendanTiles[] = INCBIN_U8("graphics/intro/intro2_brendan.4bpp.lz");
+static const u32 gIntro2BrendanTiles[] = INCBIN_U32("graphics/intro/intro2_brendan.4bpp.lz");
static const u16 gIntro2MayPalette[] = INCBIN_U16("graphics/intro/intro2_may.gbapal");
static const u16 gUnknown_085F3490[0xF0] = {0};
-static const u8 gIntro2MayTiles[] = INCBIN_U8("graphics/intro/intro2_may.4bpp.lz");
-static const u8 gIntro2BicycleTiles[] = INCBIN_U8("graphics/intro/intro2_bicycle.4bpp.lz");
+static const u32 gIntro2MayTiles[] = INCBIN_U32("graphics/intro/intro2_may.4bpp.lz");
+static const u32 gIntro2BicycleTiles[] = INCBIN_U32("graphics/intro/intro2_bicycle.4bpp.lz");
static const u16 gIntro2LatiosPalette[] = INCBIN_U16("graphics/intro/intro2_latios.gbapal");
-static const u8 gIntro2LatiosTiles[] = INCBIN_U8("graphics/intro/intro2_latios.4bpp.lz");
+static const u32 gIntro2LatiosTiles[] = INCBIN_U32("graphics/intro/intro2_latios.4bpp.lz");
static const u16 gIntro2LatiasPalette[] = INCBIN_U16("graphics/intro/intro2_latias.gbapal");
-static const u8 gIntro2LatiasTiles[] = INCBIN_U8("graphics/intro/intro2_latias.4bpp.lz");
+static const u32 gIntro2LatiasTiles[] = INCBIN_U32("graphics/intro/intro2_latias.4bpp.lz");
static void sub_817B62C(struct Sprite *sprite);
static void nullsub_65(struct Sprite *sprite);
@@ -331,23 +331,23 @@ static void sub_817B458(u8);
void load_intro_part2_graphics(u8 a)
{
- LZ77UnCompVram(&gUnknown_085F0740, (void *)(VRAM + 0x4000));
- LZ77UnCompVram(&gUnknown_085F0BC0, (void *)(VRAM + 0x7800));
+ LZ77UnCompVram(gUnknown_085F0740, (void *)(VRAM + 0x4000));
+ LZ77UnCompVram(gUnknown_085F0BC0, (void *)(VRAM + 0x7800));
LoadPalette(&gUnknown_085F06E0, 240, 32);
switch (a)
{
case 0:
default:
- LZ77UnCompVram(&gUnknown_085F0DBC, (void *)(VRAM));
- LZ77UnCompVram(&gUnknown_085F1398, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F0DBC, (void *)(VRAM));
+ LZ77UnCompVram(gUnknown_085F1398, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_085F0CFC, 0, 96);
LoadCompressedObjectPic(gUnknown_085F5064);
LoadPalette(&gUnknown_085F1668, 256, 32);
sub_817B76C();
break;
case 1:
- LZ77UnCompVram(&gUnknown_085F1824, (void *)(VRAM));
- LZ77UnCompVram(&gUnknown_085F1EAC, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F1824, (void *)(VRAM));
+ LZ77UnCompVram(gUnknown_085F1EAC, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_085F17E4, 0, 32);
LoadCompressedObjectPic(gUnknown_085F50EC);
LoadPalette(&gUnknown_085F21B0, 256, 32);
@@ -437,36 +437,36 @@ void sub_817B150(u8 a)
void sub_817B1C8(u8 a)
{
- LZ77UnCompVram(&gUnknown_085F0740, (void *)(VRAM + 0x4000));
- LZ77UnCompVram(&gUnknown_085F0BC0, (void *)(VRAM + 0x7800));
+ LZ77UnCompVram(gUnknown_085F0740, (void *)(VRAM + 0x4000));
+ LZ77UnCompVram(gUnknown_085F0BC0, (void *)(VRAM + 0x7800));
switch (a)
{
case 0:
default:
LoadPalette(&gUnknown_085F06E0, 240, 32);
- LZ77UnCompVram(&gUnknown_085F0DBC, (void *)(VRAM));
- LZ77UnCompVram(&gUnknown_085F1398, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F0DBC, (void *)(VRAM));
+ LZ77UnCompVram(gUnknown_085F1398, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_085F0CFC, 0, 96);
LoadCompressedObjectPic(gUnknown_085F5064);
- LZ77UnCompVram(&gUnknown_085F16A8, (void *)(VRAM + 0x10000));
+ LZ77UnCompVram(gUnknown_085F16A8, (void *)(VRAM + 0x10000));
LoadPalette(&gUnknown_085F1668, 256, 32);
sub_817B76C();
break;
case 1:
LoadPalette(&gUnknown_085F0700, 240, 32);
- LZ77UnCompVram(&gUnknown_085F0DBC, (void *)(VRAM));
- LZ77UnCompVram(&gUnknown_085F1398, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F0DBC, (void *)(VRAM));
+ LZ77UnCompVram(gUnknown_085F1398, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_085F0D5C, 0, 96);
LoadCompressedObjectPic(gUnknown_085F5064);
- LZ77UnCompVram(&gUnknown_085F16A8, (void *)(VRAM + 0x10000));
+ LZ77UnCompVram(gUnknown_085F16A8, (void *)(VRAM + 0x10000));
LoadPalette(&gUnknown_085F1688, 256, 32);
sub_817B76C();
break;
case 2:
case 3:
LoadPalette(&gUnknown_085F0700, 240, 32);
- LZ77UnCompVram(&gUnknown_085F1824, (void *)(VRAM));
- LZ77UnCompVram(&gUnknown_085F1EAC, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F1824, (void *)(VRAM));
+ LZ77UnCompVram(gUnknown_085F1EAC, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_085F1804, 0, 32);
LoadCompressedObjectPic(gUnknown_085F50EC);
LoadPalette(&gUnknown_085F1804, 256, 32);
@@ -474,8 +474,8 @@ void sub_817B1C8(u8 a)
break;
case 4:
LoadPalette(&gUnknown_085F0720, 240, 32);
- LZ77UnCompVram(&gUnknown_085F235C, (void *)(VRAM));
- LZ77UnCompVram(&gUnknown_085F2568, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F235C, (void *)(VRAM));
+ LZ77UnCompVram(gUnknown_085F2568, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_085F231C, 0, 64);
LoadCompressedObjectPic(gUnknown_085F5180);
LoadPalette(&gUnknown_085F2548, 256, 32);
diff --git a/src/item.c b/src/item.c
index b4a2fd6f0..6d2dbd561 100644
--- a/src/item.c
+++ b/src/item.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "item.h"
#include "berry.h"
-#include "constants/items.h"
#include "string_util.h"
#include "text.h"
#include "event_data.h"
@@ -10,11 +9,13 @@
#include "item_menu.h"
#include "strings.h"
#include "load_save.h"
+#include "item_use.h"
+#include "battle_pyramid.h"
#include "battle_pyramid_bag.h"
+#include "constants/items.h"
+#include "constants/hold_effects.h"
-extern bool8 InBattlePyramid(void);
extern u16 gUnknown_0203CF30[];
-extern const struct Item gItems[];
// this file's functions
static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count);
@@ -23,6 +24,10 @@ static bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count);
// EWRAM variables
EWRAM_DATA struct BagPocket gBagPockets[POCKETS_COUNT] = {0};
+// rodata
+#include "data/text/item_descriptions.h"
+#include "data/items.h"
+
// code
static u16 GetBagItemQuantity(u16 *quantity)
{
diff --git a/src/item_icon.c b/src/item_icon.c
index 68ec1daf0..41c6589f5 100644
--- a/src/item_icon.c
+++ b/src/item_icon.c
@@ -1,16 +1,17 @@
#include "global.h"
+#include "decompress.h"
+#include "graphics.h"
#include "item_icon.h"
#include "malloc.h"
#include "sprite.h"
-#include "decompress.h"
#include "constants/items.h"
-#include "data/item_icon_table.h"
// EWRAM vars
EWRAM_DATA void *gItemIconDecompressionBuffer = NULL;
EWRAM_DATA void *gItemIcon4x4Buffer = NULL;
// const rom data
+#include "data/item_icon_table.h"
static const struct OamData sOamData_ItemIcon =
{
diff --git a/src/item_menu.c b/src/item_menu.c
index bb619cac8..1744a1bfa 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -2,7 +2,7 @@
#include "item_menu.h"
#include "battle.h"
#include "battle_controllers.h"
-#include "battle_frontier_2.h"
+#include "frontier_util.h"
#include "berry_tag_screen.h"
#include "bg.h"
#include "constants/items.h"
@@ -47,6 +47,7 @@
#include "menu_helpers.h"
#include "window.h"
#include "apprentice.h"
+#include "battle_pike.h"
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)());
void CB2_Bag(void);
@@ -268,7 +269,7 @@ const u8 gUnknown_08614164[][3] = {
const struct WindowTemplate gUnknown_08614174[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 14,
.tilemapTop = 2,
.width = 15,
@@ -277,7 +278,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.baseBlock = 0x27,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 0,
.tilemapTop = 13,
.width = 14,
@@ -286,7 +287,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.baseBlock = 0x117,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 4,
.tilemapTop = 1,
.width = 8,
@@ -295,7 +296,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.baseBlock = 0x1A1,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 13,
.width = 5,
@@ -304,7 +305,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.baseBlock = 0x16B,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 7,
.tilemapTop = 13,
.width = 4,
@@ -313,7 +314,7 @@ const struct WindowTemplate gUnknown_08614174[] =
.baseBlock = 0x189,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 27,
@@ -327,7 +328,7 @@ const struct WindowTemplate gUnknown_08614174[] =
const struct WindowTemplate gUnknown_086141AC[] =
{
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 22,
.tilemapTop = 17,
.width = 7,
@@ -336,7 +337,7 @@ const struct WindowTemplate gUnknown_086141AC[] =
.baseBlock = 0x21D,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 22,
.tilemapTop = 15,
.width = 7,
@@ -345,7 +346,7 @@ const struct WindowTemplate gUnknown_086141AC[] =
.baseBlock = 0x21D,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 15,
.tilemapTop = 15,
.width = 14,
@@ -354,7 +355,7 @@ const struct WindowTemplate gUnknown_086141AC[] =
.baseBlock = 0x21D,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 15,
.tilemapTop = 13,
.width = 14,
@@ -363,7 +364,7 @@ const struct WindowTemplate gUnknown_086141AC[] =
.baseBlock = 0x21D,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 27,
@@ -372,7 +373,7 @@ const struct WindowTemplate gUnknown_086141AC[] =
.baseBlock = 0x1B1,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 24,
.tilemapTop = 15,
.width = 5,
@@ -381,7 +382,7 @@ const struct WindowTemplate gUnknown_086141AC[] =
.baseBlock = 0x21D,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 21,
.tilemapTop = 9,
.width = 5,
@@ -390,7 +391,7 @@ const struct WindowTemplate gUnknown_086141AC[] =
.baseBlock = 0x21D,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 24,
.tilemapTop = 17,
.width = 5,
@@ -399,7 +400,7 @@ const struct WindowTemplate gUnknown_086141AC[] =
.baseBlock = 0x21D,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 18,
.tilemapTop = 11,
.width = 10,
@@ -408,7 +409,7 @@ const struct WindowTemplate gUnknown_086141AC[] =
.baseBlock = 0x245,
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 10,
@@ -445,7 +446,6 @@ EWRAM_DATA u16 gSpecialVar_ItemId = 0;
EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0;
extern u8 *gPocketNamesStringsTable[];
-extern u8 gUnknown_08D9A88C[];
extern struct ListMenuTemplate gUnknown_08613F9C;
extern const u8 gMoveNames[][0xD];
extern u8* gReturnToXStringsTable[];
@@ -1029,7 +1029,7 @@ void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void ( *callback)(u
data[10] = AddItemMessageWindow(4);
FillWindowPixelBuffer(data[10], 17);
- DisplayMessageAndContinueTask(taskId, data[10], 10, 13, fontId, GetPlayerTextSpeed(), str, callback);
+ DisplayMessageAndContinueTask(taskId, data[10], 10, 13, fontId, GetPlayerTextSpeedDelay(), str, callback);
schedule_bg_copy_tilemap_to_vram(1);
}
@@ -1543,7 +1543,7 @@ void Task_HandleInBattleItemMenuInput(u8 taskId)
{
if (sub_81221EC() != TRUE)
{
- s8 r4 = Menu_ProcessInputNoWrapAround();
+ s8 r4 = Menu_ProcessInputNoWrap();
switch (r4)
{
case -2:
diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c
index 5dd5fd31d..85b42b9b3 100644
--- a/src/item_menu_icons.c
+++ b/src/item_menu_icons.c
@@ -8,23 +8,15 @@
#include "menu_helpers.h"
#include "berry.h"
#include "graphics.h"
-#include "constants/items.h"
#include "item.h"
-#include "item_use.h"
-#include "constants/hold_effects.h"
+#include "constants/items.h"
struct CompressedTilesPal
{
- const u8 *tiles;
- const u8 *pal;
+ const u32 *tiles;
+ const u32 *pal;
};
-extern void DoHorizontalLunge(struct Sprite *sprite);
-extern void DoVerticalDip(struct Sprite *sprite);
-extern void SlideMonToOriginalPos(struct Sprite *sprite);
-extern void SlideMonToOffset(struct Sprite *sprite);
-extern void sub_80D5B48(struct Sprite *sprite);
-
// this file's functions
static void SpriteCB_BagVisualSwitchingPockets(struct Sprite *sprite);
static void SpriteCB_ShakeBagVisual(struct Sprite *sprite);
@@ -414,64 +406,6 @@ static const struct SpriteTemplate gUnknown_0857FE10 =
.callback = SpriteCallbackDummy,
};
-const struct SpriteTemplate gHorizontalLungeSpriteTemplate =
-{
- .tileTag = 0,
- .paletteTag = 0,
- .oam = &gDummyOamData,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = DoHorizontalLunge,
-};
-
-const struct SpriteTemplate gVerticalDipSpriteTemplate =
-{
- .tileTag = 0,
- .paletteTag = 0,
- .oam = &gDummyOamData,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = DoVerticalDip,
-};
-
-const struct SpriteTemplate gSlideMonToOriginalPosSpriteTemplate =
-{
- .tileTag = 0,
- .paletteTag = 0,
- .oam = &gDummyOamData,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = SlideMonToOriginalPos,
-};
-
-const struct SpriteTemplate gSlideMonToOffsetSpriteTemplate =
-{
- .tileTag = 0,
- .paletteTag = 0,
- .oam = &gDummyOamData,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = SlideMonToOffset,
-};
-
-const struct SpriteTemplate gUnknown_0857FE88 =
-{
- .tileTag = 0,
- .paletteTag = 0,
- .oam = &gDummyOamData,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80D5B48,
-};
-
-#include "data/text/item_descriptions.h"
-#include "data/items.h"
-
// code
void RemoveBagSprite(u8 id)
{
diff --git a/src/item_use.c b/src/item_use.c
index 133dd844f..e840e0859 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -58,7 +58,7 @@ extern void sub_81C5924(void);
extern void sub_81C59BC(void);
extern void sub_81AB9A8(u8);
extern void sub_81ABA88(u8);
-extern void sub_80B7CC8(void);
+extern void StartEscapeRopeFieldEffect(void);
extern u8* sub_806CF78(u16);
extern void sub_81B89F0(void);
extern u8 GetItemEffectType(u16);
@@ -260,7 +260,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))
@@ -890,7 +890,7 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId)
void task08_080A1C44(u8 taskId)
{
ResetInitialPlayerAvatarState();
- sub_80B7CC8();
+ StartEscapeRopeFieldEffect();
DestroyTask(taskId);
}
diff --git a/src/learn_move.c b/src/learn_move.c
index ff23cb3dc..7717a5193 100644
--- a/src/learn_move.c
+++ b/src/learn_move.c
@@ -377,7 +377,7 @@ static void LearnMoveMain(void)
break;
case 9:
{
- s8 selection = Menu_ProcessInputNoWrap_();
+ s8 selection = Menu_ProcessInputNoWrapClearOnChoose();
if (selection == 0)
{
@@ -414,7 +414,7 @@ static void LearnMoveMain(void)
break;
case 13:
{
- s8 selection = Menu_ProcessInputNoWrap_();
+ s8 selection = Menu_ProcessInputNoWrapClearOnChoose();
if (selection == 0)
{
@@ -447,7 +447,7 @@ static void LearnMoveMain(void)
break;
case 18:
{
- s8 var = Menu_ProcessInputNoWrap_();
+ s8 var = Menu_ProcessInputNoWrapClearOnChoose();
if (var == 0)
{
@@ -474,7 +474,7 @@ static void LearnMoveMain(void)
break;
case 26:
{
- s8 var = Menu_ProcessInputNoWrap_();
+ s8 var = Menu_ProcessInputNoWrapClearOnChoose();
if (var == 0)
{
diff --git a/src/librfu_stwi.c b/src/librfu_stwi.c
index 21d38bb38..556b79bf8 100644
--- a/src/librfu_stwi.c
+++ b/src/librfu_stwi.c
@@ -246,7 +246,7 @@ void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3)
if (!STWI_init(RFU_SYSTEM_CONFIG))
{
u8 *packetBytes;
-
+
gRfuState->txParams = 1;
packetBytes = gRfuState->txPacket->rfuPacket8.data;
@@ -348,7 +348,7 @@ void STWI_send_DataTxREQ(void *in, u8 size)
u8 txParams = (size / sizeof(u32));
if (size & (sizeof(u32) - 1))
txParams += 1;
-
+
gRfuState->txParams = txParams;
CpuCopy32(in, gRfuState->txPacket->rfuPacket32.data, gRfuState->txParams * sizeof(u32));
STWI_start_Command();
@@ -469,11 +469,11 @@ void STWI_send_CPR_StartREQ(u16 unk0, u16 unk1, u8 unk2)
{
u32 *packetData;
u32 arg1;
-
+
if (!STWI_init(RFU_CPR_START))
{
gRfuState->txParams = 2;
-
+
arg1 = unk1 | (unk0 << 16);
packetData = gRfuState->txPacket->rfuPacket32.data;
packetData[0] = arg1;
@@ -569,7 +569,7 @@ void STWI_set_timer(u8 unk)
void STWI_stop_timer(void)
{
gRfuState->timerState = 0;
-
+
REG_TMCNT_L(gRfuState->timerSelect) = 0;
REG_TMCNT_H(gRfuState->timerSelect) = 0;
}
@@ -612,7 +612,7 @@ u16 STWI_init(u8 request)
gRfuState->timerActive = 0;
gRfuState->unk_12 = 0;
gRfuState->unk_15 = 0;
-
+
REG_RCNT = 0x100;
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
return FALSE;
@@ -622,22 +622,22 @@ u16 STWI_init(u8 request)
int STWI_start_Command()
{
u16 imeTemp;
-
+
// Yes, it matters that it's casted to a u32...
*(u32*)gRfuState->txPacket->rfuPacket8.data = 0x99660000 | (gRfuState->txParams << 8) | gRfuState->activeCommand;
REG_SIODATA32 = gRfuState->txPacket->rfuPacket32.command;
-
+
gRfuState->unk_0 = 0;
gRfuState->unk_5 = 1;
-
+
imeTemp = REG_IME;
REG_IME = 0;
REG_IE |= (INTR_FLAG_TIMER0 << gRfuState->timerSelect);
REG_IE |= INTR_FLAG_SERIAL;
REG_IME = imeTemp;
-
+
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_MULTI_BUSY | SIO_115200_BPS;
-
+
return 0;
}
@@ -654,7 +654,7 @@ int STWI_restart_Command(void)
{
gRfuState->unk_12 = 1;
gRfuState->unk_2c = 0;
-
+
if (gRfuState->callbackM)
gRfuState->callbackM(gRfuState->activeCommand, gRfuState->unk_12);
}
@@ -662,18 +662,18 @@ int STWI_restart_Command(void)
{
gRfuState->unk_12 = 1;
gRfuState->unk_2c = 0;
-
+
if (gRfuState->callbackM)
gRfuState->callbackM(gRfuState->activeCommand, gRfuState->unk_12);
-
+
gRfuState->unk_0 = 4; //TODO: what's 4
}
}
-
+
return 0;
}
-int STWI_reset_ClockCounter()
+int STWI_reset_ClockCounter(void)
{
gRfuState->unk_0 = 5; //TODO: what is 5
gRfuState->txParams = 0;
@@ -682,6 +682,6 @@ int STWI_reset_ClockCounter()
REG_SIOCNT = 0;
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
REG_SIOCNT = (SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS) + 0x7F;
-
+
return 0;
}
diff --git a/src/link.c b/src/link.c
index 627327181..687a6c07b 100644
--- a/src/link.c
+++ b/src/link.c
@@ -172,8 +172,8 @@ static void SendRecvDone(void);
// .rodata
ALIGNED(4) const u16 gWirelessLinkDisplayPal[] = INCBIN_U16("graphics/interface/wireless_link_display.gbapal");
-const u8 gWirelessLinkDisplayGfx[] = INCBIN_U8("graphics/interface/wireless_link_display.4bpp.lz");
-const u8 gWirelessLinkDisplayTilemap[] = INCBIN_U8("graphics/interface/wireless_link_display.bin.lz");
+const u32 gWirelessLinkDisplayGfx[] = INCBIN_U32("graphics/interface/wireless_link_display.4bpp.lz");
+const u32 gWirelessLinkDisplayTilemap[] = INCBIN_U32("graphics/interface/wireless_link_display.bin.lz");
const u16 gLinkTestDigitsPal[] = INCBIN_U16("graphics/interface/link_test_digits.gbapal");
const u16 gLinkTestDigitsGfx[] = INCBIN_U16("graphics/interface/link_test_digits.4bpp");
const u8 unkstring_82ed160[] = _("{HIGHLIGHT TRANSPARENT}{COLOR WHITE}");
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 29256899d..308ad615c 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -1,26 +1,24 @@
-
-// Includes
#include "global.h"
-#include "malloc.h"
#include "battle.h"
#include "berry_blender.h"
-#include "task.h"
-#include "random.h"
#include "decompress.h"
-#include "text.h"
-#include "string_util.h"
#include "event_data.h"
-#include "overworld.h"
-#include "link.h"
+#include "gpu_regs.h"
#include "librfu.h"
-#include "rom_8011DC0.h"
+#include "link.h"
#include "link_rfu.h"
+#include "malloc.h"
+#include "overworld.h"
+#include "random.h"
+#include "palette.h"
+#include "rom_8011DC0.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "constants/species.h"
extern u16 gUnknown_03005DA8;
-
-// Static type declarations
-
-// Static RAM declarations
+extern void nullsub_89(u8 taskId);
struct UnkRfuStruct_1 gUnknown_03004140;
struct UnkRfuStruct_2 gUnknown_03005000;
@@ -32,12 +30,11 @@ IWRAM_DATA u16 gUnknown_03000D90[8];
EWRAM_DATA u8 gWirelessStatusIndicatorSpriteId = 0;
EWRAM_DATA ALIGNED(4) struct UnkLinkRfuStruct_02022B14 gUnknown_02022B14 = {};
-EWRAM_DATA ALIGNED(2) u8 gUnknown_02022B22[8] = {};
+EWRAM_DATA ALIGNED(2) u8 gUnknown_02022B22[PLAYER_NAME_LENGTH + 1] = {};
EWRAM_DATA struct UnkLinkRfuStruct_02022B2C gUnknown_02022B2C = {};
EWRAM_DATA struct UnkLinkRfuStruct_02022B44 gUnknown_02022B44 = {};
// Static ROM declarations
-
static void sub_800C000(void);
static void sub_800C7B4(u16 r8, u16 r6);
static void sub_800C744(u32 a0);
@@ -68,23 +65,26 @@ static void rfufunc_80FA020(void);
bool32 sub_8010454(u32 a0);
static void sub_8010528(void);
void sub_8010750(void);
-int sub_80107A0(void);
+s32 sub_80107A0(void);
void sub_801084C(u8 taskId);
void sub_80109E8(u16 a0);
void sub_8010A70(void *a0);
void sub_8010AAC(u8 taskId);
void sub_8010D0C(u8 taskId);
-void sub_80115EC(u16 a0);
+void sub_80115EC(s32 a0);
u8 sub_8011CE4(const u8 *a0, u16 a1);
-void sub_8011D6C(u8 a0);
-void sub_8011E94(u8 a0, u8 a1);
-u8 sub_8012224(void);
+void sub_8011D6C(u32 a0);
+void sub_8011E94(u32 a0, u32 a1);
+bool8 sub_8012224(void);
void sub_801227C(void);
+void sub_801209C(u8 taskId);
+void sub_8011BF8(void);
+void sub_8011BA4(void);
// .rodata
const u16 gWirelessLinkIconPalette[] = INCBIN_U16("graphics/interface/wireless_link_icon.gbapal");
-const u8 gWirelessLinkIconPic[] = INCBIN_U8("graphics/interface/wireless_link_icon.4bpp.lz");
+const u32 gWirelessLinkIconPic[] = INCBIN_U32("graphics/interface/wireless_link_icon.4bpp.lz");
const u8 sWireless_ASCIItoRSETable[] = {
0xff, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x37,
0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
@@ -308,6 +308,11 @@ const char gUnknown_082ED7EC[] = "PokemonSioInfo";
const char gUnknown_082ED7FC[] = "LINK LOSS DISCONNECT!";
const char gUnknown_082ED814[] = "LINK LOSS RECOVERY NOW";
+extern const char gUnknown_082ED82C[];
+extern const char gUnknown_082ED84B[];
+extern const char gUnknown_082ED85B[];
+extern const char gUnknown_082ED868[];
+
// .text
u32 sub_800BEC0(void)
@@ -352,7 +357,7 @@ void rfu_REQ_sendData_wrapper(u8 r2)
rfu_REQ_sendData(r2);
}
-int sub_800BF4C(void (*func1)(u8, u8), void (*func2)(u16))
+s32 sub_800BF4C(void (*func1)(u8, u8), void (*func2)(u16))
{
if (func1 == NULL)
{
@@ -474,7 +479,6 @@ u8 sub_800C054(u8 r5, u16 r7, u16 r8, const u16 *r6)
u8 sub_800C12C(u16 r6, u16 r8)
{
u8 i;
- struct RfuUnk5 *tmp;
if (gUnknown_03004140.unk_04 != 0 && (gUnknown_03004140.unk_04 < 9 || gUnknown_03004140.unk_04 > 11))
{
@@ -1685,8 +1689,8 @@ void sub_800D658(void)
void sub_800D6C8(struct UnkRfuStruct_2_Sub_124 *ptr)
{
- int i;
- int j;
+ s32 i;
+ s32 j;
for (i = 0; i < 32; i++)
{
@@ -1703,8 +1707,8 @@ void sub_800D6C8(struct UnkRfuStruct_2_Sub_124 *ptr)
void sub_800D724(struct UnkRfuStruct_2_Sub_9e8 *ptr)
{
- int i;
- int j;
+ s32 i;
+ s32 j;
for (i = 0; i < 40; i++)
{
@@ -1721,8 +1725,8 @@ void sub_800D724(struct UnkRfuStruct_2_Sub_9e8 *ptr)
void sub_800D780(struct UnkRfuStruct_Sub_Unused *ptr)
{
- int i;
- int j;
+ s32 i;
+ s32 j;
for (i = 0; i < 2; i++)
{
@@ -1739,7 +1743,7 @@ void sub_800D780(struct UnkRfuStruct_Sub_Unused *ptr)
void sub_800D7D8(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2)
{
- int i;
+ s32 i;
u16 imeBak;
u8 count;
@@ -1779,7 +1783,7 @@ void sub_800D7D8(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2)
void sub_800D888(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2)
{
- int i;
+ s32 i;
u16 imeBak;
if (q1->unk_232 < 40)
@@ -1818,7 +1822,7 @@ void sub_800D888(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2)
bool8 sub_800D934(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2)
{
u16 imeBak;
- int i;
+ s32 i;
imeBak = REG_IME;
REG_IME = 0;
@@ -1844,7 +1848,7 @@ bool8 sub_800D934(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2)
bool8 sub_800D9DC(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2)
{
- int i;
+ s32 i;
u16 imeBak;
if (q1->unk_230 == q1->unk_231 || q1->unk_233 != 0)
@@ -1866,7 +1870,7 @@ bool8 sub_800D9DC(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2)
void sub_800DA68(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2)
{
- int i;
+ s32 i;
if (q2[1] == 0)
{
@@ -1893,7 +1897,7 @@ void sub_800DA68(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2)
static bool8 sub_800DAC8(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2)
{
- int i;
+ s32 i;
if (q1->unk_1e == 0)
{
@@ -1914,7 +1918,7 @@ static bool8 sub_800DAC8(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2)
void sub_800DB18(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2)
{
- int i;
+ s32 i;
if (q1->unk_202 < 2)
{
@@ -1934,7 +1938,7 @@ void sub_800DB18(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2)
bool8 sub_800DB84(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2)
{
- int i;
+ s32 i;
if (q1->unk_200 == q1->unk_201 || q1->unk_203)
{
@@ -1952,7 +1956,7 @@ bool8 sub_800DB84(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2)
void sub_800DBF8(u8 *q1, u8 mode)
{
- int i;
+ s32 i;
u8 rval;
u16 r5 = 0;
switch (mode)
@@ -1996,7 +2000,7 @@ void sub_800DBF8(u8 *q1, u8 mode)
void PkmnStrToASCII(u8 *q1, const u8 *q2)
{
- int i;
+ s32 i;
for (i = 0; q2[i] != EOS; i++)
{
@@ -2007,7 +2011,7 @@ void PkmnStrToASCII(u8 *q1, const u8 *q2)
void ASCIIToPkmnStr(u8 *q1, const u8 *q2)
{
- int i;
+ s32 i;
for (i = 0; q2[i] != 0; i++)
{
@@ -2020,20 +2024,17 @@ void ASCIIToPkmnStr(u8 *q1, const u8 *q2)
u8 sub_800DD1C(u8 maxFlags)
{
u8 flagCount = 0;
- u8 flags = gUnknown_03007890->unk_02;
+ u32 flags = gUnknown_03007890->unk_02;
u8 i;
if (gUnknown_03007890->unk_00 == 1)
{
- i = 0;
for (i = 0; i < 4; flags >>= 1, i++)
{
if (flags & 1)
{
if (maxFlags == flagCount + 1)
- {
return gUnknown_03007890->unk_0a[i];
- }
flagCount++;
}
}
@@ -2043,9 +2044,7 @@ u8 sub_800DD1C(u8 maxFlags)
for (i = 0; i < 4; flags >>= 1, i++)
{
if (flags & 1)
- {
return gUnknown_03007890->unk_0a[i];
- }
}
}
return 0;
@@ -2120,9 +2119,9 @@ NAKED u8 sub_800DD1C(u8 maxFlags)
}
#endif
-void sub_800DD94(struct UnkLinkRfuStruct_02022B14 *data, u8 r9, bool32 r2, int r3)
+void sub_800DD94(struct UnkLinkRfuStruct_02022B14 *data, u8 r9, bool32 r2, s32 r3)
{
- int i;
+ s32 i;
for (i = 0; i < 2; i++)
{
@@ -2156,12 +2155,12 @@ bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx)
if (sub_8010454(gUnknown_03007890->unk_14[idx].unk_04) && ((gUnknown_03007890->unk_07 >> idx) & 1))
{
memcpy(buff1, &gUnknown_03007890->unk_14[idx].unk_06, 0xD);
- memcpy(buff2, gUnknown_03007890->unk_14[idx].unk_15, sizeof(gUnknown_03007890->unk_14[idx].unk_15));
+ memcpy(buff2, gUnknown_03007890->unk_14[idx].playerName, PLAYER_NAME_LENGTH + 1);
}
else
{
memset(buff1, 0, 0xD);
- memset(buff2, 0, sizeof(gUnknown_03007890->unk_14[idx].unk_15));
+ memset(buff2, 0, sizeof(gUnknown_03007890->unk_14[idx].playerName));
}
}
else
@@ -2170,12 +2169,12 @@ bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx)
if (sub_8010454(gUnknown_03007890->unk_14[idx].unk_04))
{
memcpy(buff1, &gUnknown_03007890->unk_14[idx].unk_06, 0xD);
- memcpy(buff2, gUnknown_03007890->unk_14[idx].unk_15, sizeof(gUnknown_03007890->unk_14[idx].unk_15));
+ memcpy(buff2, gUnknown_03007890->unk_14[idx].playerName, PLAYER_NAME_LENGTH + 1);
}
else
{
memset(buff1, 0, 0xD);
- memset(buff2, 0, sizeof(gUnknown_03007890->unk_14[idx].unk_15));
+ memset(buff2, 0, PLAYER_NAME_LENGTH + 1);
}
}
return retVal;
@@ -2186,13 +2185,13 @@ bool8 sub_800DF34(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx)
bool8 retVal = FALSE;
if (gUnknown_03007890->unk_14[idx].unk_04 == 0x7F7D)
{
- *buff1 = gUnknown_03007890->unk_14[idx].unk_06;
- memcpy(buff2, gUnknown_03007890->unk_14[idx].unk_15, 8);
+ memcpy(buff1, &gUnknown_03007890->unk_14[idx].unk_06, 0xD);
+ memcpy(buff2, gUnknown_03007890->unk_14[idx].playerName, 8);
retVal = TRUE;
}
else
{
- *buff1 = (struct UnkLinkRfuStruct_02022B14){};
+ memset(buff1, 0, 0xD);
memset(buff2, 0, 8);
}
return retVal;
@@ -2200,7 +2199,7 @@ bool8 sub_800DF34(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx)
void sub_800DF90(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2)
{
- *buff1 = gUnknown_02022B14;
+ memcpy(buff1, &gUnknown_02022B14, 0xD);
memcpy(buff2, gUnknown_02022B22, 8);
}
@@ -2266,7 +2265,7 @@ u8 sub_800E124(void)
return 0;
}
-void sub_800E15C(struct Sprite *sprite, int signalStrengthAnimNum)
+void sub_800E15C(struct Sprite *sprite, s32 signalStrengthAnimNum)
{
if (sprite->data[2] != signalStrengthAnimNum)
{
@@ -2356,7 +2355,7 @@ void sub_800E378(struct UnkSaveSubstruct_3b98 *dest, u32 trainerId, const u8 *na
bool32 sub_800E388(const u8 *name)
{
- int i;
+ s32 i;
for (i = 0; i < 8; i++)
{
@@ -2372,10 +2371,10 @@ void sub_800E3A8(void)
{
if (gWirelessCommType != 0)
{
- int i;
- int j;
- int cnt;
- int sp0[5];
+ s32 i;
+ s32 j;
+ s32 cnt;
+ s32 sp0[5];
struct UnkSaveSubstruct_3b98 *sp14 = calloc(20, sizeof(struct UnkSaveSubstruct_3b98));
for (i = 0; i < GetLinkPlayerCount(); i++)
{
@@ -2419,7 +2418,7 @@ void sub_800E3A8(void)
bool32 sub_800E540(u16 id, u8 *name)
{
- int i;
+ s32 i;
for (i = 0; i < 20; i++)
{
@@ -2437,7 +2436,7 @@ bool32 sub_800E540(u16 id, u8 *name)
void sub_800E5AC(void)
{
- int i;
+ s32 i;
for (i = 0; i < 20; i++)
{
@@ -2446,19 +2445,19 @@ void sub_800E5AC(void)
}
}
-void nullsub_5(void *unused_0, u8 unused_1, u8 unused_2)
+void nullsub_5(const char *unused_0, u8 unused_1, u8 unused_2)
{
// debug?
}
-void nullsub_13(u8 unused_0, u8 unused_1, u8 unused_2, u8 unused_3)
+void nullsub_13(u16 unused_0, u8 unused_1, u8 unused_2, u8 unused_3)
{
}
void sub_800E604(void)
{
- int i;
+ s32 i;
u8 unk_ee_bak = gUnknown_03005000.unk_ee;
CpuFill16(0, &gUnknown_03005000, sizeof gUnknown_03005000);
gUnknown_03005000.unk_ee = unk_ee_bak;
@@ -2542,17 +2541,17 @@ void sub_800E748(u8 taskId)
}
}
-u8 sub_800E87C(u8 idx)
+s32 sub_800E87C(u8 idx)
{
return gUnknown_082ED6A5[idx];
}
-void sub_800E88C(int r2, int r5)
+void sub_800E88C(s32 r2, s32 r5)
{
u8 i;
u8 r4 = 1;
- int r1 = r2;
- int r6 = 0;
+ s32 r1 = r2;
+ s32 r6 = 0;
if (r5 == -1)
{
for (i = 0; i < 4; r2 >>= 1, i++)
@@ -2743,7 +2742,7 @@ void sub_800ED28(void)
void sub_800ED34(u16 unused)
{
- int i;
+ s32 i;
for (i = 0; i < 14; i++)
{
@@ -2820,7 +2819,7 @@ bool8 sub_800EE94(void)
return FALSE;
}
-bool8 sub_800EEBC(void)
+bool32 sub_800EEBC(void)
{
if (gUnknown_03005000.unk_04 == 7 && !sub_800C12C(gUnknown_03007890->unk_14[gUnknown_03005000.unk_c3d].unk_00, 240))
{
@@ -2885,7 +2884,7 @@ void sub_800EF88(u8 a0)
// FIXME: gRecvCmds should be in r6 and r7
void sub_800EFB0(void)
{
- int i, j;
+ s32 i, j;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 7; j++)
@@ -2947,7 +2946,7 @@ NAKED void sub_800EFB0(void)
void sub_800F014(void)
{
- int i;
+ s32 i;
for (i = 0; i < 7; i++)
{
gRecvCmds[0][i] = gSendCmd[i];
@@ -2981,8 +2980,8 @@ static void sub_800F048(void)
bool32 sub_800F0B8(void)
{
- int i;
- int j;
+ s32 i;
+ s32 j;
if (gUnknown_03007890->unk_06 == 0)
{
@@ -3137,7 +3136,7 @@ bool32 sub_800F1E0(void)
void sub_800F498(u16 *a0, u8 *a1)
{
- int i;
+ s32 i;
if (a0[0])
{
@@ -3203,13 +3202,11 @@ bool32 sub_800F4F0(void)
return sub_800F0B8();
}
-#ifdef NONMATCHING
void sub_800F638(u8 unused, u32 flags)
{
- int i;
- int j;
+ s32 i, j;
- u8 *r10 = gUnknown_03005000.unk_6c.unk_04;
+ const u8 *r10 = gUnknown_03005000.unk_6c.unk_04;
for (i = 0; i < gUnknown_03005000.unk_6c.unk_02; i++)
{
if (!(flags & 1))
@@ -3220,11 +3217,11 @@ void sub_800F638(u8 unused, u32 flags)
gUnknown_03000D90[j + 1] = (r10[12 * i + (j << 1) + 1] << 8) | r10[12 * i + (j << 1) + 0];
}
for (j = 0; j < 7; j++)
- // This should be an ascending loop.
- // GCC compiles this as descending.
{
gUnknown_03000D80[2 * j + 1] = gUnknown_03000D90[j] >> 8;
gUnknown_03000D80[2 * j + 0] = gUnknown_03000D90[j];
+
+ j++;j--; // Needed to match;
}
sub_800D888(&gUnknown_03005000.unk_9e8, gUnknown_03000D80);
gUnknown_03005000.unk_6c.unk_0c |= (1 << i);
@@ -3232,101 +3229,6 @@ void sub_800F638(u8 unused, u32 flags)
flags >>= 1;
}
}
-#else
-NAKED void sub_800F638(u8 unused, u32 flags)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tldr r0, =gUnknown_03005000\n"
- "\tldr r2, [r0, 0x70]\n"
- "\tmov r10, r2\n"
- "\tmovs r5, 0\n"
- "\tadds r2, r0, 0\n"
- "\tadds r2, 0x6E\n"
- "\tldrh r3, [r2]\n"
- "\tcmp r5, r3\n"
- "\tbge _0800F6D4\n"
- "\tmov r9, r0\n"
- "\tldr r0, =gUnknown_03000D90\n"
- "\tmov r8, r0\n"
- "_0800F65A:\n"
- "\tmovs r0, 0x1\n"
- "\tands r0, r1\n"
- "\tlsrs r7, r1, 1\n"
- "\tadds r6, r5, 0x1\n"
- "\tcmp r0, 0\n"
- "\tbne _0800F6C8\n"
- "\tldr r1, =0xffff8900\n"
- "\tadds r0, r1, 0\n"
- "\tadds r1, r5, 0\n"
- "\torrs r1, r0\n"
- "\tmov r2, r8\n"
- "\tstrh r1, [r2]\n"
- "\tmovs r4, 0\n"
- "\tlsls r0, r5, 1\n"
- "\tldr r3, =gUnknown_03000D80\n"
- "\tmov r12, r3\n"
- "\tadds r0, r5\n"
- "\tlsls r0, 2\n"
- "\tmov r1, r10\n"
- "\tadds r2, r0, r1\n"
- "\tmov r3, r8\n"
- "\tadds r3, 0x2\n"
- "_0800F686:\n"
- "\tldrb r1, [r2, 0x1]\n"
- "\tlsls r1, 8\n"
- "\tldrb r0, [r2]\n"
- "\torrs r0, r1\n"
- "\tstrh r0, [r3]\n"
- "\tadds r2, 0x2\n"
- "\tadds r3, 0x2\n"
- "\tadds r4, 0x1\n"
- "\tcmp r4, 0x6\n"
- "\tble _0800F686\n"
- "\tmovs r4, 0\n"
- "\tldr r2, =gUnknown_03000D90\n"
- "\tldr r1, =gUnknown_03000D80\n"
- "_0800F6A0:\n"
- "\tldrh r0, [r2]\n"
- "\tlsrs r0, 8\n"
- "\tstrb r0, [r1, 0x1]\n"
- "\tldrh r0, [r2]\n"
- "\tstrb r0, [r1]\n"
- "\tadds r2, 0x2\n"
- "\tadds r1, 0x2\n"
- "\tadds r4, 0x1\n"
- "\tcmp r4, 0x6\n"
- "\tble _0800F6A0\n"
- "\tldr r0, =gUnknown_03005000+0x9E8\n"
- "\tmov r1, r12\n"
- "\tbl sub_800D888\n"
- "\tmovs r1, 0x1\n"
- "\tlsls r1, r5\n"
- "\tmov r2, r9\n"
- "\tldr r0, [r2, 0x78]\n"
- "\torrs r0, r1\n"
- "\tstr r0, [r2, 0x78]\n"
- "_0800F6C8:\n"
- "\tadds r1, r7, 0\n"
- "\tadds r5, r6, 0\n"
- "\tldr r3, =gUnknown_03005000+0x6E\n"
- "\tldrh r3, [r3]\n"
- "\tcmp r5, r3\n"
- "\tblt _0800F65A\n"
- "_0800F6D4:\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.pool");
-}
-#endif
void sub_800F6FC(u8 a0)
{
@@ -3408,89 +3310,89 @@ static void sub_800F86C(u8 unused)
{
switch (gRecvCmds[i][0] & 0xff00)
{
- case 0x7800:
- if (gUnknown_03005000.unk_0c == 0 && gReceivedRemoteLinkPlayers != 0)
- return;
- // fallthrough
- case 0x7700:
- if (gUnknown_03007890->unk_00 == 0)
- {
- gUnknown_03005000.playerCount = gRecvCmds[i][1];
- gUnknown_03005000.unk_cce = sub_800F74C((u8 *)(gRecvCmds[i] + 2));
- }
- break;
- case 0x8800:
- if (gUnknown_03005000.unk_80[i].unk_12 == 0)
- {
- gUnknown_03005000.unk_80[i].unk_00 = 0;
- gUnknown_03005000.unk_80[i].unk_02 = gRecvCmds[i][1];
- gUnknown_03005000.unk_80[i].unk_11 = gRecvCmds[i][2];
- gUnknown_03005000.unk_80[i].unk_08 = 0;
- gUnknown_03005000.unk_80[i].unk_12 = 1;
- gUnknown_03005000.unk_5c[i] = 0;
- }
- break;
- case 0x8900:
- if (gUnknown_03005000.unk_80[i].unk_12 == 1)
+ case 0x7800:
+ if (gUnknown_03005000.unk_0c == 0 && gReceivedRemoteLinkPlayers != 0)
+ return;
+ // fallthrough
+ case 0x7700:
+ if (gUnknown_03007890->unk_00 == 0)
+ {
+ gUnknown_03005000.playerCount = gRecvCmds[i][1];
+ gUnknown_03005000.unk_cce = sub_800F74C((u8 *)(gRecvCmds[i] + 2));
+ }
+ break;
+ case 0x8800:
+ if (gUnknown_03005000.unk_80[i].unk_12 == 0)
+ {
+ gUnknown_03005000.unk_80[i].unk_00 = 0;
+ gUnknown_03005000.unk_80[i].unk_02 = gRecvCmds[i][1];
+ gUnknown_03005000.unk_80[i].unk_11 = gRecvCmds[i][2];
+ gUnknown_03005000.unk_80[i].unk_08 = 0;
+ gUnknown_03005000.unk_80[i].unk_12 = 1;
+ gUnknown_03005000.unk_5c[i] = 0;
+ }
+ break;
+ case 0x8900:
+ if (gUnknown_03005000.unk_80[i].unk_12 == 1)
+ {
+ gUnknown_03005000.unk_80[i].unk_00 = gRecvCmds[i][0] & 0xff;
+ gUnknown_03005000.unk_80[i].unk_08 |= (1 << gUnknown_03005000.unk_80[i].unk_00);
+ for (j = 0; j < 6; j++)
+ gBlockRecvBuffer[i][gUnknown_03005000.unk_80[i].unk_00 * 6 + j] = gRecvCmds[i][j + 1];
+ if (gUnknown_03005000.unk_80[i].unk_08 == gUnknown_082ED628[gUnknown_03005000.unk_80[i].unk_02])
{
- gUnknown_03005000.unk_80[i].unk_00 = gRecvCmds[i][0] & 0xff;
- gUnknown_03005000.unk_80[i].unk_08 |= (1 << gUnknown_03005000.unk_80[i].unk_00);
- for (j = 0; j < 6; j++)
- gBlockRecvBuffer[i][gUnknown_03005000.unk_80[i].unk_00 * 6 + j] = gRecvCmds[i][j + 1];
- if (gUnknown_03005000.unk_80[i].unk_08 == gUnknown_082ED628[gUnknown_03005000.unk_80[i].unk_02])
- {
- gUnknown_03005000.unk_80[i].unk_12 = 2;
- sub_800F6FC(i);
- if (sub_800F7DC()->unk_0a_0 == 0x45 && gReceivedRemoteLinkPlayers != 0 && gUnknown_03005000.unk_0c == 0)
- sub_8010A70(gBlockRecvBuffer);
- }
+ gUnknown_03005000.unk_80[i].unk_12 = 2;
+ sub_800F6FC(i);
+ if (sub_800F7DC()->unk_0a_0 == 0x45 && gReceivedRemoteLinkPlayers != 0 && gUnknown_03005000.unk_0c == 0)
+ sub_8010A70(gBlockRecvBuffer);
}
- break;
- case 0xa100:
- sub_800FE84(gUnknown_082ED6B8[gRecvCmds[i][1]].buffer, (u16)gUnknown_082ED6B8[gRecvCmds[i][1]].size);
- break;
- case 0x5f00:
- gUnknown_03005000.unk_e4[i] = 1;
- break;
- case 0x6600:
- if (gUnknown_03005000.unk_100 == gRecvCmds[i][1])
- gUnknown_03005000.unk_e9[i] = 1;
- break;
- case 0xed00:
- if (gUnknown_03005000.unk_0c == 0)
+ }
+ break;
+ case 0xa100:
+ sub_800FE84(gUnknown_082ED6B8[gRecvCmds[i][1]].buffer, (u16)gUnknown_082ED6B8[gRecvCmds[i][1]].size);
+ break;
+ case 0x5f00:
+ gUnknown_03005000.unk_e4[i] = 1;
+ break;
+ case 0x6600:
+ if (gUnknown_03005000.unk_100 == gRecvCmds[i][1])
+ gUnknown_03005000.unk_e9[i] = 1;
+ break;
+ case 0xed00:
+ if (gUnknown_03005000.unk_0c == 0)
+ {
+ if (gReceivedRemoteLinkPlayers != 0)
{
- if (gReceivedRemoteLinkPlayers != 0)
+ if (gRecvCmds[i][1] & gUnknown_03007890->unk_02)
{
- if (gRecvCmds[i][1] & gUnknown_03007890->unk_02)
- {
- gReceivedRemoteLinkPlayers = 0;
- sub_800D630();
- gUnknown_03005000.unk_ce4 = gRecvCmds[i][2];
- }
- gUnknown_03005000.playerCount = gRecvCmds[i][3];
- sub_80109E8(gRecvCmds[i][1]);
+ gReceivedRemoteLinkPlayers = 0;
+ sub_800D630();
+ gUnknown_03005000.unk_ce4 = gRecvCmds[i][2];
}
- }
- else
- {
- sub_800FD14(0xee00);
- gSendCmd[1] = gRecvCmds[i][1];
- gSendCmd[2] = gRecvCmds[i][2];
- gSendCmd[3] = gRecvCmds[i][3];
- }
- break;
- case 0xee00:
- if (gUnknown_03005000.unk_0c == 1)
- {
- gUnknown_03005000.unk_ce3 |= gRecvCmds[i][1];
- gUnknown_03005000.unk_ce4 = gRecvCmds[i][2];
+ gUnknown_03005000.playerCount = gRecvCmds[i][3];
sub_80109E8(gRecvCmds[i][1]);
}
- break;
- case 0x4400:
- case 0xbe00:
- gLinkPartnersHeldKeys[i] = gRecvCmds[i][1];
- break;
+ }
+ else
+ {
+ sub_800FD14(0xee00);
+ gSendCmd[1] = gRecvCmds[i][1];
+ gSendCmd[2] = gRecvCmds[i][2];
+ gSendCmd[3] = gRecvCmds[i][3];
+ }
+ break;
+ case 0xee00:
+ if (gUnknown_03005000.unk_0c == 1)
+ {
+ gUnknown_03005000.unk_ce3 |= gRecvCmds[i][1];
+ gUnknown_03005000.unk_ce4 = gRecvCmds[i][2];
+ sub_80109E8(gRecvCmds[i][1]);
+ }
+ break;
+ case 0x4400:
+ case 0xbe00:
+ gLinkPartnersHeldKeys[i] = gRecvCmds[i][1];
+ break;
}
if (gUnknown_03005000.unk_0c == 1 && gUnknown_03005000.unk_61[i])
{
@@ -3507,7 +3409,7 @@ static void sub_800F86C(u8 unused)
bool8 sub_800FC60(void)
{
- int i;
+ s32 i;
for (i = 0; i < 5; i++)
{
@@ -3519,7 +3421,7 @@ bool8 sub_800FC60(void)
bool8 sub_800FC88(void)
{
- int i;
+ s32 i;
for (i = 0; i < gUnknown_03005000.playerCount; i++)
{
@@ -3543,7 +3445,7 @@ static void sub_800FCC4(struct UnkRfuStruct_2_Sub_6c *data)
u8 sub_800FCD8(void)
{
u8 flags = 0;
- int i;
+ s32 i;
for (i = 0; i < 5; i++)
{
@@ -3555,8 +3457,6 @@ u8 sub_800FCD8(void)
return flags;
}
-#ifdef NONMATCHING
-// The switch tree is incorrect
void sub_800FD14(u16 command)
{
u8 i;
@@ -3566,199 +3466,48 @@ void sub_800FD14(u16 command)
gSendCmd[0] = command;
switch (command)
{
- case 0x8800:
- gSendCmd[1] = gUnknown_03005000.unk_6c.unk_02;
- gSendCmd[2] = gUnknown_03005000.unk_6c.unk_11 + 0x80;
- break;
- case 0xa100:
- if (sub_800FC60())
- gSendCmd[1] = gUnknown_03005000.unk_5a;
- break;
- case 0x7800:
- case 0x7700:
- tmp = gUnknown_03005000.unk_ce2 ^ gUnknown_03005000.unk_ce3;
- gUnknown_03005000.playerCount = gUnknown_082ED695[tmp] + 1;
- gSendCmd[1] = gUnknown_03005000.playerCount;
- buff = (u8 *)(gSendCmd + 2);
- for (i = 0; i < 4; i++)
- buff[i] = gUnknown_03005000.unk_cde[i];
- break;
- case 0x6600:
- case 0x5f00:
- gSendCmd[1] = gUnknown_03005000.unk_100;
- break;
- case 0x4400:
- gSendCmd[0] = 0x4400;
- gSendCmd[1] = gMain.heldKeys;
- break;
- case 0x2f00:
- for (i = 0; i < 6; i++)
- gSendCmd[1 + i] = gUnknown_03005000.unk_f2[i];
- break;
- case 0xbe00:
- gSendCmd[1] = gUnknown_03005DA8;
- break;
+ case 0x8800:
+ gSendCmd[1] = gUnknown_03005000.unk_6c.unk_02;
+ gSendCmd[2] = gUnknown_03005000.unk_6c.unk_11 + 0x80;
+ break;
+ case 0xa100:
+ if (sub_800FC60())
+ gSendCmd[1] = gUnknown_03005000.unk_5a;
+ break;
+ case 0x7700:
+ case 0x7800:
+ tmp = gUnknown_03005000.unk_ce2 ^ gUnknown_03005000.unk_ce3;
+ gUnknown_03005000.playerCount = gUnknown_082ED695[tmp] + 1;
+ gSendCmd[1] = gUnknown_03005000.playerCount;
+ buff = (u8 *)(gSendCmd + 2);
+ for (i = 0; i < 4; i++)
+ buff[i] = gUnknown_03005000.unk_cde[i];
+ break;
+ case 0x6600:
+ case 0x5f00:
+ gSendCmd[1] = gUnknown_03005000.unk_100;
+ break;
+ case 0x4400:
+ gSendCmd[0] = command;
+ gSendCmd[1] = gMain.heldKeys;
+ break;
+ case 0x2f00:
+ for (i = 0; i < 6; i++)
+ gSendCmd[1 + i] = gUnknown_03005000.unk_f2[i];
+ break;
+ case 0xbe00:
+ gSendCmd[1] = gUnknown_03005DA8;
+ break;
+ case 0xee00:
+ break;
+ case 0xed00:
+ break;
}
}
-#else
-NAKED void sub_800FD14(u16 command)
-{
- asm_unified("\tpush {r4,r5,lr}\n"
- "\tlsls r0, 16\n"
- "\tlsrs r1, r0, 16\n"
- "\tldr r5, =gSendCmd\n"
- "\tstrh r1, [r5]\n"
- "\tmovs r0, 0xF0\n"
- "\tlsls r0, 7\n"
- "\tadds r4, r5, 0\n"
- "\tcmp r1, r0\n"
- "\tbeq _0800FDB0_case_7700_case_7800\n"
- "\tcmp r1, r0\n"
- "\tbgt _0800FD62\n"
- "\tmovs r0, 0xBE\n"
- "\tlsls r0, 7\n"
- "\tcmp r1, r0\n"
- "\tbeq _0800FE00_case_5f00_case_6600\n"
- "\tcmp r1, r0\n"
- "\tbgt _0800FD50\n"
- "\tmovs r0, 0xBC\n"
- "\tlsls r0, 6\n"
- "\tcmp r1, r0\n"
- "\tbeq _0800FE20_case_2f00\n"
- "\tmovs r0, 0x88\n"
- "\tlsls r0, 7\n"
- "\tcmp r1, r0\n"
- "\tbeq _0800FE14_case_4400\n"
- "\tb _0800FE46_break\n"
- "\t.pool\n"
- "_0800FD50:\n"
- "\tmovs r0, 0xCC\n"
- "\tlsls r0, 7\n"
- "\tcmp r1, r0\n"
- "\tbeq _0800FE00_case_5f00_case_6600\n"
- "\tmovs r0, 0xEE\n"
- "\tlsls r0, 7\n"
- "\tcmp r1, r0\n"
- "\tbeq _0800FDB0_case_7700_case_7800\n"
- "\tb _0800FE46_break\n"
- "_0800FD62:\n"
- "\tmovs r0, 0xBE\n"
- "\tlsls r0, 8\n"
- "\tcmp r1, r0\n"
- "\tbeq _0800FE40_case_be00\n"
- "\tcmp r1, r0\n"
- "\tbgt _0800FE46_break\n"
- "\tmovs r0, 0x88\n"
- "\tlsls r0, 8\n"
- "\tcmp r1, r0\n"
- "\tbeq _0800FD80_case_8800\n"
- "\tmovs r0, 0xA1\n"
- "\tlsls r0, 8\n"
- "\tcmp r1, r0\n"
- "\tbeq _0800FD98_case_a100\n"
- "\tb _0800FE46_break\n"
- "_0800FD80_case_8800:\n"
- "\tldr r0, =gUnknown_03005000\n"
- "\tadds r1, r0, 0\n"
- "\tadds r1, 0x6E\n"
- "\tldrh r1, [r1]\n"
- "\tstrh r1, [r5, 0x2]\n"
- "\tadds r0, 0x7D\n"
- "\tldrb r0, [r0]\n"
- "\tadds r0, 0x80\n"
- "\tstrh r0, [r5, 0x4]\n"
- "\tb _0800FE46_break\n"
- "\t.pool\n"
- "_0800FD98_case_a100:\n"
- "\tbl sub_800FC60\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _0800FE46_break\n"
- "\tldr r0, =gUnknown_03005000\n"
- "\tadds r0, 0x5A\n"
- "\tldrb r0, [r0]\n"
- "\tb _0800FE44_str_break\n"
- "\t.pool\n"
- "_0800FDB0_case_7700_case_7800:\n"
- "\tldr r3, =gUnknown_03005000\n"
- "\tldr r1, =0x00000ce2\n"
- "\tadds r0, r3, r1\n"
- "\tldr r2, =0x00000ce3\n"
- "\tadds r1, r3, r2\n"
- "\tldrb r2, [r0]\n"
- "\tldrb r0, [r1]\n"
- "\teors r0, r2\n"
- "\tldr r1, =gUnknown_082ED695\n"
- "\tadds r0, r1\n"
- "\tldrb r0, [r0]\n"
- "\tadds r0, 0x1\n"
- "\tstrb r0, [r3, 0xD]\n"
- "\tldrb r0, [r3, 0xD]\n"
- "\tstrh r0, [r4, 0x2]\n"
- "\tadds r2, r4, 0x4\n"
- "\tmovs r4, 0\n"
- "\tldr r0, =0x00000cde\n"
- "\tadds r3, r0\n"
- "_0800FDD6:\n"
- "\tadds r1, r2, r4\n"
- "\tadds r0, r4, r3\n"
- "\tldrb r0, [r0]\n"
- "\tstrb r0, [r1]\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tcmp r4, 0x3\n"
- "\tbls _0800FDD6\n"
- "\tb _0800FE46_break\n"
- "\t.pool\n"
- "_0800FE00_case_5f00_case_6600:\n"
- "\tldr r0, =gUnknown_03005000\n"
- "\tmovs r1, 0x80\n"
- "\tlsls r1, 1\n"
- "\tadds r0, r1\n"
- "\tldrh r0, [r0]\n"
- "\tstrh r0, [r4, 0x2]\n"
- "\tb _0800FE46_break\n"
- "\t.pool\n"
- "_0800FE14_case_4400:\n"
- "\tstrh r1, [r5]\n"
- "\tldr r0, =gMain\n"
- "\tldrh r0, [r0, 0x2C]\n"
- "\tb _0800FE44_str_break\n"
- "\t.pool\n"
- "_0800FE20_case_2f00:\n"
- "\tmovs r4, 0\n"
- "\tldr r3, =gUnknown_03005000+0xF2\n"
- "_0800FE24:\n"
- "\tadds r2, r4, 0x1\n"
- "\tlsls r1, r2, 1\n"
- "\tadds r1, r5\n"
- "\tlsls r0, r4, 1\n"
- "\tadds r0, r3\n"
- "\tldrh r0, [r0]\n"
- "\tstrh r0, [r1]\n"
- "\tlsls r2, 24\n"
- "\tlsrs r4, r2, 24\n"
- "\tcmp r4, 0x5\n"
- "\tbls _0800FE24\n"
- "\tb _0800FE46_break\n"
- "\t.pool\n"
- "_0800FE40_case_be00:\n"
- "\tldr r0, =gUnknown_03005DA8\n"
- "\tldrh r0, [r0]\n"
- "_0800FE44_str_break:\n"
- "\tstrh r0, [r5, 0x2]\n"
- "_0800FE46_break:\n"
- "\tpop {r4,r5}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.pool");
-}
-#endif
void sub_800FE50(u16 *a0)
{
- if (gSendCmd[0] == 0 && sub_8011A80() == 0)
+ if (gSendCmd[0] == 0 && !sub_8011A80())
{
memcpy(gUnknown_03005000.unk_f2, a0, sizeof(gUnknown_03005000.unk_f2));
sub_800FD14(0x2f00);
@@ -3816,7 +3565,7 @@ static void rfufunc_80F9F44(void)
static void sub_800FFB0(void)
{
- int i;
+ s32 i;
const u8 *src = gUnknown_03005000.unk_6c.unk_04;
gSendCmd[0] = 0x8900 | gUnknown_03005000.unk_6c.unk_00;
for (i = 0; i < 7; i++)
@@ -3833,7 +3582,7 @@ static void rfufunc_80FA020(void)
{
const u8 *src = gUnknown_03005000.unk_6c.unk_04;
u8 mpId = GetMultiplayerId();
- int i;
+ s32 i;
if (gUnknown_03005000.unk_0c == 0)
{
gSendCmd[0] = (~0x76ff) | (gUnknown_03005000.unk_6c.unk_02 - 1);
@@ -3897,9 +3646,9 @@ void sub_8010198(void)
void sub_80101CC(void)
{
- int i;
+ s32 i;
u8 playerCount = gUnknown_03005000.playerCount;
- int count = 0;
+ s32 count = 0;
for (i = 0; i < MAX_RFU_PLAYERS; i++)
{
@@ -4026,7 +3775,7 @@ void sub_8010434(void)
bool32 sub_8010454(u32 a0)
{
- int i;
+ s32 i;
for (i = 0; gUnknown_082ED6E0[i] != a0; i++)
{
if (gUnknown_082ED6E0[i] == 0xffff)
@@ -4076,7 +3825,7 @@ static void sub_8010528(void)
bool8 sub_8010540(void)
{
- int i;
+ s32 i;
bool8 retval = FALSE;
for (i = 0; i < 4; i++)
{
@@ -4107,7 +3856,7 @@ bool8 sub_8010540(void)
bool32 sub_80105EC(void)
{
u8 flags = 0;
- int i;
+ s32 i;
for (i = 0; i < 4; i++)
{
if (gUnknown_03005000.unk_cd5[i] == 11)
@@ -4166,7 +3915,7 @@ u32 sub_8010714(u16 a0, const u8 *a1)
void sub_8010750(void)
{
- int i;
+ s32 i;
sub_8010540();
for (i = 0; i < 4; i++)
@@ -4180,9 +3929,9 @@ void sub_8010750(void)
}
}
-int sub_80107A0(void)
+s32 sub_80107A0(void)
{
- int retval = 0;
+ s32 retval = 0;
if (gUnknown_03005000.unk_c85 == 8)
{
if (gUnknown_03007880[gUnknown_03005000.unk_c3e]->unk_0 == 0x26 || gUnknown_03007880[gUnknown_03005000.unk_c3e]->unk_0 == 0x27)
@@ -4204,7 +3953,7 @@ int sub_80107A0(void)
void sub_801084C(u8 taskId)
{
- int i;
+ s32 i;
if (gUnknown_03005000.unk_f1 == 1 || gUnknown_03005000.unk_f1 == 2)
{
@@ -4288,7 +4037,7 @@ void sub_801084C(u8 taskId)
void sub_80109E8(u16 a0)
{
- int i;
+ s32 i;
for (i = 0; i < 4; i++)
{
@@ -4299,7 +4048,7 @@ void sub_80109E8(u16 a0)
void sub_8010A14(const struct UnkRfuStruct_8010A14 *a0)
{
- int i;
+ s32 i;
gUnknown_03005000.playerCount = a0->unk_0f;
for (i = 0; i < 4; i++)
gUnknown_03005000.unk_cde[i] = a0->unk_10[i];
@@ -4322,7 +4071,7 @@ void sub_8010A70(void *a0)
void sub_8010AAC(u8 taskId)
{
- int i;
+ s32 i;
struct LinkPlayerBlock *r2;
struct UnkRfuStruct_8010A14 *r5;
u8 r4 = gUnknown_03005000.unk_cde[gUnknown_082ED68C[gUnknown_03005000.unk_ce9]];
@@ -4501,7 +4250,7 @@ void sub_8010F48(void)
void sub_8010F60(void)
{
- gUnknown_02022B14 = (struct UnkLinkRfuStruct_02022B14){};
+ memset(&gUnknown_02022B14, 0, 0xD);
sub_800DD94(&gUnknown_02022B14, 0, 0, 0);
}
@@ -4523,7 +4272,7 @@ void sub_8010FCC(u32 a0, u32 a1, u32 a2)
gUnknown_02022B14.unk_0b_1 = a2;
}
-u8 sub_801100C(int a0)
+u8 sub_801100C(s32 a0)
{
u8 retval = 0x80;
retval |= (gLinkPlayers[a0].gender << 3);
@@ -4534,7 +4283,7 @@ u8 sub_801100C(int a0)
void sub_801103C(void)
{
struct UnkLinkRfuStruct_02022B14 *r5 = &gUnknown_02022B14;
- int i;
+ s32 i;
for (i = 1; i < GetLinkPlayerCount(); i++)
r5->unk_04[i - 1] = sub_801100C(i);
@@ -4555,10 +4304,10 @@ void sub_8011090(u8 a0, u32 a1, u32 a2)
void sub_80110B8(u32 a0)
{
- int i;
+ s32 i;
u32 r5;
u32 r7;
- int r8;
+ s32 r8;
if (sub_800F7DC()->unk_0a_0 == 0x45)
{
@@ -4614,329 +4363,794 @@ void sub_80111FC(void)
gUnknown_03005000.unk_00 = sub_80111DC;
}
-#ifdef NONMATCHING
-void sub_801120C(u8 a0)
+void sub_801120C(u8 a0, u8 unused1)
{
u8 i;
u8 r6 = 0;
- struct RfuUnk5Sub *unk5Sub;
switch (a0)
{
- case 0x00:
- gUnknown_03005000.unk_04 = 2;
- break;
- case 0x10:
- break;
- case 0x11:
- sub_80115EC(gUnknown_03004140.unk_14);
- for (i = 0; i < 4; i++)
+ case 0x00:
+ gUnknown_03005000.unk_04 = 2;
+ break;
+ case 0x10:
+ break;
+ case 0x11:
+ sub_80115EC(gUnknown_03004140.unk_14);
+ for (i = 0; i < 4; i++)
+ {
+ if ((gUnknown_03004140.unk_14 >> i) & 1)
{
- if ((gUnknown_03004140.unk_14 >> i) & 1)
+ struct UnkLinkRfuStruct_02022B14 *structPtr = &gUnknown_03007890->unk_14[i].unk_06;
+ if (structPtr->unk_0a_0 == sub_800F7DC()->unk_0a_0)
{
- unk5Sub = &gUnknown_03007890->unk_14[i];
- if (unk5Sub->unk_06.unk_0a_0 == sub_800F7DC()->unk_0a_0)
- {
- gUnknown_03005000.unk_cd1[i] = 0;
- gUnknown_03005000.unk_cd5[i] = 0;
- rfu_setRecvBuffer(0x20, i, gUnknown_03005000.unk_cd5 + i, 1);
- }
- else
- {
- r6 |= (1 << i);
- }
+ gUnknown_03005000.unk_cd1[i] = 0;
+ gUnknown_03005000.unk_cd5[i] = 0;
+ rfu_setRecvBuffer(0x20, i, gUnknown_03005000.unk_cd5 + i, 1);
+ }
+ else
+ {
+ r6 |= (1 << i);
}
}
- if (r6)
+ }
+ if (r6)
+ {
+ rfu_REQ_disconnect(r6);
+ rfu_waitREQComplete();
+ }
+ break;
+ case 0x12:
+ break;
+ case 0x13:
+ break;
+ case 0x14:
+ if (gUnknown_03005000.unk_ce7 != gUnknown_03004140.unk_00)
+ {
+ rfu_REQ_disconnect(gUnknown_03005000.unk_ce7 ^ gUnknown_03004140.unk_00);
+ rfu_waitREQComplete();
+ }
+ gUnknown_03005000.unk_04 = 0x11;
+ break;
+ case 0x31:
+ gUnknown_03005000.unk_f0 = 1;
+ break;
+ case 0x32:
+ gUnknown_03005000.unk_f0 = 3;
+ break;
+ case 0x30:
+ case 0x33:
+ gUnknown_03005000.unk_f0 = 4;
+ gUnknown_03005000.unk_ce2 &= ~gUnknown_03004140.unk_14;
+ if (gReceivedRemoteLinkPlayers == 1)
+ {
+ if (gUnknown_03005000.unk_ce2 == 0)
+ sub_8011170(a0);
+ else
+ sub_80111FC();
+ }
+ sub_8011A64(2, a0);
+ break;
+ case 0x34:
+ break;
+ case 0x42 ... 0x44:
+ break;
+ case 0xf3:
+ sub_8011A64(1, a0);
+ sub_8011170(a0);
+ gUnknown_03005000.unk_ef = 1;
+ break;
+ case 0xf0 ... 0xf2:
+ case 0xff:
+ sub_8011170(a0);
+ sub_8011A64(1, a0);
+ gUnknown_03005000.unk_cdb = 1;
+ break;
+ }
+}
+
+void sub_8011404(u8 a0, u8 unused1)
+{
+ switch (a0)
+ {
+ case 0x00:
+ gUnknown_03005000.unk_04 = 6;
+ break;
+ case 0x20:
+ gUnknown_03005000.unk_ccd = gUnknown_03004140.unk_14;
+ break;
+ case 0x21:
+ break;
+ case 0x22:
+ gUnknown_03005000.unk_c3e = gUnknown_03004140.unk_14;
+ break;
+ case 0x23:
+ sub_8011A64(2, a0);
+ break;
+ case 0x24:
+ gUnknown_03005000.unk_04 = 11;
+ gUnknown_03005000.unk_c85 = 0;
+ gUnknown_03005000.unk_c86 = 0;
+ rfu_setRecvBuffer(0x20, gUnknown_03005000.unk_c3e, &gUnknown_03005000.unk_c86, 1);
+ rfu_setRecvBuffer(0x10, gUnknown_03005000.unk_c3e, gUnknown_03005000.unk_c3f, 70);
+ break;
+ case 0x25:
+ sub_8011A64(2, 0x25);
+ break;
+ case 0x30:
+ gUnknown_03005000.unk_f0 = 2;
+ if (gUnknown_03005000.unk_c86 == 6)
+ break;
+ case 0x33:
+ if (gUnknown_03005000.unk_f0 != 2)
+ gUnknown_03005000.unk_f0 = 4;
+ if (gUnknown_03005000.unk_c86 != 9)
+ sub_8011A64(2, a0);
+ nullsub_5(gUnknown_082ED7FC, 5, 5);
+ if (gReceivedRemoteLinkPlayers == 1)
+ sub_8011170(a0);
+ break;
+ case 0x31:
+ gUnknown_03005000.unk_f0 = 1;
+ nullsub_5(gUnknown_082ED814, 5, 5);
+ break;
+ case 0x32:
+ gUnknown_03005000.unk_f0 = 3;
+ gUnknown_03005000.unk_c3c = 1;
+ break;
+ case 0x34:
+ break;
+ case 0x42 ... 0x44:
+ break;
+ case 0xF3:
+ sub_8011A64(1, a0);
+ sub_8011170(a0);
+ gUnknown_03005000.unk_ef = 1;
+ break;
+ case 0xF0 ... 0xF2:
+ case 0xFF:
+ sub_8011A64(1, a0);
+ sub_8011170(a0);
+ gUnknown_03005000.unk_cdb = 1;
+ break;
+ }
+}
+
+void sub_80115EC(s32 a0)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if ((a0 >> i) & 1)
+ {
+ gUnknown_03005000.unk_cea[i] = 0;
+ gUnknown_03005000.unk_cee[i] |= 0xFF;
+ }
+ }
+}
+
+u8 sub_8011628(s32 a0)
+{
+ u8 ret = 0;
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if ((a0 >> i) & 1)
+ {
+ struct UnkLinkRfuStruct_02022B14 *structPtr = &gUnknown_03007890->unk_14[i].unk_06;
+ if (structPtr->unk_0a_0 == 0x45)
+ ret |= (1 << i);
+ }
+ }
+
+ return ret;
+}
+
+void sub_8011674(u8 a0, u8 unused1)
+{
+ u8 r1;
+
+ switch (a0)
+ {
+ case 0x00:
+ gUnknown_03005000.unk_04 = 0x11;
+ break;
+ case 0x10:
+ sub_8011A64(4, 0);
+ break;
+ case 0x11:
+ if (sub_800F7DC()->unk_0a_0 == 0x45 && gUnknown_03005000.unk_cd9 == 0)
+ {
+ u8 idx = sub_8011628(gUnknown_03004140.unk_14);
+ if (idx != 0)
{
- rfu_REQ_disconnect(r6);
- rfu_waitREQComplete();
+ r1 = 1 << sub_800E87C(idx);
+ if (gUnknown_03005000.unk_ce6 == 0 && gUnknown_03005000.unk_ce8 == 0)
+ {
+ gUnknown_03005000.unk_ce5 = r1;
+ gUnknown_03005000.unk_ce6 |= (r1 ^ idx);
+ gUnknown_03005000.unk_ce8 = 1;
+ }
+ else
+ {
+ gUnknown_03005000.unk_ce6 |= idx;
+ }
}
- break;
- case 0x12:
- break;
- case 0x13:
- break;
- case 0x14:
- if (gUnknown_03005000.unk_ce7 != gUnknown_03004140.unk_00)
+ if (idx != gUnknown_03004140.unk_14)
{
- rfu_REQ_disconnect(gUnknown_03005000.unk_ce7 ^ gUnknown_03004140.unk_00);
- rfu_waitREQComplete();
+ gUnknown_03005000.unk_ce3 |= (idx ^ gUnknown_03004140.unk_14);
+ gUnknown_03005000.unk_ce4 = 2;
}
- gUnknown_03005000.unk_04 = 0x11;
- break;
- case 0x31:
+ }
+ else if (sub_800F7DC()->unk_0a_0 == 0x54)
+ {
+ rfu_REQ_disconnect(gUnknown_03004140.unk_00);
+ rfu_waitREQComplete();
+ }
+ sub_80115EC(gUnknown_03004140.unk_14);
+ break;
+ case 0x12:
+ break;
+ case 0x13:
+ break;
+ case 0x14:
+ if (sub_800F7DC()->unk_0a_0 != 0x45 && gUnknown_03004140.unk_01 > 1)
+ {
+ r1 = 1 << sub_800E87C(gUnknown_03004140.unk_14);
+ rfu_REQ_disconnect(gUnknown_03004140.unk_00 ^ r1);
+ rfu_waitREQComplete();
+ }
+ if (gUnknown_03005000.unk_04 == 0xF)
+ gUnknown_03005000.unk_04 = 0x10;
+ break;
+ break;
+ case 0x20:
+ gUnknown_03005000.unk_ccd = gUnknown_03004140.unk_14;
+ break;
+ case 0x21:
+ break;
+ case 0x22:
+ gUnknown_03005000.unk_c3e = gUnknown_03004140.unk_14;
+ break;
+ case 0x23:
+ gUnknown_03005000.unk_04 = 0x12;
+ if (gUnknown_03005000.unk_ccf < 2)
+ {
+ gUnknown_03005000.unk_ccf++;
+ CreateTask(sub_801209C, 2);
+ }
+ else
+ {
+ sub_8011A64(2, a0);
+ }
+ break;
+ case 0x24:
+ gUnknown_03005000.unk_04 = 0xD;
+ sub_8011A64(3, 0);
+ rfu_setRecvBuffer(0x10, gUnknown_03005000.unk_c3e, gUnknown_03005000.unk_c3f, 70);
+ break;
+ case 0x25:
+ sub_8011A64(2, a0);
+ break;
+ case 0x31:
+ if (gUnknown_03004140.unk_00 & gUnknown_03004140.unk_14)
gUnknown_03005000.unk_f0 = 1;
- break;
- case 0x32:
- gUnknown_03005000.unk_f0 = 3;
- break;
- case 0x30:
- case 0x33:
+ break;
+ case 0x32:
+ gUnknown_03005000.unk_f0 = 3;
+ if (gUnknown_03007890->unk_00 == 0)
+ gUnknown_03005000.unk_c3c = 1;
+ break;
+ case 0x30:
+ gUnknown_03005000.unk_f0 = 2;
+ case 0x33:
+ if (gUnknown_03005000.unk_f0 != 2)
gUnknown_03005000.unk_f0 = 4;
- gUnknown_03005000.unk_ce2 &= ~gUnknown_03004140.unk_14;
+ if (gUnknown_03005000.unk_0c == 1)
+ {
if (gReceivedRemoteLinkPlayers == 1)
{
+ gUnknown_03005000.unk_ce2 &= ~(gUnknown_03004140.unk_14);
if (gUnknown_03005000.unk_ce2 == 0)
sub_8011170(a0);
else
sub_80111FC();
}
- sub_8011A64(2, a0);
- break;
- case 0x42 ... 0x44:
- break;
- case 0xf3:
- sub_8011A64(1, a0);
- sub_8011170(a0);
- gUnknown_03005000.unk_ef = 1;
- break;
- case 0xf0 ... 0xf2:
- case 0xff:
+ }
+ else if (gUnknown_03005000.unk_ce4 != 2 && gReceivedRemoteLinkPlayers == 1)
+ {
sub_8011170(a0);
- sub_8011A64(1, a0);
- gUnknown_03005000.unk_cdb = 1;
- break;
+ sub_800C27C(0);
+ }
+
+ if (gUnknown_03007890->unk_00 == 0xFF && gUnknown_03004140.unk_07 == 0 && FuncIsActiveTask(sub_800EB44) == TRUE)
+ gUnknown_03005000.unk_04 = 0x11;
+
+ sub_8011A64(2, a0);
+ break;
+ case 0x40:
+ gUnknown_03005000.unk_ce3 = 0;
+ break;
+ case 0x42 ... 0x44:
+ break;
+ case 0xF3:
+ sub_8011A64(1, a0);
+ sub_8011170(a0);
+ gUnknown_03005000.unk_ef = 1;
+ break;
+ case 0xF0 ... 0xF2:
+ case 0xFF:
+ sub_8011170(a0);
+ sub_8011A64(1, a0);
+ gUnknown_03005000.unk_cdb = 0;
+ break;
}
}
-#else
-NAKED void sub_801120C(u8 a0)
+
+void sub_8011A50(void)
{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tmovs r6, 0\n"
- "\tcmp r4, 0x32\n"
- "\tbne _08011222\n"
- "\tb _08011360_case_32\n"
- "_08011222:\n"
- "\tcmp r4, 0x32\n"
- "\tbgt _08011252\n"
- "\tcmp r4, 0x13\n"
- "\tbgt _08011240\n"
- "\tcmp r4, 0x12\n"
- "\tblt _08011230\n"
- "\tb _080113EE_break\n"
- "_08011230:\n"
- "\tcmp r4, 0x10\n"
- "\tbne _08011236\n"
- "\tb _080113EE_break\n"
- "_08011236:\n"
- "\tcmp r4, 0x10\n"
- "\tbgt _0801128C_case_11\n"
- "\tcmp r4, 0\n"
- "\tbeq _0801127E_case_00\n"
- "\tb _080113EE_break\n"
- "_08011240:\n"
- "\tcmp r4, 0x30\n"
- "\tbne _08011246\n"
- "\tb _0801136C_case_30_case_33\n"
- "_08011246:\n"
- "\tcmp r4, 0x30\n"
- "\tble _0801124C\n"
- "\tb _08011354_case_31\n"
- "_0801124C:\n"
- "\tcmp r4, 0x14\n"
- "\tbeq _08011328_case_14\n"
- "\tb _080113EE_break\n"
- "_08011252:\n"
- "\tcmp r4, 0x44\n"
- "\tbgt _08011264\n"
- "\tcmp r4, 0x42\n"
- "\tblt _0801125C\n"
- "\tb _080113EE_break\n"
- "_0801125C:\n"
- "\tcmp r4, 0x33\n"
- "\tbne _08011262\n"
- "\tb _0801136C_case_30_case_33\n"
- "_08011262:\n"
- "\tb _080113EE_break\n"
- "_08011264:\n"
- "\tcmp r4, 0xF3\n"
- "\tbne _0801126A\n"
- "\tb _080113BA_case_f3\n"
- "_0801126A:\n"
- "\tcmp r4, 0xF3\n"
- "\tbgt _08011276\n"
- "\tcmp r4, 0xF0\n"
- "\tbge _08011274\n"
- "\tb _080113EE_break\n"
- "_08011274:\n"
- "\tb _080113D4_case_f0_f1_f2_ff\n"
- "_08011276:\n"
- "\tcmp r4, 0xFF\n"
- "\tbne _0801127C\n"
- "\tb _080113D4_case_f0_f1_f2_ff\n"
- "_0801127C:\n"
- "\tb _080113EE_break\n"
- "_0801127E_case_00:\n"
- "\tldr r1, =gUnknown_03005000\n"
- "\tmovs r0, 0x2\n"
- "\tstrh r0, [r1, 0x4]\n"
- "\tb _080113EE_break\n"
- "\t.pool\n"
- "_0801128C_case_11:\n"
- "\tldr r0, =gUnknown_03004140\n"
- "\tldrh r0, [r0, 0x14]\n"
- "\tbl sub_80115EC\n"
- "\tmovs r5, 0\n"
- "\tmovs r0, 0x1\n"
- "\tmov r8, r0\n"
- "\tldr r1, =gUnknown_03005000\n"
- "\tmov r9, r1\n"
- "\tldr r3, =0x00000cd5\n"
- "\tadd r3, r9\n"
- "\tmov r10, r3\n"
- "\tmovs r7, 0x7F\n"
- "_080112A6:\n"
- "\tldr r0, =gUnknown_03004140\n"
- "\tldrh r0, [r0, 0x14]\n"
- "\tasrs r0, r5\n"
- "\tmov r1, r8\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbeq _0801130E\n"
- "\tldr r0, =gUnknown_03007890\n"
- "\tlsls r1, r5, 5\n"
- "\tadds r1, 0x14\n"
- "\tldr r0, [r0]\n"
- "\tadds r0, r1\n"
- "\tldrb r0, [r0, 0x10]\n"
- "\tadds r4, r7, 0\n"
- "\tands r4, r0\n"
- "\tbl sub_800F7DC\n"
- "\tldrb r1, [r0, 0xA]\n"
- "\tadds r0, r7, 0\n"
- "\tands r0, r1\n"
- "\tcmp r4, r0\n"
- "\tbne _08011304\n"
- "\tldr r0, =0x00000cd1\n"
- "\tadd r0, r9\n"
- "\tadds r0, r5, r0\n"
- "\tmovs r1, 0\n"
- "\tstrb r1, [r0]\n"
- "\tmov r3, r10\n"
- "\tadds r2, r5, r3\n"
- "\tstrb r1, [r2]\n"
- "\tmovs r0, 0x20\n"
- "\tadds r1, r5, 0\n"
- "\tmovs r3, 0x1\n"
- "\tbl rfu_setRecvBuffer\n"
- "\tb _0801130E\n"
- "\t.pool\n"
- "_08011304:\n"
- "\tmov r0, r8\n"
- "\tlsls r0, r5\n"
- "\torrs r6, r0\n"
- "\tlsls r0, r6, 24\n"
- "\tlsrs r6, r0, 24\n"
- "_0801130E:\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r5, r0, 24\n"
- "\tcmp r5, 0x3\n"
- "\tbls _080112A6\n"
- "\tcmp r6, 0\n"
- "\tbeq _080113EE_break\n"
- "\tadds r0, r6, 0\n"
- "\tbl rfu_REQ_disconnect\n"
- "\tbl rfu_waitREQComplete\n"
- "\tb _080113EE_break\n"
- "_08011328_case_14:\n"
- "\tldr r4, =gUnknown_03005000\n"
- "\tldr r1, =0x00000ce7\n"
- "\tadds r0, r4, r1\n"
- "\tldr r1, =gUnknown_03004140\n"
- "\tldrb r2, [r0]\n"
- "\tldrb r0, [r1]\n"
- "\tcmp r2, r0\n"
- "\tbeq _08011342\n"
- "\teors r0, r2\n"
- "\tbl rfu_REQ_disconnect\n"
- "\tbl rfu_waitREQComplete\n"
- "_08011342:\n"
- "\tmovs r0, 0x11\n"
- "\tstrh r0, [r4, 0x4]\n"
- "\tb _080113EE_break\n"
- "\t.pool\n"
- "_08011354_case_31:\n"
- "\tldr r0, =gUnknown_03005000\n"
- "\tadds r0, 0xF0\n"
- "\tb _080113EA\n"
- "\t.pool\n"
- "_08011360_case_32:\n"
- "\tldr r0, =gUnknown_03005000\n"
- "\tadds r0, 0xF0\n"
- "\tmovs r1, 0x3\n"
- "\tb _080113EC\n"
- "\t.pool\n"
- "_0801136C_case_30_case_33:\n"
- "\tldr r1, =gUnknown_03005000\n"
- "\tadds r2, r1, 0\n"
- "\tadds r2, 0xF0\n"
- "\tmovs r0, 0x4\n"
- "\tstrb r0, [r2]\n"
- "\tldr r3, =0x00000ce2\n"
- "\tadds r1, r3\n"
- "\tldr r0, =gUnknown_03004140\n"
- "\tldrb r2, [r0, 0x14]\n"
- "\tldrb r0, [r1]\n"
- "\tadds r3, r0, 0\n"
- "\tbics r3, r2\n"
- "\tadds r2, r3, 0\n"
- "\tstrb r2, [r1]\n"
- "\tldr r0, =gReceivedRemoteLinkPlayers\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x1\n"
- "\tbne _080113B0\n"
- "\tcmp r2, 0\n"
- "\tbne _080113AC\n"
- "\tadds r0, r4, 0\n"
- "\tbl sub_8011170\n"
- "\tb _080113B0\n"
- "\t.pool\n"
- "_080113AC:\n"
- "\tbl sub_80111FC\n"
- "_080113B0:\n"
- "\tmovs r0, 0x2\n"
- "\tadds r1, r4, 0\n"
- "\tbl sub_8011A64\n"
- "\tb _080113EE_break\n"
- "_080113BA_case_f3:\n"
- "\tmovs r0, 0x1\n"
- "\tmovs r1, 0xF3\n"
- "\tbl sub_8011A64\n"
- "\tmovs r0, 0xF3\n"
- "\tbl sub_8011170\n"
- "\tldr r0, =gUnknown_03005000\n"
- "\tadds r0, 0xEF\n"
- "\tb _080113EA\n"
- "\t.pool\n"
- "_080113D4_case_f0_f1_f2_ff:\n"
- "\tadds r0, r4, 0\n"
- "\tbl sub_8011170\n"
- "\tmovs r0, 0x1\n"
- "\tadds r1, r4, 0\n"
- "\tbl sub_8011A64\n"
- "\tldr r0, =gUnknown_03005000\n"
- "\tldr r1, =0x00000cdb\n"
- "\tadds r0, r1\n"
- "\tldrb r1, [r0]\n"
- "_080113EA:\n"
- "\tmovs r1, 0x1\n"
- "_080113EC:\n"
- "\tstrb r1, [r0]\n"
- "_080113EE_break:\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.pool");
+ gUnknown_03005000.unk_ce4 = 2;
+}
+
+void sub_8011A64(u8 a0, u16 a1)
+{
+ gUnknown_03005000.unk_f1 = a0;
+ gUnknown_03005000.unk_0a = a1;
+}
+
+u8 sub_8011A74(void)
+{
+ return gUnknown_03005000.unk_f1;
+}
+
+bool32 sub_8011A80(void)
+{
+ u32 var = sub_8011A74() - 1;
+ if (var < 2)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u8 sub_8011A9C(void)
+{
+ return gUnknown_03005000.unk_ce8;
+}
+
+bool8 Rfu_IsMaster(void)
+{
+ return gUnknown_03005000.unk_0c;
+}
+
+void RfuVSync(void)
+{
+ rfu_syncVBlank_();
+}
+
+void sub_8011AC8(void)
+{
+ CpuFill32(0, gRecvCmds, sizeof(gRecvCmds));
+}
+
+void sub_8011AE8(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_8011AFC(void)
+{
+ s32 i;
+
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ ResetPaletteFade();
+ SetVBlankCallback(sub_8011AE8);
+ if (IsWirelessAdapterConnected())
+ {
+ gLinkType = 0x1111;
+ sub_800B488();
+ OpenLink();
+ SeedRng(gMain.vblankCounter2);
+ for (i = 0; i < 4; i++)
+ gSaveBlock2Ptr->playerTrainerId[i] = Random() % 256;
+
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_1D_MAP);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ sub_8011BA4();
+ SetMainCallback2(sub_8011BF8);
+ }
+}
+
+bool32 sub_8011B90(void)
+{
+ return FuncIsActiveTask(sub_800EB44);
+}
+
+void sub_8011BA4(void)
+{
+ if (!FuncIsActiveTask(nullsub_89))
+ gUnknown_03005000.unk_66 = CreateTask(nullsub_89, 0);
+}
+
+void sub_8011BD0(void)
+{
+ if (FuncIsActiveTask(nullsub_89) == TRUE)
+ DestroyTask(gUnknown_03005000.unk_66);
+}
+
+void sub_8011BF8(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_8011C10(u32 a0)
+{
+ gUnknown_03005000.unk_0c = 1;
+ sub_8010F48();
+ sub_800BF4C(sub_801120C, NULL);
+ gUnknown_02022B2C = gUnknown_082ED608;
+ gUnknown_02022B2C.unk_02 = gUnknown_082ED620[a0 - 1];
+ sub_800EE78();
+}
+
+void sub_8011C5C(void)
+{
+ gUnknown_03005000.unk_0c = 0;
+ sub_8010F48();
+ sub_800BF4C(sub_8011404, sub_800ED34);
+ sub_800EF00();
+}
+
+void sub_8011C84(void)
+{
+ gUnknown_03005000.unk_0c = 2;
+ sub_8010F48();
+ sub_800BF4C(sub_8011674, NULL);
+ gUnknown_02022B2C = gUnknown_082ED608;
+ gUnknown_02022B2C.unk_11 = 0;
+ gUnknown_02022B2C.unk_12 = 0x258;
+ gUnknown_03005000.unk_67 = CreateTask(sub_800EB44, 1);
+}
+
+static u16 ReadU16(const void *ptr)
+{
+ const u8 *ptr_ = ptr;
+ return (ptr_[1] << 8) | (ptr_[0]);
+}
+
+u8 sub_8011CE4(const u8 *a0, u16 a1)
+{
+ u8 i;
+ u8 ret = 0xFF;
+
+ for (i = 0; i < 4; i++)
+ {
+ u16 trainerId = ReadU16(gUnknown_03007890->unk_14[i].unk_06.unk_00.playerTrainerId);
+ if (sub_8010454(gUnknown_03007890->unk_14[i].unk_04)
+ && !StringCompare(a0, gUnknown_03007890->unk_14[i].playerName)
+ && a1 == trainerId)
+ {
+ ret = i;
+ if (gUnknown_03007890->unk_14[i].unk_02 != 0xFF)
+ break;
+ }
+ }
+
+ return ret;
+}
+
+void sub_8011D6C(u32 a0)
+{
+ rfu_REQ_disconnect(a0);
+ rfu_waitREQComplete();
+ gUnknown_03005000.unk_ce2 &= ~(a0);
+ rfu_clearSlot(1, gUnknown_03005000.unk_cda);
+ rfu_UNI_setSendData(gUnknown_03005000.unk_ce2, gUnknown_03005000.unk_c87, 70);
+ gUnknown_03005000.unk_cda = sub_800E87C(gUnknown_03005000.unk_ce2);
+}
+
+void sub_8011DC0(const u8 *ptr, u16 a1)
+{
+ u8 var = sub_8011CE4(ptr, a1);
+ if (var != 0xFF)
+ sub_8011D6C(1 << var);
+}
+
+void sub_8011DE0(u32 a0)
+{
+ if (a0 != 0)
+ {
+ s32 i;
+ u8 var = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_03005000.unk_cde[i] == a0 && (gUnknown_03005000.unk_ce2 >> i) & 1)
+ var |= 1 << i;
+ }
+ if (var)
+ sub_8011E94(var, 2);
+ }
+}
+
+void sub_8011E2C(u8 taskId)
+{
+ if (gSendCmd[0] == 0 && gUnknown_03005000.unk_ce8 == 0)
+ {
+ sub_800FD14(0xED00);
+ gSendCmd[1] = gTasks[taskId].data[0];
+ gSendCmd[2] = gTasks[taskId].data[1];
+ gUnknown_03005000.playerCount -= gUnknown_082ED695[gTasks[taskId].data[0]];
+ gSendCmd[3] = gUnknown_03005000.playerCount;
+ DestroyTask(taskId);
+ }
+}
+
+void sub_8011E94(u32 a0, u32 a1)
+{
+ u8 taskId = FindTaskIdByFunc(sub_8011E2C);
+ if (taskId == 0xFF)
+ {
+ taskId = CreateTask(sub_8011E2C, 5);
+ gTasks[taskId].data[0] = a0;
+ }
+ else
+ {
+ gTasks[taskId].data[0] |= a0;
+ }
+
+ gTasks[taskId].data[1] = a1;
+}
+
+void sub_8011EF4(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (sub_800EE94())
+ {
+ u8 id = sub_8011CE4((u8*)data, ReadU16(&data[8]));
+ if (id != 0xFF)
+ {
+ if (gUnknown_03007890->unk_14[id].unk_02 != 0xFF)
+ {
+ gUnknown_03005000.unk_c3d = id;
+ if (sub_800EEBC())
+ DestroyTask(taskId);
+ }
+ else if (sub_800F7DC()->unk_0a_0 == 0x15 || sub_800F7DC()->unk_0a_0 == 0x16)
+ {
+ data[15]++;
+ }
+ else
+ {
+ sub_8011A64(2, 0x7000);
+ DestroyTask(taskId);
+ }
+ }
+ else
+ {
+ data[15]++;
+ gUnknown_03005000.unk_c3d = id;
+ }
+ }
+ else
+ {
+ data[15]++;
+ }
+
+ if (data[15] > 240)
+ {
+ sub_8011A64(2, 0x7000);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_8011FC8(const u8 *src, u16 trainerId)
+{
+ u8 taskId;
+ s16 *data;
+
+ gUnknown_03005000.unk_f1 = 0;
+ taskId = CreateTask(sub_8011EF4, 3);
+ data = gTasks[taskId].data;
+ StringCopy((u8*)(data), src);
+ data[8] = trainerId;
+}
+
+bool32 sub_801200C(s16 a1, struct UnkLinkRfuStruct_02022B14 *structPtr)
+{
+ if (sub_800F7DC()->unk_0a_0 == 0x45)
+ {
+ if (structPtr->unk_0a_0 != 0x45)
+ return TRUE;
+ }
+ else if (structPtr->unk_0a_0 != 0x40)
+ {
+ return TRUE;
+ }
+ else if (a1 == 0x44)
+ {
+ struct UnkLinkRfuStruct_02022B14 *structPtr2 = &gUnknown_03005000.unk_10A;
+ if (structPtr2->species == SPECIES_EGG)
+ {
+ if (structPtr->species == structPtr2->species)
+ return FALSE;
+ else
+ return TRUE;
+ }
+ else if (structPtr->species != structPtr2->species
+ || structPtr->unk_0b_1 != structPtr2->unk_0b_1
+ || structPtr->type != structPtr2->type)
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+void sub_801209C(u8 taskId)
+{
+ if (gUnknown_03005000.unk_f1 == 4)
+ DestroyTask(taskId);
+
+ if (++gTasks[taskId].data[0] > 300)
+ {
+ sub_8011A64(2, 0x7000);
+ DestroyTask(taskId);
+ }
+
+ if (gUnknown_03005000.unk_ccd != 0 && gUnknown_03004140.unk_06 == 0)
+ {
+ u16 trainerId = ReadU16(gUnknown_03005000.unk_10A.unk_00.playerTrainerId);
+ u8 id = sub_8011CE4(gUnknown_03005000.playerName, trainerId);
+ if (id != 0xFF)
+ {
+ if (!sub_801200C(gTasks[taskId].data[1], &gUnknown_03007890->unk_14[id].unk_06))
+ {
+ if (gUnknown_03007890->unk_14[id].unk_02 != 0xFF && !sub_800C12C(gUnknown_03007890->unk_14[id].unk_00, 0x5A))
+ {
+ gUnknown_03005000.unk_04 = 0xA;
+ DestroyTask(taskId);
+ }
+ }
+ else
+ {
+ sub_8011A64(2, 0x7000);
+ DestroyTask(taskId);
+ }
+ }
+ }
+}
+
+void sub_8012188(const u8 *name, struct UnkLinkRfuStruct_02022B14 *structPtr, u8 a2)
+{
+ u8 taskId, taskId2;
+
+ gUnknown_03005000.unk_ccf = 0;
+ gUnknown_03005000.unk_f1 = 0;
+ StringCopy(gUnknown_03005000.playerName, name);
+ memcpy(&gUnknown_03005000.unk_10A, structPtr, 0xD);
+ sub_800D658();
+ taskId = CreateTask(sub_801209C, 2);
+ gTasks[taskId].data[1] = a2;
+ taskId2 = FindTaskIdByFunc(sub_800EB44);
+ if (a2 == 0x45)
+ {
+ if (taskId2 != 0xFF)
+ gTasks[taskId2].data[7] = 1;
+ }
+ else
+ {
+ if (taskId2 != 0xFF)
+ gTasks[taskId2].data[7] = 0;
+ }
+}
+
+bool8 sub_8012224(void)
+{
+ if (gUnknown_03005000.unk_f0 == 1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool32 sub_8012240(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if ((gUnknown_03004140.unk_00 >> i) & 1 && gUnknown_03005000.unk_cd1[i] == 0)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void sub_801227C(void)
+{
+ s32 i;
+
+ for (i = 0; i < 20; i++)
+ nullsub_5(gUnknown_082ED82C, 0, i);
+}
+
+void sub_801229C(void)
+{
+ s32 i, j;
+
+ nullsub_13(GetBlockReceivedStatus(), 0x1C, 0x13, 2);
+ nullsub_13(gUnknown_03007890->unk_02, 0x14, 1, 1);
+ nullsub_13(gUnknown_03007890->unk_03, 0x17, 1, 1);
+ if (gUnknown_03005000.unk_0c == 1)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ if ((gUnknown_03007890->unk_07 >> i) & 1)
+ {
+ nullsub_13(gUnknown_03007890->unk_14[i].unk_04, 1, i + 3, 4);
+ nullsub_5((void*) &gUnknown_03007890->unk_14[i].unk_06, 6, i + 3);
+ nullsub_5(gUnknown_03007890->unk_14[i].playerName, 0x16, i + 3);
+ }
+ }
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 14; j++)
+ {
+ nullsub_13(gUnknown_03005000.unk_14[i][j], j * 2, i + 11, 2);
+ }
+ }
+ nullsub_5(gUnknown_082ED868, 1, 0xF);
+ }
+ else if (gUnknown_03007890->unk_02 != 0 && gUnknown_03007890->unk_07 != 0)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ nullsub_13(0, 1, i + 3, 4);
+ nullsub_5(gUnknown_082ED84B, 6, i + 3);
+ nullsub_5(gUnknown_082ED85B, 0x16, i + 3);
+ }
+ nullsub_13(gUnknown_03007890->unk_14[gUnknown_03005000.unk_c3e].unk_04, 1, 3, 4);
+ nullsub_5((void*) &gUnknown_03007890->unk_14[gUnknown_03005000.unk_c3e].unk_06, 6, 3);
+ nullsub_5(gUnknown_03007890->unk_14[gUnknown_03005000.unk_c3e].playerName, 0x16, 3);
+ }
+ else
+ {
+ for (i = 0; i < gUnknown_03007890->unk_08; i++)
+ {
+ if (gUnknown_03007890->unk_14[i].unk_02 != 0xFF)
+ {
+ nullsub_13(gUnknown_03007890->unk_14[i].unk_04, 1, i + 3, 4);
+ nullsub_13(gUnknown_03007890->unk_14[i].unk_00, 6, i + 3, 4);
+ nullsub_5(gUnknown_03007890->unk_14[i].playerName, 0x16, i + 3);
+ }
+ }
+ for (; i < 4; i++)
+ {
+ nullsub_13(0, 1, i + 3, 4);
+ nullsub_5(gUnknown_082ED84B, 6, i + 3);
+ nullsub_5(gUnknown_082ED85B, 0x16, i + 3);
+ }
+ }
+}
+
+u32 sub_80124C0(void)
+{
+ return gUnknown_03005000.unk_9e8.unk_232;
+}
+
+u32 sub_80124D4(void)
+{
+ return gUnknown_03005000.unk_124.unk_8c2;
}
-#endif
diff --git a/src/list_menu.c b/src/list_menu.c
index ec45ba3e4..6907a75a3 100644
--- a/src/list_menu.c
+++ b/src/list_menu.c
@@ -302,9 +302,9 @@ static const struct SpriteTemplate sSpriteTemplate_RedArrowCursor =
};
static const u16 sRedArrowPal[] = INCBIN_U16("graphics/interface/red_arrow.gbapal");
-static const u8 sRedArrowOtherGfx[] = INCBIN_U8("graphics/interface/red_arrow_other.4bpp.lz");
-static const u8 sSelectorOutlineGfx[] = INCBIN_U8("graphics/interface/selector_outline.4bpp.lz");
-static const u8 sRedArrowGfx[] = INCBIN_U8("graphics/interface/red_arrow.4bpp.lz");
+static const u32 sRedArrowOtherGfx[] = INCBIN_U32("graphics/interface/red_arrow_other.4bpp.lz");
+static const u32 sSelectorOutlineGfx[] = INCBIN_U32("graphics/interface/selector_outline.4bpp.lz");
+static const u32 sRedArrowGfx[] = INCBIN_U32("graphics/interface/red_arrow.4bpp.lz");
// code
static void ListMenuDummyTask(u8 taskId)
diff --git a/src/load_save.c b/src/load_save.c
index 005af7c42..960a98981 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -6,14 +6,15 @@
#include "random.h"
#include "malloc.h"
#include "item.h"
+#include "overworld.h"
+#include "decoration_inventory.h"
+
+static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
extern void* gUnknown_0203CF5C;
extern bool16 IdentifyFlash(void);
-extern void SetDecorationInventoriesPointers(void);
-extern void ApplyNewEncryptionKeyToGameStats(u32 key);
extern void ApplyNewEncryptionKeyToBerryPowder(u32 key);
-extern void sub_8084FAC(int unused);
#define SAVEBLOCK_MOVE_RANGE 128
@@ -144,7 +145,7 @@ void ClearSecretBase2Field_9(void)
gSaveBlock2Ptr->specialSaveWarp &= ~1;
}
-void sub_8076D48(void)
+void SetSecretBase2Field_9(void)
{
gSaveBlock2Ptr->specialSaveWarp |= 1;
}
@@ -286,7 +287,7 @@ void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey)
*word ^= newKey;
}
-void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey)
+static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey)
{
ApplyNewEncryptionKeyToGameStats(encryptionKey);
ApplyNewEncryptionKeyToBagItems_(encryptionKey);
diff --git a/src/lottery_corner.c b/src/lottery_corner.c
index 2ded9c943..bd7d17ef7 100644
--- a/src/lottery_corner.c
+++ b/src/lottery_corner.c
@@ -7,6 +7,7 @@
#include "constants/species.h"
#include "string_util.h"
#include "text.h"
+#include "pokemon_storage_system.h"
static EWRAM_DATA u16 sWinNumberDigit = 0;
static EWRAM_DATA u16 sOtIdDigit = 0;
@@ -55,23 +56,22 @@ void PickLotteryCornerTicket(void)
gSpecialVar_0x8004 = 0;
slot = 0;
box = 0;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
- struct Pokemon *pkmn = &gPlayerParty[i];
+ struct Pokemon *mon = &gPlayerParty[i];
- // UB: Too few arguments for function GetMonData
- if (GetMonData(pkmn, MON_DATA_SPECIES) != SPECIES_NONE)
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
// do not calculate ticket values for eggs.
- if (!GetMonData(pkmn, MON_DATA_IS_EGG))
+ if (!GetMonData(mon, MON_DATA_IS_EGG))
{
- u32 otId = GetMonData(pkmn, MON_DATA_OT_ID);
+ u32 otId = GetMonData(mon, MON_DATA_OT_ID);
u8 numMatchingDigits = GetMatchingDigits(gSpecialVar_Result, otId);
if (numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1)
{
gSpecialVar_0x8004 = numMatchingDigits - 1;
- box = 14;
+ box = TOTAL_BOXES_COUNT;
slot = i;
}
}
@@ -80,11 +80,9 @@ void PickLotteryCornerTicket(void)
break;
}
- // player has 14 boxes.
- for (i = 0; i < 14; i++)
+ for (i = 0; i < TOTAL_BOXES_COUNT; i++)
{
- // player has 30 slots per box.
- for (j = 0; j < 30; j++)
+ for (j = 0; j < IN_BOX_COUNT; j++)
{
if (GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SPECIES) != SPECIES_NONE &&
!GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_IS_EGG))
@@ -106,7 +104,7 @@ void PickLotteryCornerTicket(void)
{
gSpecialVar_0x8005 = sLotteryPrizes[gSpecialVar_0x8004 - 1];
- if (box == 14)
+ if (box == TOTAL_BOXES_COUNT)
{
gSpecialVar_0x8006 = 0;
GetMonData(&gPlayerParty[slot], MON_DATA_NICKNAME, gStringVar1);
diff --git a/src/mail.c b/src/mail.c
index 3c12bed3f..513900746 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -146,7 +146,7 @@ static const struct BgTemplate sUnknown_0859F290[] = {
static const struct WindowTemplate sUnknown_0859F29C[] = {
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 3,
.width = 26,
diff --git a/src/main.c b/src/main.c
index 4c71ed1f9..d069ab3bc 100644
--- a/src/main.c
+++ b/src/main.c
@@ -69,7 +69,7 @@ bool8 gSoftResetDisabled;
IntrFunc gIntrTable[INTR_COUNT];
u8 gLinkVSyncDisabled;
u32 IntrMain_Buffer[0x200];
-u8 gPcmDmaCounter;
+s8 gPcmDmaCounter;
static EWRAM_DATA u16 gTrainerId = 0;
diff --git a/src/main_menu.c b/src/main_menu.c
index bcc4f9af5..ee777d106 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -74,7 +74,7 @@ static void NewGameBirchSpeech_ShowDialogueWindow(u8, u8);
static void NewGameBirchSpeech_ClearWindow(u8);
static void Task_NewGameBirchSpeech_ThisIsAPokemon(u8);
static void Task_NewGameBirchSpeech_MainSpeech(u8);
-static void NewGameBirchSpeech_ShowPokeBallPrinterCallback(struct TextSubPrinter *printer, u16 a);
+static void NewGameBirchSpeech_ShowPokeBallPrinterCallback(struct TextPrinterTemplate *printer, u16 a);
static void Task_NewGameBirchSpeech_AndYouAre(u8);
static void Task_NewGameBirchSpeechSub_WaitForLotad(u8);
static void Task_NewGameBirchSpeech_StartBirchLotadPlatformFade(u8);
@@ -127,8 +127,8 @@ static const u16 sBirchSpeechBgPals[][16] = {
INCBIN_U16("graphics/birch_speech/bg1.gbapal")
};
-static const u8 sBirchSpeechShadowGfx[] = INCBIN_U8("graphics/birch_speech/shadow.4bpp.lz");
-static const u8 sBirchSpeechBgMap[] = INCBIN_U8("graphics/birch_speech/map.bin.lz");
+static const u32 sBirchSpeechShadowGfx[] = INCBIN_U32("graphics/birch_speech/shadow.4bpp.lz");
+static const u32 sBirchSpeechBgMap[] = INCBIN_U32("graphics/birch_speech/map.bin.lz");
static const u16 sBirchSpeechBgGradientPal[] = INCBIN_U16("graphics/birch_speech/bg2.gbapal");
static const u16 sBirchSpeechPlatformBlackPal[] = {RGB_BLACK, RGB_BLACK, RGB_BLACK, RGB_BLACK, RGB_BLACK, RGB_BLACK, RGB_BLACK, RGB_BLACK};
@@ -165,7 +165,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] =
// No saved game
// NEW GAME
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = MENU_LEFT,
.tilemapTop = MENU_TOP_WIN0,
.width = MENU_WIDTH,
@@ -175,7 +175,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] =
},
// OPTIONS
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = MENU_LEFT,
.tilemapTop = MENU_TOP_WIN1,
.width = MENU_WIDTH,
@@ -186,7 +186,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] =
// Has saved game
// CONTINUE
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = MENU_LEFT,
.tilemapTop = MENU_TOP_WIN2,
.width = MENU_WIDTH,
@@ -196,7 +196,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] =
},
// NEW GAME
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = MENU_LEFT,
.tilemapTop = MENU_TOP_WIN3,
.width = MENU_WIDTH,
@@ -206,7 +206,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] =
},
// OPTION / MYSTERY GIFT
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = MENU_LEFT,
.tilemapTop = MENU_TOP_WIN4,
.width = MENU_WIDTH,
@@ -216,7 +216,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] =
},
// OPTION / MYSTERY EVENTS
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = MENU_LEFT,
.tilemapTop = MENU_TOP_WIN5,
.width = MENU_WIDTH,
@@ -226,7 +226,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] =
},
// OPTION
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = MENU_LEFT,
.tilemapTop = MENU_TOP_WIN6,
.width = MENU_WIDTH,
@@ -236,7 +236,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] =
},
// Error message window
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = MENU_LEFT_ERROR,
.tilemapTop = MENU_TOP_ERROR,
.width = MENU_WIDTH_ERROR,
@@ -250,7 +250,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] =
static const struct WindowTemplate gUnknown_082FF080[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 27,
@@ -259,7 +259,7 @@ static const struct WindowTemplate gUnknown_082FF080[] =
.baseBlock = 1
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 3,
.tilemapTop = 5,
.width = 6,
@@ -268,7 +268,7 @@ static const struct WindowTemplate gUnknown_082FF080[] =
.baseBlock = 0x6D
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 3,
.tilemapTop = 2,
.width = 9,
@@ -323,7 +323,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_PlayerShrink[] = {
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_PlayerShrink[] =
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_PlayerShrink[] =
{
sSpriteAffineAnim_PlayerShrink
};
@@ -1501,7 +1501,7 @@ static void Task_NewGameBirchSpeech_CreateNameYesNo(u8 taskId)
static void Task_NewGameBirchSpeech_ProcessNameYesNoMenu(u8 taskId)
{
- switch (Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
PlaySE(SE_SELECT);
@@ -1772,12 +1772,12 @@ static void AddBirchSpeechObjects(u8 taskId)
gSprites[lotadSpriteId].oam.priority = 0;
gSprites[lotadSpriteId].invisible = TRUE;
gTasks[taskId].tLotadSpriteId = lotadSpriteId;
- brendanSpriteId = CreateTrainerSprite(FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_BRENDAN), 120, 60, 0, &gDecompressionBuffer[0]);
+ brendanSpriteId = CreateTrainerSprite(FacilityClassToPicIndex(FACILITY_CLASS_BRENDAN), 120, 60, 0, &gDecompressionBuffer[0]);
gSprites[brendanSpriteId].callback = nullsub_11;
gSprites[brendanSpriteId].invisible = TRUE;
gSprites[brendanSpriteId].oam.priority = 0;
gTasks[taskId].tBrendanSpriteId = brendanSpriteId;
- maySpriteId = CreateTrainerSprite(FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_MAY), 120, 60, 0, &gDecompressionBuffer[0x800]);
+ maySpriteId = CreateTrainerSprite(FacilityClassToPicIndex(FACILITY_CLASS_MAY), 120, 60, 0, &gDecompressionBuffer[0x800]);
gSprites[maySpriteId].callback = nullsub_11;
gSprites[maySpriteId].invisible = TRUE;
gSprites[maySpriteId].oam.priority = 0;
@@ -1976,7 +1976,7 @@ static void NewGameBirchSpeech_ShowGenderMenu(void)
static s8 NewGameBirchSpeech_ProcessGenderMenuInput(void)
{
- return Menu_ProcessInputNoWrapAround();
+ return Menu_ProcessInputNoWrap();
}
static void NewGameBirchSpeech_SetDefaultPlayerName(u8 nameId)
@@ -2083,21 +2083,21 @@ static void DrawMainMenuWindowBorder(const struct WindowTemplate *template, u16
u16 sp14 = 7 + baseTileNum;
u16 r6 = 8 + baseTileNum;
- FillBgTilemapBufferRect(template->priority, baseTileNum, template->tilemapLeft - 1, template->tilemapTop - 1, 1, 1, 2);
- FillBgTilemapBufferRect(template->priority, r9, template->tilemapLeft, template->tilemapTop - 1, template->width, 1, 2);
- FillBgTilemapBufferRect(template->priority, r10, template->tilemapLeft + template->width, template->tilemapTop - 1, 1, 1, 2);
- FillBgTilemapBufferRect(template->priority, sp18, template->tilemapLeft - 1, template->tilemapTop, 1, template->height, 2);
- FillBgTilemapBufferRect(template->priority, spC, template->tilemapLeft + template->width, template->tilemapTop, 1, template->height, 2);
- FillBgTilemapBufferRect(template->priority, sp10, template->tilemapLeft - 1, template->tilemapTop + template->height, 1, 1, 2);
- FillBgTilemapBufferRect(template->priority, sp14, template->tilemapLeft, template->tilemapTop + template->height, template->width, 1, 2);
- FillBgTilemapBufferRect(template->priority, r6, template->tilemapLeft + template->width, template->tilemapTop + template->height, 1, 1, 2);
- CopyBgTilemapBufferToVram(template->priority);
+ FillBgTilemapBufferRect(template->bg, baseTileNum, template->tilemapLeft - 1, template->tilemapTop - 1, 1, 1, 2);
+ FillBgTilemapBufferRect(template->bg, r9, template->tilemapLeft, template->tilemapTop - 1, template->width, 1, 2);
+ FillBgTilemapBufferRect(template->bg, r10, template->tilemapLeft + template->width, template->tilemapTop - 1, 1, 1, 2);
+ FillBgTilemapBufferRect(template->bg, sp18, template->tilemapLeft - 1, template->tilemapTop, 1, template->height, 2);
+ FillBgTilemapBufferRect(template->bg, spC, template->tilemapLeft + template->width, template->tilemapTop, 1, template->height, 2);
+ FillBgTilemapBufferRect(template->bg, sp10, template->tilemapLeft - 1, template->tilemapTop + template->height, 1, 1, 2);
+ FillBgTilemapBufferRect(template->bg, sp14, template->tilemapLeft, template->tilemapTop + template->height, template->width, 1, 2);
+ FillBgTilemapBufferRect(template->bg, r6, template->tilemapLeft + template->width, template->tilemapTop + template->height, 1, 1, 2);
+ CopyBgTilemapBufferToVram(template->bg);
}
static void ClearMainMenuWindowTilemap(const struct WindowTemplate *template)
{
- FillBgTilemapBufferRect(template->priority, 0, template->tilemapLeft - 1, template->tilemapTop - 1, template->tilemapLeft + template->width + 1, template->tilemapTop + template->height + 1, 2);
- CopyBgTilemapBufferToVram(template->priority);
+ FillBgTilemapBufferRect(template->bg, 0, template->tilemapLeft - 1, template->tilemapTop - 1, template->tilemapLeft + template->width + 1, template->tilemapTop + template->height + 1, 2);
+ CopyBgTilemapBufferToVram(template->bg);
}
static void NewGameBirchSpeech_ClearGenderWindowTilemap(u8 a, u8 b, u8 c, u8 d, u8 e, u8 unused)
@@ -2126,9 +2126,9 @@ static void NewGameBirchSpeech_ClearWindow(u8 windowId)
CopyWindowToVram(windowId, 2);
}
-static void NewGameBirchSpeech_ShowPokeBallPrinterCallback(struct TextSubPrinter *printer, u16 a)
+static void NewGameBirchSpeech_ShowPokeBallPrinterCallback(struct TextPrinterTemplate *printer, u16 a)
{
- if (*(printer->current_text_offset - 2) == 8 && gUnknown_02022D04 == 0)
+ if (*(printer->currentChar - 2) == 8 && gUnknown_02022D04 == 0)
{
gUnknown_02022D04 = 1;
CreateTask(Task_NewGameBirchSpeechSub_InitPokeBall, 0);
diff --git a/src/map_name_popup.c b/src/map_name_popup.c
index 3feffd70d..ab52cb37e 100644
--- a/src/map_name_popup.c
+++ b/src/map_name_popup.c
@@ -15,7 +15,6 @@
#include "task.h"
#include "text.h"
-
// enums
enum MapPopUp_Themes
{
@@ -33,7 +32,7 @@ static void ShowMapNamePopUpWindow(void);
static void LoadMapNamePopUpWindowBg(void);
// EWRAM
-static EWRAM_DATA u8 mapNamePopupTaskId = 0;
+static EWRAM_DATA u8 sPopupTaskId = 0;
// .rodata
static const u8 gMapPopUp_Table[][960] =
@@ -202,7 +201,7 @@ bool8 sub_80D47D4(void)
{
HideStartMenu();
ShowMapNamePopup();
- return 1;
+ return TRUE;
}
void ShowMapNamePopup(void)
@@ -211,16 +210,16 @@ void ShowMapNamePopup(void)
{
if (!FuncIsActiveTask(Task_MapNamePopUpWindow))
{
- mapNamePopupTaskId = CreateTask(Task_MapNamePopUpWindow, 90);
+ sPopupTaskId = CreateTask(Task_MapNamePopUpWindow, 90);
SetGpuReg(REG_OFFSET_BG0VOFS, 40);
- gTasks[mapNamePopupTaskId].data[0] = 6;
- gTasks[mapNamePopupTaskId].data[2] = 40;
+ gTasks[sPopupTaskId].data[0] = 6;
+ gTasks[sPopupTaskId].data[2] = 40;
}
else
{
- if (gTasks[mapNamePopupTaskId].data[0] != 2)
- gTasks[mapNamePopupTaskId].data[0] = 2;
- gTasks[mapNamePopupTaskId].data[3] = 1;
+ if (gTasks[sPopupTaskId].data[0] != 2)
+ gTasks[sPopupTaskId].data[0] = 2;
+ gTasks[sPopupTaskId].data[3] = 1;
}
}
}
@@ -246,7 +245,7 @@ static void Task_MapNamePopUpWindow(u8 taskId)
{
task->data[2] = 0;
task->data[0] = 1;
- gTasks[mapNamePopupTaskId].data[1] = 0;
+ gTasks[sPopupTaskId].data[1] = 0;
}
break;
case 1:
@@ -293,7 +292,7 @@ void HideMapNamePopUpWindow(void)
sub_819746C(GetMapNamePopUpWindowId(), TRUE);
RemoveMapNamePopUpWindow();
SetGpuReg_ForcedBlank(REG_OFFSET_BG0VOFS, 0);
- DestroyTask(mapNamePopupTaskId);
+ DestroyTask(sPopupTaskId);
}
}
@@ -304,9 +303,9 @@ static void ShowMapNamePopUpWindow(void)
u8 x;
const u8* mapDisplayHeaderSource;
- if(InBattlePyramid())
+ if (InBattlePyramid())
{
- if(gMapHeader.mapLayoutId == 0x17A)
+ if (gMapHeader.mapLayoutId == 0x17A)
{
withoutPrefixPtr = &(mapDisplayHeader[3]);
mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[7];
@@ -314,7 +313,7 @@ static void ShowMapNamePopUpWindow(void)
else
{
withoutPrefixPtr = &(mapDisplayHeader[3]);
- mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[gSaveBlock2Ptr->frontier.field_CB2];
+ mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[gSaveBlock2Ptr->frontier.curChallengeBattleNum];
}
StringCopy(withoutPrefixPtr, mapDisplayHeaderSource);
}
@@ -333,220 +332,47 @@ static void ShowMapNamePopUpWindow(void)
CopyWindowToVram(GetMapNamePopUpWindowId(), 3);
}
-#ifdef NONMATCHING
static void sub_80D4A78(u8 bg, u8 x, u8 y, u8 deltaX, u8 deltaY, u8 unused)
{
s32 i;
- for(i=0; i<=11; i++)
+ for (i = 0; i < 12; i++)
{
- FillBgTilemapBufferRect(bg, 0x21D + i, x + i - 1, y - 1, 1, 1, 0xE);
+ FillBgTilemapBufferRect(bg, 0x21D + i, i - 1 + x, y - 1, 1, 1, 0xE);
}
- FillBgTilemapBufferRect(bg, 0x229 + i, x - 1, y, 1, 1, 0xE);
- FillBgTilemapBufferRect(bg, 0x22A + i, deltaX + x, y, 1, 1, 0xE);
- FillBgTilemapBufferRect(bg, 0x22B + i, x - 1, y + 1 , 1, 1, 0xE);
- FillBgTilemapBufferRect(bg, 0x22C + i, deltaX + x, y + 1, 1, 1, 0xE);
- FillBgTilemapBufferRect(bg, 0x22D + i, x - 1, y + 2, 1, 1, 0xE);
- FillBgTilemapBufferRect(bg, 0x22E + i, deltaX + x, y + 2, 1, 1, 0xE);
- for(i=0; i<=11; i++)
+ FillBgTilemapBufferRect(bg, 0x229, x - 1, y, 1, 1, 0xE);
+ FillBgTilemapBufferRect(bg, 0x22A, deltaX + x, y, 1, 1, 0xE);
+ FillBgTilemapBufferRect(bg, 0x22B, x - 1, y + 1 , 1, 1, 0xE);
+ FillBgTilemapBufferRect(bg, 0x22C, deltaX + x, y + 1, 1, 1, 0xE);
+ FillBgTilemapBufferRect(bg, 0x22D, x - 1, y + 2, 1, 1, 0xE);
+ FillBgTilemapBufferRect(bg, 0x22E, deltaX + x, y + 2, 1, 1, 0xE);
+ for (i = 0; i < 12; i++)
{
- FillBgTilemapBufferRect(bg, 0x22F + i, x + i - 1, y + deltaY, 1, 1, 0xE);
+ FillBgTilemapBufferRect(bg, 0x22F + i, i - 1 + x, y + deltaY, 1, 1, 0xE);
}
}
-#else
-NAKED
-static void sub_80D4A78(u8 bg, u8 x, u8 y, u8 deltaX, u8 deltaY, u8 unused)
-{
- asm("\n\
- .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, 0x1C\n\
- ldr r4, [sp, 0x3C]\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r10, r1\n\
- lsls r2, 24\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- str r3, [sp, 0x10]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- str r4, [sp, 0x14]\n\
- movs r5, 0\n\
- lsls r0, r1, 24\n\
- asrs r1, r0, 24\n\
- lsrs r3, r2, 24\n\
- str r3, [sp, 0xC]\n\
- movs r6, 0xFF\n\
- lsls r6, 24\n\
- adds r6, r2\n\
- mov r8, r6\n\
- str r0, [sp, 0x18]\n\
- subs r4, r1, 0x1\n\
- _080D4AB4:\n\
- ldr r0, =0x0000021d\n\
- adds r1, r5, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- lsls r2, r4, 24\n\
- lsrs r2, 24\n\
- movs r3, 0x1\n\
- str r3, [sp]\n\
- str r3, [sp, 0x4]\n\
- movs r6, 0xE\n\
- mov r9, r6\n\
- str r6, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- mov r6, r8\n\
- lsrs r3, r6, 24\n\
- bl FillBgTilemapBufferRect\n\
- adds r4, 0x1\n\
- adds r5, 0x1\n\
- cmp r5, 0xB\n\
- ble _080D4AB4\n\
- ldr r1, =0x00000229\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- add r0, r10\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- movs r5, 0x1\n\
- str r5, [sp]\n\
- str r5, [sp, 0x4]\n\
- mov r2, r9\n\
- str r2, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- mov r2, r8\n\
- ldr r3, [sp, 0xC]\n\
- bl FillBgTilemapBufferRect\n\
- ldr r1, =0x0000022a\n\
- ldr r6, [sp, 0x10]\n\
- add r6, r10\n\
- lsls r6, 24\n\
- lsrs r6, 24\n\
- str r5, [sp]\n\
- str r5, [sp, 0x4]\n\
- mov r3, r9\n\
- str r3, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- adds r2, r6, 0\n\
- ldr r3, [sp, 0xC]\n\
- bl FillBgTilemapBufferRect\n\
- ldr r1, =0x0000022b\n\
- ldr r4, [sp, 0xC]\n\
- adds r4, 0x1\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- str r5, [sp]\n\
- str r5, [sp, 0x4]\n\
- mov r0, r9\n\
- str r0, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- mov r2, r8\n\
- adds r3, r4, 0\n\
- bl FillBgTilemapBufferRect\n\
- movs r1, 0x8B\n\
- lsls r1, 2\n\
- str r5, [sp]\n\
- str r5, [sp, 0x4]\n\
- mov r2, r9\n\
- str r2, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- adds r2, r6, 0\n\
- adds r3, r4, 0\n\
- bl FillBgTilemapBufferRect\n\
- ldr r1, =0x0000022d\n\
- ldr r4, [sp, 0xC]\n\
- adds r4, 0x2\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- str r5, [sp]\n\
- str r5, [sp, 0x4]\n\
- mov r3, r9\n\
- str r3, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- mov r2, r8\n\
- adds r3, r4, 0\n\
- bl FillBgTilemapBufferRect\n\
- ldr r1, =0x0000022e\n\
- str r5, [sp]\n\
- str r5, [sp, 0x4]\n\
- mov r0, r9\n\
- str r0, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- adds r2, r6, 0\n\
- adds r3, r4, 0\n\
- bl FillBgTilemapBufferRect\n\
- movs r5, 0\n\
- ldr r1, [sp, 0xC]\n\
- ldr r2, [sp, 0x14]\n\
- adds r0, r1, r2\n\
- lsls r4, r0, 24\n\
- movs r6, 0x1\n\
- _080D4B8A:\n\
- ldr r3, =0x0000022f\n\
- adds r1, r5, r3\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- subs r0, r5, 0x1\n\
- ldr r3, [sp, 0x18]\n\
- asrs r2, r3, 24\n\
- adds r2, r0\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r6, [sp]\n\
- str r6, [sp, 0x4]\n\
- movs r0, 0xE\n\
- str r0, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- lsrs r3, r4, 24\n\
- bl FillBgTilemapBufferRect\n\
- adds r5, 0x1\n\
- cmp r5, 0xB\n\
- ble _080D4B8A\n\
- add sp, 0x1C\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\
- .pool\n\
- .syntax divided");
-}
-#endif // NONMATCHING
static void LoadMapNamePopUpWindowBg(void)
{
- u8 popupWindowId;
- u16 regionMapSectionId;
u8 popUpThemeId;
+ u8 popupWindowId = GetMapNamePopUpWindowId();
+ u16 regionMapSectionId = gMapHeader.regionMapSectionId;
- popupWindowId = GetMapNamePopUpWindowId();
- regionMapSectionId = gMapHeader.regionMapSectionId;
- if(regionMapSectionId > MAPSEC_DYNAMIC)
+ if (regionMapSectionId > MAPSEC_DYNAMIC)
{
- if(regionMapSectionId > MAPSEC_SPECIAL_AREA)
+ if (regionMapSectionId > MAPSEC_SPECIAL_AREA)
regionMapSectionId -= (MAPSEC_SPECIAL_AREA - MAPSEC_DYNAMIC);
else
- regionMapSectionId = 0; //discard kanto region sections
+ regionMapSectionId = 0; // Discard kanto region sections;
}
popUpThemeId = gRegionMapSectionId_To_PopUpThemeIdMapping[regionMapSectionId];
- LoadBgTiles(GetWindowAttribute(popupWindowId, WINDOW_PRIORITY), &(gMapPopUp_Outline_Table[popUpThemeId][0]), 0x400, 0x21D);
+ LoadBgTiles(GetWindowAttribute(popupWindowId, WINDOW_BG), gMapPopUp_Outline_Table[popUpThemeId], 0x400, 0x21D);
CallWindowFunction(popupWindowId, sub_80D4A78);
PutWindowTilemap(popupWindowId);
if(gMapHeader.weather == WEATHER_BUBBLES)
LoadPalette(&gUnknown_0857F444, 0xE0, 0x20);
else
- LoadPalette(&(gMapPopUp_Palette_Table[popUpThemeId][0]), 0xE0, 0x20);
- BlitBitmapToWindow(popupWindowId, &(gMapPopUp_Table[popUpThemeId][0]), 0, 0, 80, 24);
+ LoadPalette(gMapPopUp_Palette_Table[popUpThemeId], 0xE0, 0x20);
+ BlitBitmapToWindow(popupWindowId, gMapPopUp_Table[popUpThemeId], 0, 0, 80, 24);
}
diff --git a/src/match_call.c b/src/match_call.c
index 2879881bf..a15700070 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -375,7 +375,7 @@ static const match_call_text_data_t sMayTextScripts[] = {
{ gText_May_Pokenav_2B3AB3, 0xFFFF, 0xFFFF },
{ gText_May_Pokenav_2B3B3F, FLAG_0x4F1, 0xFFFF },
{ gText_May_Pokenav_2B3C13, FLAG_0x095, 0xFFFF },
- { gText_May_Pokenav_2B3CF3, FLAG_0x324, 0xFFFF },
+ { gText_May_Pokenav_2B3CF3, FLAG_HIDE_MAUVILLE_CITY_WALLY, 0xFFFF },
{ gText_May_Pokenav_2B3D4B, FLAG_0x06A, 0xFFFF },
{ gText_May_Pokenav_2B3DD1, FLAG_0x4F3, 0xFFFF },
{ gText_May_Pokenav_2B3E69, FLAG_0x4F4, 0xFFFF },
@@ -396,7 +396,7 @@ static const match_call_text_data_t sBrendanTextScripts[] = {
{ gText_Brendan_Pokenav_2B43EF, 0xFFFF, 0xFFFF },
{ gText_Brendan_Pokenav_2B4486, FLAG_0x4F1, 0xFFFF },
{ gText_Brendan_Pokenav_2B4560, FLAG_0x095, 0xFFFF },
- { gText_Brendan_Pokenav_2B463F, FLAG_0x324, 0xFFFF },
+ { gText_Brendan_Pokenav_2B463F, FLAG_HIDE_MAUVILLE_CITY_WALLY, 0xFFFF },
{ gText_Brendan_Pokenav_2B46B7, FLAG_0x06A, 0xFFFF },
{ gText_Brendan_Pokenav_2B4761, FLAG_0x4F3, 0xFFFF },
{ gText_Brendan_Pokenav_2B47F4, FLAG_0x4F4, 0xFFFF },
@@ -425,9 +425,9 @@ static const match_call_text_data_t sWallyTextScripts[] = {
};
const struct MatchCallSubstruct2 sWallyAdditionalData[] = {
- { FLAG_0x324, 0x05 },
+ { FLAG_HIDE_MAUVILLE_CITY_WALLY, 0x05 },
{ FLAG_0x06F, 0xD5 },
- { FLAG_0x35A, 0x46 },
+ { FLAG_HIDE_VICTORY_ROAD_ENTRANCE_WALLY, 0x46 },
{ 0xFFFF, 0xD5 }
};
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index 3d3408bbb..110ec068e 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -430,7 +430,7 @@ static void sub_81206F0(void)
gUnknown_03002F84 = FALSE;
}
-static void BardSong_TextSubPrinter(struct TextSubPrinter * printer, u16 a1)
+static void BardSong_TextSubPrinter(struct TextPrinterTemplate * printer, u16 a1)
{
gUnknown_03002F84 = TRUE;
}
@@ -1179,7 +1179,7 @@ static void Task_StoryListMenu(u8 taskId) // Task_StoryListMenu
task->data[0]++;
break;
case 1:
- selection = ProcessMenuInput();
+ selection = Menu_ProcessInput();
if (selection == -2)
break;
if (selection == -1 || selection == GetFreeStorySlot())
diff --git a/src/menu.c b/src/menu.c
index 0e5d1b856..dde0e0a1a 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -66,7 +66,7 @@ static const u8 gUnknown_0860F094[] = { 8, 4, 1 };
static const struct WindowTemplate gUnknown_0860F098[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 27,
@@ -79,7 +79,7 @@ static const struct WindowTemplate gUnknown_0860F098[] =
static const struct WindowTemplate gUnknown_0860F0A8 =
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 21,
.tilemapTop = 9,
.width = 5,
@@ -163,11 +163,11 @@ u16 RunTextPrintersAndIsPrinter0Active(void)
return IsTextPrinterActive(0);
}
-u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 fgColor, u8 bgColor, u8 shadowColor)
+u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor)
{
- struct TextSubPrinter printer;
+ struct TextPrinterTemplate printer;
- printer.current_text_offset = str;
+ printer.currentChar = str;
printer.windowId = windowId;
printer.fontId = fontId;
printer.x = 0;
@@ -176,31 +176,31 @@ u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed
printer.currentY = 1;
printer.letterSpacing = 0;
printer.lineSpacing = 0;
- printer.fontColor_l = 0;
+ printer.unk = 0;
printer.fgColor = fgColor;
printer.bgColor = bgColor;
printer.shadowColor = shadowColor;
- gTextFlags.flag_1 = 0;
+ gTextFlags.useAlternateDownArrow = 0;
return AddTextPrinter(&printer, speed, callback);
}
void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress)
{
- void (*callback)(struct TextSubPrinter *, u16) = NULL;
- gTextFlags.flag_0 = allowSkippingDelayWithButtonPress;
- AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeed(), callback, 2, 1, 3);
+ void (*callback)(struct TextPrinterTemplate *, u16) = NULL;
+ gTextFlags.canABSpeedUpPrint = allowSkippingDelayWithButtonPress;
+ AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeedDelay(), callback, 2, 1, 3);
}
void AddTextPrinterForMessage_2(bool8 allowSkippingDelayWithButtonPress)
{
- gTextFlags.flag_0 = allowSkippingDelayWithButtonPress;
- AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeed(), NULL, 2, 1, 3);
+ gTextFlags.canABSpeedUpPrint = allowSkippingDelayWithButtonPress;
+ AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeedDelay(), NULL, 2, 1, 3);
}
void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed)
{
- gTextFlags.flag_0 = allowSkippingDelayWithButtonPress;
+ gTextFlags.canABSpeedUpPrint = allowSkippingDelayWithButtonPress;
AddTextPrinterParameterized2(0, 1, gStringVar4, speed, NULL, 2, 1, 3);
}
@@ -454,11 +454,11 @@ u16 sub_81978D0(u8 colorNum)
void DisplayItemMessageOnField(u8 taskId, const u8 *string, TaskFunc callback)
{
sub_81973A4();
- DisplayMessageAndContinueTask(taskId, 0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM, 1, GetPlayerTextSpeed(), string, callback);
+ DisplayMessageAndContinueTask(taskId, 0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM, 1, GetPlayerTextSpeedDelay(), string, callback);
CopyWindowToVram(0, 3);
}
-void sub_8197930(void)
+void DisplayYesNoMenu(void)
{
CreateYesNoMenu(&gUnknown_0860F0A8, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, 0);
}
@@ -468,19 +468,19 @@ void sub_8197948(u8 initialCursorPos)
CreateYesNoMenu(&gUnknown_0860F0A8, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, initialCursorPos);
}
-u32 sub_8197964(void)
+u32 GetPlayerTextSpeed(void)
{
- if (gTextFlags.flag_3)
- return 1;
+ if (gTextFlags.forceMidTextSpeed)
+ return OPTIONS_TEXT_SPEED_MID;
return gSaveBlock2Ptr->optionsTextSpeed;
}
-u8 GetPlayerTextSpeed(void)
+u8 GetPlayerTextSpeedDelay(void)
{
u32 speed;
- if (gSaveBlock2Ptr->optionsTextSpeed > 2)
- gSaveBlock2Ptr->optionsTextSpeed = 1;
- speed = sub_8197964();
+ if (gSaveBlock2Ptr->optionsTextSpeed > OPTIONS_TEXT_SPEED_FAST)
+ gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_MID;
+ speed = GetPlayerTextSpeed();
return gUnknown_0860F094[speed];
}
@@ -536,10 +536,10 @@ void RemoveMapNamePopUpWindow(void)
}
}
-void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextSubPrinter *, u16))
+void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextPrinterTemplate *, u16))
{
- gTextFlags.flag_0 = a1;
- AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeed(), callback, 2, 1, 3);
+ gTextFlags.canABSpeedUpPrint = a1;
+ AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeedDelay(), callback, 2, 1, 3);
}
void sub_8197AE8(bool8 copyToVram)
@@ -782,9 +782,9 @@ u8 sub_81980F0(u8 bg, u8 xPos, u8 yPos, u8 palette, u16 baseTile)
memset(&window, 0, sizeof(window));
if (bg > 3)
- window.priority = 0;
+ window.bg = 0;
else
- window.priority = bg;
+ window.bg = bg;
window.tilemapTop = yPos;
window.height = 2;
@@ -972,7 +972,7 @@ u8 GetMenuCursorPos(void)
return gUnknown_0203CD90.cursorPos;
}
-s8 ProcessMenuInput(void)
+s8 Menu_ProcessInput(void)
{
if (gMain.newKeys & A_BUTTON)
{
@@ -1000,7 +1000,7 @@ s8 ProcessMenuInput(void)
return MENU_NOTHING_CHOSEN;
}
-s8 Menu_ProcessInputNoWrapAround(void)
+s8 Menu_ProcessInputNoWrap(void)
{
u8 oldPos = gUnknown_0203CD90.cursorPos;
@@ -1116,14 +1116,14 @@ void sub_8198854(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const stru
void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8)
{
u8 i;
- struct TextSubPrinter printer;
+ struct TextPrinterTemplate printer;
printer.windowId = windowId;
printer.fontId = fontId;
printer.fgColor = GetFontAttribute(fontId, FONTATTR_COLOR_FOREGROUND);
printer.bgColor = GetFontAttribute(fontId, FONTATTR_COLOR_BACKGROUND);
printer.shadowColor = GetFontAttribute(fontId, FONTATTR_COLOR_SHADOW);
- printer.fontColor_l = GetFontAttribute(fontId, FONTATTR_COLOR_LOWNIBBLE);
+ printer.unk = GetFontAttribute(fontId, FONTATTR_UNKNOWN);
printer.letterSpacing = letterSpacing;
printer.lineSpacing = GetFontAttribute(fontId, FONTATTR_LINE_SPACING);
printer.x = left;
@@ -1131,7 +1131,7 @@ void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 l
for (i = 0; i < itemCount; i++)
{
- printer.current_text_offset = strs[a8[i]].text;
+ printer.currentChar = strs[a8[i]].text;
printer.y = (lineHeight * i) + top;
printer.currentY = printer.y;
AddTextPrinter(&printer, 0xFF, NULL);
@@ -1147,7 +1147,7 @@ void sub_81989B8(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const stru
void SetWindowTemplateFields(struct WindowTemplate *template, u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock)
{
- template->priority = bg;
+ template->bg = bg;
template->tilemapLeft = left;
template->tilemapTop = top;
template->width = width;
@@ -1172,12 +1172,12 @@ u16 sub_8198AA4(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16
void sub_8198AF8(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos)
{
- struct TextSubPrinter printer;
+ struct TextPrinterTemplate printer;
gUnknown_0203CD9F = AddWindow(window);
SetWindowBorderStyle(gUnknown_0203CD9F, TRUE, baseTileNum, paletteNum);
- printer.current_text_offset = gText_YesNo;
+ printer.currentChar = gText_YesNo;
printer.windowId = gUnknown_0203CD9F;
printer.fontId = fontId;
printer.x = GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH) + left;
@@ -1187,7 +1187,7 @@ void sub_8198AF8(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top
printer.fgColor = GetFontAttribute(fontId, FONTATTR_COLOR_FOREGROUND);
printer.bgColor = GetFontAttribute(fontId, FONTATTR_COLOR_BACKGROUND);
printer.shadowColor = GetFontAttribute(fontId, FONTATTR_COLOR_SHADOW);
- printer.fontColor_l = GetFontAttribute(fontId, FONTATTR_COLOR_LOWNIBBLE);
+ printer.unk = GetFontAttribute(fontId, FONTATTR_UNKNOWN);
printer.letterSpacing = GetFontAttribute(fontId, FONTATTR_LETTER_SPACING);
printer.lineSpacing = GetFontAttribute(fontId, FONTATTR_LINE_SPACING);
@@ -1201,9 +1201,9 @@ void sub_8198C34(const struct WindowTemplate *window, u8 fontId, u16 baseTileNum
sub_8198AF8(window, fontId, 0, 1, baseTileNum, paletteNum, 0);
}
-s8 Menu_ProcessInputNoWrap_(void)
+s8 Menu_ProcessInputNoWrapClearOnChoose(void)
{
- s8 result = Menu_ProcessInputNoWrapAround();
+ s8 result = Menu_ProcessInputNoWrap();
if (result != MENU_NOTHING_CHOSEN)
sub_8198C78();
return result;
@@ -1238,22 +1238,22 @@ void sub_8198DBC(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u
{
u8 i;
u8 j;
- struct TextSubPrinter printer;
+ struct TextPrinterTemplate printer;
printer.windowId = windowId;
printer.fontId = fontId;
- printer.fgColor = GetFontAttribute(fontId, 5);
- printer.bgColor = GetFontAttribute(fontId, 6);
- printer.shadowColor = GetFontAttribute(fontId, 7);
- printer.fontColor_l = GetFontAttribute(fontId, 4);
- printer.letterSpacing = GetFontAttribute(fontId, 2);
- printer.lineSpacing = GetFontAttribute(fontId, 3);
+ printer.fgColor = GetFontAttribute(fontId, FONTATTR_COLOR_FOREGROUND);
+ printer.bgColor = GetFontAttribute(fontId, FONTATTR_COLOR_BACKGROUND);
+ printer.shadowColor = GetFontAttribute(fontId, FONTATTR_COLOR_SHADOW);
+ printer.unk = GetFontAttribute(fontId, FONTATTR_UNKNOWN);
+ printer.letterSpacing = GetFontAttribute(fontId, FONTATTR_LETTER_SPACING);
+ printer.lineSpacing = GetFontAttribute(fontId, FONTATTR_LINE_SPACING);
for (i = 0; i < itemCount2; i++)
{
for (j = 0; j < itemCount; j++)
{
- printer.current_text_offset = strs[a8[(itemCount * i) + j]].text;
+ printer.currentChar = strs[a8[(itemCount * i) + j]].text;
printer.x = (a4 * j) + left;
printer.y = (GetFontAttribute(fontId, 1) * i) + top;
printer.currentX = printer.x;
@@ -1447,7 +1447,7 @@ s8 sub_8199284(void)
return MENU_NOTHING_CHOSEN;
}
-s8 sub_8199334(void)
+s8 Menu_ProcessInputGridLayout(void)
{
u8 oldPos = gUnknown_0203CD90.cursorPos;
@@ -1611,14 +1611,14 @@ void PrintMenuTable(u8 windowId, u8 itemCount, const struct MenuAction *strs)
void sub_81995E4(u8 windowId, u8 itemCount, const struct MenuAction *strs, const u8 *a8)
{
u8 i;
- struct TextSubPrinter printer;
+ struct TextPrinterTemplate printer;
printer.windowId = windowId;
printer.fontId = 1;
- printer.fgColor = GetFontAttribute(1, 5);
- printer.bgColor = GetFontAttribute(1, 6);
- printer.shadowColor = GetFontAttribute(1, 7);
- printer.fontColor_l = GetFontAttribute(1, 4);
+ printer.fgColor = GetFontAttribute(1, FONTATTR_COLOR_FOREGROUND);
+ printer.bgColor = GetFontAttribute(1, FONTATTR_COLOR_BACKGROUND);
+ printer.shadowColor = GetFontAttribute(1, FONTATTR_COLOR_SHADOW);
+ printer.unk = GetFontAttribute(1, FONTATTR_UNKNOWN);
printer.letterSpacing = 0;
printer.lineSpacing = 0;
printer.x = 8;
@@ -1626,7 +1626,7 @@ void sub_81995E4(u8 windowId, u8 itemCount, const struct MenuAction *strs, const
for (i = 0; i < itemCount; i++)
{
- printer.current_text_offset = strs[a8[i]].text;
+ printer.currentChar = strs[a8[i]].text;
printer.y = (i * 16) + 1;
printer.currentY = (i * 16) + 1;
AddTextPrinter(&printer, 0xFF, NULL);
@@ -1637,22 +1637,22 @@ void sub_81995E4(u8 windowId, u8 itemCount, const struct MenuAction *strs, const
void CreateYesNoMenu(const struct WindowTemplate *window, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos)
{
- struct TextSubPrinter printer;
+ struct TextPrinterTemplate printer;
gUnknown_0203CD9F = AddWindow(window);
SetWindowBorderStyle(gUnknown_0203CD9F, TRUE, baseTileNum, paletteNum);
- printer.current_text_offset = gText_YesNo;
+ printer.currentChar = gText_YesNo;
printer.windowId = gUnknown_0203CD9F;
printer.fontId = 1;
printer.x = 8;
printer.y = 1;
printer.currentX = printer.x;
printer.currentY = printer.y;
- printer.fgColor = GetFontAttribute(1, 5);
- printer.bgColor = GetFontAttribute(1, 6);
- printer.shadowColor = GetFontAttribute(1, 7);
- printer.fontColor_l = GetFontAttribute(1, 4);
+ printer.fgColor = GetFontAttribute(1, FONTATTR_COLOR_FOREGROUND);
+ printer.bgColor = GetFontAttribute(1, FONTATTR_COLOR_BACKGROUND);
+ printer.shadowColor = GetFontAttribute(1, FONTATTR_COLOR_SHADOW);
+ printer.unk = GetFontAttribute(1, FONTATTR_UNKNOWN);
printer.letterSpacing = 0;
printer.lineSpacing = 0;
@@ -1678,14 +1678,14 @@ void sub_819983C(u8 windowId, u8 a4, u8 itemCount, u8 itemCount2, const struct M
{
u8 i;
u8 j;
- struct TextSubPrinter printer;
+ struct TextPrinterTemplate printer;
printer.windowId = windowId;
printer.fontId = 1;
- printer.fgColor = GetFontAttribute(1, 5);
- printer.bgColor = GetFontAttribute(1, 6);
- printer.shadowColor = GetFontAttribute(1, 7);
- printer.fontColor_l = GetFontAttribute(1, 4);
+ printer.fgColor = GetFontAttribute(1, FONTATTR_COLOR_FOREGROUND);
+ printer.bgColor = GetFontAttribute(1, FONTATTR_COLOR_BACKGROUND);
+ printer.shadowColor = GetFontAttribute(1, FONTATTR_COLOR_SHADOW);
+ printer.unk = GetFontAttribute(1, FONTATTR_UNKNOWN);
printer.letterSpacing = 0;
printer.lineSpacing = 0;
@@ -1693,7 +1693,7 @@ void sub_819983C(u8 windowId, u8 a4, u8 itemCount, u8 itemCount2, const struct M
{
for (j = 0; j < itemCount; j++)
{
- printer.current_text_offset = strs[a8[(itemCount * i) + j]].text;
+ printer.currentChar = strs[a8[(itemCount * i) + j]].text;
printer.x = (a4 * j) + 8;
printer.y = (16 * i) + 1;
printer.currentX = printer.x;
@@ -1941,9 +1941,9 @@ void sub_8199DF0(u32 bg, u8 a1, int a2, int a3)
void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str)
{
- struct TextSubPrinter printer;
+ struct TextPrinterTemplate printer;
- printer.current_text_offset = str;
+ printer.currentChar = str;
printer.windowId = windowId;
printer.fontId = fontId;
printer.x = left;
@@ -1952,7 +1952,7 @@ void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const
printer.currentY = printer.y;
printer.letterSpacing = GetFontAttribute(fontId, 2);
printer.lineSpacing = GetFontAttribute(fontId, 3);
- printer.fontColor_l = 0;
+ printer.unk = 0;
printer.fgColor = color[1];
printer.bgColor = color[0];
printer.shadowColor = color[2];
@@ -1962,9 +1962,9 @@ void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const
void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str)
{
- struct TextSubPrinter printer;
+ struct TextPrinterTemplate printer;
- printer.current_text_offset = str;
+ printer.currentChar = str;
printer.windowId = windowId;
printer.fontId = fontId;
printer.x = left;
@@ -1973,7 +1973,7 @@ void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 left, u8 top, u8 le
printer.currentY = printer.y;
printer.letterSpacing = letterSpacing;
printer.lineSpacing = lineSpacing;
- printer.fontColor_l = 0;
+ printer.unk = 0;
printer.fgColor = color[1];
printer.bgColor = color[0];
printer.shadowColor = color[2];
@@ -1981,11 +1981,11 @@ void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 left, u8 top, u8 le
AddTextPrinter(&printer, speed, NULL);
}
-void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 letterSpacing, u8 lineSpacing)
+void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing)
{
- struct TextSubPrinter printer;
+ struct TextPrinterTemplate printer;
- printer.current_text_offset = str;
+ printer.currentChar = str;
printer.windowId = windowId;
printer.fontId = fontId;
printer.x = left;
@@ -1994,7 +1994,7 @@ void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 left
printer.currentY = top;
printer.letterSpacing = letterSpacing;
printer.lineSpacing = lineSpacing;
- printer.fontColor_l = 0;
+ printer.unk = 0;
printer.fgColor = GetFontAttribute(fontId, 5);
printer.bgColor = GetFontAttribute(fontId, 6);
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 8cabbde42..a3c0be36a 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -7,6 +7,7 @@
#include "bg.h"
#include "main.h"
#include "text.h"
+#include "graphics.h"
#include "link.h"
#include "string_util.h"
#include "sound.h"
@@ -19,9 +20,6 @@
extern bool32 sub_800B504(void);
-extern const u8 gBagSwapLineGfx[];
-extern const u8 gBagSwapLinePal[];
-
// this file's functions
static void Task_ContinueTaskAfterMessagePrints(u8 taskId);
static void Task_CallYesOrNoCallback(u8 taskId);
@@ -136,7 +134,7 @@ void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8
if (string != gStringVar4)
StringExpandPlaceholders(gStringVar4, string);
- gTextFlags.flag_0 = 1;
+ gTextFlags.canABSpeedUpPrint = 1;
AddTextPrinterParameterized2(windowId, fontId, gStringVar4, textSpeed, NULL, 2, 1, 3);
gUnknown_0300117C = taskFunc;
gTasks[taskId].func = Task_ContinueTaskAfterMessagePrints;
@@ -169,7 +167,7 @@ void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *templa
static void Task_CallYesOrNoCallback(u8 taskId)
{
- switch (Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
PlaySE(SE_SELECT);
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index dd594f075..2bae89ecf 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -897,7 +897,7 @@ bool8 MetatileBehavior_IsBridge(u8 metatileBehavior)
return FALSE;
}
-u8 MetatileBehavior_GetBridgeSth(u8 metatileBehavior)
+u8 MetatileBehavior_GetBridgeType(u8 metatileBehavior)
{
u8 result = metatileBehavior - MB_WARP_OR_BRIDGE;
if (result < 4)
diff --git a/src/mon_markings.c b/src/mon_markings.c
index 7f320002d..30015dbef 100644
--- a/src/mon_markings.c
+++ b/src/mon_markings.c
@@ -479,7 +479,7 @@ static void sub_811FC80(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag)
for (i = 0; i < 2; i++)
{
spriteId = CreateSprite(&sprTemplate, x + 32, y + 32, 1);
- if (spriteId != 64)
+ if (spriteId != MAX_SPRITES)
{
sMenu->menuWindowSprites[i] = &gSprites[spriteId];
StartSpriteAnim(&gSprites[spriteId], i);
@@ -502,7 +502,7 @@ static void sub_811FC80(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag)
for (i = 0; i < 4; i++)
{
spriteId = CreateSprite(&sprTemplate, x + 32, y + 16 + 16 * i, 0);
- if (spriteId != 64)
+ if (spriteId != MAX_SPRITES)
{
sMenu->menuMarkingSprites[i] = &gSprites[spriteId];
gSprites[spriteId].data[0] = i;
@@ -518,7 +518,7 @@ static void sub_811FC80(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag)
spriteId = CreateSprite(&sprTemplate, 0, 0, 0);
- if (spriteId != 64)
+ if (spriteId != MAX_SPRITES)
{
sMenu->menuTextSprite = &gSprites[spriteId];
sMenu->menuTextSprite->oam.shape = ST_OAM_SQUARE;
@@ -535,7 +535,7 @@ static void sub_811FC80(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag)
sprTemplate.callback = sub_811FF7C;
spriteId = CreateSprite(&sprTemplate, x + 12, 0, 0);
- if(spriteId != 64)
+ if (spriteId != MAX_SPRITES)
{
sMenu->unkSprite = &gSprites[spriteId];
sMenu->unkSprite->data[0] = y + 16;
@@ -600,7 +600,7 @@ static struct Sprite *sub_811FFD4(u16 tileTag, u16 paletteTag, const u16 *palett
LoadSpritePalette(&sprPalette);
spriteId = CreateSprite(&sprTemplate, 0, 0, 0);
- if (spriteId != 64)
+ if (spriteId != MAX_SPRITES)
return &gSprites[spriteId];
else
return NULL;
diff --git a/src/money.c b/src/money.c
index dcc6afa2c..a347f818d 100644
--- a/src/money.c
+++ b/src/money.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "money.h"
+#include "graphics.h"
#include "event_data.h"
#include "string_util.h"
#include "text.h"
@@ -9,9 +10,6 @@
#include "strings.h"
#include "decompress.h"
-extern const u8 gMenuMoneyGfx[];
-extern const u8 gMenuMoneyPal[];
-
#define MAX_MONEY 999999
EWRAM_DATA static u8 sMoneyBoxWindowId = 0;
diff --git a/src/mossdeep_gym.c b/src/mossdeep_gym.c
new file mode 100644
index 000000000..cd377ad83
--- /dev/null
+++ b/src/mossdeep_gym.c
@@ -0,0 +1,313 @@
+#include "global.h"
+#include "event_object_movement.h"
+#include "fieldmap.h"
+#include "malloc.h"
+#include "mossdeep_gym.h"
+#include "script_movement.h"
+#include "constants/event_object_movement_constants.h"
+
+// Movement scripts.
+extern const u8 gUnknown_08612698[];
+extern const u8 gUnknown_0861269C[];
+extern const u8 gUnknown_086126A0[];
+extern const u8 gUnknown_086126A4[];
+extern const u8 gUnknown_086126A8[];
+extern const u8 gUnknown_086126AA[];
+extern const u8 gUnknown_086126AC[];
+extern const u8 gUnknown_086126AE[];
+
+struct MossdeepSubStruct
+{
+ u8 unk0;
+ u8 eventTemplateId;
+};
+
+struct MossdeepStruct
+{
+ struct MossdeepSubStruct objects[EVENT_OBJECTS_COUNT];
+ u8 count;
+ bool8 unk41;
+};
+
+// This file's functions.
+static void AddEventObject(u8 eventTemplateId, u8 arg1);
+static void sub_81A8D94(u8 eventTemplateId, u8 arg1);
+
+// EWRAM vars
+EWRAM_DATA static struct MossdeepStruct *gUnknown_0203CE50 = NULL;
+
+// code
+void InitMossdeepGymTiles(bool8 arg0)
+{
+ if (gUnknown_0203CE50 == NULL)
+ gUnknown_0203CE50 = AllocZeroed(sizeof(*gUnknown_0203CE50));
+
+ gUnknown_0203CE50->unk41 = arg0;
+}
+
+void FinishMossdeepGymTiles(void)
+{
+ u8 id;
+
+ if (gUnknown_0203CE50 != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203CE50);
+
+ id = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ EventObjectClearHeldMovementIfFinished(&gEventObjects[id]);
+ sub_80D338C();
+}
+
+u16 MossdeepGym_MoveEvents(u8 arg0)
+{
+ u8 i;
+ struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
+ u16 localId = 0;
+
+ for (i = 0; i < EVENT_OBJECT_TEMPLATES_COUNT; i++)
+ {
+ s32 var;
+ u8 r5;
+ s16 x = events[i].x + 7;
+ s16 y = events[i].y + 7;
+ u16 metatile = MapGridGetMetatileIdAt(x, y);
+
+ if (!gUnknown_0203CE50->unk41)
+ var = 0x250;
+ else
+ var = 0x298;
+
+ if (metatile < 0x250)
+ continue;
+
+ if ((u8)((metatile - var) / 8) >= 5)
+ continue;
+ if ((u8)((metatile - var) / 8) != arg0)
+ continue;
+
+ r5 = (u8)((metatile - var) % 8);
+ if (r5 < 4)
+ {
+ s8 x = 0;
+ s8 y = 0;
+ const u8 *movementScript;
+
+ switch (r5)
+ {
+ case 0:
+ movementScript = gUnknown_08612698;
+ x = 1;
+ break;
+ case 1:
+ movementScript = gUnknown_0861269C;
+ y = 1;
+ break;
+ case 2:
+ movementScript = gUnknown_086126A0;
+ x = -1;
+ break;
+ case 3:
+ movementScript = gUnknown_086126A4;
+ y = -1;
+ break;
+ default:
+ continue;
+ }
+
+ events[i].x += x;
+ events[i].y += y;
+ if (GetEventObjectIdByLocalIdAndMap(events[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup) != EVENT_OBJECTS_COUNT)
+ {
+ AddEventObject(i, r5);
+ localId = events[i].localId;
+ ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript);
+ }
+ else
+ {
+ sub_81A8D94(i, r5);
+ }
+ }
+ }
+
+ return localId;
+}
+
+void MossdeepGym_TurnEvents(void)
+{
+ u8 i;
+ s32 var;
+ struct EventObjectTemplate *events;
+
+ if (gUnknown_0203CE50 == NULL)
+ return;
+
+ if (!gUnknown_0203CE50->unk41)
+ var = 0x250;
+ else
+ var = 0x298;
+
+ events = gSaveBlock1Ptr->eventObjectTemplates;
+ for (i = 0; i < gUnknown_0203CE50->count; i++)
+ {
+ s32 r6;
+ s8 r0;
+ u8 eventObjectId;
+ s16 x = events[gUnknown_0203CE50->objects[i].eventTemplateId].x + 7;
+ s16 y = events[gUnknown_0203CE50->objects[i].eventTemplateId].y + 7;
+ u16 metatile = MapGridGetMetatileIdAt(x, y);
+
+ r0 = (u8)((metatile - var) % 8);
+ r0 -= (gUnknown_0203CE50->objects[i].unk0);
+ if (r0 < 0 || r0 == 3)
+ {
+ if (r0 == -3)
+ r6 = 1;
+ else
+ r6 = 0;
+ }
+ else
+ {
+ if (r0 > 0)
+ r6 = 1;
+ else
+ r6 = 2;
+ }
+
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(events[gUnknown_0203CE50->objects[i].eventTemplateId].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ if (eventObjectId != EVENT_OBJECTS_COUNT)
+ {
+ const u8 *movementScript;
+ u8 direction = gEventObjects[eventObjectId].facingDirection;
+ if (r6 == 0)
+ {
+ switch (direction)
+ {
+ case DIR_EAST:
+ movementScript = gUnknown_086126AE;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
+ break;
+ case DIR_SOUTH:
+ movementScript = gUnknown_086126A8;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
+ break;
+ case DIR_WEST:
+ movementScript = gUnknown_086126AA;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
+ break;
+ case DIR_NORTH:
+ movementScript = gUnknown_086126AC;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
+ break;
+ default:
+ continue;
+ }
+ ScriptMovement_StartObjectMovementScript(events[gUnknown_0203CE50->objects[i].eventTemplateId].localId,
+ gSaveBlock1Ptr->location.mapNum,
+ gSaveBlock1Ptr->location.mapGroup,
+ movementScript);
+ }
+ else if (r6 == 1)
+ {
+ switch (direction)
+ {
+ case DIR_EAST:
+ movementScript = gUnknown_086126AA;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
+ break;
+ case DIR_SOUTH:
+ movementScript = gUnknown_086126AC;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
+ break;
+ case DIR_WEST:
+ movementScript = gUnknown_086126AE;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
+ break;
+ case DIR_NORTH:
+ movementScript = gUnknown_086126A8;
+ events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
+ break;
+ default:
+ continue;
+ }
+ ScriptMovement_StartObjectMovementScript(events[gUnknown_0203CE50->objects[i].eventTemplateId].localId,
+ gSaveBlock1Ptr->location.mapNum,
+ gSaveBlock1Ptr->location.mapGroup,
+ movementScript);
+ }
+ }
+ }
+}
+
+static void AddEventObject(u8 eventTemplateId, u8 arg1)
+{
+ gUnknown_0203CE50->objects[gUnknown_0203CE50->count].eventTemplateId = eventTemplateId;
+ gUnknown_0203CE50->objects[gUnknown_0203CE50->count].unk0 = arg1;
+ gUnknown_0203CE50->count++;
+}
+
+static void sub_81A8D94(u8 eventTemplateId, u8 arg1)
+{
+ s8 r0;
+ s32 r6;
+ s32 var;
+ u16 movementType;
+ struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
+ s16 x = events[eventTemplateId].x + 7;
+ s16 y = events[eventTemplateId].y + 7;
+ u16 metatile = MapGridGetMetatileIdAt(x, y);
+
+ if (!gUnknown_0203CE50->unk41)
+ var = 0x250;
+ else
+ var = 0x298;
+
+ r0 = (u8)((metatile - var) % 8);
+ r0 -= arg1;
+ if (r0 < 0 || r0 == 3)
+ r6 = 0;
+ else if (r0 > 0 || r0 == -3)
+ r6 = 1;
+ else
+ r6 = 2;
+
+ movementType = events[eventTemplateId].movementType;
+ if (r6 == 0)
+ {
+ switch (movementType)
+ {
+ case MOVEMENT_TYPE_FACE_RIGHT:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
+ break;
+ case MOVEMENT_TYPE_FACE_DOWN:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
+ break;
+ case MOVEMENT_TYPE_FACE_LEFT:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
+ break;
+ case MOVEMENT_TYPE_FACE_UP:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
+ break;
+ default:
+ break;
+ }
+ }
+ else if (r6 == 1)
+ {
+ switch (movementType)
+ {
+ case MOVEMENT_TYPE_FACE_RIGHT:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
+ break;
+ case MOVEMENT_TYPE_FACE_DOWN:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
+ break;
+ case MOVEMENT_TYPE_FACE_LEFT:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
+ break;
+ case MOVEMENT_TYPE_FACE_UP:
+ events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
+ break;
+ default:
+ break;
+ }
+ }
+}
diff --git a/src/multiboot.c b/src/multiboot.c
index 7fd6df2d0..da90a55c0 100644
--- a/src/multiboot.c
+++ b/src/multiboot.c
@@ -1,7 +1,7 @@
#include "gba/gba.h"
#include "multiboot.h"
-static u16 MultiBoot_required_data[MULTIBOOT_NCHILD];
+IWRAM_DATA static u16 MultiBoot_required_data[MULTIBOOT_NCHILD];
static int MultiBootSend(struct MultiBootParam *mp, u16 data);
static int MultiBootHandShake(struct MultiBootParam *mp);
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 7e09a4d70..0de4675d9 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -43,7 +43,7 @@ static const struct BgTemplate sBgTemplates[] =
static const struct WindowTemplate sWindowTemplates[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 4,
.tilemapTop = 15,
.width = 22,
@@ -52,7 +52,7 @@ static const struct WindowTemplate sWindowTemplates[] =
.baseBlock = 20
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 7,
.tilemapTop = 6,
.width = 16,
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index 921c8e97c..4196bb34c 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -18,7 +18,6 @@
#include "pokemon_storage_system.h"
extern void sub_811EFC0(u8);
-extern void ValidateEReaderTrainer(void);
extern ScrCmdFunc gMysteryEventScriptCmdTable[];
extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[];
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 4d4178c7a..9902df04c 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -16,6 +16,7 @@
#include "constants/vars.h"
#include "constants/songs.h"
#include "pokemon_storage_system.h"
+#include "graphics.h"
#include "sound.h"
#include "trig.h"
#include "field_effect.h"
@@ -30,20 +31,6 @@
EWRAM_DATA static struct NamingScreenData *gNamingScreenData = NULL;
extern u16 gKeyRepeatStartDelay;
-// extern graphics
-extern const u16 gNamingScreenMenu_Pal[];
-extern const u8 gNamingScreenMenu_Gfx[];
-extern const u8 gUnknown_08DD4544[];
-extern const u8 gUnknown_08DD4620[];
-extern const u8 gUnknown_08DD46E0[];
-extern const u8 gUnknown_08DD47A0[];
-extern const u8 gNamingScreenRWindow_Gfx[];
-extern const u8 gNamingScreenKeyboardButton_Gfx[];
-extern const u8 gNamingScreenROptions_Gfx[];
-extern const u8 gNamingScreenCursor_Gfx[];
-extern const u8 gNamingScreenRightPointingTriangleTiles[];
-extern const u8 gNamingScreenUnderscoreTiles[];
-
// extern text
extern const u8 gExpandedPlaceholder_Empty[];
extern const u8 gText_PkmnTransferredSomeonesPC[];
@@ -116,7 +103,7 @@ static const struct BgTemplate gUnknown_0858BE00[] =
static const struct WindowTemplate gUnknown_0858BE10[] =
{
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 3,
.tilemapTop = 10,
.width = 19,
@@ -125,7 +112,7 @@ static const struct WindowTemplate gUnknown_0858BE10[] =
.baseBlock = 0x030
},
{
- .priority = 2,
+ .bg = 2,
.tilemapLeft = 3,
.tilemapTop = 10,
.width = 19,
@@ -134,7 +121,7 @@ static const struct WindowTemplate gUnknown_0858BE10[] =
.baseBlock = 0x0C8
},
{
- .priority = 3,
+ .bg = 3,
.tilemapLeft = 8,
.tilemapTop = 6,
.width = 17,
@@ -143,7 +130,7 @@ static const struct WindowTemplate gUnknown_0858BE10[] =
.baseBlock = 0x030
},
{
- .priority = 3,
+ .bg = 3,
.tilemapLeft = 8,
.tilemapTop = 4,
.width = 17,
@@ -152,7 +139,7 @@ static const struct WindowTemplate gUnknown_0858BE10[] =
.baseBlock = 0x052
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
.width = 30,
@@ -571,8 +558,8 @@ static void DisplaySentToPCMessage(void)
StringExpandPlaceholders(gStringVar4, gUnknown_0858BDB8[stringToDisplay]);
NewMenuHelpers_DrawDialogueFrame(0, 0);
- gTextFlags.flag_0 = TRUE;
- AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeed(), 0, 2, 1, 3);
+ gTextFlags.canABSpeedUpPrint = TRUE;
+ AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeedDelay(), 0, 2, 1, 3);
CopyWindowToVram(0, 3);
}
diff --git a/src/new_game.c b/src/new_game.c
index 127e48c35..18b128624 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -26,8 +26,8 @@
#include "item.h"
#include "pokedex.h"
#include "apprentice.h"
+#include "frontier_util.h"
-extern u8 gDifferentSaveFile;
extern u16 gSaveFileStatus;
extern u8 gUnknown_030060B0;
@@ -45,7 +45,6 @@ extern void NewGameInitPCItems(void);
extern void ClearDecorationInventories(void);
extern void ResetFanClub(void);
extern void copy_strings_to_sav1(void);
-extern void sub_81A4B14(void);
extern void sub_8195E10(void);
extern void sub_801AFD8(void);
extern void sub_800E5AC(void);
@@ -61,6 +60,10 @@ static void ClearFrontierRecord(void);
static void WarpToTruck(void);
static void ResetMiniGamesResults(void);
+// EWRAM vars
+EWRAM_DATA bool8 gDifferentSaveFile = FALSE;
+EWRAM_DATA bool8 gUnknown_020322D5 = FALSE;
+
// const rom data
static const struct ContestWinner sContestWinnerPicDummy =
{
@@ -69,30 +72,30 @@ static const struct ContestWinner sContestWinnerPicDummy =
};
// code
-void WriteUnalignedWord(u32 var, u8 *dataPtr)
+void SetTrainerId(u32 trainerId, u8 *dst)
{
- dataPtr[0] = var;
- dataPtr[1] = var >> 8;
- dataPtr[2] = var >> 16;
- dataPtr[3] = var >> 24;
+ dst[0] = trainerId;
+ dst[1] = trainerId >> 8;
+ dst[2] = trainerId >> 16;
+ dst[3] = trainerId >> 24;
}
-u32 ReadUnalignedWord(u8* dataPtr)
+u32 GetTrainerId(u8 *trainerId)
{
- return (dataPtr[3] << 24) | (dataPtr[2] << 16) | (dataPtr[1] << 8) | (dataPtr[0]);
+ return (trainerId[3] << 24) | (trainerId[2] << 16) | (trainerId[1] << 8) | (trainerId[0]);
}
-void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom)
+void CopyTrainerId(u8 *dst, u8 *src)
{
s32 i;
for (i = 0; i < 4; i++)
- copyTo[i] = copyFrom[i];
+ dst[i] = src[i];
}
static void InitPlayerTrainerId(void)
{
u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower();
- WriteUnalignedWord(trainerId, gSaveBlock2Ptr->playerTrainerId);
+ SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId);
}
// L=A isnt set here for some reason.
@@ -204,7 +207,7 @@ void NewGameInitData(void)
copy_strings_to_sav1();
SetLilycoveLady();
ResetAllApprenticeData();
- sub_81A4B14();
+ ClearRankingHallRecords();
sub_8195E10();
sub_801AFD8();
sub_800E5AC();
diff --git a/src/normal.c b/src/normal.c
new file mode 100644
index 000000000..3de8b1157
--- /dev/null
+++ b/src/normal.c
@@ -0,0 +1,970 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "palette.h"
+#include "random.h"
+#include "task.h"
+#include "trig.h"
+#include "constants/rgb.h"
+
+void AnimConfusionDuck(struct Sprite *);
+void AnimSimplePaletteBlend(struct Sprite *);
+u32 UnpackSelectedBattleAnimPalettes(s16);
+void sub_81158A4(struct Sprite *);
+void sub_81159B4(struct Sprite *);
+void sub_81160A4(struct Sprite *);
+void sub_8116388(struct Sprite *);
+void sub_8116420(struct Sprite *);
+void sub_8116458(struct Sprite *);
+void sub_81164F0(struct Sprite *);
+void sub_8116560(struct Sprite *);
+void sub_81165A8(struct Sprite *);
+static void AnimConfusionDuckStep(struct Sprite *);
+static void AnimSimplePaletteBlendStep(struct Sprite *);
+static void sub_81158F8(struct Sprite *);
+static void sub_8115984(struct Sprite *);
+static void sub_8115A54(u8, u8, u8);
+static void sub_8115AA4(u8);
+static void sub_8115BC8(u8, u8, u8);
+static void sub_8115C18(u8);
+static void sub_8115CD0(u8, u8, u8);
+static void sub_8115D2C(u8);
+static void sub_8115E00(u8);
+static void sub_8115EB8(u8);
+static void sub_8116148(struct Sprite *);
+static void sub_81161F4(void);
+static void sub_81162F8(u8);
+static void sub_81163D0(struct Sprite *);
+static void sub_81165E4(struct Sprite *);
+
+extern void sub_810E2C8(struct Sprite *);
+
+const union AnimCmd gUnknown_0859722C[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_08597240[] =
+{
+ 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 gUnknown_08597254[] =
+{
+ gUnknown_0859722C,
+ gUnknown_08597240,
+};
+
+const struct SpriteTemplate gConfusionDuckSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_DUCK,
+ .paletteTag = ANIM_TAG_DUCK,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08597254,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimConfusionDuck,
+};
+
+const struct SpriteTemplate gSimplePaletteBlendSpriteTemplate =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimSimplePaletteBlend,
+};
+
+const struct SpriteTemplate gComplexPaletteBlendSpriteTemplate =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81158A4,
+};
+
+const union AnimCmd gUnknown_085972A4[] =
+{
+ 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 gUnknown_085972BC[] =
+{
+ gUnknown_085972A4,
+};
+
+const struct SpriteTemplate gUnknown_085972C0 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_4,
+ .paletteTag = ANIM_TAG_SPARKLE_4,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085972BC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81159B4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_85972D8 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81160A4,
+};
+
+const union AffineAnimCmd gUnknown_085972F0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08597300[] =
+{
+ AFFINEANIMCMD_FRAME(0xD8, 0xD8, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08597318[] =
+{
+ AFFINEANIMCMD_FRAME(0xB0, 0xB0, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08597330[] =
+{
+ AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08597348[] =
+{
+ gUnknown_085972F0,
+ gUnknown_08597300,
+ gUnknown_08597318,
+ gUnknown_08597330,
+};
+
+const struct SpriteTemplate gBasicHitSplatSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gUnknown_08524A94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597348,
+ .callback = sub_8116388,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8597370 =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gUnknown_08524A94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597348,
+ .callback = sub_8116420,
+};
+
+const struct SpriteTemplate gUnknown_08597388 =
+{
+ .tileTag = ANIM_TAG_WATER_IMPACT,
+ .paletteTag = ANIM_TAG_WATER_IMPACT,
+ .oam = &gUnknown_08524A94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597348,
+ .callback = sub_8116388,
+};
+
+const struct SpriteTemplate gUnknown_085973A0 =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gUnknown_08524A94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597348,
+ .callback = sub_8116458,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_85973B8 =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gUnknown_08524A94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597348,
+ .callback = sub_81164F0,
+};
+
+const struct SpriteTemplate gUnknown_085973D0 =
+{
+ .tileTag = ANIM_TAG_CROSS_IMPACT,
+ .paletteTag = ANIM_TAG_CROSS_IMPACT,
+ .oam = &gUnknown_08524A34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8116560,
+};
+
+const struct SpriteTemplate gUnknown_085973E8 =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597348,
+ .callback = sub_81165A8,
+};
+
+const struct SpriteTemplate gUnknown_08597400 =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gUnknown_08524A94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08597348,
+ .callback = sub_81163D0,
+};
+
+// Moves a spinning duck around the mon's head.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: initial wave offset
+// arg 3: wave period (higher means faster wave)
+// arg 4: duration
+void AnimConfusionDuck(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[2];
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->data[1] = -gBattleAnimArgs[3];
+ sprite->data[4] = 1;
+ }
+ else
+ {
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[4] = 0;
+ StartSpriteAnim(sprite, 1);
+ }
+
+ sprite->data[3] = gBattleAnimArgs[4];
+ sprite->callback = AnimConfusionDuckStep;
+ sprite->callback(sprite);
+}
+
+static void AnimConfusionDuckStep(struct Sprite *sprite)
+{
+ sprite->pos2.x = Cos(sprite->data[0], 30);
+ sprite->pos2.y = Sin(sprite->data[0], 10);
+
+ if ((u16)sprite->data[0] < 128)
+ sprite->oam.priority = 1;
+ else
+ sprite->oam.priority = 3;
+
+ sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF;
+ if (++sprite->data[2] == sprite->data[3])
+ DestroyAnimSprite(sprite);
+}
+
+// Performs a simple color blend on a specified sprite.
+// arg 0: palette selector
+// arg 1: delay
+// arg 2: start blend amount
+// arg 3: end blend amount
+// arg 4: blend color
+void AnimSimplePaletteBlend(struct Sprite *sprite)
+{
+ u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
+ BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]);
+ sprite->invisible = 1;
+ sprite->callback = AnimSimplePaletteBlendStep;
+}
+
+// Unpacks a bitfield and returns a bitmask of its selected palettes.
+// Bits 0-6 of the selector parameter result in the following palettes being selected:
+// 0: battle background palettes (BG palettes 1, 2, and 3)
+// 1: gBattleAnimAttacker OBJ palette
+// 2: gBattleAnimTarget OBJ palette
+// 3: gBattleAnimAttacker partner OBJ palette
+// 4: gBattleAnimTarget partner OBJ palette
+// 5: BG palette 4
+// 6: BG palette 5
+u32 UnpackSelectedBattleAnimPalettes(s16 selector)
+{
+ u8 arg0 = selector & 1;
+ u8 arg1 = (selector >> 1) & 1;
+ u8 arg2 = (selector >> 2) & 1;
+ u8 arg3 = (selector >> 3) & 1;
+ u8 arg4 = (selector >> 4) & 1;
+ u8 arg5 = (selector >> 5) & 1;
+ u8 arg6 = (selector >> 6) & 1;
+ return sub_80A75AC(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+}
+
+static void AnimSimplePaletteBlendStep(struct Sprite *sprite)
+{
+ if (!gPaletteFade.active)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_81158A4(struct Sprite *sprite)
+{
+ u32 selectedPalettes;
+
+ sprite->data[0] = gBattleAnimArgs[1];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[2];
+ sprite->data[3] = gBattleAnimArgs[3];
+ sprite->data[4] = gBattleAnimArgs[4];
+ sprite->data[5] = gBattleAnimArgs[5];
+ sprite->data[6] = gBattleAnimArgs[6];
+ sprite->data[7] = gBattleAnimArgs[0];
+
+ selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
+ BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]);
+ sprite->invisible = 1;
+ sprite->callback = sub_81158F8;
+}
+
+static void sub_81158F8(struct Sprite *sprite)
+{
+ u32 selectedPalettes;
+
+ if (sprite->data[0] > 0)
+ {
+ sprite->data[0]--;
+ return;
+ }
+
+ if (gPaletteFade.active)
+ return;
+
+ if (sprite->data[2] == 0)
+ {
+ sprite->callback = sub_8115984;
+ return;
+ }
+
+ selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
+ if (sprite->data[1] & 0x100)
+ BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]);
+ else
+ BlendPalettes(selectedPalettes, sprite->data[6], sprite->data[5]);
+
+ sprite->data[1] ^= 0x100;
+ sprite->data[0] = sprite->data[1] & 0xFF;
+ sprite->data[2]--;
+}
+
+static void sub_8115984(struct Sprite *sprite)
+{
+ u32 selectedPalettes;
+
+ if (!gPaletteFade.active)
+ {
+ selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
+ BlendPalettes(selectedPalettes, 0, 0);
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_81159B4(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = 0;
+ sprite->data[1] = 10;
+ sprite->data[2] = 8;
+ sprite->data[3] = 40;
+ sprite->data[4] = 112;
+ sprite->data[5] = 0;
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80A634C;
+ sprite->callback(sprite);
+}
+
+void sub_8115A04(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].data[8] = 0;
+ sub_8115A54(taskId, 0, gTasks[taskId].data[4]);
+ gTasks[taskId].func = sub_8115AA4;
+}
+
+static void sub_8115A54(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount)
+{
+ u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gTasks[taskId].data[0]);
+ BeginNormalPaletteFade(
+ selectedPalettes,
+ gTasks[taskId].data[1],
+ initialBlendAmount,
+ targetBlendAmount,
+ gTasks[taskId].data[5]);
+
+ gTasks[taskId].data[2]--;
+ gTasks[taskId].data[8] ^= 1;
+}
+
+static void sub_8115AA4(u8 taskId)
+{
+ u8 initialBlendAmount, targetBlendAmount;
+ if (!gPaletteFade.active)
+ {
+ if (gTasks[taskId].data[2] > 0)
+ {
+ if (gTasks[taskId].data[8] == 0)
+ {
+ initialBlendAmount = gTasks[taskId].data[3];
+ targetBlendAmount = gTasks[taskId].data[4];
+ }
+ else
+ {
+ initialBlendAmount = gTasks[taskId].data[4];
+ targetBlendAmount = gTasks[taskId].data[3];
+ }
+
+ if (gTasks[taskId].data[2] == 1)
+ targetBlendAmount = 0;
+
+ sub_8115A54(taskId, initialBlendAmount, targetBlendAmount);
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_8115B0C(u8 taskId)
+{
+ int battler;
+ u32 selectedPalettes = 0;
+
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].data[8] = 0;
+
+ for (battler = 0; battler < gBattlersCount; battler++)
+ {
+ if (battler != gBattleAnimAttacker && battler != gBattleAnimTarget)
+ selectedPalettes |= 1 << (battler + 16);
+ }
+
+ if (gBattleAnimArgs[0] == 1)
+ selectedPalettes |= 0xE;
+
+ gTasks[taskId].data[9] = selectedPalettes >> 16;
+ gTasks[taskId].data[10] = selectedPalettes & 0xFF;
+ sub_8115BC8(taskId, 0, gTasks[taskId].data[4]);
+ gTasks[taskId].func = sub_8115C18;
+}
+
+static void sub_8115BC8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount)
+{
+ u32 selectedPalettes = ((u16)gTasks[taskId].data[9] << 16) | (u16)gTasks[taskId].data[10];
+ BeginNormalPaletteFade(
+ selectedPalettes,
+ gTasks[taskId].data[1],
+ initialBlendAmount,
+ targetBlendAmount,
+ gTasks[taskId].data[5]);
+
+ gTasks[taskId].data[2]--;
+ gTasks[taskId].data[8] ^= 1;
+}
+
+static void sub_8115C18(u8 taskId)
+{
+ u8 initialBlendAmount, targetBlendAmount;
+ if (!gPaletteFade.active)
+ {
+ if (gTasks[taskId].data[2] > 0)
+ {
+ if (gTasks[taskId].data[8] == 0)
+ {
+ initialBlendAmount = gTasks[taskId].data[3];
+ targetBlendAmount = gTasks[taskId].data[4];
+ }
+ else
+ {
+ initialBlendAmount = gTasks[taskId].data[4];
+ targetBlendAmount = gTasks[taskId].data[3];
+ }
+
+ if (gTasks[taskId].data[2] == 1)
+ targetBlendAmount = 0;
+
+ sub_8115BC8(taskId, initialBlendAmount, targetBlendAmount);
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_8115C80(u8 taskId)
+{
+ u8 paletteIndex;
+
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].data[8] = 0;
+
+ sub_8115CD0(taskId, 0, gTasks[taskId].data[4]);
+ gTasks[taskId].func = sub_8115D2C;
+}
+
+static void sub_8115CD0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount)
+{
+ u8 paletteIndex = IndexOfSpritePaletteTag(gTasks[taskId].data[0]);
+ BeginNormalPaletteFade(
+ 1 << (paletteIndex + 16),
+ gTasks[taskId].data[1],
+ initialBlendAmount,
+ targetBlendAmount,
+ gTasks[taskId].data[5]);
+
+ gTasks[taskId].data[2]--;
+ gTasks[taskId].data[8] ^= 1;
+}
+
+static void sub_8115D2C(u8 taskId)
+{
+ u8 initialBlendAmount, targetBlendAmount;
+ if (!gPaletteFade.active)
+ {
+ if (gTasks[taskId].data[2] > 0)
+ {
+ if (gTasks[taskId].data[8] == 0)
+ {
+ initialBlendAmount = gTasks[taskId].data[3];
+ targetBlendAmount = gTasks[taskId].data[4];
+ }
+ else
+ {
+ initialBlendAmount = gTasks[taskId].data[4];
+ targetBlendAmount = gTasks[taskId].data[3];
+ }
+
+ if (gTasks[taskId].data[2] == 1)
+ targetBlendAmount = 0;
+
+ sub_8115CD0(taskId, initialBlendAmount, targetBlendAmount);
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+}
+
+void sub_8115D94(u8 taskId)
+{
+ u8 paletteIndex;
+
+ gTasks[taskId].data[0] = gBattleAnimArgs[1];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[4] = gBattleAnimArgs[4];
+ gTasks[taskId].data[5] = gBattleAnimArgs[5];
+ gTasks[taskId].data[6] = gBattleAnimArgs[6];
+ gTasks[taskId].data[7] = gBattleAnimArgs[0];
+
+ paletteIndex = IndexOfSpritePaletteTag(gBattleAnimArgs[0]);
+ BeginNormalPaletteFade(
+ 1 << (paletteIndex + 16),
+ 0,
+ gBattleAnimArgs[4],
+ gBattleAnimArgs[4],
+ gBattleAnimArgs[3]);
+
+ gTasks[taskId].func = sub_8115E00;
+}
+
+static void sub_8115E00(u8 taskId)
+{
+ u32 selectedPalettes;
+
+ if (gTasks[taskId].data[0] > 0)
+ {
+ gTasks[taskId].data[0]--;
+ return;
+ }
+
+ if (gPaletteFade.active)
+ return;
+
+ if (gTasks[taskId].data[2] == 0)
+ {
+ gTasks[taskId].func = sub_8115EB8;
+ return;
+ }
+
+ selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16);
+ if (gTasks[taskId].data[1] & 0x100)
+ {
+ BeginNormalPaletteFade(
+ selectedPalettes,
+ 0,
+ gTasks[taskId].data[4],
+ gTasks[taskId].data[4],
+ gTasks[taskId].data[3]);
+ }
+ else
+ {
+ BeginNormalPaletteFade(
+ selectedPalettes,
+ 0,
+ gTasks[taskId].data[6],
+ gTasks[taskId].data[6],
+ gTasks[taskId].data[5]);
+ }
+
+ gTasks[taskId].data[1] ^= 0x100;
+ gTasks[taskId].data[0] = gTasks[taskId].data[1] & 0xFF;
+ gTasks[taskId].data[2]--;
+}
+
+static void sub_8115EB8(u8 taskId)
+{
+ u32 selectedPalettes;
+
+ if (!gPaletteFade.active)
+ {
+ selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16);
+ BeginNormalPaletteFade(selectedPalettes, 0, 0, 0, RGB(0, 0, 0));
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_8115F10(u8 taskId)
+{
+ u32 selectedPalettes = 0;
+ u8 attackerBattler = gBattleAnimAttacker;
+ u8 targetBattler = gBattleAnimTarget;
+
+ if (gBattleAnimArgs[0] & 0x100)
+ selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0);
+
+ if (gBattleAnimArgs[1] & 0x100)
+ selectedPalettes |= (0x10000 << attackerBattler);
+
+ if (gBattleAnimArgs[2] & 0x100)
+ selectedPalettes |= (0x10000 << targetBattler);
+
+ InvertPlttBuffer(selectedPalettes);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8115F94(u8 taskId)
+{
+ u8 attackerBattler;
+ u8 targetBattler;
+ u8 paletteIndex;
+ u32 selectedPalettes = 0;
+
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[2] = gBattleAnimArgs[0];
+ gTasks[taskId].data[3] = gBattleAnimArgs[1];
+ gTasks[taskId].data[4] = gBattleAnimArgs[2];
+ gTasks[taskId].data[1] = gBattleAnimArgs[3];
+ gTasks[taskId].data[5] = gBattleAnimArgs[4];
+ gTasks[taskId].data[6] = gBattleAnimArgs[5];
+ gTasks[taskId].data[7] = gBattleAnimArgs[6];
+ }
+
+ gTasks[taskId].data[0]++;
+ attackerBattler = gBattleAnimAttacker;
+ targetBattler = gBattleAnimTarget;
+
+ if (gTasks[taskId].data[2] & 0x100)
+ selectedPalettes = 0x0000FFFF;
+
+ if (gTasks[taskId].data[2] & 0x1)
+ {
+ paletteIndex = IndexOfSpritePaletteTag(gSprites[gHealthboxSpriteIds[attackerBattler]].template->paletteTag);
+ selectedPalettes |= (1 << paletteIndex) << 16;
+ }
+
+ if (gTasks[taskId].data[3] & 0x100)
+ selectedPalettes |= (1 << attackerBattler) << 16;
+
+ if (gTasks[taskId].data[4] & 0x100)
+ selectedPalettes |= (1 << targetBattler) << 16;
+
+ TintPlttBuffer(selectedPalettes, gTasks[taskId].data[5], gTasks[taskId].data[6], gTasks[taskId].data[7]);
+ if (gTasks[taskId].data[0] == gTasks[taskId].data[1])
+ {
+ UnfadePlttBuffer(selectedPalettes);
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_81160A4(struct Sprite *sprite)
+{
+ u16 var0;
+
+ sprite->invisible = 1;
+ sprite->data[0] = -gBattleAnimArgs[0];
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[3] = gBattleAnimArgs[2];
+
+ switch (gBattleAnimArgs[3])
+ {
+ case 0:
+ StoreSpriteCallbackInData6(sprite, (void *)&gBattle_BG3_X);
+ break;
+ case 1:
+ StoreSpriteCallbackInData6(sprite, (void *)&gBattle_BG3_Y);
+ break;
+ case 2:
+ StoreSpriteCallbackInData6(sprite, (void *)&gSpriteCoordOffsetX);
+ break;
+ default:
+ StoreSpriteCallbackInData6(sprite, (void *)&gSpriteCoordOffsetY);
+ break;
+ }
+
+ sprite->data[4] = *(u16 *)(sprite->data[6] | (sprite->data[7] << 16));
+ sprite->data[5] = gBattleAnimArgs[3];
+ var0 = sprite->data[5] - 2;
+ if (var0 < 2)
+ sub_81161F4();
+
+ sprite->callback = sub_8116148;
+}
+
+static void sub_8116148(struct Sprite *sprite)
+{
+ u8 i;
+ u16 var0;
+
+ if (sprite->data[3] > 0)
+ {
+ sprite->data[3]--;
+ if (sprite->data[1] > 0)
+ {
+ sprite->data[1]--;
+ }
+ else
+ {
+ sprite->data[1] = sprite->data[2];
+ *(u16 *)(sprite->data[6] | (sprite->data[7] << 16)) += sprite->data[0];
+ sprite->data[0] = -sprite->data[0];
+ }
+ }
+ else
+ {
+ *(u16 *)(sprite->data[6] | (sprite->data[7] << 16)) = sprite->data[4];
+ var0 = sprite->data[5] - 2;
+ if (var0 < 2)
+ {
+ for (i = 0; i < gBattlersCount; i++)
+ gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = 0;
+ }
+
+ DestroyAnimSprite(sprite);
+ }
+}
+
+static void sub_81161F4(void)
+{
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 0;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 0;
+
+ if (gBattleAnimArgs[4] == 2)
+ {
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1;
+ }
+ else
+ {
+ if (gBattleAnimArgs[4] == 0)
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1;
+ else
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1;
+ }
+}
+
+void sub_81162A4(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].data[3] = gBattleAnimArgs[3];
+ gTasks[taskId].data[8] = gBattleAnimArgs[3];
+ gBattle_BG3_X = gBattleAnimArgs[0];
+ gBattle_BG3_Y = gBattleAnimArgs[1];
+ gTasks[taskId].func = sub_81162F8;
+ gTasks[taskId].func(taskId);
+}
+
+static void sub_81162F8(u8 taskId)
+{
+ if (gTasks[taskId].data[3] == 0)
+ {
+ if (gBattle_BG3_X == gTasks[taskId].data[0])
+ gBattle_BG3_X = -gTasks[taskId].data[0];
+ else
+ gBattle_BG3_X = gTasks[taskId].data[0];
+
+ if (gBattle_BG3_Y == -gTasks[taskId].data[1])
+ gBattle_BG3_Y = 0;
+ else
+ gBattle_BG3_Y = -gTasks[taskId].data[1];
+
+ gTasks[taskId].data[3] = gTasks[taskId].data[8];
+ if (--gTasks[taskId].data[2] == 0)
+ {
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+ }
+ else
+ {
+ gTasks[taskId].data[3]--;
+ }
+}
+
+void sub_8116388(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
+ if (gBattleAnimArgs[2] == 0)
+ InitAnimSpritePos(sprite, 1);
+ else
+ sub_80A6980(sprite, TRUE);
+
+ sprite->callback = sub_80A67BC;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+static void sub_81163D0(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
+ if (gBattleAnimArgs[2] == 0)
+ InitAnimSpritePos(sprite, 1);
+ else
+ sub_80A6980(sprite, TRUE);
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->callback = sub_80A67BC;
+ StoreSpriteCallbackInData6(sprite, sub_810E2C8);
+}
+
+void sub_8116420(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER && !IsContest())
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+
+ sub_8116388(sprite);
+}
+
+void sub_8116458(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[1] == -1)
+ gBattleAnimArgs[1] = Random2() & 3;
+
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[1]);
+ if (gBattleAnimArgs[0] == 0)
+ InitAnimSpritePos(sprite, 0);
+ else
+ sub_80A6980(sprite, FALSE);
+
+ sprite->pos2.x += (Random2() % 48) - 24;
+ sprite->pos2.y += (Random2() % 24) - 12;
+
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80A67BC;
+}
+
+void sub_81164F0(struct Sprite *sprite)
+{
+ sprite->data[0] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
+ sprite->pos1.x = gSprites[sprite->data[0]].pos1.x + gSprites[sprite->data[0]].pos2.x;
+ sprite->pos1.y = gSprites[sprite->data[0]].pos1.y + gSprites[sprite->data[0]].pos2.y;
+ sprite->pos2.x = gBattleAnimArgs[1];
+ sprite->pos2.y = gBattleAnimArgs[2];
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80A67BC;
+}
+
+void sub_8116560(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[2] == 0)
+ InitAnimSpritePos(sprite, 1);
+ else
+ sub_80A6980(sprite, TRUE);
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback = WaitAnimForDuration;
+}
+
+void sub_81165A8(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
+ if (gBattleAnimArgs[2] == 0)
+ InitAnimSpritePos(sprite, 1);
+ else
+ sub_80A6980(sprite, TRUE);
+
+ sprite->callback = sub_81165E4;
+}
+
+static void sub_81165E4(struct Sprite *sprite)
+{
+ sprite->invisible ^= 1;
+ if (sprite->data[0]++ > 12)
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/option_menu.c b/src/option_menu.c
index 6cb208c63..122ba8d8a 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -92,7 +92,7 @@ static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] =
static const struct WindowTemplate sOptionMenuWinTemplates[] =
{
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 2,
.tilemapTop = 1,
.width = 26,
@@ -101,7 +101,7 @@ static const struct WindowTemplate sOptionMenuWinTemplates[] =
.baseBlock = 2
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 5,
.width = 26,
diff --git a/src/overworld.c b/src/overworld.c
index 94c3f8328..3193ec0d3 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "overworld.h"
+#include "battle_pyramid.h"
#include "battle_setup.h"
#include "berry.h"
#include "bg.h"
@@ -52,6 +53,7 @@
#include "tv.h"
#include "scanline_effect.h"
#include "wild_encounter.h"
+#include "frontier_util.h"
#include "constants/abilities.h"
#include "constants/map_types.h"
#include "constants/maps.h"
@@ -86,12 +88,6 @@ extern const struct MapHeader *const *const gMapGroups[];
extern const s32 gMaxFlashLevel;
extern const u16 gUnknown_82EC7C4[];
-u16 gUnknown_03005DA8;
-MainCallback gFieldCallback;
-bool8 (*gFieldCallback2)(void);
-u8 gUnknown_03005DB4;
-u8 gFieldLinkPlayerCount;
-
// functions
extern void HealPlayerParty(void);
extern void move_tilemap_camera_to_upper_left_corner(void);
@@ -112,7 +108,6 @@ extern void ShowMapNamePopup(void);
extern bool32 InTrainerHill(void);
extern bool32 sub_808651C(void);
extern bool8 sub_80AF6A4(void);
-extern bool8 sub_81A9E6C(void);
extern bool8 sub_80E909C(void);
extern void sub_81AA1D8(void);
extern void c2_change_map(void);
@@ -136,7 +131,6 @@ extern void sub_8087D74(void);
extern void battle_pyramid_map_load_related(u8);
extern void sub_80B00E8(u8);
extern void sub_80E9238(u8);
-extern void sub_81A3908(void);
extern void sub_81AA2F8(void);
extern void sub_8195E10(void);
extern void sub_80EDB44(void);
@@ -166,8 +160,8 @@ extern u32 sub_800B4DC(void);
extern bool32 sub_80B39D4(u8);
extern const u8* GetInteractedLinkPlayerScript(struct MapPosition *a1, u8, u8);
extern u8 *GetCoordEventScriptAtMapPosition(void*);
-extern u8 sub_808BD6C(u8);
-extern u8 sub_808BD7C(u8);
+extern u8 GetFRLGAvatarGraphicsIdByGender(u8);
+extern u8 GetRSAvatarGraphicsIdByGender(u8);
extern void UpdateEventObjectSpriteVisibility(struct Sprite*, u8);
// this file's functions
@@ -256,6 +250,16 @@ IWRAM_DATA static u8 sUnknown_03000E18;
IWRAM_DATA static u8 sUnknown_03000E19;
IWRAM_DATA static u32 sUnusedVar;
+// IWRAM common
+u16 *gBGTilemapBuffers1;
+u16 *gBGTilemapBuffers2;
+u16 *gBGTilemapBuffers3;
+u16 gUnknown_03005DA8;
+void (*gFieldCallback)(void);
+bool8 (*gFieldCallback2)(void);
+u8 gUnknown_03005DB4;
+u8 gFieldLinkPlayerCount;
+
// EWRAM vars
EWRAM_DATA static u8 sUnknown_020322D8 = 0;
EWRAM_DATA struct WarpData gLastUsedWarp = {0};
@@ -517,7 +521,7 @@ void LoadSaveblockEventObjScripts(void)
struct EventObjectTemplate *savObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
s32 i;
- for (i = 0; i < 64; i++)
+ for (i = 0; i < EVENT_OBJECT_TEMPLATES_COUNT; i++)
savObjTemplates[i].script = mapHeaderObjTemplates[i].script;
}
@@ -526,7 +530,7 @@ void Overworld_SetEventObjTemplateCoords(u8 localId, s16 x, s16 y)
s32 i;
struct EventObjectTemplate *savObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
- for (i = 0; i < 64; i++)
+ for (i = 0; i < EVENT_OBJECT_TEMPLATES_COUNT; i++)
{
struct EventObjectTemplate *eventObjectTemplate = &savObjTemplates[i];
if (eventObjectTemplate->localId == localId)
@@ -543,7 +547,7 @@ void Overworld_SetEventObjTemplateMovementType(u8 localId, u8 movementType)
s32 i;
struct EventObjectTemplate *savObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
- for (i = 0; i < 64; i++)
+ for (i = 0; i < EVENT_OBJECT_TEMPLATES_COUNT; i++)
{
struct EventObjectTemplate *eventObjectTemplate = &savObjTemplates[i];
if (eventObjectTemplate->localId == localId)
@@ -585,7 +589,7 @@ void set_warp2_warp3_to_neg_1(void)
gFixedHoleWarp = sDummyWarpData;
}
-void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
+static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
{
warp->mapGroup = mapGroup;
warp->mapNum = mapNum;
@@ -594,7 +598,7 @@ void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x,
warp->y = y;
}
-bool32 IsDummyWarp(struct WarpData *warp)
+static bool32 IsDummyWarp(struct WarpData *warp)
{
if (warp->mapGroup != -1)
return FALSE;
@@ -620,7 +624,7 @@ struct MapHeader const *const GetDestinationWarpMapHeader(void)
return Overworld_GetMapHeaderByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum);
}
-void LoadCurrentMapData(void)
+static void LoadCurrentMapData(void)
{
sLastMapSectionId = gMapHeader.regionMapSectionId;
gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
@@ -628,13 +632,13 @@ void LoadCurrentMapData(void)
gMapHeader.mapLayout = GetMapLayout();
}
-void LoadSaveblockMapHeader(void)
+static void LoadSaveblockMapHeader(void)
{
gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
gMapHeader.mapLayout = GetMapLayout();
}
-void SetPlayerCoordsFromWarp(void)
+static void SetPlayerCoordsFromWarp(void)
{
if (gSaveBlock1Ptr->location.warpId >= 0 && gSaveBlock1Ptr->location.warpId < gMapHeader.events->warpCount)
{
@@ -729,7 +733,7 @@ void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
SetWarpData(&gFixedDiveWarp, mapGroup, mapNum, warpId, x, y);
}
-void SetFixedDiveWarpAsDestination(void)
+static void SetFixedDiveWarpAsDestination(void)
{
sWarpDestination = gFixedDiveWarp;
}
@@ -764,7 +768,7 @@ void sub_8084F6C(u8 a1)
SetWarpData(&gSaveBlock1Ptr->warp1, warp->group, warp->map, -1, warp->x, warp->y);
}
-void sub_8084FAC(void)
+void sub_8084FAC(int unused)
{
gSaveBlock1Ptr->warp1 = gSaveBlock1Ptr->warp2;
}
@@ -785,7 +789,7 @@ const struct MapConnection *GetMapConnection(u8 dir)
return NULL;
}
-bool8 SetDiveWarp(u8 dir, u16 x, u16 y)
+static bool8 SetDiveWarp(u8 dir, u16 x, u16 y)
{
const struct MapConnection *connection = GetMapConnection(dir);
@@ -905,8 +909,8 @@ static void mli0_load_map(u32 a1)
void ResetInitialPlayerAvatarState(void)
{
- gInitialPlayerAvatarState.direction = 1;
- gInitialPlayerAvatarState.transitionFlags = 1;
+ gInitialPlayerAvatarState.direction = DIR_SOUTH;
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT;
}
void StoreInitialPlayerAvatarState(void)
@@ -914,15 +918,15 @@ void StoreInitialPlayerAvatarState(void)
gInitialPlayerAvatarState.direction = GetPlayerFacingDirection();
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE))
- gInitialPlayerAvatarState.transitionFlags = 2;
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_MACH_BIKE;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE))
- gInitialPlayerAvatarState.transitionFlags = 4;
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ACRO_BIKE;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
- gInitialPlayerAvatarState.transitionFlags = 8;
- else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_4))
- gInitialPlayerAvatarState.transitionFlags = 16;
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_SURFING;
+ else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER))
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_UNDERWATER;
else
- gInitialPlayerAvatarState.transitionFlags = 1;
+ gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT;
}
static struct InitialPlayerAvatarState *GetInitialPlayerAvatarState(void)
@@ -940,44 +944,44 @@ static struct InitialPlayerAvatarState *GetInitialPlayerAvatarState(void)
static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 metatileBehavior, u8 mapType)
{
if (mapType != MAP_TYPE_INDOOR && FlagGet(FLAG_SYS_CRUISE_MODE))
- return 1;
+ return PLAYER_AVATAR_FLAG_ON_FOOT;
else if (mapType == MAP_TYPE_UNDERWATER)
- return 16;
+ return PLAYER_AVATAR_FLAG_UNDERWATER;
else if (MetatileBehavior_IsSurfableWaterOrUnderwater(metatileBehavior) == TRUE)
- return 8;
+ return PLAYER_AVATAR_FLAG_SURFING;
else if (Overworld_IsBikingAllowed() != TRUE)
- return 1;
- else if (playerStruct->transitionFlags == 2)
- return 2;
- else if (playerStruct->transitionFlags != 4)
- return 1;
+ return PLAYER_AVATAR_FLAG_ON_FOOT;
+ else if (playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_MACH_BIKE)
+ return PLAYER_AVATAR_FLAG_MACH_BIKE;
+ else if (playerStruct->transitionFlags != PLAYER_AVATAR_FLAG_ACRO_BIKE)
+ return PLAYER_AVATAR_FLAG_ON_FOOT;
else
- return 4;
+ 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 4;
+ return DIR_EAST;
else if (MetatileBehavior_IsDeepSouthWarp(metatileBehavior) == TRUE)
- return 2;
+ return DIR_NORTH;
else if (MetatileBehavior_IsNonAnimDoor(metatileBehavior) == TRUE || MetatileBehavior_IsDoor(metatileBehavior) == TRUE)
- return 1;
+ return DIR_SOUTH;
else if (MetatileBehavior_IsSouthArrowWarp(metatileBehavior) == TRUE)
- return 2;
+ return DIR_NORTH;
else if (MetatileBehavior_IsNorthArrowWarp(metatileBehavior) == TRUE)
- return 1;
+ return DIR_SOUTH;
else if (MetatileBehavior_IsWestArrowWarp(metatileBehavior) == TRUE)
- return 4;
+ return DIR_EAST;
else if (MetatileBehavior_IsEastArrowWarp(metatileBehavior) == TRUE)
- return 3;
- else if ((playerStruct->transitionFlags == 16 && transitionFlags == 8)
- || (playerStruct->transitionFlags == 8 && transitionFlags == 16))
+ return DIR_WEST;
+ else 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;
else if (MetatileBehavior_IsLadder(metatileBehavior) == TRUE)
return playerStruct->direction;
else
- return 1;
+ return DIR_SOUTH;
}
static u16 GetCenterScreenMetatileBehavior(void)
@@ -1357,7 +1361,7 @@ u8 Overworld_GetMapTypeOfSaveblockLocation(void)
return GetMapTypeByWarpData(&gSaveBlock1Ptr->location);
}
-u8 get_map_light_from_warp0(void)
+u8 GetLastUsedWarpMapType(void)
{
return GetMapTypeByWarpData(&gLastUsedWarp);
}
@@ -1458,7 +1462,7 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys)
FieldGetPlayerInput(&inputStruct, newKeys, heldKeys);
if (!ScriptContext2_IsEnabled())
{
- if (sub_809C014(&inputStruct) == 1)
+ if (ProcessPlayerFieldInput(&inputStruct) == 1)
{
ScriptContext2_Enable();
HideMapNamePopUpWindow();
@@ -1808,7 +1812,7 @@ static void InitCurrentFlashLevelScanlineEffect(void)
{
u8 flashLevel;
- if (sub_81A9E6C())
+ if (InBattlePyramid_())
{
door_upload_tiles();
ScanlineEffect_SetParams(sFlashEffectParams);
@@ -2166,9 +2170,9 @@ static void sub_8086988(u32 a1)
static void sub_80869DC(void)
{
- gUnknown_03005DEC = 0;
- gUnknown_03005DE8 = 0;
- sub_808D438();
+ gTotalCameraPixelOffsetX = 0;
+ gTotalCameraPixelOffsetY = 0;
+ ResetEventObjects();
TrySpawnEventObjects(0, 0);
mapheader_run_first_tag4_script_list_match();
}
@@ -2178,9 +2182,9 @@ static void mli4_mapscripts_and_other(void)
s16 x, y;
struct InitialPlayerAvatarState *player;
- gUnknown_03005DEC = 0;
- gUnknown_03005DE8 = 0;
- sub_808D438();
+ gTotalCameraPixelOffsetX = 0;
+ gTotalCameraPixelOffsetY = 0;
+ ResetEventObjects();
sav1_camera_get_focus_coords(&x, &y);
player = GetInitialPlayerAvatarState();
InitPlayerAvatar(x, y, player->direction, gSaveBlock2Ptr->playerGender);
@@ -2951,7 +2955,7 @@ static void sub_808780C(u8 linkPlayerId)
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
u8 eventObjId = linkPlayerEventObj->eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
- if (eventObj->spriteId != 64 )
+ if (eventObj->spriteId != MAX_SPRITES)
DestroySprite(&gSprites[eventObj->spriteId]);
linkPlayerEventObj->active = 0;
eventObj->active = 0;
@@ -3137,14 +3141,14 @@ static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion)
{
case VERSION_FIRE_RED:
case VERSION_LEAF_GREEN:
- eventObj->spriteId = AddPseudoEventObject(sub_808BD6C(eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
+ eventObj->spriteId = AddPseudoEventObject(GetFRLGAvatarGraphicsIdByGender(eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
break;
case VERSION_RUBY:
case VERSION_SAPPHIRE:
- eventObj->spriteId = AddPseudoEventObject(sub_808BD7C(eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
+ eventObj->spriteId = AddPseudoEventObject(GetRSAvatarGraphicsIdByGender(eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
break;
case VERSION_EMERALD:
- eventObj->spriteId = AddPseudoEventObject(GetRivalAvatarGraphicsIdByStateIdAndGender(0, eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
+ eventObj->spriteId = AddPseudoEventObject(GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
break;
}
diff --git a/src/party_menu.c b/src/party_menu.c
index 1f419f6bb..833950657 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "battle_controllers.h"
#include "battle_interface.h"
#include "bg.h"
#include "constants/battle.h"
@@ -84,7 +85,7 @@ extern struct Unk_203CEDC *gUnknown_0203CEDC;
extern u8 *gUnknown_0203CEE0;
extern struct Unk_203CEE4 *gUnknown_0203CEE4;
extern u8 gUnknown_0203CEE8;
-extern u8 gUnknown_0203CEF8[];
+extern u8 gSelectedOrderFromParty[];
// ABOVE TO BE PUT IN EWRAM
@@ -295,7 +296,7 @@ void sub_81B0038(u8 a, u8 b, u8 c, u8 d, u8 e, TaskFunc f, MainCallback g)
else if (gUnknown_0203CEC8.unk9 > 5 || GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES) == SPECIES_NONE)
gUnknown_0203CEC8.unk9 = 0; // wut why is this else if?
- gTextFlags.flag_2 = 0;
+ gTextFlags.autoScroll = 0;
CalculatePlayerPartyCount();
SetMainCallback2(c2_811EBD0);
}
@@ -672,7 +673,7 @@ void sub_81B0A9C(u8 slot)
{
u8 i;
struct Pokemon *currentPokemon = &gPlayerParty[slot];
- u8 *ptr = gUnknown_0203CEF8;
+ u8 *ptr = gSelectedOrderFromParty;
if (!sub_81B85AC(currentPokemon))
{
@@ -952,7 +953,7 @@ bool8 sub_81B118C(u8 slot)
if (gUnknown_0203CEC8.unk8_1 == 2 && (slot == 1 || slot == 4 || slot == 5))
return TRUE;
- if (slot < 3 && (gBattleTypeFlags & BATTLE_TYPE_ARENA) && gMain.inBattle && (gBattleStruct->field_2A0 >> sub_81B8F38(slot) & 1))
+ if (slot < 3 && (gBattleTypeFlags & BATTLE_TYPE_ARENA) && gMain.inBattle && (gBattleStruct->arenaLostPlayerMons >> sub_81B8F38(slot) & 1))
return TRUE;
return FALSE;
@@ -1194,7 +1195,7 @@ void sub_81B16D4(u8 taskId)
void sub_81B1708(u8 taskId)
{
- switch (Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
gUnknown_0203CEE8 = 0;
@@ -2169,7 +2170,7 @@ void sub_81B2248(u8 taskId)
void sub_81B227C(u8 taskId)
{
- switch (Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
gSpecialVar_0x8004 = 7;
diff --git a/src/player_pc.c b/src/player_pc.c
index bdbef1b43..59ba36350 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -185,7 +185,7 @@ const struct MenuAction gMailboxMailOptions[] =
static const struct WindowTemplate gUnknown_085DFF24[3] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 9,
@@ -194,7 +194,7 @@ static const struct WindowTemplate gUnknown_085DFF24[3] =
.baseBlock = 1
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 9,
@@ -203,7 +203,7 @@ static const struct WindowTemplate gUnknown_085DFF24[3] =
.baseBlock = 1
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 10,
@@ -243,7 +243,7 @@ static const struct ListMenuTemplate gUnknown_085DFF44 =
static const struct WindowTemplate gUnknown_085DFF5C[5] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 16,
.tilemapTop = 1,
.width = 13,
@@ -252,7 +252,7 @@ static const struct WindowTemplate gUnknown_085DFF5C[5] =
.baseBlock = 0x0001
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 13,
.width = 13,
@@ -261,7 +261,7 @@ static const struct WindowTemplate gUnknown_085DFF5C[5] =
.baseBlock = 0x00EB
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 8,
.width = 3,
@@ -270,7 +270,7 @@ static const struct WindowTemplate gUnknown_085DFF5C[5] =
.baseBlock = 0x0153
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 13,
@@ -279,7 +279,7 @@ static const struct WindowTemplate gUnknown_085DFF5C[5] =
.baseBlock = 0x0139
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 8,
.tilemapTop = 9,
.width = 6,
@@ -291,7 +291,7 @@ static const struct WindowTemplate gUnknown_085DFF5C[5] =
static const struct WindowTemplate gUnknown_085DFF84 =
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 9,
.tilemapTop = 7,
.width = 5,
@@ -332,7 +332,7 @@ static void InitPlayerPCMenu(u8 taskId)
struct WindowTemplate windowTemplate;
data = gTasks[taskId].data;
- if(gPcItemMenuOptionsNum == 3)
+ if (gPcItemMenuOptionsNum == 3)
windowTemplate = gUnknown_085DFF24[0];
else
windowTemplate = gUnknown_085DFF24[1];
@@ -351,10 +351,10 @@ static void PlayerPCProcessMenuInput(u8 taskId)
s8 inputOptionId;
data = gTasks[taskId].data;
- if(gPcItemMenuOptionsNum > 3)
- inputOptionId = ProcessMenuInput();
+ if (gPcItemMenuOptionsNum > 3)
+ inputOptionId = Menu_ProcessInput();
else
- inputOptionId = Menu_ProcessInputNoWrapAround();
+ inputOptionId = Menu_ProcessInputNoWrap();
switch(inputOptionId)
{
@@ -402,7 +402,7 @@ static void PlayerPC_Mailbox(u8 taskId)
playerPCItemPageInfo.scrollIndicatorId = 0xFF;
Mailbox_UpdateMailList();
ItemStorage_SetItemAndMailCount(taskId);
- if(sub_81D1C44(playerPCItemPageInfo.count) == TRUE)
+ if (sub_81D1C44(playerPCItemPageInfo.count) == TRUE)
{
sub_8197434(0, 0);
Mailbox_DrawMailboxMenu(taskId);
@@ -463,7 +463,7 @@ static void ItemStorageMenuProcessInput(u8 taskId)
s8 inputOptionId;
r5 = GetMenuCursorPos();
- inputOptionId = ProcessMenuInput();
+ inputOptionId = Menu_ProcessInput();
r2 = GetMenuCursorPos();
switch(inputOptionId)
{
@@ -595,7 +595,7 @@ static u8 GetMailboxMailCount(void)
u8 i, j;
for(i = 0, j = 6; j < 16; j++)
- if(gSaveBlock1Ptr->mail[j].itemId != 0)
+ if (gSaveBlock1Ptr->mail[j].itemId != 0)
i++;
return i;
@@ -637,7 +637,7 @@ static void Mailbox_ProcessInput(u8 taskId)
u16 *data = gTasks[taskId].data;
s32 inputOptionId;
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
inputOptionId = ListMenuHandleInputGetItemId(data[5]);
ListMenuGetScrollAndRow(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
@@ -721,7 +721,7 @@ static void Mailbox_DoMailRead(u8 taskId)
static void Mailbox_FadeAndReadMail(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
sub_81D1EC0();
overworld_free_bg_tilemaps();
@@ -742,7 +742,7 @@ static void pal_fill_for_maplights_or_black(void)
sub_81973A4();
taskId = CreateTask(Mailbox_HandleReturnToProcessInput, 0);
- if(sub_81D1C44(playerPCItemPageInfo.count) == TRUE)
+ if (sub_81D1C44(playerPCItemPageInfo.count) == TRUE)
Mailbox_DrawMailboxMenu(taskId);
else
DestroyTask(taskId);
@@ -751,7 +751,7 @@ static void pal_fill_for_maplights_or_black(void)
static void Mailbox_HandleReturnToProcessInput(u8 taskId)
{
- if(IsWeatherNotFadingIn() == TRUE)
+ if (IsWeatherNotFadingIn() == TRUE)
gTasks[taskId].func = Mailbox_ProcessInput;
}
@@ -762,13 +762,13 @@ static void Mailbox_MoveToBag(u8 taskId)
static void Mailbox_DrawYesNoBeforeMove(u8 taskId)
{
- sub_8197930();
+ DisplayYesNoMenu();
gTasks[taskId].func = Mailbox_MoveToBagYesNoPrompt;
}
static void Mailbox_MoveToBagYesNoPrompt(u8 taskId)
{
- switch(Menu_ProcessInputNoWrap_())
+ switch(Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
Mailbox_DoMailMoveToBag(taskId);
@@ -787,7 +787,7 @@ static void Mailbox_MoveToBagYesNoPrompt(u8 taskId)
static void Mailbox_DoMailMoveToBag(u8 taskId)
{
struct MailStruct *mailStruct = &(gSaveBlock1Ptr->mail[playerPCItemPageInfo.itemsAbove + 6 + playerPCItemPageInfo.cursorPos]);
- if(!AddBagItem(mailStruct->itemId, 1))
+ if (!AddBagItem(mailStruct->itemId, 1))
{
DisplayItemMessageOnField(taskId, gText_BagIsFull, Mailbox_Cancel);
}
@@ -797,7 +797,7 @@ static void Mailbox_DoMailMoveToBag(u8 taskId)
ClearMailStruct(mailStruct);
Mailbox_UpdateMailList();
playerPCItemPageInfo.count--;
- if(playerPCItemPageInfo.count < (playerPCItemPageInfo.pageItems + playerPCItemPageInfo.itemsAbove) && playerPCItemPageInfo.itemsAbove != 0)
+ if (playerPCItemPageInfo.count < (playerPCItemPageInfo.pageItems + playerPCItemPageInfo.itemsAbove) && playerPCItemPageInfo.itemsAbove != 0)
playerPCItemPageInfo.itemsAbove--;
ItemStorage_SetItemAndMailCount(taskId);
}
@@ -810,7 +810,7 @@ static void Mailbox_CancelMoveToBag(u8 taskId)
static void Mailbox_Give(u8 taskId)
{
- if(CalculatePlayerPartyCount() == 0)
+ if (CalculatePlayerPartyCount() == 0)
Mailbox_NoPokemonForMail(taskId);
else
{
@@ -821,7 +821,7 @@ static void Mailbox_Give(u8 taskId)
static void Mailbox_DoGiveMailPokeMenu(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
sub_81D1EC0();
overworld_free_bg_tilemaps();
@@ -844,12 +844,12 @@ static void Mailbox_UpdateMailListAfterDeposit(void)
prevCount = playerPCItemPageInfo.count;
playerPCItemPageInfo.count = GetMailboxMailCount();
Mailbox_UpdateMailList();
- if(prevCount != playerPCItemPageInfo.count && (playerPCItemPageInfo.count < (playerPCItemPageInfo.pageItems + playerPCItemPageInfo.itemsAbove))
+ if (prevCount != playerPCItemPageInfo.count && (playerPCItemPageInfo.count < (playerPCItemPageInfo.pageItems + playerPCItemPageInfo.itemsAbove))
&& playerPCItemPageInfo.itemsAbove != 0)
playerPCItemPageInfo.itemsAbove--;
ItemStorage_SetItemAndMailCount(taskId);
sub_81973A4();
- if(sub_81D1C44(playerPCItemPageInfo.count) == TRUE)
+ if (sub_81D1C44(playerPCItemPageInfo.count) == TRUE)
Mailbox_DrawMailboxMenu(taskId);
else
DestroyTask(taskId);
@@ -890,7 +890,7 @@ static void sub_816BC58(void)
static u8 sub_816BC7C(u8 a)
{
u8 *windowIdLoc = &(gUnknown_0203BCC4->windowIds[a]);
- if(*windowIdLoc == 0xFF)
+ if (*windowIdLoc == 0xFF)
{
*windowIdLoc = AddWindow(&gUnknown_085DFF5C[a]);
SetWindowBorderStyle(*windowIdLoc, FALSE, 0x214, 0xE);
@@ -902,7 +902,7 @@ static u8 sub_816BC7C(u8 a)
static void sub_816BCC4(u8 a)
{
u8 *windowIdLoc = &(gUnknown_0203BCC4->windowIds[a]);
- if(*windowIdLoc != 0xFF)
+ if (*windowIdLoc != 0xFF)
{
sub_8198070(*windowIdLoc, FALSE);
ClearWindowTilemap(*windowIdLoc);
@@ -939,12 +939,12 @@ void CopyItemName_PlayerPC(u8 *string, u16 itemId)
static void ItemStorage_MoveCursor(s32 id, bool8 b, struct ListMenu *thisMenu)
{
- if(b != TRUE)
+ if (b != TRUE)
PlaySE(SE_SELECT);
- if(gUnknown_0203BCC4->unk666 == 0xFF)
+ if (gUnknown_0203BCC4->unk666 == 0xFF)
{
sub_816C0C8();
- if(id != -2)
+ if (id != -2)
sub_816C060(gSaveBlock1Ptr->pcItems[id].itemId);
else
sub_816C060(ITEMPC_GO_BACK_TO_PREV);
@@ -954,11 +954,11 @@ static void ItemStorage_MoveCursor(s32 id, bool8 b, struct ListMenu *thisMenu)
static void fish4_goto_x5_or_x6(u8 windowId, s32 id, u8 yOffset)
{
- if(id != -2)
+ if (id != -2)
{
- if(gUnknown_0203BCC4->unk666 != 0xFF)
+ if (gUnknown_0203BCC4->unk666 != 0xFF)
{
- if(gUnknown_0203BCC4->unk666 == (u8)id)
+ if (gUnknown_0203BCC4->unk666 == (u8)id)
sub_816BFE0(yOffset, 0, 0xFF);
else
sub_816BFE0(yOffset, 0xFF, 0xFF);
@@ -974,7 +974,7 @@ static void sub_816BEF0(s32 id)
const u8* description;
u8 windowId = gUnknown_0203BCC4->windowIds[1];
- if(id != -2)
+ if (id != -2)
description = (u8 *)ItemId_GetDescription(gSaveBlock1Ptr->pcItems[id].itemId);
else
description = ItemStorage_GetItemPcResponse(ITEMPC_GO_BACK_TO_PREV);
@@ -984,13 +984,13 @@ static void sub_816BEF0(s32 id)
static void ItemStorage_StartScrollIndicator(void)
{
- if(playerPCItemPageInfo.scrollIndicatorId == 0xFF)
+ if (playerPCItemPageInfo.scrollIndicatorId == 0xFF)
playerPCItemPageInfo.scrollIndicatorId = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xB0, 0xC, 0x94, playerPCItemPageInfo.count - playerPCItemPageInfo.pageItems, 0x13F8, 0x13F8, &(playerPCItemPageInfo.itemsAbove));
}
static void ItemStorage_RemoveScrollIndicator(void)
{
- if(playerPCItemPageInfo.scrollIndicatorId != 0xFF)
+ if (playerPCItemPageInfo.scrollIndicatorId != 0xFF)
{
RemoveScrollIndicatorArrowPair(playerPCItemPageInfo.scrollIndicatorId);
playerPCItemPageInfo.scrollIndicatorId = 0xFF;
@@ -1005,7 +1005,7 @@ static void sub_816BFB8(u8 a, u8 b, u8 speed)
static void sub_816BFE0(u8 y, u8 b, u8 speed)
{
u8 windowId = gUnknown_0203BCC4->windowIds[0];
- if(b == 0xFF)
+ if (b == 0xFF)
FillWindowPixelRect(windowId, 17, 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
else
AddTextPrinterParameterized4(windowId, 1, 0, y, 0, 0, gUnknown_085DFF8C, speed, gText_SelectorArrow2);
@@ -1016,12 +1016,12 @@ static void sub_816C060(u16 itemId)
u8 spriteId;
u8* spriteIdLoc = &(gUnknown_0203BCC4->spriteId);
- if(*spriteIdLoc == 0xFF)
+ if (*spriteIdLoc == 0xFF)
{
FreeSpriteTilesByTag(0x13F6);
FreeSpritePaletteByTag(0x13F6);
spriteId = AddItemIconSprite(0x13F6, 0x13F6, itemId);
- if(spriteId != 64)
+ if (spriteId != MAX_SPRITES)
{
*spriteIdLoc = spriteId;
gSprites[spriteId].oam.priority = 0;
@@ -1034,7 +1034,7 @@ static void sub_816C060(u16 itemId)
static void sub_816C0C8(void)
{
u8* spriteIdLoc = &(gUnknown_0203BCC4->spriteId);
- if(*spriteIdLoc != 0xFF)
+ if (*spriteIdLoc != 0xFF)
{
FreeSpriteTilesByTag(0x13F6);
FreeSpritePaletteByTag(0x13F6);
@@ -1067,7 +1067,7 @@ static void ItemStorage_ProcessWithdrawTossInput(u8 taskId)
sub_816BC7C(i);
toss = data[3];
text = gText_TossItem;
- if(!toss)
+ if (!toss)
text = gText_WithdrawItem;
x = GetStringCenterAlignXOffset(1, text, 104);
AddTextPrinterParameterized(gUnknown_0203BCC4->windowIds[3], 1, text, x, 1, 0, NULL);
@@ -1135,10 +1135,10 @@ static void ItemStorage_ProcessInput(u8 taskId)
s32 id;
data = gTasks[taskId].data;
- if(gMain.newKeys & SELECT_BUTTON)
+ if (gMain.newKeys & SELECT_BUTTON)
{
ListMenuGetScrollAndRow(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
- if((playerPCItemPageInfo.itemsAbove + playerPCItemPageInfo.cursorPos) != (playerPCItemPageInfo.count - 1))
+ if ((playerPCItemPageInfo.itemsAbove + playerPCItemPageInfo.cursorPos) != (playerPCItemPageInfo.count - 1))
{
PlaySE(SE_SELECT);
ItemStorage_ItemSwapChoosePrompt(taskId);
@@ -1169,10 +1169,10 @@ static void ItemStorage_GoBackToPlayerPCMenu_InitStorage(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- if(!IsDma3ManagerBusyWithBgCopy())
+ if (!IsDma3ManagerBusyWithBgCopy())
{
NewMenuHelpers_DrawDialogueFrame(0, 0);
- if(!data[3])
+ if (!data[3])
InitItemStorageMenu(taskId, ITEMPC_MENU_WITHDRAW);
else
InitItemStorageMenu(taskId, ITEMPC_MENU_TOSS);
@@ -1213,7 +1213,7 @@ static void sub_816C4FC(u8 taskId)
s32 id;
data = gTasks[taskId].data;
- if(gMain.newKeys & SELECT_BUTTON)
+ if (gMain.newKeys & SELECT_BUTTON)
{
ListMenuGetScrollAndRow(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
ItemStorage_DoItemSwap(taskId, FALSE);
@@ -1228,7 +1228,7 @@ static void sub_816C4FC(u8 taskId)
case -1:
break;
case -2:
- if(gMain.newKeys & A_BUTTON)
+ if (gMain.newKeys & A_BUTTON)
{
ItemStorage_DoItemSwap(taskId, FALSE);
}
@@ -1251,12 +1251,12 @@ static void ItemStorage_DoItemSwap(u8 taskId, bool8 a)
b = (playerPCItemPageInfo.itemsAbove + playerPCItemPageInfo.cursorPos);
PlaySE(SE_SELECT);
DestroyListMenuTask(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
- if(!a)
+ if (!a)
{
c = gUnknown_0203BCC4->unk666;
- if(c != b)
+ if (c != b)
{
- if(c != b - 1)
+ if (c != b - 1)
{
MoveItemSlotInList(gSaveBlock1Ptr->pcItems, c, b);
ItemStorage_RefreshListMenu();
@@ -1296,9 +1296,9 @@ static void ItemStorage_DoItemAction(u8 taskId)
b = (playerPCItemPageInfo.cursorPos + playerPCItemPageInfo.itemsAbove);
ItemStorage_RemoveScrollIndicator();
data[2] = 1;
- if(!data[3])
+ if (!data[3])
{
- if(gSaveBlock1Ptr->pcItems[b].quantity == 1)
+ if (gSaveBlock1Ptr->pcItems[b].quantity == 1)
{
ItemStorage_DoItemWithdraw(taskId);
return;
@@ -1308,7 +1308,7 @@ static void ItemStorage_DoItemAction(u8 taskId)
}
else
{
- if(gSaveBlock1Ptr->pcItems[b].quantity == 1)
+ if (gSaveBlock1Ptr->pcItems[b].quantity == 1)
{
ItemStorage_DoItemToss(taskId);
return;
@@ -1327,20 +1327,20 @@ static void ItemStorage_HandleQuantityRolling(u8 taskId)
data = gTasks[taskId].data;
b = (playerPCItemPageInfo.cursorPos + playerPCItemPageInfo.itemsAbove);
- if(AdjustQuantityAccordingToDPadInput(&(data[2]), gSaveBlock1Ptr->pcItems[b].quantity) == TRUE)
+ if (AdjustQuantityAccordingToDPadInput(&(data[2]), gSaveBlock1Ptr->pcItems[b].quantity) == TRUE)
sub_816C6BC(sub_816BC7C(4), data[2], STR_CONV_MODE_LEADING_ZEROS, 8, 1, 3);
else
{
- if(gMain.newKeys & A_BUTTON)
+ if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
sub_816BCC4(4);
- if(!data[3])
+ if (!data[3])
ItemStorage_DoItemWithdraw(taskId);
else
ItemStorage_DoItemToss(taskId);
}
- else if(gMain.newKeys & B_BUTTON)
+ else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
sub_816BCC4(4);
@@ -1357,7 +1357,7 @@ static void ItemStorage_DoItemWithdraw(u8 taskId)
data = gTasks[taskId].data;
b = (playerPCItemPageInfo.cursorPos + playerPCItemPageInfo.itemsAbove);
- if(AddBagItem(gSaveBlock1Ptr->pcItems[b].itemId, data[2]) == TRUE)
+ if (AddBagItem(gSaveBlock1Ptr->pcItems[b].itemId, data[2]) == TRUE)
{
CopyItemName(gSaveBlock1Ptr->pcItems[b].itemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[2], STR_CONV_MODE_LEFT_ALIGN, 3);
@@ -1379,7 +1379,7 @@ static void ItemStorage_DoItemToss(u8 taskId)
data = gTasks[taskId].data;
b = (playerPCItemPageInfo.cursorPos + playerPCItemPageInfo.itemsAbove);
- if(!ItemId_GetImportance(gSaveBlock1Ptr->pcItems[b].itemId))
+ if (!ItemId_GetImportance(gSaveBlock1Ptr->pcItems[b].itemId))
{
CopyItemName(gSaveBlock1Ptr->pcItems[b].itemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[2], STR_CONV_MODE_LEFT_ALIGN, 3);
@@ -1411,7 +1411,7 @@ static void ItemStorage_HandleRemoveItem(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- if(gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
RemovePCItem((playerPCItemPageInfo.cursorPos + playerPCItemPageInfo.itemsAbove), data[2]);
DestroyListMenuTask(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
@@ -1428,7 +1428,7 @@ static void ItemStorage_WaitPressHandleResumeProcessInput(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- if(gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
ItemStorage_PrintItemPcResponse(ItemStorage_GetItemPcResponse(gSaveBlock1Ptr->pcItems[(playerPCItemPageInfo.itemsAbove + playerPCItemPageInfo.cursorPos)].itemId));
ItemStorage_StartScrollIndicatorAndProcessInput(taskId);
diff --git a/src/poison.c b/src/poison.c
new file mode 100644
index 000000000..efa89ec13
--- /dev/null
+++ b/src/poison.c
@@ -0,0 +1,323 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "trig.h"
+#include "constants/rgb.h"
+
+extern void sub_80A77C8(struct Sprite *);
+
+void sub_810DBAC(struct Sprite *);
+void sub_810DC2C(struct Sprite *);
+void sub_810DCD0(struct Sprite *);
+void sub_810DD50(struct Sprite *);
+void AnimBubbleEffect(struct Sprite *);
+static void sub_810DC10(struct Sprite *);
+static void sub_810DCB4(struct Sprite *);
+static void sub_810DD24(struct Sprite *);
+static void AnimBubbleEffectStep(struct Sprite *);
+
+extern const union AnimCmd *const gUnknown_08595200[];
+
+const union AnimCmd gUnknown_0859611C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(24, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08596130[] =
+{
+ gUnknown_0859611C,
+};
+
+const struct SpriteTemplate gUnknown_08596134 =
+{
+ .tileTag = ANIM_TAG_TOXIC_BUBBLE,
+ .paletteTag = ANIM_TAG_TOXIC_BUBBLE,
+ .oam = &gUnknown_08524954,
+ .anims = gUnknown_08596130,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A77C8,
+};
+
+const union AnimCmd gUnknown_0859614C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08596154[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859615C[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08596164[] =
+{
+ gUnknown_0859614C,
+};
+
+const union AnimCmd *const gUnknown_08596168[] =
+{
+ gUnknown_08596154,
+};
+
+const union AnimCmd *const gUnknown_0859616C[] =
+{
+ gUnknown_0859615C,
+};
+
+const union AffineAnimCmd gUnknown_08596170[] =
+{
+ AFFINEANIMCMD_FRAME(0x160, 0x160, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10),
+ AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gUnknown_08596190[] =
+{
+ AFFINEANIMCMD_FRAME(0xEC, 0xEC, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085961A0[] =
+{
+ gUnknown_08596170,
+};
+
+const union AffineAnimCmd *const gUnknown_085961A4[] =
+{
+ gUnknown_08596190,
+};
+
+const struct SpriteTemplate gUnknown_085961A8 =
+{
+ .tileTag = ANIM_TAG_POISON_BUBBLE,
+ .paletteTag = ANIM_TAG_POISON_BUBBLE,
+ .oam = &gUnknown_085249CC,
+ .anims = gUnknown_08596164,
+ .images = NULL,
+ .affineAnims = gUnknown_085961A0,
+ .callback = sub_810DBAC,
+};
+
+const struct SpriteTemplate gUnknown_085961C0 =
+{
+ .tileTag = ANIM_TAG_POISON_BUBBLE,
+ .paletteTag = ANIM_TAG_POISON_BUBBLE,
+ .oam = &gUnknown_085249CC,
+ .anims = gUnknown_08596164,
+ .images = NULL,
+ .affineAnims = gUnknown_085961A0,
+ .callback = sub_810DC2C,
+};
+
+const struct SpriteTemplate gUnknown_085961D8 =
+{
+ .tileTag = ANIM_TAG_POISON_BUBBLE,
+ .paletteTag = ANIM_TAG_POISON_BUBBLE,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_0859616C,
+ .images = NULL,
+ .affineAnims = gUnknown_085961A4,
+ .callback = sub_810DCD0,
+};
+
+const union AffineAnimCmd gUnknown_085961F0[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFF0, 0x10, 0, 6),
+ AFFINEANIMCMD_FRAME(0x10, 0xFFF0, 0, 6),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08596208[] =
+{
+ gUnknown_085961F0,
+};
+
+const struct SpriteTemplate gUnknown_0859620C =
+{
+ .tileTag = ANIM_TAG_POISON_BUBBLE,
+ .paletteTag = ANIM_TAG_POISON_BUBBLE,
+ .oam = &gUnknown_085249CC,
+ .anims = gUnknown_08596168,
+ .images = NULL,
+ .affineAnims = gUnknown_08596208,
+ .callback = sub_810DD50,
+};
+
+const union AffineAnimCmd gUnknown_08596224[] =
+{
+ AFFINEANIMCMD_FRAME(0x9C, 0x9C, 0, 0),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 20),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_0859623C[] =
+{
+ gUnknown_08596224,
+};
+
+const struct SpriteTemplate gPoisonBubbleSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_POISON_BUBBLE,
+ .paletteTag = ANIM_TAG_POISON_BUBBLE,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_08596164,
+ .images = NULL,
+ .affineAnims = gUnknown_0859623C,
+ .callback = AnimBubbleEffect,
+};
+
+const struct SpriteTemplate gWaterBubbleSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gUnknown_08524A8C,
+ .anims = gUnknown_08595200,
+ .images = NULL,
+ .affineAnims = gUnknown_0859623C,
+ .callback = AnimBubbleEffect,
+};
+
+void sub_810DBAC(struct Sprite *sprite)
+{
+ if (!gBattleAnimArgs[3])
+ StartSpriteAnim(sprite, 2);
+
+ InitAnimSpritePos(sprite, 1);
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[5] = -30;
+
+ InitAnimArcTranslation(sprite);
+
+ sprite->callback = sub_810DC10;
+}
+
+static void sub_810DC10(struct Sprite *sprite)
+{
+ if (TranslateAnimArc(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810DC2C(struct Sprite *sprite)
+{
+ s16 l1, l2;
+ if (!gBattleAnimArgs[3])
+ StartSpriteAnim(sprite, 2);
+
+ InitAnimSpritePos(sprite, 1);
+ SetAverageBattlerPositions(gBattleAnimTarget, 1, &l1, &l2);
+
+ if (GetBattlerSide(gBattleAnimAttacker))
+ gBattleAnimArgs[4] = -gBattleAnimArgs[4];
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[2] = l1 + gBattleAnimArgs[4];
+ sprite->data[4] = l2 + gBattleAnimArgs[5];
+ sprite->data[5] = -30;
+
+ InitAnimArcTranslation(sprite);
+
+ sprite->callback = sub_810DCB4;
+}
+
+static void sub_810DCB4(struct Sprite *sprite)
+{
+ if (TranslateAnimArc(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810DCD0(struct Sprite *sprite)
+{
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1];
+
+ InitSpriteDataForLinearTranslation(sprite);
+
+ sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2];
+ sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2];
+
+ sprite->callback = sub_810DD24;
+}
+
+static void sub_810DD24(struct Sprite *sprite)
+{
+ sub_80A656C(sprite);
+
+ sprite->data[1] -= sprite->data[5];
+ sprite->data[2] -= sprite->data[6];
+
+ if (!sprite->data[0])
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810DD50(struct Sprite *sprite)
+{
+ SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
+
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->pos1.y + sprite->data[0];
+
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+// Animates a bubble by rising upward, swaying side to side, and
+// enlarging the sprite. This is used as an after-effect by poison-type
+// moves, along with MOVE_BUBBLE, and MOVE_BUBBLEBEAM.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: 0 = single-target, 1 = multi-target
+void AnimBubbleEffect(struct Sprite *sprite)
+{
+ if (!gBattleAnimArgs[2])
+ {
+ sub_80A6980(sprite, TRUE);
+ }
+ else
+ {
+ SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
+
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+
+ sprite->callback = AnimBubbleEffectStep;
+}
+
+static void AnimBubbleEffectStep(struct Sprite *sprite)
+{
+ sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[0], 4);
+ sprite->data[1] += 0x30;
+ sprite->pos2.y = -(sprite->data[1] >> 8);
+
+ if (sprite->affineAnimEnded)
+ DestroyAnimSprite(sprite);
+}
diff --git a/src/pokeball.c b/src/pokeball.c
index bb02a02ba..ad839e6af 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -1,19 +1,19 @@
#include "global.h"
-#include "pokemon.h"
-#include "sprite.h"
-#include "pokeball.h"
#include "battle.h"
#include "battle_anim.h"
-#include "task.h"
-#include "sound.h"
-#include "constants/songs.h"
-#include "trig.h"
+#include "decompress.h"
+#include "graphics.h"
#include "main.h"
#include "m4a.h"
-#include "decompress.h"
-#include "constants/species.h"
+#include "pokeball.h"
+#include "pokemon.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
#include "util.h"
-#include "graphics.h"
+#include "constants/songs.h"
+#include "constants/species.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
@@ -402,7 +402,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
gSprites[ballSpriteId].data[2] = GetBattlerSpriteCoord(gBattlerTarget, BATTLER_COORD_X);
gSprites[ballSpriteId].data[4] = GetBattlerSpriteCoord(gBattlerTarget, BATTLER_COORD_Y) - 16;
gSprites[ballSpriteId].data[5] = -40;
- sub_80A68D4(&gSprites[ballSpriteId]);
+ InitAnimArcTranslation(&gSprites[ballSpriteId]);
gSprites[ballSpriteId].oam.affineParam = taskId;
gTasks[taskId].tOpponentBattler = gBattlerTarget;
gTasks[taskId].func = TaskDummy;
@@ -898,7 +898,7 @@ static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite)
sprite->data[4] = GetBattlerSpriteCoord(sprite->sBattler, 3) + 24;
sprite->data[5] = -30;
sprite->oam.affineParam = sprite->sBattler;
- sub_80A68D4(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = SpriteCB_PlayerMonSendOut_2;
}
diff --git a/src/pokeblock.c b/src/pokeblock.c
index d0a867b3a..01343c6eb 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -1,35 +1,35 @@
#include "global.h"
-#include "pokeblock.h"
-#include "bg.h"
-#include "strings.h"
-#include "text.h"
-#include "text_window.h"
-#include "menu.h"
-#include "task.h"
-#include "menu_helpers.h"
-#include "pokemon.h"
-#include "graphics.h"
-#include "malloc.h"
-#include "main.h"
#include "battle.h"
#include "battle_controllers.h"
-#include "palette.h"
-#include "scanline_effect.h"
-#include "list_menu.h"
-#include "gpu_regs.h"
+#include "battle_message.h"
+#include "berry.h"
+#include "bg.h"
#include "decompress.h"
+#include "event_data.h"
+#include "gpu_regs.h"
+#include "graphics.h"
#include "international_string_util.h"
#include "item.h"
-#include "constants/items.h"
-#include "string_util.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "berry.h"
-#include "event_data.h"
-#include "battle_message.h"
-#include "safari_zone.h"
#include "lilycove_lady.h"
+#include "list_menu.h"
+#include "main.h"
+#include "malloc.h"
+#include "menu.h"
+#include "menu_helpers.h"
#include "overworld.h"
+#include "palette.h"
+#include "pokeblock.h"
+#include "pokemon.h"
+#include "safari_zone.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "text.h"
+#include "text_window.h"
+#include "constants/items.h"
+#include "constants/songs.h"
#define POKEBLOCK_MAX_FEEL 99
#define FIELD_E75_COUNT 7
@@ -295,7 +295,7 @@ static const struct Pokeblock sFavoritePokeblocksTable[] =
static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 1,
.width = 9,
@@ -304,7 +304,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.baseBlock = 0x1E
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 15,
.tilemapTop = 1,
.width = 14,
@@ -313,7 +313,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.baseBlock = 0x30
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 13,
.width = 5,
@@ -322,7 +322,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.baseBlock = 0x12C
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 5,
@@ -331,7 +331,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.baseBlock = 0x136
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 2,
.tilemapTop = 17,
.width = 5,
@@ -340,7 +340,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.baseBlock = 0x140
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 8,
.tilemapTop = 13,
.width = 5,
@@ -349,7 +349,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.baseBlock = 0x14A
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 8,
.tilemapTop = 15,
.width = 5,
@@ -358,7 +358,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.baseBlock = 0x154
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 11,
.tilemapTop = 17,
.width = 2,
@@ -367,7 +367,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.baseBlock = 0x15E
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 7,
.tilemapTop = 5,
.width = 6,
@@ -376,7 +376,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.baseBlock = 0x162
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 7,
.tilemapTop = 7,
.width = 6,
@@ -385,7 +385,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.baseBlock = 0x186
},
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 27,
@@ -398,7 +398,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
static const struct WindowTemplate sTossPkblockWindowTemplate =
{
- .priority = 1,
+ .bg = 1,
.tilemapLeft = 21,
.tilemapTop = 9,
.width = 5,
@@ -1139,7 +1139,7 @@ static void Task_HandlePokeblockOptionsInput(u8 taskId)
if (sub_81221EC() == TRUE)
return;
- itemId = Menu_ProcessInputNoWrapAround();
+ itemId = Menu_ProcessInputNoWrap();
if (itemId == MENU_NOTHING_CHOSEN)
{
return;
@@ -1179,7 +1179,7 @@ static void PokeblockAction_Toss(u8 taskId)
sub_8198070(data[1], FALSE);
StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1Ptr->pokeblocks[gSpecialVar_ItemId].color]);
StringExpandPlaceholders(gStringVar4, gText_ThrowAwayVar1);
- DisplayMessageAndContinueTask(taskId, 10, 10, 13, 1, GetPlayerTextSpeed(), gStringVar4, CreateTossPokeblockYesNoMenu);
+ DisplayMessageAndContinueTask(taskId, 10, 10, 13, 1, GetPlayerTextSpeedDelay(), gStringVar4, CreateTossPokeblockYesNoMenu);
}
static void CreateTossPokeblockYesNoMenu(u8 taskId)
@@ -1190,7 +1190,7 @@ static void CreateTossPokeblockYesNoMenu(u8 taskId)
static void TossPokeblockChoice_Yes(u8 taskId)
{
StringExpandPlaceholders(gStringVar4, gText_Var1ThrownAway);
- DisplayMessageAndContinueTask(taskId, 10, 10, 13, 1, GetPlayerTextSpeed(), gStringVar4, HandleErasePokeblock);
+ DisplayMessageAndContinueTask(taskId, 10, 10, 13, 1, GetPlayerTextSpeedDelay(), gStringVar4, HandleErasePokeblock);
}
static void HandleErasePokeblock(u8 taskId)
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index 10f7d34d8..0a8f1b8c2 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -1,28 +1,28 @@
#include "global.h"
-#include "pokeblock.h"
-#include "sprite.h"
-#include "task.h"
-#include "palette.h"
-#include "menu.h"
-#include "malloc.h"
-#include "pokemon.h"
-#include "util.h"
-#include "main.h"
-#include "menu_helpers.h"
+#include "battle.h" // to get rid of once gMonSpritesGfxPtr is put elsewhere
#include "bg.h"
-#include "gpu_regs.h"
#include "data2.h"
#include "decompress.h"
#include "event_data.h"
-#include "strings.h"
-#include "string_util.h"
-#include "party_menu.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "main.h"
+#include "malloc.h"
+#include "menu.h"
+#include "menu_helpers.h"
#include "m4a.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "pokeblock.h"
+#include "pokemon.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "strings.h"
#include "sound.h"
-#include "trig.h"
-#include "graphics.h"
+#include "task.h"
#include "text_window.h"
-#include "battle.h" // to get rid of once gMonSpritesGfxPtr is put elsewhere
+#include "trig.h"
+#include "util.h"
struct PokeblockFeedStruct
{
@@ -52,9 +52,6 @@ struct PokeblockFeedStruct
extern u16 gSpecialVar_ItemId;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern const u8 gBattleTerrainPalette_Frontier[];
-extern const u8 gBattleTerrainTiles_Building[];
-extern const u8 gUnknown_08D9BA44[];
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
extern const u16 gUnknown_0860F074[];
@@ -387,7 +384,7 @@ static const struct WindowTemplate sWindowTemplates[] =
DUMMY_WIN_TEMPLATE
};
-static const u8* const sPokeblocksPals[] =
+static const u32* const sPokeblocksPals[] =
{
gPokeblockRed_Pal,
gPokeblockBlue_Pal,
@@ -788,8 +785,8 @@ static void Task_HandleMonAtePokeblock(u8 taskId)
else
StringExpandPlaceholders(gStringVar4, gText_Var1DisdainfullyAteVar2);
- gTextFlags.flag_0 = 1;
- AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeed(), NULL, 2, 1, 3);
+ gTextFlags.canABSpeedUpPrint = 1;
+ AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeedDelay(), NULL, 2, 1, 3);
gTasks[taskId].func = Task_WaitForAtePokeblockText;
}
diff --git a/src/pokedex.c b/src/pokedex.c
index d27f0d89c..fa74b073a 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -1,66 +1,56 @@
#include "global.h"
-#include "gba/m4a_internal.h"
-#include "pokedex.h"
-#include "sprite.h"
-#include "graphics.h"
-#include "decompress.h"
+#include "battle_main.h"
#include "bg.h"
-#include "window.h"
+#include "data2.h"
+#include "decompress.h"
#include "event_data.h"
-#include "palette.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "international_string_util.h"
#include "main.h"
-#include "sound.h"
-#include "task.h"
-#include "trainer_pokemon_sprites.h"
-#include "scanline_effect.h"
#include "malloc.h"
-#include "gpu_regs.h"
-#include "constants/songs.h"
-#include "constants/species.h"
-#include "constants/rgb.h"
-#include "overworld.h"
#include "menu.h"
-#include "text_window.h"
-#include "data2.h"
-#include "string_util.h"
-#include "trig.h"
+#include "m4a.h"
+#include "overworld.h"
+#include "palette.h"
+#include "pokedex.h"
#include "pokedex_area_screen.h"
#include "pokedex_cry_screen.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
#include "strings.h"
-#include "m4a.h"
-#include "international_string_util.h"
+#include "task.h"
+#include "text_window.h"
+#include "trainer_pokemon_sprites.h"
+#include "trig.h"
+#include "window.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+#include "constants/species.h"
-static EWRAM_DATA struct PokedexView *gUnknown_02039B4C = NULL;
+extern u8 gDexCryScreenState;
+
+// EWRAM
+static EWRAM_DATA struct PokedexView *sPokedexView = NULL;
static EWRAM_DATA u16 gUnknown_02039B50 = 0;
static EWRAM_DATA u8 gUnknown_02039B52 = 0;
-static EWRAM_DATA struct PokedexListItem *gUnknown_02039B54 = NULL;
+static EWRAM_DATA struct PokedexListItem *sPokedexListItem = NULL;
+// IWRAM common
u8 gUnknown_030060B0;
-MainCallback gUnknown_030060B4;
-u8 gUnknown_030061EC;
-
-struct PokedexEntry
-{
- /*0x00*/ u8 categoryName[12];
- /*0x0C*/ u16 height; //in decimeters
- /*0x0E*/ u16 weight; //in hectograms
- /*0x10*/ const u8 *description;
- /*0x14*/ u16 unused;
- /*0x16*/ u16 pokemonScale;
- /*0x18*/ u16 pokemonOffset;
- /*0x1A*/ u16 trainerScale;
- /*0x1C*/ u16 trainerOffset;
-}; /*size = 0x20*/
+void (*gUnknown_030060B4)(void);
-struct UnknownStruct2
+struct PokedexOption
{
- const u8 *text1;
- const u8 *text2;
+ const u8 *description;
+ const u8 *title;
};
struct UnknownStruct1
{
- const struct UnknownStruct2 *unk0;
+ const struct PokedexOption *pokedexList;
u8 unk4;
u8 unk5;
u16 unk6;
@@ -85,35 +75,6 @@ struct UnknownStruct4
u8 unk9;
};
-//TO BE CONVERTED TO C
-
-extern const u8 gUnknown_0855D30C[];
-extern struct BgTemplate gUnknown_0856E630[];
-extern struct WindowTemplate gUnknown_0856E640[];
-extern const u16 gUnknown_0856E610[16];
-extern const struct PokedexEntry gPokedexEntries[];
-extern struct BgTemplate gUnknown_0856E668[];
-extern struct WindowTemplate gUnknown_0856E670[];
-extern const u8 *gMonFootprintTable[];
-extern u8 gUnknown_0856ED08[][4];
-extern struct BgTemplate gUnknown_0856EFF8[];
-extern struct WindowTemplate gUnknown_0856F008[];
-extern const u8 gUnknown_0856ED9C[][4];
-extern const u8 gUnknown_0856EDB8[][4];
-extern const u8 gUnknown_0856EDD4[][4];
-extern const u8 gUnknown_0856EDF0[][4];
-extern const struct UnknownStruct1 gUnknown_0856EFC8[];
-extern const struct UnknownStruct3 gUnknown_0856ED30[];
-extern const struct UnknownStruct4 gUnknown_0856ED48[];
-extern const struct UnknownStruct2 gUnknown_0856EE0C[];
-extern const struct UnknownStruct2 gUnknown_0856EE5C[];
-extern const struct UnknownStruct2 gUnknown_0856EEB4[];
-extern const struct UnknownStruct2 gUnknown_0856EF14[];
-extern const struct UnknownStruct2 gUnknown_0856EE24[];
-extern const u8 gUnknown_0856EFAC[];
-extern const u8 gUnknown_0856EFAE[];
-extern const u8 gUnknown_0856EFB4[];
-
#define HOENN_DEX_COUNT 202
#define NATIONAL_DEX_COUNT 386
@@ -128,7 +89,7 @@ struct PokedexListItem
struct PokedexView
{
- struct PokedexListItem unk0[NATIONAL_DEX_COUNT];
+ struct PokedexListItem pokedexList[NATIONAL_DEX_COUNT];
u16 unk608;
u8 unk60A_1:1;
u8 unk60A_2:1;
@@ -140,14 +101,14 @@ struct PokedexView
u16 unk614;
u16 dexOrder;
u16 unk618;
- u16 unk61A;
- u16 unk61C;
+ u16 seenCount;
+ u16 ownCount;
u16 unk61E[4];
u16 selectedMonSpriteId;
u16 unk628;
u16 unk62A;
u8 unk62C;
- u8 unk62D;
+ u8 initialVOffset;
u8 unk62E;
u8 unk62F;
s16 unk630;
@@ -196,20 +157,20 @@ void sub_80BBDE8(u8);
void sub_80BBE70(u8);
void sub_80BBEB8(u8);
void sub_80BC0A8(u8);
-void sub_80BC0F8(u8);
+static void HandleButtonPress_StartMenu(u8);
void sub_80BC2D4(u8);
void sub_80BC360(u8);
void sub_80BC3DC(u8);
void sub_80BC47C(u8);
bool8 sub_80BC514(u8);
-void sub_80BC844(u8);
+static void LoadPokedexBgPalette(u8);
void sub_80BC890(void);
void sub_80BC8D4(u8, u8);
-void sub_80BD154(u16, u8, u8, u16);
-void sub_80BD1F4(u16, u8, u8, u16);
-u8 sub_80BD23C(u16, u8, u8);
+static void CreateMonDexNum(u16, u8, u8, u16);
+static void CreateCaughtBall(u16, u8, u8, u16);
+static u8 CreateMonName(u16, u8, u8);
void sub_80BD28C(u8, u8, u16);
-void sub_80BD2B4(u16, u16);
+static void CreateInitialPokemonSprites(u16, u16);
bool8 sub_80BD404(u8, u8, u8);
u16 sub_80BD69C(u16, u16);
void sub_80BD8D0(void);
@@ -217,9 +178,9 @@ bool8 sub_80BD930(void);
u8 sub_80BDA40(void);
u16 sub_80BDA8C(u16);
u32 sub_80BDACC(u16, s16, s16);
-void sub_80BDB7C(u8);
+static void CreateInterfaceSprites(u8);
void sub_80BE470(struct Sprite *sprite);
-void sub_80BE604(struct Sprite *sprite);
+static void SpriteCB_Scrollbar(struct Sprite *sprite);
void sub_80BE658(struct Sprite *sprite);
void sub_80BE758(struct Sprite *sprite);
void sub_80BE780(struct Sprite *sprite);
@@ -288,7 +249,7 @@ void sub_80C2668(u32, const u8*);
void sub_80C267C(void);
// const rom data
-#include "data/pokedex_orders.h"
+#include "data/pokemon/pokedex_orders.h"
static const struct OamData sOamData_855CFE4 =
{
@@ -297,7 +258,7 @@ static const struct OamData sOamData_855CFE4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = ST_OAM_SQUARE,
.x = 0,
.matrixNum = 0,
.size = 0,
@@ -314,7 +275,7 @@ static const struct OamData sOamData_855CFEC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = ST_OAM_H_RECTANGLE,
.x = 0,
.matrixNum = 0,
.size = 0,
@@ -331,7 +292,7 @@ static const struct OamData sOamData_855CFF4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = ST_OAM_H_RECTANGLE,
.x = 0,
.matrixNum = 0,
.size = 2,
@@ -348,7 +309,7 @@ static const struct OamData sOamData_855CFFC =
.objMode = 2,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = ST_OAM_SQUARE,
.x = 0,
.matrixNum = 0,
.size = 2,
@@ -365,7 +326,7 @@ static const struct OamData sOamData_855D004 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = ST_OAM_H_RECTANGLE,
.x = 0,
.matrixNum = 0,
.size = 3,
@@ -382,7 +343,7 @@ static const struct OamData sOamData_855D00C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 2,
+ .shape = ST_OAM_V_RECTANGLE,
.x = 0,
.matrixNum = 0,
.size = 0,
@@ -652,7 +613,7 @@ static const union AnimCmd *const sSpriteAnimTable_855D190[] =
sSpriteAnim_855D10C
};
-const struct SpriteTemplate gUnknown_0855D194 =
+static const struct SpriteTemplate sScrollBarSpriteTemplate =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -660,10 +621,10 @@ const struct SpriteTemplate gUnknown_0855D194 =
.anims = sSpriteAnimTable_855D114,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80BE604,
+ .callback = SpriteCB_Scrollbar,
};
-const struct SpriteTemplate gUnknown_0855D1AC =
+static const struct SpriteTemplate sArrowSpriteTemplate =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -674,7 +635,7 @@ const struct SpriteTemplate gUnknown_0855D1AC =
.callback = sub_80BE658,
};
-const struct SpriteTemplate gUnknown_0855D1C4 =
+static const struct SpriteTemplate sInterfaceTextSpriteTemplate =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -685,7 +646,7 @@ const struct SpriteTemplate gUnknown_0855D1C4 =
.callback = sub_80BE758,
};
-const struct SpriteTemplate gUnknown_0855D1DC =
+static const struct SpriteTemplate sRotatingPokeballSpriteTemplate =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -696,7 +657,7 @@ const struct SpriteTemplate gUnknown_0855D1DC =
.callback = sub_80BE780,
};
-const struct SpriteTemplate gUnknown_0855D1F4 =
+static const struct SpriteTemplate sSeenOwnTextSpriteTemplate =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -707,7 +668,7 @@ const struct SpriteTemplate gUnknown_0855D1F4 =
.callback = sub_80BE44C,
};
-const struct SpriteTemplate gUnknown_0855D20C =
+static const struct SpriteTemplate gUnknown_0855D20C =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -718,7 +679,7 @@ const struct SpriteTemplate gUnknown_0855D20C =
.callback = sub_80BE44C,
};
-const struct SpriteTemplate gUnknown_0855D224 =
+static const struct SpriteTemplate gUnknown_0855D224 =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -729,7 +690,7 @@ const struct SpriteTemplate gUnknown_0855D224 =
.callback = sub_80BE44C,
};
-const struct SpriteTemplate gUnknown_0855D23C =
+static const struct SpriteTemplate gUnknown_0855D23C =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -740,7 +701,7 @@ const struct SpriteTemplate gUnknown_0855D23C =
.callback = sub_80BE44C,
};
-const struct SpriteTemplate gUnknown_0855D254 =
+static const struct SpriteTemplate gUnknown_0855D254 =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -751,22 +712,22 @@ const struct SpriteTemplate gUnknown_0855D254 =
.callback = sub_80BE834,
};
-const struct CompressedSpriteSheet gSpriteSheets_0855D26C[] =
+static const struct CompressedSpriteSheet sInterfaceSpriteSheet[] =
{
{gPokedexMenu2_Gfx, 0x2000, 4096},
{0}
};
-const struct SpritePalette gSpritePalettes_0855D26C[] =
+static const struct SpritePalette sInterfaceSpritePalette[] =
{
{gPokedexText_Pal, 4096},
{0}
};
-const u8 gUnknown_0855D28C[] = {0x4, 0x8, 0x10, 0x20, 0x20};
-const u8 gUnknown_0855D291[] = {0x8, 0x4, 0x2, 0x1, 0x1};
+static const u8 gUnknown_0855D28C[] = {0x4, 0x8, 0x10, 0x20, 0x20};
+static const u8 gUnknown_0855D291[] = {0x8, 0x4, 0x2, 0x1, 0x1};
-const struct BgTemplate gBgTemplates_0855D298[] =
+static const struct BgTemplate gBgTemplates_0855D298[] =
{
{
.bg = 0,
@@ -806,15 +767,466 @@ const struct BgTemplate gBgTemplates_0855D298[] =
}
};
-const struct WindowTemplate sWindowTemplates_0855D2A8[] =
+static const struct WindowTemplate sPokemonList_WindowTemplate[] =
+{
+ {
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 32,
+ .height = 32,
+ .paletteNum = 0,
+ .baseBlock = 1,
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const u8 sText_No000[] = _("{NO}000");
+static const u8 gUnknown_0855D2BE[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp");
+static const u8 sText_TenDashes[] = _("----------");
+
+ALIGNED(4) static const u8 gExpandedPlaceholder_PokedexDescription[] = _("");
+
+#include "data/pokemon/pokedex_text.h"
+#include "data/pokemon/pokedex_entries.h"
+
+static const u16 gUnknown_0856E610[] = INCBIN_U16("graphics/pokedex/black.gbapal");
+
+static const struct BgTemplate gUnknown_0856E630[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 12,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 13,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 14,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 15,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ }
+};
+
+static const struct WindowTemplate gUnknown_0856E640[] =
{
- {2, 0, 0, 0x20, 0x20, 0, 1},
+ {
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 32,
+ .height = 20,
+ .paletteNum = 0,
+ .baseBlock = 0x0001,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 25,
+ .tilemapTop = 8,
+ .width = 2,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x0281,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 12,
+ .width = 32,
+ .height = 7,
+ .paletteNum = 8,
+ .baseBlock = 0x0285,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 18,
+ .tilemapTop = 3,
+ .width = 10,
+ .height = 8,
+ .paletteNum = 9,
+ .baseBlock = 0x0365,
+ },
DUMMY_WIN_TEMPLATE
};
-const u8 gUnknown_0855D2B8[] = _("{NO}000");
-const u8 gUnknown_0855D2BE[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp");
-const u8 sText_TenDashes[] = _("----------");
+static const struct BgTemplate gUnknown_0856E668[] =
+{
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 14,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 15,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+};
+
+static const struct WindowTemplate gUnknown_0856E670[] =
+{
+ {
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 32,
+ .height = 20,
+ .paletteNum = 0,
+ .baseBlock = 0x0001,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 25,
+ .tilemapTop = 8,
+ .width = 2,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x0281,
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const u8 sText_TenDashes2[] = _("----------");
+
+#include "data/pokemon_graphics/footprint_table.h"
+
+static const u8 gUnknown_0856ED08[][4] =
+{
+ {0x00, 0x00, 0x00, 0x00},
+ {0xbb, 0x03, 0xd5, 0x03},
+ {0xbe, 0x03, 0xd8, 0x03},
+ {0xc1, 0x03, 0xdb, 0x03},
+ {0xc4, 0x03, 0xde, 0x03},
+ {0xc7, 0x03, 0xe1, 0x03},
+ {0xca, 0x03, 0xe4, 0x03},
+ {0xcd, 0x03, 0xe7, 0x03},
+ {0xd0, 0x03, 0xea, 0x03},
+ {0xd3, 0x02, 0xed, 0x02},
+};
+
+static const struct UnknownStruct3 gUnknown_0856ED30[] =
+{
+ {
+ .text = gUnknown_085E87A5,
+ .unk4 = 0,
+ .unk5 = 0,
+ .unk6 = 5,
+ },
+ {
+ .text = gUnknown_085E87D6,
+ .unk4 = 6,
+ .unk5 = 0,
+ .unk6 = 5,
+ },
+ {
+ .text = gUnknown_085E87EF,
+ .unk4 = 12,
+ .unk5 = 0,
+ .unk6 = 5,
+ },
+};
+
+static const struct UnknownStruct4 gUnknown_0856ED48[] =
+{
+ {
+ .text = gUnknown_085E8840,
+ .unk4 = 0,
+ .unk5 = 2,
+ .unk6 = 5,
+ .unk7 = 5,
+ .unk8 = 2,
+ .unk9 = 12,
+ },
+ {
+ .text = gUnknown_085E887C,
+ .unk4 = 0,
+ .unk5 = 4,
+ .unk6 = 5,
+ .unk7 = 5,
+ .unk8 = 4,
+ .unk9 = 12,
+ },
+ {
+ .text = gUnknown_085E88A6,
+ .unk4 = 0,
+ .unk5 = 6,
+ .unk6 = 5,
+ .unk7 = 5,
+ .unk8 = 6,
+ .unk9 = 6,
+ },
+ {
+ .text = gUnknown_085E88A6,
+ .unk4 = 0,
+ .unk5 = 6,
+ .unk6 = 5,
+ .unk7 = 11,
+ .unk8 = 6,
+ .unk9 = 6,
+ },
+ {
+ .text = gUnknown_085E881F,
+ .unk4 = 0,
+ .unk5 = 8,
+ .unk6 = 5,
+ .unk7 = 5,
+ .unk8 = 8,
+ .unk9 = 12,
+ },
+ {
+ .text = gUnknown_085E8806,
+ .unk4 = 0,
+ .unk5 = 10,
+ .unk6 = 5,
+ .unk7 = 5,
+ .unk8 = 10,
+ .unk9 = 12,
+ },
+ {
+ .text = gUnknown_085E88C8,
+ .unk4 = 0,
+ .unk5 = 12,
+ .unk6 = 5,
+ .unk7 = 0,
+ .unk8 = 0,
+ .unk9 = 0,
+ },
+};
+
+static const u8 gUnknown_0856ED9C[][4] =
+{
+ {0xFF, 0xFF, 0xFF, 1},
+ {0xFF, 0xFF, 0, 2},
+ {0xFF, 3, 1, 4},
+ { 2, 0xFF, 1, 4},
+ {0xFF, 0xFF, 2, 5},
+ {0xFF, 0xFF, 4, 6},
+ {0xFF, 0xFF, 5, 0xFF},
+};
+
+static const u8 gUnknown_0856EDB8[][4] =
+{
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 5},
+ {0xFF, 0xFF, 4, 6},
+ {0xFF, 0xFF, 5, 0xFF},
+};
+
+static const u8 gUnknown_0856EDD4[][4] =
+{
+ {0xFF, 0xFF, 0xFF, 1},
+ {0xFF, 0xFF, 0, 2},
+ {0xFF, 3, 1, 4},
+ { 2, 0xFF, 1, 4},
+ {0xFF, 0xFF, 2, 6},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 4, 0xFF},
+};
+
+static const u8 gUnknown_0856EDF0[][4] =
+{
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 6},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 4, 0xFF},
+};
+
+static const struct PokedexOption gDexModeOptions[] =
+{
+ {gText_DexHoennDescription, gText_DexHoennTitle},
+ {gText_DexNatDescription, gText_DexNatTitle},
+ {NULL, NULL},
+};
+
+static const struct PokedexOption gDexSortOptions[] =
+{
+ {gText_DexSortNumericalDescription, gText_DexSortNumericalTitle},
+ {gText_DexSortAtoZDescription, gText_DexSortAtoZTitle},
+ {gText_DexSortHeaviestDescription, gText_DexSortHeaviestTitle},
+ {gText_DexSortLightestDescription, gText_DexSortLightestTitle},
+ {gText_DexSortTallestDescription, gText_DexSortTallestTitle},
+ {ggText_DexSortSmallestDescription, gText_DexSortSmallestTitle},
+ {NULL, NULL},
+};
+
+static const struct PokedexOption gDexSearchAlphaOptions[] =
+{
+ {gText_DexEmptyString, gText_DexSearchDontSpecify},
+ {gText_DexEmptyString, gText_DexSearchAlphaABC},
+ {gText_DexEmptyString, gText_DexSearchAlphaDEF},
+ {gText_DexEmptyString, gText_DexSearchAlphaGHI},
+ {gText_DexEmptyString, gText_DexSearchAlphaJKL},
+ {gText_DexEmptyString, gText_DexSearchAlphaMNO},
+ {gText_DexEmptyString, gText_DexSearchAlphaPQR},
+ {gText_DexEmptyString, gText_DexSearchAlphaSTU},
+ {gText_DexEmptyString, gText_DexSearchAlphaVWX},
+ {gText_DexEmptyString, gText_DexSearchAlphaYZ},
+ {NULL, NULL},
+};
+
+static const struct PokedexOption gDexSearchColorOptions[] =
+{
+ {gText_DexEmptyString, gText_DexSearchDontSpecify},
+ {gText_DexEmptyString, gText_DexSearchColorRed},
+ {gText_DexEmptyString, gText_DexSearchColorBlue},
+ {gText_DexEmptyString, gText_DexSearchColorYellow},
+ {gText_DexEmptyString, gText_DexSearchColorGreen},
+ {gText_DexEmptyString, gText_DexSearchColorBlack},
+ {gText_DexEmptyString, gText_DexSearchColorBrown},
+ {gText_DexEmptyString, gText_DexSearchColorPurple},
+ {gText_DexEmptyString, gText_DexSearchColorGray},
+ {gText_DexEmptyString, gText_DexSearchColorWhite},
+ {gText_DexEmptyString, gText_DexSearchColorPink},
+ {NULL, NULL},
+};
+
+static const struct PokedexOption gDexSearchTypeOptions[] =
+{
+ {gText_DexEmptyString, gText_DexSearchTypeNone},
+ {gText_DexEmptyString, gTypeNames[TYPE_NORMAL]},
+ {gText_DexEmptyString, gTypeNames[TYPE_FIGHTING]},
+ {gText_DexEmptyString, gTypeNames[TYPE_FLYING]},
+ {gText_DexEmptyString, gTypeNames[TYPE_POISON]},
+ {gText_DexEmptyString, gTypeNames[TYPE_GROUND]},
+ {gText_DexEmptyString, gTypeNames[TYPE_ROCK]},
+ {gText_DexEmptyString, gTypeNames[TYPE_BUG]},
+ {gText_DexEmptyString, gTypeNames[TYPE_GHOST]},
+ {gText_DexEmptyString, gTypeNames[TYPE_STEEL]},
+ {gText_DexEmptyString, gTypeNames[TYPE_FIRE]},
+ {gText_DexEmptyString, gTypeNames[TYPE_WATER]},
+ {gText_DexEmptyString, gTypeNames[TYPE_GRASS]},
+ {gText_DexEmptyString, gTypeNames[TYPE_ELECTRIC]},
+ {gText_DexEmptyString, gTypeNames[TYPE_PSYCHIC]},
+ {gText_DexEmptyString, gTypeNames[TYPE_ICE]},
+ {gText_DexEmptyString, gTypeNames[TYPE_DRAGON]},
+ {gText_DexEmptyString, gTypeNames[TYPE_DARK]},
+ {NULL, NULL},
+};
+
+static const u8 gUnknown_0856EFAC[] = {0x00, 0x01};
+static const u8 gUnknown_0856EFAE[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};
+static const u8 gDexSearchTypeIds[] = {
+ TYPE_NONE,
+ TYPE_NORMAL,
+ TYPE_FIGHTING,
+ TYPE_FLYING,
+ TYPE_POISON,
+ TYPE_GROUND,
+ TYPE_ROCK,
+ TYPE_BUG,
+ TYPE_GHOST,
+ TYPE_STEEL,
+ TYPE_FIRE,
+ TYPE_WATER,
+ TYPE_GRASS,
+ TYPE_ELECTRIC,
+ TYPE_PSYCHIC,
+ TYPE_ICE,
+ TYPE_DRAGON,
+ TYPE_DARK,
+};
+
+static const struct UnknownStruct1 gUnknown_0856EFC8[] =
+{
+ {gDexSearchAlphaOptions, 6, 7, 10},
+ {gDexSearchColorOptions, 8, 9, 11},
+ {gDexSearchTypeOptions, 10, 11, NUMBER_OF_MON_TYPES},
+ {gDexSearchTypeOptions, 12, 13, NUMBER_OF_MON_TYPES},
+ {gDexSortOptions, 4, 5, 6},
+ {gDexModeOptions, 2, 3, 2},
+};
+
+static const struct BgTemplate gUnknown_0856EFF8[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 12,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 13,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 14,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 15,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ }
+};
+
+static const struct WindowTemplate gUnknown_0856F008[] =
+{
+ {
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 32,
+ .height = 20,
+ .paletteNum = 0,
+ .baseBlock = 0x0001,
+ },
+ DUMMY_WIN_TEMPLATE
+};
// .text
@@ -855,15 +1267,15 @@ void sub_80BB370(void)
TransferPlttBuffer();
}
-void sub_80BB384(struct PokedexView *pokedexView)
+static void ResetPokedexView(struct PokedexView *pokedexView)
{
u16 i;
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
{
- pokedexView->unk0[i].dexNum |= 0xFFFF;
- pokedexView->unk0[i].seen = 0;
- pokedexView->unk0[i].owned = 0;
+ pokedexView->pokedexList[i].dexNum |= 0xFFFF;
+ pokedexView->pokedexList[i].seen = 0;
+ pokedexView->pokedexList[i].owned = 0;
}
pokedexView->unk608 = 0;
pokedexView->unk60A_1 = 0;
@@ -875,14 +1287,14 @@ void sub_80BB384(struct PokedexView *pokedexView)
pokedexView->unk614 = 0;
pokedexView->dexOrder = 0;
pokedexView->unk618 = 0;
- pokedexView->unk61A = 0;
- pokedexView->unk61C = 0;
+ pokedexView->seenCount = 0;
+ pokedexView->ownCount = 0;
for (i = 0; i <= 3; i++)
pokedexView->unk61E[i] |= 0xFFFF;
pokedexView->unk628 = 0;
pokedexView->unk62A = 0;
pokedexView->unk62C = 0;
- pokedexView->unk62D = 0;
+ pokedexView->initialVOffset = 0;
pokedexView->unk62E = 0;
pokedexView->unk62F = 0;
pokedexView->unk630 = 0;
@@ -906,7 +1318,7 @@ void sub_80BB384(struct PokedexView *pokedexView)
pokedexView->unk65C[i] = 0;
}
-void sub_80BB534(void)
+void CB2_Pokedex(void)
{
u8 *addr;
u32 size;
@@ -933,34 +1345,34 @@ void sub_80BB534(void)
gMain.state++;
break;
case 2:
- gUnknown_02039B4C = AllocZeroed(sizeof(struct PokedexView));
- sub_80BB384(gUnknown_02039B4C);
+ sPokedexView = AllocZeroed(sizeof(struct PokedexView));
+ ResetPokedexView(sPokedexView);
CreateTask(sub_80BB78C, 0);
- gUnknown_02039B4C->dexMode = gSaveBlock2Ptr->pokedex.unknown1;
+ sPokedexView->dexMode = gSaveBlock2Ptr->pokedex.unknown1;
if (!IsNationalPokedexEnabled())
- gUnknown_02039B4C->dexMode = DEX_MODE_HOENN;
- gUnknown_02039B4C->dexOrder = gSaveBlock2Ptr->pokedex.order;
- gUnknown_02039B4C->selectedPokemon = gUnknown_02039B50;
- gUnknown_02039B4C->unk62C = gUnknown_02039B52;
- gUnknown_02039B4C->selectedScreen = 0;
+ sPokedexView->dexMode = DEX_MODE_HOENN;
+ sPokedexView->dexOrder = gSaveBlock2Ptr->pokedex.order;
+ sPokedexView->selectedPokemon = gUnknown_02039B50;
+ sPokedexView->unk62C = gUnknown_02039B52;
+ sPokedexView->selectedScreen = 0;
if (!IsNationalPokedexEnabled())
{
- gUnknown_02039B4C->unk61A = GetHoennPokedexCount(0);
- gUnknown_02039B4C->unk61C = GetHoennPokedexCount(1);
+ sPokedexView->seenCount = GetHoennPokedexCount(0);
+ sPokedexView->ownCount = GetHoennPokedexCount(1);
}
else
{
- gUnknown_02039B4C->unk61A = GetNationalPokedexCount(0);
- gUnknown_02039B4C->unk61C = GetNationalPokedexCount(1);
+ sPokedexView->seenCount = GetNationalPokedexCount(0);
+ sPokedexView->ownCount = GetNationalPokedexCount(1);
}
- gUnknown_02039B4C->unk62D = 8;
+ sPokedexView->initialVOffset = 8;
gMain.state++;
break;
case 3:
EnableInterrupts(1);
SetVBlankCallback(sub_80BB370);
SetMainCallback2(sub_80BB774);
- sub_80BC8D4(gUnknown_02039B4C->dexMode, gUnknown_02039B4C->dexOrder);
+ sub_80BC8D4(sPokedexView->dexMode, sPokedexView->dexOrder);
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x80);
break;
}
@@ -976,26 +1388,26 @@ void sub_80BB774(void)
void sub_80BB78C(u8 taskId)
{
- gUnknown_02039B4C->unk64C_1 = FALSE;
+ sPokedexView->unk64C_1 = FALSE;
if (sub_80BC514(0))
gTasks[taskId].func = sub_80BB7D4;
}
void sub_80BB7D4(u8 taskId)
{
- SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sPokedexView->menuY);
- if (gUnknown_02039B4C->menuY)
+ if (sPokedexView->menuY)
{
- gUnknown_02039B4C->menuY -= 8;
+ sPokedexView->menuY -= 8;
}
else
{
- if ((gMain.newKeys & A_BUTTON) && gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon].seen)
+ if ((gMain.newKeys & A_BUTTON) && sPokedexView->pokedexList[sPokedexView->selectedPokemon].seen)
{
sub_80BD8D0();
- BeginNormalPaletteFade(~(1 << (gSprites[gUnknown_02039B4C->selectedMonSpriteId].oam.paletteNum + 16)), 0, 0, 0x10, RGB_BLACK);
- gSprites[gUnknown_02039B4C->selectedMonSpriteId].callback = sub_80BE470;
+ BeginNormalPaletteFade(~(1 << (gSprites[sPokedexView->selectedMonSpriteId].oam.paletteNum + 16)), 0, 0, 0x10, RGB_BLACK);
+ gSprites[sPokedexView->selectedMonSpriteId].callback = sub_80BE470;
gTasks[taskId].func = sub_80BBBF4;
PlaySE(SE_PIN);
sub_80BC890();
@@ -1003,9 +1415,9 @@ void sub_80BB7D4(u8 taskId)
else if (gMain.newKeys & START_BUTTON)
{
//Open menu
- gUnknown_02039B4C->menuY = 0;
- gUnknown_02039B4C->menuIsOpen = 1;
- gUnknown_02039B4C->menuCursorPos = 0;
+ sPokedexView->menuY = 0;
+ sPokedexView->menuIsOpen = 1;
+ sPokedexView->menuCursorPos = 0;
gTasks[taskId].func = sub_80BBA78;
PlaySE(SE_SELECT);
}
@@ -1014,11 +1426,11 @@ void sub_80BB7D4(u8 taskId)
PlaySE(SE_SELECT);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].data[0] = sub_80C1258();
- gUnknown_02039B4C->unk64E = 0;
- gUnknown_02039B4C->unk62A = gUnknown_02039B4C->unk62C;
- gUnknown_02039B4C->unk610 = gUnknown_02039B4C->selectedPokemon;
- gUnknown_02039B4C->unk614 = gUnknown_02039B4C->dexMode;
- gUnknown_02039B4C->unk618 = gUnknown_02039B4C->dexOrder;
+ sPokedexView->unk64E = 0;
+ sPokedexView->unk62A = sPokedexView->unk62C;
+ sPokedexView->unk610 = sPokedexView->selectedPokemon;
+ sPokedexView->unk614 = sPokedexView->dexMode;
+ sPokedexView->unk618 = sPokedexView->dexOrder;
gTasks[taskId].func = sub_80BBD1C;
PlaySE(SE_PC_LOGIN);
sub_80BC890();
@@ -1032,8 +1444,8 @@ void sub_80BB7D4(u8 taskId)
else
{
//Handle D-pad
- gUnknown_02039B4C->selectedPokemon = sub_80BD69C(gUnknown_02039B4C->selectedPokemon, 0xE);
- if (gUnknown_02039B4C->unk62E)
+ sPokedexView->selectedPokemon = sub_80BD69C(sPokedexView->selectedPokemon, 0xE);
+ if (sPokedexView->unk62E)
gTasks[taskId].func = sub_80BBA28;
}
}
@@ -1041,41 +1453,41 @@ void sub_80BB7D4(u8 taskId)
void sub_80BBA28(u8 taskId)
{
- if (sub_80BD404(gUnknown_02039B4C->unk62F, gUnknown_02039B4C->unk634, gUnknown_02039B4C->unk636))
+ if (sub_80BD404(sPokedexView->unk62F, sPokedexView->unk634, sPokedexView->unk636))
gTasks[taskId].func = sub_80BB7D4;
}
void sub_80BBA78(u8 taskId)
{
- SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sPokedexView->menuY);
//If menu is not open, slide it up, on screen
- if (gUnknown_02039B4C->menuY != 80)
+ if (sPokedexView->menuY != 80)
{
- gUnknown_02039B4C->menuY += 8;
+ sPokedexView->menuY += 8;
}
else
{
if (gMain.newKeys & A_BUTTON)
{
- switch (gUnknown_02039B4C->menuCursorPos)
+ switch (sPokedexView->menuCursorPos)
{
case 0: //BACK TO LIST
default:
gMain.newKeys |= START_BUTTON; //Exit menu
break;
case 1: //LIST TOP
- gUnknown_02039B4C->selectedPokemon = 0;
- gUnknown_02039B4C->unk62C = 0x40;
+ sPokedexView->selectedPokemon = 0;
+ sPokedexView->unk62C = 0x40;
sub_80BDA40();
- sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON; //Exit menu
break;
case 2: //LIST BOTTOM
- gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->pokemonListCount - 1;
- gUnknown_02039B4C->unk62C = gUnknown_02039B4C->pokemonListCount * 16 + 0x30;
+ sPokedexView->selectedPokemon = sPokedexView->pokemonListCount - 1;
+ sPokedexView->unk62C = sPokedexView->pokemonListCount * 16 + 0x30;
sub_80BDA40();
- sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON; //Exit menu
break;
case 3: //CLOSE POKEDEX
@@ -1089,18 +1501,18 @@ void sub_80BBA78(u8 taskId)
//Exit menu when Start or B is pressed
if (gMain.newKeys & (START_BUTTON | B_BUTTON))
{
- gUnknown_02039B4C->menuIsOpen = 0;
+ sPokedexView->menuIsOpen = 0;
gTasks[taskId].func = sub_80BB7D4;
PlaySE(SE_SELECT);
}
- else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gUnknown_02039B4C->menuCursorPos != 0)
+ else if ((gMain.newAndRepeatedKeys & DPAD_UP) && sPokedexView->menuCursorPos != 0)
{
- gUnknown_02039B4C->menuCursorPos--;
+ sPokedexView->menuCursorPos--;
PlaySE(SE_SELECT);
}
- else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gUnknown_02039B4C->menuCursorPos <= 2)
+ else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && sPokedexView->menuCursorPos <= 2)
{
- gUnknown_02039B4C->menuCursorPos++;
+ sPokedexView->menuCursorPos++;
PlaySE(SE_SELECT);
}
}
@@ -1108,10 +1520,10 @@ void sub_80BBA78(u8 taskId)
void sub_80BBBF4(u8 taskId)
{
- if (gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.x == 48 && gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.y == 56)
+ if (gSprites[sPokedexView->selectedMonSpriteId].pos1.x == 48 && gSprites[sPokedexView->selectedMonSpriteId].pos1.y == 56)
{
- gUnknown_02039B4C->unk64B = gUnknown_02039B4C->unk64A;
- gTasks[taskId].data[0] = sub_80BE91C(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gUnknown_02039B4C->selectedMonSpriteId);
+ sPokedexView->unk64B = sPokedexView->unk64A;
+ gTasks[taskId].data[0] = sub_80BE91C(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], sPokedexView->selectedMonSpriteId);
gTasks[taskId].func = sub_80BBC74;
}
}
@@ -1120,13 +1532,13 @@ void sub_80BBC74(u8 taskId)
{
if (gTasks[gTasks[taskId].data[0]].isActive)
{
- if (gUnknown_02039B4C->unk64A == 1 && !sub_80BE9C4(gTasks[taskId].data[0]) && sub_80BD930())
- sub_80BE9F8(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gTasks[taskId].data[0]);
+ if (sPokedexView->unk64A == 1 && !sub_80BE9C4(gTasks[taskId].data[0]) && sub_80BD930())
+ sub_80BE9F8(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], gTasks[taskId].data[0]);
}
else
{
- gUnknown_02039B50 = gUnknown_02039B4C->selectedPokemon;
- gUnknown_02039B52 = gUnknown_02039B4C->unk62C;
+ gUnknown_02039B50 = sPokedexView->selectedPokemon;
+ gUnknown_02039B52 = sPokedexView->unk62C;
gTasks[taskId].func = sub_80BB78C;
}
}
@@ -1136,20 +1548,20 @@ void sub_80BBD1C(u8 taskId)
if (!gTasks[gTasks[taskId].data[0]].isActive)
{
sub_80BDA40();
- if (gUnknown_02039B4C->unk64E != 0)
+ if (sPokedexView->unk64E != 0)
{
- gUnknown_02039B4C->selectedPokemon = 0;
- gUnknown_02039B4C->unk62C = 0x40;
+ sPokedexView->selectedPokemon = 0;
+ sPokedexView->unk62C = 0x40;
gTasks[taskId].func = sub_80BBE70;
}
else
{
- gUnknown_02039B4C->unk62C = gUnknown_02039B4C->unk62A;
- gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->unk610;
- gUnknown_02039B4C->dexMode = gUnknown_02039B4C->unk614;
+ sPokedexView->unk62C = sPokedexView->unk62A;
+ sPokedexView->selectedPokemon = sPokedexView->unk610;
+ sPokedexView->dexMode = sPokedexView->unk614;
if (!IsNationalPokedexEnabled())
- gUnknown_02039B4C->dexMode = DEX_MODE_HOENN;
- gUnknown_02039B4C->dexOrder = gUnknown_02039B4C->unk618;
+ sPokedexView->dexMode = DEX_MODE_HOENN;
+ sPokedexView->dexOrder = sPokedexView->unk618;
gTasks[taskId].func = sub_80BB78C;
}
}
@@ -1159,43 +1571,43 @@ void sub_80BBDE8(u8 taskId)
{
if (!gPaletteFade.active)
{
- gSaveBlock2Ptr->pokedex.unknown1 = gUnknown_02039B4C->dexMode;
+ gSaveBlock2Ptr->pokedex.unknown1 = sPokedexView->dexMode;
if (!IsNationalPokedexEnabled())
gSaveBlock2Ptr->pokedex.unknown1 = DEX_MODE_HOENN;
- gSaveBlock2Ptr->pokedex.order = gUnknown_02039B4C->dexOrder;
+ gSaveBlock2Ptr->pokedex.order = sPokedexView->dexOrder;
sub_80BDA40();
sub_80BC890();
DestroyTask(taskId);
SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
- Free(gUnknown_02039B4C);
+ Free(sPokedexView);
}
}
void sub_80BBE70(u8 taskId)
{
- gUnknown_02039B4C->unk64C_1 = TRUE;
+ sPokedexView->unk64C_1 = TRUE;
if (sub_80BC514(3))
gTasks[taskId].func = sub_80BBEB8;
}
void sub_80BBEB8(u8 taskId)
{
- SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sPokedexView->menuY);
- if (gUnknown_02039B4C->menuY)
+ if (sPokedexView->menuY)
{
- gUnknown_02039B4C->menuY -= 8;
+ sPokedexView->menuY -= 8;
}
else
{
- if ((gMain.newKeys & A_BUTTON) && gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon].seen)
+ if ((gMain.newKeys & A_BUTTON) && sPokedexView->pokedexList[sPokedexView->selectedPokemon].seen)
{
u32 a;
sub_80BD8D0();
- a = (1 << (gSprites[gUnknown_02039B4C->selectedMonSpriteId].oam.paletteNum + 16));
- gSprites[gUnknown_02039B4C->selectedMonSpriteId].callback = sub_80BE470;
+ a = (1 << (gSprites[sPokedexView->selectedMonSpriteId].oam.paletteNum + 16));
+ gSprites[sPokedexView->selectedMonSpriteId].callback = sub_80BE470;
BeginNormalPaletteFade(~a, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = sub_80BC2D4;
PlaySE(SE_PIN);
@@ -1203,17 +1615,17 @@ void sub_80BBEB8(u8 taskId)
}
else if (gMain.newKeys & START_BUTTON)
{
- gUnknown_02039B4C->menuY = 0;
- gUnknown_02039B4C->menuIsOpen = 1;
- gUnknown_02039B4C->menuCursorPos = 0;
- gTasks[taskId].func = sub_80BC0F8;
+ sPokedexView->menuY = 0;
+ sPokedexView->menuIsOpen = 1;
+ sPokedexView->menuCursorPos = 0;
+ gTasks[taskId].func = HandleButtonPress_StartMenu;
PlaySE(SE_SELECT);
}
else if (gMain.newKeys & SELECT_BUTTON)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].data[0] = sub_80C1258();
- gUnknown_02039B4C->unk64E = 0;
+ sPokedexView->unk64E = 0;
gTasks[taskId].func = sub_80BBD1C;
PlaySE(SE_PC_LOGIN);
sub_80BC890();
@@ -1227,8 +1639,8 @@ void sub_80BBEB8(u8 taskId)
else
{
//Handle D-pad
- gUnknown_02039B4C->selectedPokemon = sub_80BD69C(gUnknown_02039B4C->selectedPokemon, 0xE);
- if (gUnknown_02039B4C->unk62E)
+ sPokedexView->selectedPokemon = sub_80BD69C(sPokedexView->selectedPokemon, 0xE);
+ if (sPokedexView->unk62E)
gTasks[taskId].func = sub_80BC0A8;
}
}
@@ -1236,40 +1648,40 @@ void sub_80BBEB8(u8 taskId)
void sub_80BC0A8(u8 taskId)
{
- if (sub_80BD404(gUnknown_02039B4C->unk62F, gUnknown_02039B4C->unk634, gUnknown_02039B4C->unk636))
+ if (sub_80BD404(sPokedexView->unk62F, sPokedexView->unk634, sPokedexView->unk636))
gTasks[taskId].func = sub_80BBEB8;
}
-void sub_80BC0F8(u8 taskId)
+static void HandleButtonPress_StartMenu(u8 taskId)
{
- SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sPokedexView->menuY);
- if (gUnknown_02039B4C->menuY != 96)
+ if (sPokedexView->menuY != 96)
{
- gUnknown_02039B4C->menuY += 8;
+ sPokedexView->menuY += 8;
}
else
{
if (gMain.newKeys & A_BUTTON)
{
- switch (gUnknown_02039B4C->menuCursorPos)
+ switch (sPokedexView->menuCursorPos)
{
case 0: //BACK TO LIST
default:
gMain.newKeys |= START_BUTTON;
break;
case 1: //LIST TOP
- gUnknown_02039B4C->selectedPokemon = 0;
- gUnknown_02039B4C->unk62C = 0x40;
+ sPokedexView->selectedPokemon = 0;
+ sPokedexView->unk62C = 0x40;
sub_80BDA40();
- sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON;
break;
case 2: //LIST BOTTOM
- gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->pokemonListCount - 1;
- gUnknown_02039B4C->unk62C = gUnknown_02039B4C->pokemonListCount * 16 + 0x30;
+ sPokedexView->selectedPokemon = sPokedexView->pokemonListCount - 1;
+ sPokedexView->unk62C = sPokedexView->pokemonListCount * 16 + 0x30;
sub_80BDA40();
- sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON;
break;
case 3: //BACK TO POKEDEX
@@ -1288,18 +1700,18 @@ void sub_80BC0F8(u8 taskId)
//Exit menu when Start or B is pressed
if (gMain.newKeys & (START_BUTTON | B_BUTTON))
{
- gUnknown_02039B4C->menuIsOpen = 0;
+ sPokedexView->menuIsOpen = 0;
gTasks[taskId].func = sub_80BBEB8;
PlaySE(SE_SELECT);
}
- else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gUnknown_02039B4C->menuCursorPos)
+ else if ((gMain.newAndRepeatedKeys & DPAD_UP) && sPokedexView->menuCursorPos)
{
- gUnknown_02039B4C->menuCursorPos--;
+ sPokedexView->menuCursorPos--;
PlaySE(SE_SELECT);
}
- else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gUnknown_02039B4C->menuCursorPos <= 3)
+ else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && sPokedexView->menuCursorPos <= 3)
{
- gUnknown_02039B4C->menuCursorPos++;
+ sPokedexView->menuCursorPos++;
PlaySE(SE_SELECT);
}
}
@@ -1307,11 +1719,11 @@ void sub_80BC0F8(u8 taskId)
void sub_80BC2D4(u8 taskId)
{
- if (gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.x == 48 && gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.y == 56)
+ if (gSprites[sPokedexView->selectedMonSpriteId].pos1.x == 48 && gSprites[sPokedexView->selectedMonSpriteId].pos1.y == 56)
{
- gUnknown_02039B4C->unk64B = gUnknown_02039B4C->unk64A;
- gTasks[taskId].data[0] = sub_80BE91C(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gUnknown_02039B4C->selectedMonSpriteId);
- gUnknown_02039B4C->selectedMonSpriteId = -1;
+ sPokedexView->unk64B = sPokedexView->unk64A;
+ gTasks[taskId].data[0] = sub_80BE91C(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], sPokedexView->selectedMonSpriteId);
+ sPokedexView->selectedMonSpriteId = -1;
gTasks[taskId].func = sub_80BC360;
}
}
@@ -1320,8 +1732,8 @@ void sub_80BC360(u8 taskId)
{
if (gTasks[gTasks[taskId].data[0]].isActive)
{
- if (gUnknown_02039B4C->unk64A == 1 && !sub_80BE9C4(gTasks[taskId].data[0]) && sub_80BD930())
- sub_80BE9F8(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gTasks[taskId].data[0]);
+ if (sPokedexView->unk64A == 1 && !sub_80BE9C4(gTasks[taskId].data[0]) && sub_80BD930())
+ sub_80BE9F8(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], gTasks[taskId].data[0]);
}
else
{
@@ -1333,12 +1745,12 @@ void sub_80BC3DC(u8 taskId)
{
if (!gPaletteFade.active)
{
- gUnknown_02039B4C->unk62C = gUnknown_02039B4C->unk62A;
- gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->unk610;
- gUnknown_02039B4C->dexMode = gUnknown_02039B4C->unk614;
+ sPokedexView->unk62C = sPokedexView->unk62A;
+ sPokedexView->selectedPokemon = sPokedexView->unk610;
+ sPokedexView->dexMode = sPokedexView->unk614;
if (!IsNationalPokedexEnabled())
- gUnknown_02039B4C->dexMode = DEX_MODE_HOENN;
- gUnknown_02039B4C->dexOrder = gUnknown_02039B4C->unk618;
+ sPokedexView->dexMode = DEX_MODE_HOENN;
+ sPokedexView->dexOrder = sPokedexView->unk618;
gTasks[taskId].func = sub_80BB78C;
sub_80BDA40();
sub_80BC890();
@@ -1349,12 +1761,12 @@ void sub_80BC47C(u8 taskId)
{
if (!gPaletteFade.active)
{
- gUnknown_02039B4C->unk62C = gUnknown_02039B4C->unk62A;
- gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->unk610;
- gUnknown_02039B4C->dexMode = gUnknown_02039B4C->unk614;
+ sPokedexView->unk62C = sPokedexView->unk62A;
+ sPokedexView->selectedPokemon = sPokedexView->unk610;
+ sPokedexView->dexMode = sPokedexView->unk614;
if (!IsNationalPokedexEnabled())
- gUnknown_02039B4C->dexMode = DEX_MODE_HOENN;
- gUnknown_02039B4C->dexOrder = gUnknown_02039B4C->unk618;
+ sPokedexView->dexMode = DEX_MODE_HOENN;
+ sPokedexView->dexOrder = sPokedexView->unk618;
gTasks[taskId].func = sub_80BBDE8;
}
}
@@ -1368,9 +1780,9 @@ bool8 sub_80BC514(u8 a)
if (gPaletteFade.active)
return 0;
SetVBlankCallback(NULL);
- gUnknown_02039B4C->unk64A = a;
+ sPokedexView->unk64A = a;
sub_80C09B0(0);
- SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D);
+ SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gBgTemplates_0855D298, 4);
SetBgTilemapBuffer(3, AllocZeroed(0x800));
@@ -1378,19 +1790,19 @@ bool8 sub_80BC514(u8 a)
SetBgTilemapBuffer(1, AllocZeroed(0x800));
SetBgTilemapBuffer(0, AllocZeroed(0x800));
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
- CopyToBgTilemapBuffer(1, gUnknown_08DC2C5C, 0, 0);
- CopyToBgTilemapBuffer(3, gUnknown_08DC2DAC, 0, 0);
+ CopyToBgTilemapBuffer(1, gPokedexTilemap_Main, 0, 0);
+ CopyToBgTilemapBuffer(3, gPokedexTilemap_MainUnderlay, 0, 0);
if (a == 0)
- CopyToBgTilemapBuffer(0, gUnknown_08DC2A08, 0, 0x280);
+ CopyToBgTilemapBuffer(0, gPokedexTilemap_StartMenu1, 0, 0x280);
else
- CopyToBgTilemapBuffer(0, gUnknown_08DC2B1C, 0, 0x280);
+ CopyToBgTilemapBuffer(0, gPokedexTilemap_StartMenu2, 0, 0x280);
ResetPaletteFade();
if (a == 0)
- gUnknown_02039B4C->unk64C_1 = FALSE;
+ sPokedexView->unk64C_1 = FALSE;
else
- gUnknown_02039B4C->unk64C_1 = TRUE;
- sub_80BC844(gUnknown_02039B4C->unk64C_1);
- InitWindows(sWindowTemplates_0855D2A8);
+ sPokedexView->unk64C_1 = TRUE;
+ LoadPokedexBgPalette(sPokedexView->unk64C_1);
+ InitWindows(sPokemonList_WindowTemplate);
DeactivateAllTextPrinters();
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
@@ -1400,9 +1812,9 @@ bool8 sub_80BC514(u8 a)
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
- LoadCompressedObjectPic(&gSpriteSheets_0855D26C[0]);
- LoadSpritePalettes(gSpritePalettes_0855D26C);
- sub_80BDB7C(a);
+ LoadCompressedObjectPic(&sInterfaceSpriteSheet[0]);
+ LoadSpritePalettes(sInterfaceSpritePalette);
+ CreateInterfaceSprites(a);
gMain.state++;
break;
case 2:
@@ -1410,10 +1822,10 @@ bool8 sub_80BC514(u8 a)
break;
case 3:
if (a == 0)
- sub_80BC8D4(gUnknown_02039B4C->dexMode, gUnknown_02039B4C->dexOrder);
- sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
- gUnknown_02039B4C->menuIsOpen = 0;
- gUnknown_02039B4C->menuY = 0;
+ sub_80BC8D4(sPokedexView->dexMode, sPokedexView->dexOrder);
+ CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
+ sPokedexView->menuIsOpen = 0;
+ sPokedexView->menuY = 0;
CopyBgTilemapBufferToVram(0);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
@@ -1453,7 +1865,7 @@ bool8 sub_80BC514(u8 a)
return FALSE;
}
-void sub_80BC844(u8 a)
+static void LoadPokedexBgPalette(u8 a)
{
if (a == 1)
LoadPalette(gPokedexHoennBg_Pal + 1, 1, 0xBE);
@@ -1488,7 +1900,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever.
s16 i;
- gUnknown_02039B4C->pokemonListCount = 0;
+ sPokedexView->pokemonListCount = 0;
switch (dexMode)
{
@@ -1519,11 +1931,11 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
for (i = 0; i < vars[0]; i++)
{
vars[2] = HoennToNationalOrder(i + 1);
- gUnknown_02039B4C->unk0[i].dexNum = vars[2];
- gUnknown_02039B4C->unk0[i].seen = GetSetPokedexFlag(vars[2], 0);
- gUnknown_02039B4C->unk0[i].owned = GetSetPokedexFlag(vars[2], 1);
- if (gUnknown_02039B4C->unk0[i].seen)
- gUnknown_02039B4C->pokemonListCount = i + 1;
+ sPokedexView->pokedexList[i].dexNum = vars[2];
+ sPokedexView->pokedexList[i].seen = GetSetPokedexFlag(vars[2], 0);
+ sPokedexView->pokedexList[i].owned = GetSetPokedexFlag(vars[2], 1);
+ if (sPokedexView->pokedexList[i].seen)
+ sPokedexView->pokemonListCount = i + 1;
}
}
else
@@ -1540,11 +1952,11 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
if (r10)
{
asm(""); //Needed to match for some reason
- gUnknown_02039B4C->unk0[r5].dexNum = vars[2];
- gUnknown_02039B4C->unk0[r5].seen = GetSetPokedexFlag(vars[2], 0);
- gUnknown_02039B4C->unk0[r5].owned = GetSetPokedexFlag(vars[2], 1);
- if (gUnknown_02039B4C->unk0[r5].seen)
- gUnknown_02039B4C->pokemonListCount = r5 + 1;
+ sPokedexView->pokedexList[r5].dexNum = vars[2];
+ sPokedexView->pokedexList[r5].seen = GetSetPokedexFlag(vars[2], 0);
+ sPokedexView->pokedexList[r5].owned = GetSetPokedexFlag(vars[2], 1);
+ if (sPokedexView->pokedexList[r5].seen)
+ sPokedexView->pokemonListCount = r5 + 1;
r5++;
}
}
@@ -1557,10 +1969,10 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 0))
{
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = GetSetPokedexFlag(vars[2], 1);
- gUnknown_02039B4C->pokemonListCount++;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = GetSetPokedexFlag(vars[2], 1);
+ sPokedexView->pokemonListCount++;
}
}
break;
@@ -1571,10 +1983,10 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
{
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1;
- gUnknown_02039B4C->pokemonListCount++;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = 1;
+ sPokedexView->pokemonListCount++;
}
}
break;
@@ -1585,10 +1997,10 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
{
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1;
- gUnknown_02039B4C->pokemonListCount++;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = 1;
+ sPokedexView->pokemonListCount++;
}
}
break;
@@ -1599,10 +2011,10 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
{
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1;
- gUnknown_02039B4C->pokemonListCount++;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = 1;
+ sPokedexView->pokemonListCount++;
}
}
break;
@@ -1613,24 +2025,24 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
{
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1;
- gUnknown_02039B4C->pokemonListCount++;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = 1;
+ sPokedexView->pokemonListCount++;
}
}
break;
}
- for (i = gUnknown_02039B4C->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
+ for (i = sPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
{
- gUnknown_02039B4C->unk0[i].dexNum |= 0xFFFF;
- gUnknown_02039B4C->unk0[i].seen = 0;
- gUnknown_02039B4C->unk0[i].owned = 0;
+ sPokedexView->pokedexList[i].dexNum |= 0xFFFF;
+ sPokedexView->pokedexList[i].seen = 0;
+ sPokedexView->pokedexList[i].owned = 0;
}
}
-void sub_80BCE2C(u8 windowId, u8 fontId, const u8* str, u8 left, u8 top)
+static void PrintMonDexNumAndName(u8 windowId, u8 fontId, const u8* str, u8 left, u8 top)
{
u8 color[3];
@@ -1640,86 +2052,86 @@ void sub_80BCE2C(u8 windowId, u8 fontId, const u8* str, u8 left, u8 top)
AddTextPrinterParameterized4(windowId, fontId, left * 8, (top * 8) + 1, 0, 0, color, -1, str);
}
-void sub_80BCE84(u8 a, u16 b, u16 c)
+static void CreateMonListEntry(u8 direction, u16 b, u16 c)
{
s16 _b;
u16 i;
u16 r2;
- switch (a)
+ switch (direction)
{
- case 0:
+ case 0: // Initial
default:
_b = b - 5;
for (i = 0; i <= 10; i++)
{
- if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[_b].dexNum == 0xFFFF)
+ if (_b < 0 || _b >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[_b].dexNum == 0xFFFF)
{
sub_80BD28C(0x11, i * 2, c);
}
else
{
sub_80BD28C(0x11, i * 2, c);
- if (gUnknown_02039B4C->unk0[_b].seen)
+ if (sPokedexView->pokedexList[_b].seen)
{
- sub_80BD154(_b, 0x12, i * 2, c);
- sub_80BD1F4(gUnknown_02039B4C->unk0[_b].owned, 0x11, i * 2, c);
- sub_80BD23C(gUnknown_02039B4C->unk0[_b].dexNum, 0x16, i * 2);
+ CreateMonDexNum(_b, 0x12, i * 2, c);
+ CreateCaughtBall(sPokedexView->pokedexList[_b].owned, 0x11, i * 2, c);
+ CreateMonName(sPokedexView->pokedexList[_b].dexNum, 0x16, i * 2);
}
else
{
- sub_80BD154(_b, 0x12, i * 2, c);
- sub_80BD1F4(0, 0x11, i * 2, c);
- sub_80BD23C(0, 0x16, i * 2);
+ CreateMonDexNum(_b, 0x12, i * 2, c);
+ CreateCaughtBall(0, 0x11, i * 2, c);
+ CreateMonName(0, 0x16, i * 2);
}
}
_b++;
}
break;
- case 1:
+ case 1: // Up
_b = b - 5;
- if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[_b].dexNum == 0xFFFF)
+ if (_b < 0 || _b >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[_b].dexNum == 0xFFFF)
{
- sub_80BD28C(0x11, gUnknown_02039B4C->unk630 * 2, c);
+ sub_80BD28C(0x11, sPokedexView->unk630 * 2, c);
}
else
{
- sub_80BD28C(0x11, gUnknown_02039B4C->unk630 * 2, c);
- if (gUnknown_02039B4C->unk0[_b].seen)
+ sub_80BD28C(0x11, sPokedexView->unk630 * 2, c);
+ if (sPokedexView->pokedexList[_b].seen)
{
- sub_80BD154(_b, 0x12, gUnknown_02039B4C->unk630 * 2, c);
- sub_80BD1F4(gUnknown_02039B4C->unk0[_b].owned, 0x11, gUnknown_02039B4C->unk630 * 2, c);
- sub_80BD23C(gUnknown_02039B4C->unk0[_b].dexNum, 0x16, gUnknown_02039B4C->unk630 * 2);
+ CreateMonDexNum(_b, 0x12, sPokedexView->unk630 * 2, c);
+ CreateCaughtBall(sPokedexView->pokedexList[_b].owned, 0x11, sPokedexView->unk630 * 2, c);
+ CreateMonName(sPokedexView->pokedexList[_b].dexNum, 0x16, sPokedexView->unk630 * 2);
}
else
{
- sub_80BD154(_b, 0x12, gUnknown_02039B4C->unk630 * 2, c);
- sub_80BD1F4(0, 0x11, gUnknown_02039B4C->unk630 * 2, c);
- sub_80BD23C(0, 0x16, gUnknown_02039B4C->unk630 * 2);
+ CreateMonDexNum(_b, 0x12, sPokedexView->unk630 * 2, c);
+ CreateCaughtBall(0, 0x11, sPokedexView->unk630 * 2, c);
+ CreateMonName(0, 0x16, sPokedexView->unk630 * 2);
}
}
break;
- case 2:
+ case 2: // Down
_b = b + 5;
- r2 = gUnknown_02039B4C->unk630 + 10;
+ r2 = sPokedexView->unk630 + 10;
if (r2 > 15)
r2 -= 16;
- if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[_b].dexNum == 0xFFFF)
+ if (_b < 0 || _b >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[_b].dexNum == 0xFFFF)
sub_80BD28C(0x11, r2 * 2, c);
else
{
sub_80BD28C(0x11, r2 * 2, c);
- if (gUnknown_02039B4C->unk0[_b].seen)
+ if (sPokedexView->pokedexList[_b].seen)
{
- sub_80BD154(_b, 0x12, r2 * 2, c);
- sub_80BD1F4(gUnknown_02039B4C->unk0[_b].owned, 0x11, r2 * 2, c);
- sub_80BD23C(gUnknown_02039B4C->unk0[_b].dexNum, 0x16, r2 * 2);
+ CreateMonDexNum(_b, 0x12, r2 * 2, c);
+ CreateCaughtBall(sPokedexView->pokedexList[_b].owned, 0x11, r2 * 2, c);
+ CreateMonName(sPokedexView->pokedexList[_b].dexNum, 0x16, r2 * 2);
}
else
{
- sub_80BD154(_b, 0x12, r2 * 2, c);
- sub_80BD1F4(0, 0x11, r2 * 2, c);
- sub_80BD23C(0, 0x16, r2 * 2);
+ CreateMonDexNum(_b, 0x12, r2 * 2, c);
+ CreateCaughtBall(0, 0x11, r2 * 2, c);
+ CreateMonName(0, 0x16, r2 * 2);
}
}
break;
@@ -1727,22 +2139,22 @@ void sub_80BCE84(u8 a, u16 b, u16 c)
CopyWindowToVram(0, 2);
}
-void sub_80BD154(u16 a, u8 left, u8 top, u16 unused)
+static void CreateMonDexNum(u16 a, u8 left, u8 top, u16 unused)
{
u8 text[6];
u16 r6;
- memcpy(text, gUnknown_0855D2B8, 6);
- r6 = gUnknown_02039B4C->unk0[a].dexNum;
- if (gUnknown_02039B4C->dexMode == DEX_MODE_HOENN)
+ memcpy(text, sText_No000, 6);
+ r6 = sPokedexView->pokedexList[a].dexNum;
+ if (sPokedexView->dexMode == DEX_MODE_HOENN)
r6 = NationalToHoennOrder(r6);
text[2] = CHAR_0 + r6 / 100;
text[3] = CHAR_0 + (r6 % 100) / 10;
text[4] = CHAR_0 + (r6 % 100) % 10;
- sub_80BCE2C(0, 7, text, left, top);
+ PrintMonDexNumAndName(0, 7, text, left, top);
}
-void sub_80BD1F4(u16 a, u8 x, u8 y, u16 unused)
+static void CreateCaughtBall(u16 a, u8 x, u8 y, u16 unused)
{
if (a)
BlitBitmapToWindow(0, gUnknown_0855D2BE, x * 8, y * 8, 8, 16);
@@ -1750,7 +2162,7 @@ void sub_80BD1F4(u16 a, u8 x, u8 y, u16 unused)
FillWindowPixelRect(0, 0, x * 8, y * 8, 8, 16);
}
-u8 sub_80BD23C(u16 num, u8 left, u8 top)
+static u8 CreateMonName(u16 num, u8 left, u8 top)
{
const u8* str;
@@ -1759,7 +2171,7 @@ u8 sub_80BD23C(u16 num, u8 left, u8 top)
str = gSpeciesNames[num];
else
str = sText_TenDashes;
- sub_80BCE2C(0, 7, str, left, top);
+ PrintMonDexNumAndName(0, 7, str, left, top);
return StringLength(str);
}
@@ -1768,7 +2180,7 @@ void sub_80BD28C(u8 x, u8 y, u16 unused)
FillWindowPixelRect(0, 0, x * 8, y * 8, 0x60, 16);
}
-void sub_80BD2B4(u16 a, u16 b)
+static void CreateInitialPokemonSprites(u16 selectedMon, u16 b)
{
u8 i;
u16 unk;
@@ -1777,10 +2189,10 @@ void sub_80BD2B4(u16 a, u16 b)
gPaletteFade.bufferTransferDisabled = TRUE;
for (i = 0; i < 4; i++)
- gUnknown_02039B4C->unk61E[i] = 0xFFFF;
- gUnknown_02039B4C->selectedMonSpriteId = 0xFFFF;
+ sPokedexView->unk61E[i] = 0xFFFF;
+ sPokedexView->selectedMonSpriteId = 0xFFFF;
- unk = sub_80BDA8C(a - 1);
+ unk = sub_80BDA8C(selectedMon - 1);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
@@ -1788,7 +2200,7 @@ void sub_80BD2B4(u16 a, u16 b)
gSprites[spriteId].data[5] = -32;
}
- unk = sub_80BDA8C(a);
+ unk = sub_80BDA8C(selectedMon);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
@@ -1796,7 +2208,7 @@ void sub_80BD2B4(u16 a, u16 b)
gSprites[spriteId].data[5] = 0;
}
- unk = sub_80BDA8C(a + 1);
+ unk = sub_80BDA8C(selectedMon + 1);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
@@ -1804,11 +2216,11 @@ void sub_80BD2B4(u16 a, u16 b)
gSprites[spriteId].data[5] = 32;
}
- sub_80BCE84(0, a, b);
- SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D);
+ CreateMonListEntry(0, selectedMon, b);
+ SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset);
- gUnknown_02039B4C->unk630 = 0;
- gUnknown_02039B4C->unk632 = 0;
+ sPokedexView->unk630 = 0;
+ sPokedexView->unk632 = 0;
gPaletteFade.bufferTransferDisabled = FALSE;
}
@@ -1818,79 +2230,79 @@ bool8 sub_80BD404(u8 a, u8 b, u8 c)
u16 i;
u8 foo;
- if (gUnknown_02039B4C->unk62E)
+ if (sPokedexView->unk62E)
{
- gUnknown_02039B4C->unk62E--;
+ sPokedexView->unk62E--;
switch (a)
{
case 1:
for (i = 0; i < 4; i++)
{
- if (gUnknown_02039B4C->unk61E[i] != 0xFFFF)
- gSprites[gUnknown_02039B4C->unk61E[i]].data[5] += b;
+ if (sPokedexView->unk61E[i] != 0xFFFF)
+ gSprites[sPokedexView->unk61E[i]].data[5] += b;
}
- foo = 16 * (c - gUnknown_02039B4C->unk62E) / c;
- SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D + gUnknown_02039B4C->unk632 * 16 - foo);
- gUnknown_02039B4C->unk62C -= gUnknown_02039B4C->unk628;
+ foo = 16 * (c - sPokedexView->unk62E) / c;
+ SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->unk632 * 16 - foo);
+ sPokedexView->unk62C -= sPokedexView->unk628;
break;
case 2:
for (i = 0; i < 4; i++)
{
- if (gUnknown_02039B4C->unk61E[i] != 0xFFFF)
- gSprites[gUnknown_02039B4C->unk61E[i]].data[5] -= b;
+ if (sPokedexView->unk61E[i] != 0xFFFF)
+ gSprites[sPokedexView->unk61E[i]].data[5] -= b;
}
- foo = 16 * (c - gUnknown_02039B4C->unk62E) / c;
- SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D + gUnknown_02039B4C->unk632 * 16 + foo);
- gUnknown_02039B4C->unk62C += gUnknown_02039B4C->unk628;
+ foo = 16 * (c - sPokedexView->unk62E) / c;
+ SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->unk632 * 16 + foo);
+ sPokedexView->unk62C += sPokedexView->unk628;
break;
}
return FALSE;
}
else
{
- SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D + gUnknown_02039B4C->unk630 * 16);
+ SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->unk630 * 16);
return TRUE;
}
}
-void sub_80BD5A8(u8 a, u16 b)
+static void CreateNewPokemonSprite(u8 direction, u16 selectedMon)
{
u16 unk;
u8 spriteId;
- gUnknown_02039B4C->unk632 = gUnknown_02039B4C->unk630;
- switch (a)
+ sPokedexView->unk632 = sPokedexView->unk630;
+ switch (direction)
{
- case 1:
- unk = sub_80BDA8C(b - 1);
+ case 1: // up
+ unk = sub_80BDA8C(selectedMon - 1);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
gSprites[spriteId].callback = sub_80BE4E0;
gSprites[spriteId].data[5] = -64;
}
- if (gUnknown_02039B4C->unk630 > 0)
- gUnknown_02039B4C->unk630--;
+ if (sPokedexView->unk630 > 0)
+ sPokedexView->unk630--;
else
- gUnknown_02039B4C->unk630 = 15;
+ sPokedexView->unk630 = 15;
break;
- case 2:
- unk = sub_80BDA8C(b + 1);
+ case 2: // down
+ unk = sub_80BDA8C(selectedMon + 1);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
gSprites[spriteId].callback = sub_80BE4E0;
gSprites[spriteId].data[5] = 0x40;
}
- if (gUnknown_02039B4C->unk630 <= 0xE)
- gUnknown_02039B4C->unk630++;
+ if (sPokedexView->unk630 <= 0xE)
+ sPokedexView->unk630++;
else
- gUnknown_02039B4C->unk630 = 0;
+ sPokedexView->unk630 = 0;
break;
}
}
-u16 sub_80BD69C(u16 a, u16 b)
+u16 sub_80BD69C(u16 selectedMon, u16 b)
{
u8 r3;
u8 r5;
@@ -1898,61 +2310,61 @@ u16 sub_80BD69C(u16 a, u16 b)
u16 r6;
u8 r10 = 0;
- if ((gMain.heldKeys & DPAD_UP) && (a > 0))
+ if ((gMain.heldKeys & DPAD_UP) && (selectedMon > 0))
{
r10 = 1;
- a = sub_80C0E0C(1, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
- sub_80BD5A8(1, a);
- sub_80BCE84(1, a, b);
+ selectedMon = sub_80C0E0C(1, selectedMon, 0, sPokedexView->pokemonListCount - 1);
+ CreateNewPokemonSprite(1, selectedMon);
+ CreateMonListEntry(1, selectedMon, b);
PlaySE(SE_Z_SCROLL);
}
- else if ((gMain.heldKeys & DPAD_DOWN) && (a < gUnknown_02039B4C->pokemonListCount - 1))
+ else if ((gMain.heldKeys & DPAD_DOWN) && (selectedMon < sPokedexView->pokemonListCount - 1))
{
r10 = 2;
- a = sub_80C0E0C(0, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
- sub_80BD5A8(2, a);
- sub_80BCE84(2, a, b);
+ selectedMon = sub_80C0E0C(0, selectedMon, 0, sPokedexView->pokemonListCount - 1);
+ CreateNewPokemonSprite(2, selectedMon);
+ CreateMonListEntry(2, selectedMon, b);
PlaySE(SE_Z_SCROLL);
}
- else if ((gMain.newKeys & DPAD_LEFT) && (a > 0))
+ else if ((gMain.newKeys & DPAD_LEFT) && (selectedMon > 0))
{
- r6 = a;
+ r6 = selectedMon;
for (i = 0; i < 7; i++)
- a = sub_80C0E0C(1, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
- gUnknown_02039B4C->unk62C += 16 * (a - r6);
+ selectedMon = sub_80C0E0C(1, selectedMon, 0, sPokedexView->pokemonListCount - 1);
+ sPokedexView->unk62C += 16 * (selectedMon - r6);
sub_80BDA40();
- sub_80BD2B4(a, 0xE);
+ CreateInitialPokemonSprites(selectedMon, 0xE);
PlaySE(SE_Z_PAGE);
}
- else if ((gMain.newKeys & DPAD_RIGHT) && (a < gUnknown_02039B4C->pokemonListCount - 1))
+ else if ((gMain.newKeys & DPAD_RIGHT) && (selectedMon < sPokedexView->pokemonListCount - 1))
{
- r6 = a;
+ r6 = selectedMon;
for (i = 0; i < 7; i++)
- a = sub_80C0E0C(0, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
- gUnknown_02039B4C->unk62C += (a - r6) * 16;
+ selectedMon = sub_80C0E0C(0, selectedMon, 0, sPokedexView->pokemonListCount - 1);
+ sPokedexView->unk62C += (selectedMon - r6) * 16;
sub_80BDA40();
- sub_80BD2B4(a, 0xE);
+ CreateInitialPokemonSprites(selectedMon, 0xE);
PlaySE(SE_Z_PAGE);
}
if (r10 == 0)
{
- gUnknown_02039B4C->unk638 = 0;
- return a;
+ sPokedexView->unk638 = 0;
+ return selectedMon;
}
- r5 = gUnknown_0855D28C[gUnknown_02039B4C->unk638 / 4];
- r3 = gUnknown_0855D291[gUnknown_02039B4C->unk638 / 4];
- gUnknown_02039B4C->unk62E = r3;
- gUnknown_02039B4C->unk636 = r3;
- gUnknown_02039B4C->unk634 = r5;
- gUnknown_02039B4C->unk62F = r10;
- gUnknown_02039B4C->unk628 = r5 / 2;
- sub_80BD404(gUnknown_02039B4C->unk62F, gUnknown_02039B4C->unk634, gUnknown_02039B4C->unk636);
- if (gUnknown_02039B4C->unk638 <= 0xB)
- gUnknown_02039B4C->unk638++;
- return a;
+ r5 = gUnknown_0855D28C[sPokedexView->unk638 / 4];
+ r3 = gUnknown_0855D291[sPokedexView->unk638 / 4];
+ sPokedexView->unk62E = r3;
+ sPokedexView->unk636 = r3;
+ sPokedexView->unk634 = r5;
+ sPokedexView->unk62F = r10;
+ sPokedexView->unk628 = r5 / 2;
+ sub_80BD404(sPokedexView->unk62F, sPokedexView->unk634, sPokedexView->unk636);
+ if (sPokedexView->unk638 <= 0xB)
+ sPokedexView->unk638++;
+ return selectedMon;
}
void sub_80BD8D0(void)
@@ -1961,61 +2373,61 @@ void sub_80BD8D0(void)
for (i = 0; i < 4; i++)
{
- u16 spriteId = gUnknown_02039B4C->unk61E[i];
+ u16 spriteId = sPokedexView->unk61E[i];
if (gSprites[spriteId].pos2.x == 0 && gSprites[spriteId].pos2.y == 0 && spriteId != 0xFFFF)
- gUnknown_02039B4C->selectedMonSpriteId = spriteId;
+ sPokedexView->selectedMonSpriteId = spriteId;
}
}
u8 sub_80BD930(void)
{
u16 r2;
- u16 r4 = gUnknown_02039B4C->selectedPokemon;
+ u16 r4 = sPokedexView->selectedPokemon;
if ((gMain.newKeys & DPAD_UP) && r4)
{
r2 = r4;
while (r2 != 0)
{
- r2 = sub_80C0E0C(1, r2, 0, gUnknown_02039B4C->pokemonListCount - 1);
+ r2 = sub_80C0E0C(1, r2, 0, sPokedexView->pokemonListCount - 1);
- if (gUnknown_02039B4C->unk0[r2].seen)
+ if (sPokedexView->pokedexList[r2].seen)
{
r4 = r2;
break;
}
}
- if (gUnknown_02039B4C->selectedPokemon == r4)
+ if (sPokedexView->selectedPokemon == r4)
return FALSE;
else
{
- gUnknown_02039B4C->selectedPokemon = r4;
- gUnknown_02039B4C->unk62C -= 16;
+ sPokedexView->selectedPokemon = r4;
+ sPokedexView->unk62C -= 16;
return TRUE;
}
}
- else if ((gMain.newKeys & DPAD_DOWN) && r4 < gUnknown_02039B4C->pokemonListCount - 1)
+ else if ((gMain.newKeys & DPAD_DOWN) && r4 < sPokedexView->pokemonListCount - 1)
{
r2 = r4;
- while (r2 < gUnknown_02039B4C->pokemonListCount - 1)
+ while (r2 < sPokedexView->pokemonListCount - 1)
{
- r2 = sub_80C0E0C(0, r2, 0, gUnknown_02039B4C->pokemonListCount - 1);
+ r2 = sub_80C0E0C(0, r2, 0, sPokedexView->pokemonListCount - 1);
- if (gUnknown_02039B4C->unk0[r2].seen)
+ if (sPokedexView->pokedexList[r2].seen)
{
r4 = r2;
break;
}
}
- if (gUnknown_02039B4C->selectedPokemon == r4)
+ if (sPokedexView->selectedPokemon == r4)
return FALSE;
else
{
- gUnknown_02039B4C->selectedPokemon = r4;
- gUnknown_02039B4C->unk62C += 16;
+ sPokedexView->selectedPokemon = r4;
+ sPokedexView->unk62C += 16;
return TRUE;
}
}
@@ -2028,10 +2440,10 @@ u8 sub_80BDA40(void)
for (i = 0; i < 4; i++)
{
- if (gUnknown_02039B4C->unk61E[i] != 0xFFFF)
+ if (sPokedexView->unk61E[i] != 0xFFFF)
{
- FreeAndDestroyMonPicSprite(gUnknown_02039B4C->unk61E[i]);
- gUnknown_02039B4C->unk61E[i] |= 0xFFFF;
+ FreeAndDestroyMonPicSprite(sPokedexView->unk61E[i]);
+ sPokedexView->unk61E[i] |= 0xFFFF;
}
}
return FALSE;
@@ -2039,10 +2451,10 @@ u8 sub_80BDA40(void)
u16 sub_80BDA8C(u16 a1)
{
- if (a1 >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[a1].dexNum == 0xFFFF)
+ if (a1 >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[a1].dexNum == 0xFFFF)
return 0xFFFF;
- else if (gUnknown_02039B4C->unk0[a1].seen)
- return gUnknown_02039B4C->unk0[a1].dexNum;
+ else if (sPokedexView->pokedexList[a1].seen)
+ return sPokedexView->pokedexList[a1].dexNum;
else
return 0;
}
@@ -2053,7 +2465,7 @@ u32 sub_80BDACC(u16 num, s16 x, s16 y)
for (i = 0; i < 4; i++)
{
- if (gUnknown_02039B4C->unk61E[i] == 0xFFFF)
+ if (sPokedexView->unk61E[i] == 0xFFFF)
{
u8 spriteId = sub_80C0E9C(num, x, y, i);
@@ -2062,45 +2474,46 @@ u32 sub_80BDACC(u16 num, s16 x, s16 y)
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[1] = i;
gSprites[spriteId].data[2] = NationalPokedexNumToSpecies(num);
- gUnknown_02039B4C->unk61E[i] = spriteId;
+ sPokedexView->unk61E[i] = spriteId;
return spriteId;
}
}
return 0xFFFF;
}
-void sub_80BDB7C(u8 a)
+static void CreateInterfaceSprites(u8 a)
{
u8 spriteId;
u16 r5;
-
- spriteId = CreateSprite(&gUnknown_0855D1AC, 184, 4, 0);
+// Up arrow
+ spriteId = CreateSprite(&sArrowSpriteTemplate, 184, 4, 0);
gSprites[spriteId].data[1] = 0;
-
- spriteId = CreateSprite(&gUnknown_0855D1AC, 184, 156, 0);
+// Down arrow
+ spriteId = CreateSprite(&sArrowSpriteTemplate, 184, 156, 0);
gSprites[spriteId].data[1] = 1;
gSprites[spriteId].vFlip = TRUE;
- CreateSprite(&gUnknown_0855D194, 230, 20, 0);
- CreateSprite(&gUnknown_0855D1C4, 16, 120, 0);
-
- spriteId = CreateSprite(&gUnknown_0855D1C4, 48, 120, 0);
+ CreateSprite(&sScrollBarSpriteTemplate, 230, 20, 0);
+// Start button
+ CreateSprite(&sInterfaceTextSpriteTemplate, 16, 120, 0);
+// Menu text
+ spriteId = CreateSprite(&sInterfaceTextSpriteTemplate, 48, 120, 0);
StartSpriteAnim(&gSprites[spriteId], 3);
-
- spriteId = CreateSprite(&gUnknown_0855D1C4, 16, 144, 0);
+// Select button
+ spriteId = CreateSprite(&sInterfaceTextSpriteTemplate, 16, 144, 0);
StartSpriteAnim(&gSprites[spriteId], 2);
gSprites[spriteId].data[2] = 0x80;
-
- spriteId = CreateSprite(&gUnknown_0855D1C4, 48, 144, 0);
+// Search text
+ spriteId = CreateSprite(&sInterfaceTextSpriteTemplate, 48, 144, 0);
StartSpriteAnim(&gSprites[spriteId], 1);
- spriteId = CreateSprite(&gUnknown_0855D1DC, 0, 80, 2);
+ spriteId = CreateSprite(&sRotatingPokeballSpriteTemplate, 0, 80, 2);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 30;
gSprites[spriteId].data[0] = 0x1E;
gSprites[spriteId].data[1] = 0;
- spriteId = CreateSprite(&gUnknown_0855D1DC, 0, 80, 2);
+ spriteId = CreateSprite(&sRotatingPokeballSpriteTemplate, 0, 80, 2);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 31;
gSprites[spriteId].data[0] = 0x1F;
@@ -2112,58 +2525,59 @@ void sub_80BDB7C(u8 a)
if (!IsNationalPokedexEnabled())
{
- CreateSprite(&gUnknown_0855D1F4, 32, 40, 1);
-
- spriteId = CreateSprite(&gUnknown_0855D1F4, 32, 72, 1);
+// Seen text
+ CreateSprite(&sSeenOwnTextSpriteTemplate, 32, 40, 1);
+// Own text
+ spriteId = CreateSprite(&sSeenOwnTextSpriteTemplate, 32, 72, 1);
StartSpriteAnim(&gSprites[spriteId], 1);
_a = 0;
-
+// Seen value - 100s
spriteId = CreateSprite(&gUnknown_0855D224, 24, 48, 1);
- r5 = gUnknown_02039B4C->unk61A / 100;
+ r5 = sPokedexView->seenCount / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
if (r5 != 0)
_a = 1;
else
gSprites[spriteId].invisible = TRUE;
-
+// Seen value - 10s
spriteId = CreateSprite(&gUnknown_0855D224, 32, 48, 1);
- r5 = (gUnknown_02039B4C->unk61A % 100) / 10;
+ r5 = (sPokedexView->seenCount % 100) / 10;
if (r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = TRUE;
-
+// Seen value - 1s
spriteId = CreateSprite(&gUnknown_0855D224, 40, 48, 1);
- r5 = (gUnknown_02039B4C->unk61A % 100) % 10;
+ r5 = (sPokedexView->seenCount % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
_a = 0;
-
+// Owned value - 100s
spriteId = CreateSprite(&gUnknown_0855D224, 24, 80, 1);
- r5 = gUnknown_02039B4C->unk61C / 100;
+ r5 = sPokedexView->ownCount / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
if (r5 != 0)
_a = 1;
else
gSprites[spriteId].invisible = TRUE;
-
+// Owned value - 10s
spriteId = CreateSprite(&gUnknown_0855D224, 32, 80, 1);
- r5 = (gUnknown_02039B4C->unk61C % 100) / 10;
+ r5 = (sPokedexView->ownCount % 100) / 10;
if (r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = TRUE;
-
+// Owned value -1s
spriteId = CreateSprite(&gUnknown_0855D224, 40, 80, 1);
- r5 = (gUnknown_02039B4C->unk61C % 100) % 10;
+ r5 = (sPokedexView->ownCount % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
}
else
{
u16 r6;
- CreateSprite(&gUnknown_0855D1F4, 32, 40, 1);
+ CreateSprite(&sSeenOwnTextSpriteTemplate, 32, 40, 1);
- spriteId = CreateSprite(&gUnknown_0855D1F4, 32, 76, 1);
+ spriteId = CreateSprite(&sSeenOwnTextSpriteTemplate, 32, 76, 1);
StartSpriteAnim(&gSprites[spriteId], 1);
CreateSprite(&gUnknown_0855D20C, 17, 45, 1);
@@ -2201,7 +2615,7 @@ void sub_80BDB7C(u8 a)
_a = 0;
spriteId = CreateSprite(&gUnknown_0855D23C, 40, 55, 1);
- r5 = gUnknown_02039B4C->unk61A / 100;
+ r5 = sPokedexView->seenCount / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
if (r5 != 0)
_a = 1;
@@ -2209,14 +2623,14 @@ void sub_80BDB7C(u8 a)
gSprites[spriteId].invisible = TRUE;
spriteId = CreateSprite(&gUnknown_0855D23C, 48, 55, 1);
- r5 = (gUnknown_02039B4C->unk61A % 100) / 10;
+ r5 = (sPokedexView->seenCount % 100) / 10;
if (r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = TRUE;
spriteId = CreateSprite(&gUnknown_0855D23C, 56, 55, 1);
- r5 = (gUnknown_02039B4C->unk61A % 100) % 10;
+ r5 = (sPokedexView->seenCount % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
r6 = GetHoennPokedexCount(1);
@@ -2244,7 +2658,7 @@ void sub_80BDB7C(u8 a)
_a = 0;
spriteId = CreateSprite(&gUnknown_0855D23C, 40, 91, 1);
- r5 = gUnknown_02039B4C->unk61C / 100;
+ r5 = sPokedexView->ownCount / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
if (r5 != 0)
_a = 1;
@@ -2252,14 +2666,14 @@ void sub_80BDB7C(u8 a)
gSprites[spriteId].invisible = TRUE;
spriteId = CreateSprite(&gUnknown_0855D23C, 48, 91, 1);
- r5 = (gUnknown_02039B4C->unk61C % 100) / 10;
+ r5 = (sPokedexView->ownCount % 100) / 10;
if (r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = TRUE;
spriteId = CreateSprite(&gUnknown_0855D23C, 56, 91, 1);
- r5 = (gUnknown_02039B4C->unk61C % 100) % 10;
+ r5 = (sPokedexView->ownCount % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
}
spriteId = CreateSprite(&gUnknown_0855D254, 136, 96, 1);
@@ -2278,7 +2692,7 @@ void nullsub_38(struct Sprite *sprite)
void sub_80BE44C(struct Sprite *sprite)
{
- if (gUnknown_02039B4C->unk64A != 0)
+ if (sPokedexView->unk64A != 0)
DestroySprite(sprite);
}
@@ -2311,10 +2725,10 @@ void sub_80BE4E0(struct Sprite *sprite)
{
u8 data1 = sprite->data[1];
- if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
+ if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
{
- FreeAndDestroyMonPicSprite(gUnknown_02039B4C->unk61E[data1]);
- gUnknown_02039B4C->unk61E[data1] = 0xFFFF;
+ FreeAndDestroyMonPicSprite(sPokedexView->unk61E[data1]);
+ sPokedexView->unk61E[data1] = 0xFFFF;
}
else
{
@@ -2339,23 +2753,23 @@ void sub_80BE4E0(struct Sprite *sprite)
if ((sprite->data[5] <= -64 || sprite->data[5] >= 64) && sprite->data[0] != 0)
{
- FreeAndDestroyMonPicSprite(gUnknown_02039B4C->unk61E[data1]);
- gUnknown_02039B4C->unk61E[data1] = 0xFFFF;
+ FreeAndDestroyMonPicSprite(sPokedexView->unk61E[data1]);
+ sPokedexView->unk61E[data1] = 0xFFFF;
}
}
}
-void sub_80BE604(struct Sprite *sprite)
+static void SpriteCB_Scrollbar(struct Sprite *sprite)
{
- if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
+ if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
DestroySprite(sprite);
else
- sprite->pos2.y = gUnknown_02039B4C->selectedPokemon * 120 / (gUnknown_02039B4C->pokemonListCount - 1);
+ sprite->pos2.y = sPokedexView->selectedPokemon * 120 / (sPokedexView->pokemonListCount - 1);
}
void sub_80BE658(struct Sprite *sprite)
{
- if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
+ if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
{
DestroySprite(sprite);
}
@@ -2365,7 +2779,7 @@ void sub_80BE658(struct Sprite *sprite)
if (sprite->data[1] != 0)
{
- if (gUnknown_02039B4C->selectedPokemon == gUnknown_02039B4C->pokemonListCount - 1)
+ if (sPokedexView->selectedPokemon == sPokedexView->pokemonListCount - 1)
sprite->invisible = TRUE;
else
sprite->invisible = FALSE;
@@ -2373,7 +2787,7 @@ void sub_80BE658(struct Sprite *sprite)
}
else
{
- if (gUnknown_02039B4C->selectedPokemon == 0)
+ if (sPokedexView->selectedPokemon == 0)
sprite->invisible = TRUE;
else
sprite->invisible = FALSE;
@@ -2381,7 +2795,7 @@ void sub_80BE658(struct Sprite *sprite)
}
sprite->pos2.y = gSineTable[r0] / 64;
sprite->data[2] = sprite->data[2] + 8;
- if (gUnknown_02039B4C->menuIsOpen == 0 && gUnknown_02039B4C->menuY == 0 && sprite->invisible == 0)
+ if (sPokedexView->menuIsOpen == 0 && sPokedexView->menuY == 0 && sprite->invisible == 0)
sprite->invisible = FALSE;
else
sprite->invisible = TRUE;
@@ -2390,13 +2804,13 @@ void sub_80BE658(struct Sprite *sprite)
void sub_80BE758(struct Sprite *sprite)
{
- if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
+ if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
DestroySprite(sprite);
}
void sub_80BE780(struct Sprite *sprite)
{
- if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
+ if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
{
DestroySprite(sprite);
}
@@ -2406,12 +2820,12 @@ void sub_80BE780(struct Sprite *sprite)
s16 r3;
s16 r0;
- val = gUnknown_02039B4C->unk62C + sprite->data[1];
+ val = sPokedexView->unk62C + sprite->data[1];
r3 = gSineTable[val];
r0 = gSineTable[val + 0x40];
SetOamMatrix(sprite->data[0], r0, r3, -r3, r0);
- val = gUnknown_02039B4C->unk62C + (sprite->data[1] + 0x40);
+ val = sPokedexView->unk62C + (sprite->data[1] + 0x40);
r3 = gSineTable[val];
r0 = gSineTable[val + 0x40];
sprite->pos2.x = r0 * 40 / 256;
@@ -2421,18 +2835,18 @@ void sub_80BE780(struct Sprite *sprite)
void sub_80BE834(struct Sprite *sprite)
{
- if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
+ if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
{
DestroySprite(sprite);
}
else
{
- u16 r1 = gUnknown_02039B4C->unk64A == 0 ? 80 : 96;
+ u16 r1 = sPokedexView->unk64A == 0 ? 80 : 96;
- if (gUnknown_02039B4C->menuIsOpen != 0 && gUnknown_02039B4C->menuY == r1)
+ if (sPokedexView->menuIsOpen != 0 && sPokedexView->menuY == r1)
{
sprite->invisible = FALSE;
- sprite->pos2.y = gUnknown_02039B4C->menuCursorPos * 16;
+ sprite->pos2.y = sPokedexView->menuCursorPos * 16;
sprite->pos2.x = gSineTable[(u8)sprite->data[2]] / 64;
sprite->data[2] += 8;
}
@@ -2457,7 +2871,7 @@ u8 sub_80BE91C(struct PokedexListItem* item, u8 b)
{
u8 taskId;
- gUnknown_02039B54 = item;
+ sPokedexListItem = item;
taskId = CreateTask(sub_80BEA24, 0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 1;
@@ -2487,7 +2901,7 @@ bool8 sub_80BE9C4(u8 taskId)
u8 sub_80BE9F8(struct PokedexListItem *item, u8 b)
{
- gUnknown_02039B54 = item;
+ sPokedexListItem = item;
gTasks[b].data[0] = 1;
gTasks[b].data[1] = 0;
gTasks[b].data[2] = 0;
@@ -2505,7 +2919,7 @@ void sub_80BEA24(u8 taskId)
{
u16 r2;
- gUnknown_02039B4C->unk64A = 1;
+ sPokedexView->unk64A = 1;
gUnknown_030060B4 = gMain.vblankCallback;
SetVBlankCallback(NULL);
r2 = 0;
@@ -2519,26 +2933,26 @@ void sub_80BEA24(u8 taskId)
break;
case 1:
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
- CopyToBgTilemapBuffer(3, gUnknown_08DC3080, 0, 0);
+ CopyToBgTilemapBuffer(3, gPokedexTilemap_DescriptionScreen, 0, 0);
FillWindowPixelBuffer(0, 0);
PutWindowTilemap(0);
PutWindowTilemap(1);
- sub_80C0D30(1, gUnknown_02039B54->dexNum);
+ sub_80C0D30(1, sPokedexListItem->dexNum);
CopyWindowToVram(1, 2);
gMain.state++;
break;
case 2:
sub_80BFCDC(0xD);
- sub_80BFD0C(gUnknown_02039B4C->selectedScreen, 0xD);
- sub_80BC844(gUnknown_02039B4C->unk64C_1);
+ sub_80BFD0C(sPokedexView->selectedScreen, 0xD);
+ LoadPokedexBgPalette(sPokedexView->unk64C_1);
gMain.state++;
break;
case 3:
gMain.state++;
break;
case 4:
- sub_80C020C(gUnknown_02039B54->dexNum, gUnknown_02039B4C->dexMode == 0 ? 0 : 1, gUnknown_02039B54->owned, 0);
- if (!gUnknown_02039B54->owned)
+ sub_80C020C(sPokedexListItem->dexNum, sPokedexView->dexMode == 0 ? 0 : 1, sPokedexListItem->owned, 0);
+ if (!sPokedexListItem->owned)
LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E);
CopyWindowToVram(0, 3);
CopyBgTilemapBufferToVram(1);
@@ -2549,7 +2963,7 @@ void sub_80BEA24(u8 taskId)
case 5:
if (gTasks[taskId].data[1] == 0)
{
- gTasks[taskId].data[4] = (u16)sub_80C0E9C(gUnknown_02039B54->dexNum, 0x30, 0x38, 0);
+ gTasks[taskId].data[4] = (u16)sub_80C0E9C(sPokedexListItem->dexNum, 0x30, 0x38, 0);
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
}
gMain.state++;
@@ -2585,7 +2999,7 @@ void sub_80BEA24(u8 taskId)
if (gTasks[taskId].data[3] == 0)
{
StopCryAndClearCrySongs();
- PlayCry2(NationalPokedexNumToSpecies(gUnknown_02039B54->dexNum), 0, 0x7D, 0xA);
+ PlayCry2(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), 0, 0x7D, 0xA);
}
else
{
@@ -2644,29 +3058,29 @@ void sub_80BEDF4(u8 taskId)
}
if (gMain.newKeys & A_BUTTON)
{
- switch (gUnknown_02039B4C->selectedScreen)
+ switch (sPokedexView->selectedScreen)
{
case AREA_SCREEN:
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB_BLACK);
- gUnknown_02039B4C->unk64E = 1;
+ sPokedexView->unk64E = 1;
gTasks[taskId].func = sub_80BEFD0;
PlaySE(SE_PIN);
break;
case CRY_SCREEN:
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
- gUnknown_02039B4C->unk64E = 2;
+ sPokedexView->unk64E = 2;
gTasks[taskId].func = sub_80BEFD0;
PlaySE(SE_PIN);
break;
case SIZE_SCREEN:
- if (!gUnknown_02039B54->owned)
+ if (!sPokedexListItem->owned)
{
PlaySE(SE_HAZURE);
}
else
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
- gUnknown_02039B4C->unk64E = 3;
+ sPokedexView->unk64E = 3;
gTasks[taskId].func = sub_80BEFD0;
PlaySE(SE_PIN);
}
@@ -2681,19 +3095,19 @@ void sub_80BEDF4(u8 taskId)
}
if (((gMain.newKeys & DPAD_LEFT)
|| ((gMain.newKeys & L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
- && gUnknown_02039B4C->selectedScreen > 0)
+ && sPokedexView->selectedScreen > 0)
{
- gUnknown_02039B4C->selectedScreen--;
- sub_80BFD0C(gUnknown_02039B4C->selectedScreen, 0xD);
+ sPokedexView->selectedScreen--;
+ sub_80BFD0C(sPokedexView->selectedScreen, 0xD);
PlaySE(SE_Z_PAGE);
return;
}
if (((gMain.newKeys & DPAD_RIGHT)
|| ((gMain.newKeys & R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
- && gUnknown_02039B4C->selectedScreen < 3)
+ && sPokedexView->selectedScreen < 3)
{
- gUnknown_02039B4C->selectedScreen++;
- sub_80BFD0C(gUnknown_02039B4C->selectedScreen, 0xD);
+ sPokedexView->selectedScreen++;
+ sub_80BFD0C(sPokedexView->selectedScreen, 0xD);
PlaySE(SE_Z_PAGE);
return;
}
@@ -2704,7 +3118,7 @@ void sub_80BEFD0(u8 taskId)
if (!gPaletteFade.active)
{
FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]);
- switch (gUnknown_02039B4C->unk64E)
+ switch (sPokedexView->unk64E)
{
case 1:
default:
@@ -2747,25 +3161,25 @@ void sub_80BF0AC(u8 taskId)
default:
if (!gPaletteFade.active)
{
- gUnknown_02039B4C->unk64A = 5;
+ sPokedexView->unk64A = 5;
gUnknown_030060B4 = gMain.vblankCallback;
SetVBlankCallback(NULL);
sub_80C09B0(0x200);
- gUnknown_02039B4C->selectedScreen = AREA_SCREEN;
+ sPokedexView->selectedScreen = AREA_SCREEN;
gMain.state = 1;
}
break;
case 1:
sub_80BFCF4(0xD);
sub_80BFD7C(0, 0xD);
- sub_80BC844(gUnknown_02039B4C->unk64C_1);
+ LoadPokedexBgPalette(sPokedexView->unk64C_1);
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256);
gMain.state++;
break;
case 2:
- sub_813D3D8(NationalPokedexNumToSpecies(gUnknown_02039B54->dexNum), &gUnknown_02039B4C->unk64E);
+ ShowPokedexAreaScreen(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), &sPokedexView->unk64E);
SetVBlankCallback(gUnknown_030060B4);
- gUnknown_02039B4C->unk64E = 0;
+ sPokedexView->unk64E = 0;
gMain.state = 0;
gTasks[taskId].func = sub_80BF1B4;
break;
@@ -2774,7 +3188,7 @@ void sub_80BF0AC(u8 taskId)
void sub_80BF1B4(u8 taskId)
{
- if (gUnknown_02039B4C->unk64E != 0)
+ if (sPokedexView->unk64E != 0)
gTasks[taskId].func = sub_80BF1EC;
}
@@ -2782,7 +3196,7 @@ void sub_80BF1EC(u8 taskId)
{
if (!gPaletteFade.active)
{
- switch (gUnknown_02039B4C->unk64E)
+ switch (sPokedexView->unk64E)
{
case 1:
default:
@@ -2804,17 +3218,17 @@ void sub_80BF250(u8 taskId)
if (!gPaletteFade.active)
{
m4aMPlayStop(&gMPlayInfo_BGM);
- gUnknown_02039B4C->unk64A = 6;
+ sPokedexView->unk64A = 6;
gUnknown_030060B4 = gMain.vblankCallback;
SetVBlankCallback(NULL);
sub_80C09B0(0x200);
- gUnknown_02039B4C->selectedScreen = CRY_SCREEN;
+ sPokedexView->selectedScreen = CRY_SCREEN;
gMain.state = 1;
}
break;
case 1:
DecompressAndLoadBgGfxUsingHeap(3, &gPokedexMenu_Gfx, 0x2000, 0, 0);
- CopyToBgTilemapBuffer(3, &gUnknown_08DC3198, 0, 0);
+ CopyToBgTilemapBuffer(3, &gPokedexTilemap_CryScreen, 0, 0);
FillWindowPixelBuffer(0, 0);
PutWindowTilemap(0);
PutWindowTilemap(3);
@@ -2824,7 +3238,7 @@ void sub_80BF250(u8 taskId)
case 2:
sub_80BFCF4(0xD);
sub_80BFD7C(1, 0xD);
- sub_80BC844(gUnknown_02039B4C->unk64C_1);
+ LoadPokedexBgPalette(sPokedexView->unk64C_1);
gMain.state++;
break;
case 3:
@@ -2833,13 +3247,13 @@ void sub_80BF250(u8 taskId)
break;
case 4:
sub_80BE8DC(gText_CryOf, 0x52, 33);
- sub_80C0B44(0, gUnknown_02039B54->dexNum, 0x52, 49);
+ sub_80C0B44(0, sPokedexListItem->dexNum, 0x52, 49);
gMain.state++;
break;
case 5:
- gTasks[taskId].data[4] = sub_80C0E9C(gUnknown_02039B54->dexNum, 48, 56, 0);
+ gTasks[taskId].data[4] = sub_80C0E9C(sPokedexListItem->dexNum, 48, 56, 0);
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
- gUnknown_030061EC = 0;
+ gDexCryScreenState = 0;
gMain.state++;
break;
case 6:
@@ -2854,7 +3268,7 @@ void sub_80BF250(u8 taskId)
if (sub_8145354(&sp4, 2) != 0)
{
gMain.state++;
- gUnknown_030061EC = 0;
+ gDexCryScreenState = 0;
}
}
break;
@@ -2892,7 +3306,7 @@ void sub_80BF250(u8 taskId)
gMain.state++;
break;
case 10:
- gUnknown_02039B4C->unk64E = 0;
+ sPokedexView->unk64E = 0;
gMain.state = 0;
gTasks[taskId].func = sub_80BF5CC;
break;
@@ -2911,7 +3325,7 @@ void sub_80BF5CC(u8 taskId)
if (gMain.newKeys & A_BUTTON)
{
sub_80BF7FC(1);
- sub_8145534(NationalPokedexNumToSpecies(gUnknown_02039B54->dexNum));
+ sub_8145534(NationalPokedexNumToSpecies(sPokedexListItem->dexNum));
return;
}
else if (!gPaletteFade.active)
@@ -2920,7 +3334,7 @@ void sub_80BF5CC(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
m4aMPlayContinue(&gMPlayInfo_BGM);
- gUnknown_02039B4C->unk64E = 1;
+ sPokedexView->unk64E = 1;
gTasks[taskId].func = sub_80BF790;
PlaySE(SE_PC_OFF);
return;
@@ -2930,7 +3344,7 @@ void sub_80BF5CC(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
m4aMPlayContinue(&gMPlayInfo_BGM);
- gUnknown_02039B4C->unk64E = 2;
+ sPokedexView->unk64E = 2;
gTasks[taskId].func = sub_80BF790;
PlaySE(SE_Z_PAGE);
return;
@@ -2938,7 +3352,7 @@ void sub_80BF5CC(u8 taskId)
if ((gMain.newKeys & DPAD_RIGHT)
|| ((gMain.newKeys & R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
- if (!gUnknown_02039B54->owned)
+ if (!sPokedexListItem->owned)
{
PlaySE(SE_HAZURE);
}
@@ -2946,7 +3360,7 @@ void sub_80BF5CC(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
m4aMPlayContinue(&gMPlayInfo_BGM);
- gUnknown_02039B4C->unk64E = 3;
+ sPokedexView->unk64E = 3;
gTasks[taskId].func = sub_80BF790;
PlaySE(SE_Z_PAGE);
}
@@ -2961,7 +3375,7 @@ void sub_80BF790(u8 taskId)
{
sub_8145914();
FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]);
- switch (gUnknown_02039B4C->unk64E)
+ switch (sPokedexView->unk64E)
{
default:
case 1:
@@ -2998,17 +3412,17 @@ void sub_80BF82C(u8 taskId)
case 0:
if (!gPaletteFade.active)
{
- gUnknown_02039B4C->unk64A = 7;
+ sPokedexView->unk64A = 7;
gUnknown_030060B4 = gMain.vblankCallback;
SetVBlankCallback(NULL);
sub_80C09B0(0x200);
- gUnknown_02039B4C->selectedScreen = SIZE_SCREEN;
+ sPokedexView->selectedScreen = SIZE_SCREEN;
gMain.state = 1;
}
break;
case 1:
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
- CopyToBgTilemapBuffer(3, gUnknown_08DC2E6C, 0, 0);
+ CopyToBgTilemapBuffer(3, gPokedexTilemap_SizeScreen, 0, 0);
FillWindowPixelBuffer(0, 0);
PutWindowTilemap(0);
gMain.state++;
@@ -3016,7 +3430,7 @@ void sub_80BF82C(u8 taskId)
case 2:
sub_80BFCF4(0xD);
sub_80BFD7C(2, 0xD);
- sub_80BC844(gUnknown_02039B4C->unk64C_1);
+ LoadPokedexBgPalette(sPokedexView->unk64C_1);
gMain.state++;
break;
case 3:
@@ -3038,19 +3452,19 @@ void sub_80BF82C(u8 taskId)
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 1;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_02039B54->dexNum].trainerOffset;
- SetOamMatrix(1, gPokedexEntries[gUnknown_02039B54->dexNum].trainerScale, 0, 0, gPokedexEntries[gUnknown_02039B54->dexNum].trainerScale);
+ gSprites[spriteId].pos2.y = gPokedexEntries[sPokedexListItem->dexNum].trainerOffset;
+ SetOamMatrix(1, gPokedexEntries[sPokedexListItem->dexNum].trainerScale, 0, 0, gPokedexEntries[sPokedexListItem->dexNum].trainerScale);
LoadPalette(gUnknown_0856E610, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
gTasks[taskId].data[5] = spriteId;
gMain.state++;
break;
case 6:
- spriteId = sub_80C0E9C(gUnknown_02039B54->dexNum, 88, 56, 1);
+ spriteId = sub_80C0E9C(sPokedexListItem->dexNum, 88, 56, 1);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 2;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_02039B54->dexNum].pokemonOffset;
- SetOamMatrix(2, gPokedexEntries[gUnknown_02039B54->dexNum].pokemonScale, 0, 0, gPokedexEntries[gUnknown_02039B54->dexNum].pokemonScale);
+ gSprites[spriteId].pos2.y = gPokedexEntries[sPokedexListItem->dexNum].pokemonOffset;
+ SetOamMatrix(2, gPokedexEntries[sPokedexListItem->dexNum].pokemonScale, 0, 0, gPokedexEntries[sPokedexListItem->dexNum].pokemonScale);
LoadPalette(gUnknown_0856E610, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
gTasks[taskId].data[4] = spriteId;
CopyWindowToVram(0, 3);
@@ -3078,7 +3492,7 @@ void sub_80BF82C(u8 taskId)
case 9:
if (!gPaletteFade.active)
{
- gUnknown_02039B4C->unk64E = 0;
+ sPokedexView->unk64E = 0;
gMain.state = 0;
gTasks[taskId].func = sub_80BFBB0;
}
@@ -3091,7 +3505,7 @@ void sub_80BFBB0(u8 taskId)
if (gMain.newKeys & B_BUTTON)
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
- gUnknown_02039B4C->unk64E = 1;
+ sPokedexView->unk64E = 1;
gTasks[taskId].func = sub_80BFC78;
PlaySE(SE_PC_OFF);
}
@@ -3099,7 +3513,7 @@ void sub_80BFBB0(u8 taskId)
|| ((gMain.newKeys & L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
- gUnknown_02039B4C->unk64E = 2;
+ sPokedexView->unk64E = 2;
gTasks[taskId].func = sub_80BFC78;
PlaySE(SE_Z_PAGE);
}
@@ -3111,7 +3525,7 @@ void sub_80BFC78(u8 taskId)
{
FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]);
FreeAndDestroyTrainerPicSprite(gTasks[taskId].data[5]);
- switch (gUnknown_02039B4C->unk64E)
+ switch (sPokedexView->unk64E)
{
default:
case 1:
@@ -3126,12 +3540,12 @@ void sub_80BFC78(u8 taskId)
void sub_80BFCDC(u16 a)
{
- CopyToBgTilemapBuffer(1, gUnknown_08DC2F5C, 0, 0);
+ CopyToBgTilemapBuffer(1, gPokedexTilemap_ScreenSelectBar1, 0, 0);
}
void sub_80BFCF4(u16 a)
{
- CopyToBgTilemapBuffer(1, gUnknown_08DC2FEC, 0, 0);
+ CopyToBgTilemapBuffer(1, gPokedexTilemap_ScreenSelectBar2, 0, 0);
}
#ifdef NONMATCHING
@@ -3355,14 +3769,14 @@ void sub_80BFE38(u8 taskId)
break;
case 1:
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
- CopyToBgTilemapBuffer(3, gUnknown_08DC3080, 0, 0);
+ CopyToBgTilemapBuffer(3, gPokedexTilemap_DescriptionScreen, 0, 0);
FillWindowPixelBuffer(0, 0);
PutWindowTilemap(0);
PutWindowTilemap(1);
sub_80C0D30(1, gTasks[taskId].data[1]);
CopyWindowToVram(1, 2);
ResetPaletteFade();
- sub_80BC844(0);
+ LoadPokedexBgPalette(0);
gTasks[taskId].data[0]++;
break;
case 2:
@@ -3429,7 +3843,7 @@ void blockset_load_palette_to_gpu(u8 taskId)
u32 otId;
u32 personality;
u8 paletteNum;
- const u8 *lzPaletteData;
+ const u32 *lzPaletteData;
void *buffer;
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
@@ -3512,7 +3926,7 @@ void sub_80C020C(u32 num, u32 value, u32 c, u32 d)
if (c)
text3 = gPokedexEntries[num].description;
else
- text3 = gUnknown_0855D30C;
+ text3 = gExpandedPlaceholder_PokedexDescription;
sub_80BE8DC(text3, GetStringCenterAlignXOffset(1, text3, 0xF0), 0x5F);
}
@@ -4251,71 +4665,71 @@ int sub_80C0F30(u8 dexMode, u8 sortMode, u8 abcGroup, u8 bodyColor, u8 type1, u8
for (i = 0, resultsCount = 0; i < NATIONAL_DEX_COUNT; i++)
{
- if (gUnknown_02039B4C->unk0[i].seen)
+ if (sPokedexView->pokedexList[i].seen)
{
- gUnknown_02039B4C->unk0[resultsCount] = gUnknown_02039B4C->unk0[i];
+ sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i];
resultsCount++;
}
}
- gUnknown_02039B4C->pokemonListCount = resultsCount;
+ sPokedexView->pokemonListCount = resultsCount;
// Search by name
if (abcGroup != 0xFF)
{
- for (i = 0, resultsCount = 0; i < gUnknown_02039B4C->pokemonListCount; i++)
+ for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++)
{
u8 r3;
- species = NationalPokedexNumToSpecies(gUnknown_02039B4C->unk0[i].dexNum);
+ species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum);
r3 = gSpeciesNames[species][0];
if ((r3 >= gUnknown_0856ED08[abcGroup][0] && r3 < gUnknown_0856ED08[abcGroup][0] + gUnknown_0856ED08[abcGroup][1])
|| (r3 >= gUnknown_0856ED08[abcGroup][2] && r3 < gUnknown_0856ED08[abcGroup][2] + gUnknown_0856ED08[abcGroup][3]))
{
- gUnknown_02039B4C->unk0[resultsCount] = gUnknown_02039B4C->unk0[i];
+ sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i];
resultsCount++;
}
}
- gUnknown_02039B4C->pokemonListCount = resultsCount;
+ sPokedexView->pokemonListCount = resultsCount;
}
// Search by body color
if (bodyColor != 0xFF)
{
- for (i = 0, resultsCount = 0; i < gUnknown_02039B4C->pokemonListCount; i++)
+ for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++)
{
- species = NationalPokedexNumToSpecies(gUnknown_02039B4C->unk0[i].dexNum);
+ species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum);
if (bodyColor == gBaseStats[species].bodyColor)
{
- gUnknown_02039B4C->unk0[resultsCount] = gUnknown_02039B4C->unk0[i];
+ sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i];
resultsCount++;
}
}
- gUnknown_02039B4C->pokemonListCount = resultsCount;
+ sPokedexView->pokemonListCount = resultsCount;
}
// Search by type
- if (type1 != 0xFF || type2 != 0xFF)
+ if (type1 != TYPE_NONE || type2 != TYPE_NONE)
{
- if (type1 == 0xFF)
+ if (type1 == TYPE_NONE)
{
type1 = type2;
- type2 = 0xFF;
+ type2 = TYPE_NONE;
}
- if (type2 == 0xFF)
+ if (type2 == TYPE_NONE)
{
- for (i = 0, resultsCount = 0; i < gUnknown_02039B4C->pokemonListCount; i++)
+ for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++)
{
- if (gUnknown_02039B4C->unk0[i].owned)
+ if (sPokedexView->pokedexList[i].owned)
{
- species = NationalPokedexNumToSpecies(gUnknown_02039B4C->unk0[i].dexNum);
+ species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum);
types[0] = gBaseStats[species].type1;
types[1] = gBaseStats[species].type2;
if (types[0] == type1 || types[1] == type1)
{
- gUnknown_02039B4C->unk0[resultsCount] = gUnknown_02039B4C->unk0[i];
+ sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i];
resultsCount++;
}
}
@@ -4323,32 +4737,32 @@ int sub_80C0F30(u8 dexMode, u8 sortMode, u8 abcGroup, u8 bodyColor, u8 type1, u8
}
else
{
- for (i = 0, resultsCount = 0; i < gUnknown_02039B4C->pokemonListCount; i++)
+ for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++)
{
- if (gUnknown_02039B4C->unk0[i].owned)
+ if (sPokedexView->pokedexList[i].owned)
{
- species = NationalPokedexNumToSpecies(gUnknown_02039B4C->unk0[i].dexNum);
+ species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum);
types[0] = gBaseStats[species].type1;
types[1] = gBaseStats[species].type2;
if ((types[0] == type1 && types[1] == type2) || (types[0] == type2 && types[1] == type1))
{
- gUnknown_02039B4C->unk0[resultsCount] = gUnknown_02039B4C->unk0[i];
+ sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i];
resultsCount++;
}
}
}
}
- gUnknown_02039B4C->pokemonListCount = resultsCount;
+ sPokedexView->pokemonListCount = resultsCount;
}
- if (gUnknown_02039B4C->pokemonListCount != 0)
+ if (sPokedexView->pokemonListCount != 0)
{
- for (i = gUnknown_02039B4C->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
+ for (i = sPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
{
- gUnknown_02039B4C->unk0[i].dexNum = 0xFFFF;
- gUnknown_02039B4C->unk0[i].seen = FALSE;
- gUnknown_02039B4C->unk0[i].owned = FALSE;
+ sPokedexView->pokedexList[i].dexNum = 0xFFFF;
+ sPokedexView->pokedexList[i].seen = FALSE;
+ sPokedexView->pokedexList[i].owned = FALSE;
}
}
@@ -4386,7 +4800,7 @@ void sub_80C12E0(u8 taskId)
case 0:
if (!gPaletteFade.active)
{
- gUnknown_02039B4C->unk64A = 2;
+ sPokedexView->unk64A = 2;
sub_80C09B0(0);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_0856EFF8, 4);
@@ -4408,8 +4822,8 @@ void sub_80C12E0(u8 taskId)
}
break;
case 1:
- LoadCompressedObjectPic(gSpriteSheets_0855D26C);
- LoadSpritePalettes(gSpritePalettes_0855D26C);
+ LoadCompressedObjectPic(sInterfaceSpriteSheet);
+ LoadSpritePalettes(sInterfaceSpritePalette);
sub_80C2594(taskId);
for (i = 0; i < 16; i++)
gTasks[taskId].data[i] = 0;
@@ -4564,15 +4978,15 @@ void sub_80C170C(u8 taskId)
if (gTasks[taskId].data[0] != 0)
{
gUnknown_02039B52 = 0x40;
- gUnknown_02039B4C->unk62A = 0x40;
+ sPokedexView->unk62A = 0x40;
gUnknown_02039B50 = 0;
- gUnknown_02039B4C->unk610 = 0;
+ sPokedexView->unk610 = 0;
gSaveBlock2Ptr->pokedex.unknown1 = sub_80C2318(taskId, 5);
if (!IsNationalPokedexEnabled())
gSaveBlock2Ptr->pokedex.unknown1 = 0;
- gUnknown_02039B4C->unk614 = gSaveBlock2Ptr->pokedex.unknown1;
+ sPokedexView->unk614 = gSaveBlock2Ptr->pokedex.unknown1;
gSaveBlock2Ptr->pokedex.order = sub_80C2318(taskId, 4);
- gUnknown_02039B4C->unk618 = gSaveBlock2Ptr->pokedex.order;
+ sPokedexView->unk618 = gSaveBlock2Ptr->pokedex.order;
PlaySE(SE_PC_OFF);
gTasks[taskId].func = sub_80C1D38;
}
@@ -4643,7 +5057,7 @@ void sub_80C1A4C(u8 taskId)
{
if (!IsSEPlaying())
{
- if (gUnknown_02039B4C->pokemonListCount != 0)
+ if (sPokedexView->pokemonListCount != 0)
{
PlaySE(SE_SEIKAI);
sub_80C2618(gText_SearchCompleted);
@@ -4662,11 +5076,11 @@ void sub_80C1AB8(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
- if (gUnknown_02039B4C->pokemonListCount != 0)
+ if (sPokedexView->pokemonListCount != 0)
{
- gUnknown_02039B4C->unk64E = 1;
- gUnknown_02039B4C->dexMode = sub_80C2318(taskId, 5);
- gUnknown_02039B4C->dexOrder = sub_80C2318(taskId, 4);
+ sPokedexView->unk64E = 1;
+ sPokedexView->dexMode = sub_80C2318(taskId, 5);
+ sPokedexView->dexOrder = sub_80C2318(taskId, 4);
gTasks[taskId].func = sub_80C1D38;
PlaySE(SE_PC_OFF);
}
@@ -4700,14 +5114,14 @@ void sub_80C1B64(u8 taskId)
void sub_80C1BCC(u8 taskId)
{
u8 r1;
- const struct UnknownStruct2 *r8;
+ const struct PokedexOption *r8;
u16 *p1;
u16 *p2;
u16 r2;
bool8 r3;
r1 = gTasks[taskId].data[1];
- r8 = gUnknown_0856EFC8[r1].unk0;
+ r8 = gUnknown_0856EFC8[r1].pokedexList;
p1 = &gTasks[taskId].data[gUnknown_0856EFC8[r1].unk4];
p2 = &gTasks[taskId].data[gUnknown_0856EFC8[r1].unk5];
r2 = gUnknown_0856EFC8[r1].unk6 - 1;
@@ -4753,7 +5167,7 @@ void sub_80C1BCC(u8 taskId)
if (r3)
{
PlaySE(SE_SELECT);
- sub_80C2618(r8[*p1 + *p2].text1);
+ sub_80C2618(r8[*p1 + *p2].description);
CopyWindowToVram(0, 2);
}
return;
@@ -4777,7 +5191,7 @@ void sub_80C1BCC(u8 taskId)
if (r3)
{
PlaySE(SE_SELECT);
- sub_80C2618(r8[*p1 + *p2].text1);
+ sub_80C2618(r8[*p1 + *p2].description);
CopyWindowToVram(0, 2);
}
return;
@@ -4996,24 +5410,24 @@ void sub_80C20F8(u8 taskId)
sub_80C12B0(0x28, 0x10, 0x60, 0x50);
var = gTasks[taskId].data[6] + gTasks[taskId].data[7];
- sub_80C1270(gUnknown_0856EE5C[var].text2, 0x2D, 0x11);
+ sub_80C1270(gDexSearchAlphaOptions[var].title, 0x2D, 0x11);
var = gTasks[taskId].data[8] + gTasks[taskId].data[9];
- sub_80C1270(gUnknown_0856EEB4[var].text2, 0x2D, 0x21);
+ sub_80C1270(gDexSearchColorOptions[var].title, 0x2D, 0x21);
var = gTasks[taskId].data[10] + gTasks[taskId].data[11];
- sub_80C1270(gUnknown_0856EF14[var].text2, 0x2D, 0x31);
+ sub_80C1270(gDexSearchTypeOptions[var].title, 0x2D, 0x31);
var = gTasks[taskId].data[12] + gTasks[taskId].data[13];
- sub_80C1270(gUnknown_0856EF14[var].text2, 0x5D, 0x31);
+ sub_80C1270(gDexSearchTypeOptions[var].title, 0x5D, 0x31);
var = gTasks[taskId].data[4] + gTasks[taskId].data[5];
- sub_80C1270(gUnknown_0856EE24[var].text2, 0x2D, 0x41);
+ sub_80C1270(gDexSortOptions[var].title, 0x2D, 0x41);
if (IsNationalPokedexEnabled())
{
var = gTasks[taskId].data[2] + gTasks[taskId].data[3];
- sub_80C1270(gUnknown_0856EE0C[var].text2, 0x2D, 0x51);
+ sub_80C1270(gDexModeOptions[var].title, 0x2D, 0x51);
}
}
@@ -5052,45 +5466,45 @@ void sub_80C21D4(u8 a)
void sub_80C2294(u8 taskId)
{
- const struct UnknownStruct2 *r6 = gUnknown_0856EFC8[gTasks[taskId].data[1]].unk0;
+ const struct PokedexOption *r6 = gUnknown_0856EFC8[gTasks[taskId].data[1]].pokedexList;
const u16 *r8 = &gTasks[taskId].data[gUnknown_0856EFC8[gTasks[taskId].data[1]].unk4];
const u16 *r7 = &gTasks[taskId].data[gUnknown_0856EFC8[gTasks[taskId].data[1]].unk5];
u16 i;
u16 j;
sub_80C267C();
- for (i = 0, j = *r7; i < 6 && r6[j].text2 != NULL; i++, j++)
- sub_80C2668(i, r6[j].text2);
- sub_80C2618(r6[*r8 + *r7].text1);
+ for (i = 0, j = *r7; i < 6 && r6[j].title != NULL; i++, j++)
+ sub_80C2668(i, r6[j].title);
+ sub_80C2618(r6[*r8 + *r7].description);
}
u8 sub_80C2318(u8 taskId, u8 b)
{
const u16 *ptr1 = &gTasks[taskId].data[gUnknown_0856EFC8[b].unk4];
const u16 *ptr2 = &gTasks[taskId].data[gUnknown_0856EFC8[b].unk5];
- u16 r2 = *ptr1 + *ptr2;
+ u16 type = *ptr1 + *ptr2;
switch (b)
{
default:
return 0;
case 5:
- return gUnknown_0856EFAC[r2];
+ return gUnknown_0856EFAC[type];
case 4:
- return gUnknown_0856EFAE[r2];
+ return gUnknown_0856EFAE[type];
case 0:
- if (r2 == 0)
+ if (type == 0)
return 0xFF;
else
- return r2;
+ return type;
case 1:
- if (r2 == 0)
+ if (type == 0)
return 0xFF;
else
- return r2 - 1;
+ return type - 1;
case 2:
case 3:
- return gUnknown_0856EFB4[r2];
+ return gDexSearchTypeIds[type];
}
}
@@ -5098,7 +5512,7 @@ void sub_80C23B8(u8 taskId)
{
u16 r3;
- switch (gUnknown_02039B4C->unk614)
+ switch (sPokedexView->unk614)
{
default:
case 0:
@@ -5110,7 +5524,7 @@ void sub_80C23B8(u8 taskId)
}
gTasks[taskId].data[2] = r3;
- switch (gUnknown_02039B4C->unk618)
+ switch (sPokedexView->unk618)
{
default:
case 0:
@@ -5193,12 +5607,12 @@ void sub_80C2594(u8 taskId)
{
u8 spriteId;
- spriteId = CreateSprite(&gUnknown_0855D1AC, 184, 4, 0);
+ spriteId = CreateSprite(&sArrowSpriteTemplate, 184, 4, 0);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = 0;
gSprites[spriteId].callback = sub_80C24E0;
- spriteId = CreateSprite(&gUnknown_0855D1AC, 184, 108, 0);
+ spriteId = CreateSprite(&sArrowSpriteTemplate, 184, 108, 0);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = 1;
gSprites[spriteId].vFlip = TRUE;
diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c
new file mode 100755
index 000000000..843812723
--- /dev/null
+++ b/src/pokedex_area_screen.c
@@ -0,0 +1,720 @@
+#include "global.h"
+#include "bg.h"
+#include "event_data.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "main.h"
+#include "malloc.h"
+#include "menu.h"
+#include "overworld.h"
+#include "palette.h"
+#include "pokedex_area_screen.h"
+#include "region_map.h"
+#include "roamer.h"
+#include "sound.h"
+#include "string_util.h"
+#include "trig.h"
+#include "unk_pokedex_area_screen_helper.h"
+#include "wild_encounter.h"
+#include "constants/maps.h"
+#include "constants/region_map_sections.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "constants/vars.h"
+
+struct PokeDexAreaScreenMapIdentity
+{
+ u8 mapGroup;
+ u8 mapNum;
+ u16 regionMapSectionId;
+};
+
+struct PokeDexAreaScreen
+{
+ /*0x000*/ void (*callback)(void); // unused
+ /*0x004*/ MainCallback prev; // unused
+ /*0x008*/ MainCallback next; // unused
+ /*0x00C*/ u16 state; // unused
+ /*0x00E*/ u16 species;
+ /*0x010*/ struct PokeDexAreaScreenMapIdentity overworldAreasWithMons[0x40];
+ /*0x110*/ u16 numOverworldAreas;
+ /*0x112*/ u16 numSpecialAreas;
+ /*0x114*/ u16 drawAreaGlowState;
+ /*0x116*/ u16 areaGlowTilemap[0x280];
+ /*0x616*/ u16 areaShadeOrMarkerFrameCounter;
+ /*0x618*/ u16 areaShadeFrameCounter;
+ /*0x61A*/ u16 areaShadeBldArgLo;
+ /*0x61C*/ u16 areaShadeBldArgHi;
+ /*0x61E*/ u8 whichMarkersFlashing;
+ /*0x61F*/ u8 specialMarkerCycleCounter;
+ /*0x620*/ u16 specialAreaRegionMapSectionIds[0x20];
+ /*0x660*/ struct Sprite *areaMarkerSprites[0x20];
+ /*0x6E0*/ u16 numAreaMarkerSprites;
+ /*0x6E2*/ u16 unk6E2;
+ /*0x6E4*/ u16 unk6E4;
+ /*0x6E8*/ u8 *errno;
+ /*0x6EC*/ struct RegionMap regionMap;
+ /*0xF70*/ u8 charBuffer[0x40];
+ /*0xFB0*/ struct Sprite * areaUnknownSprites[3];
+ /*0xFBC*/ u8 areaUnknownGraphicsBuffer[0x600];
+};
+
+static EWRAM_DATA struct PokeDexAreaScreen *sPokedexAreaScreen = NULL;
+
+static void FindMapsWithMon(u16);
+static void BuildAreaGlowTilemap(void);
+static void SetAreaHasMon(u16, u16);
+static void SetSpecialMapHasMon(u16, u16);
+static u16 GetRegionMapSectionId(u8, u8);
+static bool8 MapHasMon(const struct WildPokemonHeader *, u16);
+static bool8 MonListHasMon(const struct WildPokemonInfo *, u16, u16);
+static void DoAreaGlow(void);
+static void Task_PokedexAreaScreen_0(u8);
+static void CreateAreaMarkerSprites(void);
+static void LoadAreaUnknownGraphics(void);
+static void CreateAreaUnknownSprites(void);
+static void Task_PokedexAreaScreen_1(u8);
+static void sub_813D6B4(void);
+static void DestroyAreaMarkerSprites(void);
+
+static const u32 sAreaGlow_Pal[] = INCBIN_U32("graphics/pokedex/area_glow.gbapal");
+static const u32 sAreaGlow_Gfx[] = INCBIN_U32("graphics/pokedex/area_glow.4bpp.lz");
+
+static const u16 sSpeciesHiddenFromAreaScreen[] = { SPECIES_WYNAUT };
+
+static const u16 sMovingRegionMapSections[3] = { MAPSEC_MARINE_CAVE, MAPSEC_UNDERWATER_MARINE_CAVE, MAPSEC_TERRA_CAVE };
+
+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_ALTERING_CAVE_2, FLAG_LANDMARK_ALTERING_CAVE},
+ {MAPSEC_MIRAGE_TOWER, FLAG_LANDMARK_MIRAGE_TOWER},
+ {MAPSEC_DESERT_UNDERPASS, FLAG_LANDMARK_DESERT_UNDERPASS},
+ {MAPSEC_ARTISAN_CAVE, FLAG_0x8DF},
+ {MAPSEC_NONE}
+};
+
+static const u8 sAreaGlowTilemapMapping[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x11, 0x20, 0x02, 0x03, 0x27, 0x2d, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x12, 0x21, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x2a, 0x2e, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x13, 0x22, 0x02, 0x03, 0x27, 0x2d, 0x06, 0x07, 0x2a, 0x2e, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x14, 0x01, 0x23, 0x03, 0x26, 0x05, 0x2c, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x15, 0x20, 0x23, 0x03, 0x28, 0x2d, 0x2c, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x16, 0x21, 0x23, 0x03, 0x26, 0x05, 0x2c, 0x07, 0x2a, 0x2e, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x17, 0x22, 0x23, 0x03, 0x28, 0x2d, 0x2c, 0x07, 0x2a, 0x2e, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x18, 0x01, 0x24, 0x03, 0x04, 0x05, 0x06, 0x07, 0x29, 0x09, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x19, 0x20, 0x24, 0x03, 0x27, 0x2d, 0x06, 0x07, 0x29, 0x09, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x1a, 0x21, 0x24, 0x03, 0x04, 0x05, 0x06, 0x07, 0x2b, 0x2e, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x1b, 0x22, 0x24, 0x03, 0x27, 0x2d, 0x06, 0x07, 0x2b, 0x2e, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x1c, 0x01, 0x25, 0x03, 0x26, 0x05, 0x2c, 0x07, 0x29, 0x09, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x1d, 0x20, 0x25, 0x03, 0x28, 0x2d, 0x2c, 0x07, 0x29, 0x09, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x1e, 0x21, 0x25, 0x03, 0x26, 0x05, 0x2c, 0x07, 0x2b, 0x2e, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x1f, 0x22, 0x25, 0x03, 0x28, 0x2d, 0x2c, 0x07, 0x2b, 0x2e, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+};
+
+static const struct UnkStruct_1C4D70 sUnknown_085B4018 = {
+ .bg = 3,
+ .unk2 = 0,
+ .unk10 = 0,
+ .unk12 = 2,
+};
+
+static const u8 sAreaMarkerTiles[];
+static const struct SpriteSheet sAreaMarkerSpriteSheet = {
+ sAreaMarkerTiles, 0x80, 2
+};
+
+static const u16 sAreaMarkerPalette[];
+static const struct SpritePalette sAreaMarkerSpritePalette = {
+ sAreaMarkerPalette, 2
+};
+
+static const struct OamData sAreaMarkerOamData = {
+ .size = 1,
+ .priority = 1
+};
+
+static const struct SpriteTemplate sAreaMarkerSpriteTemplate = {
+ 2,
+ 2,
+ &sAreaMarkerOamData,
+ gDummySpriteAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+static const u16 sAreaMarkerPalette[] = INCBIN_U16("graphics/pokedex/area_marker.gbapal");
+static const u8 sAreaMarkerTiles[] = INCBIN_U8("graphics/pokedex/area_marker.4bpp");
+
+static const struct SpritePalette sAreaUnknownSpritePalette = {
+ gPokedexAreaScreenAreaUnknown_Pal, 3
+};
+
+static const struct OamData sAreaUnknownOamData = {
+ .size = 2,
+ .priority = 1
+};
+
+static const struct SpriteTemplate sAreaUnknownSpriteTemplate = {
+ 3,
+ 3,
+ &sAreaUnknownOamData,
+ gDummySpriteAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+static void ResetDrawAreaGlowState(void)
+{
+ sPokedexAreaScreen->drawAreaGlowState = 0;
+}
+
+static bool8 DrawAreaGlow(void)
+{
+ switch (sPokedexAreaScreen->drawAreaGlowState)
+ {
+ case 0:
+ FindMapsWithMon(sPokedexAreaScreen->species);
+ break;
+ case 1:
+ BuildAreaGlowTilemap();
+ break;
+ case 2:
+ decompress_and_copy_tile_data_to_vram(2, sAreaGlow_Gfx, 0, 0, 0);
+ LoadBgTilemap(2, sPokedexAreaScreen->areaGlowTilemap, 0x500, 0);
+ break;
+ case 3:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ CpuCopy32(sAreaGlow_Pal, gPlttBufferUnfaded + 0xA0, 0x20);
+ sPokedexAreaScreen->drawAreaGlowState++;
+ }
+ return TRUE;
+ case 4:
+ ChangeBgY(2, -0x800, 0);
+ break;
+ default:
+ return FALSE;
+ }
+
+ sPokedexAreaScreen->drawAreaGlowState++;
+ return TRUE;
+}
+
+static void FindMapsWithMon(u16 species)
+{
+ u16 i;
+ struct Roamer *roamer;
+
+ sPokedexAreaScreen->unk6E2 = 0;
+ sPokedexAreaScreen->unk6E4 = VarGet(VAR_ALTERING_CAVE_WILD_SET);
+ if (sPokedexAreaScreen->unk6E4 > 8)
+ sPokedexAreaScreen->unk6E4 = 0;
+
+ roamer = &gSaveBlock1Ptr->roamer;
+ if (species != roamer->species)
+ {
+ sPokedexAreaScreen->numOverworldAreas = 0;
+ sPokedexAreaScreen->numSpecialAreas = 0;
+ for (i = 0; i < ARRAY_COUNT(sSpeciesHiddenFromAreaScreen); i++)
+ {
+ if (sSpeciesHiddenFromAreaScreen[i] == species)
+ return;
+ }
+
+ for (i = 0; sFeebasData[i][0] != NUM_SPECIES; i++)
+ {
+ if (species == 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, species))
+ {
+ 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
+ {
+ sPokedexAreaScreen->numSpecialAreas = 0;
+ if (roamer->active)
+ {
+ GetRoamerLocation(&sPokedexAreaScreen->overworldAreasWithMons[0].mapGroup, &sPokedexAreaScreen->overworldAreasWithMons[0].mapNum);
+ sPokedexAreaScreen->overworldAreasWithMons[0].regionMapSectionId = Overworld_GetMapHeaderByGroupAndId(sPokedexAreaScreen->overworldAreasWithMons[0].mapGroup, sPokedexAreaScreen->overworldAreasWithMons[0].mapNum)->regionMapSectionId;
+ sPokedexAreaScreen->numOverworldAreas = 1;
+ }
+ else
+ {
+ sPokedexAreaScreen->numOverworldAreas = 0;
+ }
+ }
+}
+
+static void SetAreaHasMon(u16 mapGroup, u16 mapNum)
+{
+ if (sPokedexAreaScreen->numOverworldAreas < 0x40)
+ {
+ sPokedexAreaScreen->overworldAreasWithMons[sPokedexAreaScreen->numOverworldAreas].mapGroup = mapGroup;
+ sPokedexAreaScreen->overworldAreasWithMons[sPokedexAreaScreen->numOverworldAreas].mapNum = mapNum;
+ sPokedexAreaScreen->overworldAreasWithMons[sPokedexAreaScreen->numOverworldAreas].regionMapSectionId = CorrectSpecialMapSecId(Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->regionMapSectionId);
+ sPokedexAreaScreen->numOverworldAreas++;
+ }
+}
+
+static void SetSpecialMapHasMon(u16 mapGroup, u16 mapNum)
+{
+ int i;
+
+ if (sPokedexAreaScreen->numSpecialAreas < 0x20)
+ {
+ u16 regionMapSectionId = GetRegionMapSectionId(mapGroup, mapNum);
+ if (regionMapSectionId < MAPSEC_NONE)
+ {
+ for (i = 0; i < ARRAY_COUNT(sMovingRegionMapSections); i++)
+ {
+ if (regionMapSectionId == sMovingRegionMapSections[i])
+ return;
+ }
+
+ for (i = 0; sLandmarkData[i][0] != MAPSEC_NONE; i++)
+ {
+ if (regionMapSectionId == sLandmarkData[i][0] && !FlagGet(sLandmarkData[i][1]))
+ return;
+ }
+
+ for (i = 0; i < sPokedexAreaScreen->numSpecialAreas; i++)
+ {
+ if (sPokedexAreaScreen->specialAreaRegionMapSectionIds[i] == regionMapSectionId)
+ break;
+ }
+
+ if (i == sPokedexAreaScreen->numSpecialAreas)
+ {
+ sPokedexAreaScreen->specialAreaRegionMapSectionIds[i] = regionMapSectionId;
+ sPokedexAreaScreen->numSpecialAreas++;
+ }
+ }
+ }
+}
+
+static u16 GetRegionMapSectionId(u8 mapGroup, u8 mapNum)
+{
+ return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->regionMapSectionId;
+}
+
+static bool8 MapHasMon(const struct WildPokemonHeader *info, u16 species)
+{
+ if (GetRegionMapSectionId(info->mapGroup, info->mapNum) == MAPSEC_ALTERING_CAVE_2)
+ {
+ sPokedexAreaScreen->unk6E2++;
+ if (sPokedexAreaScreen->unk6E2 != sPokedexAreaScreen->unk6E4 + 1)
+ return FALSE;
+ }
+
+ if (MonListHasMon(info->landMonsInfo, species, 12))
+ return TRUE;
+ if (MonListHasMon(info->waterMonsInfo, species, 5))
+ return TRUE;
+ if (MonListHasMon(info->fishingMonsInfo, species, 12))
+ return TRUE;
+ if (MonListHasMon(info->rockSmashMonsInfo, species, 5))
+ return TRUE;
+ return FALSE;
+}
+
+static bool8 MonListHasMon(const struct WildPokemonInfo *info, u16 species, u16 size)
+{
+ u16 i;
+ if (info != NULL)
+ {
+ for (i = 0; i < size; i++)
+ {
+ if (info->wildPokemon[i].species == species)
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static void BuildAreaGlowTilemap(void)
+{
+ u16 i, y, x, j;
+ u16 val;
+
+ for (i = 0; i < 0x280; i++)
+ sPokedexAreaScreen->areaGlowTilemap[i] = 0;
+
+ for (i = 0; i < sPokedexAreaScreen->numOverworldAreas; i++)
+ {
+ j = 0;
+ for (y = 0; y < 20; y++)
+ {
+ for (x = 0; x < 32; x++)
+ {
+ if (GetRegionMapSectionIdAt(x, y) == sPokedexAreaScreen->overworldAreasWithMons[i].regionMapSectionId)
+ sPokedexAreaScreen->areaGlowTilemap[j] = 0xFFFF;
+
+ j++;
+ }
+ }
+ }
+
+ j = 0;
+ for (y = 0; y < 20; y++)
+ {
+ for (x = 0; x < 32; x++)
+ {
+ if (sPokedexAreaScreen->areaGlowTilemap[j] == 0xFFFF)
+ {
+ if (x != 0 && sPokedexAreaScreen->areaGlowTilemap[j - 1] != 0xFFFF)
+ sPokedexAreaScreen->areaGlowTilemap[j - 1] |= 0x02;
+ if (x != 31 && sPokedexAreaScreen->areaGlowTilemap[j + 1] != 0xFFFF)
+ sPokedexAreaScreen->areaGlowTilemap[j + 1] |= 0x01;
+ if (y != 0 && sPokedexAreaScreen->areaGlowTilemap[j - 32] != 0xFFFF)
+ sPokedexAreaScreen->areaGlowTilemap[j - 32] |= 0x08;
+ if (y != 19 && sPokedexAreaScreen->areaGlowTilemap[j + 32] != 0xFFFF)
+ sPokedexAreaScreen->areaGlowTilemap[j + 32] |= 0x04;
+ if (x != 0 && y != 0 && sPokedexAreaScreen->areaGlowTilemap[j - 33] != 0xFFFF)
+ sPokedexAreaScreen->areaGlowTilemap[j - 33] |= 0x10;
+ if (x != 31 && y != 0 && sPokedexAreaScreen->areaGlowTilemap[j - 31] != 0xFFFF)
+ sPokedexAreaScreen->areaGlowTilemap[j - 31] |= 0x40;
+ if (x != 0 && y != 19 && sPokedexAreaScreen->areaGlowTilemap[j + 31] != 0xFFFF)
+ sPokedexAreaScreen->areaGlowTilemap[j + 31] |= 0x20;
+ if (x != 31 && y != 19 && sPokedexAreaScreen->areaGlowTilemap[j + 33] != 0xFFFF)
+ sPokedexAreaScreen->areaGlowTilemap[j + 33] |= 0x80;
+ }
+
+ j++;
+ }
+ }
+
+ for (i = 0; i < 0x280; i++)
+ {
+ if (sPokedexAreaScreen->areaGlowTilemap[i] == 0xFFFF)
+ {
+ sPokedexAreaScreen->areaGlowTilemap[i] = 0x10;
+ sPokedexAreaScreen->areaGlowTilemap[i] |= 0xA000;
+ }
+ else if (sPokedexAreaScreen->areaGlowTilemap[i])
+ {
+ if (sPokedexAreaScreen->areaGlowTilemap[i] & 0x02)
+ sPokedexAreaScreen->areaGlowTilemap[i] &= 0xFFCF;
+ if (sPokedexAreaScreen->areaGlowTilemap[i] & 0x01)
+ sPokedexAreaScreen->areaGlowTilemap[i] &= 0xFF3F;
+ if (sPokedexAreaScreen->areaGlowTilemap[i] & 0x08)
+ sPokedexAreaScreen->areaGlowTilemap[i] &= 0xFFAF;
+ if (sPokedexAreaScreen->areaGlowTilemap[i] & 0x04)
+ sPokedexAreaScreen->areaGlowTilemap[i] &= 0xFF5F;
+
+ sPokedexAreaScreen->areaGlowTilemap[i] = sAreaGlowTilemapMapping[sPokedexAreaScreen->areaGlowTilemap[i]];
+ sPokedexAreaScreen->areaGlowTilemap[i] |= 0xA000;
+ }
+ }
+}
+
+static void StartAreaGlow(void)
+{
+ if (sPokedexAreaScreen->numSpecialAreas && sPokedexAreaScreen->numOverworldAreas == 0)
+ sPokedexAreaScreen->whichMarkersFlashing = 1;
+ else
+ sPokedexAreaScreen->whichMarkersFlashing = 0;
+
+ sPokedexAreaScreen->areaShadeOrMarkerFrameCounter = 0;
+ sPokedexAreaScreen->areaShadeFrameCounter = 0;
+ sPokedexAreaScreen->areaShadeBldArgLo = 0;
+ sPokedexAreaScreen->areaShadeBldArgHi = 0x40;
+ sPokedexAreaScreen->specialMarkerCycleCounter = 1;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ DoAreaGlow();
+}
+
+static void DoAreaGlow(void)
+{
+ u16 x, y;
+ u16 i;
+
+ if (sPokedexAreaScreen->whichMarkersFlashing == 0)
+ {
+ if (sPokedexAreaScreen->areaShadeOrMarkerFrameCounter == 0)
+ {
+ sPokedexAreaScreen->areaShadeFrameCounter++;
+ if (sPokedexAreaScreen->areaShadeFrameCounter & 1)
+ sPokedexAreaScreen->areaShadeBldArgLo = (sPokedexAreaScreen->areaShadeBldArgLo + 4) & 0x7f;
+ else
+ sPokedexAreaScreen->areaShadeBldArgHi = (sPokedexAreaScreen->areaShadeBldArgHi + 4) & 0x7f;
+
+ x = gSineTable[sPokedexAreaScreen->areaShadeBldArgLo] >> 4;
+ y = gSineTable[sPokedexAreaScreen->areaShadeBldArgHi] >> 4;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(x, y));
+ sPokedexAreaScreen->areaShadeOrMarkerFrameCounter = 0;
+ if (sPokedexAreaScreen->areaShadeFrameCounter == 0x40)
+ {
+ sPokedexAreaScreen->areaShadeFrameCounter = 0;
+ if (sPokedexAreaScreen->numSpecialAreas != 0)
+ sPokedexAreaScreen->whichMarkersFlashing = 1;
+ }
+ }
+ else
+ sPokedexAreaScreen->areaShadeOrMarkerFrameCounter--;
+ }
+ else
+ {
+ sPokedexAreaScreen->areaShadeOrMarkerFrameCounter++;
+ if (sPokedexAreaScreen->areaShadeOrMarkerFrameCounter > 12)
+ {
+ sPokedexAreaScreen->areaShadeOrMarkerFrameCounter = 0;
+ sPokedexAreaScreen->specialMarkerCycleCounter++;
+ for (i = 0; i < sPokedexAreaScreen->numSpecialAreas; i++)
+ sPokedexAreaScreen->areaMarkerSprites[i]->invisible = sPokedexAreaScreen->specialMarkerCycleCounter & 1;
+
+ if (sPokedexAreaScreen->specialMarkerCycleCounter > 4)
+ {
+ sPokedexAreaScreen->specialMarkerCycleCounter = 1;
+ if (sPokedexAreaScreen->numOverworldAreas != 0)
+ sPokedexAreaScreen->whichMarkersFlashing = 0;
+ }
+ }
+ }
+}
+
+void ShowPokedexAreaScreen(u16 species, u8 *errno)
+{
+ u8 taskId;
+
+ sPokedexAreaScreen = AllocZeroed(sizeof(*sPokedexAreaScreen));
+ sPokedexAreaScreen->species = species;
+ sPokedexAreaScreen->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:
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ HideBg(3);
+ HideBg(2);
+ HideBg(0);
+ break;
+ case 1:
+ SetBgAttribute(3, BG_CTRL_ATTR_VISIBLE, 3);
+ sub_81C4D70(&sUnknown_085B4018);
+ StringFill(sPokedexAreaScreen->charBuffer, CHAR_SPACE, 16);
+ break;
+ case 2:
+ if (sub_81C4E90() == TRUE)
+ return;
+ sub_81C4ED0(-8);
+ break;
+ case 3:
+ ResetDrawAreaGlowState();
+ break;
+ case 4:
+ if (DrawAreaGlow())
+ return;
+ break;
+ case 5:
+ sub_8122D88(&sPokedexAreaScreen->regionMap);
+ CreateRegionMapPlayerIcon(1, 1);
+ PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(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:
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_ALL);
+ StartAreaGlow();
+ ShowBg(2);
+ ShowBg(3);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_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;
+ // fall through
+ 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 && gSaveBlock2Ptr->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;
+ DestroyAreaMarkerSprites();
+ sPokedexAreaScreen->errno[0] = gTasks[taskId].data[1];
+ sub_813D6B4();
+ DestroyTask(taskId);
+ sub_81C4EB4();
+ FREE_AND_SET_NULL(sPokedexAreaScreen);
+ return;
+ }
+
+ gTasks[taskId].data[0]++;
+}
+
+static void sub_813D6B4(void)
+{
+ SetBgAttribute(3, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(3, BG_CTRL_ATTR_SCREENSIZE, 0);
+}
+
+static void CreateAreaMarkerSprites(void)
+{
+ u8 spriteId;
+ static IWRAM_DATA s16 x;
+ static IWRAM_DATA s16 y;
+ static IWRAM_DATA s16 i;
+ static IWRAM_DATA s16 mapSecId;
+ static IWRAM_DATA s16 numSprites;
+
+ LoadSpriteSheet(&sAreaMarkerSpriteSheet);
+ LoadSpritePalette(&sAreaMarkerSpritePalette);
+ numSprites = 0;
+ for (i = 0; i < sPokedexAreaScreen->numSpecialAreas; i++)
+ {
+ mapSecId = sPokedexAreaScreen->specialAreaRegionMapSectionIds[i];
+ x = 8 * (gRegionMapEntries[mapSecId].x + 1) + 4;
+ y = 8 * (gRegionMapEntries[mapSecId].y) + 28;
+ x += 4 * (gRegionMapEntries[mapSecId].width - 1);
+ y += 4 * (gRegionMapEntries[mapSecId].height - 1);
+ spriteId = CreateSprite(&sAreaMarkerSpriteTemplate, x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].invisible = TRUE;
+ sPokedexAreaScreen->areaMarkerSprites[numSprites++] = &gSprites[spriteId];
+ }
+ }
+
+ sPokedexAreaScreen->numAreaMarkerSprites = numSprites;
+}
+
+static void DestroyAreaMarkerSprites(void)
+{
+ u16 i;
+ FreeSpriteTilesByTag(2);
+ FreeSpritePaletteByTag(2);
+ for (i = 0; i < sPokedexAreaScreen->numAreaMarkerSprites; i++)
+ DestroySprite(sPokedexAreaScreen->areaMarkerSprites[i]);
+
+ FreeSpriteTilesByTag(3);
+ FreeSpritePaletteByTag(3);
+ for (i = 0; i < 3; i++)
+ {
+ if (sPokedexAreaScreen->areaUnknownSprites[i])
+ DestroySprite(sPokedexAreaScreen->areaUnknownSprites[i]);
+ }
+}
+
+static void LoadAreaUnknownGraphics(void)
+{
+ struct SpriteSheet spriteSheet = {
+ .data = sPokedexAreaScreen->areaUnknownGraphicsBuffer,
+ .size = 0x600,
+ .tag = 3,
+ };
+ LZ77UnCompWram(gPokedexAreaScreenAreaUnknown_Gfx, sPokedexAreaScreen->areaUnknownGraphicsBuffer);
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&sAreaUnknownSpritePalette);
+}
+
+static void CreateAreaUnknownSprites(void)
+{
+ u16 i;
+ u8 spriteId;
+
+ if (sPokedexAreaScreen->numOverworldAreas || sPokedexAreaScreen->numSpecialAreas)
+ {
+ for (i = 0; i < 3; i++)
+ sPokedexAreaScreen->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;
+ sPokedexAreaScreen->areaUnknownSprites[i] = gSprites + spriteId;
+ }
+ else
+ {
+ sPokedexAreaScreen->areaUnknownSprites[i] = NULL;
+ }
+ }
+ }
+}
diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c
new file mode 100755
index 000000000..f3eeeed07
--- /dev/null
+++ b/src/pokedex_cry_screen.c
@@ -0,0 +1,511 @@
+#include "global.h"
+#include "bg.h"
+#include "m4a.h"
+#include "main.h"
+#include "malloc.h"
+#include "palette.h"
+#include "pokedex_cry_screen.h"
+#include "sound.h"
+#include "trig.h"
+#include "window.h"
+
+struct PokedexCryVolumeMeter {
+ s8 unk0;
+ s8 unk1;
+ u8 unk2;
+ u16 needleSpriteId;
+};
+
+struct PokedexCryScreen
+{
+ u8 unk0[16];
+ u8 unk10;
+ u8 unk11;
+ u8 unk12;
+ u16 unk14;
+ u8 unk16;
+ u16 species;
+ u8 unk1A;
+ u8 unk1B;
+};
+
+static void sub_8145588(u16);
+static void sub_81455A8(void);
+static void sub_814560C(void);
+static void sub_8145648(u8);
+static void sub_81456A8(u8, u8);
+static void sub_8145814(u8);
+static void sub_8145824(u8, s16, u8);
+static void sub_814596C(struct Sprite *);
+static void sub_8145B24(s8);
+
+extern u8 gDexCryScreenState;
+static EWRAM_DATA struct PokedexCryScreen *sDexCryScreen = NULL;
+static EWRAM_DATA u8 *sCryWaveformWindowTiledata = NULL;
+static EWRAM_DATA struct PokedexCryVolumeMeter *sCryVolumeMeter = NULL;
+
+const u16 CryMeterNeedlePalette[] = INCBIN_U16("graphics/pokedex/cry_meter_needle.gbapal");
+const u8 CryMeterNeedleTiles[] = INCBIN_U8("graphics/pokedex/cry_meter_needle.4bpp");
+
+const u16 gUnknown_085B8378[] = INCBIN_U16("graphics/pokedex/cry_meter_map.bin");
+const u16 gUnknown_085B8418[] = INCBIN_U16("graphics/pokedex/cry_meter.gbapal");
+const u8 gUnknown_085B8438[] = INCBIN_U8("graphics/pokedex/cry_meter.4bpp.lz");
+
+const u16 gUnknown_085B8770[][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
+ }
+};
+
+const u16 gUnknown_085B8BF0[] = INCBIN_U16("graphics/pokedex/85B8C10.gbapal");
+const u8 gUnknown_085B8C10[] = INCBIN_U8("graphics/pokedex/85B8C10.4bpp");
+
+const u8 gUnknown_085B8C30[] = {0xF0, 0x0F};
+const u8 gUnknown_085B8C32[][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
+ }
+};
+
+const union AnimCmd gSpriteAnim_85B8C54[] = {
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_85B8C5C[] = {
+ gSpriteAnim_85B8C54
+};
+
+const struct OamData gOamData_85B8C60 = {
+ .y = 160,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .size = 3,
+ .priority = 1
+};
+
+const struct SpriteTemplate gUnknown_085B8C68 = {
+ 0x2000,
+ 0x2000,
+ &gOamData_85B8C60,
+ gSpriteAnimTable_85B8C5C,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ sub_814596C
+};
+
+const struct SpriteSheet gCryMeterNeedleSpriteSheets[] = {
+ {CryMeterNeedleTiles, 0x800, 0x2000},
+ {}
+};
+
+const struct SpritePalette gCryMeterNeedleSpritePalettes[] = {
+ {CryMeterNeedlePalette, 0x2000},
+ {}
+};
+
+bool8 sub_8145354(struct CryRelatedStruct *arg0, u8 windowId)
+{
+ u8 i;
+ u8 retVal = FALSE;
+
+ switch (gDexCryScreenState)
+ {
+ case 0:
+ if (!sDexCryScreen)
+ {
+ sDexCryScreen = AllocZeroed(sizeof(*sDexCryScreen));
+ sCryWaveformWindowTiledata = (u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA);
+ }
+
+ sDexCryScreen->unk14 = arg0->unk0;
+ sDexCryScreen->unk16 = arg0->yPos;
+ sDexCryScreen->unk1A = 0;
+ sDexCryScreen->unk1B = 0;
+ sDexCryScreen->unk10 = 0;
+ sDexCryScreen->unk12 = 28;
+ sDexCryScreen->unk11 = 0;
+ sub_8145824(windowId, -8 * arg0->xPos, 1);
+ for (i = 0; i < 224; i++)
+ CopyToWindowPixelBuffer(windowId, gUnknown_085B8C10, TILE_SIZE_4BPP, i);
+
+ gDexCryScreenState++;
+ break;
+ case 1:
+ for (i = 0; i < sDexCryScreen->unk16 * 8; i++)
+ sub_81456A8(i, 0);
+
+ gDexCryScreenState++;
+ break;
+ case 2:
+ sub_8145814(windowId);
+ LoadPalette(gUnknown_085B8BF0, arg0->paletteNo * 16, 32);
+ retVal = TRUE;
+ break;
+ }
+
+ return retVal;
+}
+
+void sub_814545C(u8 windowId)
+{
+ u8 var0;
+
+ sub_8145814(windowId);
+ sub_8145648(windowId);
+ if (sDexCryScreen->unk1B)
+ sDexCryScreen->unk1B--;
+
+ if (sDexCryScreen->unk1A)
+ {
+ sDexCryScreen->unk1A--;
+ if (!sDexCryScreen->unk1A)
+ {
+ sub_8145588(sDexCryScreen->species);
+ sub_814560C();
+ return;
+ }
+ }
+
+ if (sDexCryScreen->unk10 == 0)
+ {
+ sub_814560C();
+ return;
+ }
+
+ if (sDexCryScreen->unk10 == 1)
+ {
+ sub_81455A8();
+ }
+ else if (sDexCryScreen->unk10 > 8)
+ {
+ if (!IsCryPlaying())
+ {
+ sub_814560C();
+ sDexCryScreen->unk10 = 0;
+ return;
+ }
+
+ sub_81455A8();
+ sDexCryScreen->unk10 = 1;
+ }
+
+ var0 = 2 * (sDexCryScreen->unk10 - 1);
+ sub_81456A8(sDexCryScreen->unk16 * 8 + sDexCryScreen->unk11 - 2, sDexCryScreen->unk0[var0]);
+ sub_81456A8(sDexCryScreen->unk16 * 8 + sDexCryScreen->unk11 - 1, sDexCryScreen->unk0[var0 + 1]);
+ sDexCryScreen->unk10++;
+}
+
+void sub_8145534(u16 species)
+{
+ if (gMPlayInfo_BGM.status & MUSICPLAYER_STATUS_PAUSE && !sDexCryScreen->unk1A)
+ {
+ if (!sDexCryScreen->unk1B)
+ {
+ sDexCryScreen->unk1B = 4;
+ if (IsCryPlaying() == TRUE)
+ {
+ StopCry();
+ sDexCryScreen->species = species;
+ sDexCryScreen->unk1A = 2;
+ }
+ else
+ {
+ sub_8145588(species);
+ }
+ }
+ }
+}
+
+static void sub_8145588(u16 species)
+{
+ PlayCry2(species, 0, 0x7d, 10);
+ sDexCryScreen->unk10 = 1;
+}
+
+static void sub_81455A8(void)
+{
+ u8 i;
+ s8 *baseBuffer;
+ s8 *buffer;
+
+ if (gPcmDmaCounter < 2)
+ baseBuffer = gSoundInfo.pcmBuffer;
+ else
+ baseBuffer = gSoundInfo.pcmBuffer + (gSoundInfo.pcmDmaPeriod + 1 - gPcmDmaCounter) * gSoundInfo.pcmSamplesPerVBlank;
+
+ buffer = baseBuffer + 0x630;
+ for (i = 0; i < 16; i++)
+ sDexCryScreen->unk0[i] = buffer[i * 2] * 2;
+}
+
+static void sub_814560C(void)
+{
+ sub_81456A8(sDexCryScreen->unk16 * 8 + sDexCryScreen->unk11 - 2, 0);
+ sub_81456A8(sDexCryScreen->unk16 * 8 + sDexCryScreen->unk11 - 1, 0);
+}
+
+static void sub_8145648(u8 windowId)
+{
+ u8 i;
+ u16 offset;
+
+ sub_8145824(windowId, sDexCryScreen->unk11, 0);
+ sDexCryScreen->unk11 += 2;
+ offset = (sDexCryScreen->unk11 / 8 + sDexCryScreen->unk16 + 1) % 32;
+ for (i = 0; i < 7; i++)
+ CopyToWindowPixelBuffer(windowId, gUnknown_085B8C10, TILE_SIZE_4BPP, offset + (i * TILE_SIZE_4BPP));
+}
+
+static void sub_81456A8(u8 a0, u8 a1)
+{
+ u8 sp0;
+ u8 r6;
+ u8 r8;
+ u16 offset;
+ u16 r1;
+ u8 i;
+
+ r1 = (a1 + 127) * 256;
+ i = r1 / 1152.0;
+ if (i > 55)
+ i = 55;
+ sp0 = i;
+ r6 = a0 & 1;
+ if (i > sDexCryScreen->unk12)
+ {
+ do
+ {
+ offset = gUnknown_085B8770[a0 & 0x7][i] + (a0 / 8) * TILE_SIZE_4BPP;
+ sCryWaveformWindowTiledata[offset] &= gUnknown_085B8C30[r6];
+ sCryWaveformWindowTiledata[offset] |= gUnknown_085B8C32[r6][((i / 3) - 1) & 0x0F];
+ i--;
+ } while (i > sDexCryScreen->unk12);
+ }
+ else
+ {
+ do
+ {
+ offset = gUnknown_085B8770[a0 & 0x7][i] + (a0 / 8) * TILE_SIZE_4BPP;
+ sCryWaveformWindowTiledata[offset] &= gUnknown_085B8C30[r6];
+ sCryWaveformWindowTiledata[offset] |= gUnknown_085B8C32[r6][((i / 3) - 1) & 0x0F];
+ i++;
+ } while (i < sDexCryScreen->unk12);
+ }
+
+ sDexCryScreen->unk12 = sp0;
+}
+
+static void sub_8145814(u8 windowId)
+{
+ CopyWindowToVram(windowId, 2);
+}
+
+static void sub_8145824(u8 windowId, s16 arg1, u8 arg2)
+{
+ if (!arg2)
+ {
+ u8 bg = GetWindowAttribute(windowId, WINDOW_BG);
+ ChangeBgX(bg, arg1 << 8, 0);
+ }
+}
+
+bool8 sub_8145850(struct CryRelatedStruct *arg0, u8 windowId)
+{
+ int retVal = FALSE;
+
+ switch (gDexCryScreenState)
+ {
+ case 0:
+ if (!sCryVolumeMeter)
+ sCryVolumeMeter = AllocZeroed(sizeof(*sCryVolumeMeter));
+
+ CopyToWindowPixelBuffer(windowId, gUnknown_085B8438, 0, 0);
+ LoadPalette(gUnknown_085B8418, arg0->paletteNo * 16, 32);
+ gDexCryScreenState++;
+ break;
+ case 1:
+ LoadSpriteSheets(gCryMeterNeedleSpriteSheets);
+ LoadSpritePalettes(gCryMeterNeedleSpritePalettes);
+ sCryVolumeMeter->needleSpriteId = CreateSprite(&gUnknown_085B8C68, 40 + arg0->xPos * 8, 56 + arg0->yPos * 8, 1);
+ sCryVolumeMeter->unk0 = 0x20;
+ sCryVolumeMeter->unk1 = 0x20;
+ sCryVolumeMeter->unk2 = 0;
+ retVal = TRUE;
+ break;
+ }
+
+ return retVal;
+}
+
+void sub_8145914(void)
+{
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[sCryVolumeMeter->needleSpriteId].oam.paletteNum));
+ DestroySprite(gSprites + sCryVolumeMeter->needleSpriteId);
+ FREE_AND_SET_NULL(sDexCryScreen);
+ FREE_AND_SET_NULL(sCryVolumeMeter);
+}
+
+static void sub_814596C(struct Sprite *sprite)
+{
+ u16 i;
+ s8 r3;
+ s16 x;
+ s16 y;
+ struct ObjAffineSrcData affine;
+ struct OamMatrix matrix;
+ u8 *var0;
+
+ gSprites[sCryVolumeMeter->needleSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[sCryVolumeMeter->needleSpriteId].oam.affineParam = 0;
+ switch (sDexCryScreen->unk10)
+ {
+ case 0:
+ sCryVolumeMeter->unk1 = 0x20;
+ if (sCryVolumeMeter->unk0 > 0)
+ {
+ if (sCryVolumeMeter->unk2 != 1)
+ sCryVolumeMeter->unk2--;
+ }
+ else
+ sCryVolumeMeter->unk2 = 5;
+ break;
+ case 2:
+ r3 = 0;
+ for (i = 0; i < 16; i++)
+ {
+ if (r3 < sDexCryScreen->unk0[i])
+ r3 = sDexCryScreen->unk0[i];
+ }
+ sub_8145B24(r3 * 0xd0 / 0x100);
+ break;
+ case 6:
+ var0 = &sDexCryScreen->unk0[10];
+ sub_8145B24(*var0 * 0xd0 / 0x100);
+ break;
+ }
+
+ if (sCryVolumeMeter->unk0 == sCryVolumeMeter->unk1)
+ {
+ // empty block
+ }
+ else if (sCryVolumeMeter->unk0 < sCryVolumeMeter->unk1)
+ {
+ sCryVolumeMeter->unk0 += sCryVolumeMeter->unk2;
+ if (sCryVolumeMeter->unk0 > sCryVolumeMeter->unk1)
+ {
+ sCryVolumeMeter->unk0 = sCryVolumeMeter->unk1;
+ sCryVolumeMeter->unk1 = 0;
+ }
+ }
+ else
+ {
+ sCryVolumeMeter->unk0 -= sCryVolumeMeter->unk2;
+ if (sCryVolumeMeter->unk0 < sCryVolumeMeter->unk1)
+ {
+ sCryVolumeMeter->unk0 = sCryVolumeMeter->unk1;
+ sCryVolumeMeter->unk1 = 0;
+ }
+ }
+
+ affine.xScale = 0x100;
+ affine.yScale = 0x100;
+ affine.rotation = sCryVolumeMeter->unk0 * 256;
+ ObjAffineSet(&affine, &matrix, 1, 2);
+ SetOamMatrix(0, matrix.a, matrix.b, matrix.c, matrix.d);
+ x = gSineTable[((sCryVolumeMeter->unk0 + 0x7F) & 0xFF)];
+ y = gSineTable[((sCryVolumeMeter->unk0 + 0x7F) & 0xFF) + 0x40];
+ sprite->pos2.x = x * 24 / 256;
+ sprite->pos2.y = y * 24 / 256;
+}
+
+static void sub_8145B24(s8 a0)
+{
+ u16 r2 = (0x20 - a0) & 0xff;
+ if (r2 > 0x20 && r2 < 0xe0)
+ r2 = 0xe0;
+
+ sCryVolumeMeter->unk1 = r2;
+ sCryVolumeMeter->unk2 = 5;
+}
diff --git a/src/pokemon.c b/src/pokemon.c
index 7227d28cb..f528ce331 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -1,41 +1,43 @@
#include "global.h"
-#include "pokemon.h"
+#include "apprentice.h"
#include "battle.h"
-#include "battle_setup.h"
-#include "battle_message.h"
-#include "random.h"
-#include "main.h"
-#include "constants/species.h"
-#include "constants/abilities.h"
-#include "constants/items.h"
-#include "constants/trainers.h"
-#include "constants/moves.h"
-#include "constants/hold_effects.h"
-#include "constants/battle_move_effects.h"
-#include "constants/songs.h"
-#include "constants/battle_frontier.h"
-#include "string_util.h"
-#include "text.h"
-#include "link.h"
-#include "event_data.h"
-#include "item.h"
#include "battle_controllers.h"
#include "battle_message.h"
+#include "battle_pike.h"
+#include "battle_pyramid.h"
+#include "battle_setup.h"
+#include "battle_tower.h"
+#include "event_data.h"
#include "evolution_scene.h"
-#include "pokemon_animation.h"
+#include "item.h"
+#include "link.h"
+#include "main.h"
+#include "malloc.h"
+#include "m4a.h"
#include "pokedex.h"
#include "pokeblock.h"
+#include "pokemon.h"
+#include "pokemon_animation.h"
+#include "pokemon_storage_system.h"
+#include "pokenav.h"
+#include "random.h"
+#include "recorded_battle.h"
+#include "rtc.h"
#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
#include "task.h"
-#include "rtc.h"
-#include "m4a.h"
-#include "malloc.h"
+#include "text.h"
#include "util.h"
-#include "strings.h"
-#include "pokenav.h"
-#include "pokemon_storage_system.h"
-#include "recorded_battle.h"
-#include "apprentice.h"
+#include "constants/abilities.h"
+#include "constants/battle_frontier.h"
+#include "constants/battle_move_effects.h"
+#include "constants/hold_effects.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "constants/trainers.h"
struct SpeciesItem
{
@@ -80,14 +82,8 @@ extern u8 StorageGetCurrentBox(void);
extern void set_unknown_box_id(u8);
extern void sub_803FA70(u8 battlerId);
extern u8 sav1_map_get_name(void);
-extern u8 GetFrontierEnemyMonLevel(u8);
-extern bool8 InBattlePyramid(void);
-extern bool8 InBattlePike(void);
extern bool8 sub_806F104(void);
-extern u8 GetTrainerEncounterMusicIdInBattlePyramind(u16 trainerOpponentId);
extern u8 sub_81D63C8(u16 trainerOpponentId);
-extern u8 GetFrontierOpponentClass(u16 trainerId);
-extern void GetFrontierTrainerName(u8* dest, u16 trainerId);
extern void SummaryScreen_SetUnknownTaskId(u8);
// this file's functions
@@ -111,1252 +107,1253 @@ EWRAM_DATA struct Unknown_806F160_Struct *gUnknown_020249B4[2] = {NULL};
#include "data/battle_moves.h"
static const u8 sUnreferencedData[] = {0x34, 0x00, 0x10, 0x00, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00};
+#define SPECIES_TO_HOENN(name) [SPECIES_##name - 1] = HOENN_DEX_##name
+#define SPECIES_TO_NATIONAL(name) [SPECIES_##name - 1] = NATIONAL_DEX_##name
+#define HOENN_TO_NATIONAL(name) [HOENN_DEX_##name - 1] = NATIONAL_DEX_##name
+
const u16 gSpeciesToHoennPokedexNum[] = // Assigns all species to the Hoenn Dex Index (Summary No. for Hoenn Dex)
{
- // SPECIES_NONE
- HOENN_DEX_BULBASAUR, // SPECIES_BULBASAUR
- HOENN_DEX_IVYSAUR, // SPECIES_IVYSAUR
- HOENN_DEX_VENUSAUR, // SPECIES_VENUSAUR
- HOENN_DEX_CHARMANDER, // SPECIES_CHARMANDER
- HOENN_DEX_CHARMELEON, // SPECIES_CHARMELEON
- HOENN_DEX_CHARIZARD, // SPECIES_CHARIZARD
- HOENN_DEX_SQUIRTLE, // SPECIES_SQUIRTLE
- HOENN_DEX_WARTORTLE, // SPECIES_WARTORTLE
- HOENN_DEX_BLASTOISE, // SPECIES_BLASTOISE
- HOENN_DEX_CATERPIE, // SPECIES_CATERPIE
- HOENN_DEX_METAPOD, // SPECIES_METAPOD
- HOENN_DEX_BUTTERFREE, // SPECIES_BUTTERFREE
- HOENN_DEX_WEEDLE, // SPECIES_WEEDLE
- HOENN_DEX_KAKUNA, // SPECIES_KAKUNA
- HOENN_DEX_BEEDRILL, // SPECIES_BEEDRILL
- HOENN_DEX_PIDGEY, // SPECIES_PIDGEY
- HOENN_DEX_PIDGEOTTO, // SPECIES_PIDGEOTTO
- HOENN_DEX_PIDGEOT, // SPECIES_PIDGEOT
- HOENN_DEX_RATTATA, // SPECIES_RATTATA
- HOENN_DEX_RATICATE, // SPECIES_RATICATE
- HOENN_DEX_SPEAROW, // SPECIES_SPEAROW
- HOENN_DEX_FEAROW, // SPECIES_FEAROW
- HOENN_DEX_EKANS, // SPECIES_EKANS
- HOENN_DEX_ARBOK, // SPECIES_ARBOK
- HOENN_DEX_PIKACHU, // SPECIES_PIKACHU
- HOENN_DEX_RAICHU, // SPECIES_RAICHU
- HOENN_DEX_SANDSHREW, // SPECIES_SANDSHREW
- HOENN_DEX_SANDSLASH, // SPECIES_SANDSLASH
- HOENN_DEX_NIDORAN_F, // SPECIES_NIDORAN_F
- HOENN_DEX_NIDORINA, // SPECIES_NIDORINA
- HOENN_DEX_NIDOQUEEN, // SPECIES_NIDOQUEEN
- HOENN_DEX_NIDORAN_M, // SPECIES_NIDORAN_M
- HOENN_DEX_NIDORINO, // SPECIES_NIDORINO
- HOENN_DEX_NIDOKING, // SPECIES_NIDOKING
- HOENN_DEX_CLEFAIRY, // SPECIES_CLEFAIRY
- HOENN_DEX_CLEFABLE, // SPECIES_CLEFABLE
- HOENN_DEX_VULPIX, // SPECIES_VULPIX
- HOENN_DEX_NINETALES, // SPECIES_NINETALES
- HOENN_DEX_JIGGLYPUFF, // SPECIES_JIGGLYPUFF
- HOENN_DEX_WIGGLYTUFF, // SPECIES_WIGGLYTUFF
- HOENN_DEX_ZUBAT, // SPECIES_ZUBAT
- HOENN_DEX_GOLBAT, // SPECIES_GOLBAT
- HOENN_DEX_ODDISH, // SPECIES_ODDISH
- HOENN_DEX_GLOOM, // SPECIES_GLOOM
- HOENN_DEX_VILEPLUME, // SPECIES_VILEPLUME
- HOENN_DEX_PARAS, // SPECIES_PARAS
- HOENN_DEX_PARASECT, // SPECIES_PARASECT
- HOENN_DEX_VENONAT, // SPECIES_VENONAT
- HOENN_DEX_VENOMOTH, // SPECIES_VENOMOTH
- HOENN_DEX_DIGLETT, // SPECIES_DIGLETT
- HOENN_DEX_DUGTRIO, // SPECIES_DUGTRIO
- HOENN_DEX_MEOWTH, // SPECIES_MEOWTH
- HOENN_DEX_PERSIAN, // SPECIES_PERSIAN
- HOENN_DEX_PSYDUCK, // SPECIES_PSYDUCK
- HOENN_DEX_GOLDUCK, // SPECIES_GOLDUCK
- HOENN_DEX_MANKEY, // SPECIES_MANKEY
- HOENN_DEX_PRIMEAPE, // SPECIES_PRIMEAPE
- HOENN_DEX_GROWLITHE, // SPECIES_GROWLITHE
- HOENN_DEX_ARCANINE, // SPECIES_ARCANINE
- HOENN_DEX_POLIWAG, // SPECIES_POLIWAG
- HOENN_DEX_POLIWHIRL, // SPECIES_POLIWHIRL
- HOENN_DEX_POLIWRATH, // SPECIES_POLIWRATH
- HOENN_DEX_ABRA, // SPECIES_ABRA
- HOENN_DEX_KADABRA, // SPECIES_KADABRA
- HOENN_DEX_ALAKAZAM, // SPECIES_ALAKAZAM
- HOENN_DEX_MACHOP, // SPECIES_MACHOP
- HOENN_DEX_MACHOKE, // SPECIES_MACHOKE
- HOENN_DEX_MACHAMP, // SPECIES_MACHAMP
- HOENN_DEX_BELLSPROUT, // SPECIES_BELLSPROUT
- HOENN_DEX_WEEPINBELL, // SPECIES_WEEPINBELL
- HOENN_DEX_VICTREEBEL, // SPECIES_VICTREEBEL
- HOENN_DEX_TENTACOOL, // SPECIES_TENTACOOL
- HOENN_DEX_TENTACRUEL, // SPECIES_TENTACRUEL
- HOENN_DEX_GEODUDE, // SPECIES_GEODUDE
- HOENN_DEX_GRAVELER, // SPECIES_GRAVELER
- HOENN_DEX_GOLEM, // SPECIES_GOLEM
- HOENN_DEX_PONYTA, // SPECIES_PONYTA
- HOENN_DEX_RAPIDASH, // SPECIES_RAPIDASH
- HOENN_DEX_SLOWPOKE, // SPECIES_SLOWPOKE
- HOENN_DEX_SLOWBRO, // SPECIES_SLOWBRO
- HOENN_DEX_MAGNEMITE, // SPECIES_MAGNEMITE
- HOENN_DEX_MAGNETON, // SPECIES_MAGNETON
- HOENN_DEX_FARFETCHD, // SPECIES_FARFETCHD
- HOENN_DEX_DODUO, // SPECIES_DODUO
- HOENN_DEX_DODRIO, // SPECIES_DODRIO
- HOENN_DEX_SEEL, // SPECIES_SEEL
- HOENN_DEX_DEWGONG, // SPECIES_DEWGONG
- HOENN_DEX_GRIMER, // SPECIES_GRIMER
- HOENN_DEX_MUK, // SPECIES_MUK
- HOENN_DEX_SHELLDER, // SPECIES_SHELLDER
- HOENN_DEX_CLOYSTER, // SPECIES_CLOYSTER
- HOENN_DEX_GASTLY, // SPECIES_GASTLY
- HOENN_DEX_HAUNTER, // SPECIES_HAUNTER
- HOENN_DEX_GENGAR, // SPECIES_GENGAR
- HOENN_DEX_ONIX, // SPECIES_ONIX
- HOENN_DEX_DROWZEE, // SPECIES_DROWZEE
- HOENN_DEX_HYPNO, // SPECIES_HYPNO
- HOENN_DEX_KRABBY, // SPECIES_KRABBY
- HOENN_DEX_KINGLER, // SPECIES_KINGLER
- HOENN_DEX_VOLTORB, // SPECIES_VOLTORB
- HOENN_DEX_ELECTRODE, // SPECIES_ELECTRODE
- HOENN_DEX_EXEGGCUTE, // SPECIES_EXEGGCUTE
- HOENN_DEX_EXEGGUTOR, // SPECIES_EXEGGUTOR
- HOENN_DEX_CUBONE, // SPECIES_CUBONE
- HOENN_DEX_MAROWAK, // SPECIES_MAROWAK
- HOENN_DEX_HITMONLEE, // SPECIES_HITMONLEE
- HOENN_DEX_HITMONCHAN, // SPECIES_HITMONCHAN
- HOENN_DEX_LICKITUNG, // SPECIES_LICKITUNG
- HOENN_DEX_KOFFING, // SPECIES_KOFFING
- HOENN_DEX_WEEZING, // SPECIES_WEEZING
- HOENN_DEX_RHYHORN, // SPECIES_RHYHORN
- HOENN_DEX_RHYDON, // SPECIES_RHYDON
- HOENN_DEX_CHANSEY, // SPECIES_CHANSEY
- HOENN_DEX_TANGELA, // SPECIES_TANGELA
- HOENN_DEX_KANGASKHAN, // SPECIES_KANGASKHAN
- HOENN_DEX_HORSEA, // SPECIES_HORSEA
- HOENN_DEX_SEADRA, // SPECIES_SEADRA
- HOENN_DEX_GOLDEEN, // SPECIES_GOLDEEN
- HOENN_DEX_SEAKING, // SPECIES_SEAKING
- HOENN_DEX_STARYU, // SPECIES_STARYU
- HOENN_DEX_STARMIE, // SPECIES_STARMIE
- HOENN_DEX_MR_MIME, // SPECIES_MR_MIME
- HOENN_DEX_SCYTHER, // SPECIES_SCYTHER
- HOENN_DEX_JYNX, // SPECIES_JYNX
- HOENN_DEX_ELECTABUZZ, // SPECIES_ELECTABUZZ
- HOENN_DEX_MAGMAR, // SPECIES_MAGMAR
- HOENN_DEX_PINSIR, // SPECIES_PINSIR
- HOENN_DEX_TAUROS, // SPECIES_TAUROS
- HOENN_DEX_MAGIKARP, // SPECIES_MAGIKARP
- HOENN_DEX_GYARADOS, // SPECIES_GYARADOS
- HOENN_DEX_LAPRAS, // SPECIES_LAPRAS
- HOENN_DEX_DITTO, // SPECIES_DITTO
- HOENN_DEX_EEVEE, // SPECIES_EEVEE
- HOENN_DEX_VAPOREON, // SPECIES_VAPOREON
- HOENN_DEX_JOLTEON, // SPECIES_JOLTEON
- HOENN_DEX_FLAREON, // SPECIES_FLAREON
- HOENN_DEX_PORYGON, // SPECIES_PORYGON
- HOENN_DEX_OMANYTE, // SPECIES_OMANYTE
- HOENN_DEX_OMASTAR, // SPECIES_OMASTAR
- HOENN_DEX_KABUTO, // SPECIES_KABUTO
- HOENN_DEX_KABUTOPS, // SPECIES_KABUTOPS
- HOENN_DEX_AERODACTYL, // SPECIES_AERODACTYL
- HOENN_DEX_SNORLAX, // SPECIES_SNORLAX
- HOENN_DEX_ARTICUNO, // SPECIES_ARTICUNO
- HOENN_DEX_ZAPDOS, // SPECIES_ZAPDOS
- HOENN_DEX_MOLTRES, // SPECIES_MOLTRES
- HOENN_DEX_DRATINI, // SPECIES_DRATINI
- HOENN_DEX_DRAGONAIR, // SPECIES_DRAGONAIR
- HOENN_DEX_DRAGONITE, // SPECIES_DRAGONITE
- HOENN_DEX_MEWTWO, // SPECIES_MEWTWO
- HOENN_DEX_MEW, // SPECIES_MEW
- HOENN_DEX_CHIKORITA, // SPECIES_CHIKORITA
- HOENN_DEX_BAYLEEF, // SPECIES_BAYLEEF
- HOENN_DEX_MEGANIUM, // SPECIES_MEGANIUM
- HOENN_DEX_CYNDAQUIL, // SPECIES_CYNDAQUIL
- HOENN_DEX_QUILAVA, // SPECIES_QUILAVA
- HOENN_DEX_TYPHLOSION, // SPECIES_TYPHLOSION
- HOENN_DEX_TOTODILE, // SPECIES_TOTODILE
- HOENN_DEX_CROCONAW, // SPECIES_CROCONAW
- HOENN_DEX_FERALIGATR, // SPECIES_FERALIGATR
- HOENN_DEX_SENTRET, // SPECIES_SENTRET
- HOENN_DEX_FURRET, // SPECIES_FURRET
- HOENN_DEX_HOOTHOOT, // SPECIES_HOOTHOOT
- HOENN_DEX_NOCTOWL, // SPECIES_NOCTOWL
- HOENN_DEX_LEDYBA, // SPECIES_LEDYBA
- HOENN_DEX_LEDIAN, // SPECIES_LEDIAN
- HOENN_DEX_SPINARAK, // SPECIES_SPINARAK
- HOENN_DEX_ARIADOS, // SPECIES_ARIADOS
- HOENN_DEX_CROBAT, // SPECIES_CROBAT
- HOENN_DEX_CHINCHOU, // SPECIES_CHINCHOU
- HOENN_DEX_LANTURN, // SPECIES_LANTURN
- HOENN_DEX_PICHU, // SPECIES_PICHU
- HOENN_DEX_CLEFFA, // SPECIES_CLEFFA
- HOENN_DEX_IGGLYBUFF, // SPECIES_IGGLYBUFF
- HOENN_DEX_TOGEPI, // SPECIES_TOGEPI
- HOENN_DEX_TOGETIC, // SPECIES_TOGETIC
- HOENN_DEX_NATU, // SPECIES_NATU
- HOENN_DEX_XATU, // SPECIES_XATU
- HOENN_DEX_MAREEP, // SPECIES_MAREEP
- HOENN_DEX_FLAAFFY, // SPECIES_FLAAFFY
- HOENN_DEX_AMPHAROS, // SPECIES_AMPHAROS
- HOENN_DEX_BELLOSSOM, // SPECIES_BELLOSSOM
- HOENN_DEX_MARILL, // SPECIES_MARILL
- HOENN_DEX_AZUMARILL, // SPECIES_AZUMARILL
- HOENN_DEX_SUDOWOODO, // SPECIES_SUDOWOODO
- HOENN_DEX_POLITOED, // SPECIES_POLITOED
- HOENN_DEX_HOPPIP, // SPECIES_HOPPIP
- HOENN_DEX_SKIPLOOM, // SPECIES_SKIPLOOM
- HOENN_DEX_JUMPLUFF, // SPECIES_JUMPLUFF
- HOENN_DEX_AIPOM, // SPECIES_AIPOM
- HOENN_DEX_SUNKERN, // SPECIES_SUNKERN
- HOENN_DEX_SUNFLORA, // SPECIES_SUNFLORA
- HOENN_DEX_YANMA, // SPECIES_YANMA
- HOENN_DEX_WOOPER, // SPECIES_WOOPER
- HOENN_DEX_QUAGSIRE, // SPECIES_QUAGSIRE
- HOENN_DEX_ESPEON, // SPECIES_ESPEON
- HOENN_DEX_UMBREON, // SPECIES_UMBREON
- HOENN_DEX_MURKROW, // SPECIES_MURKROW
- HOENN_DEX_SLOWKING, // SPECIES_SLOWKING
- HOENN_DEX_MISDREAVUS, // SPECIES_MISDREAVUS
- HOENN_DEX_UNOWN, // SPECIES_UNOWN
- HOENN_DEX_WOBBUFFET, // SPECIES_WOBBUFFET
- HOENN_DEX_GIRAFARIG, // SPECIES_GIRAFARIG
- HOENN_DEX_PINECO, // SPECIES_PINECO
- HOENN_DEX_FORRETRESS, // SPECIES_FORRETRESS
- HOENN_DEX_DUNSPARCE, // SPECIES_DUNSPARCE
- HOENN_DEX_GLIGAR, // SPECIES_GLIGAR
- HOENN_DEX_STEELIX, // SPECIES_STEELIX
- HOENN_DEX_SNUBBULL, // SPECIES_SNUBBULL
- HOENN_DEX_GRANBULL, // SPECIES_GRANBULL
- HOENN_DEX_QWILFISH, // SPECIES_QWILFISH
- HOENN_DEX_SCIZOR, // SPECIES_SCIZOR
- HOENN_DEX_SHUCKLE, // SPECIES_SHUCKLE
- HOENN_DEX_HERACROSS, // SPECIES_HERACROSS
- HOENN_DEX_SNEASEL, // SPECIES_SNEASEL
- HOENN_DEX_TEDDIURSA, // SPECIES_TEDDIURSA
- HOENN_DEX_URSARING, // SPECIES_URSARING
- HOENN_DEX_SLUGMA, // SPECIES_SLUGMA
- HOENN_DEX_MAGCARGO, // SPECIES_MAGCARGO
- HOENN_DEX_SWINUB, // SPECIES_SWINUB
- HOENN_DEX_PILOSWINE, // SPECIES_PILOSWINE
- HOENN_DEX_CORSOLA, // SPECIES_CORSOLA
- HOENN_DEX_REMORAID, // SPECIES_REMORAID
- HOENN_DEX_OCTILLERY, // SPECIES_OCTILLERY
- HOENN_DEX_DELIBIRD, // SPECIES_DELIBIRD
- HOENN_DEX_MANTINE, // SPECIES_MANTINE
- HOENN_DEX_SKARMORY, // SPECIES_SKARMORY
- HOENN_DEX_HOUNDOUR, // SPECIES_HOUNDOUR
- HOENN_DEX_HOUNDOOM, // SPECIES_HOUNDOOM
- HOENN_DEX_KINGDRA, // SPECIES_KINGDRA
- HOENN_DEX_PHANPY, // SPECIES_PHANPY
- HOENN_DEX_DONPHAN, // SPECIES_DONPHAN
- HOENN_DEX_PORYGON2, // SPECIES_PORYGON2
- HOENN_DEX_STANTLER, // SPECIES_STANTLER
- HOENN_DEX_SMEARGLE, // SPECIES_SMEARGLE
- HOENN_DEX_TYROGUE, // SPECIES_TYROGUE
- HOENN_DEX_HITMONTOP, // SPECIES_HITMONTOP
- HOENN_DEX_SMOOCHUM, // SPECIES_SMOOCHUM
- HOENN_DEX_ELEKID, // SPECIES_ELEKID
- HOENN_DEX_MAGBY, // SPECIES_MAGBY
- HOENN_DEX_MILTANK, // SPECIES_MILTANK
- HOENN_DEX_BLISSEY, // SPECIES_BLISSEY
- HOENN_DEX_RAIKOU, // SPECIES_RAIKOU
- HOENN_DEX_ENTEI, // SPECIES_ENTEI
- HOENN_DEX_SUICUNE, // SPECIES_SUICUNE
- HOENN_DEX_LARVITAR, // SPECIES_LARVITAR
- HOENN_DEX_PUPITAR, // SPECIES_PUPITAR
- HOENN_DEX_TYRANITAR, // SPECIES_TYRANITAR
- HOENN_DEX_LUGIA, // SPECIES_LUGIA
- HOENN_DEX_HO_OH, // SPECIES_HO-OH
- HOENN_DEX_CELEBI, // SPECIES_CELEBI
- HOENN_DEX_OLD_UNOWN_B, // SPECIES_OLD_UNOWN_B
- HOENN_DEX_OLD_UNOWN_C, // SPECIES_OLD_UNOWN_C
- HOENN_DEX_OLD_UNOWN_D, // SPECIES_OLD_UNOWN_D
- HOENN_DEX_OLD_UNOWN_E, // SPECIES_OLD_UNOWN_E
- HOENN_DEX_OLD_UNOWN_F, // SPECIES_OLD_UNOWN_F
- HOENN_DEX_OLD_UNOWN_G, // SPECIES_OLD_UNOWN_G
- HOENN_DEX_OLD_UNOWN_H, // SPECIES_OLD_UNOWN_H
- HOENN_DEX_OLD_UNOWN_I, // SPECIES_OLD_UNOWN_I
- HOENN_DEX_OLD_UNOWN_J, // SPECIES_OLD_UNOWN_J
- HOENN_DEX_OLD_UNOWN_K, // SPECIES_OLD_UNOWN_K
- HOENN_DEX_OLD_UNOWN_L, // SPECIES_OLD_UNOWN_L
- HOENN_DEX_OLD_UNOWN_M, // SPECIES_OLD_UNOWN_M
- HOENN_DEX_OLD_UNOWN_N, // SPECIES_OLD_UNOWN_N
- HOENN_DEX_OLD_UNOWN_O, // SPECIES_OLD_UNOWN_O
- HOENN_DEX_OLD_UNOWN_P, // SPECIES_OLD_UNOWN_P
- HOENN_DEX_OLD_UNOWN_Q, // SPECIES_OLD_UNOWN_Q
- HOENN_DEX_OLD_UNOWN_R, // SPECIES_OLD_UNOWN_R
- HOENN_DEX_OLD_UNOWN_S, // SPECIES_OLD_UNOWN_S
- HOENN_DEX_OLD_UNOWN_T, // SPECIES_OLD_UNOWN_T
- HOENN_DEX_OLD_UNOWN_U, // SPECIES_OLD_UNOWN_U
- HOENN_DEX_OLD_UNOWN_V, // SPECIES_OLD_UNOWN_V
- HOENN_DEX_OLD_UNOWN_W, // SPECIES_OLD_UNOWN_W
- HOENN_DEX_OLD_UNOWN_X, // SPECIES_OLD_UNOWN_X
- HOENN_DEX_OLD_UNOWN_Y, // SPECIES_OLD_UNOWN_Y
- HOENN_DEX_OLD_UNOWN_Z, // SPECIES_OLD_UNOWN_Z
- HOENN_DEX_TREECKO, // SPECIES_TREECKO
- HOENN_DEX_GROVYLE, // SPECIES_GROVYLE
- HOENN_DEX_SCEPTILE, // SPECIES_SCEPTILE
- HOENN_DEX_TORCHIC, // SPECIES_TORCHIC
- HOENN_DEX_COMBUSKEN, // SPECIES_COMBUSKEN
- HOENN_DEX_BLAZIKEN, // SPECIES_BLAZIKEN
- HOENN_DEX_MUDKIP, // SPECIES_MUDKIP
- HOENN_DEX_MARSHTOMP, // SPECIES_MARSHTOMP
- HOENN_DEX_SWAMPERT, // SPECIES_SWAMPERT
- HOENN_DEX_POOCHYENA, // SPECIES_POOCHYENA
- HOENN_DEX_MIGHTYENA, // SPECIES_MIGHTYENA
- HOENN_DEX_ZIGZAGOON, // SPECIES_ZIGZAGOON
- HOENN_DEX_LINOONE, // SPECIES_LINOONE
- HOENN_DEX_WURMPLE, // SPECIES_WURMPLE
- HOENN_DEX_SILCOON, // SPECIES_SILCOON
- HOENN_DEX_BEAUTIFLY, // SPECIES_BEAUTIFLY
- HOENN_DEX_CASCOON, // SPECIES_CASCOON
- HOENN_DEX_DUSTOX, // SPECIES_DUSTOX
- HOENN_DEX_LOTAD, // SPECIES_LOTAD
- HOENN_DEX_LOMBRE, // SPECIES_LOMBRE
- HOENN_DEX_LUDICOLO, // SPECIES_LUDICOLO
- HOENN_DEX_SEEDOT, // SPECIES_SEEDOT
- HOENN_DEX_NUZLEAF, // SPECIES_NUZLEAF
- HOENN_DEX_SHIFTRY, // SPECIES_SHIFTRY
- HOENN_DEX_NINCADA, // SPECIES_NINCADA
- HOENN_DEX_NINJASK, // SPECIES_NINJASK
- HOENN_DEX_SHEDINJA, // SPECIES_SHEDINJA
- HOENN_DEX_TAILLOW, // SPECIES_TAILLOW
- HOENN_DEX_SWELLOW, // SPECIES_SWELLOW
- HOENN_DEX_SHROOMISH, // SPECIES_SHROOMISH
- HOENN_DEX_BRELOOM, // SPECIES_BRELOOM
- HOENN_DEX_SPINDA, // SPECIES_SPINDA
- HOENN_DEX_WINGULL, // SPECIES_WINGULL
- HOENN_DEX_PELIPPER, // SPECIES_PELIPPER
- HOENN_DEX_SURSKIT, // SPECIES_SURSKIT
- HOENN_DEX_MASQUERAIN, // SPECIES_MASQUERAIN
- HOENN_DEX_WAILMER, // SPECIES_WAILMER
- HOENN_DEX_WAILORD, // SPECIES_WAILORD
- HOENN_DEX_SKITTY, // SPECIES_SKITTY
- HOENN_DEX_DELCATTY, // SPECIES_DELCATTY
- HOENN_DEX_KECLEON, // SPECIES_KECLEON
- HOENN_DEX_BALTOY, // SPECIES_BALTOY
- HOENN_DEX_CLAYDOL, // SPECIES_CLAYDOL
- HOENN_DEX_NOSEPASS, // SPECIES_NOSEPASS
- HOENN_DEX_TORKOAL, // SPECIES_TORKOAL
- HOENN_DEX_SABLEYE, // SPECIES_SABLEYE
- HOENN_DEX_BARBOACH, // SPECIES_BARBOACH
- HOENN_DEX_WHISCASH, // SPECIES_WHISCASH
- HOENN_DEX_LUVDISC, // SPECIES_LUVDISC
- HOENN_DEX_CORPHISH, // SPECIES_CORPHISH
- HOENN_DEX_CRAWDAUNT, // SPECIES_CRAWDAUNT
- HOENN_DEX_FEEBAS, // SPECIES_FEEBAS
- HOENN_DEX_MILOTIC, // SPECIES_MILOTIC
- HOENN_DEX_CARVANHA, // SPECIES_CARVANHA
- HOENN_DEX_SHARPEDO, // SPECIES_SHARPEDO
- HOENN_DEX_TRAPINCH, // SPECIES_TRAPINCH
- HOENN_DEX_VIBRAVA, // SPECIES_VIBRAVA
- HOENN_DEX_FLYGON, // SPECIES_FLYGON
- HOENN_DEX_MAKUHITA, // SPECIES_MAKUHITA
- HOENN_DEX_HARIYAMA, // SPECIES_HARIYAMA
- HOENN_DEX_ELECTRIKE, // SPECIES_ELECTRIKE
- HOENN_DEX_MANECTRIC, // SPECIES_MANECTRIC
- HOENN_DEX_NUMEL, // SPECIES_NUMEL
- HOENN_DEX_CAMERUPT, // SPECIES_CAMERUPT
- HOENN_DEX_SPHEAL, // SPECIES_SPHEAL
- HOENN_DEX_SEALEO, // SPECIES_SEALEO
- HOENN_DEX_WALREIN, // SPECIES_WALREIN
- HOENN_DEX_CACNEA, // SPECIES_CACNEA
- HOENN_DEX_CACTURNE, // SPECIES_CACTURNE
- HOENN_DEX_SNORUNT, // SPECIES_SNORUNT
- HOENN_DEX_GLALIE, // SPECIES_GLALIE
- HOENN_DEX_LUNATONE, // SPECIES_LUNATONE
- HOENN_DEX_SOLROCK, // SPECIES_SOLROCK
- HOENN_DEX_AZURILL, // SPECIES_AZURILL
- HOENN_DEX_SPOINK, // SPECIES_SPOINK
- HOENN_DEX_GRUMPIG, // SPECIES_GRUMPIG
- HOENN_DEX_PLUSLE, // SPECIES_PLUSLE
- HOENN_DEX_MINUN, // SPECIES_MINUN
- HOENN_DEX_MAWILE, // SPECIES_MAWILE
- HOENN_DEX_MEDITITE, // SPECIES_MEDITITE
- HOENN_DEX_MEDICHAM, // SPECIES_MEDICHAM
- HOENN_DEX_SWABLU, // SPECIES_SWABLU
- HOENN_DEX_ALTARIA, // SPECIES_ALTARIA
- HOENN_DEX_WYNAUT, // SPECIES_WYNAUT
- HOENN_DEX_DUSKULL, // SPECIES_DUSKULL
- HOENN_DEX_DUSCLOPS, // SPECIES_DUSCLOPS
- HOENN_DEX_ROSELIA, // SPECIES_ROSELIA
- HOENN_DEX_SLAKOTH, // SPECIES_SLAKOTH
- HOENN_DEX_VIGOROTH, // SPECIES_VIGOROTH
- HOENN_DEX_SLAKING, // SPECIES_SLAKING
- HOENN_DEX_GULPIN, // SPECIES_GULPIN
- HOENN_DEX_SWALOT, // SPECIES_SWALOT
- HOENN_DEX_TROPIUS, // SPECIES_TROPIUS
- HOENN_DEX_WHISMUR, // SPECIES_WHISMUR
- HOENN_DEX_LOUDRED, // SPECIES_LOUDRED
- HOENN_DEX_EXPLOUD, // SPECIES_EXPLOUD
- HOENN_DEX_CLAMPERL, // SPECIES_CLAMPERL
- HOENN_DEX_HUNTAIL, // SPECIES_HUNTAIL
- HOENN_DEX_GOREBYSS, // SPECIES_GOREBYSS
- HOENN_DEX_ABSOL, // SPECIES_ABSOL
- HOENN_DEX_SHUPPET, // SPECIES_SHUPPET
- HOENN_DEX_BANETTE, // SPECIES_BANETTE
- HOENN_DEX_SEVIPER, // SPECIES_SEVIPER
- HOENN_DEX_ZANGOOSE, // SPECIES_ZANGOOSE
- HOENN_DEX_RELICANTH, // SPECIES_RELICANTH
- HOENN_DEX_ARON, // SPECIES_ARON
- HOENN_DEX_LAIRON, // SPECIES_LAIRON
- HOENN_DEX_AGGRON, // SPECIES_AGGRON
- HOENN_DEX_CASTFORM, // SPECIES_CASTFORM
- HOENN_DEX_VOLBEAT, // SPECIES_VOLBEAT
- HOENN_DEX_ILLUMISE, // SPECIES_ILLUMISE
- HOENN_DEX_LILEEP, // SPECIES_LILEEP
- HOENN_DEX_CRADILY, // SPECIES_CRADILY
- HOENN_DEX_ANORITH, // SPECIES_ANORITH
- HOENN_DEX_ARMALDO, // SPECIES_ARMALDO
- HOENN_DEX_RALTS, // SPECIES_RALTS
- HOENN_DEX_KIRLIA, // SPECIES_KIRLIA
- HOENN_DEX_GARDEVOIR, // SPECIES_GARDEVOIR
- HOENN_DEX_BAGON, // SPECIES_BAGON
- HOENN_DEX_SHELGON, // SPECIES_SHELGON
- HOENN_DEX_SALAMENCE, // SPECIES_SALAMENCE
- HOENN_DEX_BELDUM, // SPECIES_BELDUM
- HOENN_DEX_METANG, // SPECIES_METANG
- HOENN_DEX_METAGROSS, // SPECIES_METAGROSS
- HOENN_DEX_REGIROCK, // SPECIES_REGIROCK
- HOENN_DEX_REGICE, // SPECIES_REGICE
- HOENN_DEX_REGISTEEL, // SPECIES_REGISTEEL
- HOENN_DEX_KYOGRE, // SPECIES_KYOGRE
- HOENN_DEX_GROUDON, // SPECIES_GROUDON
- HOENN_DEX_RAYQUAZA, // SPECIES_RAYQUAZA
- HOENN_DEX_LATIAS, // SPECIES_LATIAS
- HOENN_DEX_LATIOS, // SPECIES_LATIOS
- HOENN_DEX_JIRACHI, // SPECIES_JIRACHI
- HOENN_DEX_DEOXYS, // SPECIES_DEOXYS
- HOENN_DEX_CHIMECHO // SPECIES_CHIMECHO
+ SPECIES_TO_HOENN(BULBASAUR),
+ SPECIES_TO_HOENN(IVYSAUR),
+ SPECIES_TO_HOENN(VENUSAUR),
+ SPECIES_TO_HOENN(CHARMANDER),
+ SPECIES_TO_HOENN(CHARMELEON),
+ SPECIES_TO_HOENN(CHARIZARD),
+ SPECIES_TO_HOENN(SQUIRTLE),
+ SPECIES_TO_HOENN(WARTORTLE),
+ SPECIES_TO_HOENN(BLASTOISE),
+ SPECIES_TO_HOENN(CATERPIE),
+ SPECIES_TO_HOENN(METAPOD),
+ SPECIES_TO_HOENN(BUTTERFREE),
+ SPECIES_TO_HOENN(WEEDLE),
+ SPECIES_TO_HOENN(KAKUNA),
+ SPECIES_TO_HOENN(BEEDRILL),
+ SPECIES_TO_HOENN(PIDGEY),
+ SPECIES_TO_HOENN(PIDGEOTTO),
+ SPECIES_TO_HOENN(PIDGEOT),
+ SPECIES_TO_HOENN(RATTATA),
+ SPECIES_TO_HOENN(RATICATE),
+ SPECIES_TO_HOENN(SPEAROW),
+ SPECIES_TO_HOENN(FEAROW),
+ SPECIES_TO_HOENN(EKANS),
+ SPECIES_TO_HOENN(ARBOK),
+ SPECIES_TO_HOENN(PIKACHU),
+ SPECIES_TO_HOENN(RAICHU),
+ SPECIES_TO_HOENN(SANDSHREW),
+ SPECIES_TO_HOENN(SANDSLASH),
+ SPECIES_TO_HOENN(NIDORAN_F),
+ SPECIES_TO_HOENN(NIDORINA),
+ SPECIES_TO_HOENN(NIDOQUEEN),
+ SPECIES_TO_HOENN(NIDORAN_M),
+ SPECIES_TO_HOENN(NIDORINO),
+ SPECIES_TO_HOENN(NIDOKING),
+ SPECIES_TO_HOENN(CLEFAIRY),
+ SPECIES_TO_HOENN(CLEFABLE),
+ SPECIES_TO_HOENN(VULPIX),
+ SPECIES_TO_HOENN(NINETALES),
+ SPECIES_TO_HOENN(JIGGLYPUFF),
+ SPECIES_TO_HOENN(WIGGLYTUFF),
+ SPECIES_TO_HOENN(ZUBAT),
+ SPECIES_TO_HOENN(GOLBAT),
+ SPECIES_TO_HOENN(ODDISH),
+ SPECIES_TO_HOENN(GLOOM),
+ SPECIES_TO_HOENN(VILEPLUME),
+ SPECIES_TO_HOENN(PARAS),
+ SPECIES_TO_HOENN(PARASECT),
+ SPECIES_TO_HOENN(VENONAT),
+ SPECIES_TO_HOENN(VENOMOTH),
+ SPECIES_TO_HOENN(DIGLETT),
+ SPECIES_TO_HOENN(DUGTRIO),
+ SPECIES_TO_HOENN(MEOWTH),
+ SPECIES_TO_HOENN(PERSIAN),
+ SPECIES_TO_HOENN(PSYDUCK),
+ SPECIES_TO_HOENN(GOLDUCK),
+ SPECIES_TO_HOENN(MANKEY),
+ SPECIES_TO_HOENN(PRIMEAPE),
+ SPECIES_TO_HOENN(GROWLITHE),
+ SPECIES_TO_HOENN(ARCANINE),
+ SPECIES_TO_HOENN(POLIWAG),
+ SPECIES_TO_HOENN(POLIWHIRL),
+ SPECIES_TO_HOENN(POLIWRATH),
+ SPECIES_TO_HOENN(ABRA),
+ SPECIES_TO_HOENN(KADABRA),
+ SPECIES_TO_HOENN(ALAKAZAM),
+ SPECIES_TO_HOENN(MACHOP),
+ SPECIES_TO_HOENN(MACHOKE),
+ SPECIES_TO_HOENN(MACHAMP),
+ SPECIES_TO_HOENN(BELLSPROUT),
+ SPECIES_TO_HOENN(WEEPINBELL),
+ SPECIES_TO_HOENN(VICTREEBEL),
+ SPECIES_TO_HOENN(TENTACOOL),
+ SPECIES_TO_HOENN(TENTACRUEL),
+ SPECIES_TO_HOENN(GEODUDE),
+ SPECIES_TO_HOENN(GRAVELER),
+ SPECIES_TO_HOENN(GOLEM),
+ SPECIES_TO_HOENN(PONYTA),
+ SPECIES_TO_HOENN(RAPIDASH),
+ SPECIES_TO_HOENN(SLOWPOKE),
+ SPECIES_TO_HOENN(SLOWBRO),
+ SPECIES_TO_HOENN(MAGNEMITE),
+ SPECIES_TO_HOENN(MAGNETON),
+ SPECIES_TO_HOENN(FARFETCHD),
+ SPECIES_TO_HOENN(DODUO),
+ SPECIES_TO_HOENN(DODRIO),
+ SPECIES_TO_HOENN(SEEL),
+ SPECIES_TO_HOENN(DEWGONG),
+ SPECIES_TO_HOENN(GRIMER),
+ SPECIES_TO_HOENN(MUK),
+ SPECIES_TO_HOENN(SHELLDER),
+ SPECIES_TO_HOENN(CLOYSTER),
+ SPECIES_TO_HOENN(GASTLY),
+ SPECIES_TO_HOENN(HAUNTER),
+ SPECIES_TO_HOENN(GENGAR),
+ SPECIES_TO_HOENN(ONIX),
+ SPECIES_TO_HOENN(DROWZEE),
+ SPECIES_TO_HOENN(HYPNO),
+ SPECIES_TO_HOENN(KRABBY),
+ SPECIES_TO_HOENN(KINGLER),
+ SPECIES_TO_HOENN(VOLTORB),
+ SPECIES_TO_HOENN(ELECTRODE),
+ SPECIES_TO_HOENN(EXEGGCUTE),
+ SPECIES_TO_HOENN(EXEGGUTOR),
+ SPECIES_TO_HOENN(CUBONE),
+ SPECIES_TO_HOENN(MAROWAK),
+ SPECIES_TO_HOENN(HITMONLEE),
+ SPECIES_TO_HOENN(HITMONCHAN),
+ SPECIES_TO_HOENN(LICKITUNG),
+ SPECIES_TO_HOENN(KOFFING),
+ SPECIES_TO_HOENN(WEEZING),
+ SPECIES_TO_HOENN(RHYHORN),
+ SPECIES_TO_HOENN(RHYDON),
+ SPECIES_TO_HOENN(CHANSEY),
+ SPECIES_TO_HOENN(TANGELA),
+ SPECIES_TO_HOENN(KANGASKHAN),
+ SPECIES_TO_HOENN(HORSEA),
+ SPECIES_TO_HOENN(SEADRA),
+ SPECIES_TO_HOENN(GOLDEEN),
+ SPECIES_TO_HOENN(SEAKING),
+ SPECIES_TO_HOENN(STARYU),
+ SPECIES_TO_HOENN(STARMIE),
+ SPECIES_TO_HOENN(MR_MIME),
+ SPECIES_TO_HOENN(SCYTHER),
+ SPECIES_TO_HOENN(JYNX),
+ SPECIES_TO_HOENN(ELECTABUZZ),
+ SPECIES_TO_HOENN(MAGMAR),
+ SPECIES_TO_HOENN(PINSIR),
+ SPECIES_TO_HOENN(TAUROS),
+ SPECIES_TO_HOENN(MAGIKARP),
+ SPECIES_TO_HOENN(GYARADOS),
+ SPECIES_TO_HOENN(LAPRAS),
+ SPECIES_TO_HOENN(DITTO),
+ SPECIES_TO_HOENN(EEVEE),
+ SPECIES_TO_HOENN(VAPOREON),
+ SPECIES_TO_HOENN(JOLTEON),
+ SPECIES_TO_HOENN(FLAREON),
+ SPECIES_TO_HOENN(PORYGON),
+ SPECIES_TO_HOENN(OMANYTE),
+ SPECIES_TO_HOENN(OMASTAR),
+ SPECIES_TO_HOENN(KABUTO),
+ SPECIES_TO_HOENN(KABUTOPS),
+ SPECIES_TO_HOENN(AERODACTYL),
+ SPECIES_TO_HOENN(SNORLAX),
+ SPECIES_TO_HOENN(ARTICUNO),
+ SPECIES_TO_HOENN(ZAPDOS),
+ SPECIES_TO_HOENN(MOLTRES),
+ SPECIES_TO_HOENN(DRATINI),
+ SPECIES_TO_HOENN(DRAGONAIR),
+ SPECIES_TO_HOENN(DRAGONITE),
+ SPECIES_TO_HOENN(MEWTWO),
+ SPECIES_TO_HOENN(MEW),
+ SPECIES_TO_HOENN(CHIKORITA),
+ SPECIES_TO_HOENN(BAYLEEF),
+ SPECIES_TO_HOENN(MEGANIUM),
+ SPECIES_TO_HOENN(CYNDAQUIL),
+ SPECIES_TO_HOENN(QUILAVA),
+ SPECIES_TO_HOENN(TYPHLOSION),
+ SPECIES_TO_HOENN(TOTODILE),
+ SPECIES_TO_HOENN(CROCONAW),
+ SPECIES_TO_HOENN(FERALIGATR),
+ SPECIES_TO_HOENN(SENTRET),
+ SPECIES_TO_HOENN(FURRET),
+ SPECIES_TO_HOENN(HOOTHOOT),
+ SPECIES_TO_HOENN(NOCTOWL),
+ SPECIES_TO_HOENN(LEDYBA),
+ SPECIES_TO_HOENN(LEDIAN),
+ SPECIES_TO_HOENN(SPINARAK),
+ SPECIES_TO_HOENN(ARIADOS),
+ SPECIES_TO_HOENN(CROBAT),
+ SPECIES_TO_HOENN(CHINCHOU),
+ SPECIES_TO_HOENN(LANTURN),
+ SPECIES_TO_HOENN(PICHU),
+ SPECIES_TO_HOENN(CLEFFA),
+ SPECIES_TO_HOENN(IGGLYBUFF),
+ SPECIES_TO_HOENN(TOGEPI),
+ SPECIES_TO_HOENN(TOGETIC),
+ SPECIES_TO_HOENN(NATU),
+ SPECIES_TO_HOENN(XATU),
+ SPECIES_TO_HOENN(MAREEP),
+ SPECIES_TO_HOENN(FLAAFFY),
+ SPECIES_TO_HOENN(AMPHAROS),
+ SPECIES_TO_HOENN(BELLOSSOM),
+ SPECIES_TO_HOENN(MARILL),
+ SPECIES_TO_HOENN(AZUMARILL),
+ SPECIES_TO_HOENN(SUDOWOODO),
+ SPECIES_TO_HOENN(POLITOED),
+ SPECIES_TO_HOENN(HOPPIP),
+ SPECIES_TO_HOENN(SKIPLOOM),
+ SPECIES_TO_HOENN(JUMPLUFF),
+ SPECIES_TO_HOENN(AIPOM),
+ SPECIES_TO_HOENN(SUNKERN),
+ SPECIES_TO_HOENN(SUNFLORA),
+ SPECIES_TO_HOENN(YANMA),
+ SPECIES_TO_HOENN(WOOPER),
+ SPECIES_TO_HOENN(QUAGSIRE),
+ SPECIES_TO_HOENN(ESPEON),
+ SPECIES_TO_HOENN(UMBREON),
+ SPECIES_TO_HOENN(MURKROW),
+ SPECIES_TO_HOENN(SLOWKING),
+ SPECIES_TO_HOENN(MISDREAVUS),
+ SPECIES_TO_HOENN(UNOWN),
+ SPECIES_TO_HOENN(WOBBUFFET),
+ SPECIES_TO_HOENN(GIRAFARIG),
+ SPECIES_TO_HOENN(PINECO),
+ SPECIES_TO_HOENN(FORRETRESS),
+ SPECIES_TO_HOENN(DUNSPARCE),
+ SPECIES_TO_HOENN(GLIGAR),
+ SPECIES_TO_HOENN(STEELIX),
+ SPECIES_TO_HOENN(SNUBBULL),
+ SPECIES_TO_HOENN(GRANBULL),
+ SPECIES_TO_HOENN(QWILFISH),
+ SPECIES_TO_HOENN(SCIZOR),
+ SPECIES_TO_HOENN(SHUCKLE),
+ SPECIES_TO_HOENN(HERACROSS),
+ SPECIES_TO_HOENN(SNEASEL),
+ SPECIES_TO_HOENN(TEDDIURSA),
+ SPECIES_TO_HOENN(URSARING),
+ SPECIES_TO_HOENN(SLUGMA),
+ SPECIES_TO_HOENN(MAGCARGO),
+ SPECIES_TO_HOENN(SWINUB),
+ SPECIES_TO_HOENN(PILOSWINE),
+ SPECIES_TO_HOENN(CORSOLA),
+ SPECIES_TO_HOENN(REMORAID),
+ SPECIES_TO_HOENN(OCTILLERY),
+ SPECIES_TO_HOENN(DELIBIRD),
+ SPECIES_TO_HOENN(MANTINE),
+ SPECIES_TO_HOENN(SKARMORY),
+ SPECIES_TO_HOENN(HOUNDOUR),
+ SPECIES_TO_HOENN(HOUNDOOM),
+ SPECIES_TO_HOENN(KINGDRA),
+ SPECIES_TO_HOENN(PHANPY),
+ SPECIES_TO_HOENN(DONPHAN),
+ SPECIES_TO_HOENN(PORYGON2),
+ SPECIES_TO_HOENN(STANTLER),
+ SPECIES_TO_HOENN(SMEARGLE),
+ SPECIES_TO_HOENN(TYROGUE),
+ SPECIES_TO_HOENN(HITMONTOP),
+ SPECIES_TO_HOENN(SMOOCHUM),
+ SPECIES_TO_HOENN(ELEKID),
+ SPECIES_TO_HOENN(MAGBY),
+ SPECIES_TO_HOENN(MILTANK),
+ SPECIES_TO_HOENN(BLISSEY),
+ SPECIES_TO_HOENN(RAIKOU),
+ SPECIES_TO_HOENN(ENTEI),
+ SPECIES_TO_HOENN(SUICUNE),
+ SPECIES_TO_HOENN(LARVITAR),
+ SPECIES_TO_HOENN(PUPITAR),
+ SPECIES_TO_HOENN(TYRANITAR),
+ SPECIES_TO_HOENN(LUGIA),
+ SPECIES_TO_HOENN(HO_OH),
+ SPECIES_TO_HOENN(CELEBI),
+ SPECIES_TO_HOENN(OLD_UNOWN_B),
+ SPECIES_TO_HOENN(OLD_UNOWN_C),
+ SPECIES_TO_HOENN(OLD_UNOWN_D),
+ SPECIES_TO_HOENN(OLD_UNOWN_E),
+ SPECIES_TO_HOENN(OLD_UNOWN_F),
+ SPECIES_TO_HOENN(OLD_UNOWN_G),
+ SPECIES_TO_HOENN(OLD_UNOWN_H),
+ SPECIES_TO_HOENN(OLD_UNOWN_I),
+ SPECIES_TO_HOENN(OLD_UNOWN_J),
+ SPECIES_TO_HOENN(OLD_UNOWN_K),
+ SPECIES_TO_HOENN(OLD_UNOWN_L),
+ SPECIES_TO_HOENN(OLD_UNOWN_M),
+ SPECIES_TO_HOENN(OLD_UNOWN_N),
+ SPECIES_TO_HOENN(OLD_UNOWN_O),
+ SPECIES_TO_HOENN(OLD_UNOWN_P),
+ SPECIES_TO_HOENN(OLD_UNOWN_Q),
+ SPECIES_TO_HOENN(OLD_UNOWN_R),
+ SPECIES_TO_HOENN(OLD_UNOWN_S),
+ SPECIES_TO_HOENN(OLD_UNOWN_T),
+ SPECIES_TO_HOENN(OLD_UNOWN_U),
+ SPECIES_TO_HOENN(OLD_UNOWN_V),
+ SPECIES_TO_HOENN(OLD_UNOWN_W),
+ SPECIES_TO_HOENN(OLD_UNOWN_X),
+ SPECIES_TO_HOENN(OLD_UNOWN_Y),
+ SPECIES_TO_HOENN(OLD_UNOWN_Z),
+ SPECIES_TO_HOENN(TREECKO),
+ SPECIES_TO_HOENN(GROVYLE),
+ SPECIES_TO_HOENN(SCEPTILE),
+ SPECIES_TO_HOENN(TORCHIC),
+ SPECIES_TO_HOENN(COMBUSKEN),
+ SPECIES_TO_HOENN(BLAZIKEN),
+ SPECIES_TO_HOENN(MUDKIP),
+ SPECIES_TO_HOENN(MARSHTOMP),
+ SPECIES_TO_HOENN(SWAMPERT),
+ SPECIES_TO_HOENN(POOCHYENA),
+ SPECIES_TO_HOENN(MIGHTYENA),
+ SPECIES_TO_HOENN(ZIGZAGOON),
+ SPECIES_TO_HOENN(LINOONE),
+ SPECIES_TO_HOENN(WURMPLE),
+ SPECIES_TO_HOENN(SILCOON),
+ SPECIES_TO_HOENN(BEAUTIFLY),
+ SPECIES_TO_HOENN(CASCOON),
+ SPECIES_TO_HOENN(DUSTOX),
+ SPECIES_TO_HOENN(LOTAD),
+ SPECIES_TO_HOENN(LOMBRE),
+ SPECIES_TO_HOENN(LUDICOLO),
+ SPECIES_TO_HOENN(SEEDOT),
+ SPECIES_TO_HOENN(NUZLEAF),
+ SPECIES_TO_HOENN(SHIFTRY),
+ SPECIES_TO_HOENN(NINCADA),
+ SPECIES_TO_HOENN(NINJASK),
+ SPECIES_TO_HOENN(SHEDINJA),
+ SPECIES_TO_HOENN(TAILLOW),
+ SPECIES_TO_HOENN(SWELLOW),
+ SPECIES_TO_HOENN(SHROOMISH),
+ SPECIES_TO_HOENN(BRELOOM),
+ SPECIES_TO_HOENN(SPINDA),
+ SPECIES_TO_HOENN(WINGULL),
+ SPECIES_TO_HOENN(PELIPPER),
+ SPECIES_TO_HOENN(SURSKIT),
+ SPECIES_TO_HOENN(MASQUERAIN),
+ SPECIES_TO_HOENN(WAILMER),
+ SPECIES_TO_HOENN(WAILORD),
+ SPECIES_TO_HOENN(SKITTY),
+ SPECIES_TO_HOENN(DELCATTY),
+ SPECIES_TO_HOENN(KECLEON),
+ SPECIES_TO_HOENN(BALTOY),
+ SPECIES_TO_HOENN(CLAYDOL),
+ SPECIES_TO_HOENN(NOSEPASS),
+ SPECIES_TO_HOENN(TORKOAL),
+ SPECIES_TO_HOENN(SABLEYE),
+ SPECIES_TO_HOENN(BARBOACH),
+ SPECIES_TO_HOENN(WHISCASH),
+ SPECIES_TO_HOENN(LUVDISC),
+ SPECIES_TO_HOENN(CORPHISH),
+ SPECIES_TO_HOENN(CRAWDAUNT),
+ SPECIES_TO_HOENN(FEEBAS),
+ SPECIES_TO_HOENN(MILOTIC),
+ SPECIES_TO_HOENN(CARVANHA),
+ SPECIES_TO_HOENN(SHARPEDO),
+ SPECIES_TO_HOENN(TRAPINCH),
+ SPECIES_TO_HOENN(VIBRAVA),
+ SPECIES_TO_HOENN(FLYGON),
+ SPECIES_TO_HOENN(MAKUHITA),
+ SPECIES_TO_HOENN(HARIYAMA),
+ SPECIES_TO_HOENN(ELECTRIKE),
+ SPECIES_TO_HOENN(MANECTRIC),
+ SPECIES_TO_HOENN(NUMEL),
+ SPECIES_TO_HOENN(CAMERUPT),
+ SPECIES_TO_HOENN(SPHEAL),
+ SPECIES_TO_HOENN(SEALEO),
+ SPECIES_TO_HOENN(WALREIN),
+ SPECIES_TO_HOENN(CACNEA),
+ SPECIES_TO_HOENN(CACTURNE),
+ SPECIES_TO_HOENN(SNORUNT),
+ SPECIES_TO_HOENN(GLALIE),
+ SPECIES_TO_HOENN(LUNATONE),
+ SPECIES_TO_HOENN(SOLROCK),
+ SPECIES_TO_HOENN(AZURILL),
+ SPECIES_TO_HOENN(SPOINK),
+ SPECIES_TO_HOENN(GRUMPIG),
+ SPECIES_TO_HOENN(PLUSLE),
+ SPECIES_TO_HOENN(MINUN),
+ SPECIES_TO_HOENN(MAWILE),
+ SPECIES_TO_HOENN(MEDITITE),
+ SPECIES_TO_HOENN(MEDICHAM),
+ SPECIES_TO_HOENN(SWABLU),
+ SPECIES_TO_HOENN(ALTARIA),
+ SPECIES_TO_HOENN(WYNAUT),
+ SPECIES_TO_HOENN(DUSKULL),
+ SPECIES_TO_HOENN(DUSCLOPS),
+ SPECIES_TO_HOENN(ROSELIA),
+ SPECIES_TO_HOENN(SLAKOTH),
+ SPECIES_TO_HOENN(VIGOROTH),
+ SPECIES_TO_HOENN(SLAKING),
+ SPECIES_TO_HOENN(GULPIN),
+ SPECIES_TO_HOENN(SWALOT),
+ SPECIES_TO_HOENN(TROPIUS),
+ SPECIES_TO_HOENN(WHISMUR),
+ SPECIES_TO_HOENN(LOUDRED),
+ SPECIES_TO_HOENN(EXPLOUD),
+ SPECIES_TO_HOENN(CLAMPERL),
+ SPECIES_TO_HOENN(HUNTAIL),
+ SPECIES_TO_HOENN(GOREBYSS),
+ SPECIES_TO_HOENN(ABSOL),
+ SPECIES_TO_HOENN(SHUPPET),
+ SPECIES_TO_HOENN(BANETTE),
+ SPECIES_TO_HOENN(SEVIPER),
+ SPECIES_TO_HOENN(ZANGOOSE),
+ SPECIES_TO_HOENN(RELICANTH),
+ SPECIES_TO_HOENN(ARON),
+ SPECIES_TO_HOENN(LAIRON),
+ SPECIES_TO_HOENN(AGGRON),
+ SPECIES_TO_HOENN(CASTFORM),
+ SPECIES_TO_HOENN(VOLBEAT),
+ SPECIES_TO_HOENN(ILLUMISE),
+ SPECIES_TO_HOENN(LILEEP),
+ SPECIES_TO_HOENN(CRADILY),
+ SPECIES_TO_HOENN(ANORITH),
+ SPECIES_TO_HOENN(ARMALDO),
+ SPECIES_TO_HOENN(RALTS),
+ SPECIES_TO_HOENN(KIRLIA),
+ SPECIES_TO_HOENN(GARDEVOIR),
+ SPECIES_TO_HOENN(BAGON),
+ SPECIES_TO_HOENN(SHELGON),
+ SPECIES_TO_HOENN(SALAMENCE),
+ SPECIES_TO_HOENN(BELDUM),
+ SPECIES_TO_HOENN(METANG),
+ SPECIES_TO_HOENN(METAGROSS),
+ SPECIES_TO_HOENN(REGIROCK),
+ SPECIES_TO_HOENN(REGICE),
+ SPECIES_TO_HOENN(REGISTEEL),
+ SPECIES_TO_HOENN(KYOGRE),
+ SPECIES_TO_HOENN(GROUDON),
+ SPECIES_TO_HOENN(RAYQUAZA),
+ SPECIES_TO_HOENN(LATIAS),
+ SPECIES_TO_HOENN(LATIOS),
+ SPECIES_TO_HOENN(JIRACHI),
+ SPECIES_TO_HOENN(DEOXYS),
+ SPECIES_TO_HOENN(CHIMECHO),
};
const u16 gSpeciesToNationalPokedexNum[] = // Assigns all species to the National Dex Index (Summary No. for National Dex)
{
- // SPECIES_NONE
- NATIONAL_DEX_BULBASAUR, // SPECIES_BULBASAUR
- NATIONAL_DEX_IVYSAUR, // SPECIES_IVYSAUR
- NATIONAL_DEX_VENUSAUR, // SPECIES_VENUSAUR
- NATIONAL_DEX_CHARMANDER, // SPECIES_CHARMANDER
- NATIONAL_DEX_CHARMELEON, // SPECIES_CHARMELEON
- NATIONAL_DEX_CHARIZARD, // SPECIES_CHARIZARD
- NATIONAL_DEX_SQUIRTLE, // SPECIES_SQUIRTLE
- NATIONAL_DEX_WARTORTLE, // SPECIES_WARTORTLE
- NATIONAL_DEX_BLASTOISE, // SPECIES_BLASTOISE
- NATIONAL_DEX_CATERPIE, // SPECIES_CATERPIE
- NATIONAL_DEX_METAPOD, // SPECIES_METAPOD
- NATIONAL_DEX_BUTTERFREE, // SPECIES_BUTTERFREE
- NATIONAL_DEX_WEEDLE, // SPECIES_WEEDLE
- NATIONAL_DEX_KAKUNA, // SPECIES_KAKUNA
- NATIONAL_DEX_BEEDRILL, // SPECIES_BEEDRILL
- NATIONAL_DEX_PIDGEY, // SPECIES_PIDGEY
- NATIONAL_DEX_PIDGEOTTO, // SPECIES_PIDGEOTTO
- NATIONAL_DEX_PIDGEOT, // SPECIES_PIDGEOT
- NATIONAL_DEX_RATTATA, // SPECIES_RATTATA
- NATIONAL_DEX_RATICATE, // SPECIES_RATICATE
- NATIONAL_DEX_SPEAROW, // SPECIES_SPEAROW
- NATIONAL_DEX_FEAROW, // SPECIES_FEAROW
- NATIONAL_DEX_EKANS, // SPECIES_EKANS
- NATIONAL_DEX_ARBOK, // SPECIES_ARBOK
- NATIONAL_DEX_PIKACHU, // SPECIES_PIKACHU
- NATIONAL_DEX_RAICHU, // SPECIES_RAICHU
- NATIONAL_DEX_SANDSHREW, // SPECIES_SANDSHREW
- NATIONAL_DEX_SANDSLASH, // SPECIES_SANDSLASH
- NATIONAL_DEX_NIDORAN_F, // SPECIES_NIDORAN_F
- NATIONAL_DEX_NIDORINA, // SPECIES_NIDORINA
- NATIONAL_DEX_NIDOQUEEN, // SPECIES_NIDOQUEEN
- NATIONAL_DEX_NIDORAN_M, // SPECIES_NIDORAN_M
- NATIONAL_DEX_NIDORINO, // SPECIES_NIDORINO
- NATIONAL_DEX_NIDOKING, // SPECIES_NIDOKING
- NATIONAL_DEX_CLEFAIRY, // SPECIES_CLEFAIRY
- NATIONAL_DEX_CLEFABLE, // SPECIES_CLEFABLE
- NATIONAL_DEX_VULPIX, // SPECIES_VULPIX
- NATIONAL_DEX_NINETALES, // SPECIES_NINETALES
- NATIONAL_DEX_JIGGLYPUFF, // SPECIES_JIGGLYPUFF
- NATIONAL_DEX_WIGGLYTUFF, // SPECIES_WIGGLYTUFF
- NATIONAL_DEX_ZUBAT, // SPECIES_ZUBAT
- NATIONAL_DEX_GOLBAT, // SPECIES_GOLBAT
- NATIONAL_DEX_ODDISH, // SPECIES_ODDISH
- NATIONAL_DEX_GLOOM, // SPECIES_GLOOM
- NATIONAL_DEX_VILEPLUME, // SPECIES_VILEPLUME
- NATIONAL_DEX_PARAS, // SPECIES_PARAS
- NATIONAL_DEX_PARASECT, // SPECIES_PARASECT
- NATIONAL_DEX_VENONAT, // SPECIES_VENONAT
- NATIONAL_DEX_VENOMOTH, // SPECIES_VENOMOTH
- NATIONAL_DEX_DIGLETT, // SPECIES_DIGLETT
- NATIONAL_DEX_DUGTRIO, // SPECIES_DUGTRIO
- NATIONAL_DEX_MEOWTH, // SPECIES_MEOWTH
- NATIONAL_DEX_PERSIAN, // SPECIES_PERSIAN
- NATIONAL_DEX_PSYDUCK, // SPECIES_PSYDUCK
- NATIONAL_DEX_GOLDUCK, // SPECIES_GOLDUCK
- NATIONAL_DEX_MANKEY, // SPECIES_MANKEY
- NATIONAL_DEX_PRIMEAPE, // SPECIES_PRIMEAPE
- NATIONAL_DEX_GROWLITHE, // SPECIES_GROWLITHE
- NATIONAL_DEX_ARCANINE, // SPECIES_ARCANINE
- NATIONAL_DEX_POLIWAG, // SPECIES_POLIWAG
- NATIONAL_DEX_POLIWHIRL, // SPECIES_POLIWHIRL
- NATIONAL_DEX_POLIWRATH, // SPECIES_POLIWRATH
- NATIONAL_DEX_ABRA, // SPECIES_ABRA
- NATIONAL_DEX_KADABRA, // SPECIES_KADABRA
- NATIONAL_DEX_ALAKAZAM, // SPECIES_ALAKAZAM
- NATIONAL_DEX_MACHOP, // SPECIES_MACHOP
- NATIONAL_DEX_MACHOKE, // SPECIES_MACHOKE
- NATIONAL_DEX_MACHAMP, // SPECIES_MACHAMP
- NATIONAL_DEX_BELLSPROUT, // SPECIES_BELLSPROUT
- NATIONAL_DEX_WEEPINBELL, // SPECIES_WEEPINBELL
- NATIONAL_DEX_VICTREEBEL, // SPECIES_VICTREEBEL
- NATIONAL_DEX_TENTACOOL, // SPECIES_TENTACOOL
- NATIONAL_DEX_TENTACRUEL, // SPECIES_TENTACRUEL
- NATIONAL_DEX_GEODUDE, // SPECIES_GEODUDE
- NATIONAL_DEX_GRAVELER, // SPECIES_GRAVELER
- NATIONAL_DEX_GOLEM, // SPECIES_GOLEM
- NATIONAL_DEX_PONYTA, // SPECIES_PONYTA
- NATIONAL_DEX_RAPIDASH, // SPECIES_RAPIDASH
- NATIONAL_DEX_SLOWPOKE, // SPECIES_SLOWPOKE
- NATIONAL_DEX_SLOWBRO, // SPECIES_SLOWBRO
- NATIONAL_DEX_MAGNEMITE, // SPECIES_MAGNEMITE
- NATIONAL_DEX_MAGNETON, // SPECIES_MAGNETON
- NATIONAL_DEX_FARFETCHD, // SPECIES_FARFETCHD
- NATIONAL_DEX_DODUO, // SPECIES_DODUO
- NATIONAL_DEX_DODRIO, // SPECIES_DODRIO
- NATIONAL_DEX_SEEL, // SPECIES_SEEL
- NATIONAL_DEX_DEWGONG, // SPECIES_DEWGONG
- NATIONAL_DEX_GRIMER, // SPECIES_GRIMER
- NATIONAL_DEX_MUK, // SPECIES_MUK
- NATIONAL_DEX_SHELLDER, // SPECIES_SHELLDER
- NATIONAL_DEX_CLOYSTER, // SPECIES_CLOYSTER
- NATIONAL_DEX_GASTLY, // SPECIES_GASTLY
- NATIONAL_DEX_HAUNTER, // SPECIES_HAUNTER
- NATIONAL_DEX_GENGAR, // SPECIES_GENGAR
- NATIONAL_DEX_ONIX, // SPECIES_ONIX
- NATIONAL_DEX_DROWZEE, // SPECIES_DROWZEE
- NATIONAL_DEX_HYPNO, // SPECIES_HYPNO
- NATIONAL_DEX_KRABBY, // SPECIES_KRABBY
- NATIONAL_DEX_KINGLER, // SPECIES_KINGLER
- NATIONAL_DEX_VOLTORB, // SPECIES_VOLTORB
- NATIONAL_DEX_ELECTRODE, // SPECIES_ELECTRODE
- NATIONAL_DEX_EXEGGCUTE, // SPECIES_EXEGGCUTE
- NATIONAL_DEX_EXEGGUTOR, // SPECIES_EXEGGUTOR
- NATIONAL_DEX_CUBONE, // SPECIES_CUBONE
- NATIONAL_DEX_MAROWAK, // SPECIES_MAROWAK
- NATIONAL_DEX_HITMONLEE, // SPECIES_HITMONLEE
- NATIONAL_DEX_HITMONCHAN, // SPECIES_HITMONCHAN
- NATIONAL_DEX_LICKITUNG, // SPECIES_LICKITUNG
- NATIONAL_DEX_KOFFING, // SPECIES_KOFFING
- NATIONAL_DEX_WEEZING, // SPECIES_WEEZING
- NATIONAL_DEX_RHYHORN, // SPECIES_RHYHORN
- NATIONAL_DEX_RHYDON, // SPECIES_RHYDON
- NATIONAL_DEX_CHANSEY, // SPECIES_CHANSEY
- NATIONAL_DEX_TANGELA, // SPECIES_TANGELA
- NATIONAL_DEX_KANGASKHAN, // SPECIES_KANGASKHAN
- NATIONAL_DEX_HORSEA, // SPECIES_HORSEA
- NATIONAL_DEX_SEADRA, // SPECIES_SEADRA
- NATIONAL_DEX_GOLDEEN, // SPECIES_GOLDEEN
- NATIONAL_DEX_SEAKING, // SPECIES_SEAKING
- NATIONAL_DEX_STARYU, // SPECIES_STARYU
- NATIONAL_DEX_STARMIE, // SPECIES_STARMIE
- NATIONAL_DEX_MR_MIME, // SPECIES_MR_MIME
- NATIONAL_DEX_SCYTHER, // SPECIES_SCYTHER
- NATIONAL_DEX_JYNX, // SPECIES_JYNX
- NATIONAL_DEX_ELECTABUZZ, // SPECIES_ELECTABUZZ
- NATIONAL_DEX_MAGMAR, // SPECIES_MAGMAR
- NATIONAL_DEX_PINSIR, // SPECIES_PINSIR
- NATIONAL_DEX_TAUROS, // SPECIES_TAUROS
- NATIONAL_DEX_MAGIKARP, // SPECIES_MAGIKARP
- NATIONAL_DEX_GYARADOS, // SPECIES_GYARADOS
- NATIONAL_DEX_LAPRAS, // SPECIES_LAPRAS
- NATIONAL_DEX_DITTO, // SPECIES_DITTO
- NATIONAL_DEX_EEVEE, // SPECIES_EEVEE
- NATIONAL_DEX_VAPOREON, // SPECIES_VAPOREON
- NATIONAL_DEX_JOLTEON, // SPECIES_JOLTEON
- NATIONAL_DEX_FLAREON, // SPECIES_FLAREON
- NATIONAL_DEX_PORYGON, // SPECIES_PORYGON
- NATIONAL_DEX_OMANYTE, // SPECIES_OMANYTE
- NATIONAL_DEX_OMASTAR, // SPECIES_OMASTAR
- NATIONAL_DEX_KABUTO, // SPECIES_KABUTO
- NATIONAL_DEX_KABUTOPS, // SPECIES_KABUTOPS
- NATIONAL_DEX_AERODACTYL, // SPECIES_AERODACTYL
- NATIONAL_DEX_SNORLAX, // SPECIES_SNORLAX
- NATIONAL_DEX_ARTICUNO, // SPECIES_ARTICUNO
- NATIONAL_DEX_ZAPDOS, // SPECIES_ZAPDOS
- NATIONAL_DEX_MOLTRES, // SPECIES_MOLTRES
- NATIONAL_DEX_DRATINI, // SPECIES_DRATINI
- NATIONAL_DEX_DRAGONAIR, // SPECIES_DRAGONAIR
- NATIONAL_DEX_DRAGONITE, // SPECIES_DRAGONITE
- NATIONAL_DEX_MEWTWO, // SPECIES_MEWTWO
- NATIONAL_DEX_MEW, // SPECIES_MEW
- NATIONAL_DEX_CHIKORITA, // SPECIES_CHIKORITA
- NATIONAL_DEX_BAYLEEF, // SPECIES_BAYLEEF
- NATIONAL_DEX_MEGANIUM, // SPECIES_MEGANIUM
- NATIONAL_DEX_CYNDAQUIL, // SPECIES_CYNDAQUIL
- NATIONAL_DEX_QUILAVA, // SPECIES_QUILAVA
- NATIONAL_DEX_TYPHLOSION, // SPECIES_TYPHLOSION
- NATIONAL_DEX_TOTODILE, // SPECIES_TOTODILE
- NATIONAL_DEX_CROCONAW, // SPECIES_CROCONAW
- NATIONAL_DEX_FERALIGATR, // SPECIES_FERALIGATR
- NATIONAL_DEX_SENTRET, // SPECIES_SENTRET
- NATIONAL_DEX_FURRET, // SPECIES_FURRET
- NATIONAL_DEX_HOOTHOOT, // SPECIES_HOOTHOOT
- NATIONAL_DEX_NOCTOWL, // SPECIES_NOCTOWL
- NATIONAL_DEX_LEDYBA, // SPECIES_LEDYBA
- NATIONAL_DEX_LEDIAN, // SPECIES_LEDIAN
- NATIONAL_DEX_SPINARAK, // SPECIES_SPINARAK
- NATIONAL_DEX_ARIADOS, // SPECIES_ARIADOS
- NATIONAL_DEX_CROBAT, // SPECIES_CROBAT
- NATIONAL_DEX_CHINCHOU, // SPECIES_CHINCHOU
- NATIONAL_DEX_LANTURN, // SPECIES_LANTURN
- NATIONAL_DEX_PICHU, // SPECIES_PICHU
- NATIONAL_DEX_CLEFFA, // SPECIES_CLEFFA
- NATIONAL_DEX_IGGLYBUFF, // SPECIES_IGGLYBUFF
- NATIONAL_DEX_TOGEPI, // SPECIES_TOGEPI
- NATIONAL_DEX_TOGETIC, // SPECIES_TOGETIC
- NATIONAL_DEX_NATU, // SPECIES_NATU
- NATIONAL_DEX_XATU, // SPECIES_XATU
- NATIONAL_DEX_MAREEP, // SPECIES_MAREEP
- NATIONAL_DEX_FLAAFFY, // SPECIES_FLAAFFY
- NATIONAL_DEX_AMPHAROS, // SPECIES_AMPHAROS
- NATIONAL_DEX_BELLOSSOM, // SPECIES_BELLOSSOM
- NATIONAL_DEX_MARILL, // SPECIES_MARILL
- NATIONAL_DEX_AZUMARILL, // SPECIES_AZUMARILL
- NATIONAL_DEX_SUDOWOODO, // SPECIES_SUDOWOODO
- NATIONAL_DEX_POLITOED, // SPECIES_POLITOED
- NATIONAL_DEX_HOPPIP, // SPECIES_HOPPIP
- NATIONAL_DEX_SKIPLOOM, // SPECIES_SKIPLOOM
- NATIONAL_DEX_JUMPLUFF, // SPECIES_JUMPLUFF
- NATIONAL_DEX_AIPOM, // SPECIES_AIPOM
- NATIONAL_DEX_SUNKERN, // SPECIES_SUNKERN
- NATIONAL_DEX_SUNFLORA, // SPECIES_SUNFLORA
- NATIONAL_DEX_YANMA, // SPECIES_YANMA
- NATIONAL_DEX_WOOPER, // SPECIES_WOOPER
- NATIONAL_DEX_QUAGSIRE, // SPECIES_QUAGSIRE
- NATIONAL_DEX_ESPEON, // SPECIES_ESPEON
- NATIONAL_DEX_UMBREON, // SPECIES_UMBREON
- NATIONAL_DEX_MURKROW, // SPECIES_MURKROW
- NATIONAL_DEX_SLOWKING, // SPECIES_SLOWKING
- NATIONAL_DEX_MISDREAVUS, // SPECIES_MISDREAVUS
- NATIONAL_DEX_UNOWN, // SPECIES_UNOWN
- NATIONAL_DEX_WOBBUFFET, // SPECIES_WOBBUFFET
- NATIONAL_DEX_GIRAFARIG, // SPECIES_GIRAFARIG
- NATIONAL_DEX_PINECO, // SPECIES_PINECO
- NATIONAL_DEX_FORRETRESS, // SPECIES_FORRETRESS
- NATIONAL_DEX_DUNSPARCE, // SPECIES_DUNSPARCE
- NATIONAL_DEX_GLIGAR, // SPECIES_GLIGAR
- NATIONAL_DEX_STEELIX, // SPECIES_STEELIX
- NATIONAL_DEX_SNUBBULL, // SPECIES_SNUBBULL
- NATIONAL_DEX_GRANBULL, // SPECIES_GRANBULL
- NATIONAL_DEX_QWILFISH, // SPECIES_QWILFISH
- NATIONAL_DEX_SCIZOR, // SPECIES_SCIZOR
- NATIONAL_DEX_SHUCKLE, // SPECIES_SHUCKLE
- NATIONAL_DEX_HERACROSS, // SPECIES_HERACROSS
- NATIONAL_DEX_SNEASEL, // SPECIES_SNEASEL
- NATIONAL_DEX_TEDDIURSA, // SPECIES_TEDDIURSA
- NATIONAL_DEX_URSARING, // SPECIES_URSARING
- NATIONAL_DEX_SLUGMA, // SPECIES_SLUGMA
- NATIONAL_DEX_MAGCARGO, // SPECIES_MAGCARGO
- NATIONAL_DEX_SWINUB, // SPECIES_SWINUB
- NATIONAL_DEX_PILOSWINE, // SPECIES_PILOSWINE
- NATIONAL_DEX_CORSOLA, // SPECIES_CORSOLA
- NATIONAL_DEX_REMORAID, // SPECIES_REMORAID
- NATIONAL_DEX_OCTILLERY, // SPECIES_OCTILLERY
- NATIONAL_DEX_DELIBIRD, // SPECIES_DELIBIRD
- NATIONAL_DEX_MANTINE, // SPECIES_MANTINE
- NATIONAL_DEX_SKARMORY, // SPECIES_SKARMORY
- NATIONAL_DEX_HOUNDOUR, // SPECIES_HOUNDOUR
- NATIONAL_DEX_HOUNDOOM, // SPECIES_HOUNDOOM
- NATIONAL_DEX_KINGDRA, // SPECIES_KINGDRA
- NATIONAL_DEX_PHANPY, // SPECIES_PHANPY
- NATIONAL_DEX_DONPHAN, // SPECIES_DONPHAN
- NATIONAL_DEX_PORYGON2, // SPECIES_PORYGON2
- NATIONAL_DEX_STANTLER, // SPECIES_STANTLER
- NATIONAL_DEX_SMEARGLE, // SPECIES_SMEARGLE
- NATIONAL_DEX_TYROGUE, // SPECIES_TYROGUE
- NATIONAL_DEX_HITMONTOP, // SPECIES_HITMONTOP
- NATIONAL_DEX_SMOOCHUM, // SPECIES_SMOOCHUM
- NATIONAL_DEX_ELEKID, // SPECIES_ELEKID
- NATIONAL_DEX_MAGBY, // SPECIES_MAGBY
- NATIONAL_DEX_MILTANK, // SPECIES_MILTANK
- NATIONAL_DEX_BLISSEY, // SPECIES_BLISSEY
- NATIONAL_DEX_RAIKOU, // SPECIES_RAIKOU
- NATIONAL_DEX_ENTEI, // SPECIES_ENTEI
- NATIONAL_DEX_SUICUNE, // SPECIES_SUICUNE
- NATIONAL_DEX_LARVITAR, // SPECIES_LARVITAR
- NATIONAL_DEX_PUPITAR, // SPECIES_PUPITAR
- NATIONAL_DEX_TYRANITAR, // SPECIES_TYRANITAR
- NATIONAL_DEX_LUGIA, // SPECIES_LUGIA
- NATIONAL_DEX_HO_OH, // SPECIES_HO-OH
- NATIONAL_DEX_CELEBI, // SPECIES_CELEBI
- NATIONAL_DEX_OLD_UNOWN_B, // SPECIES_OLD_UNOWN_B
- NATIONAL_DEX_OLD_UNOWN_C, // SPECIES_OLD_UNOWN_C
- NATIONAL_DEX_OLD_UNOWN_D, // SPECIES_OLD_UNOWN_D
- NATIONAL_DEX_OLD_UNOWN_E, // SPECIES_OLD_UNOWN_E
- NATIONAL_DEX_OLD_UNOWN_F, // SPECIES_OLD_UNOWN_F
- NATIONAL_DEX_OLD_UNOWN_G, // SPECIES_OLD_UNOWN_G
- NATIONAL_DEX_OLD_UNOWN_H, // SPECIES_OLD_UNOWN_H
- NATIONAL_DEX_OLD_UNOWN_I, // SPECIES_OLD_UNOWN_I
- NATIONAL_DEX_OLD_UNOWN_J, // SPECIES_OLD_UNOWN_J
- NATIONAL_DEX_OLD_UNOWN_K, // SPECIES_OLD_UNOWN_K
- NATIONAL_DEX_OLD_UNOWN_L, // SPECIES_OLD_UNOWN_L
- NATIONAL_DEX_OLD_UNOWN_M, // SPECIES_OLD_UNOWN_M
- NATIONAL_DEX_OLD_UNOWN_N, // SPECIES_OLD_UNOWN_N
- NATIONAL_DEX_OLD_UNOWN_O, // SPECIES_OLD_UNOWN_O
- NATIONAL_DEX_OLD_UNOWN_P, // SPECIES_OLD_UNOWN_P
- NATIONAL_DEX_OLD_UNOWN_Q, // SPECIES_OLD_UNOWN_Q
- NATIONAL_DEX_OLD_UNOWN_R, // SPECIES_OLD_UNOWN_R
- NATIONAL_DEX_OLD_UNOWN_S, // SPECIES_OLD_UNOWN_S
- NATIONAL_DEX_OLD_UNOWN_T, // SPECIES_OLD_UNOWN_T
- NATIONAL_DEX_OLD_UNOWN_U, // SPECIES_OLD_UNOWN_U
- NATIONAL_DEX_OLD_UNOWN_V, // SPECIES_OLD_UNOWN_V
- NATIONAL_DEX_OLD_UNOWN_W, // SPECIES_OLD_UNOWN_W
- NATIONAL_DEX_OLD_UNOWN_X, // SPECIES_OLD_UNOWN_X
- NATIONAL_DEX_OLD_UNOWN_Y, // SPECIES_OLD_UNOWN_Y
- NATIONAL_DEX_OLD_UNOWN_Z, // SPECIES_OLD_UNOWN_Z
- NATIONAL_DEX_TREECKO, // SPECIES_TREECKO
- NATIONAL_DEX_GROVYLE, // SPECIES_GROVYLE
- NATIONAL_DEX_SCEPTILE, // SPECIES_SCEPTILE
- NATIONAL_DEX_TORCHIC, // SPECIES_TORCHIC
- NATIONAL_DEX_COMBUSKEN, // SPECIES_COMBUSKEN
- NATIONAL_DEX_BLAZIKEN, // SPECIES_BLAZIKEN
- NATIONAL_DEX_MUDKIP, // SPECIES_MUDKIP
- NATIONAL_DEX_MARSHTOMP, // SPECIES_MARSHTOMP
- NATIONAL_DEX_SWAMPERT, // SPECIES_SWAMPERT
- NATIONAL_DEX_POOCHYENA, // SPECIES_POOCHYENA
- NATIONAL_DEX_MIGHTYENA, // SPECIES_MIGHTYENA
- NATIONAL_DEX_ZIGZAGOON, // SPECIES_ZIGZAGOON
- NATIONAL_DEX_LINOONE, // SPECIES_LINOONE
- NATIONAL_DEX_WURMPLE, // SPECIES_WURMPLE
- NATIONAL_DEX_SILCOON, // SPECIES_SILCOON
- NATIONAL_DEX_BEAUTIFLY, // SPECIES_BEAUTIFLY
- NATIONAL_DEX_CASCOON, // SPECIES_CASCOON
- NATIONAL_DEX_DUSTOX, // SPECIES_DUSTOX
- NATIONAL_DEX_LOTAD, // SPECIES_LOTAD
- NATIONAL_DEX_LOMBRE, // SPECIES_LOMBRE
- NATIONAL_DEX_LUDICOLO, // SPECIES_LUDICOLO
- NATIONAL_DEX_SEEDOT, // SPECIES_SEEDOT
- NATIONAL_DEX_NUZLEAF, // SPECIES_NUZLEAF
- NATIONAL_DEX_SHIFTRY, // SPECIES_SHIFTRY
- NATIONAL_DEX_NINCADA, // SPECIES_NINCADA
- NATIONAL_DEX_NINJASK, // SPECIES_NINJASK
- NATIONAL_DEX_SHEDINJA, // SPECIES_SHEDINJA
- NATIONAL_DEX_TAILLOW, // SPECIES_TAILLOW
- NATIONAL_DEX_SWELLOW, // SPECIES_SWELLOW
- NATIONAL_DEX_SHROOMISH, // SPECIES_SHROOMISH
- NATIONAL_DEX_BRELOOM, // SPECIES_BRELOOM
- NATIONAL_DEX_SPINDA, // SPECIES_SPINDA
- NATIONAL_DEX_WINGULL, // SPECIES_WINGULL
- NATIONAL_DEX_PELIPPER, // SPECIES_PELIPPER
- NATIONAL_DEX_SURSKIT, // SPECIES_SURSKIT
- NATIONAL_DEX_MASQUERAIN, // SPECIES_MASQUERAIN
- NATIONAL_DEX_WAILMER, // SPECIES_WAILMER
- NATIONAL_DEX_WAILORD, // SPECIES_WAILORD
- NATIONAL_DEX_SKITTY, // SPECIES_SKITTY
- NATIONAL_DEX_DELCATTY, // SPECIES_DELCATTY
- NATIONAL_DEX_KECLEON, // SPECIES_KECLEON
- NATIONAL_DEX_BALTOY, // SPECIES_BALTOY
- NATIONAL_DEX_CLAYDOL, // SPECIES_CLAYDOL
- NATIONAL_DEX_NOSEPASS, // SPECIES_NOSEPASS
- NATIONAL_DEX_TORKOAL, // SPECIES_TORKOAL
- NATIONAL_DEX_SABLEYE, // SPECIES_SABLEYE
- NATIONAL_DEX_BARBOACH, // SPECIES_BARBOACH
- NATIONAL_DEX_WHISCASH, // SPECIES_WHISCASH
- NATIONAL_DEX_LUVDISC, // SPECIES_LUVDISC
- NATIONAL_DEX_CORPHISH, // SPECIES_CORPHISH
- NATIONAL_DEX_CRAWDAUNT, // SPECIES_CRAWDAUNT
- NATIONAL_DEX_FEEBAS, // SPECIES_FEEBAS
- NATIONAL_DEX_MILOTIC, // SPECIES_MILOTIC
- NATIONAL_DEX_CARVANHA, // SPECIES_CARVANHA
- NATIONAL_DEX_SHARPEDO, // SPECIES_SHARPEDO
- NATIONAL_DEX_TRAPINCH, // SPECIES_TRAPINCH
- NATIONAL_DEX_VIBRAVA, // SPECIES_VIBRAVA
- NATIONAL_DEX_FLYGON, // SPECIES_FLYGON
- NATIONAL_DEX_MAKUHITA, // SPECIES_MAKUHITA
- NATIONAL_DEX_HARIYAMA, // SPECIES_HARIYAMA
- NATIONAL_DEX_ELECTRIKE, // SPECIES_ELECTRIKE
- NATIONAL_DEX_MANECTRIC, // SPECIES_MANECTRIC
- NATIONAL_DEX_NUMEL, // SPECIES_NUMEL
- NATIONAL_DEX_CAMERUPT, // SPECIES_CAMERUPT
- NATIONAL_DEX_SPHEAL, // SPECIES_SPHEAL
- NATIONAL_DEX_SEALEO, // SPECIES_SEALEO
- NATIONAL_DEX_WALREIN, // SPECIES_WALREIN
- NATIONAL_DEX_CACNEA, // SPECIES_CACNEA
- NATIONAL_DEX_CACTURNE, // SPECIES_CACTURNE
- NATIONAL_DEX_SNORUNT, // SPECIES_SNORUNT
- NATIONAL_DEX_GLALIE, // SPECIES_GLALIE
- NATIONAL_DEX_LUNATONE, // SPECIES_LUNATONE
- NATIONAL_DEX_SOLROCK, // SPECIES_SOLROCK
- NATIONAL_DEX_AZURILL, // SPECIES_AZURILL
- NATIONAL_DEX_SPOINK, // SPECIES_SPOINK
- NATIONAL_DEX_GRUMPIG, // SPECIES_GRUMPIG
- NATIONAL_DEX_PLUSLE, // SPECIES_PLUSLE
- NATIONAL_DEX_MINUN, // SPECIES_MINUN
- NATIONAL_DEX_MAWILE, // SPECIES_MAWILE
- NATIONAL_DEX_MEDITITE, // SPECIES_MEDITITE
- NATIONAL_DEX_MEDICHAM, // SPECIES_MEDICHAM
- NATIONAL_DEX_SWABLU, // SPECIES_SWABLU
- NATIONAL_DEX_ALTARIA, // SPECIES_ALTARIA
- NATIONAL_DEX_WYNAUT, // SPECIES_WYNAUT
- NATIONAL_DEX_DUSKULL, // SPECIES_DUSKULL
- NATIONAL_DEX_DUSCLOPS, // SPECIES_DUSCLOPS
- NATIONAL_DEX_ROSELIA, // SPECIES_ROSELIA
- NATIONAL_DEX_SLAKOTH, // SPECIES_SLAKOTH
- NATIONAL_DEX_VIGOROTH, // SPECIES_VIGOROTH
- NATIONAL_DEX_SLAKING, // SPECIES_SLAKING
- NATIONAL_DEX_GULPIN, // SPECIES_GULPIN
- NATIONAL_DEX_SWALOT, // SPECIES_SWALOT
- NATIONAL_DEX_TROPIUS, // SPECIES_TROPIUS
- NATIONAL_DEX_WHISMUR, // SPECIES_WHISMUR
- NATIONAL_DEX_LOUDRED, // SPECIES_LOUDRED
- NATIONAL_DEX_EXPLOUD, // SPECIES_EXPLOUD
- NATIONAL_DEX_CLAMPERL, // SPECIES_CLAMPERL
- NATIONAL_DEX_HUNTAIL, // SPECIES_HUNTAIL
- NATIONAL_DEX_GOREBYSS, // SPECIES_GOREBYSS
- NATIONAL_DEX_ABSOL, // SPECIES_ABSOL
- NATIONAL_DEX_SHUPPET, // SPECIES_SHUPPET
- NATIONAL_DEX_BANETTE, // SPECIES_BANETTE
- NATIONAL_DEX_SEVIPER, // SPECIES_SEVIPER
- NATIONAL_DEX_ZANGOOSE, // SPECIES_ZANGOOSE
- NATIONAL_DEX_RELICANTH, // SPECIES_RELICANTH
- NATIONAL_DEX_ARON, // SPECIES_ARON
- NATIONAL_DEX_LAIRON, // SPECIES_LAIRON
- NATIONAL_DEX_AGGRON, // SPECIES_AGGRON
- NATIONAL_DEX_CASTFORM, // SPECIES_CASTFORM
- NATIONAL_DEX_VOLBEAT, // SPECIES_VOLBEAT
- NATIONAL_DEX_ILLUMISE, // SPECIES_ILLUMISE
- NATIONAL_DEX_LILEEP, // SPECIES_LILEEP
- NATIONAL_DEX_CRADILY, // SPECIES_CRADILY
- NATIONAL_DEX_ANORITH, // SPECIES_ANORITH
- NATIONAL_DEX_ARMALDO, // SPECIES_ARMALDO
- NATIONAL_DEX_RALTS, // SPECIES_RALTS
- NATIONAL_DEX_KIRLIA, // SPECIES_KIRLIA
- NATIONAL_DEX_GARDEVOIR, // SPECIES_GARDEVOIR
- NATIONAL_DEX_BAGON, // SPECIES_BAGON
- NATIONAL_DEX_SHELGON, // SPECIES_SHELGON
- NATIONAL_DEX_SALAMENCE, // SPECIES_SALAMENCE
- NATIONAL_DEX_BELDUM, // SPECIES_BELDUM
- NATIONAL_DEX_METANG, // SPECIES_METANG
- NATIONAL_DEX_METAGROSS, // SPECIES_METAGROSS
- NATIONAL_DEX_REGIROCK, // SPECIES_REGIROCK
- NATIONAL_DEX_REGICE, // SPECIES_REGICE
- NATIONAL_DEX_REGISTEEL, // SPECIES_REGISTEEL
- NATIONAL_DEX_KYOGRE, // SPECIES_KYOGRE
- NATIONAL_DEX_GROUDON, // SPECIES_GROUDON
- NATIONAL_DEX_RAYQUAZA, // SPECIES_RAYQUAZA
- NATIONAL_DEX_LATIAS, // SPECIES_LATIAS
- NATIONAL_DEX_LATIOS, // SPECIES_LATIOS
- NATIONAL_DEX_JIRACHI, // SPECIES_JIRACHI
- NATIONAL_DEX_DEOXYS, // SPECIES_DEOXYS
- NATIONAL_DEX_CHIMECHO // SPECIES_CHIMECHO
+ SPECIES_TO_NATIONAL(BULBASAUR),
+ SPECIES_TO_NATIONAL(IVYSAUR),
+ SPECIES_TO_NATIONAL(VENUSAUR),
+ SPECIES_TO_NATIONAL(CHARMANDER),
+ SPECIES_TO_NATIONAL(CHARMELEON),
+ SPECIES_TO_NATIONAL(CHARIZARD),
+ SPECIES_TO_NATIONAL(SQUIRTLE),
+ SPECIES_TO_NATIONAL(WARTORTLE),
+ SPECIES_TO_NATIONAL(BLASTOISE),
+ SPECIES_TO_NATIONAL(CATERPIE),
+ SPECIES_TO_NATIONAL(METAPOD),
+ SPECIES_TO_NATIONAL(BUTTERFREE),
+ SPECIES_TO_NATIONAL(WEEDLE),
+ SPECIES_TO_NATIONAL(KAKUNA),
+ SPECIES_TO_NATIONAL(BEEDRILL),
+ SPECIES_TO_NATIONAL(PIDGEY),
+ SPECIES_TO_NATIONAL(PIDGEOTTO),
+ SPECIES_TO_NATIONAL(PIDGEOT),
+ SPECIES_TO_NATIONAL(RATTATA),
+ SPECIES_TO_NATIONAL(RATICATE),
+ SPECIES_TO_NATIONAL(SPEAROW),
+ SPECIES_TO_NATIONAL(FEAROW),
+ SPECIES_TO_NATIONAL(EKANS),
+ SPECIES_TO_NATIONAL(ARBOK),
+ SPECIES_TO_NATIONAL(PIKACHU),
+ SPECIES_TO_NATIONAL(RAICHU),
+ SPECIES_TO_NATIONAL(SANDSHREW),
+ SPECIES_TO_NATIONAL(SANDSLASH),
+ SPECIES_TO_NATIONAL(NIDORAN_F),
+ SPECIES_TO_NATIONAL(NIDORINA),
+ SPECIES_TO_NATIONAL(NIDOQUEEN),
+ SPECIES_TO_NATIONAL(NIDORAN_M),
+ SPECIES_TO_NATIONAL(NIDORINO),
+ SPECIES_TO_NATIONAL(NIDOKING),
+ SPECIES_TO_NATIONAL(CLEFAIRY),
+ SPECIES_TO_NATIONAL(CLEFABLE),
+ SPECIES_TO_NATIONAL(VULPIX),
+ SPECIES_TO_NATIONAL(NINETALES),
+ SPECIES_TO_NATIONAL(JIGGLYPUFF),
+ SPECIES_TO_NATIONAL(WIGGLYTUFF),
+ SPECIES_TO_NATIONAL(ZUBAT),
+ SPECIES_TO_NATIONAL(GOLBAT),
+ SPECIES_TO_NATIONAL(ODDISH),
+ SPECIES_TO_NATIONAL(GLOOM),
+ SPECIES_TO_NATIONAL(VILEPLUME),
+ SPECIES_TO_NATIONAL(PARAS),
+ SPECIES_TO_NATIONAL(PARASECT),
+ SPECIES_TO_NATIONAL(VENONAT),
+ SPECIES_TO_NATIONAL(VENOMOTH),
+ SPECIES_TO_NATIONAL(DIGLETT),
+ SPECIES_TO_NATIONAL(DUGTRIO),
+ SPECIES_TO_NATIONAL(MEOWTH),
+ SPECIES_TO_NATIONAL(PERSIAN),
+ SPECIES_TO_NATIONAL(PSYDUCK),
+ SPECIES_TO_NATIONAL(GOLDUCK),
+ SPECIES_TO_NATIONAL(MANKEY),
+ SPECIES_TO_NATIONAL(PRIMEAPE),
+ SPECIES_TO_NATIONAL(GROWLITHE),
+ SPECIES_TO_NATIONAL(ARCANINE),
+ SPECIES_TO_NATIONAL(POLIWAG),
+ SPECIES_TO_NATIONAL(POLIWHIRL),
+ SPECIES_TO_NATIONAL(POLIWRATH),
+ SPECIES_TO_NATIONAL(ABRA),
+ SPECIES_TO_NATIONAL(KADABRA),
+ SPECIES_TO_NATIONAL(ALAKAZAM),
+ SPECIES_TO_NATIONAL(MACHOP),
+ SPECIES_TO_NATIONAL(MACHOKE),
+ SPECIES_TO_NATIONAL(MACHAMP),
+ SPECIES_TO_NATIONAL(BELLSPROUT),
+ SPECIES_TO_NATIONAL(WEEPINBELL),
+ SPECIES_TO_NATIONAL(VICTREEBEL),
+ SPECIES_TO_NATIONAL(TENTACOOL),
+ SPECIES_TO_NATIONAL(TENTACRUEL),
+ SPECIES_TO_NATIONAL(GEODUDE),
+ SPECIES_TO_NATIONAL(GRAVELER),
+ SPECIES_TO_NATIONAL(GOLEM),
+ SPECIES_TO_NATIONAL(PONYTA),
+ SPECIES_TO_NATIONAL(RAPIDASH),
+ SPECIES_TO_NATIONAL(SLOWPOKE),
+ SPECIES_TO_NATIONAL(SLOWBRO),
+ SPECIES_TO_NATIONAL(MAGNEMITE),
+ SPECIES_TO_NATIONAL(MAGNETON),
+ SPECIES_TO_NATIONAL(FARFETCHD),
+ SPECIES_TO_NATIONAL(DODUO),
+ SPECIES_TO_NATIONAL(DODRIO),
+ SPECIES_TO_NATIONAL(SEEL),
+ SPECIES_TO_NATIONAL(DEWGONG),
+ SPECIES_TO_NATIONAL(GRIMER),
+ SPECIES_TO_NATIONAL(MUK),
+ SPECIES_TO_NATIONAL(SHELLDER),
+ SPECIES_TO_NATIONAL(CLOYSTER),
+ SPECIES_TO_NATIONAL(GASTLY),
+ SPECIES_TO_NATIONAL(HAUNTER),
+ SPECIES_TO_NATIONAL(GENGAR),
+ SPECIES_TO_NATIONAL(ONIX),
+ SPECIES_TO_NATIONAL(DROWZEE),
+ SPECIES_TO_NATIONAL(HYPNO),
+ SPECIES_TO_NATIONAL(KRABBY),
+ SPECIES_TO_NATIONAL(KINGLER),
+ SPECIES_TO_NATIONAL(VOLTORB),
+ SPECIES_TO_NATIONAL(ELECTRODE),
+ SPECIES_TO_NATIONAL(EXEGGCUTE),
+ SPECIES_TO_NATIONAL(EXEGGUTOR),
+ SPECIES_TO_NATIONAL(CUBONE),
+ SPECIES_TO_NATIONAL(MAROWAK),
+ SPECIES_TO_NATIONAL(HITMONLEE),
+ SPECIES_TO_NATIONAL(HITMONCHAN),
+ SPECIES_TO_NATIONAL(LICKITUNG),
+ SPECIES_TO_NATIONAL(KOFFING),
+ SPECIES_TO_NATIONAL(WEEZING),
+ SPECIES_TO_NATIONAL(RHYHORN),
+ SPECIES_TO_NATIONAL(RHYDON),
+ SPECIES_TO_NATIONAL(CHANSEY),
+ SPECIES_TO_NATIONAL(TANGELA),
+ SPECIES_TO_NATIONAL(KANGASKHAN),
+ SPECIES_TO_NATIONAL(HORSEA),
+ SPECIES_TO_NATIONAL(SEADRA),
+ SPECIES_TO_NATIONAL(GOLDEEN),
+ SPECIES_TO_NATIONAL(SEAKING),
+ SPECIES_TO_NATIONAL(STARYU),
+ SPECIES_TO_NATIONAL(STARMIE),
+ SPECIES_TO_NATIONAL(MR_MIME),
+ SPECIES_TO_NATIONAL(SCYTHER),
+ SPECIES_TO_NATIONAL(JYNX),
+ SPECIES_TO_NATIONAL(ELECTABUZZ),
+ SPECIES_TO_NATIONAL(MAGMAR),
+ SPECIES_TO_NATIONAL(PINSIR),
+ SPECIES_TO_NATIONAL(TAUROS),
+ SPECIES_TO_NATIONAL(MAGIKARP),
+ SPECIES_TO_NATIONAL(GYARADOS),
+ SPECIES_TO_NATIONAL(LAPRAS),
+ SPECIES_TO_NATIONAL(DITTO),
+ SPECIES_TO_NATIONAL(EEVEE),
+ SPECIES_TO_NATIONAL(VAPOREON),
+ SPECIES_TO_NATIONAL(JOLTEON),
+ SPECIES_TO_NATIONAL(FLAREON),
+ SPECIES_TO_NATIONAL(PORYGON),
+ SPECIES_TO_NATIONAL(OMANYTE),
+ SPECIES_TO_NATIONAL(OMASTAR),
+ SPECIES_TO_NATIONAL(KABUTO),
+ SPECIES_TO_NATIONAL(KABUTOPS),
+ SPECIES_TO_NATIONAL(AERODACTYL),
+ SPECIES_TO_NATIONAL(SNORLAX),
+ SPECIES_TO_NATIONAL(ARTICUNO),
+ SPECIES_TO_NATIONAL(ZAPDOS),
+ SPECIES_TO_NATIONAL(MOLTRES),
+ SPECIES_TO_NATIONAL(DRATINI),
+ SPECIES_TO_NATIONAL(DRAGONAIR),
+ SPECIES_TO_NATIONAL(DRAGONITE),
+ SPECIES_TO_NATIONAL(MEWTWO),
+ SPECIES_TO_NATIONAL(MEW),
+ SPECIES_TO_NATIONAL(CHIKORITA),
+ SPECIES_TO_NATIONAL(BAYLEEF),
+ SPECIES_TO_NATIONAL(MEGANIUM),
+ SPECIES_TO_NATIONAL(CYNDAQUIL),
+ SPECIES_TO_NATIONAL(QUILAVA),
+ SPECIES_TO_NATIONAL(TYPHLOSION),
+ SPECIES_TO_NATIONAL(TOTODILE),
+ SPECIES_TO_NATIONAL(CROCONAW),
+ SPECIES_TO_NATIONAL(FERALIGATR),
+ SPECIES_TO_NATIONAL(SENTRET),
+ SPECIES_TO_NATIONAL(FURRET),
+ SPECIES_TO_NATIONAL(HOOTHOOT),
+ SPECIES_TO_NATIONAL(NOCTOWL),
+ SPECIES_TO_NATIONAL(LEDYBA),
+ SPECIES_TO_NATIONAL(LEDIAN),
+ SPECIES_TO_NATIONAL(SPINARAK),
+ SPECIES_TO_NATIONAL(ARIADOS),
+ SPECIES_TO_NATIONAL(CROBAT),
+ SPECIES_TO_NATIONAL(CHINCHOU),
+ SPECIES_TO_NATIONAL(LANTURN),
+ SPECIES_TO_NATIONAL(PICHU),
+ SPECIES_TO_NATIONAL(CLEFFA),
+ SPECIES_TO_NATIONAL(IGGLYBUFF),
+ SPECIES_TO_NATIONAL(TOGEPI),
+ SPECIES_TO_NATIONAL(TOGETIC),
+ SPECIES_TO_NATIONAL(NATU),
+ SPECIES_TO_NATIONAL(XATU),
+ SPECIES_TO_NATIONAL(MAREEP),
+ SPECIES_TO_NATIONAL(FLAAFFY),
+ SPECIES_TO_NATIONAL(AMPHAROS),
+ SPECIES_TO_NATIONAL(BELLOSSOM),
+ SPECIES_TO_NATIONAL(MARILL),
+ SPECIES_TO_NATIONAL(AZUMARILL),
+ SPECIES_TO_NATIONAL(SUDOWOODO),
+ SPECIES_TO_NATIONAL(POLITOED),
+ SPECIES_TO_NATIONAL(HOPPIP),
+ SPECIES_TO_NATIONAL(SKIPLOOM),
+ SPECIES_TO_NATIONAL(JUMPLUFF),
+ SPECIES_TO_NATIONAL(AIPOM),
+ SPECIES_TO_NATIONAL(SUNKERN),
+ SPECIES_TO_NATIONAL(SUNFLORA),
+ SPECIES_TO_NATIONAL(YANMA),
+ SPECIES_TO_NATIONAL(WOOPER),
+ SPECIES_TO_NATIONAL(QUAGSIRE),
+ SPECIES_TO_NATIONAL(ESPEON),
+ SPECIES_TO_NATIONAL(UMBREON),
+ SPECIES_TO_NATIONAL(MURKROW),
+ SPECIES_TO_NATIONAL(SLOWKING),
+ SPECIES_TO_NATIONAL(MISDREAVUS),
+ SPECIES_TO_NATIONAL(UNOWN),
+ SPECIES_TO_NATIONAL(WOBBUFFET),
+ SPECIES_TO_NATIONAL(GIRAFARIG),
+ SPECIES_TO_NATIONAL(PINECO),
+ SPECIES_TO_NATIONAL(FORRETRESS),
+ SPECIES_TO_NATIONAL(DUNSPARCE),
+ SPECIES_TO_NATIONAL(GLIGAR),
+ SPECIES_TO_NATIONAL(STEELIX),
+ SPECIES_TO_NATIONAL(SNUBBULL),
+ SPECIES_TO_NATIONAL(GRANBULL),
+ SPECIES_TO_NATIONAL(QWILFISH),
+ SPECIES_TO_NATIONAL(SCIZOR),
+ SPECIES_TO_NATIONAL(SHUCKLE),
+ SPECIES_TO_NATIONAL(HERACROSS),
+ SPECIES_TO_NATIONAL(SNEASEL),
+ SPECIES_TO_NATIONAL(TEDDIURSA),
+ SPECIES_TO_NATIONAL(URSARING),
+ SPECIES_TO_NATIONAL(SLUGMA),
+ SPECIES_TO_NATIONAL(MAGCARGO),
+ SPECIES_TO_NATIONAL(SWINUB),
+ SPECIES_TO_NATIONAL(PILOSWINE),
+ SPECIES_TO_NATIONAL(CORSOLA),
+ SPECIES_TO_NATIONAL(REMORAID),
+ SPECIES_TO_NATIONAL(OCTILLERY),
+ SPECIES_TO_NATIONAL(DELIBIRD),
+ SPECIES_TO_NATIONAL(MANTINE),
+ SPECIES_TO_NATIONAL(SKARMORY),
+ SPECIES_TO_NATIONAL(HOUNDOUR),
+ SPECIES_TO_NATIONAL(HOUNDOOM),
+ SPECIES_TO_NATIONAL(KINGDRA),
+ SPECIES_TO_NATIONAL(PHANPY),
+ SPECIES_TO_NATIONAL(DONPHAN),
+ SPECIES_TO_NATIONAL(PORYGON2),
+ SPECIES_TO_NATIONAL(STANTLER),
+ SPECIES_TO_NATIONAL(SMEARGLE),
+ SPECIES_TO_NATIONAL(TYROGUE),
+ SPECIES_TO_NATIONAL(HITMONTOP),
+ SPECIES_TO_NATIONAL(SMOOCHUM),
+ SPECIES_TO_NATIONAL(ELEKID),
+ SPECIES_TO_NATIONAL(MAGBY),
+ SPECIES_TO_NATIONAL(MILTANK),
+ SPECIES_TO_NATIONAL(BLISSEY),
+ SPECIES_TO_NATIONAL(RAIKOU),
+ SPECIES_TO_NATIONAL(ENTEI),
+ SPECIES_TO_NATIONAL(SUICUNE),
+ SPECIES_TO_NATIONAL(LARVITAR),
+ SPECIES_TO_NATIONAL(PUPITAR),
+ SPECIES_TO_NATIONAL(TYRANITAR),
+ SPECIES_TO_NATIONAL(LUGIA),
+ SPECIES_TO_NATIONAL(HO_OH),
+ SPECIES_TO_NATIONAL(CELEBI),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_B),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_C),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_D),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_E),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_F),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_G),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_H),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_I),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_J),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_K),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_L),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_M),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_N),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_O),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_P),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_Q),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_R),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_S),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_T),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_U),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_V),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_W),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_X),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_Y),
+ SPECIES_TO_NATIONAL(OLD_UNOWN_Z),
+ SPECIES_TO_NATIONAL(TREECKO),
+ SPECIES_TO_NATIONAL(GROVYLE),
+ SPECIES_TO_NATIONAL(SCEPTILE),
+ SPECIES_TO_NATIONAL(TORCHIC),
+ SPECIES_TO_NATIONAL(COMBUSKEN),
+ SPECIES_TO_NATIONAL(BLAZIKEN),
+ SPECIES_TO_NATIONAL(MUDKIP),
+ SPECIES_TO_NATIONAL(MARSHTOMP),
+ SPECIES_TO_NATIONAL(SWAMPERT),
+ SPECIES_TO_NATIONAL(POOCHYENA),
+ SPECIES_TO_NATIONAL(MIGHTYENA),
+ SPECIES_TO_NATIONAL(ZIGZAGOON),
+ SPECIES_TO_NATIONAL(LINOONE),
+ SPECIES_TO_NATIONAL(WURMPLE),
+ SPECIES_TO_NATIONAL(SILCOON),
+ SPECIES_TO_NATIONAL(BEAUTIFLY),
+ SPECIES_TO_NATIONAL(CASCOON),
+ SPECIES_TO_NATIONAL(DUSTOX),
+ SPECIES_TO_NATIONAL(LOTAD),
+ SPECIES_TO_NATIONAL(LOMBRE),
+ SPECIES_TO_NATIONAL(LUDICOLO),
+ SPECIES_TO_NATIONAL(SEEDOT),
+ SPECIES_TO_NATIONAL(NUZLEAF),
+ SPECIES_TO_NATIONAL(SHIFTRY),
+ SPECIES_TO_NATIONAL(NINCADA),
+ SPECIES_TO_NATIONAL(NINJASK),
+ SPECIES_TO_NATIONAL(SHEDINJA),
+ SPECIES_TO_NATIONAL(TAILLOW),
+ SPECIES_TO_NATIONAL(SWELLOW),
+ SPECIES_TO_NATIONAL(SHROOMISH),
+ SPECIES_TO_NATIONAL(BRELOOM),
+ SPECIES_TO_NATIONAL(SPINDA),
+ SPECIES_TO_NATIONAL(WINGULL),
+ SPECIES_TO_NATIONAL(PELIPPER),
+ SPECIES_TO_NATIONAL(SURSKIT),
+ SPECIES_TO_NATIONAL(MASQUERAIN),
+ SPECIES_TO_NATIONAL(WAILMER),
+ SPECIES_TO_NATIONAL(WAILORD),
+ SPECIES_TO_NATIONAL(SKITTY),
+ SPECIES_TO_NATIONAL(DELCATTY),
+ SPECIES_TO_NATIONAL(KECLEON),
+ SPECIES_TO_NATIONAL(BALTOY),
+ SPECIES_TO_NATIONAL(CLAYDOL),
+ SPECIES_TO_NATIONAL(NOSEPASS),
+ SPECIES_TO_NATIONAL(TORKOAL),
+ SPECIES_TO_NATIONAL(SABLEYE),
+ SPECIES_TO_NATIONAL(BARBOACH),
+ SPECIES_TO_NATIONAL(WHISCASH),
+ SPECIES_TO_NATIONAL(LUVDISC),
+ SPECIES_TO_NATIONAL(CORPHISH),
+ SPECIES_TO_NATIONAL(CRAWDAUNT),
+ SPECIES_TO_NATIONAL(FEEBAS),
+ SPECIES_TO_NATIONAL(MILOTIC),
+ SPECIES_TO_NATIONAL(CARVANHA),
+ SPECIES_TO_NATIONAL(SHARPEDO),
+ SPECIES_TO_NATIONAL(TRAPINCH),
+ SPECIES_TO_NATIONAL(VIBRAVA),
+ SPECIES_TO_NATIONAL(FLYGON),
+ SPECIES_TO_NATIONAL(MAKUHITA),
+ SPECIES_TO_NATIONAL(HARIYAMA),
+ SPECIES_TO_NATIONAL(ELECTRIKE),
+ SPECIES_TO_NATIONAL(MANECTRIC),
+ SPECIES_TO_NATIONAL(NUMEL),
+ SPECIES_TO_NATIONAL(CAMERUPT),
+ SPECIES_TO_NATIONAL(SPHEAL),
+ SPECIES_TO_NATIONAL(SEALEO),
+ SPECIES_TO_NATIONAL(WALREIN),
+ SPECIES_TO_NATIONAL(CACNEA),
+ SPECIES_TO_NATIONAL(CACTURNE),
+ SPECIES_TO_NATIONAL(SNORUNT),
+ SPECIES_TO_NATIONAL(GLALIE),
+ SPECIES_TO_NATIONAL(LUNATONE),
+ SPECIES_TO_NATIONAL(SOLROCK),
+ SPECIES_TO_NATIONAL(AZURILL),
+ SPECIES_TO_NATIONAL(SPOINK),
+ SPECIES_TO_NATIONAL(GRUMPIG),
+ SPECIES_TO_NATIONAL(PLUSLE),
+ SPECIES_TO_NATIONAL(MINUN),
+ SPECIES_TO_NATIONAL(MAWILE),
+ SPECIES_TO_NATIONAL(MEDITITE),
+ SPECIES_TO_NATIONAL(MEDICHAM),
+ SPECIES_TO_NATIONAL(SWABLU),
+ SPECIES_TO_NATIONAL(ALTARIA),
+ SPECIES_TO_NATIONAL(WYNAUT),
+ SPECIES_TO_NATIONAL(DUSKULL),
+ SPECIES_TO_NATIONAL(DUSCLOPS),
+ SPECIES_TO_NATIONAL(ROSELIA),
+ SPECIES_TO_NATIONAL(SLAKOTH),
+ SPECIES_TO_NATIONAL(VIGOROTH),
+ SPECIES_TO_NATIONAL(SLAKING),
+ SPECIES_TO_NATIONAL(GULPIN),
+ SPECIES_TO_NATIONAL(SWALOT),
+ SPECIES_TO_NATIONAL(TROPIUS),
+ SPECIES_TO_NATIONAL(WHISMUR),
+ SPECIES_TO_NATIONAL(LOUDRED),
+ SPECIES_TO_NATIONAL(EXPLOUD),
+ SPECIES_TO_NATIONAL(CLAMPERL),
+ SPECIES_TO_NATIONAL(HUNTAIL),
+ SPECIES_TO_NATIONAL(GOREBYSS),
+ SPECIES_TO_NATIONAL(ABSOL),
+ SPECIES_TO_NATIONAL(SHUPPET),
+ SPECIES_TO_NATIONAL(BANETTE),
+ SPECIES_TO_NATIONAL(SEVIPER),
+ SPECIES_TO_NATIONAL(ZANGOOSE),
+ SPECIES_TO_NATIONAL(RELICANTH),
+ SPECIES_TO_NATIONAL(ARON),
+ SPECIES_TO_NATIONAL(LAIRON),
+ SPECIES_TO_NATIONAL(AGGRON),
+ SPECIES_TO_NATIONAL(CASTFORM),
+ SPECIES_TO_NATIONAL(VOLBEAT),
+ SPECIES_TO_NATIONAL(ILLUMISE),
+ SPECIES_TO_NATIONAL(LILEEP),
+ SPECIES_TO_NATIONAL(CRADILY),
+ SPECIES_TO_NATIONAL(ANORITH),
+ SPECIES_TO_NATIONAL(ARMALDO),
+ SPECIES_TO_NATIONAL(RALTS),
+ SPECIES_TO_NATIONAL(KIRLIA),
+ SPECIES_TO_NATIONAL(GARDEVOIR),
+ SPECIES_TO_NATIONAL(BAGON),
+ SPECIES_TO_NATIONAL(SHELGON),
+ SPECIES_TO_NATIONAL(SALAMENCE),
+ SPECIES_TO_NATIONAL(BELDUM),
+ SPECIES_TO_NATIONAL(METANG),
+ SPECIES_TO_NATIONAL(METAGROSS),
+ SPECIES_TO_NATIONAL(REGIROCK),
+ SPECIES_TO_NATIONAL(REGICE),
+ SPECIES_TO_NATIONAL(REGISTEEL),
+ SPECIES_TO_NATIONAL(KYOGRE),
+ SPECIES_TO_NATIONAL(GROUDON),
+ SPECIES_TO_NATIONAL(RAYQUAZA),
+ SPECIES_TO_NATIONAL(LATIAS),
+ SPECIES_TO_NATIONAL(LATIOS),
+ SPECIES_TO_NATIONAL(JIRACHI),
+ SPECIES_TO_NATIONAL(DEOXYS),
+ SPECIES_TO_NATIONAL(CHIMECHO),
};
-const u16 gHoennToNationalOrder[] = // Assigns Hoenn Dex Pokémon (Using National Dex Index)
-{
- // 0
- NATIONAL_DEX_TREECKO, // HOENN_DEX_TREECKO
- NATIONAL_DEX_GROVYLE, // HOENN_DEX_GROVYLE
- NATIONAL_DEX_SCEPTILE, // HOENN_DEX_SCEPTILE
- NATIONAL_DEX_TORCHIC, // HOENN_DEX_TORCHIC
- NATIONAL_DEX_COMBUSKEN, // HOENN_DEX_COMBUSKEN
- NATIONAL_DEX_BLAZIKEN, // HOENN_DEX_BLAZIKEN
- NATIONAL_DEX_MUDKIP, // HOENN_DEX_MUDKIP
- NATIONAL_DEX_MARSHTOMP, // HOENN_DEX_MARSHTOMP
- NATIONAL_DEX_SWAMPERT, // HOENN_DEX_SWAMPERT
- NATIONAL_DEX_POOCHYENA, // HOENN_DEX_POOCHYENA
- NATIONAL_DEX_MIGHTYENA, // HOENN_DEX_MIGHTYENA
- NATIONAL_DEX_ZIGZAGOON, // HOENN_DEX_ZIGZAGOON
- NATIONAL_DEX_LINOONE, // HOENN_DEX_LINOONE
- NATIONAL_DEX_WURMPLE, // HOENN_DEX_WURMPLE
- NATIONAL_DEX_SILCOON, // HOENN_DEX_SILCOON
- NATIONAL_DEX_BEAUTIFLY, // HOENN_DEX_BEAUTIFLY
- NATIONAL_DEX_CASCOON, // HOENN_DEX_CASCOON
- NATIONAL_DEX_DUSTOX, // HOENN_DEX_DUSTOX
- NATIONAL_DEX_LOTAD, // HOENN_DEX_LOTAD
- NATIONAL_DEX_LOMBRE, // HOENN_DEX_LOMBRE
- NATIONAL_DEX_LUDICOLO, // HOENN_DEX_LUDICOLO
- NATIONAL_DEX_SEEDOT, // HOENN_DEX_SEEDOT
- NATIONAL_DEX_NUZLEAF, // HOENN_DEX_NUZLEAF
- NATIONAL_DEX_SHIFTRY, // HOENN_DEX_SHIFTRY
- NATIONAL_DEX_TAILLOW, // HOENN_DEX_TAILLOW
- NATIONAL_DEX_SWELLOW, // HOENN_DEX_SWELLOW
- NATIONAL_DEX_WINGULL, // HOENN_DEX_WINGULL
- NATIONAL_DEX_PELIPPER, // HOENN_DEX_PELIPPER
- NATIONAL_DEX_RALTS, // HOENN_DEX_RALTS
- NATIONAL_DEX_KIRLIA, // HOENN_DEX_KIRLIA
- NATIONAL_DEX_GARDEVOIR, // HOENN_DEX_GARDEVOIR
- NATIONAL_DEX_SURSKIT, // HOENN_DEX_SURSKIT
- NATIONAL_DEX_MASQUERAIN, // HOENN_DEX_MASQUERAIN
- NATIONAL_DEX_SHROOMISH, // HOENN_DEX_SHROOMISH
- NATIONAL_DEX_BRELOOM, // HOENN_DEX_BRELOOM
- NATIONAL_DEX_SLAKOTH, // HOENN_DEX_SLAKOTH
- NATIONAL_DEX_VIGOROTH, // HOENN_DEX_VIGOROTH
- NATIONAL_DEX_SLAKING, // HOENN_DEX_SLAKING
- NATIONAL_DEX_ABRA, // HOENN_DEX_ABRA
- NATIONAL_DEX_KADABRA, // HOENN_DEX_KADABRA
- NATIONAL_DEX_ALAKAZAM, // HOENN_DEX_ALAKAZAM
- NATIONAL_DEX_NINCADA, // HOENN_DEX_NINCADA
- NATIONAL_DEX_NINJASK, // HOENN_DEX_NINJASK
- NATIONAL_DEX_SHEDINJA, // HOENN_DEX_SHEDINJA
- NATIONAL_DEX_WHISMUR, // HOENN_DEX_WHISMUR
- NATIONAL_DEX_LOUDRED, // HOENN_DEX_LOUDRED
- NATIONAL_DEX_EXPLOUD, // HOENN_DEX_EXPLOUD
- NATIONAL_DEX_MAKUHITA, // HOENN_DEX_MAKUHITA
- NATIONAL_DEX_HARIYAMA, // HOENN_DEX_HARIYAMA
- NATIONAL_DEX_GOLDEEN, // HOENN_DEX_GOLDEEN
- NATIONAL_DEX_SEAKING, // HOENN_DEX_SEAKING
- NATIONAL_DEX_MAGIKARP, // HOENN_DEX_MAGIKARP
- NATIONAL_DEX_GYARADOS, // HOENN_DEX_GYARADOS
- NATIONAL_DEX_AZURILL, // HOENN_DEX_AZURILL
- NATIONAL_DEX_MARILL, // HOENN_DEX_MARILL
- NATIONAL_DEX_AZUMARILL, // HOENN_DEX_AZUMARILL
- NATIONAL_DEX_GEODUDE, // HOENN_DEX_GEODUDE
- NATIONAL_DEX_GRAVELER, // HOENN_DEX_GRAVELER
- NATIONAL_DEX_GOLEM, // HOENN_DEX_GOLEM
- NATIONAL_DEX_NOSEPASS, // HOENN_DEX_NOSEPASS
- NATIONAL_DEX_SKITTY, // HOENN_DEX_SKITTY
- NATIONAL_DEX_DELCATTY, // HOENN_DEX_DELCATTY
- NATIONAL_DEX_ZUBAT, // HOENN_DEX_ZUBAT
- NATIONAL_DEX_GOLBAT, // HOENN_DEX_GOLBAT
- NATIONAL_DEX_CROBAT, // HOENN_DEX_CROBAT
- NATIONAL_DEX_TENTACOOL, // HOENN_DEX_TENTACOOL
- NATIONAL_DEX_TENTACRUEL, // HOENN_DEX_TENTACRUEL
- NATIONAL_DEX_SABLEYE, // HOENN_DEX_SABLEYE
- NATIONAL_DEX_MAWILE, // HOENN_DEX_MAWILE
- NATIONAL_DEX_ARON, // HOENN_DEX_ARON
- NATIONAL_DEX_LAIRON, // HOENN_DEX_LAIRON
- NATIONAL_DEX_AGGRON, // HOENN_DEX_AGGRON
- NATIONAL_DEX_MACHOP, // HOENN_DEX_MACHOP
- NATIONAL_DEX_MACHOKE, // HOENN_DEX_MACHOKE
- NATIONAL_DEX_MACHAMP, // HOENN_DEX_MACHAMP
- NATIONAL_DEX_MEDITITE, // HOENN_DEX_MEDITITE
- NATIONAL_DEX_MEDICHAM, // HOENN_DEX_MEDICHAM
- NATIONAL_DEX_ELECTRIKE, // HOENN_DEX_ELECTRIKE
- NATIONAL_DEX_MANECTRIC, // HOENN_DEX_MANECTRIC
- NATIONAL_DEX_PLUSLE, // HOENN_DEX_PLUSLE
- NATIONAL_DEX_MINUN, // HOENN_DEX_MINUN
- NATIONAL_DEX_MAGNEMITE, // HOENN_DEX_MAGNEMITE
- NATIONAL_DEX_MAGNETON, // HOENN_DEX_MAGNETON
- NATIONAL_DEX_VOLTORB, // HOENN_DEX_VOLTORB
- NATIONAL_DEX_ELECTRODE, // HOENN_DEX_ELECTRODE
- NATIONAL_DEX_VOLBEAT, // HOENN_DEX_VOLBEAT
- NATIONAL_DEX_ILLUMISE, // HOENN_DEX_ILLUMISE
- NATIONAL_DEX_ODDISH, // HOENN_DEX_ODDISH
- NATIONAL_DEX_GLOOM, // HOENN_DEX_GLOOM
- NATIONAL_DEX_VILEPLUME, // HOENN_DEX_VILEPLUME
- NATIONAL_DEX_BELLOSSOM, // HOENN_DEX_BELLOSSOM
- NATIONAL_DEX_DODUO, // HOENN_DEX_DODUO
- NATIONAL_DEX_DODRIO, // HOENN_DEX_DODRIO
- NATIONAL_DEX_ROSELIA, // HOENN_DEX_ROSELIA
- NATIONAL_DEX_GULPIN, // HOENN_DEX_GULPIN
- NATIONAL_DEX_SWALOT, // HOENN_DEX_SWALOT
- NATIONAL_DEX_CARVANHA, // HOENN_DEX_CARVANHA
- NATIONAL_DEX_SHARPEDO, // HOENN_DEX_SHARPEDO
- NATIONAL_DEX_WAILMER, // HOENN_DEX_WAILMER
- NATIONAL_DEX_WAILORD, // HOENN_DEX_WAILORD
- NATIONAL_DEX_NUMEL, // HOENN_DEX_NUMEL
- NATIONAL_DEX_CAMERUPT, // HOENN_DEX_CAMERUPT
- NATIONAL_DEX_SLUGMA, // HOENN_DEX_SLUGMA
- NATIONAL_DEX_MAGCARGO, // HOENN_DEX_MAGCARGO
- NATIONAL_DEX_TORKOAL, // HOENN_DEX_TORKOAL
- NATIONAL_DEX_GRIMER, // HOENN_DEX_GRIMER
- NATIONAL_DEX_MUK, // HOENN_DEX_MUK
- NATIONAL_DEX_KOFFING, // HOENN_DEX_KOFFING
- NATIONAL_DEX_WEEZING, // HOENN_DEX_WEEZING
- NATIONAL_DEX_SPOINK, // HOENN_DEX_SPOINK
- NATIONAL_DEX_GRUMPIG, // HOENN_DEX_GRUMPIG
- NATIONAL_DEX_SANDSHREW, // HOENN_DEX_SANDSHREW
- NATIONAL_DEX_SANDSLASH, // HOENN_DEX_SANDSLASH
- NATIONAL_DEX_SPINDA, // HOENN_DEX_SPINDA
- NATIONAL_DEX_SKARMORY, // HOENN_DEX_SKARMORY
- NATIONAL_DEX_TRAPINCH, // HOENN_DEX_TRAPINCH
- NATIONAL_DEX_VIBRAVA, // HOENN_DEX_VIBRAVA
- NATIONAL_DEX_FLYGON, // HOENN_DEX_FLYGON
- NATIONAL_DEX_CACNEA, // HOENN_DEX_CACNEA
- NATIONAL_DEX_CACTURNE, // HOENN_DEX_CACTURNE
- NATIONAL_DEX_SWABLU, // HOENN_DEX_SWABLU
- NATIONAL_DEX_ALTARIA, // HOENN_DEX_ALTARIA
- NATIONAL_DEX_ZANGOOSE, // HOENN_DEX_ZANGOOSE
- NATIONAL_DEX_SEVIPER, // HOENN_DEX_SEVIPER
- NATIONAL_DEX_LUNATONE, // HOENN_DEX_LUNATONE
- NATIONAL_DEX_SOLROCK, // HOENN_DEX_SOLROCK
- NATIONAL_DEX_BARBOACH, // HOENN_DEX_BARBOACH
- NATIONAL_DEX_WHISCASH, // HOENN_DEX_WHISCASH
- NATIONAL_DEX_CORPHISH, // HOENN_DEX_CORPHISH
- NATIONAL_DEX_CRAWDAUNT, // HOENN_DEX_CRAWDAUNT
- NATIONAL_DEX_BALTOY, // HOENN_DEX_BALTOY
- NATIONAL_DEX_CLAYDOL, // HOENN_DEX_CLAYDOL
- NATIONAL_DEX_LILEEP, // HOENN_DEX_LILEEP
- NATIONAL_DEX_CRADILY, // HOENN_DEX_CRADILY
- NATIONAL_DEX_ANORITH, // HOENN_DEX_ANORITH
- NATIONAL_DEX_ARMALDO, // HOENN_DEX_ARMALDO
- NATIONAL_DEX_IGGLYBUFF, // HOENN_DEX_IGGLYBUFF
- NATIONAL_DEX_JIGGLYPUFF, // HOENN_DEX_JIGGLYPUFF
- NATIONAL_DEX_WIGGLYTUFF, // HOENN_DEX_WIGGLYTUFF
- NATIONAL_DEX_FEEBAS, // HOENN_DEX_FEEBAS
- NATIONAL_DEX_MILOTIC, // HOENN_DEX_MILOTIC
- NATIONAL_DEX_CASTFORM, // HOENN_DEX_CASTFORM
- NATIONAL_DEX_STARYU, // HOENN_DEX_STARYU
- NATIONAL_DEX_STARMIE, // HOENN_DEX_STARMIE
- NATIONAL_DEX_KECLEON, // HOENN_DEX_KECLEON
- NATIONAL_DEX_SHUPPET, // HOENN_DEX_SHUPPET
- NATIONAL_DEX_BANETTE, // HOENN_DEX_BANETTE
- NATIONAL_DEX_DUSKULL, // HOENN_DEX_DUSKULL
- NATIONAL_DEX_DUSCLOPS, // HOENN_DEX_DUSCLOPS
- NATIONAL_DEX_TROPIUS, // HOENN_DEX_TROPIUS
- NATIONAL_DEX_CHIMECHO, // HOENN_DEX_CHIMECHO
- NATIONAL_DEX_ABSOL, // HOENN_DEX_ABSOL
- NATIONAL_DEX_VULPIX, // HOENN_DEX_VULPIX
- NATIONAL_DEX_NINETALES, // HOENN_DEX_NINETALES
- NATIONAL_DEX_PICHU, // HOENN_DEX_PICHU
- NATIONAL_DEX_PIKACHU, // HOENN_DEX_PIKACHU
- NATIONAL_DEX_RAICHU, // HOENN_DEX_RAICHU
- NATIONAL_DEX_PSYDUCK, // HOENN_DEX_PSYDUCK
- NATIONAL_DEX_GOLDUCK, // HOENN_DEX_GOLDUCK
- NATIONAL_DEX_WYNAUT, // HOENN_DEX_WYNAUT
- NATIONAL_DEX_WOBBUFFET, // HOENN_DEX_WOBBUFFET
- NATIONAL_DEX_NATU, // HOENN_DEX_NATU
- NATIONAL_DEX_XATU, // HOENN_DEX_XATU
- NATIONAL_DEX_GIRAFARIG, // HOENN_DEX_GIRAFARIG
- NATIONAL_DEX_PHANPY, // HOENN_DEX_PHANPY
- NATIONAL_DEX_DONPHAN, // HOENN_DEX_DONPHAN
- NATIONAL_DEX_PINSIR, // HOENN_DEX_PINSIR
- NATIONAL_DEX_HERACROSS, // HOENN_DEX_HERACROSS
- NATIONAL_DEX_RHYHORN, // HOENN_DEX_RHYHORN
- NATIONAL_DEX_RHYDON, // HOENN_DEX_RHYDON
- NATIONAL_DEX_SNORUNT, // HOENN_DEX_SNORUNT
- NATIONAL_DEX_GLALIE, // HOENN_DEX_GLALIE
- NATIONAL_DEX_SPHEAL, // HOENN_DEX_SPHEAL
- NATIONAL_DEX_SEALEO, // HOENN_DEX_SEALEO
- NATIONAL_DEX_WALREIN, // HOENN_DEX_WALREIN
- NATIONAL_DEX_CLAMPERL, // HOENN_DEX_CLAMPERL
- NATIONAL_DEX_HUNTAIL, // HOENN_DEX_HUNTAIL
- NATIONAL_DEX_GOREBYSS, // HOENN_DEX_GOREBYSS
- NATIONAL_DEX_RELICANTH, // HOENN_DEX_RELICANTH
- NATIONAL_DEX_CORSOLA, // HOENN_DEX_CORSOLA
- NATIONAL_DEX_CHINCHOU, // HOENN_DEX_CHINCHOU
- NATIONAL_DEX_LANTURN, // HOENN_DEX_LANTURN
- NATIONAL_DEX_LUVDISC, // HOENN_DEX_LUVDISC
- NATIONAL_DEX_HORSEA, // HOENN_DEX_HORSEA
- NATIONAL_DEX_SEADRA, // HOENN_DEX_SEADRA
- NATIONAL_DEX_KINGDRA, // HOENN_DEX_KINGDRA
- NATIONAL_DEX_BAGON, // HOENN_DEX_BAGON
- NATIONAL_DEX_SHELGON, // HOENN_DEX_SHELGON
- NATIONAL_DEX_SALAMENCE, // HOENN_DEX_SALAMENCE
- NATIONAL_DEX_BELDUM, // HOENN_DEX_BELDUM
- NATIONAL_DEX_METANG, // HOENN_DEX_METANG
- NATIONAL_DEX_METAGROSS, // HOENN_DEX_METAGROSS
- NATIONAL_DEX_REGIROCK, // HOENN_DEX_REGIROCK
- NATIONAL_DEX_REGICE, // HOENN_DEX_REGICE
- NATIONAL_DEX_REGISTEEL, // HOENN_DEX_REGISTEEL
- NATIONAL_DEX_LATIAS, // HOENN_DEX_LATIAS
- NATIONAL_DEX_LATIOS, // HOENN_DEX_LATIOS
- NATIONAL_DEX_KYOGRE, // HOENN_DEX_KYOGRE
- NATIONAL_DEX_GROUDON, // HOENN_DEX_GROUDON
- NATIONAL_DEX_RAYQUAZA, // HOENN_DEX_RAYQUAZA
- NATIONAL_DEX_JIRACHI, // HOENN_DEX_JIRACHI
- NATIONAL_DEX_DEOXYS, // HOENN_DEX_DEOXYS
- NATIONAL_DEX_BULBASAUR, // HOENN_DEX_BULBASAUR - Pokémon from here onwards are UNSEEN in the Hoenn Dex.
- NATIONAL_DEX_IVYSAUR, // HOENN_DEX_IVYSAUR
- NATIONAL_DEX_VENUSAUR, // HOENN_DEX_VENUSAUR
- NATIONAL_DEX_CHARMANDER, // HOENN_DEX_CHARMANDER
- NATIONAL_DEX_CHARMELEON, // HOENN_DEX_CHARMELEON
- NATIONAL_DEX_CHARIZARD, // HOENN_DEX_CHARIZARD
- NATIONAL_DEX_SQUIRTLE, // HOENN_DEX_SQUIRTLE
- NATIONAL_DEX_WARTORTLE, // HOENN_DEX_WARTORTLE
- NATIONAL_DEX_BLASTOISE, // HOENN_DEX_BLASTOISE
- NATIONAL_DEX_CATERPIE, // HOENN_DEX_CATERPIE
- NATIONAL_DEX_METAPOD, // HOENN_DEX_METAPOD
- NATIONAL_DEX_BUTTERFREE, // HOENN_DEX_BUTTERFREE
- NATIONAL_DEX_WEEDLE, // HOENN_DEX_WEEDLE
- NATIONAL_DEX_KAKUNA, // HOENN_DEX_KAKUNA
- NATIONAL_DEX_BEEDRILL, // HOENN_DEX_BEEDRILL
- NATIONAL_DEX_PIDGEY, // HOENN_DEX_PIDGEY
- NATIONAL_DEX_PIDGEOTTO, // HOENN_DEX_PIDGEOTTO
- NATIONAL_DEX_PIDGEOT, // HOENN_DEX_PIDGEOT
- NATIONAL_DEX_RATTATA, // HOENN_DEX_RATTATA
- NATIONAL_DEX_RATICATE, // HOENN_DEX_RATICATE
- NATIONAL_DEX_SPEAROW, // HOENN_DEX_SPEAROW
- NATIONAL_DEX_FEAROW, // HOENN_DEX_FEAROW
- NATIONAL_DEX_EKANS, // HOENN_DEX_EKANS
- NATIONAL_DEX_ARBOK, // HOENN_DEX_ARBOK
- NATIONAL_DEX_NIDORAN_F, // HOENN_DEX_NIDORAN♀
- NATIONAL_DEX_NIDORINA, // HOENN_DEX_NIDORINA
- NATIONAL_DEX_NIDOQUEEN, // HOENN_DEX_NIDOQUEEN
- NATIONAL_DEX_NIDORAN_M, // HOENN_DEX_NIDORAN♂
- NATIONAL_DEX_NIDORINO, // HOENN_DEX_NIDORINO
- NATIONAL_DEX_NIDOKING, // HOENN_DEX_NIDOKING
- NATIONAL_DEX_CLEFAIRY, // HOENN_DEX_CLEFAIRY
- NATIONAL_DEX_CLEFABLE, // HOENN_DEX_CLEFABLE
- NATIONAL_DEX_PARAS, // HOENN_DEX_PARAS
- NATIONAL_DEX_PARASECT, // HOENN_DEX_PARASECT
- NATIONAL_DEX_VENONAT, // HOENN_DEX_VENONAT
- NATIONAL_DEX_VENOMOTH, // HOENN_DEX_VENOMOTH
- NATIONAL_DEX_DIGLETT, // HOENN_DEX_DIGLETT
- NATIONAL_DEX_DUGTRIO, // HOENN_DEX_DUGTRIO
- NATIONAL_DEX_MEOWTH, // HOENN_DEX_MEOWTH
- NATIONAL_DEX_PERSIAN, // HOENN_DEX_PERSIAN
- NATIONAL_DEX_MANKEY, // HOENN_DEX_MANKEY
- NATIONAL_DEX_PRIMEAPE, // HOENN_DEX_PRIMEAPE
- NATIONAL_DEX_GROWLITHE, // HOENN_DEX_GROWLITHE
- NATIONAL_DEX_ARCANINE, // HOENN_DEX_ARCANINE
- NATIONAL_DEX_POLIWAG, // HOENN_DEX_POLIWAG
- NATIONAL_DEX_POLIWHIRL, // HOENN_DEX_POLIWHIRL
- NATIONAL_DEX_POLIWRATH, // HOENN_DEX_POLIWRATH
- NATIONAL_DEX_BELLSPROUT, // HOENN_DEX_BELLSPROUT
- NATIONAL_DEX_WEEPINBELL, // HOENN_DEX_WEEPINBELL
- NATIONAL_DEX_VICTREEBEL, // HOENN_DEX_VICTREEBEL
- NATIONAL_DEX_PONYTA, // HOENN_DEX_PONYTA
- NATIONAL_DEX_RAPIDASH, // HOENN_DEX_RAPIDASH
- NATIONAL_DEX_SLOWPOKE, // HOENN_DEX_SLOWPOKE
- NATIONAL_DEX_SLOWBRO, // HOENN_DEX_SLOWBRO
- NATIONAL_DEX_FARFETCHD, // HOENN_DEX_FARFETCH'D
- NATIONAL_DEX_SEEL, // HOENN_DEX_SEEL
- NATIONAL_DEX_DEWGONG, // HOENN_DEX_DEWGONG
- NATIONAL_DEX_SHELLDER, // HOENN_DEX_SHELLDER
- NATIONAL_DEX_CLOYSTER, // HOENN_DEX_CLOYSTER
- NATIONAL_DEX_GASTLY, // HOENN_DEX_GASTLY
- NATIONAL_DEX_HAUNTER, // HOENN_DEX_HAUNTER
- NATIONAL_DEX_GENGAR, // HOENN_DEX_GENGAR
- NATIONAL_DEX_ONIX, // HOENN_DEX_ONIX
- NATIONAL_DEX_DROWZEE, // HOENN_DEX_DROWZEE
- NATIONAL_DEX_HYPNO, // HOENN_DEX_HYPNO
- NATIONAL_DEX_KRABBY, // HOENN_DEX_KRABBY
- NATIONAL_DEX_KINGLER, // HOENN_DEX_KINGLER
- NATIONAL_DEX_EXEGGCUTE, // HOENN_DEX_EXEGGCUTE
- NATIONAL_DEX_EXEGGUTOR, // HOENN_DEX_EXEGGUTOR
- NATIONAL_DEX_CUBONE, // HOENN_DEX_CUBONE
- NATIONAL_DEX_MAROWAK, // HOENN_DEX_MAROWAK
- NATIONAL_DEX_HITMONLEE, // HOENN_DEX_HITMONLEE
- NATIONAL_DEX_HITMONCHAN, // HOENN_DEX_HITMONCHAN
- NATIONAL_DEX_LICKITUNG, // HOENN_DEX_LICKITUNG
- NATIONAL_DEX_CHANSEY, // HOENN_DEX_CHANSEY
- NATIONAL_DEX_TANGELA, // HOENN_DEX_TANGELA
- NATIONAL_DEX_KANGASKHAN, // HOENN_DEX_KANGASKHAN
- NATIONAL_DEX_MR_MIME, // HOENN_DEX_MR. MIME
- NATIONAL_DEX_SCYTHER, // HOENN_DEX_SCYTHER
- NATIONAL_DEX_JYNX, // HOENN_DEX_JYNX
- NATIONAL_DEX_ELECTABUZZ, // HOENN_DEX_ELECTABUZZ
- NATIONAL_DEX_MAGMAR, // HOENN_DEX_MAGMAR
- NATIONAL_DEX_TAUROS, // HOENN_DEX_TAUROS
- NATIONAL_DEX_LAPRAS, // HOENN_DEX_LAPRAS
- NATIONAL_DEX_DITTO, // HOENN_DEX_DITTO
- NATIONAL_DEX_EEVEE, // HOENN_DEX_EEVEE
- NATIONAL_DEX_VAPOREON, // HOENN_DEX_VAPOREON
- NATIONAL_DEX_JOLTEON, // HOENN_DEX_JOLTEON
- NATIONAL_DEX_FLAREON, // HOENN_DEX_FLAREON
- NATIONAL_DEX_PORYGON, // HOENN_DEX_PORYGON
- NATIONAL_DEX_OMANYTE, // HOENN_DEX_OMANYTE
- NATIONAL_DEX_OMASTAR, // HOENN_DEX_OMASTAR
- NATIONAL_DEX_KABUTO, // HOENN_DEX_KABUTO
- NATIONAL_DEX_KABUTOPS, // HOENN_DEX_KABUTOPS
- NATIONAL_DEX_AERODACTYL, // HOENN_DEX_AERODACTYL
- NATIONAL_DEX_SNORLAX, // HOENN_DEX_SNORLAX
- NATIONAL_DEX_ARTICUNO, // HOENN_DEX_ARTICUNO
- NATIONAL_DEX_ZAPDOS, // HOENN_DEX_ZAPDOS
- NATIONAL_DEX_MOLTRES, // HOENN_DEX_MOLTRES
- NATIONAL_DEX_DRATINI, // HOENN_DEX_DRATINI
- NATIONAL_DEX_DRAGONAIR, // HOENN_DEX_DRAGONAIR
- NATIONAL_DEX_DRAGONITE, // HOENN_DEX_DRAGONITE
- NATIONAL_DEX_MEWTWO, // HOENN_DEX_MEWTWO
- NATIONAL_DEX_MEW, // HOENN_DEX_MEW
- NATIONAL_DEX_CHIKORITA, // HOENN_DEX_CHIKORITA
- NATIONAL_DEX_BAYLEEF, // HOENN_DEX_BAYLEEF
- NATIONAL_DEX_MEGANIUM, // HOENN_DEX_MEGANIUM
- NATIONAL_DEX_CYNDAQUIL, // HOENN_DEX_CYNDAQUIL
- NATIONAL_DEX_QUILAVA, // HOENN_DEX_QUILAVA
- NATIONAL_DEX_TYPHLOSION, // HOENN_DEX_TYPHLOSION
- NATIONAL_DEX_TOTODILE, // HOENN_DEX_TOTODILE
- NATIONAL_DEX_CROCONAW, // HOENN_DEX_CROCONAW
- NATIONAL_DEX_FERALIGATR, // HOENN_DEX_FERALIGATR
- NATIONAL_DEX_SENTRET, // HOENN_DEX_SENTRET
- NATIONAL_DEX_FURRET, // HOENN_DEX_FURRET
- NATIONAL_DEX_HOOTHOOT, // HOENN_DEX_HOOTHOOT
- NATIONAL_DEX_NOCTOWL, // HOENN_DEX_NOCTOWL
- NATIONAL_DEX_LEDYBA, // HOENN_DEX_LEDYBA
- NATIONAL_DEX_LEDIAN, // HOENN_DEX_LEDIAN
- NATIONAL_DEX_SPINARAK, // HOENN_DEX_SPINARAK
- NATIONAL_DEX_ARIADOS, // HOENN_DEX_ARIADOS
- NATIONAL_DEX_CLEFFA, // HOENN_DEX_CLEFFA
- NATIONAL_DEX_TOGEPI, // HOENN_DEX_TOGEPI
- NATIONAL_DEX_TOGETIC, // HOENN_DEX_TOGETIC
- NATIONAL_DEX_MAREEP, // HOENN_DEX_MAREEP
- NATIONAL_DEX_FLAAFFY, // HOENN_DEX_FLAAFFY
- NATIONAL_DEX_AMPHAROS, // HOENN_DEX_AMPHAROS
- NATIONAL_DEX_SUDOWOODO, // HOENN_DEX_SUDOWOODO
- NATIONAL_DEX_POLITOED, // HOENN_DEX_POLITOED
- NATIONAL_DEX_HOPPIP, // HOENN_DEX_HOPPIP
- NATIONAL_DEX_SKIPLOOM, // HOENN_DEX_SKIPLOOM
- NATIONAL_DEX_JUMPLUFF, // HOENN_DEX_JUMPLUFF
- NATIONAL_DEX_AIPOM, // HOENN_DEX_AIPOM
- NATIONAL_DEX_SUNKERN, // HOENN_DEX_SUNKERN
- NATIONAL_DEX_SUNFLORA, // HOENN_DEX_SUNFLORA
- NATIONAL_DEX_YANMA, // HOENN_DEX_YANMA
- NATIONAL_DEX_WOOPER, // HOENN_DEX_WOOPER
- NATIONAL_DEX_QUAGSIRE, // HOENN_DEX_QUAGSIRE
- NATIONAL_DEX_ESPEON, // HOENN_DEX_ESPEON
- NATIONAL_DEX_UMBREON, // HOENN_DEX_UMBREON
- NATIONAL_DEX_MURKROW, // HOENN_DEX_MURKROW
- NATIONAL_DEX_SLOWKING, // HOENN_DEX_SLOWKING
- NATIONAL_DEX_MISDREAVUS, // HOENN_DEX_MISDREAVUS
- NATIONAL_DEX_UNOWN, // HOENN_DEX_UNOWN
- NATIONAL_DEX_PINECO, // HOENN_DEX_PINECO
- NATIONAL_DEX_FORRETRESS, // HOENN_DEX_FORRETRESS
- NATIONAL_DEX_DUNSPARCE, // HOENN_DEX_DUNSPARCE
- NATIONAL_DEX_GLIGAR, // HOENN_DEX_GLIGAR
- NATIONAL_DEX_STEELIX, // HOENN_DEX_STEELIX
- NATIONAL_DEX_SNUBBULL, // HOENN_DEX_SNUBBULL
- NATIONAL_DEX_GRANBULL, // HOENN_DEX_GRANBULL
- NATIONAL_DEX_QWILFISH, // HOENN_DEX_QWILFISH
- NATIONAL_DEX_SCIZOR, // HOENN_DEX_SCIZOR
- NATIONAL_DEX_SHUCKLE, // HOENN_DEX_SHUCKLE
- NATIONAL_DEX_SNEASEL, // HOENN_DEX_SNEASEL
- NATIONAL_DEX_TEDDIURSA, // HOENN_DEX_TEDDIURSA
- NATIONAL_DEX_URSARING, // HOENN_DEX_URSARING
- NATIONAL_DEX_SWINUB, // HOENN_DEX_SWINUB
- NATIONAL_DEX_PILOSWINE, // HOENN_DEX_PILOSWINE
- NATIONAL_DEX_REMORAID, // HOENN_DEX_REMORAID
- NATIONAL_DEX_OCTILLERY, // HOENN_DEX_OCTILLERY
- NATIONAL_DEX_DELIBIRD, // HOENN_DEX_DELIBIRD
- NATIONAL_DEX_MANTINE, // HOENN_DEX_MANTINE
- NATIONAL_DEX_HOUNDOUR, // HOENN_DEX_HOUNDOUR
- NATIONAL_DEX_HOUNDOOM, // HOENN_DEX_HOUNDOOM
- NATIONAL_DEX_PORYGON2, // HOENN_DEX_PORYGON2
- NATIONAL_DEX_STANTLER, // HOENN_DEX_STANTLER
- NATIONAL_DEX_SMEARGLE, // HOENN_DEX_SMEARGLE
- NATIONAL_DEX_TYROGUE, // HOENN_DEX_TYROGUE
- NATIONAL_DEX_HITMONTOP, // HOENN_DEX_HITMONTOP
- NATIONAL_DEX_SMOOCHUM, // HOENN_DEX_SMOOCHUM
- NATIONAL_DEX_ELEKID, // HOENN_DEX_ELEKID
- NATIONAL_DEX_MAGBY, // HOENN_DEX_MAGBY
- NATIONAL_DEX_MILTANK, // HOENN_DEX_MILTANK
- NATIONAL_DEX_BLISSEY, // HOENN_DEX_BLISSEY
- NATIONAL_DEX_RAIKOU, // HOENN_DEX_RAIKOU
- NATIONAL_DEX_ENTEI, // HOENN_DEX_ENTEI
- NATIONAL_DEX_SUICUNE, // HOENN_DEX_SUICUNE
- NATIONAL_DEX_LARVITAR, // HOENN_DEX_LARVITAR
- NATIONAL_DEX_PUPITAR, // HOENN_DEX_PUPITAR
- NATIONAL_DEX_TYRANITAR, // HOENN_DEX_TYRANITAR
- NATIONAL_DEX_LUGIA, // HOENN_DEX_LUGIA
- NATIONAL_DEX_HO_OH, // HOENN_DEX_HO-OH
- NATIONAL_DEX_CELEBI, // HOENN_DEX_CELEBI
- NATIONAL_DEX_OLD_UNOWN_B, // HOENN_DEX_OLD_UNOWN_B
- NATIONAL_DEX_OLD_UNOWN_C, // HOENN_DEX_OLD_UNOWN_C
- NATIONAL_DEX_OLD_UNOWN_D, // HOENN_DEX_OLD_UNOWN_D
- NATIONAL_DEX_OLD_UNOWN_E, // HOENN_DEX_OLD_UNOWN_E
- NATIONAL_DEX_OLD_UNOWN_F, // HOENN_DEX_OLD_UNOWN_F
- NATIONAL_DEX_OLD_UNOWN_G, // HOENN_DEX_OLD_UNOWN_G
- NATIONAL_DEX_OLD_UNOWN_H, // HOENN_DEX_OLD_UNOWN_H
- NATIONAL_DEX_OLD_UNOWN_I, // HOENN_DEX_OLD_UNOWN_I
- NATIONAL_DEX_OLD_UNOWN_J, // HOENN_DEX_OLD_UNOWN_J
- NATIONAL_DEX_OLD_UNOWN_K, // HOENN_DEX_OLD_UNOWN_K
- NATIONAL_DEX_OLD_UNOWN_L, // HOENN_DEX_OLD_UNOWN_L
- NATIONAL_DEX_OLD_UNOWN_M, // HOENN_DEX_OLD_UNOWN_M
- NATIONAL_DEX_OLD_UNOWN_N, // HOENN_DEX_OLD_UNOWN_N
- NATIONAL_DEX_OLD_UNOWN_O, // HOENN_DEX_OLD_UNOWN_O
- NATIONAL_DEX_OLD_UNOWN_P, // HOENN_DEX_OLD_UNOWN_P
- NATIONAL_DEX_OLD_UNOWN_Q, // HOENN_DEX_OLD_UNOWN_Q
- NATIONAL_DEX_OLD_UNOWN_R, // HOENN_DEX_OLD_UNOWN_R
- NATIONAL_DEX_OLD_UNOWN_S, // HOENN_DEX_OLD_UNOWN_S
- NATIONAL_DEX_OLD_UNOWN_T, // HOENN_DEX_OLD_UNOWN_T
- NATIONAL_DEX_OLD_UNOWN_U, // HOENN_DEX_OLD_UNOWN_U
- NATIONAL_DEX_OLD_UNOWN_V, // HOENN_DEX_OLD_UNOWN_V
- NATIONAL_DEX_OLD_UNOWN_W, // HOENN_DEX_OLD_UNOWN_W
- NATIONAL_DEX_OLD_UNOWN_X, // HOENN_DEX_OLD_UNOWN_X
- NATIONAL_DEX_OLD_UNOWN_Y, // HOENN_DEX_OLD_UNOWN_Y
- NATIONAL_DEX_OLD_UNOWN_Z // HOENN_DEX_OLD_UNOWN_Z
+const u16 gHoennToNationalOrder[] = // Assigns Hoenn Dex Pokmon (Using National Dex Index)
+{
+ HOENN_TO_NATIONAL(TREECKO),
+ HOENN_TO_NATIONAL(GROVYLE),
+ HOENN_TO_NATIONAL(SCEPTILE),
+ HOENN_TO_NATIONAL(TORCHIC),
+ HOENN_TO_NATIONAL(COMBUSKEN),
+ HOENN_TO_NATIONAL(BLAZIKEN),
+ HOENN_TO_NATIONAL(MUDKIP),
+ HOENN_TO_NATIONAL(MARSHTOMP),
+ HOENN_TO_NATIONAL(SWAMPERT),
+ HOENN_TO_NATIONAL(POOCHYENA),
+ HOENN_TO_NATIONAL(MIGHTYENA),
+ HOENN_TO_NATIONAL(ZIGZAGOON),
+ HOENN_TO_NATIONAL(LINOONE),
+ HOENN_TO_NATIONAL(WURMPLE),
+ HOENN_TO_NATIONAL(SILCOON),
+ HOENN_TO_NATIONAL(BEAUTIFLY),
+ HOENN_TO_NATIONAL(CASCOON),
+ HOENN_TO_NATIONAL(DUSTOX),
+ HOENN_TO_NATIONAL(LOTAD),
+ HOENN_TO_NATIONAL(LOMBRE),
+ HOENN_TO_NATIONAL(LUDICOLO),
+ HOENN_TO_NATIONAL(SEEDOT),
+ HOENN_TO_NATIONAL(NUZLEAF),
+ HOENN_TO_NATIONAL(SHIFTRY),
+ HOENN_TO_NATIONAL(TAILLOW),
+ HOENN_TO_NATIONAL(SWELLOW),
+ HOENN_TO_NATIONAL(WINGULL),
+ HOENN_TO_NATIONAL(PELIPPER),
+ HOENN_TO_NATIONAL(RALTS),
+ HOENN_TO_NATIONAL(KIRLIA),
+ HOENN_TO_NATIONAL(GARDEVOIR),
+ HOENN_TO_NATIONAL(SURSKIT),
+ HOENN_TO_NATIONAL(MASQUERAIN),
+ HOENN_TO_NATIONAL(SHROOMISH),
+ HOENN_TO_NATIONAL(BRELOOM),
+ HOENN_TO_NATIONAL(SLAKOTH),
+ HOENN_TO_NATIONAL(VIGOROTH),
+ HOENN_TO_NATIONAL(SLAKING),
+ HOENN_TO_NATIONAL(ABRA),
+ HOENN_TO_NATIONAL(KADABRA),
+ HOENN_TO_NATIONAL(ALAKAZAM),
+ HOENN_TO_NATIONAL(NINCADA),
+ HOENN_TO_NATIONAL(NINJASK),
+ HOENN_TO_NATIONAL(SHEDINJA),
+ HOENN_TO_NATIONAL(WHISMUR),
+ HOENN_TO_NATIONAL(LOUDRED),
+ HOENN_TO_NATIONAL(EXPLOUD),
+ HOENN_TO_NATIONAL(MAKUHITA),
+ HOENN_TO_NATIONAL(HARIYAMA),
+ HOENN_TO_NATIONAL(GOLDEEN),
+ HOENN_TO_NATIONAL(SEAKING),
+ HOENN_TO_NATIONAL(MAGIKARP),
+ HOENN_TO_NATIONAL(GYARADOS),
+ HOENN_TO_NATIONAL(AZURILL),
+ HOENN_TO_NATIONAL(MARILL),
+ HOENN_TO_NATIONAL(AZUMARILL),
+ HOENN_TO_NATIONAL(GEODUDE),
+ HOENN_TO_NATIONAL(GRAVELER),
+ HOENN_TO_NATIONAL(GOLEM),
+ HOENN_TO_NATIONAL(NOSEPASS),
+ HOENN_TO_NATIONAL(SKITTY),
+ HOENN_TO_NATIONAL(DELCATTY),
+ HOENN_TO_NATIONAL(ZUBAT),
+ HOENN_TO_NATIONAL(GOLBAT),
+ HOENN_TO_NATIONAL(CROBAT),
+ HOENN_TO_NATIONAL(TENTACOOL),
+ HOENN_TO_NATIONAL(TENTACRUEL),
+ HOENN_TO_NATIONAL(SABLEYE),
+ HOENN_TO_NATIONAL(MAWILE),
+ HOENN_TO_NATIONAL(ARON),
+ HOENN_TO_NATIONAL(LAIRON),
+ HOENN_TO_NATIONAL(AGGRON),
+ HOENN_TO_NATIONAL(MACHOP),
+ HOENN_TO_NATIONAL(MACHOKE),
+ HOENN_TO_NATIONAL(MACHAMP),
+ HOENN_TO_NATIONAL(MEDITITE),
+ HOENN_TO_NATIONAL(MEDICHAM),
+ HOENN_TO_NATIONAL(ELECTRIKE),
+ HOENN_TO_NATIONAL(MANECTRIC),
+ HOENN_TO_NATIONAL(PLUSLE),
+ HOENN_TO_NATIONAL(MINUN),
+ HOENN_TO_NATIONAL(MAGNEMITE),
+ HOENN_TO_NATIONAL(MAGNETON),
+ HOENN_TO_NATIONAL(VOLTORB),
+ HOENN_TO_NATIONAL(ELECTRODE),
+ HOENN_TO_NATIONAL(VOLBEAT),
+ HOENN_TO_NATIONAL(ILLUMISE),
+ HOENN_TO_NATIONAL(ODDISH),
+ HOENN_TO_NATIONAL(GLOOM),
+ HOENN_TO_NATIONAL(VILEPLUME),
+ HOENN_TO_NATIONAL(BELLOSSOM),
+ HOENN_TO_NATIONAL(DODUO),
+ HOENN_TO_NATIONAL(DODRIO),
+ HOENN_TO_NATIONAL(ROSELIA),
+ HOENN_TO_NATIONAL(GULPIN),
+ HOENN_TO_NATIONAL(SWALOT),
+ HOENN_TO_NATIONAL(CARVANHA),
+ HOENN_TO_NATIONAL(SHARPEDO),
+ HOENN_TO_NATIONAL(WAILMER),
+ HOENN_TO_NATIONAL(WAILORD),
+ HOENN_TO_NATIONAL(NUMEL),
+ HOENN_TO_NATIONAL(CAMERUPT),
+ HOENN_TO_NATIONAL(SLUGMA),
+ HOENN_TO_NATIONAL(MAGCARGO),
+ HOENN_TO_NATIONAL(TORKOAL),
+ HOENN_TO_NATIONAL(GRIMER),
+ HOENN_TO_NATIONAL(MUK),
+ HOENN_TO_NATIONAL(KOFFING),
+ HOENN_TO_NATIONAL(WEEZING),
+ HOENN_TO_NATIONAL(SPOINK),
+ HOENN_TO_NATIONAL(GRUMPIG),
+ HOENN_TO_NATIONAL(SANDSHREW),
+ HOENN_TO_NATIONAL(SANDSLASH),
+ HOENN_TO_NATIONAL(SPINDA),
+ HOENN_TO_NATIONAL(SKARMORY),
+ HOENN_TO_NATIONAL(TRAPINCH),
+ HOENN_TO_NATIONAL(VIBRAVA),
+ HOENN_TO_NATIONAL(FLYGON),
+ HOENN_TO_NATIONAL(CACNEA),
+ HOENN_TO_NATIONAL(CACTURNE),
+ HOENN_TO_NATIONAL(SWABLU),
+ HOENN_TO_NATIONAL(ALTARIA),
+ HOENN_TO_NATIONAL(ZANGOOSE),
+ HOENN_TO_NATIONAL(SEVIPER),
+ HOENN_TO_NATIONAL(LUNATONE),
+ HOENN_TO_NATIONAL(SOLROCK),
+ HOENN_TO_NATIONAL(BARBOACH),
+ HOENN_TO_NATIONAL(WHISCASH),
+ HOENN_TO_NATIONAL(CORPHISH),
+ HOENN_TO_NATIONAL(CRAWDAUNT),
+ HOENN_TO_NATIONAL(BALTOY),
+ HOENN_TO_NATIONAL(CLAYDOL),
+ HOENN_TO_NATIONAL(LILEEP),
+ HOENN_TO_NATIONAL(CRADILY),
+ HOENN_TO_NATIONAL(ANORITH),
+ HOENN_TO_NATIONAL(ARMALDO),
+ HOENN_TO_NATIONAL(IGGLYBUFF),
+ HOENN_TO_NATIONAL(JIGGLYPUFF),
+ HOENN_TO_NATIONAL(WIGGLYTUFF),
+ HOENN_TO_NATIONAL(FEEBAS),
+ HOENN_TO_NATIONAL(MILOTIC),
+ HOENN_TO_NATIONAL(CASTFORM),
+ HOENN_TO_NATIONAL(STARYU),
+ HOENN_TO_NATIONAL(STARMIE),
+ HOENN_TO_NATIONAL(KECLEON),
+ HOENN_TO_NATIONAL(SHUPPET),
+ HOENN_TO_NATIONAL(BANETTE),
+ HOENN_TO_NATIONAL(DUSKULL),
+ HOENN_TO_NATIONAL(DUSCLOPS),
+ HOENN_TO_NATIONAL(TROPIUS),
+ HOENN_TO_NATIONAL(CHIMECHO),
+ HOENN_TO_NATIONAL(ABSOL),
+ HOENN_TO_NATIONAL(VULPIX),
+ HOENN_TO_NATIONAL(NINETALES),
+ HOENN_TO_NATIONAL(PICHU),
+ HOENN_TO_NATIONAL(PIKACHU),
+ HOENN_TO_NATIONAL(RAICHU),
+ HOENN_TO_NATIONAL(PSYDUCK),
+ HOENN_TO_NATIONAL(GOLDUCK),
+ HOENN_TO_NATIONAL(WYNAUT),
+ HOENN_TO_NATIONAL(WOBBUFFET),
+ HOENN_TO_NATIONAL(NATU),
+ HOENN_TO_NATIONAL(XATU),
+ HOENN_TO_NATIONAL(GIRAFARIG),
+ HOENN_TO_NATIONAL(PHANPY),
+ HOENN_TO_NATIONAL(DONPHAN),
+ HOENN_TO_NATIONAL(PINSIR),
+ HOENN_TO_NATIONAL(HERACROSS),
+ HOENN_TO_NATIONAL(RHYHORN),
+ HOENN_TO_NATIONAL(RHYDON),
+ HOENN_TO_NATIONAL(SNORUNT),
+ HOENN_TO_NATIONAL(GLALIE),
+ HOENN_TO_NATIONAL(SPHEAL),
+ HOENN_TO_NATIONAL(SEALEO),
+ HOENN_TO_NATIONAL(WALREIN),
+ HOENN_TO_NATIONAL(CLAMPERL),
+ HOENN_TO_NATIONAL(HUNTAIL),
+ HOENN_TO_NATIONAL(GOREBYSS),
+ HOENN_TO_NATIONAL(RELICANTH),
+ HOENN_TO_NATIONAL(CORSOLA),
+ HOENN_TO_NATIONAL(CHINCHOU),
+ HOENN_TO_NATIONAL(LANTURN),
+ HOENN_TO_NATIONAL(LUVDISC),
+ HOENN_TO_NATIONAL(HORSEA),
+ HOENN_TO_NATIONAL(SEADRA),
+ HOENN_TO_NATIONAL(KINGDRA),
+ HOENN_TO_NATIONAL(BAGON),
+ HOENN_TO_NATIONAL(SHELGON),
+ HOENN_TO_NATIONAL(SALAMENCE),
+ HOENN_TO_NATIONAL(BELDUM),
+ HOENN_TO_NATIONAL(METANG),
+ HOENN_TO_NATIONAL(METAGROSS),
+ HOENN_TO_NATIONAL(REGIROCK),
+ HOENN_TO_NATIONAL(REGICE),
+ HOENN_TO_NATIONAL(REGISTEEL),
+ HOENN_TO_NATIONAL(LATIAS),
+ HOENN_TO_NATIONAL(LATIOS),
+ HOENN_TO_NATIONAL(KYOGRE),
+ HOENN_TO_NATIONAL(GROUDON),
+ HOENN_TO_NATIONAL(RAYQUAZA),
+ HOENN_TO_NATIONAL(JIRACHI),
+ HOENN_TO_NATIONAL(DEOXYS),
+ HOENN_TO_NATIONAL(BULBASAUR), // Pokmon from here onwards are UNSEEN in the HoennDex.
+ HOENN_TO_NATIONAL(IVYSAUR),
+ HOENN_TO_NATIONAL(VENUSAUR),
+ HOENN_TO_NATIONAL(CHARMANDER),
+ HOENN_TO_NATIONAL(CHARMELEON),
+ HOENN_TO_NATIONAL(CHARIZARD),
+ HOENN_TO_NATIONAL(SQUIRTLE),
+ HOENN_TO_NATIONAL(WARTORTLE),
+ HOENN_TO_NATIONAL(BLASTOISE),
+ HOENN_TO_NATIONAL(CATERPIE),
+ HOENN_TO_NATIONAL(METAPOD),
+ HOENN_TO_NATIONAL(BUTTERFREE),
+ HOENN_TO_NATIONAL(WEEDLE),
+ HOENN_TO_NATIONAL(KAKUNA),
+ HOENN_TO_NATIONAL(BEEDRILL),
+ HOENN_TO_NATIONAL(PIDGEY),
+ HOENN_TO_NATIONAL(PIDGEOTTO),
+ HOENN_TO_NATIONAL(PIDGEOT),
+ HOENN_TO_NATIONAL(RATTATA),
+ HOENN_TO_NATIONAL(RATICATE),
+ HOENN_TO_NATIONAL(SPEAROW),
+ HOENN_TO_NATIONAL(FEAROW),
+ HOENN_TO_NATIONAL(EKANS),
+ HOENN_TO_NATIONAL(ARBOK),
+ HOENN_TO_NATIONAL(NIDORAN_F),
+ HOENN_TO_NATIONAL(NIDORINA),
+ HOENN_TO_NATIONAL(NIDOQUEEN),
+ HOENN_TO_NATIONAL(NIDORAN_M),
+ HOENN_TO_NATIONAL(NIDORINO),
+ HOENN_TO_NATIONAL(NIDOKING),
+ HOENN_TO_NATIONAL(CLEFAIRY),
+ HOENN_TO_NATIONAL(CLEFABLE),
+ HOENN_TO_NATIONAL(PARAS),
+ HOENN_TO_NATIONAL(PARASECT),
+ HOENN_TO_NATIONAL(VENONAT),
+ HOENN_TO_NATIONAL(VENOMOTH),
+ HOENN_TO_NATIONAL(DIGLETT),
+ HOENN_TO_NATIONAL(DUGTRIO),
+ HOENN_TO_NATIONAL(MEOWTH),
+ HOENN_TO_NATIONAL(PERSIAN),
+ HOENN_TO_NATIONAL(MANKEY),
+ HOENN_TO_NATIONAL(PRIMEAPE),
+ HOENN_TO_NATIONAL(GROWLITHE),
+ HOENN_TO_NATIONAL(ARCANINE),
+ HOENN_TO_NATIONAL(POLIWAG),
+ HOENN_TO_NATIONAL(POLIWHIRL),
+ HOENN_TO_NATIONAL(POLIWRATH),
+ HOENN_TO_NATIONAL(BELLSPROUT),
+ HOENN_TO_NATIONAL(WEEPINBELL),
+ HOENN_TO_NATIONAL(VICTREEBEL),
+ HOENN_TO_NATIONAL(PONYTA),
+ HOENN_TO_NATIONAL(RAPIDASH),
+ HOENN_TO_NATIONAL(SLOWPOKE),
+ HOENN_TO_NATIONAL(SLOWBRO),
+ HOENN_TO_NATIONAL(FARFETCHD),
+ HOENN_TO_NATIONAL(SEEL),
+ HOENN_TO_NATIONAL(DEWGONG),
+ HOENN_TO_NATIONAL(SHELLDER),
+ HOENN_TO_NATIONAL(CLOYSTER),
+ HOENN_TO_NATIONAL(GASTLY),
+ HOENN_TO_NATIONAL(HAUNTER),
+ HOENN_TO_NATIONAL(GENGAR),
+ HOENN_TO_NATIONAL(ONIX),
+ HOENN_TO_NATIONAL(DROWZEE),
+ HOENN_TO_NATIONAL(HYPNO),
+ HOENN_TO_NATIONAL(KRABBY),
+ HOENN_TO_NATIONAL(KINGLER),
+ HOENN_TO_NATIONAL(EXEGGCUTE),
+ HOENN_TO_NATIONAL(EXEGGUTOR),
+ HOENN_TO_NATIONAL(CUBONE),
+ HOENN_TO_NATIONAL(MAROWAK),
+ HOENN_TO_NATIONAL(HITMONLEE),
+ HOENN_TO_NATIONAL(HITMONCHAN),
+ HOENN_TO_NATIONAL(LICKITUNG),
+ HOENN_TO_NATIONAL(CHANSEY),
+ HOENN_TO_NATIONAL(TANGELA),
+ HOENN_TO_NATIONAL(KANGASKHAN),
+ HOENN_TO_NATIONAL(MR_MIME),
+ HOENN_TO_NATIONAL(SCYTHER),
+ HOENN_TO_NATIONAL(JYNX),
+ HOENN_TO_NATIONAL(ELECTABUZZ),
+ HOENN_TO_NATIONAL(MAGMAR),
+ HOENN_TO_NATIONAL(TAUROS),
+ HOENN_TO_NATIONAL(LAPRAS),
+ HOENN_TO_NATIONAL(DITTO),
+ HOENN_TO_NATIONAL(EEVEE),
+ HOENN_TO_NATIONAL(VAPOREON),
+ HOENN_TO_NATIONAL(JOLTEON),
+ HOENN_TO_NATIONAL(FLAREON),
+ HOENN_TO_NATIONAL(PORYGON),
+ HOENN_TO_NATIONAL(OMANYTE),
+ HOENN_TO_NATIONAL(OMASTAR),
+ HOENN_TO_NATIONAL(KABUTO),
+ HOENN_TO_NATIONAL(KABUTOPS),
+ HOENN_TO_NATIONAL(AERODACTYL),
+ HOENN_TO_NATIONAL(SNORLAX),
+ HOENN_TO_NATIONAL(ARTICUNO),
+ HOENN_TO_NATIONAL(ZAPDOS),
+ HOENN_TO_NATIONAL(MOLTRES),
+ HOENN_TO_NATIONAL(DRATINI),
+ HOENN_TO_NATIONAL(DRAGONAIR),
+ HOENN_TO_NATIONAL(DRAGONITE),
+ HOENN_TO_NATIONAL(MEWTWO),
+ HOENN_TO_NATIONAL(MEW),
+ HOENN_TO_NATIONAL(CHIKORITA),
+ HOENN_TO_NATIONAL(BAYLEEF),
+ HOENN_TO_NATIONAL(MEGANIUM),
+ HOENN_TO_NATIONAL(CYNDAQUIL),
+ HOENN_TO_NATIONAL(QUILAVA),
+ HOENN_TO_NATIONAL(TYPHLOSION),
+ HOENN_TO_NATIONAL(TOTODILE),
+ HOENN_TO_NATIONAL(CROCONAW),
+ HOENN_TO_NATIONAL(FERALIGATR),
+ HOENN_TO_NATIONAL(SENTRET),
+ HOENN_TO_NATIONAL(FURRET),
+ HOENN_TO_NATIONAL(HOOTHOOT),
+ HOENN_TO_NATIONAL(NOCTOWL),
+ HOENN_TO_NATIONAL(LEDYBA),
+ HOENN_TO_NATIONAL(LEDIAN),
+ HOENN_TO_NATIONAL(SPINARAK),
+ HOENN_TO_NATIONAL(ARIADOS),
+ HOENN_TO_NATIONAL(CLEFFA),
+ HOENN_TO_NATIONAL(TOGEPI),
+ HOENN_TO_NATIONAL(TOGETIC),
+ HOENN_TO_NATIONAL(MAREEP),
+ HOENN_TO_NATIONAL(FLAAFFY),
+ HOENN_TO_NATIONAL(AMPHAROS),
+ HOENN_TO_NATIONAL(SUDOWOODO),
+ HOENN_TO_NATIONAL(POLITOED),
+ HOENN_TO_NATIONAL(HOPPIP),
+ HOENN_TO_NATIONAL(SKIPLOOM),
+ HOENN_TO_NATIONAL(JUMPLUFF),
+ HOENN_TO_NATIONAL(AIPOM),
+ HOENN_TO_NATIONAL(SUNKERN),
+ HOENN_TO_NATIONAL(SUNFLORA),
+ HOENN_TO_NATIONAL(YANMA),
+ HOENN_TO_NATIONAL(WOOPER),
+ HOENN_TO_NATIONAL(QUAGSIRE),
+ HOENN_TO_NATIONAL(ESPEON),
+ HOENN_TO_NATIONAL(UMBREON),
+ HOENN_TO_NATIONAL(MURKROW),
+ HOENN_TO_NATIONAL(SLOWKING),
+ HOENN_TO_NATIONAL(MISDREAVUS),
+ HOENN_TO_NATIONAL(UNOWN),
+ HOENN_TO_NATIONAL(PINECO),
+ HOENN_TO_NATIONAL(FORRETRESS),
+ HOENN_TO_NATIONAL(DUNSPARCE),
+ HOENN_TO_NATIONAL(GLIGAR),
+ HOENN_TO_NATIONAL(STEELIX),
+ HOENN_TO_NATIONAL(SNUBBULL),
+ HOENN_TO_NATIONAL(GRANBULL),
+ HOENN_TO_NATIONAL(QWILFISH),
+ HOENN_TO_NATIONAL(SCIZOR),
+ HOENN_TO_NATIONAL(SHUCKLE),
+ HOENN_TO_NATIONAL(SNEASEL),
+ HOENN_TO_NATIONAL(TEDDIURSA),
+ HOENN_TO_NATIONAL(URSARING),
+ HOENN_TO_NATIONAL(SWINUB),
+ HOENN_TO_NATIONAL(PILOSWINE),
+ HOENN_TO_NATIONAL(REMORAID),
+ HOENN_TO_NATIONAL(OCTILLERY),
+ HOENN_TO_NATIONAL(DELIBIRD),
+ HOENN_TO_NATIONAL(MANTINE),
+ HOENN_TO_NATIONAL(HOUNDOUR),
+ HOENN_TO_NATIONAL(HOUNDOOM),
+ HOENN_TO_NATIONAL(PORYGON2),
+ HOENN_TO_NATIONAL(STANTLER),
+ HOENN_TO_NATIONAL(SMEARGLE),
+ HOENN_TO_NATIONAL(TYROGUE),
+ HOENN_TO_NATIONAL(HITMONTOP),
+ HOENN_TO_NATIONAL(SMOOCHUM),
+ HOENN_TO_NATIONAL(ELEKID),
+ HOENN_TO_NATIONAL(MAGBY),
+ HOENN_TO_NATIONAL(MILTANK),
+ HOENN_TO_NATIONAL(BLISSEY),
+ HOENN_TO_NATIONAL(RAIKOU),
+ HOENN_TO_NATIONAL(ENTEI),
+ HOENN_TO_NATIONAL(SUICUNE),
+ HOENN_TO_NATIONAL(LARVITAR),
+ HOENN_TO_NATIONAL(PUPITAR),
+ HOENN_TO_NATIONAL(TYRANITAR),
+ HOENN_TO_NATIONAL(LUGIA),
+ HOENN_TO_NATIONAL(HO_OH),
+ HOENN_TO_NATIONAL(CELEBI),
+ HOENN_TO_NATIONAL(OLD_UNOWN_B),
+ HOENN_TO_NATIONAL(OLD_UNOWN_C),
+ HOENN_TO_NATIONAL(OLD_UNOWN_D),
+ HOENN_TO_NATIONAL(OLD_UNOWN_E),
+ HOENN_TO_NATIONAL(OLD_UNOWN_F),
+ HOENN_TO_NATIONAL(OLD_UNOWN_G),
+ HOENN_TO_NATIONAL(OLD_UNOWN_H),
+ HOENN_TO_NATIONAL(OLD_UNOWN_I),
+ HOENN_TO_NATIONAL(OLD_UNOWN_J),
+ HOENN_TO_NATIONAL(OLD_UNOWN_K),
+ HOENN_TO_NATIONAL(OLD_UNOWN_L),
+ HOENN_TO_NATIONAL(OLD_UNOWN_M),
+ HOENN_TO_NATIONAL(OLD_UNOWN_N),
+ HOENN_TO_NATIONAL(OLD_UNOWN_O),
+ HOENN_TO_NATIONAL(OLD_UNOWN_P),
+ HOENN_TO_NATIONAL(OLD_UNOWN_Q),
+ HOENN_TO_NATIONAL(OLD_UNOWN_R),
+ HOENN_TO_NATIONAL(OLD_UNOWN_S),
+ HOENN_TO_NATIONAL(OLD_UNOWN_T),
+ HOENN_TO_NATIONAL(OLD_UNOWN_U),
+ HOENN_TO_NATIONAL(OLD_UNOWN_V),
+ HOENN_TO_NATIONAL(OLD_UNOWN_W),
+ HOENN_TO_NATIONAL(OLD_UNOWN_X),
+ HOENN_TO_NATIONAL(OLD_UNOWN_Y),
+ HOENN_TO_NATIONAL(OLD_UNOWN_Z),
};
const struct SpindaSpot gSpindaSpotGraphics[] =
@@ -2273,9 +2270,9 @@ const u16 gUnknown_08329D54[] =
{
FACILITY_CLASS_COOLTRAINER_M, FACILITY_CLASS_BLACK_BELT, FACILITY_CLASS_CAMPER,
FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_PSYCHIC_M, FACILITY_CLASS_BUG_CATCHER,
- FACILITY_CLASS_PKMN_BREEDER_2, FACILITY_CLASS_GUITARIST, FACILITY_CLASS_COOLTRAINER_F,
+ FACILITY_CLASS_PKMN_BREEDER_M, FACILITY_CLASS_GUITARIST, FACILITY_CLASS_COOLTRAINER_F,
FACILITY_CLASS_HEX_MANIAC, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_LASS,
- FACILITY_CLASS_PSYCHIC_F, FACILITY_CLASS_BATTLE_GIRL, FACILITY_CLASS_PKMN_BREEDER_1,
+ FACILITY_CLASS_PSYCHIC_F, FACILITY_CLASS_BATTLE_GIRL, FACILITY_CLASS_POKEMON_BREEDER_F,
FACILITY_CLASS_BEAUTY
};
@@ -2879,10 +2876,10 @@ void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 m
u8 language;
u32 otId = gApprentices[src->id].otId;
u32 personality = ((gApprentices[src->id].otId >> 8) | ((gApprentices[src->id].otId & 0xFF) << 8))
- + src->monData[monId].species + src->number;
+ + src->party[monId].species + src->number;
CreateMon(mon,
- src->monData[monId].species,
+ src->party[monId].species,
GetFrontierEnemyMonLevel(src->lvlMode - 1),
0x1F,
TRUE,
@@ -2890,9 +2887,9 @@ void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 m
TRUE,
otId);
- SetMonData(mon, MON_DATA_HELD_ITEM, &src->monData[monId].item);
+ SetMonData(mon, MON_DATA_HELD_ITEM, &src->party[monId].item);
for (i = 0; i < 4; i++)
- SetMonMoveSlot(mon, src->monData[monId].moves[i], i);
+ SetMonMoveSlot(mon, src->party[monId].moves[i], i);
evAmount = MAX_TOTAL_EVS / NUM_STATS;
for (i = 0; i < NUM_STATS; i++)
@@ -2904,7 +2901,7 @@ void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 m
CalculateMonStats(mon);
}
-void CreateMonWithEVSpreadPersonalityOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId)
+void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId)
{
s32 i;
s32 statCount = 0;
@@ -6700,7 +6697,7 @@ static void sub_806E6CC(u8 taskId)
DestroyTask(taskId);
}
-const u8 *GetMonFrontSpritePal(struct Pokemon *mon)
+const u32 *GetMonFrontSpritePal(struct Pokemon *mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
@@ -6714,7 +6711,7 @@ const u8 *GetMonFrontSpritePal(struct Pokemon *mon)
// Extracts the lower 16 bits of a 32-bit number
#define LOHALF(n) ((n) & 0xFFFF)
-const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality)
+const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality)
{
u32 shinyValue;
@@ -7117,9 +7114,9 @@ u16 FacilityClassToPicIndex(u16 facilityClass)
u16 PlayerGenderToFrontTrainerPicId(u8 playerGender)
{
if (playerGender != MALE)
- return FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_MAY);
+ return FacilityClassToPicIndex(FACILITY_CLASS_MAY);
else
- return FacilityClassToPicIndex(FACILITY_CLASS_PKMN_TRAINER_BRENDAN);
+ return FacilityClassToPicIndex(FACILITY_CLASS_BRENDAN);
}
void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality)
diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c
index 6734fce06..989bce37d 100644
--- a/src/pokemon_animation.c
+++ b/src/pokemon_animation.c
@@ -1,11 +1,13 @@
#include "global.h"
#include "pokemon.h"
-#include "sprite.h"
#include "pokemon_animation.h"
-#include "trig.h"
+#include "sprite.h"
#include "task.h"
+#include "trig.h"
#include "util.h"
+#include "constants/battle_anim.h"
#include "constants/rgb.h"
+#include "constants/species.h"
struct UnkAnimStruct
{
@@ -183,418 +185,392 @@ static IWRAM_DATA bool32 sUnknown_03001274;
// const rom data
static const u8 sSpeciesToBackAnimSet[] =
{
- 0x00, // SPECIES_NONE
- 0x13, // SPECIES_BULBASAUR
- 0x02, // SPECIES_IVYSAUR
- 0x08, // SPECIES_VENUSAUR
- 0x12, // SPECIES_CHARMANDER
- 0x15, // SPECIES_CHARMELEON
- 0x17, // SPECIES_CHARIZARD
- 0x12, // SPECIES_SQUIRTLE
- 0x12, // SPECIES_WARTORTLE
- 0x19, // SPECIES_BLASTOISE
- 0x02, // SPECIES_CATERPIE
- 0x13, // SPECIES_METAPOD
- 0x11, // SPECIES_BUTTERFREE
- 0x02, // SPECIES_WEEDLE
- 0x13, // SPECIES_KAKUNA
- 0x01, // SPECIES_BEEDRILL
- 0x0f, // SPECIES_PIDGEY
- 0x15, // SPECIES_PIDGEOTTO
- 0x0f, // SPECIES_PIDGEOT
- 0x0a, // SPECIES_RATTATA
- 0x0a, // SPECIES_RATICATE
- 0x0f, // SPECIES_SPEAROW
- 0x15, // SPECIES_FEAROW
- 0x0f, // SPECIES_EKANS
- 0x09, // SPECIES_ARBOK
- 0x16, // SPECIES_PIKACHU
- 0x16, // SPECIES_RAICHU
- 0x12, // SPECIES_SANDSHREW
- 0x10, // SPECIES_SANDSLASH
- 0x12, // SPECIES_NIDORAN_F
- 0x15, // SPECIES_NIDORINA
- 0x09, // SPECIES_NIDOQUEEN
- 0x12, // SPECIES_NIDORAN_M
- 0x15, // SPECIES_NIDORINO
- 0x09, // SPECIES_NIDOKING
- 0x13, // SPECIES_CLEFAIRY
- 0x13, // SPECIES_CLEFABLE
- 0x10, // SPECIES_VULPIX
- 0x01, // SPECIES_NINETALES
- 0x13, // SPECIES_JIGGLYPUFF
- 0x06, // SPECIES_WIGGLYTUFF
- 0x11, // SPECIES_ZUBAT
- 0x09, // SPECIES_GOLBAT
- 0x02, // SPECIES_ODDISH
- 0x02, // SPECIES_GLOOM
- 0x14, // SPECIES_VILEPLUME
- 0x02, // SPECIES_PARAS
- 0x08, // SPECIES_PARASECT
- 0x0a, // SPECIES_VENONAT
- 0x11, // SPECIES_VENOMOTH
- 0x09, // SPECIES_DIGLETT
- 0x09, // SPECIES_DUGTRIO
- 0x10, // SPECIES_MEOWTH
- 0x0f, // SPECIES_PERSIAN
- 0x02, // SPECIES_PSYDUCK
- 0x14, // SPECIES_GOLDUCK
- 0x10, // SPECIES_MANKEY
- 0x10, // SPECIES_PRIMEAPE
- 0x15, // SPECIES_GROWLITHE
- 0x15, // SPECIES_ARCANINE
- 0x12, // SPECIES_POLIWAG
- 0x09, // SPECIES_POLIWHIRL
- 0x0e, // SPECIES_POLIWRATH
- 0x14, // SPECIES_ABRA
- 0x14, // SPECIES_KADABRA
- 0x0d, // SPECIES_ALAKAZAM
- 0x15, // SPECIES_MACHOP
- 0x09, // SPECIES_MACHOKE
- 0x09, // SPECIES_MACHAMP
- 0x0b, // SPECIES_BELLSPROUT
- 0x0b, // SPECIES_WEEPINBELL
- 0x0b, // SPECIES_VICTREEBEL
- 0x02, // SPECIES_TENTACOOL
- 0x02, // SPECIES_TENTACRUEL
- 0x0e, // SPECIES_GEODUDE
- 0x08, // SPECIES_GRAVELER
- 0x08, // SPECIES_GOLEM
- 0x17, // SPECIES_PONYTA
- 0x15, // SPECIES_RAPIDASH
- 0x02, // SPECIES_SLOWPOKE
- 0x13, // SPECIES_SLOWBRO
- 0x0f, // SPECIES_MAGNEMITE
- 0x0f, // SPECIES_MAGNETON
- 0x02, // SPECIES_FARFETCHD
- 0x0f, // SPECIES_DODUO
- 0x15, // SPECIES_DODRIO
- 0x13, // SPECIES_SEEL
- 0x02, // SPECIES_DEWGONG
- 0x0b, // SPECIES_GRIMER
- 0x0c, // SPECIES_MUK
- 0x13, // SPECIES_SHELLDER
- 0x0f, // SPECIES_CLOYSTER
- 0x01, // SPECIES_GASTLY
- 0x01, // SPECIES_HAUNTER
- 0x14, // SPECIES_GENGAR
- 0x09, // SPECIES_ONIX
- 0x13, // SPECIES_DROWZEE
- 0x14, // SPECIES_HYPNO
- 0x0a, // SPECIES_KRABBY
- 0x09, // SPECIES_KINGLER
- 0x15, // SPECIES_VOLTORB
- 0x15, // SPECIES_ELECTRODE
- 0x02, // SPECIES_EXEGGCUTE
- 0x10, // SPECIES_EXEGGUTOR
- 0x15, // SPECIES_CUBONE
- 0x10, // SPECIES_MAROWAK
- 0x02, // SPECIES_HITMONLEE
- 0x0f, // SPECIES_HITMONCHAN
- 0x02, // SPECIES_LICKITUNG
- 0x06, // SPECIES_KOFFING
- 0x06, // SPECIES_WEEZING
- 0x0e, // SPECIES_RHYHORN
- 0x0e, // SPECIES_RHYDON
- 0x12, // SPECIES_CHANSEY
- 0x0b, // SPECIES_TANGELA
- 0x12, // SPECIES_KANGASKHAN
- 0x13, // SPECIES_HORSEA
- 0x11, // SPECIES_SEADRA
- 0x11, // SPECIES_GOLDEEN
- 0x11, // SPECIES_SEAKING
- 0x13, // SPECIES_STARYU
- 0x19, // SPECIES_STARMIE
- 0x14, // SPECIES_MR_MIME
- 0x0f, // SPECIES_SCYTHER
- 0x13, // SPECIES_JYNX
- 0x16, // SPECIES_ELECTABUZZ
- 0x17, // SPECIES_MAGMAR
- 0x0e, // SPECIES_PINSIR
- 0x0e, // SPECIES_TAUROS
- 0x10, // SPECIES_MAGIKARP
- 0x09, // SPECIES_GYARADOS
- 0x19, // SPECIES_LAPRAS
- 0x05, // SPECIES_DITTO
- 0x12, // SPECIES_EEVEE
- 0x19, // SPECIES_VAPOREON
- 0x16, // SPECIES_JOLTEON
- 0x17, // SPECIES_FLAREON
- 0x01, // SPECIES_PORYGON
- 0x13, // SPECIES_OMANYTE
- 0x13, // SPECIES_OMASTAR
- 0x13, // SPECIES_KABUTO
- 0x15, // SPECIES_KABUTOPS
- 0x15, // SPECIES_AERODACTYL
- 0x13, // SPECIES_SNORLAX
- 0x19, // SPECIES_ARTICUNO
- 0x16, // SPECIES_ZAPDOS
- 0x17, // SPECIES_MOLTRES
- 0x02, // SPECIES_DRATINI
- 0x0f, // SPECIES_DRAGONAIR
- 0x09, // SPECIES_DRAGONITE
- 0x0d, // SPECIES_MEWTWO
- 0x12, // SPECIES_MEW
- 0x12, // SPECIES_CHIKORITA
- 0x02, // SPECIES_BAYLEEF
- 0x09, // SPECIES_MEGANIUM
- 0x12, // SPECIES_CYNDAQUIL
- 0x15, // SPECIES_QUILAVA
- 0x17, // SPECIES_TYPHLOSION
- 0x15, // SPECIES_TOTODILE
- 0x15, // SPECIES_CROCONAW
- 0x09, // SPECIES_FERALIGATR
- 0x12, // SPECIES_SENTRET
- 0x10, // SPECIES_FURRET
- 0x11, // SPECIES_HOOTHOOT
- 0x0f, // SPECIES_NOCTOWL
- 0x0a, // SPECIES_LEDYBA
- 0x11, // SPECIES_LEDIAN
- 0x0a, // SPECIES_SPINARAK
- 0x02, // SPECIES_ARIADOS
- 0x0f, // SPECIES_CROBAT
- 0x0b, // SPECIES_CHINCHOU
- 0x16, // SPECIES_LANTURN
- 0x12, // SPECIES_PICHU
- 0x13, // SPECIES_CLEFFA
- 0x13, // SPECIES_IGGLYBUFF
- 0x13, // SPECIES_TOGEPI
- 0x11, // SPECIES_TOGETIC
- 0x12, // SPECIES_NATU
- 0x14, // SPECIES_XATU
- 0x12, // SPECIES_MAREEP
- 0x13, // SPECIES_FLAAFFY
- 0x16, // SPECIES_AMPHAROS
- 0x11, // SPECIES_BELLOSSOM
- 0x12, // SPECIES_MARILL
- 0x13, // SPECIES_AZUMARILL
- 0x02, // SPECIES_SUDOWOODO
- 0x10, // SPECIES_POLITOED
- 0x11, // SPECIES_HOPPIP
- 0x11, // SPECIES_SKIPLOOM
- 0x11, // SPECIES_JUMPLUFF
- 0x10, // SPECIES_AIPOM
- 0x13, // SPECIES_SUNKERN
- 0x02, // SPECIES_SUNFLORA
- 0x11, // SPECIES_YANMA
- 0x0b, // SPECIES_WOOPER
- 0x02, // SPECIES_QUAGSIRE
- 0x14, // SPECIES_ESPEON
- 0x14, // SPECIES_UMBREON
- 0x12, // SPECIES_MURKROW
- 0x13, // SPECIES_SLOWKING
- 0x01, // SPECIES_MISDREAVUS
- 0x14, // SPECIES_UNOWN
- 0x0b, // SPECIES_WOBBUFFET
- 0x14, // SPECIES_GIRAFARIG
- 0x08, // SPECIES_PINECO
- 0x09, // SPECIES_FORRETRESS
- 0x0f, // SPECIES_DUNSPARCE
- 0x05, // SPECIES_GLIGAR
- 0x09, // SPECIES_STEELIX
- 0x15, // SPECIES_SNUBBULL
- 0x09, // SPECIES_GRANBULL
- 0x0d, // SPECIES_QWILFISH
- 0x15, // SPECIES_SCIZOR
- 0x13, // SPECIES_SHUCKLE
- 0x15, // SPECIES_HERACROSS
- 0x0f, // SPECIES_SNEASEL
- 0x13, // SPECIES_TEDDIURSA
- 0x09, // SPECIES_URSARING
- 0x17, // SPECIES_SLUGMA
- 0x17, // SPECIES_MAGCARGO
- 0x0a, // SPECIES_SWINUB
- 0x08, // SPECIES_PILOSWINE
- 0x02, // SPECIES_CORSOLA
- 0x02, // SPECIES_REMORAID
- 0x05, // SPECIES_OCTILLERY
- 0x0f, // SPECIES_DELIBIRD
- 0x02, // SPECIES_MANTINE
- 0x15, // SPECIES_SKARMORY
- 0x09, // SPECIES_HOUNDOUR
- 0x09, // SPECIES_HOUNDOOM
- 0x19, // SPECIES_KINGDRA
- 0x15, // SPECIES_PHANPY
- 0x0e, // SPECIES_DONPHAN
- 0x01, // SPECIES_PORYGON2
- 0x13, // SPECIES_STANTLER
- 0x02, // SPECIES_SMEARGLE
- 0x0f, // SPECIES_TYROGUE
- 0x07, // SPECIES_HITMONTOP
- 0x02, // SPECIES_SMOOCHUM
- 0x08, // SPECIES_ELEKID
- 0x17, // SPECIES_MAGBY
- 0x02, // SPECIES_MILTANK
- 0x13, // SPECIES_BLISSEY
- 0x16, // SPECIES_RAIKOU
- 0x17, // SPECIES_ENTEI
- 0x19, // SPECIES_SUICUNE
- 0x0e, // SPECIES_LARVITAR
- 0x09, // SPECIES_PUPITAR
- 0x0e, // SPECIES_TYRANITAR
- 0x19, // SPECIES_LUGIA
- 0x17, // SPECIES_HO_OH
- 0x18, // SPECIES_CELEBI
- 0x00, // SPECIES_OLD_UNOWN_B
- 0x00, // SPECIES_OLD_UNOWN_C
- 0x00, // SPECIES_OLD_UNOWN_D
- 0x00, // SPECIES_OLD_UNOWN_E
- 0x00, // SPECIES_OLD_UNOWN_F
- 0x00, // SPECIES_OLD_UNOWN_G
- 0x00, // SPECIES_OLD_UNOWN_H
- 0x00, // SPECIES_OLD_UNOWN_I
- 0x00, // SPECIES_OLD_UNOWN_J
- 0x00, // SPECIES_OLD_UNOWN_K
- 0x00, // SPECIES_OLD_UNOWN_L
- 0x00, // SPECIES_OLD_UNOWN_M
- 0x00, // SPECIES_OLD_UNOWN_N
- 0x00, // SPECIES_OLD_UNOWN_O
- 0x00, // SPECIES_OLD_UNOWN_P
- 0x00, // SPECIES_OLD_UNOWN_Q
- 0x00, // SPECIES_OLD_UNOWN_R
- 0x00, // SPECIES_OLD_UNOWN_S
- 0x00, // SPECIES_OLD_UNOWN_T
- 0x00, // SPECIES_OLD_UNOWN_U
- 0x00, // SPECIES_OLD_UNOWN_V
- 0x00, // SPECIES_OLD_UNOWN_W
- 0x00, // SPECIES_OLD_UNOWN_X
- 0x00, // SPECIES_OLD_UNOWN_Y
- 0x00, // SPECIES_OLD_UNOWN_Z
- 0x10, // SPECIES_TREECKO
- 0x15, // SPECIES_GROVYLE
- 0x09, // SPECIES_SCEPTILE
- 0x12, // SPECIES_TORCHIC
- 0x10, // SPECIES_COMBUSKEN
- 0x17, // SPECIES_BLAZIKEN
- 0x02, // SPECIES_MUDKIP
- 0x12, // SPECIES_MARSHTOMP
- 0x19, // SPECIES_SWAMPERT
- 0x12, // SPECIES_POOCHYENA
- 0x08, // SPECIES_MIGHTYENA
- 0x0f, // SPECIES_ZIGZAGOON
- 0x15, // SPECIES_LINOONE
- 0x0b, // SPECIES_WURMPLE
- 0x08, // SPECIES_SILCOON
- 0x11, // SPECIES_BEAUTIFLY
- 0x08, // SPECIES_CASCOON
- 0x0f, // SPECIES_DUSTOX
- 0x02, // SPECIES_LOTAD
- 0x10, // SPECIES_LOMBRE
- 0x10, // SPECIES_LUDICOLO
- 0x13, // SPECIES_SEEDOT
- 0x09, // SPECIES_NUZLEAF
- 0x14, // SPECIES_SHIFTRY
- 0x0a, // SPECIES_NINCADA
- 0x01, // SPECIES_NINJASK
- 0x14, // SPECIES_SHEDINJA
- 0x12, // SPECIES_TAILLOW
- 0x15, // SPECIES_SWELLOW
- 0x13, // SPECIES_SHROOMISH
- 0x15, // SPECIES_BRELOOM
- 0x07, // SPECIES_SPINDA
- 0x11, // SPECIES_WINGULL
- 0x11, // SPECIES_PELIPPER
- 0x03, // SPECIES_SURSKIT
- 0x11, // SPECIES_MASQUERAIN
- 0x19, // SPECIES_WAILMER
- 0x19, // SPECIES_WAILORD
- 0x13, // SPECIES_SKITTY
- 0x12, // SPECIES_DELCATTY
- 0x01, // SPECIES_KECLEON
- 0x13, // SPECIES_BALTOY
- 0x14, // SPECIES_CLAYDOL
- 0x0e, // SPECIES_NOSEPASS
- 0x17, // SPECIES_TORKOAL
- 0x01, // SPECIES_SABLEYE
- 0x0b, // SPECIES_BARBOACH
- 0x09, // SPECIES_WHISCASH
- 0x04, // SPECIES_LUVDISC
- 0x0f, // SPECIES_CORPHISH
- 0x15, // SPECIES_CRAWDAUNT
- 0x03, // SPECIES_FEEBAS
- 0x19, // SPECIES_MILOTIC
- 0x04, // SPECIES_CARVANHA
- 0x15, // SPECIES_SHARPEDO
- 0x13, // SPECIES_TRAPINCH
- 0x01, // SPECIES_VIBRAVA
- 0x0f, // SPECIES_FLYGON
- 0x0e, // SPECIES_MAKUHITA
- 0x0e, // SPECIES_HARIYAMA
- 0x15, // SPECIES_ELECTRIKE
- 0x09, // SPECIES_MANECTRIC
- 0x0e, // SPECIES_NUMEL
- 0x17, // SPECIES_CAMERUPT
- 0x13, // SPECIES_SPHEAL
- 0x09, // SPECIES_SEALEO
- 0x09, // SPECIES_WALREIN
- 0x0a, // SPECIES_CACNEA
- 0x08, // SPECIES_CACTURNE
- 0x0f, // SPECIES_SNORUNT
- 0x0f, // SPECIES_GLALIE
- 0x13, // SPECIES_LUNATONE
- 0x13, // SPECIES_SOLROCK
- 0x10, // SPECIES_AZURILL
- 0x10, // SPECIES_SPOINK
- 0x14, // SPECIES_GRUMPIG
- 0x12, // SPECIES_PLUSLE
- 0x12, // SPECIES_MINUN
- 0x09, // SPECIES_MAWILE
- 0x14, // SPECIES_MEDITITE
- 0x14, // SPECIES_MEDICHAM
- 0x11, // SPECIES_SWABLU
- 0x11, // SPECIES_ALTARIA
- 0x12, // SPECIES_WYNAUT
- 0x01, // SPECIES_DUSKULL
- 0x01, // SPECIES_DUSCLOPS
- 0x18, // SPECIES_ROSELIA
- 0x02, // SPECIES_SLAKOTH
- 0x10, // SPECIES_VIGOROTH
- 0x08, // SPECIES_SLAKING
- 0x0b, // SPECIES_GULPIN
- 0x0b, // SPECIES_SWALOT
- 0x0e, // SPECIES_TROPIUS
- 0x13, // SPECIES_WHISMUR
- 0x09, // SPECIES_LOUDRED
- 0x0d, // SPECIES_EXPLOUD
- 0x13, // SPECIES_CLAMPERL
- 0x11, // SPECIES_HUNTAIL
- 0x11, // SPECIES_GOREBYSS
- 0x14, // SPECIES_ABSOL
- 0x01, // SPECIES_SHUPPET
- 0x01, // SPECIES_BANETTE
- 0x0b, // SPECIES_SEVIPER
- 0x15, // SPECIES_ZANGOOSE
- 0x02, // SPECIES_RELICANTH
- 0x15, // SPECIES_ARON
- 0x09, // SPECIES_LAIRON
- 0x0e, // SPECIES_AGGRON
- 0x11, // SPECIES_CASTFORM
- 0x11, // SPECIES_VOLBEAT
- 0x11, // SPECIES_ILLUMISE
- 0x0c, // SPECIES_LILEEP
- 0x0b, // SPECIES_CRADILY
- 0x0f, // SPECIES_ANORITH
- 0x09, // SPECIES_ARMALDO
- 0x14, // SPECIES_RALTS
- 0x14, // SPECIES_KIRLIA
- 0x14, // SPECIES_GARDEVOIR
- 0x09, // SPECIES_BAGON
- 0x09, // SPECIES_SHELGON
- 0x08, // SPECIES_SALAMENCE
- 0x0f, // SPECIES_BELDUM
- 0x15, // SPECIES_METANG
- 0x09, // SPECIES_METAGROSS
- 0x09, // SPECIES_REGIROCK
- 0x09, // SPECIES_REGICE
- 0x09, // SPECIES_REGISTEEL
- 0x19, // SPECIES_KYOGRE
- 0x17, // SPECIES_GROUDON
- 0x0d, // SPECIES_RAYQUAZA
- 0x01, // SPECIES_LATIAS
- 0x01, // SPECIES_LATIOS
- 0x11, // SPECIES_JIRACHI
- 0x14, // SPECIES_DEOXYS
- 0x11, // SPECIES_CHIMECHO
+ [SPECIES_BULBASAUR] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_IVYSAUR] = BACK_ANIM_H_SLIDE,
+ [SPECIES_VENUSAUR] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_CHARMANDER] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_CHARMELEON] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_CHARIZARD] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_SQUIRTLE] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_WARTORTLE] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_BLASTOISE] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_CATERPIE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_METAPOD] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_BUTTERFREE] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_WEEDLE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_KAKUNA] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_BEEDRILL] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_PIDGEY] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_PIDGEOTTO] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_PIDGEOT] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_RATTATA] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
+ [SPECIES_RATICATE] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
+ [SPECIES_SPEAROW] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_FEAROW] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_EKANS] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_ARBOK] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_PIKACHU] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
+ [SPECIES_RAICHU] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
+ [SPECIES_SANDSHREW] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_SANDSLASH] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_NIDORAN_F] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_NIDORINA] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_NIDOQUEEN] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_NIDORAN_M] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_NIDORINO] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_NIDOKING] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_CLEFAIRY] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_CLEFABLE] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_VULPIX] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_NINETALES] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_JIGGLYPUFF] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_WIGGLYTUFF] = BACK_ANIM_GROW_1,
+ [SPECIES_ZUBAT] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_GOLBAT] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_ODDISH] = BACK_ANIM_H_SLIDE,
+ [SPECIES_GLOOM] = BACK_ANIM_H_SLIDE,
+ [SPECIES_VILEPLUME] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_PARAS] = BACK_ANIM_H_SLIDE,
+ [SPECIES_PARASECT] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_VENONAT] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
+ [SPECIES_VENOMOTH] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_DIGLETT] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_DUGTRIO] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_MEOWTH] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_PERSIAN] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_PSYDUCK] = BACK_ANIM_H_SLIDE,
+ [SPECIES_GOLDUCK] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_MANKEY] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_PRIMEAPE] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_GROWLITHE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_ARCANINE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_POLIWAG] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_POLIWHIRL] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_POLIWRATH] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_ABRA] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_KADABRA] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_ALAKAZAM] = BACK_ANIM_GROW_2,
+ [SPECIES_MACHOP] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_MACHOKE] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_MACHAMP] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_BELLSPROUT] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_WEEPINBELL] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_VICTREEBEL] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_TENTACOOL] = BACK_ANIM_H_SLIDE,
+ [SPECIES_TENTACRUEL] = BACK_ANIM_H_SLIDE,
+ [SPECIES_GEODUDE] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_GRAVELER] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_GOLEM] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_PONYTA] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_RAPIDASH] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SLOWPOKE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_SLOWBRO] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_MAGNEMITE] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_MAGNETON] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_FARFETCHD] = BACK_ANIM_H_SLIDE,
+ [SPECIES_DODUO] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_DODRIO] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SEEL] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_DEWGONG] = BACK_ANIM_H_SLIDE,
+ [SPECIES_GRIMER] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_MUK] = BACK_ANIM_HORIZONTAL_STRETCH,
+ [SPECIES_SHELLDER] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_CLOYSTER] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_GASTLY] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_HAUNTER] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_GENGAR] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_ONIX] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_DROWZEE] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_HYPNO] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_KRABBY] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
+ [SPECIES_KINGLER] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_VOLTORB] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_ELECTRODE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_EXEGGCUTE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_EXEGGUTOR] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_CUBONE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_MAROWAK] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_HITMONLEE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_HITMONCHAN] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_LICKITUNG] = BACK_ANIM_H_SLIDE,
+ [SPECIES_KOFFING] = BACK_ANIM_GROW_1,
+ [SPECIES_WEEZING] = BACK_ANIM_GROW_1,
+ [SPECIES_RHYHORN] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_RHYDON] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_CHANSEY] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_TANGELA] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_KANGASKHAN] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_HORSEA] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_SEADRA] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_GOLDEEN] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_SEAKING] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_STARYU] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_STARMIE] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_MR_MIME] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_SCYTHER] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_JYNX] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_ELECTABUZZ] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
+ [SPECIES_MAGMAR] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_PINSIR] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_TAUROS] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_MAGIKARP] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_GYARADOS] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_LAPRAS] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_DITTO] = BACK_ANIM_SHRINK_GROW_1,
+ [SPECIES_EEVEE] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_VAPOREON] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_JOLTEON] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
+ [SPECIES_FLAREON] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_PORYGON] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_OMANYTE] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_OMASTAR] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_KABUTO] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_KABUTOPS] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_AERODACTYL] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SNORLAX] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_ARTICUNO] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_ZAPDOS] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
+ [SPECIES_MOLTRES] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_DRATINI] = BACK_ANIM_H_SLIDE,
+ [SPECIES_DRAGONAIR] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_DRAGONITE] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_MEWTWO] = BACK_ANIM_GROW_2,
+ [SPECIES_MEW] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_CHIKORITA] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_BAYLEEF] = BACK_ANIM_H_SLIDE,
+ [SPECIES_MEGANIUM] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_CYNDAQUIL] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_QUILAVA] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_TYPHLOSION] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_TOTODILE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_CROCONAW] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_FERALIGATR] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_SENTRET] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_FURRET] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_HOOTHOOT] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_NOCTOWL] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_LEDYBA] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
+ [SPECIES_LEDIAN] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_SPINARAK] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
+ [SPECIES_ARIADOS] = BACK_ANIM_H_SLIDE,
+ [SPECIES_CROBAT] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_CHINCHOU] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_LANTURN] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
+ [SPECIES_PICHU] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_CLEFFA] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_IGGLYBUFF] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_TOGEPI] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_TOGETIC] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_NATU] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_XATU] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_MAREEP] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_FLAAFFY] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_AMPHAROS] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
+ [SPECIES_BELLOSSOM] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_MARILL] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_AZUMARILL] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_SUDOWOODO] = BACK_ANIM_H_SLIDE,
+ [SPECIES_POLITOED] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_HOPPIP] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_SKIPLOOM] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_JUMPLUFF] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_AIPOM] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_SUNKERN] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_SUNFLORA] = BACK_ANIM_H_SLIDE,
+ [SPECIES_YANMA] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_WOOPER] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_QUAGSIRE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_ESPEON] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_UMBREON] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_MURKROW] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_SLOWKING] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_MISDREAVUS] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_UNOWN] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_WOBBUFFET] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_GIRAFARIG] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_PINECO] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_FORRETRESS] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_DUNSPARCE] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_GLIGAR] = BACK_ANIM_SHRINK_GROW_1,
+ [SPECIES_STEELIX] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_SNUBBULL] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_GRANBULL] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_QWILFISH] = BACK_ANIM_GROW_2,
+ [SPECIES_SCIZOR] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SHUCKLE] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_HERACROSS] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SNEASEL] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_TEDDIURSA] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_URSARING] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_SLUGMA] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_MAGCARGO] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_SWINUB] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
+ [SPECIES_PILOSWINE] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_CORSOLA] = BACK_ANIM_H_SLIDE,
+ [SPECIES_REMORAID] = BACK_ANIM_H_SLIDE,
+ [SPECIES_OCTILLERY] = BACK_ANIM_SHRINK_GROW_1,
+ [SPECIES_DELIBIRD] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_MANTINE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_SKARMORY] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_HOUNDOUR] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_HOUNDOOM] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_KINGDRA] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_PHANPY] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_DONPHAN] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_PORYGON2] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_STANTLER] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_SMEARGLE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_TYROGUE] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_HITMONTOP] = BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE,
+ [SPECIES_SMOOCHUM] = BACK_ANIM_H_SLIDE,
+ [SPECIES_ELEKID] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_MAGBY] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_MILTANK] = BACK_ANIM_H_SLIDE,
+ [SPECIES_BLISSEY] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_RAIKOU] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
+ [SPECIES_ENTEI] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_SUICUNE] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_LARVITAR] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_PUPITAR] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_TYRANITAR] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_LUGIA] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_HO_OH] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_CELEBI] = BACK_ANIM_FADE_GREEN_WITH_SHAKE,
+ [SPECIES_TREECKO] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_GROVYLE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SCEPTILE] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_TORCHIC] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_COMBUSKEN] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_BLAZIKEN] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_MUDKIP] = BACK_ANIM_H_SLIDE,
+ [SPECIES_MARSHTOMP] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_SWAMPERT] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_POOCHYENA] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_MIGHTYENA] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_ZIGZAGOON] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_LINOONE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_WURMPLE] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_SILCOON] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_BEAUTIFLY] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_CASCOON] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_DUSTOX] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_LOTAD] = BACK_ANIM_H_SLIDE,
+ [SPECIES_LOMBRE] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_LUDICOLO] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_SEEDOT] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_NUZLEAF] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_SHIFTRY] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_NINCADA] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
+ [SPECIES_NINJASK] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_SHEDINJA] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_TAILLOW] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_SWELLOW] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SHROOMISH] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_BRELOOM] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SPINDA] = BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE,
+ [SPECIES_WINGULL] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_PELIPPER] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_SURSKIT] = BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1,
+ [SPECIES_MASQUERAIN] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_WAILMER] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_WAILORD] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_SKITTY] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_DELCATTY] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_KECLEON] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_BALTOY] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_CLAYDOL] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_NOSEPASS] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_TORKOAL] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_SABLEYE] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_BARBOACH] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_WHISCASH] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_LUVDISC] = BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2,
+ [SPECIES_CORPHISH] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_CRAWDAUNT] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_FEEBAS] = BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1,
+ [SPECIES_MILOTIC] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_CARVANHA] = BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2,
+ [SPECIES_SHARPEDO] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_TRAPINCH] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_VIBRAVA] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_FLYGON] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_MAKUHITA] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_HARIYAMA] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_ELECTRIKE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_MANECTRIC] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_NUMEL] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_CAMERUPT] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_SPHEAL] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_SEALEO] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_WALREIN] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_CACNEA] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
+ [SPECIES_CACTURNE] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_SNORUNT] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_GLALIE] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_LUNATONE] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_SOLROCK] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_AZURILL] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_SPOINK] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_GRUMPIG] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_PLUSLE] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_MINUN] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_MAWILE] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_MEDITITE] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_MEDICHAM] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_SWABLU] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_ALTARIA] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_WYNAUT] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_DUSKULL] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_DUSCLOPS] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_ROSELIA] = BACK_ANIM_FADE_GREEN_WITH_SHAKE,
+ [SPECIES_SLAKOTH] = BACK_ANIM_H_SLIDE,
+ [SPECIES_VIGOROTH] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
+ [SPECIES_SLAKING] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_GULPIN] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_SWALOT] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_TROPIUS] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_WHISMUR] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_LOUDRED] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_EXPLOUD] = BACK_ANIM_GROW_2,
+ [SPECIES_CLAMPERL] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_HUNTAIL] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_GOREBYSS] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_ABSOL] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_SHUPPET] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_BANETTE] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_SEVIPER] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_ZANGOOSE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_RELICANTH] = BACK_ANIM_H_SLIDE,
+ [SPECIES_ARON] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_LAIRON] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_AGGRON] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
+ [SPECIES_CASTFORM] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_VOLBEAT] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_ILLUMISE] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_LILEEP] = BACK_ANIM_HORIZONTAL_STRETCH,
+ [SPECIES_CRADILY] = BACK_ANIM_VERTICAL_STRETCH,
+ [SPECIES_ANORITH] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_ARMALDO] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_RALTS] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_KIRLIA] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_GARDEVOIR] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_BAGON] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_SHELGON] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_SALAMENCE] = BACK_ANIM_HORIZONTAL_SHAKE,
+ [SPECIES_BELDUM] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
+ [SPECIES_METANG] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_METAGROSS] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_REGIROCK] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_REGICE] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_REGISTEEL] = BACK_ANIM_VERTICAL_SHAKE,
+ [SPECIES_KYOGRE] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
+ [SPECIES_GROUDON] = BACK_ANIM_FADE_RED_WITH_SHAKE,
+ [SPECIES_RAYQUAZA] = BACK_ANIM_GROW_2,
+ [SPECIES_LATIAS] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_LATIOS] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_JIRACHI] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_DEOXYS] = BACK_ANIM_SHRINK_GROW_2,
+ [SPECIES_CHIMECHO] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
};
static const u8 sUnknown_0860AA64[][2] =
diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c
index 253ab2cb4..994cc520e 100644
--- a/src/pokemon_icon.c
+++ b/src/pokemon_icon.c
@@ -1,10 +1,10 @@
#include "global.h"
-#include "sprite.h"
-#include "mail.h"
#include "graphics.h"
-#include "constants/species.h"
+#include "mail.h"
#include "palette.h"
#include "pokemon_icon.h"
+#include "sprite.h"
+#include "constants/species.h"
#define POKE_ICON_BASE_PAL_TAG 56000
@@ -23,7 +23,7 @@ static u8 CreateMonIconSprite(struct MonIconSpriteTemplate *, s16, s16, u8);
// .rodata
-const u8 * const gMonIconTable[] =
+const u8 *const gMonIconTable[] =
{
gMonIcon_Bulbasaur,
gMonIcon_Bulbasaur,
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index fe3b3e8dd..2d9a2f08f 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -1,10 +1,10 @@
#include "global.h"
-#include "pokemon_size_record.h"
#include "event_data.h"
-#include "constants/species.h"
+#include "pokemon.h"
+#include "pokemon_size_record.h"
#include "string_util.h"
#include "text.h"
-#include "pokemon.h"
+#include "constants/species.h"
#define DEFAULT_MAX_SIZE 0x8000 // was 0x8100 in Ruby/Sapphire
@@ -206,13 +206,13 @@ void GiveGiftRibbonToParty(u8 index, u8 ribbonId)
if (index < 11 && ribbonId < 65)
{
gSaveBlock1Ptr->giftRibbons[index] = ribbonId;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
- struct Pokemon *pkmn = &gPlayerParty[i];
+ struct Pokemon *mon = &gPlayerParty[i];
- if (GetMonData(pkmn, MON_DATA_SPECIES) != 0 && GetMonData(pkmn, MON_DATA_SANITY_BIT3) == 0)
+ if (GetMonData(mon, MON_DATA_SPECIES) != 0 && GetMonData(mon, MON_DATA_SANITY_BIT3) == 0)
{
- SetMonData(pkmn, array[index], &data);
+ SetMonData(mon, array[index], &data);
gotRibbon = TRUE;
}
}
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 031f704a4..465b97da2 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -1,25 +1,25 @@
#include "global.h"
-#include "pokemon_storage_system.h"
-#include "pokemon.h"
-#include "constants/species.h"
-#include "event_data.h"
-#include "string_util.h"
-#include "text.h"
-#include "strings.h"
-#include "window.h"
-#include "menu.h"
#include "bg.h"
-#include "main.h"
-#include "palette.h"
-#include "overworld.h"
+#include "event_data.h"
#include "field_screen.h"
#include "field_weather.h"
-#include "script.h"
+#include "gpu_regs.h"
#include "international_string_util.h"
-#include "walda_phrase.h"
+#include "main.h"
+#include "menu.h"
+#include "overworld.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "pokemon_storage_system.h"
+#include "script.h"
#include "sound.h"
-#include "gpu_regs.h"
+#include "string_util.h"
+#include "strings.h"
+#include "text.h"
+#include "walda_phrase.h"
+#include "window.h"
#include "constants/songs.h"
+#include "constants/species.h"
IWRAM_DATA u8 gUnknown_03000F78[0x188];
@@ -270,7 +270,7 @@ void Task_PokemonStorageSystem(u8 taskId)
}
break;
case 2:
- task->data[2] = ProcessMenuInput();
+ task->data[2] = Menu_ProcessInput();
switch(task->data[2])
{
case -2:
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index db2a07909..f152e70a4 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -2,7 +2,7 @@
#include "main.h"
#include "battle.h"
#include "battle_anim.h"
-#include "battle_frontier_2.h"
+#include "frontier_util.h"
#include "battle_message.h"
#include "battle_tent.h"
#include "bg.h"
@@ -45,6 +45,8 @@
#include "constants/songs.h"
#include "constants/species.h"
+extern bool8 sub_81A6BF4(void);
+
static EWRAM_DATA struct UnkSummaryStruct
{
/*0x00*/ union {
@@ -314,7 +316,7 @@ static const s8 gUnknown_0861CC1C[] = {0, 2, 3, 1, 4, 5};
static const struct WindowTemplate gUnknown_0861CC24[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
.width = 11,
@@ -323,7 +325,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 1,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
.width = 11,
@@ -332,7 +334,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 23,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
.width = 11,
@@ -341,7 +343,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 45,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
.width = 11,
@@ -350,7 +352,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 67,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 22,
.tilemapTop = 0,
.width = 8,
@@ -359,7 +361,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 89,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 22,
.tilemapTop = 0,
.width = 8,
@@ -368,7 +370,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 105,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 22,
.tilemapTop = 0,
.width = 8,
@@ -377,7 +379,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 121,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 11,
.tilemapTop = 4,
.width = 0,
@@ -386,7 +388,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 137,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 11,
.tilemapTop = 4,
.width = 18,
@@ -395,7 +397,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 137,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 11,
.tilemapTop = 6,
.width = 18,
@@ -404,7 +406,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 173,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 10,
.tilemapTop = 7,
.width = 6,
@@ -413,7 +415,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 209,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 22,
.tilemapTop = 7,
.width = 5,
@@ -422,7 +424,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 245,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 10,
.tilemapTop = 14,
.width = 11,
@@ -431,7 +433,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 275,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 0,
.tilemapTop = 18,
.width = 6,
@@ -440,7 +442,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 319,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 15,
.width = 9,
@@ -449,7 +451,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 331,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 15,
.width = 5,
@@ -458,7 +460,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 367,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 22,
.tilemapTop = 4,
.width = 0,
@@ -467,7 +469,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 387,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 2,
.width = 4,
@@ -476,7 +478,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 387,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 12,
.width = 9,
@@ -485,7 +487,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.baseBlock = 395,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 14,
.width = 9,
@@ -498,7 +500,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
static const struct WindowTemplate gUnknown_0861CCCC[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 11,
.tilemapTop = 4,
.width = 11,
@@ -507,7 +509,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
.baseBlock = 449,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 22,
.tilemapTop = 4,
.width = 7,
@@ -516,7 +518,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
.baseBlock = 471,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 11,
.tilemapTop = 9,
.width = 18,
@@ -525,7 +527,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
.baseBlock = 485,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 11,
.tilemapTop = 14,
.width = 18,
@@ -537,7 +539,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
static const struct WindowTemplate gUnknown_0861CCEC[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 10,
.tilemapTop = 4,
.width = 10,
@@ -546,7 +548,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.baseBlock = 449,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 20,
.tilemapTop = 4,
.width = 10,
@@ -555,7 +557,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.baseBlock = 469,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 16,
.tilemapTop = 7,
.width = 6,
@@ -564,7 +566,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.baseBlock = 489,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 27,
.tilemapTop = 7,
.width = 3,
@@ -573,7 +575,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.baseBlock = 525,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 24,
.tilemapTop = 14,
.width = 6,
@@ -585,7 +587,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
static const struct WindowTemplate gUnknown_0861CD14[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 15,
.tilemapTop = 4,
.width = 9,
@@ -594,7 +596,7 @@ static const struct WindowTemplate gUnknown_0861CD14[] =
.baseBlock = 449,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 24,
.tilemapTop = 4,
.width = 6,
@@ -603,7 +605,7 @@ static const struct WindowTemplate gUnknown_0861CD14[] =
.baseBlock = 539,
},
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 10,
.tilemapTop = 15,
.width = 20,
@@ -1227,28 +1229,28 @@ static bool8 SummaryScreen_DecompressGraphics(void)
case 1:
if (free_temp_tile_data_buffers_if_possible() != 1)
{
- LZDecompressWram(&gUnknown_08D9862C, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]);
+ LZDecompressWram(gUnknown_08D9862C, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]);
pssData->unk40F0++;
}
break;
case 2:
- LZDecompressWram(&gUnknown_08D98CC8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][1]);
+ LZDecompressWram(gUnknown_08D98CC8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][1]);
pssData->unk40F0++;
break;
case 3:
- LZDecompressWram(&gUnknown_08D987FC, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1]);
+ LZDecompressWram(gUnknown_08D987FC, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1]);
pssData->unk40F0++;
break;
case 4:
- LZDecompressWram(&gUnknown_08D9898C, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]);
+ LZDecompressWram(gUnknown_08D9898C, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]);
pssData->unk40F0++;
break;
case 5:
- LZDecompressWram(&gUnknown_08D98B28, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]);
+ LZDecompressWram(gUnknown_08D98B28, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]);
pssData->unk40F0++;
break;
case 6:
- LoadCompressedPalette(&gUnknown_08D9853C, 0, 0x100);
+ LoadCompressedPalette(gUnknown_08D9853C, 0, 0x100);
LoadPalette(&gUnknown_08D85620, 0x81, 0x1E);
pssData->unk40F0++;
break;
diff --git a/src/post_battle_event_funcs.c b/src/post_battle_event_funcs.c
new file mode 100644
index 000000000..934972b7c
--- /dev/null
+++ b/src/post_battle_event_funcs.c
@@ -0,0 +1,93 @@
+#include "global.h"
+#include "main.h"
+#include "credits.h"
+#include "event_data.h"
+#include "hall_of_fame.h"
+#include "load_save.h"
+#include "overworld.h"
+#include "script_pokemon_util_80F87D8.h"
+#include "tv.h"
+#include "constants/heal_locations.h"
+#include "constants/flags.h"
+
+int GameClear(void)
+{
+ int i;
+ bool32 ribbonGet;
+ struct RibbonCounter {
+ u8 partyIndex;
+ u8 count;
+ } ribbonCounts[6];
+
+ HealPlayerParty();
+
+ if (FlagGet(FLAG_SYS_GAME_CLEAR) == TRUE)
+ {
+ gHasHallOfFameRecords = TRUE;
+ }
+ else
+ {
+ gHasHallOfFameRecords = FALSE;
+ FlagSet(FLAG_SYS_GAME_CLEAR);
+ }
+
+ if (GetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME) == 0)
+ SetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME, (gSaveBlock2Ptr->playTimeHours << 16) | (gSaveBlock2Ptr->playTimeMinutes << 8) | gSaveBlock2Ptr->playTimeSeconds);
+
+ SetSecretBase2Field_9();
+
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ sub_8084F6C(HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F);
+ else
+ sub_8084F6C(HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F);
+
+ ribbonGet = FALSE;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ struct Pokemon *mon = &gPlayerParty[i];
+
+ ribbonCounts[i].partyIndex = i;
+ ribbonCounts[i].count = 0;
+
+ if (GetMonData(mon, MON_DATA_SANITY_BIT2)
+ && !GetMonData(mon, MON_DATA_SANITY_BIT3)
+ && !GetMonData(mon, MON_DATA_CHAMPION_RIBBON))
+ {
+ u8 val[1] = {TRUE};
+ SetMonData(mon, MON_DATA_CHAMPION_RIBBON, val);
+ ribbonCounts[i].count = GetRibbonCount(mon);
+ ribbonGet = TRUE;
+ }
+ }
+
+ if (ribbonGet == TRUE)
+ {
+ IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS);
+ FlagSet(FLAG_SYS_RIBBON_GET);
+
+ for (i = 1; i < 6; i++)
+ {
+ if (ribbonCounts[i].count > ribbonCounts[0].count)
+ {
+ struct RibbonCounter prevBest = ribbonCounts[0];
+ ribbonCounts[0] = ribbonCounts[i];
+ ribbonCounts[i] = prevBest;
+ }
+ }
+
+ if (ribbonCounts[0].count > 4)
+ {
+ sub_80EE4DC(&gPlayerParty[ribbonCounts[0].partyIndex], MON_DATA_CHAMPION_RIBBON);
+ }
+ }
+
+ SetMainCallback2(CB2_DoHallOfFameScreen);
+ return 0;
+}
+
+bool8 sp0C8_whiteout_maybe(void)
+{
+ SetMainCallback2(CB2_WhiteOut);
+ return FALSE;
+}
diff --git a/src/psychic.c b/src/psychic.c
new file mode 100644
index 000000000..efd15f746
--- /dev/null
+++ b/src/psychic.c
@@ -0,0 +1,405 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_80A77C8(struct Sprite *);
+extern void sub_810F1EC(struct Sprite *);
+extern void sub_810F1EC(struct Sprite *);
+extern void sub_810F58C(struct Sprite *);
+extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *);
+extern void sub_810F634(struct Sprite *);
+extern void sub_810F6B0(struct Sprite *);
+extern void sub_810FBA8(struct Sprite *);
+extern void sub_810FDF0(struct Sprite *);
+extern void sub_80A77C8(struct Sprite *);
+extern void sub_8110240(struct Sprite *);
+
+const union AffineAnimCmd gUnknown_0859652C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFFE, 0xFFFE, -10, 120),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08596544[] =
+{
+ gUnknown_0859652C,
+};
+
+const struct SpriteTemplate gUnknown_08596548 =
+{
+ .tileTag = ANIM_TAG_SPIRAL,
+ .paletteTag = ANIM_TAG_SPIRAL,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08596544,
+ .callback = sub_80A77C8,
+};
+
+const struct SpriteTemplate gUnknown_08596560 =
+{
+ .tileTag = ANIM_TAG_GREEN_LIGHT_WALL,
+ .paletteTag = ANIM_TAG_GREEN_LIGHT_WALL,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810F1EC,
+};
+
+const struct SpriteTemplate gUnknown_08596578 =
+{
+ .tileTag = ANIM_TAG_BLUE_LIGHT_WALL,
+ .paletteTag = ANIM_TAG_BLUE_LIGHT_WALL,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810F1EC,
+};
+
+const struct SpriteTemplate gUnknown_08596590 =
+{
+ .tileTag = ANIM_TAG_RED_LIGHT_WALL,
+ .paletteTag = ANIM_TAG_RED_LIGHT_WALL,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810F1EC,
+};
+
+const struct SpriteTemplate gUnknown_085965A8 =
+{
+ .tileTag = ANIM_TAG_GRAY_LIGHT_WALL,
+ .paletteTag = ANIM_TAG_GRAY_LIGHT_WALL,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810F1EC,
+};
+
+const struct SpriteTemplate gUnknown_085965C0 =
+{
+ .tileTag = ANIM_TAG_ORANGE_LIGHT_WALL,
+ .paletteTag = ANIM_TAG_ORANGE_LIGHT_WALL,
+ .oam = &gUnknown_08524A3C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810F1EC,
+};
+
+const union AnimCmd gUnknown_085965D8[] =
+{
+ 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 gUnknown_085965F0[] =
+{
+ gUnknown_085965D8,
+};
+
+const struct SpriteTemplate gUnknown_085965F4 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_4,
+ .paletteTag = ANIM_TAG_SPARKLE_4,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085965F0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810F58C,
+};
+
+const union AnimCmd gUnknown_0859660C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08596620[] =
+{
+ gUnknown_0859660C,
+};
+
+const struct SpriteTemplate gUnknown_08596624 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_3,
+ .paletteTag = ANIM_TAG_SPARKLE_3,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08596620,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810F58C,
+};
+
+const struct SpriteTemplate gUnknown_0859663C =
+{
+ .tileTag = ANIM_TAG_GOLD_RING,
+ .paletteTag = ANIM_TAG_GOLD_RING,
+ .oam = &gUnknown_08524954,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const union AnimCmd gUnknown_08596654[] =
+{
+ 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 gUnknown_08596694[] =
+{
+ 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 gUnknown_085966D4[] =
+{
+ gUnknown_08596654,
+ gUnknown_08596694,
+};
+
+const struct SpriteTemplate gUnknown_085966DC =
+{
+ .tileTag = ANIM_TAG_BENT_SPOON,
+ .paletteTag = ANIM_TAG_BENT_SPOON,
+ .oam = &gUnknown_08524954,
+ .anims = gUnknown_085966D4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810F634,
+};
+
+const union AnimCmd gUnknown_085966F4[] =
+{
+ 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 gUnknown_08596714[] =
+{
+ gUnknown_085966F4,
+};
+
+const union AffineAnimCmd gUnknown_08596718[] =
+{
+ 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 gUnknown_08596740[] =
+{
+ gUnknown_08596718,
+};
+
+const struct SpriteTemplate gUnknown_08596744 =
+{
+ .tileTag = ANIM_TAG_AMNESIA,
+ .paletteTag = ANIM_TAG_AMNESIA,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08596714,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810F6B0,
+};
+
+const union AffineAnimCmd gUnknown_0859675C[] =
+{
+ AFFINEANIMCMD_FRAME(-8, 10, 0, 16),
+ AFFINEANIMCMD_FRAME(18, -18, 0, 16),
+ AFFINEANIMCMD_FRAME(-20, 16, 0, 8),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0859677C[] =
+{
+ AFFINEANIMCMD_FRAME(64, -4, 0, 20),
+ AFFINEANIMCMD_FRAME(0, 0, 0, -56),
+ AFFINEANIMCMD_END,
+};
+
+const struct SpriteTemplate gUnknown_08596794 =
+{
+ .tileTag = ANIM_TAG_HOLLOW_ORB,
+ .paletteTag = ANIM_TAG_HOLLOW_ORB,
+ .oam = &gUnknown_08524A2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct SpriteTemplate gUnknown_085967AC =
+{
+ .tileTag = 10250,
+ .paletteTag = 10250,
+ .oam = &gUnknown_0852491C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810FBA8,
+};
+
+const union AffineAnimCmd gUnknown_085967C4[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 8),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gUnknown_085967DC[] =
+{
+ 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 gUnknown_08596804[] =
+{
+ 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 gUnknown_0859682C[] =
+{
+ 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 gUnknown_08596854[] =
+{
+ gUnknown_085967C4,
+ gUnknown_085967DC,
+ gUnknown_08596804,
+ gUnknown_0859682C,
+};
+
+const struct SpriteTemplate gUnknown_08596864 =
+{
+ .tileTag = ANIM_TAG_BLUEGREEN_ORB,
+ .paletteTag = ANIM_TAG_BLUEGREEN_ORB,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08596854,
+ .callback = sub_810FDF0,
+};
+
+const union AffineAnimCmd gUnknown_0859687C[] =
+{
+ AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 120),
+ AFFINEANIMCMD_END_ALT(1),
+};
+
+const union AffineAnimCmd *const gUnknown_08596894[] =
+{
+ gUnknown_0859687C,
+};
+
+const struct SpriteTemplate gUnknown_08596898 =
+{
+ .tileTag = ANIM_TAG_WHITE_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_WHITE_CIRCLE_OF_LIGHT,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08596894,
+ .callback = sub_80A77C8,
+};
+
+const union AffineAnimCmd gUnknown_085968B0[] =
+{
+ 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 gUnknown_08596908[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFEC, 0x18, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08596918[] =
+{
+ gUnknown_085968B0,
+ gUnknown_08596908,
+};
+
+const struct SpriteTemplate gUnknown_08596920 =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gUnknown_08524AFC,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08596918,
+ .callback = sub_8110240,
+};
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 4c3c3d03c..df4a1a720 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -33,31 +33,17 @@
#include "new_game.h"
#include "daycare.h"
#include "international_string_util.h"
+#include "constants/battle_frontier.h"
extern void ReceiveSecretBasesData(struct SecretBaseRecord *, size_t, u8);
extern void ReceiveEasyChatPairsData(struct EasyChatPair *, size_t, u8);
// Static type declarations
-struct UnknownRecMixingStruct
+struct RecordMixingHallRecords
{
- u32 field_0;
- u16 field_4;
- u8 field_6[9];
-};
-
-struct UnknownRecMixingStruct2
-{
- u32 field_0;
- u16 field_4;
- u16 field_6;
- u16 field_8;
- u8 field_A[16];
-};
-
-struct UnknownRecMixingStruct3
-{
- u8 field_0[0x810];
+ struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][6];
+ struct RankingHall2P hallRecords2P[2][6];
};
struct PlayerRecordsRS
@@ -69,6 +55,7 @@ struct PlayerRecordsRS
struct EasyChatPair easyChatPairs[5];
struct RecordMixingDayCareMail dayCareMail;
struct RSBattleTowerRecord battleTowerRecord;
+ u16 giftItem;
u16 filler11C8[0x32];
};
@@ -81,10 +68,10 @@ struct PlayerRecordsEmerald
/* 0x1084 */ struct EasyChatPair easyChatPairs[5];
/* 0x10ac */ struct RecordMixingDayCareMail dayCareMail;
/* 0x1124 */ struct EmeraldBattleTowerRecord battleTowerRecord;
- /* 0x1210 */ u16 unk_1210;
+ /* 0x1210 */ u16 giftItem;
/* 0x1214 */ LilycoveLady lilycoveLady;
/* 0x1254 */ struct Apprentice apprentice[2];
- /* 0x12dc */ struct UnkRecordMixingStruct2 unk_12dc;
+ /* 0x12dc */ struct PlayerHallRecords hallRecords;
/* 0x1434 */ u8 field_1434[0x10];
}; // 0x1444
@@ -105,12 +92,12 @@ static IWRAM_DATA struct EasyChatPair *sEasyChatPairsSave;
static IWRAM_DATA struct RecordMixingDayCareMail *gUnknown_03001148;
static IWRAM_DATA void *sBattleTowerSave;
static IWRAM_DATA LilycoveLady *sLilycoveLadySave;
-static IWRAM_DATA void *gUnknown_03001154; // gSaveBlock2Ptr->field_0DC;
+static IWRAM_DATA void *sApprenticesSave;
static IWRAM_DATA void *sBattleTowerSave_Duplicate;
static IWRAM_DATA u32 sRecordStructSize;
static IWRAM_DATA u8 gUnknown_03001160;
static IWRAM_DATA u32 filler_03001164;
-static IWRAM_DATA u32 gUnknown_03001168[3];
+static IWRAM_DATA struct PlayerHallRecords *gUnknown_03001168[3];
static EWRAM_DATA struct RecordMixingDayCareMail gUnknown_02039F9C = {0};
static EWRAM_DATA union PlayerRecords *sReceivedRecords = NULL;
@@ -132,11 +119,11 @@ static void ReceiveBattleTowerData(void *battleTowerRecord, size_t, u8);
static void ReceiveLilycoveLadyData(LilycoveLady *, size_t, u8);
static void sub_80E7B2C(const u8 *);
static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *, size_t, u8, TVShow *);
-static void sub_80E7F68(u16 *item, u8 which);
+static void ReceiveGiftItem(u16 *item, u8 which);
static void sub_80E7FF8(u8 taskId);
static void sub_80E8110(struct Apprentice *arg0, struct Apprentice *arg1);
static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2);
-static void sub_80E89AC(struct UnkRecordMixingStruct2 *arg0, size_t arg1, u32 arg2);
+static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t arg1, u32 arg2);
static void sub_80E89F8(struct RecordMixingDayCareMail *dst);
static void SanitizeDayCareMailForRuby(struct RecordMixingDayCareMail *src);
static void SanitizeEmeraldBattleTowerRecord(struct EmeraldBattleTowerRecord *arg0);
@@ -197,10 +184,10 @@ static void SetSrcLookupPointers(void)
sOldManSave = &gSaveBlock1Ptr->oldMan;
sEasyChatPairsSave = gSaveBlock1Ptr->easyChatPairs;
gUnknown_03001148 = &gUnknown_02039F9C;
- sBattleTowerSave = &gSaveBlock2Ptr->frontier.battleTower;
+ sBattleTowerSave = &gSaveBlock2Ptr->frontier.towerPlayer;
sLilycoveLadySave = &gSaveBlock1Ptr->lilycoveLady;
- gUnknown_03001154 = gSaveBlock2Ptr->apprentices;
- sBattleTowerSave_Duplicate = &gSaveBlock2Ptr->frontier.battleTower;
+ sApprenticesSave = gSaveBlock2Ptr->apprentices;
+ sBattleTowerSave_Duplicate = &gSaveBlock2Ptr->frontier.towerPlayer;
}
static void PrepareUnknownExchangePacket(struct PlayerRecordsRS *dest)
@@ -212,10 +199,10 @@ static void PrepareUnknownExchangePacket(struct PlayerRecordsRS *dest)
memcpy(&dest->oldMan, sOldManSave, sizeof(dest->oldMan));
memcpy(dest->easyChatPairs, sEasyChatPairsSave, sizeof(dest->easyChatPairs));
sub_80E89F8(&dest->dayCareMail);
- sub_81659DC(sBattleTowerSave, &dest->battleTowerRecord);
+ EmeraldBattleTowerRecordToRuby(sBattleTowerSave, &dest->battleTowerRecord);
if (GetMultiplayerId() == 0)
- dest->battleTowerRecord.unk_11c8 = GetRecordMixingGift();
+ dest->giftItem = GetRecordMixingGift();
}
static void PrepareExchangePacketForRubySapphire(struct PlayerRecordsRS *dest)
@@ -230,11 +217,11 @@ static void PrepareExchangePacketForRubySapphire(struct PlayerRecordsRS *dest)
memcpy(dest->easyChatPairs, sEasyChatPairsSave, sizeof(dest->easyChatPairs));
sub_80E89F8(&dest->dayCareMail);
SanitizeDayCareMailForRuby(&dest->dayCareMail);
- sub_81659DC(sBattleTowerSave, &dest->battleTowerRecord);
+ EmeraldBattleTowerRecordToRuby(sBattleTowerSave, &dest->battleTowerRecord);
SanitizeRubyBattleTowerRecord(&dest->battleTowerRecord);
if (GetMultiplayerId() == 0)
- dest->battleTowerRecord.unk_11c8 = GetRecordMixingGift();
+ dest->giftItem = GetRecordMixingGift();
}
static void PrepareExchangePacket(void)
@@ -263,10 +250,10 @@ static void PrepareExchangePacket(void)
SanitizeEmeraldBattleTowerRecord(&sSentRecord->emerald.battleTowerRecord);
if (GetMultiplayerId() == 0)
- sSentRecord->emerald.unk_1210 = GetRecordMixingGift();
+ sSentRecord->emerald.giftItem = GetRecordMixingGift();
- sub_80E8110(sSentRecord->emerald.apprentice, gUnknown_03001154);
- sub_80E8260(&sSentRecord->emerald.unk_12dc);
+ sub_80E8110(sSentRecord->emerald.apprentice, sApprenticesSave);
+ GetPlayerHallRecords(&sSentRecord->emerald.hallRecords);
}
}
@@ -283,7 +270,7 @@ static void ReceiveExchangePacket(u32 which)
ReceivePokeNewsData(sReceivedRecords->ruby.pokeNews, sizeof(struct PlayerRecordsRS), which);
ReceiveOldManData(&sReceivedRecords->ruby.oldMan, sizeof(struct PlayerRecordsRS), which);
ReceiveEasyChatPairsData(sReceivedRecords->ruby.easyChatPairs, sizeof(struct PlayerRecordsRS), which);
- sub_80E7F68(&sReceivedRecords->ruby.battleTowerRecord.unk_11c8, which);
+ ReceiveGiftItem(&sReceivedRecords->ruby.giftItem, which);
}
else
{
@@ -296,10 +283,10 @@ static void ReceiveExchangePacket(u32 which)
ReceiveEasyChatPairsData(sReceivedRecords->emerald.easyChatPairs, sizeof(struct PlayerRecordsEmerald), which);
ReceiveDaycareMailData(&sReceivedRecords->emerald.dayCareMail, sizeof(struct PlayerRecordsEmerald), which, sReceivedRecords->emerald.tvShows);
ReceiveBattleTowerData(&sReceivedRecords->emerald.battleTowerRecord, sizeof(struct PlayerRecordsEmerald), which);
- sub_80E7F68(&sReceivedRecords->emerald.unk_1210, which);
+ ReceiveGiftItem(&sReceivedRecords->emerald.giftItem, which);
ReceiveLilycoveLadyData(&sReceivedRecords->emerald.lilycoveLady, sizeof(struct PlayerRecordsEmerald), which);
ReceiveApprenticeData(sReceivedRecords->emerald.apprentice, sizeof(struct PlayerRecordsEmerald), (u8) which);
- sub_80E89AC(&sReceivedRecords->emerald.unk_12dc, sizeof(struct PlayerRecordsEmerald), (u8) which);
+ ReceiveRankingHallRecords(&sReceivedRecords->emerald.hallRecords, sizeof(struct PlayerRecordsEmerald), (u8) which);
}
}
@@ -667,7 +654,7 @@ static void ReceiveBattleTowerData(void *battleTowerRecord, size_t recordSize, u
ShufflePlayerIndices(mixIndices);
if (Link_AnyPartnersPlayingRubyOrSapphire())
{
- if (sub_816587C((void *)battleTowerRecord + recordSize * mixIndices[which], (void *)battleTowerRecord + recordSize * which) == TRUE)
+ if (RubyBattleTowerRecordToEmerald((void *)battleTowerRecord + recordSize * mixIndices[which], (void *)battleTowerRecord + recordSize * which) == TRUE)
{
dest = (void *)battleTowerRecord + recordSize * which;
dest->language = gLinkPlayers[mixIndices[which]].language;
@@ -676,7 +663,7 @@ static void ReceiveBattleTowerData(void *battleTowerRecord, size_t recordSize, u
}
else
{
- memcpy((void *)battleTowerRecord + recordSize * which, (void *)battleTowerRecord + recordSize * mixIndices[which], sizeof(union BattleTowerRecord));
+ memcpy((void *)battleTowerRecord + recordSize * which, (void *)battleTowerRecord + recordSize * mixIndices[which], sizeof(struct EmeraldBattleTowerRecord));
dest = (void *)battleTowerRecord + recordSize * which;
for (i = 0; i < 4; i ++)
{
@@ -686,7 +673,7 @@ static void ReceiveBattleTowerData(void *battleTowerRecord, size_t recordSize, u
}
CalcEmeraldBattleTowerChecksum(dest);
}
- sub_81628A0((void *)battleTowerRecord + recordSize * which);
+ PutNewBattleTowerRecord((void *)battleTowerRecord + recordSize * which);
}
static void ReceiveLilycoveLadyData(LilycoveLady *lilycoveLady, size_t recordSize, u8 which)
@@ -1460,7 +1447,7 @@ static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t r
}
#endif // NONMATCHING
-static void sub_80E7F68(u16 *item, u8 which)
+static void ReceiveGiftItem(u16 *item, u8 which)
{
if (which != 0 && *item != ITEM_NONE && GetPocketByItemId(*item) == POCKET_KEY_ITEMS)
{
@@ -1570,12 +1557,12 @@ static void sub_80E8110(struct Apprentice *dst, struct Apprentice *src)
id = ((i + gSaveBlock2Ptr->playerApprentice.field_B2_1) % 3) + 1;
if (src[id].playerName[0] != EOS)
{
- if (ReadUnalignedWord(src[id].playerId) != ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId))
+ if (GetTrainerId(src[id].playerId) != GetTrainerId(gSaveBlock2Ptr->playerTrainerId))
{
r8++;
var_2C = id;
}
- if (ReadUnalignedWord(src[id].playerId) == ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId))
+ if (GetTrainerId(src[id].playerId) == GetTrainerId(gSaveBlock2Ptr->playerTrainerId))
{
var_24++;
var_28 = id;
@@ -1607,42 +1594,42 @@ static void sub_80E8110(struct Apprentice *dst, struct Apprentice *src)
}
}
-void sub_80E8260(struct UnkRecordMixingStruct2 *dst)
+void GetPlayerHallRecords(struct PlayerHallRecords *dst)
{
s32 i, j;
- for (i = 0; i < 9; i++)
+ for (i = 0; i < HALL_FACILITIES_COUNT; i++)
{
for (j = 0; j < 2; j++)
{
- CopyUnalignedWord(dst->field_0[i][j].playerId, gSaveBlock2Ptr->playerTrainerId);
- dst->field_0[i][j].language = GAME_LANGUAGE;
- StringCopy(dst->field_0[i][j].playerName, gSaveBlock2Ptr->playerName);
+ CopyTrainerId(dst->onePlayer[i][j].id, gSaveBlock2Ptr->playerTrainerId);
+ dst->onePlayer[i][j].language = GAME_LANGUAGE;
+ StringCopy(dst->onePlayer[i][j].name, gSaveBlock2Ptr->playerName);
}
}
for (j = 0; j < 2; j++)
{
- dst->field_120[j].language = GAME_LANGUAGE;
- CopyUnalignedWord(dst->field_120[j].playerId1, gSaveBlock2Ptr->playerTrainerId);
- CopyUnalignedWord(dst->field_120[j].playerId2, gSaveBlock2Ptr->frontier.field_EF1[j]);
- StringCopy(dst->field_120[j].playerName1, gSaveBlock2Ptr->playerName);
- StringCopy(dst->field_120[j].playerName2, gSaveBlock2Ptr->frontier.field_EE1[j]);
+ dst->twoPlayers[j].language = GAME_LANGUAGE;
+ CopyTrainerId(dst->twoPlayers[j].id1, gSaveBlock2Ptr->playerTrainerId);
+ CopyTrainerId(dst->twoPlayers[j].id2, gSaveBlock2Ptr->frontier.field_EF1[j]);
+ StringCopy(dst->twoPlayers[j].name1, gSaveBlock2Ptr->playerName);
+ StringCopy(dst->twoPlayers[j].name2, gSaveBlock2Ptr->frontier.field_EE1[j]);
}
for (i = 0; i < 2; i++)
{
- dst->field_0[0][i].field_4 = gSaveBlock2Ptr->frontier.field_CF0[i];
- dst->field_0[1][i].field_4 = gSaveBlock2Ptr->frontier.field_CF4[i];
- dst->field_0[2][i].field_4 = gSaveBlock2Ptr->frontier.field_CF8[i];
- dst->field_0[3][i].field_4 = gSaveBlock2Ptr->frontier.field_D14[0][i];
- dst->field_0[4][i].field_4 = gSaveBlock2Ptr->frontier.field_DD0[0][i];
- dst->field_0[5][i].field_4 = gSaveBlock2Ptr->frontier.field_DDE[i];
- dst->field_0[6][i].field_4 = gSaveBlock2Ptr->frontier.field_DEA[i];
- dst->field_0[7][i].field_4 = gSaveBlock2Ptr->frontier.field_E08[i];
- dst->field_0[8][i].field_4 = gSaveBlock2Ptr->frontier.field_E1E[i];
-
- dst->field_120[i].field_8 = gSaveBlock2Ptr->frontier.field_CFC[i];
+ dst->onePlayer[0][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
+ dst->onePlayer[1][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_DOUBLES][i];
+ dst->onePlayer[2][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_MULTIS][i];
+ dst->onePlayer[3][i].winStreak = gSaveBlock2Ptr->frontier.domeRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
+ dst->onePlayer[4][i].winStreak = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
+ dst->onePlayer[5][i].winStreak = gSaveBlock2Ptr->frontier.arenaRecordStreaks[i];
+ dst->onePlayer[6][i].winStreak = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
+ dst->onePlayer[7][i].winStreak = gSaveBlock2Ptr->frontier.pikeRecordStreaks[i];
+ dst->onePlayer[8][i].winStreak = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[i];
+
+ dst->twoPlayers[i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_LINK_MULTIS][i];
}
}
@@ -1652,7 +1639,7 @@ static bool32 sub_80E841C(struct Apprentice *arg0, struct Apprentice *arg1)
for (i = 0; i < 4; i++)
{
- if (ReadUnalignedWord(arg0->playerId) == ReadUnalignedWord(arg1[i].playerId)
+ if (GetTrainerId(arg0->playerId) == GetTrainerId(arg1[i].playerId)
&& arg0->number == arg1[i].number)
{
return TRUE;
@@ -1700,538 +1687,144 @@ static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2
}
}
-NAKED
-static void sub_80E8578(struct UnknownRecMixingStruct3 *arg0, struct UnkRecordMixingStruct2 *arg1, size_t arg2, u32 arg3, u32 arg4)
+static void sub_80E8578(struct RecordMixingHallRecords *dst, void *hallRecords, size_t recordSize, u32 arg3, s32 linkPlayerCount)
{
- asm_unified(" push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x54\n\
- str r0, [sp]\n\
- ldr r0, [sp, 0x74]\n\
- movs r4, 0\n\
- mov r8, r4\n\
- movs r5, 0\n\
- str r5, [sp, 0x4]\n\
- ldr r4, =gUnknown_03001168\n\
- b _080E85A0\n\
- .pool\n\
-_080E8598:\n\
- adds r1, r2\n\
- ldr r6, [sp, 0x4]\n\
- adds r6, 0x1\n\
- str r6, [sp, 0x4]\n\
-_080E85A0:\n\
- ldr r5, [sp, 0x4]\n\
- cmp r5, r0\n\
- bge _080E85B6\n\
- cmp r5, r3\n\
- beq _080E85B0\n\
- stm r4!, {r1}\n\
- movs r6, 0x1\n\
- add r8, r6\n\
-_080E85B0:\n\
- mov r5, r8\n\
- cmp r5, 0x3\n\
- bne _080E8598\n\
-_080E85B6:\n\
- movs r6, 0\n\
- str r6, [sp, 0x4]\n\
- subs r0, 0x1\n\
- str r0, [sp, 0x24]\n\
-_080E85BE:\n\
- movs r0, 0\n\
- str r0, [sp, 0x8]\n\
- ldr r1, [sp, 0x4]\n\
- adds r1, 0x1\n\
- str r1, [sp, 0x28]\n\
- ldr r2, [sp, 0x4]\n\
- lsls r2, 1\n\
- str r2, [sp, 0x34]\n\
- ldr r3, [sp, 0x4]\n\
- adds r3, r2, r3\n\
- str r3, [sp, 0x10]\n\
- movs r4, 0\n\
- str r4, [sp, 0x44]\n\
- movs r5, 0\n\
- str r5, [sp, 0x48]\n\
-_080E85DC:\n\
- movs r6, 0\n\
- mov r8, r6\n\
- ldr r0, =gSaveBlock2Ptr\n\
- ldr r1, [r0]\n\
- ldr r2, [sp, 0x10]\n\
- lsls r0, r2, 5\n\
- ldr r3, [sp, 0x48]\n\
- adds r0, r3, r0\n\
- adds r3, r0, r1\n\
- lsls r0, r2, 6\n\
- ldr r4, [sp, 0x44]\n\
- adds r0, r4, r0\n\
- ldr r5, [sp]\n\
- adds r2, r0, r5\n\
-_080E85F8:\n\
- adds r0, r2, 0\n\
- movs r6, 0x87\n\
- lsls r6, 2\n\
- adds r1, r3, r6\n\
- ldm r1!, {r4-r6}\n\
- stm r0!, {r4-r6}\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- adds r3, 0x10\n\
- adds r2, 0x10\n\
- movs r0, 0x1\n\
- add r8, r0\n\
- mov r1, r8\n\
- cmp r1, 0x2\n\
- ble _080E85F8\n\
- movs r2, 0\n\
- mov r8, r2\n\
- ldr r3, [sp, 0x24]\n\
- cmp r8, r3\n\
- bge _080E86DC\n\
- ldr r4, [sp, 0x4]\n\
- lsls r4, 5\n\
- mov r9, r4\n\
- ldr r5, [sp, 0x8]\n\
- lsls r7, r5, 4\n\
- ldr r6, [sp, 0x34]\n\
- ldr r1, [sp, 0x4]\n\
- adds r0, r6, r1\n\
- lsls r0, 6\n\
- str r0, [sp, 0x14]\n\
- ldr r2, [sp]\n\
- adds r0, r2, r0\n\
- ldr r3, [sp, 0x44]\n\
- str r3, [sp, 0x18]\n\
- adds r0, r3\n\
- str r0, [sp, 0x1C]\n\
- ldr r4, [sp, 0x14]\n\
- adds r0, r3, r4\n\
- adds r0, r2\n\
- adds r0, 0x30\n\
- mov r10, r0\n\
-_080E864A:\n\
- movs r5, 0\n\
- str r5, [sp, 0xC]\n\
- movs r3, 0\n\
- mov r6, r8\n\
- lsls r6, 2\n\
- str r6, [sp, 0x38]\n\
- ldr r1, [sp, 0x18]\n\
- ldr r2, [sp, 0x14]\n\
- adds r0, r1, r2\n\
- ldr r4, [sp]\n\
- adds r5, r0, r4\n\
- ldr r0, =gUnknown_03001168\n\
- adds r0, r6, r0\n\
- str r0, [sp, 0x50]\n\
-_080E8666:\n\
- lsls r0, r3, 4\n\
- ldr r6, [sp, 0x1C]\n\
- adds r0, r6, r0\n\
- str r3, [sp, 0x4C]\n\
- bl ReadUnalignedWord\n\
- adds r4, r0, 0\n\
- ldr r1, [sp, 0x50]\n\
- ldr r0, [r1]\n\
- add r0, r9\n\
- adds r0, r7\n\
- bl ReadUnalignedWord\n\
- ldr r3, [sp, 0x4C]\n\
- cmp r4, r0\n\
- bne _080E86A8\n\
- ldr r2, [sp, 0xC]\n\
- adds r2, 0x1\n\
- str r2, [sp, 0xC]\n\
- ldr r4, [sp, 0x50]\n\
- ldr r0, [r4]\n\
- mov r6, r9\n\
- adds r1, r7, r6\n\
- adds r1, r0, r1\n\
- ldrh r0, [r5, 0x4]\n\
- ldrh r2, [r1, 0x4]\n\
- cmp r0, r2\n\
- bcs _080E86A8\n\
- adds r0, r5, 0\n\
- ldm r1!, {r2,r4,r6}\n\
- stm r0!, {r2,r4,r6}\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
-_080E86A8:\n\
- adds r5, 0x10\n\
- adds r3, 0x1\n\
- cmp r3, 0x2\n\
- ble _080E8666\n\
- ldr r3, [sp, 0xC]\n\
- cmp r3, 0\n\
- bne _080E86CE\n\
- ldr r0, =gUnknown_03001168\n\
- ldr r4, [sp, 0x38]\n\
- adds r0, r4, r0\n\
- ldr r0, [r0]\n\
- mov r5, r9\n\
- adds r2, r7, r5\n\
- mov r1, r10\n\
- adds r0, r2\n\
- ldm r0!, {r2,r3,r6}\n\
- stm r1!, {r2,r3,r6}\n\
- ldr r0, [r0]\n\
- str r0, [r1]\n\
-_080E86CE:\n\
- movs r4, 0x10\n\
- add r10, r4\n\
- movs r5, 0x1\n\
- add r8, r5\n\
- ldr r6, [sp, 0x24]\n\
- cmp r8, r6\n\
- blt _080E864A\n\
-_080E86DC:\n\
- ldr r0, [sp, 0x44]\n\
- adds r0, 0x60\n\
- str r0, [sp, 0x44]\n\
- ldr r1, [sp, 0x48]\n\
- adds r1, 0x30\n\
- str r1, [sp, 0x48]\n\
- ldr r2, [sp, 0x8]\n\
- adds r2, 0x1\n\
- str r2, [sp, 0x8]\n\
- cmp r2, 0x1\n\
- bgt _080E86F4\n\
- b _080E85DC\n\
-_080E86F4:\n\
- ldr r3, [sp, 0x28]\n\
- str r3, [sp, 0x4]\n\
- cmp r3, 0x8\n\
- bgt _080E86FE\n\
- b _080E85BE\n\
-_080E86FE:\n\
- movs r4, 0\n\
- str r4, [sp, 0x8]\n\
-_080E8702:\n\
- ldr r5, [sp, 0x8]\n\
- adds r5, 0x1\n\
- str r5, [sp, 0x2C]\n\
- ldr r0, =gSaveBlock2Ptr\n\
- ldr r1, [r0]\n\
- movs r0, 0x54\n\
- ldr r6, [sp, 0x8]\n\
- muls r0, r6\n\
- adds r3, r0, r1\n\
- movs r0, 0xA8\n\
- muls r0, r6\n\
- ldr r1, [sp]\n\
- adds r2, r0, r1\n\
- movs r4, 0x2\n\
- mov r8, r4\n\
-_080E8720:\n\
- movs r5, 0xD8\n\
- lsls r5, 3\n\
- adds r0, r2, r5\n\
- ldr r6, =0x0000057c\n\
- adds r1, r3, r6\n\
- ldm r1!, {r4-r6}\n\
- stm r0!, {r4-r6}\n\
- ldm r1!, {r4-r6}\n\
- stm r0!, {r4-r6}\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
- adds r3, 0x1C\n\
- adds r2, 0x1C\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- add r8, r0\n\
- mov r1, r8\n\
- cmp r1, 0\n\
- bge _080E8720\n\
- movs r2, 0\n\
- mov r8, r2\n\
- ldr r3, [sp, 0x24]\n\
- cmp r8, r3\n\
- blt _080E8752\n\
- b _080E885A\n\
-_080E8752:\n\
- ldr r4, [sp, 0x8]\n\
- lsls r1, r4, 3\n\
- movs r0, 0xA8\n\
- adds r5, r4, 0\n\
- muls r5, r0\n\
- str r5, [sp, 0x20]\n\
- str r5, [sp, 0x3C]\n\
- subs r1, r4\n\
- lsls r1, 2\n\
- mov r10, r1\n\
-_080E8766:\n\
- movs r6, 0\n\
- str r6, [sp, 0xC]\n\
- mov r0, r8\n\
- lsls r0, 2\n\
- str r0, [sp, 0x38]\n\
- mov r1, r8\n\
- adds r1, 0x1\n\
- str r1, [sp, 0x30]\n\
- ldr r0, =gUnknown_03001168\n\
- ldr r2, [sp, 0x38]\n\
- adds r2, r0\n\
- mov r9, r2\n\
- ldr r3, [sp]\n\
- movs r4, 0xD8\n\
- lsls r4, 3\n\
- adds r0, r3, r4\n\
- ldr r5, [sp, 0x3C]\n\
- adds r7, r5, r0\n\
- str r6, [sp, 0x40]\n\
- movs r3, 0x2\n\
-_080E878E:\n\
- ldr r1, [sp, 0x20]\n\
- movs r2, 0xD8\n\
- lsls r2, 3\n\
- adds r0, r1, r2\n\
- ldr r4, [sp]\n\
- adds r0, r4, r0\n\
- ldr r6, [sp, 0x40]\n\
- adds r5, r0, r6\n\
- adds r0, r5, 0\n\
- str r3, [sp, 0x4C]\n\
- bl ReadUnalignedWord\n\
- adds r4, r0, 0\n\
- movs r6, 0x90\n\
- lsls r6, 1\n\
- add r6, r10\n\
- mov r1, r9\n\
- ldr r0, [r1]\n\
- adds r0, r6\n\
- bl ReadUnalignedWord\n\
- ldr r3, [sp, 0x4C]\n\
- cmp r4, r0\n\
- bne _080E8808\n\
- adds r0, r5, 0x4\n\
- bl ReadUnalignedWord\n\
- adds r4, r0, 0\n\
- mov r2, r9\n\
- ldr r0, [r2]\n\
- adds r0, r6\n\
- adds r0, 0x4\n\
- bl ReadUnalignedWord\n\
- ldr r3, [sp, 0x4C]\n\
- cmp r4, r0\n\
- bne _080E8808\n\
- ldr r4, [sp, 0xC]\n\
- adds r4, 0x1\n\
- str r4, [sp, 0xC]\n\
- mov r5, r9\n\
- ldr r0, [r5]\n\
- mov r6, r10\n\
- adds r2, r0, r6\n\
- movs r0, 0x94\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldrh r0, [r7, 0x8]\n\
- ldrh r1, [r1]\n\
- cmp r0, r1\n\
- bcs _080E8808\n\
- adds r0, r7, 0\n\
- movs r4, 0x90\n\
- lsls r4, 1\n\
- adds r1, r2, r4\n\
- ldm r1!, {r2,r5,r6}\n\
- stm r0!, {r2,r5,r6}\n\
- ldm r1!, {r4-r6}\n\
- stm r0!, {r4-r6}\n\
- ldr r1, [r1]\n\
- str r1, [r0]\n\
-_080E8808:\n\
- adds r7, 0x1C\n\
- ldr r0, [sp, 0x40]\n\
- adds r0, 0x1C\n\
- str r0, [sp, 0x40]\n\
- subs r3, 0x1\n\
- cmp r3, 0\n\
- bge _080E878E\n\
- ldr r1, [sp, 0xC]\n\
- cmp r1, 0\n\
- bne _080E8850\n\
- mov r0, r8\n\
- adds r0, 0x3\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 2\n\
- ldr r2, [sp, 0x20]\n\
- adds r1, r2\n\
- ldr r3, [sp]\n\
- adds r1, r3, r1\n\
- ldr r0, =gUnknown_03001168\n\
- ldr r4, [sp, 0x38]\n\
- adds r0, r4, r0\n\
- ldr r0, [r0]\n\
- add r0, r10\n\
- movs r5, 0xD8\n\
- lsls r5, 3\n\
- adds r1, r5\n\
- movs r6, 0x90\n\
- lsls r6, 1\n\
- adds r0, r6\n\
- ldm r0!, {r2-r4}\n\
- stm r1!, {r2-r4}\n\
- ldm r0!, {r2,r5,r6}\n\
- stm r1!, {r2,r5,r6}\n\
- ldr r0, [r0]\n\
- str r0, [r1]\n\
-_080E8850:\n\
- ldr r3, [sp, 0x30]\n\
- mov r8, r3\n\
- ldr r4, [sp, 0x24]\n\
- cmp r8, r4\n\
- blt _080E8766\n\
-_080E885A:\n\
- ldr r5, [sp, 0x2C]\n\
- str r5, [sp, 0x8]\n\
- cmp r5, 0x1\n\
- bgt _080E8864\n\
- b _080E8702\n\
-_080E8864:\n\
- add sp, 0x54\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\
- .pool\n\
- ");
+ s32 i, j, k, l;
+ s32 var_68;
+
+ k = 0;
+ i = 0;
+ while (1)
+ {
+ if (i >= linkPlayerCount)
+ break;
+ if (i != arg3)
+ gUnknown_03001168[k++] = hallRecords;
+
+ if (k == 3)
+ break;
+ hallRecords += recordSize;
+ i++;
+ }
+
+ for (i = 0; i < HALL_FACILITIES_COUNT; i++)
+ {
+ for (j = 0; j < 2; j++)
+ {
+ for (k = 0; k < 3; k++)
+ dst->hallRecords1P[i][j][k] = gSaveBlock2Ptr->hallRecords1P[i][j][k];
+
+ for (k = 0; k < linkPlayerCount - 1; k++)
+ {
+ var_68 = 0;
+ for (l = 0; l < 3; l++)
+ {
+ if (GetTrainerId(dst->hallRecords1P[i][j][l].id) == GetTrainerId(gUnknown_03001168[k]->onePlayer[i][j].id))
+ {
+ var_68++;
+ if (dst->hallRecords1P[i][j][l].winStreak < gUnknown_03001168[k]->onePlayer[i][j].winStreak)
+ dst->hallRecords1P[i][j][l] = gUnknown_03001168[k]->onePlayer[i][j];
+ }
+ }
+ if (var_68 == 0)
+ dst->hallRecords1P[i][j][k + 3] = gUnknown_03001168[k]->onePlayer[i][j];
+ }
+ }
+ }
+
+ for (j = 0; j < 2; j++)
+ {
+ for (k = 0; k < 3; k++)
+ dst->hallRecords2P[j][k] = gSaveBlock2Ptr->hallRecords2P[j][k];
+
+ for (k = 0; k < linkPlayerCount - 1; k++)
+ {
+ var_68 = 0;
+ for (l = 0; l < 3; l++)
+ {
+ if (GetTrainerId(dst->hallRecords2P[j][l].id1) == GetTrainerId(gUnknown_03001168[k]->twoPlayers[j].id1)
+ && GetTrainerId(dst->hallRecords2P[j][l].id2) == GetTrainerId(gUnknown_03001168[k]->twoPlayers[j].id2))
+ {
+ var_68++;
+ if (dst->hallRecords2P[j][l].winStreak < gUnknown_03001168[k]->twoPlayers[j].winStreak)
+ dst->hallRecords2P[j][l] = gUnknown_03001168[k]->twoPlayers[j];
+ }
+ }
+ if (var_68 == 0)
+ dst->hallRecords2P[j][k + 3] = gUnknown_03001168[k]->twoPlayers[j];
+ }
+ }
}
-static void sub_80E8880(struct UnknownRecMixingStruct *arg0, struct UnknownRecMixingStruct *arg1)
+static void sub_80E8880(struct RankingHall1P *arg0, struct RankingHall1P *arg1)
{
s32 i, j;
for (i = 0; i < 3; i++)
{
- s32 r2 = 0;
- s32 r4 = -1;
+ s32 highestWinStreak = 0;
+ s32 highestId = -1;
for (j = 0; j < 6; j++)
{
- if (arg1[j].field_4 > r2)
+ if (arg1[j].winStreak > highestWinStreak)
{
- r4 = j;
- r2 = arg1[j].field_4;
+ highestId = j;
+ highestWinStreak = arg1[j].winStreak;
}
}
- if (r4 >= 0)
+ if (highestId >= 0)
{
- arg0[i] = arg1[r4];
- arg1[r4].field_4 = 0;
+ arg0[i] = arg1[highestId];
+ arg1[highestId].winStreak = 0;
}
}
}
-static void sub_80E88CC(struct UnknownRecMixingStruct2 *arg0, struct UnknownRecMixingStruct2 *arg1)
+static void sub_80E88CC(struct RankingHall2P *arg0, struct RankingHall2P *arg1)
{
s32 i, j;
for (i = 0; i < 3; i++)
{
- s32 r2 = 0;
- s32 r4 = -1;
+ s32 highestWinStreak = 0;
+ s32 highestId = -1;
for (j = 0; j < 6; j++)
{
- if (arg1[j].field_8 > r2)
+ if (arg1[j].winStreak > highestWinStreak)
{
- r4 = j;
- r2 = arg1[j].field_8;
+ highestId = j;
+ highestWinStreak = arg1[j].winStreak;
}
}
- if (r4 >= 0)
+ if (highestId >= 0)
{
- arg0[i] = arg1[r4];
- arg1[r4].field_8 = 0;
+ arg0[i] = arg1[highestId];
+ arg1[highestId].winStreak = 0;
}
}
}
-NAKED
-static void sub_80E8924(struct UnknownRecMixingStruct3 *arg0)
+static void sub_80E8924(struct RecordMixingHallRecords *arg0)
{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- mov r9, r0\n\
- movs r0, 0\n\
- ldr r1, =gSaveBlock2Ptr\n\
- mov r10, r1\n\
-_080E8936:\n\
- lsls r1, r0, 1\n\
- adds r2, r0, 0x1\n\
- mov r8, r2\n\
- adds r1, r0\n\
- lsls r0, r1, 5\n\
- movs r2, 0x87\n\
- lsls r2, 2\n\
- adds r7, r0, r2\n\
- lsls r1, 6\n\
- mov r0, r9\n\
- adds r4, r0, r1\n\
- movs r6, 0\n\
- movs r5, 0x1\n\
-_080E8950:\n\
- mov r1, r10\n\
- ldr r0, [r1]\n\
- adds r0, r7\n\
- adds r0, r6\n\
- adds r1, r4, 0\n\
- bl sub_80E8880\n\
- adds r4, 0x60\n\
- adds r6, 0x30\n\
- subs r5, 0x1\n\
- cmp r5, 0\n\
- bge _080E8950\n\
- mov r0, r8\n\
- cmp r0, 0x8\n\
- ble _080E8936\n\
- movs r5, 0\n\
- ldr r4, =gSaveBlock2Ptr\n\
-_080E8972:\n\
- movs r0, 0x54\n\
- adds r1, r5, 0\n\
- muls r1, r0\n\
- ldr r2, =0x0000057c\n\
- adds r1, r2\n\
- ldr r0, [r4]\n\
- adds r0, r1\n\
- movs r1, 0xA8\n\
- muls r1, r5\n\
- movs r2, 0xD8\n\
- lsls r2, 3\n\
- adds r1, r2\n\
- add r1, r9\n\
- bl sub_80E88CC\n\
- adds r5, 0x1\n\
- cmp r5, 0x1\n\
- ble _080E8972\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\
- .pool");
+ s32 i, j;
+
+ for (i = 0; i < HALL_FACILITIES_COUNT; i++)
+ {
+ for (j = 0; j < 2; j++)
+ sub_80E8880(gSaveBlock2Ptr->hallRecords1P[i][j], arg0->hallRecords1P[i][j]);
+ }
+ for (j = 0; j < 2; j++)
+ sub_80E88CC(gSaveBlock2Ptr->hallRecords2P[j], arg0->hallRecords2P[j]);
}
-static void sub_80E89AC(struct UnkRecordMixingStruct2 *arg0, size_t arg1, u32 arg2)
+static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t recordSize, u32 arg2)
{
u8 linkPlayerCount = GetLinkPlayerCount();
- struct UnknownRecMixingStruct3 *largeStructPtr = AllocZeroed(sizeof(struct UnknownRecMixingStruct3));
+ struct RecordMixingHallRecords *largeStructPtr = AllocZeroed(sizeof(struct RecordMixingHallRecords));
- sub_80E8578(largeStructPtr, arg0, arg1, arg2, linkPlayerCount);
+ sub_80E8578(largeStructPtr, hallRecords, recordSize, arg2, linkPlayerCount);
sub_80E8924(largeStructPtr);
Free(largeStructPtr);
@@ -2255,7 +1848,7 @@ static void SanitizeDayCareMailForRuby(struct RecordMixingDayCareMail *src)
if (mail->message.itemId != 0)
{
if (mail->gameLanguage != LANGUAGE_JAPANESE)
- PadNameString(mail->OT_name, 0xFC);
+ PadNameString(mail->OT_name, EXT_CTRL_CODE_BEGIN);
ConvertInternationalString(mail->monName, mail->monLanguage);
}
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index 355ed5e07..5d79cb789 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -14,17 +14,16 @@
#include "task.h"
#include "text.h"
#include "battle_setup.h"
+#include "frontier_util.h"
+#include "constants/trainers.h"
#define BATTLER_RECORD_SIZE 664
#define ILLEGAL_BATTLE_TYPES ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \
- | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \
- | BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \
- | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE \
+ | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \
+ | BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \
+ | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE \
| BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA))
-extern u8 gUnknown_03001278;
-extern u8 gUnknown_03001279;
-
struct PlayerInfo
{
u32 trainerId;
@@ -55,18 +54,18 @@ struct RecordedBattleSave
u16 opponentB;
u16 partnerId;
u16 field_4FA;
- u8 field_4FC;
- u8 field_4FD;
- u8 field_4FE;
- u8 battleStyle:1;
+ u8 lvlMode;
+ u8 frontierFacility;
+ u8 frontierBrainSymbol;
+ u8 battleScene:1;
u8 textSpeed:3;
u32 AI_scripts;
- u8 field_504[8];
- u8 field_50C;
- u8 field_50D;
- u16 field_50E[6];
- u8 field_51A;
- u8 field_51B;
+ u8 recordMixFriendName[PLAYER_NAME_LENGTH + 1];
+ u8 recordMixFriendClass;
+ u8 apprenticeId;
+ u16 easyChatSpeech[6];
+ u8 recordMixFriendLanguage;
+ u8 apprenticeLanguage;
u8 battleRecord[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE];
u32 checksum;
};
@@ -78,13 +77,13 @@ EWRAM_DATA static u16 sRecordedBytesNo[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA static u16 sUnknown_0203C79C[4] = {0};
EWRAM_DATA static u16 sUnknown_0203C7A4[4] = {0};
EWRAM_DATA static u8 sUnknown_0203C7AC = 0;
-EWRAM_DATA static u8 sUnknown_0203C7AD = 0;
+EWRAM_DATA static u8 sLvlMode = 0;
EWRAM_DATA static u8 sFrontierFacility = 0;
-EWRAM_DATA static u8 sUnknown_0203C7AF = 0;
+EWRAM_DATA static u8 sFrontierBrainSymbol = 0;
EWRAM_DATA static MainCallback sCallback2_AfterRecordedBattle = NULL;
EWRAM_DATA u8 gUnknown_0203C7B4 = 0;
EWRAM_DATA static u8 sUnknown_0203C7B5 = 0;
-EWRAM_DATA static u8 sBattleStyle = 0;
+EWRAM_DATA static u8 sBattleScene = 0;
EWRAM_DATA static u8 sTextSpeed = 0;
EWRAM_DATA static u32 sBattleFlags = 0;
EWRAM_DATA static u32 sAI_Scripts = 0;
@@ -93,17 +92,18 @@ EWRAM_DATA static struct Pokemon sSavedOpponentParty[PARTY_SIZE] = {0};
EWRAM_DATA static u16 sPlayerMonMoves[2][4] = {0};
EWRAM_DATA static struct PlayerInfo sPlayers[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA static u8 sUnknown_0203CCD0 = 0;
-EWRAM_DATA static u8 sUnknown_0203CCD1[8] = {0};
-EWRAM_DATA static u8 sUnknown_0203CCD9 = 0;
-EWRAM_DATA static u8 sUnknown_0203CCDA = 0;
-EWRAM_DATA static u16 sUnknown_0203CCDC[6] = {0};
-EWRAM_DATA static u8 sUnknown_0203CCE8 = 0;
+EWRAM_DATA static u8 sRecordMixFriendName[PLAYER_NAME_LENGTH + 1] = {0};
+EWRAM_DATA static u8 sRecordMixFriendClass = 0;
+EWRAM_DATA static u8 sApprenticeId = 0;
+EWRAM_DATA static u16 sEasyChatSpeech[6] = {0};
+EWRAM_DATA static u8 sBattleOutcome = 0;
-extern u32 sub_81A513C(void);
+IWRAM_DATA static u8 sRecordMixFriendLanguage;
+IWRAM_DATA static u8 sApprenticeLanguage;
// this file's functions
static u8 sub_8185278(u8 *arg0, u8 *arg1, u8 *arg2);
-static bool32 AllocTryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst);
+static bool32 CopyRecordedBattleFromSave(struct RecordedBattleSave *dst);
static void RecordedBattle_RestoreSavedParties(void);
static void CB2_RecordedBattle(void);
@@ -140,7 +140,7 @@ void sub_8184E58(void)
{
gRecordedBattleRngSeed = gRngValue;
sFrontierFacility = VarGet(VAR_FRONTIER_FACILITY);
- sUnknown_0203C7AF = sub_81A513C();
+ sFrontierBrainSymbol = GetFronterBrainSymbol();
}
else if (sUnknown_0203C7AC == 2)
{
@@ -297,7 +297,7 @@ static u8 sub_8185278(u8 *arg0, u8 *arg1, u8 *arg2)
bool32 CanCopyRecordedBattleSaveData(void)
{
struct RecordedBattleSave *dst = AllocZeroed(sizeof(struct RecordedBattleSave));
- bool32 ret = AllocTryCopyRecordedBattleSaveData(dst);
+ bool32 ret = CopyRecordedBattleFromSave(dst);
Free(dst);
return ret;
}
@@ -314,26 +314,29 @@ static bool32 IsRecordedBattleSaveValid(struct RecordedBattleSave *save)
return TRUE;
}
-static bool32 sub_81852F0(struct RecordedBattleSave *battleSave, struct RecordedBattleSave *saveSection)
+static bool32 RecordedBattleToSave(struct RecordedBattleSave *battleSave, struct RecordedBattleSave *saveSection)
{
- memset(saveSection, 0, sizeof(struct SaveSection));
+ memset(saveSection, 0, 0x1000);
memcpy(saveSection, battleSave, sizeof(*battleSave));
saveSection->checksum = CalcByteArraySum((void*)(saveSection), sizeof(*saveSection) - 4);
if (sub_8153634(31, (void*)(saveSection)) != 1)
return FALSE;
-
- return TRUE;
+ else
+ return TRUE;
}
-#ifdef NONMATCHING
-u32 MoveRecordedBattleToSaveData(void)
+bool32 MoveRecordedBattleToSaveData(void)
{
s32 i, j;
- u8 var = 0;
- struct RecordedBattleSave *battleSave = AllocZeroed(sizeof(struct RecordedBattleSave));
- struct SaveSection *savSection = AllocZeroed(sizeof(struct SaveSection));
+ bool32 ret;
+ struct RecordedBattleSave *battleSave, *savSection;
+ u8 var;
+
+ var = 0;
+ battleSave = AllocZeroed(sizeof(struct RecordedBattleSave));
+ savSection = AllocZeroed(0x1000);
for (i = 0; i < PARTY_SIZE; i++)
{
@@ -357,8 +360,7 @@ u32 MoveRecordedBattleToSaveData(void)
if (sBattleFlags & BATTLE_TYPE_LINK)
{
- battleSave->battleFlags = (sBattleFlags & ~(BATTLE_TYPE_LINK | BATTLE_TYPE_20));
- battleSave->battleFlags |= BATTLE_TYPE_x2000000;
+ battleSave->battleFlags = (sBattleFlags & ~(BATTLE_TYPE_LINK | BATTLE_TYPE_20)) | BATTLE_TYPE_x2000000;
if (sBattleFlags & BATTLE_TYPE_IS_MASTER)
{
@@ -390,888 +392,105 @@ u32 MoveRecordedBattleToSaveData(void)
battleSave->opponentB = gTrainerBattleOpponent_B;
battleSave->partnerId = gPartnerTrainerId;
battleSave->field_4FA = gUnknown_0203C7B4;
- battleSave->field_4FC = gSaveBlock2Ptr->field_CA9_b;
- battleSave->field_4FD = sFrontierFacility;
- battleSave->field_4FE = sUnknown_0203C7AF;
- battleSave->battleStyle = gSaveBlock2Ptr->optionsBattleStyle;
+ battleSave->lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ battleSave->frontierFacility = sFrontierFacility;
+ battleSave->frontierBrainSymbol = sFrontierBrainSymbol;
+ battleSave->battleScene = gSaveBlock2Ptr->optionsBattleSceneOff;
battleSave->textSpeed = gSaveBlock2Ptr->optionsTextSpeed;
battleSave->AI_scripts = sAI_Scripts;
- /* Can't match it without proper knowledge of the Saveblock 2.
- if (gTrainerBattleOpponent_A >= 300 && gTrainerBattleOpponent_A <= 399)
+ if (gTrainerBattleOpponent_A >= TRAINER_RECORD_MIXING_FRIEND && gTrainerBattleOpponent_A < TRAINER_RECORD_MIXING_APPRENTICE)
{
- for (i = 0; i < 8; i++)
- {
- battleSave->field_504[i] = gSaveBlock2Ptr->field_738[gTrainerBattleOpponent_A - 300].field_4[i];
- }
- battleSave->field_50C = gSaveBlock2Ptr->field_738[gTrainerBattleOpponent_A - 300].field_1;
+ for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
+ battleSave->recordMixFriendName[i] = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_FRIEND].name[i];
+ battleSave->recordMixFriendClass = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_FRIEND].facilityClass;
- if (sUnknown_0203CCE8 == 1)
+ if (sBattleOutcome == B_OUTCOME_WON)
{
for (i = 0; i < 6; i++)
- {
- battleSave->field_50E[i] = gSaveBlock2Ptr->field_738[gTrainerBattleOpponent_A - 300].field_28[i];
- }
+ battleSave->easyChatSpeech[i] = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_FRIEND].speechLost[i];
}
else
{
for (i = 0; i < 6; i++)
- {
- battleSave->field_50E[i] = gSaveBlock2Ptr->field_738[gTrainerBattleOpponent_A - 300].field_1C[i];
- }
+ battleSave->easyChatSpeech[i] = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_FRIEND].speechWon[i];
}
- battleSave->field_51A = gSaveBlock2Ptr->field_738[gTrainerBattleOpponent_A - 300].field_E4;
+ battleSave->recordMixFriendLanguage = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_FRIEND].language;
}
- else if (gTrainerBattleOpponent_B >= 300 && gTrainerBattleOpponent_B <= 399)
+ else if (gTrainerBattleOpponent_B >= TRAINER_RECORD_MIXING_FRIEND && gTrainerBattleOpponent_B < TRAINER_RECORD_MIXING_APPRENTICE)
{
- for (i = 0; i < 8; i++)
- {
- battleSave->field_504[i] = gSaveBlock2Ptr->field_738[gTrainerBattleOpponent_B - 300].field_4[i];
- }
- battleSave->field_50C = gSaveBlock2Ptr->field_738[gTrainerBattleOpponent_B - 300].field_1;
+ for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
+ battleSave->recordMixFriendName[i] = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_FRIEND].name[i];
+ battleSave->recordMixFriendClass = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_FRIEND].facilityClass;
- if (sUnknown_0203CCE8 == 1)
+ if (sBattleOutcome == B_OUTCOME_WON)
{
for (i = 0; i < 6; i++)
- {
- battleSave->field_50E[i] = gSaveBlock2Ptr->field_738[gTrainerBattleOpponent_B - 300].field_28[i];
- }
+ battleSave->easyChatSpeech[i] = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_FRIEND].speechLost[i];
}
else
{
for (i = 0; i < 6; i++)
- {
- battleSave->field_50E[i] = gSaveBlock2Ptr->field_738[gTrainerBattleOpponent_B - 300].field_1C[i];
- }
+ battleSave->easyChatSpeech[i] = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_FRIEND].speechWon[i];
}
- battleSave->field_51A = gSaveBlock2Ptr->field_738[gTrainerBattleOpponent_B - 300].field_E4;
+ battleSave->recordMixFriendLanguage = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_FRIEND].language;
}
- else if (gPartnerTrainerId >= 300 && gPartnerTrainerId <= 399)
+ else if (gPartnerTrainerId >= TRAINER_RECORD_MIXING_FRIEND && gPartnerTrainerId < TRAINER_RECORD_MIXING_APPRENTICE)
{
- for (i = 0; i < 8; i++)
- {
- battleSave->field_504[i] = gSaveBlock2Ptr->field_738[gPartnerTrainerId - 300].field_4[i];
- }
- battleSave->field_50C = gSaveBlock2Ptr->field_738[gPartnerTrainerId - 300].field_1;
+ for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
+ battleSave->recordMixFriendName[i] = gSaveBlock2Ptr->frontier.towerRecords[gPartnerTrainerId - TRAINER_RECORD_MIXING_FRIEND].name[i];
+ battleSave->recordMixFriendClass = gSaveBlock2Ptr->frontier.towerRecords[gPartnerTrainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass;
- if (sUnknown_0203CCE8 == 1)
- {
- for (i = 0; i < 6; i++)
- {
- battleSave->field_50E[i] = gSaveBlock2Ptr->field_738[gPartnerTrainerId - 300].field_28[i];
- }
- }
- else
+ battleSave->recordMixFriendLanguage = gSaveBlock2Ptr->frontier.towerRecords[gPartnerTrainerId - TRAINER_RECORD_MIXING_FRIEND].language;
+ }
+
+ if (gTrainerBattleOpponent_A >= TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ battleSave->apprenticeId = gSaveBlock2Ptr->apprentices[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_APPRENTICE].id;
+ for (i = 0; i < 6; i++)
+ battleSave->easyChatSpeech[i] = gSaveBlock2Ptr->apprentices[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_APPRENTICE].easyChatWords[i];
+ battleSave->apprenticeLanguage = gSaveBlock2Ptr->apprentices[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_APPRENTICE].language;
+ }
+ else if (gTrainerBattleOpponent_B >= TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ battleSave->apprenticeId = gSaveBlock2Ptr->apprentices[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_APPRENTICE].id;
+ for (i = 0; i < 6; i++)
+ battleSave->easyChatSpeech[i] = gSaveBlock2Ptr->apprentices[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_APPRENTICE].easyChatWords[i];
+ battleSave->apprenticeLanguage = gSaveBlock2Ptr->apprentices[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_APPRENTICE].language;
+ }
+ else if (gPartnerTrainerId >= TRAINER_RECORD_MIXING_APPRENTICE)
+ {
+ battleSave->apprenticeId = gSaveBlock2Ptr->apprentices[gPartnerTrainerId - TRAINER_RECORD_MIXING_APPRENTICE].id;
+
+ battleSave->apprenticeLanguage = gSaveBlock2Ptr->apprentices[gPartnerTrainerId - TRAINER_RECORD_MIXING_APPRENTICE].language;
+ }
+
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
+ {
+ for (j = 0; j < BATTLER_RECORD_SIZE; j++)
{
- for (i = 0; i < 6; i++)
- {
- battleSave->field_50E[i] = gSaveBlock2Ptr->field_738[gPartnerTrainerId - 300].field_1C[i];
- }
+ battleSave->battleRecord[i][j] = sBattleRecords[i][j];
}
- battleSave->field_51A = gSaveBlock2Ptr->field_738[gPartnerTrainerId - 300].field_E4;
}
- */
-}
+ while (1)
+ {
+ ret = RecordedBattleToSave(battleSave, savSection);
+ if (ret == TRUE)
+ break;
+ var++;
+ if (var >= 3)
+ break;
+ }
-#else
-NAKED
-u32 MoveRecordedBattleToSaveData(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, 0xC\n\
- movs r0, 0\n\
- str r0, [sp, 0x4]\n\
- movs r0, 0xF8\n\
- lsls r0, 4\n\
- bl AllocZeroed\n\
- adds r7, r0, 0\n\
- movs r0, 0x80\n\
- lsls r0, 5\n\
- bl AllocZeroed\n\
- str r0, [sp]\n\
- movs r6, 0\n\
-_0818535E:\n\
- movs r0, 0x64\n\
- adds r4, r6, 0\n\
- muls r4, r0\n\
- adds r5, r7, r4\n\
- ldr r1, =sSavedPlayerParty\n\
- adds r1, r4, r1\n\
- adds r0, r5, 0\n\
- movs r2, 0x64\n\
- bl memcpy\n\
- movs r1, 0x96\n\
- lsls r1, 2\n\
- adds r5, r1\n\
- ldr r0, =sSavedOpponentParty\n\
- adds r4, r0\n\
- adds r0, r5, 0\n\
- adds r1, r4, 0\n\
- movs r2, 0x64\n\
- bl memcpy\n\
- adds r6, 0x1\n\
- cmp r6, 0x5\n\
- ble _0818535E\n\
- movs r6, 0\n\
- ldr r2, =gSaveBlock2Ptr\n\
- mov r9, r2\n\
- movs r3, 0x9A\n\
- lsls r3, 3\n\
- adds r3, r7, r3\n\
- str r3, [sp, 0x8]\n\
- ldr r5, =sPlayers\n\
- mov r8, r6\n\
- mov r12, r6\n\
- movs r4, 0x96\n\
- lsls r4, 3\n\
- adds r4, r7\n\
- mov r10, r4\n\
- ldr r0, =0x000004e4\n\
- adds r4, r7, r0\n\
-_081853AC:\n\
- lsls r1, r6, 3\n\
- ldr r0, =sPlayers\n\
- adds r0, 0x4\n\
- mov r3, r8\n\
- adds r2, r3, r0\n\
- add r1, r10\n\
- movs r3, 0x7\n\
-_081853BA:\n\
- ldrb r0, [r2]\n\
- strb r0, [r1]\n\
- adds r2, 0x1\n\
- adds r1, 0x1\n\
- subs r3, 0x1\n\
- cmp r3, 0\n\
- bge _081853BA\n\
- ldr r0, [sp, 0x8]\n\
- adds r1, r0, r6\n\
- ldrb r0, [r5, 0xC]\n\
- strb r0, [r1]\n\
- ldrh r0, [r5, 0x10]\n\
- strb r0, [r4]\n\
- ldrh r0, [r5, 0xE]\n\
- strb r0, [r4, 0xC]\n\
- ldr r1, =0x000004d4\n\
- adds r0, r7, r1\n\
- add r0, r12\n\
- ldr r1, [r5]\n\
- str r1, [r0]\n\
- adds r5, 0x14\n\
- movs r2, 0x14\n\
- add r8, r2\n\
- movs r3, 0x4\n\
- add r12, r3\n\
- adds r4, 0x1\n\
- adds r6, 0x1\n\
- cmp r6, 0x3\n\
- ble _081853AC\n\
- movs r4, 0x9D\n\
- lsls r4, 3\n\
- adds r1, r7, r4\n\
- ldr r5, =gRecordedBattleRngSeed\n\
- ldr r0, [r5]\n\
- str r0, [r1]\n\
- ldr r0, =sBattleFlags\n\
- ldr r2, [r0]\n\
- movs r0, 0x2\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _081854DC\n\
- ldr r1, =0x000004ec\n\
- adds r3, r7, r1\n\
- movs r1, 0x23\n\
- negs r1, r1\n\
- ands r1, r2\n\
- movs r0, 0x80\n\
- lsls r0, 18\n\
- orrs r1, r0\n\
- str r1, [r3]\n\
- movs r0, 0x4\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _08185454\n\
- movs r0, 0x80\n\
- lsls r0, 24\n\
- orrs r1, r0\n\
- str r1, [r3]\n\
- b _081854E2\n\
- .pool\n\
-_08185454:\n\
- movs r0, 0x40\n\
- ands r2, r0\n\
- cmp r2, 0\n\
- beq _081854E2\n\
- ldr r2, =sPlayers\n\
- ldrh r0, [r2, 0xE]\n\
- cmp r0, 0x1\n\
- beq _081854A8\n\
- cmp r0, 0x1\n\
- bgt _08185474\n\
- cmp r0, 0\n\
- beq _0818547E\n\
- b _081854E2\n\
- .pool\n\
-_08185474:\n\
- cmp r0, 0x2\n\
- beq _0818547E\n\
- cmp r0, 0x3\n\
- beq _081854A8\n\
- b _081854E2\n\
-_0818547E:\n\
- ldr r3, =gUnknown_0203C7B4\n\
- ldrb r1, [r3]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r4, =sPlayers\n\
- adds r0, r4\n\
- ldrh r1, [r0, 0xE]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _081854E2\n\
- ldr r5, =0x000004ec\n\
- adds r0, r7, r5\n\
- b _081854C4\n\
- .pool\n\
-_081854A8:\n\
- ldr r0, =gUnknown_0203C7B4\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r1, =sPlayers\n\
- adds r0, r1\n\
- ldrh r1, [r0, 0xE]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _081854E2\n\
- ldr r2, =0x000004ec\n\
- adds r0, r7, r2\n\
-_081854C4:\n\
- ldr r1, [r0]\n\
- movs r2, 0x80\n\
- lsls r2, 24\n\
- orrs r1, r2\n\
- str r1, [r0]\n\
- b _081854E2\n\
- .pool\n\
-_081854DC:\n\
- ldr r3, =0x000004ec\n\
- adds r0, r7, r3\n\
- str r2, [r0]\n\
-_081854E2:\n\
- ldr r4, =gTrainerBattleOpponent_A\n\
- ldrh r1, [r4]\n\
- ldr r5, =0x000004f4\n\
- adds r0, r7, r5\n\
- strh r1, [r0]\n\
- ldr r0, =gTrainerBattleOpponent_B\n\
- ldrh r1, [r0]\n\
- ldr r2, =0x000004f6\n\
- adds r0, r7, r2\n\
- strh r1, [r0]\n\
- ldr r3, =gPartnerTrainerId\n\
- ldrh r1, [r3]\n\
- movs r4, 0x9F\n\
- lsls r4, 3\n\
- adds r0, r7, r4\n\
- strh r1, [r0]\n\
- ldr r5, =gUnknown_0203C7B4\n\
- ldrb r1, [r5]\n\
- adds r2, 0x4\n\
- adds r0, r7, r2\n\
- strh r1, [r0]\n\
- mov r3, r9\n\
- ldr r0, [r3]\n\
- ldr r4, =0x00000ca9\n\
- adds r0, r4\n\
- ldrb r0, [r0]\n\
- lsls r0, 30\n\
- lsrs r0, 30\n\
- ldr r5, =0x000004fc\n\
- adds r1, r7, r5\n\
- strb r0, [r1]\n\
- ldr r0, =sFrontierFacility\n\
- ldrb r1, [r0]\n\
- adds r2, 0x3\n\
- adds r0, r7, r2\n\
- strb r1, [r0]\n\
- ldr r3, =sUnknown_0203C7AF\n\
- ldrb r1, [r3]\n\
- ldr r4, =0x000004fe\n\
- adds r0, r7, r4\n\
- strb r1, [r0]\n\
- mov r5, r9\n\
- ldr r0, [r5]\n\
- ldrb r1, [r0, 0x15]\n\
- lsls r1, 29\n\
- ldr r0, =0x000004ff\n\
- adds r3, r7, r0\n\
- lsrs r1, 31\n\
- ldrb r2, [r3]\n\
- movs r0, 0x2\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r3]\n\
- ldr r1, [r5]\n\
- ldrb r1, [r1, 0x14]\n\
- lsls r1, 29\n\
- lsrs r1, 28\n\
- movs r2, 0xF\n\
- negs r2, r2\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r3]\n\
- movs r2, 0xA0\n\
- lsls r2, 3\n\
- adds r1, r7, r2\n\
- ldr r3, =sAI_Scripts\n\
- ldr r0, [r3]\n\
- str r0, [r1]\n\
- ldr r4, =0xfffffed4\n\
- adds r1, r4, 0\n\
- ldr r5, =gTrainerBattleOpponent_A\n\
- ldrh r5, [r5]\n\
- adds r0, r1, r5\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x63\n\
- bls _08185580\n\
- b _081856C4\n\
-_08185580:\n\
- movs r6, 0\n\
- ldr r0, =0x00000504\n\
- adds r3, r7, r0\n\
- mov r10, r9\n\
- ldr r1, =gTrainerBattleOpponent_A\n\
- mov r12, r1\n\
- adds r2, r4, 0\n\
- mov r8, r2\n\
- ldr r4, =0x0000073c\n\
-_08185592:\n\
- adds r2, r3, r6\n\
- mov r5, r10\n\
- ldr r1, [r5]\n\
- mov r5, r12\n\
- ldrh r0, [r5]\n\
- add r0, r8\n\
- movs r5, 0xEC\n\
- muls r0, r5\n\
- adds r0, r6, r0\n\
- adds r1, r4\n\
- adds r1, r0\n\
- ldrb r0, [r1]\n\
- strb r0, [r2]\n\
- adds r6, 0x1\n\
- cmp r6, 0x7\n\
- ble _08185592\n\
- mov r0, r9\n\
- ldr r2, [r0]\n\
- ldr r1, =gTrainerBattleOpponent_A\n\
- ldrh r0, [r1]\n\
- ldr r3, =0xfffffed4\n\
- adds r0, r3\n\
- movs r1, 0xEC\n\
- muls r0, r1\n\
- adds r2, r0\n\
- ldr r4, =0x00000739\n\
- adds r2, r4\n\
- ldrb r1, [r2]\n\
- ldr r5, =0x0000050c\n\
- adds r0, r7, r5\n\
- strb r1, [r0]\n\
- ldr r1, =sUnknown_0203CCE8\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x1\n\
- bne _08185664\n\
- movs r6, 0\n\
- ldr r2, =0x0000050e\n\
- adds r4, r7, r2\n\
- mov r10, r9\n\
- ldr r5, =gTrainerBattleOpponent_A\n\
- mov r8, r5\n\
- adds r5, r3, 0\n\
-_081855E6:\n\
- lsls r3, r6, 1\n\
- mov r0, r10\n\
- ldr r2, [r0]\n\
- mov r1, r8\n\
- ldrh r0, [r1]\n\
- adds r0, r5\n\
- movs r1, 0xEC\n\
- muls r0, r1\n\
- adds r3, r0\n\
- movs r0, 0xEC\n\
- lsls r0, 3\n\
- adds r2, r0\n\
- adds r2, r3\n\
- ldrh r0, [r2]\n\
- strh r0, [r4]\n\
- adds r4, 0x2\n\
- adds r6, 0x1\n\
- cmp r6, 0x5\n\
- ble _081855E6\n\
- b _08185696\n\
- .pool\n\
-_08185664:\n\
- movs r6, 0\n\
- ldr r1, =0x0000050e\n\
- adds r4, r7, r1\n\
- mov r10, r9\n\
- ldr r2, =gTrainerBattleOpponent_A\n\
- mov r8, r2\n\
- adds r5, r3, 0\n\
-_08185672:\n\
- lsls r3, r6, 1\n\
- mov r0, r10\n\
- ldr r2, [r0]\n\
- mov r1, r8\n\
- ldrh r0, [r1]\n\
- adds r0, r5\n\
- movs r1, 0xEC\n\
- muls r0, r1\n\
- adds r3, r0\n\
- ldr r0, =0x00000754\n\
- adds r2, r0\n\
- adds r2, r3\n\
- ldrh r0, [r2]\n\
- strh r0, [r4]\n\
- adds r4, 0x2\n\
- adds r6, 0x1\n\
- cmp r6, 0x5\n\
- ble _08185672\n\
-_08185696:\n\
- mov r1, r9\n\
- ldr r2, [r1]\n\
- ldr r3, =gTrainerBattleOpponent_A\n\
- ldrh r0, [r3]\n\
- ldr r4, =0xfffffed4\n\
- adds r0, r4\n\
- movs r1, 0xEC\n\
- muls r0, r1\n\
- adds r2, r0\n\
- ldr r5, =0x0000081c\n\
- adds r2, r5\n\
- ldrb r1, [r2]\n\
- b _08185856\n\
- .pool\n\
-_081856C4:\n\
- ldr r3, =gTrainerBattleOpponent_B\n\
- ldrh r3, [r3]\n\
- adds r0, r1, r3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x63\n\
- bls _081856D4\n\
- b _081857E4\n\
-_081856D4:\n\
- movs r6, 0\n\
- ldr r4, =0x00000504\n\
- adds r3, r7, r4\n\
- mov r10, r9\n\
- ldr r5, =gTrainerBattleOpponent_B\n\
- mov r12, r5\n\
- ldr r0, =0xfffffed4\n\
- mov r8, r0\n\
- ldr r4, =0x0000073c\n\
-_081856E6:\n\
- adds r2, r3, r6\n\
- mov r5, r10\n\
- ldr r1, [r5]\n\
- mov r5, r12\n\
- ldrh r0, [r5]\n\
- add r0, r8\n\
- movs r5, 0xEC\n\
- muls r0, r5\n\
- adds r0, r6, r0\n\
- adds r1, r4\n\
- adds r1, r0\n\
- ldrb r0, [r1]\n\
- strb r0, [r2]\n\
- adds r6, 0x1\n\
- cmp r6, 0x7\n\
- ble _081856E6\n\
- mov r0, r9\n\
- ldr r2, [r0]\n\
- ldr r1, =gTrainerBattleOpponent_B\n\
- ldrh r0, [r1]\n\
- ldr r3, =0xfffffed4\n\
- adds r0, r3\n\
- movs r1, 0xEC\n\
- muls r0, r1\n\
- adds r2, r0\n\
- ldr r4, =0x00000739\n\
- adds r2, r4\n\
- ldrb r1, [r2]\n\
- ldr r5, =0x0000050c\n\
- adds r0, r7, r5\n\
- strb r1, [r0]\n\
- ldr r1, =sUnknown_0203CCE8\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x1\n\
- bne _08185784\n\
- movs r6, 0\n\
- ldr r2, =0x0000050e\n\
- adds r4, r7, r2\n\
- mov r10, r9\n\
- ldr r5, =gTrainerBattleOpponent_B\n\
- mov r8, r5\n\
- adds r5, r3, 0\n\
-_0818573A:\n\
- lsls r3, r6, 1\n\
- mov r0, r10\n\
- ldr r2, [r0]\n\
- mov r1, r8\n\
- ldrh r0, [r1]\n\
- adds r0, r5\n\
- movs r1, 0xEC\n\
- muls r0, r1\n\
- adds r3, r0\n\
- movs r0, 0xEC\n\
- lsls r0, 3\n\
- adds r2, r0\n\
- adds r2, r3\n\
- ldrh r0, [r2]\n\
- strh r0, [r4]\n\
- adds r4, 0x2\n\
- adds r6, 0x1\n\
- cmp r6, 0x5\n\
- ble _0818573A\n\
- b _081857B6\n\
- .pool\n\
-_08185784:\n\
- movs r6, 0\n\
- ldr r1, =0x0000050e\n\
- adds r4, r7, r1\n\
- mov r10, r9\n\
- ldr r2, =gTrainerBattleOpponent_B\n\
- mov r8, r2\n\
- adds r5, r3, 0\n\
-_08185792:\n\
- lsls r3, r6, 1\n\
- mov r0, r10\n\
- ldr r2, [r0]\n\
- mov r1, r8\n\
- ldrh r0, [r1]\n\
- adds r0, r5\n\
- movs r1, 0xEC\n\
- muls r0, r1\n\
- adds r3, r0\n\
- ldr r0, =0x00000754\n\
- adds r2, r0\n\
- adds r2, r3\n\
- ldrh r0, [r2]\n\
- strh r0, [r4]\n\
- adds r4, 0x2\n\
- adds r6, 0x1\n\
- cmp r6, 0x5\n\
- ble _08185792\n\
-_081857B6:\n\
- mov r1, r9\n\
- ldr r2, [r1]\n\
- ldr r3, =gTrainerBattleOpponent_B\n\
- ldrh r0, [r3]\n\
- ldr r4, =0xfffffed4\n\
- adds r0, r4\n\
- movs r1, 0xEC\n\
- muls r0, r1\n\
- adds r2, r0\n\
- ldr r5, =0x0000081c\n\
- adds r2, r5\n\
- ldrb r1, [r2]\n\
- b _08185856\n\
- .pool\n\
-_081857E4:\n\
- ldr r3, =gPartnerTrainerId\n\
- ldrh r3, [r3]\n\
- adds r0, r1, r3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x63\n\
- bhi _0818585C\n\
- movs r6, 0\n\
- ldr r4, =0x00000504\n\
- adds r3, r7, r4\n\
- mov r10, r9\n\
- ldr r5, =gPartnerTrainerId\n\
- mov r12, r5\n\
- ldr r0, =0xfffffed4\n\
- mov r8, r0\n\
- ldr r4, =0x0000073c\n\
-_08185804:\n\
- adds r2, r3, r6\n\
- mov r5, r10\n\
- ldr r1, [r5]\n\
- mov r5, r12\n\
- ldrh r0, [r5]\n\
- add r0, r8\n\
- movs r5, 0xEC\n\
- muls r0, r5\n\
- adds r0, r6, r0\n\
- adds r1, r4\n\
- adds r1, r0\n\
- ldrb r0, [r1]\n\
- strb r0, [r2]\n\
- adds r6, 0x1\n\
- cmp r6, 0x7\n\
- ble _08185804\n\
- mov r0, r9\n\
- ldr r1, [r0]\n\
- ldr r2, =gPartnerTrainerId\n\
- ldrh r0, [r2]\n\
- ldr r3, =0xfffffed4\n\
- adds r0, r3\n\
- movs r2, 0xEC\n\
- muls r0, r2\n\
- adds r1, r0\n\
- ldr r4, =0x00000739\n\
- adds r1, r4\n\
- ldrb r1, [r1]\n\
- ldr r5, =0x0000050c\n\
- adds r0, r7, r5\n\
- strb r1, [r0]\n\
- mov r0, r9\n\
- ldr r1, [r0]\n\
- ldr r4, =gPartnerTrainerId\n\
- ldrh r0, [r4]\n\
- adds r0, r3\n\
- muls r0, r2\n\
- adds r1, r0\n\
- ldr r5, =0x0000081c\n\
- adds r1, r5\n\
- ldrb r1, [r1]\n\
-_08185856:\n\
- ldr r2, =0x0000051a\n\
- adds r0, r7, r2\n\
- strb r1, [r0]\n\
-_0818585C:\n\
- ldr r3, =gTrainerBattleOpponent_A\n\
- ldrh r0, [r3]\n\
- ldr r1, =0x0000018f\n\
- cmp r0, r1\n\
- bls _08185900\n\
- mov r4, r9\n\
- ldr r2, [r4]\n\
- adds r1, r0, 0\n\
- ldr r3, =0xfffffe70\n\
- adds r1, r3\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r2, r0\n\
- adds r2, 0xDC\n\
- ldrb r0, [r2]\n\
- lsls r0, 27\n\
- lsrs r0, 27\n\
- ldr r5, =0x0000050d\n\
- adds r1, r7, r5\n\
- strb r0, [r1]\n\
- movs r6, 0\n\
- ldr r0, =0x0000050e\n\
- adds r4, r7, r0\n\
- mov r10, r9\n\
- ldr r1, =gTrainerBattleOpponent_A\n\
- mov r8, r1\n\
- adds r5, r3, 0\n\
-_08185894:\n\
- lsls r3, r6, 1\n\
- mov r0, r10\n\
- ldr r2, [r0]\n\
- mov r0, r8\n\
- ldrh r1, [r0]\n\
- adds r1, r5\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r3, r0\n\
- movs r1, 0x82\n\
- lsls r1, 1\n\
- adds r2, r1\n\
- adds r2, r3\n\
- ldrh r0, [r2]\n\
- strh r0, [r4]\n\
- adds r4, 0x2\n\
- adds r6, 0x1\n\
- cmp r6, 0x5\n\
- ble _08185894\n\
- mov r3, r9\n\
- ldr r2, [r3]\n\
- ldr r4, =gTrainerBattleOpponent_A\n\
- ldrh r1, [r4]\n\
- ldr r5, =0xfffffe70\n\
- adds r1, r5\n\
- b _081859AC\n\
- .pool\n\
-_08185900:\n\
- ldr r3, =gTrainerBattleOpponent_B\n\
- ldrh r0, [r3]\n\
- cmp r0, r1\n\
- bls _0818597C\n\
- mov r4, r9\n\
- ldr r2, [r4]\n\
- adds r1, r0, 0\n\
- ldr r3, =0xfffffe70\n\
- adds r1, r3\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r2, r0\n\
- adds r2, 0xDC\n\
- ldrb r0, [r2]\n\
- lsls r0, 27\n\
- lsrs r0, 27\n\
- ldr r5, =0x0000050d\n\
- adds r1, r7, r5\n\
- strb r0, [r1]\n\
- movs r6, 0\n\
- ldr r0, =0x0000050e\n\
- adds r4, r7, r0\n\
- mov r10, r9\n\
- ldr r1, =gTrainerBattleOpponent_B\n\
- mov r8, r1\n\
- adds r5, r3, 0\n\
-_08185936:\n\
- lsls r3, r6, 1\n\
- mov r0, r10\n\
- ldr r2, [r0]\n\
- mov r0, r8\n\
- ldrh r1, [r0]\n\
- adds r1, r5\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r3, r0\n\
- movs r1, 0x82\n\
- lsls r1, 1\n\
- adds r2, r1\n\
- adds r2, r3\n\
- ldrh r0, [r2]\n\
- strh r0, [r4]\n\
- adds r4, 0x2\n\
- adds r6, 0x1\n\
- cmp r6, 0x5\n\
- ble _08185936\n\
- mov r3, r9\n\
- ldr r2, [r3]\n\
- ldr r4, =gTrainerBattleOpponent_B\n\
- ldrh r1, [r4]\n\
- ldr r5, =0xfffffe70\n\
- adds r1, r5\n\
- b _081859AC\n\
- .pool\n\
-_0818597C:\n\
- ldr r3, =gPartnerTrainerId\n\
- ldrh r0, [r3]\n\
- cmp r0, r1\n\
- bls _081859C0\n\
- mov r4, r9\n\
- ldr r2, [r4]\n\
- adds r1, r0, 0\n\
- ldr r3, =0xfffffe70\n\
- adds r1, r3\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r2, r0\n\
- adds r2, 0xDC\n\
- ldrb r0, [r2]\n\
- lsls r0, 27\n\
- lsrs r0, 27\n\
- ldr r5, =0x0000050d\n\
- adds r1, r7, r5\n\
- strb r0, [r1]\n\
- ldr r2, [r4]\n\
- ldr r0, =gPartnerTrainerId\n\
- ldrh r1, [r0]\n\
- adds r1, r3\n\
-_081859AC:\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r2, r0\n\
- ldr r1, =0x0000011b\n\
- adds r0, r2, r1\n\
- ldrb r1, [r0]\n\
- ldr r2, =0x0000051b\n\
- adds r0, r7, r2\n\
- strb r1, [r0]\n\
-_081859C0:\n\
- movs r6, 0\n\
- ldr r3, =0x00000297\n\
- mov r10, r3\n\
- ldr r4, =sBattleRecords\n\
- mov r9, r4\n\
- movs r5, 0xA6\n\
- lsls r5, 2\n\
- mov r8, r5\n\
- ldr r0, =0x0000051c\n\
- adds r5, r7, r0\n\
-_081859D4:\n\
- adds r4, r6, 0x1\n\
- mov r0, r8\n\
- muls r0, r6\n\
- mov r1, r9\n\
- adds r2, r0, r1\n\
- adds r1, r0, r5\n\
- mov r3, r10\n\
- adds r3, 0x1\n\
-_081859E4:\n\
- ldrb r0, [r2]\n\
- strb r0, [r1]\n\
- adds r2, 0x1\n\
- adds r1, 0x1\n\
- subs r3, 0x1\n\
- cmp r3, 0\n\
- bne _081859E4\n\
- adds r6, r4, 0\n\
- cmp r6, 0x3\n\
- ble _081859D4\n\
-_081859F8:\n\
- adds r0, r7, 0\n\
- ldr r1, [sp]\n\
- bl sub_81852F0\n\
- adds r4, r0, 0\n\
- cmp r4, 0x1\n\
- beq _08185A14\n\
- ldr r0, [sp, 0x4]\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x4]\n\
- cmp r0, 0x2\n\
- bls _081859F8\n\
-_08185A14:\n\
- adds r0, r7, 0\n\
- bl Free\n\
- ldr r0, [sp]\n\
- bl Free\n\
- adds r0, r4, 0\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\
- .pool\n\
- .syntax divided");
+ free(battleSave);
+ free(savSection);
+ return ret;
}
-#endif // NONMATCHING
static bool32 TryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst, struct SaveSection *saveBuffer)
{
- if (TryCopySpecialSaveSection(SECTION_ID_RECORDED_BATTLE, (void*)(saveBuffer)) != 1)
+ if (TryCopySpecialSaveSection(SECTOR_ID_RECORDED_BATTLE, (void*)(saveBuffer)) != 1)
return FALSE;
memcpy(dst, saveBuffer, sizeof(struct RecordedBattleSave));
@@ -1282,7 +501,7 @@ static bool32 TryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst, stru
return TRUE;
}
-static bool32 AllocTryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst)
+static bool32 CopyRecordedBattleFromSave(struct RecordedBattleSave *dst)
{
struct SaveSection *savBuffer = AllocZeroed(sizeof(struct SaveSection));
bool32 ret = TryCopyRecordedBattleSaveData(dst, savBuffer);
@@ -1293,7 +512,7 @@ static bool32 AllocTryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst)
static void CB2_RecordedBattleEnd(void)
{
- gSaveBlock2Ptr->frontier.lvlMode = sUnknown_0203C7AD;
+ gSaveBlock2Ptr->frontier.lvlMode = sLvlMode;
gBattleOutcome = 0;
gBattleTypeFlags = 0;
gTrainerBattleOpponent_A = 0;
@@ -1316,7 +535,7 @@ static void Task_StartAfterCountdown(u8 taskId)
}
}
-static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
+static void SetVariablesForRecordedBattle(struct RecordedBattleSave *src)
{
bool8 var;
s32 i, j;
@@ -1353,29 +572,29 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
gTrainerBattleOpponent_B = src->opponentB;
gPartnerTrainerId = src->partnerId;
gUnknown_0203C7B4 = src->field_4FA;
- sUnknown_0203C7AD = gSaveBlock2Ptr->frontier.lvlMode;
- sFrontierFacility = src->field_4FD;
- sUnknown_0203C7AF = src->field_4FE;
- sBattleStyle = src->battleStyle;
+ sLvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ sFrontierFacility = src->frontierFacility;
+ sFrontierBrainSymbol = src->frontierBrainSymbol;
+ sBattleScene = src->battleScene;
sTextSpeed = src->textSpeed;
sAI_Scripts = src->AI_scripts;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
{
- sUnknown_0203CCD1[i] = src->field_504[i];
+ sRecordMixFriendName[i] = src->recordMixFriendName[i];
}
- sUnknown_0203CCD9 = src->field_50C;
- sUnknown_0203CCDA = src->field_50D;
- gUnknown_03001278 = src->field_51A;
- gUnknown_03001279 = src->field_51B;
+ sRecordMixFriendClass = src->recordMixFriendClass;
+ sApprenticeId = src->apprenticeId;
+ sRecordMixFriendLanguage = src->recordMixFriendLanguage;
+ sApprenticeLanguage = src->apprenticeLanguage;
for (i = 0; i < 6; i++)
{
- sUnknown_0203CCDC[i] = src->field_50E[i];
+ sEasyChatSpeech[i] = src->easyChatSpeech[i];
}
- gSaveBlock2Ptr->frontier.lvlMode = src->field_4FC;
+ gSaveBlock2Ptr->frontier.lvlMode = src->lvlMode;
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
@@ -1389,12 +608,12 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
void PlayRecordedBattle(void (*CB2_After)(void))
{
struct RecordedBattleSave *battleSave = AllocZeroed(sizeof(struct RecordedBattleSave));
- if (AllocTryCopyRecordedBattleSaveData(battleSave) == TRUE)
+ if (CopyRecordedBattleFromSave(battleSave) == TRUE)
{
u8 taskId;
RecordedBattle_SaveParties();
- SetRecordedBattleVarsFromSave(battleSave);
+ SetVariablesForRecordedBattle(battleSave);
taskId = CreateTask(Task_StartAfterCountdown, 1);
gTasks[taskId].tFramesToWait = 128;
@@ -1420,9 +639,9 @@ u8 GetRecordedBattleFrontierFacility(void)
return sFrontierFacility;
}
-u8 sub_8185EAC(void)
+u8 GetRecordedBattleFronterBrainSymbol(void)
{
- return sUnknown_0203C7AF;
+ return sFrontierBrainSymbol;
}
void RecordedBattle_SaveParties(void)
@@ -1478,9 +697,9 @@ u8 sub_8185FAC(void)
return sUnknown_0203C7B5;
}
-u8 GetBattleStyleInRecordedBattle(void)
+u8 GetBattleSceneInRecordedBattle(void)
{
- return sBattleStyle;
+ return sBattleScene;
}
u8 GetTextSpeedInRecordedBattle(void)
@@ -1630,38 +849,38 @@ void sub_8186468(u8 *dst)
s32 i;
for (i = 0; i < 8; i++)
- dst[i] = sUnknown_0203CCD1[i];
+ dst[i] = sRecordMixFriendName[i];
dst[7] = EOS;
- ConvertInternationalString(dst, gUnknown_03001278);
+ ConvertInternationalString(dst, sRecordMixFriendLanguage);
}
-u8 sub_818649C(void)
+u8 GetRecordedBattleRecordMixFriendClass(void)
{
- return sUnknown_0203CCD9;
+ return sRecordMixFriendClass;
}
-u8 sub_81864A8(void)
+u8 GetRecordedBattleApprenticeId(void)
{
- return sUnknown_0203CCDA;
+ return sApprenticeId;
}
-u8 sub_81864B4(void)
+u8 GetRecordedBattleRecordMixFriendLanguage(void)
{
- return gUnknown_03001278;
+ return sRecordMixFriendLanguage;
}
-u8 sub_81864C0(void)
+u8 GetRecordedBattleApprenticeLanguage(void)
{
- return gUnknown_03001279;
+ return sApprenticeLanguage;
}
-void sub_81864CC(void)
+void RecordedBattle_SaveBattleOutcome(void)
{
- sUnknown_0203CCE8 = gBattleOutcome;
+ sBattleOutcome = gBattleOutcome;
}
-u16 *sub_81864E0(void)
+u16 *GetRecordedBattleEasyChatSpeech(void)
{
- return sUnknown_0203CCDC;
+ return sEasyChatSpeech;
}
diff --git a/src/region_map.c b/src/region_map.c
index e06d121e9..262a7d020 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -34,15 +34,6 @@
// Static type declarations
-struct RegionMapLocation
-{
- u8 x;
- u8 y;
- u8 width;
- u8 height;
- const u8 *name;
-};
-
// Static RAM declarations
static EWRAM_DATA struct RegionMap *gRegionMap = NULL;
@@ -99,11 +90,11 @@ static void sub_8124E0C(void);
// .rodata
static const u16 sRegionMapCursorPal[] = INCBIN_U16("graphics/pokenav/cursor.gbapal");
-static const u8 sRegionMapCursorSmallGfxLZ[] = INCBIN_U8("graphics/pokenav/cursor_small.4bpp.lz");
-static const u8 sRegionMapCursorLargeGfxLZ[] = INCBIN_U8("graphics/pokenav/cursor_large.4bpp.lz");
+static const u32 sRegionMapCursorSmallGfxLZ[] = INCBIN_U32("graphics/pokenav/cursor_small.4bpp.lz");
+static const u32 sRegionMapCursorLargeGfxLZ[] = INCBIN_U32("graphics/pokenav/cursor_large.4bpp.lz");
static const u16 sRegionMapBkgnd_Pal[] = INCBIN_U16("graphics/pokenav/region_map.gbapal");
-static const u8 sRegionMapBkgnd_GfxLZ[] = INCBIN_U8("graphics/pokenav/region_map.8bpp.lz");
-static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz");
+static const u32 sRegionMapBkgnd_GfxLZ[] = INCBIN_U32("graphics/pokenav/region_map.8bpp.lz");
+static const u32 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U32("graphics/pokenav/region_map_map.bin.lz");
static const u16 sRegionMapPlayerIcon_BrendanPal[] = INCBIN_U16("graphics/pokenav/brendan_icon.gbapal");
static const u8 sRegionMapPlayerIcon_BrendanGfx[] = INCBIN_U8("graphics/pokenav/brendan_icon.4bpp");
static const u16 sRegionMapPlayerIcon_MayPal[] = INCBIN_U16("graphics/pokenav/may_icon.gbapal");
@@ -236,13 +227,13 @@ static const u8 sRegionMapEventSectionIds[] = {
static const u16 sRegionMapFramePal[] = INCBIN_U16("graphics/pokenav/map_frame.gbapal");
-static const u8 sRegionMapFrameGfxLZ[] = INCBIN_U8("graphics/pokenav/map_frame.4bpp.lz");
+static const u32 sRegionMapFrameGfxLZ[] = INCBIN_U32("graphics/pokenav/map_frame.4bpp.lz");
-static const u8 sRegionMapFrameTilemapLZ[] = INCBIN_U8("graphics/pokenav/map_frame.bin.lz");
+static const u32 sRegionMapFrameTilemapLZ[] = INCBIN_U32("graphics/pokenav/map_frame.bin.lz");
static const u16 Unknown_085A1D48[] = INCBIN_U16("graphics/pokenav/fly_target_icons.gbapal");
-static const u8 sUnknown_085A1D68[] = INCBIN_U8("graphics/pokenav/fly_target_icons.4bpp.lz");
+static const u32 sUnknown_085A1D68[] = INCBIN_U32("graphics/pokenav/fly_target_icons.4bpp.lz");
static const u8 sMapHealLocations[][3] = {
{MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F},
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 60580ef2d..7f2eb3746 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -16,15 +16,6 @@
#include "battle_anim.h"
#include "data2.h"
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG0_Y;
-extern u16 gBattle_BG1_X;
-extern u16 gBattle_BG1_Y;
-extern u16 gBattle_BG2_X;
-extern u16 gBattle_BG2_Y;
-extern u16 gBattle_BG3_X;
-extern u16 gBattle_BG3_Y;
-
extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[];
extern void SetMultiuseSpriteTemplateToTrainerBack(u16 backPicId, u8 battlerPosition);
diff --git a/src/roamer.c b/src/roamer.c
index fbd25bfad..be45642e0 100644
--- a/src/roamer.c
+++ b/src/roamer.c
@@ -1,9 +1,10 @@
#include "global.h"
-#include "roamer.h"
+#include "event_data.h"
#include "pokemon.h"
#include "random.h"
+#include "roamer.h"
+#include "constants/maps.h"
#include "constants/species.h"
-#include "event_data.h"
enum
{
@@ -16,26 +17,26 @@ EWRAM_DATA static u8 sRoamerLocation[2] = {0};
static const u8 sRoamerLocations[][6] =
{
- { 0x19, 0x1A, 0x20, 0x21, 0x31, 0xFF },
- { 0x1A, 0x19, 0x20, 0x21, 0xFF, 0xFF },
- { 0x20, 0x1A, 0x19, 0x21, 0xFF, 0xFF },
- { 0x21, 0x20, 0x19, 0x1A, 0x22, 0x26 },
- { 0x22, 0x21, 0x23, 0xFF, 0xFF, 0xFF },
- { 0x23, 0x22, 0x24, 0xFF, 0xFF, 0xFF },
- { 0x24, 0x23, 0x25, 0x26, 0xFF, 0xFF },
- { 0x25, 0x24, 0x26, 0xFF, 0xFF, 0xFF },
- { 0x26, 0x25, 0x21, 0xFF, 0xFF, 0xFF },
- { 0x27, 0x24, 0x28, 0x29, 0xFF, 0xFF },
- { 0x28, 0x27, 0x2A, 0xFF, 0xFF, 0xFF },
- { 0x29, 0x27, 0x2A, 0xFF, 0xFF, 0xFF },
- { 0x2A, 0x28, 0x29, 0x2B, 0xFF, 0xFF },
- { 0x2B, 0x2A, 0x2C, 0xFF, 0xFF, 0xFF },
- { 0x2C, 0x2B, 0x2D, 0xFF, 0xFF, 0xFF },
- { 0x2D, 0x2C, 0x2E, 0xFF, 0xFF, 0xFF },
- { 0x2E, 0x2D, 0x2F, 0xFF, 0xFF, 0xFF },
- { 0x2F, 0x2E, 0x30, 0xFF, 0xFF, 0xFF },
- { 0x30, 0x2F, 0x31, 0xFF, 0xFF, 0xFF },
- { 0x31, 0x30, 0x19, 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE110), MAP_NUM(ROUTE111), MAP_NUM(ROUTE117), MAP_NUM(ROUTE118), MAP_NUM(ROUTE134), 0xFF },
+ { MAP_NUM(ROUTE111), MAP_NUM(ROUTE110), MAP_NUM(ROUTE117), MAP_NUM(ROUTE118), 0xFF, 0xFF },
+ { MAP_NUM(ROUTE117), MAP_NUM(ROUTE111), MAP_NUM(ROUTE110), MAP_NUM(ROUTE118), 0xFF, 0xFF },
+ { MAP_NUM(ROUTE118), MAP_NUM(ROUTE117), MAP_NUM(ROUTE110), MAP_NUM(ROUTE111), MAP_NUM(ROUTE119), MAP_NUM(ROUTE123) },
+ { MAP_NUM(ROUTE119), MAP_NUM(ROUTE118), MAP_NUM(ROUTE120), 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE120), MAP_NUM(ROUTE119), MAP_NUM(ROUTE121), 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE121), MAP_NUM(ROUTE120), MAP_NUM(ROUTE122), MAP_NUM(ROUTE123), 0xFF, 0xFF },
+ { MAP_NUM(ROUTE122), MAP_NUM(ROUTE121), MAP_NUM(ROUTE123), 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE123), MAP_NUM(ROUTE122), MAP_NUM(ROUTE118), 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE124), MAP_NUM(ROUTE121), MAP_NUM(ROUTE125), MAP_NUM(ROUTE126), 0xFF, 0xFF },
+ { MAP_NUM(ROUTE125), MAP_NUM(ROUTE124), MAP_NUM(ROUTE127), 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE126), MAP_NUM(ROUTE124), MAP_NUM(ROUTE127), 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE127), MAP_NUM(ROUTE125), MAP_NUM(ROUTE126), MAP_NUM(ROUTE128), 0xFF, 0xFF },
+ { MAP_NUM(ROUTE128), MAP_NUM(ROUTE127), MAP_NUM(ROUTE129), 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE129), MAP_NUM(ROUTE128), MAP_NUM(ROUTE130), 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE130), MAP_NUM(ROUTE129), MAP_NUM(ROUTE131), 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE131), MAP_NUM(ROUTE130), MAP_NUM(ROUTE132), 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE132), MAP_NUM(ROUTE131), MAP_NUM(ROUTE133), 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE133), MAP_NUM(ROUTE132), MAP_NUM(ROUTE134), 0xFF, 0xFF, 0xFF },
+ { MAP_NUM(ROUTE134), MAP_NUM(ROUTE133), MAP_NUM(ROUTE110), 0xFF, 0xFF, 0xFF },
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
};
@@ -79,7 +80,7 @@ static void CreateInitialRoamerMon(bool16 createLatios)
(&gSaveBlock1Ptr->roamer)->smart = GetMonData(&gEnemyParty[0], MON_DATA_SMART);
(&gSaveBlock1Ptr->roamer)->tough = GetMonData(&gEnemyParty[0], MON_DATA_TOUGH);
sRoamerLocation[MAP_GRP] = 0;
- sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % 20][0];
+ sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % (ARRAY_COUNT(sRoamerLocations) - 1)][0];
}
void InitRoamer(void)
@@ -103,20 +104,20 @@ void UpdateLocationHistoryForRoamer(void)
void RoamerMoveToOtherLocationSet(void)
{
- u8 val = 0;
+ u8 mapNum = 0;
struct Roamer *roamer = &gSaveBlock1Ptr->roamer;
if (!roamer->active)
return;
- sRoamerLocation[MAP_GRP] = val;
+ sRoamerLocation[MAP_GRP] = 0;
while (1)
{
- val = sRoamerLocations[Random() % 20][0];
- if (sRoamerLocation[MAP_NUM] != val)
+ mapNum = sRoamerLocations[Random() % (ARRAY_COUNT(sRoamerLocations) - 1)][0];
+ if (sRoamerLocation[MAP_NUM] != mapNum)
{
- sRoamerLocation[MAP_NUM] = val;
+ sRoamerLocation[MAP_NUM] = mapNum;
return;
}
}
@@ -137,7 +138,7 @@ void RoamerMove(void)
if (!roamer->active)
return;
- while (locSet < 20)
+ while (locSet < (ARRAY_COUNT(sRoamerLocations) - 1))
{
if (sRoamerLocation[MAP_NUM] == sRoamerLocations[locSet][0])
{
diff --git a/src/rock.c b/src/rock.c
new file mode 100644
index 000000000..3b8e505d8
--- /dev/null
+++ b/src/rock.c
@@ -0,0 +1,878 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "palette.h"
+#include "sound.h"
+#include "task.h"
+#include "trig.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+
+extern const union AnimCmd *const gUnknown_085950E0[];
+extern const union AnimCmd *const gUnknown_085954D0[];
+
+extern void AnimMoveTwisterParticle(struct Sprite *);
+
+void sub_81109F0(struct Sprite *);
+void sub_8110AB4(struct Sprite *);
+void AnimDirtParticleAcrossScreen(struct Sprite *);
+void AnimRaiseSprite(struct Sprite *);
+void sub_81110A4(u8 taskId);
+void sub_811131C(struct Sprite *);
+void sub_8111388(struct Sprite *);
+void sub_8111418(struct Sprite *);
+void sub_8111444(struct Sprite *);
+void sub_8110B38(struct Sprite *);
+static void sub_8110A70(struct Sprite *);
+static void sub_8110B80(struct Sprite *sprite);
+static void sub_8110CB0(u8 taskId);
+static void sub_8111214(struct Task *task);
+static u8 sub_811135C(void);
+static void sub_81113C8(struct Sprite *sprite);
+static void sub_811149C(struct Sprite *sprite);
+
+const union AnimCmd gUnknown_08596AE0[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08596AE8[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08596AF0[] =
+{
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08596AF8[] =
+{
+ gUnknown_08596AE0,
+ gUnknown_08596AE8,
+ gUnknown_08596AF0,
+};
+
+const struct SpriteTemplate gUnknown_08596B04 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08596AF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81109F0,
+};
+
+const struct SpriteTemplate gUnknown_08596B1C =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08596AF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8110AB4,
+};
+
+const struct SpriteTemplate gUnknown_08596B34 =
+{
+ .tileTag = ANIM_TAG_MUD_SAND,
+ .paletteTag = ANIM_TAG_MUD_SAND,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8110B38,
+};
+
+const union AffineAnimCmd gUnknown_08596B4C[] =
+{
+ 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 gUnknown_08596B6C[] =
+{
+ gUnknown_08596B4C,
+};
+
+const struct SpriteTemplate gUnknown_08596B70 =
+{
+ .tileTag = ANIM_TAG_WATER_ORB,
+ .paletteTag = ANIM_TAG_WATER_ORB,
+ .oam = &gUnknown_08524A8C,
+ .anims = gUnknown_085950E0,
+ .images = NULL,
+ .affineAnims = gUnknown_08596B6C,
+ .callback = sub_8110B38,
+};
+
+const struct SpriteTemplate gUnknown_08596B88 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085954D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8110B38,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8596BA0 =
+{
+ .tileTag = ANIM_TAG_FLYING_DIRT,
+ .paletteTag = ANIM_TAG_FLYING_DIRT,
+ .oam = &gUnknown_08524934,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimDirtParticleAcrossScreen,
+};
+
+const struct Subsprite gUnknown_08596BB8[] =
+{
+ {.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 gUnknown_08596BC0[] =
+{
+ {ARRAY_COUNT(gUnknown_08596BB8), gUnknown_08596BB8},
+};
+
+const union AnimCmd gUnknown_08596BC8[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08596BD0[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08596BD8[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08596BE0[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08596BE8[] =
+{
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08596BF0[] =
+{
+ ANIMCMD_FRAME(80, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08596BF8[] =
+{
+ gUnknown_08596BC8,
+ gUnknown_08596BD0,
+};
+
+const union AnimCmd *const gUnknown_08596C00[] =
+{
+ gUnknown_08596BD8,
+ gUnknown_08596BE0,
+};
+
+const union AnimCmd *const gUnknown_08596C08[] =
+{
+ gUnknown_08596BE8,
+ gUnknown_08596BF0,
+};
+
+const struct SpriteTemplate gUnknown_08596C10 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08596BF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimRaiseSprite,
+};
+
+const struct SpriteTemplate gUnknown_08596C28 =
+{
+ .tileTag = ANIM_TAG_MUD_SAND,
+ .paletteTag = ANIM_TAG_MUD_SAND,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_811131C,
+};
+
+const struct SpriteTemplate gUnknown_08596C40 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_811131C,
+};
+
+const struct SpriteTemplate gUnknown_08596C58 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08596BF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8111388,
+};
+
+const union AffineAnimCmd gUnknown_08596C70[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -5, 5),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd gUnknown_08596C80[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 5, 5),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08596C90[] =
+{
+ gUnknown_08596C70,
+ gUnknown_08596C80,
+};
+
+const struct SpriteTemplate gUnknown_08596C98 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_08596BF8,
+ .images = NULL,
+ .affineAnims = gUnknown_08596C90,
+ .callback = sub_8111418,
+};
+
+const struct SpriteTemplate gUnknown_08596CB0 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_08596BF8,
+ .images = NULL,
+ .affineAnims = gUnknown_08596C90,
+ .callback = sub_8111444,
+};
+
+const struct SpriteTemplate gUnknown_08596CC8 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08596C08,
+ .images = NULL,
+ .affineAnims = gUnknown_08596C90,
+ .callback = AnimMoveTwisterParticle,
+};
+
+const struct SpriteTemplate gUnknown_08596CE0 =
+{
+ .tileTag = ANIM_TAG_ROCKS,
+ .paletteTag = ANIM_TAG_ROCKS,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_08596C00,
+ .images = NULL,
+ .affineAnims = gUnknown_08596C90,
+ .callback = sub_80A8EE4,
+};
+
+void sub_81109F0(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[3] != 0)
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += 14;
+
+ StartSpriteAnim(sprite, gBattleAnimArgs[1]);
+ AnimateSprite(sprite);
+
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = 4;
+ sprite->data[3] = 16;
+ sprite->data[4] = -70;
+ sprite->data[5] = gBattleAnimArgs[2];
+
+ StoreSpriteCallbackInData6(sprite, sub_8110A70);
+ sprite->callback = sub_80A6450;
+ sprite->callback(sprite);
+}
+
+static void sub_8110A70(struct Sprite *sprite)
+{
+ sprite->pos1.x += sprite->data[5];
+
+ sprite->data[0] = 192;
+ sprite->data[1] = sprite->data[5];
+ sprite->data[2] = 4;
+ sprite->data[3] = 32;
+ sprite->data[4] = -24;
+
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80A6450;
+ sprite->callback(sprite);
+}
+
+void sub_8110AB4(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gBattleAnimArgs[5]);
+ AnimateSprite(sprite);
+
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
+
+ InitSpriteDataForLinearTranslation(sprite);
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+
+ sprite->callback = sub_80A656C;
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+}
+
+void sub_8110B38(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[6] == 0)
+ InitAnimSpritePos(sprite, 0);
+ else
+ sub_80A6980(sprite, FALSE);
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[4];
+ sprite->data[3] = gBattleAnimArgs[5];
+
+ sprite->callback = sub_8110B80;
+}
+
+static void sub_8110B80(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[1];
+ sprite->pos2.y = -(sprite->data[4] >> 8);
+ sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]);
+ sprite->data[5] = (sprite->data[5] + sprite->data[2]) & 0xFF;
+
+ if (--sprite->data[0] == -1)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void AnimTask_LoadSandstormBackground(u8 taskId)
+{
+ int var0;
+ struct UnknownAnimStruct2 unknownStruct;
+
+ var0 = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 0);
+
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
+
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
+ SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
+
+ sub_80A6B30(&unknownStruct);
+ sub_80A6CC0(unknownStruct.bgId, gUnknown_08D8D58C, unknownStruct.tilesOffset);
+ sub_80A6D60(&unknownStruct, gUnknown_08D8D410, 0);
+ LoadCompressedPalette(&gBattleAnimSpritePalette_261, unknownStruct.unk8 * 16, 32);
+
+ if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ var0 = 1;
+
+ gTasks[taskId].data[0] = var0;
+ gTasks[taskId].func = sub_8110CB0;
+}
+
+static void sub_8110CB0(u8 taskId)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+
+ if (gTasks[taskId].data[0] == 0)
+ gBattle_BG1_X += -6;
+ else
+ gBattle_BG1_X += 6;
+
+ gBattle_BG1_Y += -1;
+
+ switch (gTasks[taskId].data[12])
+ {
+ case 0:
+ if (++gTasks[taskId].data[10] == 4)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
+ if (gTasks[taskId].data[11] == 7)
+ {
+ gTasks[taskId].data[12]++;
+ gTasks[taskId].data[11] = 0;
+ }
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[11] == 101)
+ {
+ gTasks[taskId].data[11] = 7;
+ gTasks[taskId].data[12]++;
+ }
+ break;
+ case 2:
+ if (++gTasks[taskId].data[10] == 4)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11]--;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11]));
+ if (gTasks[taskId].data[11] == 0)
+ {
+ gTasks[taskId].data[12]++;
+ gTasks[taskId].data[11] = 0;
+ }
+ }
+ break;
+ case 3:
+ sub_80A6B30(&unknownStruct);
+ sub_80A6C68(unknownStruct.bgId);
+ gTasks[taskId].data[12]++;
+ break;
+ case 4:
+ if (!IsContest())
+ SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
+
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+// Animates the sprites that fly diagonally across the screen
+// in Sandstorm and Heat Wave.
+// arg 0: initial y pixel offset
+// arg 1: projectile speed
+// arg 2: y pixel drop
+// arg 3: ??? unknown (possibly a color bit)
+void AnimDirtParticleAcrossScreen(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ if (gBattleAnimArgs[3] != 0 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x = 304;
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ sprite->data[5] = 1;
+ sprite->oam.matrixNum = 8;
+ }
+ else
+ {
+ sprite->pos1.x = -64;
+ }
+
+ sprite->pos1.y = gBattleAnimArgs[0];
+ SetSubspriteTables(sprite, gUnknown_08596BC0);
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[2];
+ sprite->data[0]++;
+ }
+ else
+ {
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x += (sprite->data[3] >> 8);
+ sprite->pos2.y += (sprite->data[4] >> 8);
+ sprite->data[3] &= 0xFF;
+ sprite->data[4] &= 0xFF;
+
+ if (sprite->data[5] == 0)
+ {
+ if (sprite->pos1.x + sprite->pos2.x > 272)
+ {
+ sprite->callback = DestroyAnimSprite;
+ }
+ }
+ else if (sprite->pos1.x + sprite->pos2.x < -32)
+ {
+ sprite->callback = DestroyAnimSprite;
+ }
+ }
+}
+
+// Animates the rising rocks in Ancient Power.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: terminal y offset
+// arg 3: duration
+// arg 4: sprite size [1,5]
+void AnimRaiseSprite(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gBattleAnimArgs[4]);
+ InitAnimSpritePos(sprite, 0);
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[2] = sprite->pos1.x;
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2];
+
+ sprite->callback = StartAnimLinearTranslation;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_8110F74(u8 taskId)
+{
+ u16 var0, var1, var2, var3;
+ u8 var4;
+ int var5;
+ s16 pan1, pan2;
+ struct Task *task;
+
+ task = &gTasks[taskId];
+
+ var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 24;
+ var2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ var3 = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 24;
+
+ if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget)
+ var3 = var1;
+
+ var4 = sub_811135C();
+ if (var4 == 1)
+ task->data[8] = 32;
+ else
+ task->data[8] = 48 - (var4 * 8);
+
+ task->data[0] = 0;
+ task->data[11] = 0;
+ task->data[9] = 0;
+ task->data[12] = 1;
+
+ var5 = task->data[8];
+ if (var5 < 0)
+ var5 += 7;
+
+ task->data[10] = (var5 >> 3) - 1;
+
+ task->data[2] = var0 * 8;
+ task->data[3] = var1 * 8;
+ task->data[4] = ((var2 - var0) * 8) / task->data[8];
+ task->data[5] = ((var3 - var1) * 8) / task->data[8];
+ task->data[6] = 0;
+ task->data[7] = 0;
+
+ pan1 = BattleAnimAdjustPanning(-64);
+ pan2 = BattleAnimAdjustPanning(63);
+
+ task->data[13] = pan1;
+ task->data[14] = (pan2 - pan1) / task->data[8];
+ task->data[1] = var4;
+ task->data[15] = GetAnimBattlerSpriteId(0);
+
+ task->func = sub_81110A4;
+}
+
+void sub_81110A4(u8 taskId)
+{
+ struct Task *task;
+
+ task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[6] -= task->data[4];
+ task->data[7] -= task->data[5];
+ gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
+ gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
+
+ if (++task->data[9] == 10)
+ {
+ task->data[11] = 20;
+ task->data[0]++;
+ }
+
+ PlaySE12WithPanning(SE_W029, task->data[13]);
+ break;
+ case 1:
+ if (--task->data[11] == 0)
+ task->data[0]++;
+ break;
+ case 2:
+ if (--task->data[9] != 0)
+ {
+ task->data[6] += task->data[4];
+ task->data[7] += task->data[5];
+ }
+ else
+ {
+ task->data[6] = 0;
+ task->data[7] = 0;
+ task->data[0]++;
+ }
+
+ gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
+ gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
+ break;
+ case 3:
+ task->data[2] += task->data[4];
+ task->data[3] += task->data[5];
+ if (++task->data[9] >= task->data[10])
+ {
+ task->data[9] = 0;
+ sub_8111214(task);
+ task->data[13] += task->data[14];
+ PlaySE12WithPanning(SE_W091, task->data[13]);
+ }
+
+ if (--task->data[8] == 0)
+ {
+ task->data[0]++;
+ }
+ break;
+ case 4:
+ if (task->data[11] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_8111214(struct Task *task)
+{
+ const struct SpriteTemplate *spriteTemplate;
+ int var0;
+ u16 x, y;
+ u8 spriteId;
+
+ switch (task->data[1])
+ {
+ case 1:
+ spriteTemplate = &gUnknown_08596C28;
+ var0 = 0;
+ break;
+ case 2:
+ case 3:
+ spriteTemplate = &gUnknown_08596C40;
+ var0 = 80;
+ break;
+ case 4:
+ spriteTemplate = &gUnknown_08596C40;
+ var0 = 64;
+ break;
+ case 5:
+ spriteTemplate = &gUnknown_08596C40;
+ var0 = 48;
+ break;
+ default:
+ return;
+ }
+
+ x = task->data[2] >> 3;
+ y = task->data[3] >> 3;
+ x += (task->data[12] * 4);
+
+ spriteId = CreateSprite(spriteTemplate, x, y, 35);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = 18;
+ gSprites[spriteId].data[2] = ((task->data[12] * 20) + x) + (task->data[1] * 3);
+ gSprites[spriteId].data[4] = y;
+ gSprites[spriteId].data[5] = -16 - (task->data[1] * 2);
+ gSprites[spriteId].oam.tileNum += var0;
+
+ InitAnimArcTranslation(&gSprites[spriteId]);
+ task->data[11]++;
+ }
+
+ task->data[12] *= -1;
+}
+
+void sub_811131C(struct Sprite *sprite)
+{
+ if (TranslateAnimArc(sprite))
+ {
+ u8 taskId = FindTaskIdByFunc(sub_81110A4);
+ if (taskId != 0xFF)
+ gTasks[taskId].data[11]--;
+
+ DestroySprite(sprite);
+ }
+}
+
+static u8 sub_811135C(void)
+{
+ u8 retVal = gAnimDisableStructPtr->rolloutTimerStartValue - gAnimDisableStructPtr->rolloutTimer;
+ u8 var0 = retVal - 1;
+ if (var0 > 4)
+ retVal = 1;
+
+ return retVal;
+}
+
+void sub_8111388(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gBattleAnimArgs[4]);
+
+ sprite->pos2.x = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[3] -= gBattleAnimArgs[2];
+ sprite->data[0] = 3;
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->callback = sub_81113C8;
+ sprite->invisible = 1;
+}
+
+static void sub_81113C8(struct Sprite *sprite)
+{
+ sprite->invisible = 0;
+ if (sprite->data[3] != 0)
+ {
+ sprite->pos2.y = sprite->data[2] + sprite->data[3];
+ sprite->data[3] += sprite->data[0];
+ sprite->data[0]++;
+ if (sprite->data[3] > 0)
+ {
+ sprite->data[3] = 0;
+ }
+ }
+ else
+ {
+ if (--sprite->data[1] == 0)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_8111418(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
+ StartSpriteAffineAnim(sprite, 1);
+
+ TranslateAnimSpriteToTargetMonLocation(sprite);
+}
+
+void sub_8111444(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[5] = gBattleAnimArgs[2];
+
+ StartSpriteAnim(sprite, gBattleAnimArgs[3]);
+ sprite->callback = sub_811149C;
+}
+
+static void sub_811149C(struct Sprite *sprite)
+{
+ sprite->data[0] += 8;
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+
+ sprite->pos2.x += sprite->data[3] / 40;
+ sprite->pos2.y -= Sin(sprite->data[0], sprite->data[5]);
+
+ if (sprite->data[0] > 140)
+ DestroyAnimSprite(sprite);
+}
+
+void AnimTask_GetSeismicTossDamageLevel(u8 taskId)
+{
+ if (gAnimMoveDmg < 33)
+ gBattleAnimArgs[7] = 0;
+ if ((u32)gAnimMoveDmg - 33 < 33)
+ gBattleAnimArgs[7] = 1;
+ if (gAnimMoveDmg > 65)
+ gBattleAnimArgs[7] = 2;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_811152C(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_80A6DAC(0);
+ gTasks[taskId].data[1] = 200;
+ }
+
+ gBattle_BG3_Y += gTasks[taskId].data[1] / 10;
+ gTasks[taskId].data[1] -= 3;
+
+ if (gTasks[taskId].data[0] == 120)
+ {
+ sub_80A6DAC(1);
+ DestroyAnimVisualTask(taskId);
+ }
+
+ gTasks[taskId].data[0]++;
+}
+
+void sub_8111590(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_80A6DAC(0);
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[2] = gBattle_BG3_Y;
+ }
+
+ gTasks[taskId].data[1] += 80;
+ gTasks[taskId].data[1] &= 0xFF;
+ gBattle_BG3_Y = gTasks[taskId].data[2] + Cos(4, gTasks[taskId].data[1]);
+
+ if (gBattleAnimArgs[7] == 0xFFF)
+ {
+ gBattle_BG3_Y = 0;
+ sub_80A6DAC(1);
+ DestroyAnimVisualTask(taskId);
+ }
+}
diff --git a/src/rom6.c b/src/rom6.c
index cc146fc94..8043730d2 100644
--- a/src/rom6.c
+++ b/src/rom6.c
@@ -1,21 +1,23 @@
#include "global.h"
-#include "constants/event_objects.h"
-#include "constants/songs.h"
-#include "rom6.h"
#include "braille_puzzles.h"
#include "event_data.h"
+#include "event_object_movement.h"
#include "event_scripts.h"
#include "field_effect.h"
-#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "item_use.h"
-#include "party_menu.h"
#include "overworld.h"
+#include "party_menu.h"
+#include "rom6.h"
#include "script.h"
#include "sound.h"
#include "sprite.h"
#include "task.h"
+#include "constants/event_object_movement_constants.h"
+#include "constants/event_objects.h"
+#include "constants/field_effects.h"
#include "constants/map_types.h"
+#include "constants/songs.h"
// static functions
static void task08_080C9820(u8 taskId);
@@ -31,14 +33,14 @@ static void sub_8135780(void);
extern struct MapPosition gPlayerFacingPosition;
// text
-bool8 CheckObjectGraphicsInFrontOfPlayer(u8 a)
+bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId)
{
u8 eventObjId;
GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
gPlayerFacingPosition.height = PlayerGetZCoord();
eventObjId = GetEventObjectIdByXYZ(gPlayerFacingPosition.x, gPlayerFacingPosition.y, gPlayerFacingPosition.height);
- if (gEventObjects[eventObjId].graphicsId != a)
+ if (gEventObjects[eventObjId].graphicsId != graphicsId)
{
return FALSE;
}
@@ -73,7 +75,7 @@ static void task08_080C9820(u8 taskId)
else
{
sub_808C114();
- EventObjectSetHeldMovement(&gEventObjects[eventObjId], 0x39);
+ EventObjectSetHeldMovement(&gEventObjects[eventObjId], MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
gTasks[taskId].func = sub_813552C;
}
}
@@ -90,7 +92,7 @@ static void sub_813552C(u8 taskId)
static void sub_8135578(u8 taskId)
{
- if (!FieldEffectActiveListContains(6))
+ if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
gFieldEffectArguments[1] = GetPlayerFacingDirection();
if (gFieldEffectArguments[1] == 1)
@@ -189,7 +191,7 @@ bool8 FldEff_UseDig(void)
gTasks[taskId].data[8] = (u32)sub_8135780 >> 16;
gTasks[taskId].data[9] = (u32)sub_8135780;
if (!ShouldDoBrailleDigEffect())
- SetPlayerAvatarTransitionFlags(1);
+ SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
return FALSE;
}
diff --git a/src/rom_8011DC0.c b/src/rom_8011DC0.c
index bf16a20fc..a197598de 100644
--- a/src/rom_8011DC0.c
+++ b/src/rom_8011DC0.c
@@ -39,7 +39,7 @@ extern void HealPlayerParty(void);
struct UnkStruct_Shared
{
struct UnkLinkRfuStruct_02022B14 field_0;
- u8 needingPadding[3];
+ u8 needingPadding[2];
u8 playerName[PLAYER_NAME_LENGTH + 1];
};
@@ -63,7 +63,7 @@ struct UnkStruct_x20
struct UnkStruct_Main0
{
- struct UnkStruct_x20 arr[5];
+ struct UnkStruct_x20 arr[8];
};
struct UnkStruct_Main4
@@ -153,9 +153,7 @@ struct UnkStruct_URoom
u16 field_4C[6];
u8 field_58[0x98 - 0x58];
u16 field_98;
- u16 field_9A;
- u16 field_9C;
- u16 field_9E;
+ u16 field_9A[3];
struct UnkStruct_8019BA8 field_A0[8];
};
@@ -182,17 +180,18 @@ struct TradeUnkStruct
};
extern struct TradeUnkStruct gUnknown_02022C40;
-
+extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38;
extern union UnkUnion_Main gUnknown_02022C30;
-
extern u8 gUnknown_02022C2C;
extern u8 gUnknown_02022C2D;
extern u8 gUnknown_02022C3E;
extern u16 gUnknown_02022C3C;
-extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38;
-
+extern u8 gUnknown_02022C20[];
extern u8 gFieldLinkPlayerCount;
extern u8 gUnknown_03005DB4;
+extern u8 gSelectedOrderFromParty[];
+extern struct MailStruct gUnknown_020321C0[PARTY_SIZE];
+extern u8 gUnknown_02032298[2];
// IWRAM vars
IWRAM_DATA struct UnkStruct_Leader *gUnknown_03000DA0;
@@ -212,7 +211,7 @@ void sub_8014F48(u8 taskId);
void sub_80152F4(u8 taskId);
void sub_80156E0(u8 taskId);
void sub_80175EC(struct UnkStruct_Main4 *arg0, u8 count);
-void sub_8017580(struct UnkStruct_Main0 *arg0, u8 count);
+void sub_8017580(struct UnkStruct_x20 *arg0, u8 count);
u8 sub_8016FC0(struct UnkStruct_Main4 *arg0, u32 arg1);
u8 sub_8016FF0(struct UnkStruct_Main4 *arg0, u32 arg1);
bool8 PrintOnTextbox(u8 *textState, const u8 *str);
@@ -265,7 +264,7 @@ void sub_801689C(struct UnkStruct_URoom *arg0);
u8 sub_80181DC(struct UnkStruct_URoom *arg0);
bool32 sub_80168DC(struct UnkStruct_URoom *arg0);
bool32 sub_801704C(void);
-u32 sub_8017CF8(u32 arg1, struct UnkStruct_Main0 *arg0);
+s32 sub_8017CF8(s32 arg1, struct UnkStruct_Main0 *arg0);
s32 sub_80179D4(struct UnkStruct_Main0 *arg0, u8 arg1, u8 arg2, u32 playerGender);
void sub_801818C(bool32 arg0);
void sub_801A3D0(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2);
@@ -282,7 +281,10 @@ void sub_8019E3C(void);
void sub_80173B0(void);
s32 sub_8017D04(u32 type, u32 species);
void sub_8017020(const u8 *src);
-void sub_8019BA8();
+void sub_8019BA8(void *);
+s32 sub_8017EA0(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom *arg3);
+void sub_801697C(u8 taskId);
+bool8 sub_8017630(struct UnkStruct_Shared* arg0, const struct UnkStruct_Shared* arg1);
// const rom data
extern const u8 *const gUnknown_082EDB60[][5];
@@ -376,7 +378,9 @@ extern const u8 *const gUnknown_082EE82C[][4];
extern const u8 *const gUnknown_082EE24C[][2];
-extern const struct UnkStruct_Shared gUnknown_082F045C[];
+extern const struct UnkStruct_Shared gUnknown_082F045C;
+
+extern const u8 *const gUnknown_082F04D8[22];
// code
void nullsub_89(void)
@@ -484,7 +488,7 @@ void sub_8012780(u8 taskId)
data->field_0 = AllocZeroed(0xA0);
data->field_8 = AllocZeroed(0xA0);
sub_80175EC(data->field_4, 4);
- sub_8017580(data->field_0, 5);
+ sub_8017580(data->field_0->arr, 5);
sub_800DF90(&data->field_0->arr[0].unk.field_0, data->field_0->arr[0].unk.playerName);
data->field_0->arr[0].field_18 = 0;
data->field_0->arr[0].field_1A_0 = 1;
@@ -1008,7 +1012,7 @@ u8 sub_8013398(struct UnkStruct_Main0 *arg0)
ret = copiedCount;
for (; copiedCount < 5; copiedCount++)
{
- data->field_0->arr[copiedCount].unk = gUnknown_082F045C[0];
+ data->field_0->arr[copiedCount].unk = gUnknown_082F045C;
data->field_0->arr[copiedCount].field_18 = 0;
data->field_0->arr[copiedCount].field_1A_0 = 0;
data->field_0->arr[copiedCount].field_1A_1 = 0;
@@ -1068,7 +1072,7 @@ void sub_80134E8(u8 taskId)
break;
case 2:
sub_80175EC(data->field_4, 4);
- sub_8017580(data->field_0, 16);
+ sub_8017580(data->field_0->arr, 16);
data->field_11 = sub_8016FC0(data->field_4, gSpecialVar_0x8004);
data->field_C = AddWindow(&gUnknown_082F00BC);
data->listWindowId = AddWindow(&gUnknown_082F0174);
@@ -1370,7 +1374,7 @@ void sub_8013C7C(u8 taskId)
break;
case 2:
sub_80175EC(data->field_4, 4);
- sub_8017580(data->field_0, 16);
+ sub_8017580(data->field_0->arr, 16);
data->field_11 = sub_8016FC0(data->field_4, 0xFF);
data->field_F = 0;
data->state = 3;
@@ -1395,8 +1399,6 @@ void sub_8013C7C(u8 taskId)
}
}
-extern const u8 *const gUnknown_082F04D8[22];
-
bool32 sub_8013D88(u32 arg0, u32 id)
{
if (id == 0xFF)
@@ -1518,9 +1520,6 @@ u8 sub_8013F78(void)
return taskId;
}
-extern struct MailStruct gUnknown_020321C0[PARTY_SIZE];
-extern u8 gUnknown_02032298[2];
-
void sub_8013F90(u8 taskId)
{
u32 monId = sub_8018120(&gUnknown_02022C40, GetMultiplayerId());
@@ -1784,8 +1783,6 @@ void sub_801440C(u8 taskId)
ScriptContext2_Disable();
}
-extern u8 gUnknown_0203CEF8[];
-
void sub_8014790(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -1802,8 +1799,8 @@ void sub_8014790(u8 taskId)
gLinkPlayers[0].linkType = 0x2211;
gLinkPlayers[0].id = 0;
gLinkPlayers[1].id = 2;
- sendBuff[0] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[0] - 1], MON_DATA_SPECIES);
- sendBuff[1] = GetMonData(&gPlayerParty[gUnknown_0203CEF8[1] - 1], MON_DATA_SPECIES, NULL);
+ sendBuff[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES);
+ sendBuff[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
gMain.savedCallback = NULL;
data[0] = 4;
sub_800E3A8();
@@ -1934,7 +1931,7 @@ void sub_8014A40(u8 taskId)
data->field_0 = AllocZeroed(0xA0);
data->field_8 = AllocZeroed(0xA0);
sub_80175EC(data->field_4, 4);
- sub_8017580(data->field_0, 5);
+ sub_8017580(data->field_0->arr, 5);
sub_800DF90(&data->field_0->arr[0].unk.field_0, data->field_0->arr[0].unk.playerName);
data->field_0->arr[0].field_18 = 0;
data->field_0->arr[0].field_1A_0 = 1;
@@ -2143,7 +2140,7 @@ void sub_8014F48(u8 taskId)
break;
case 2:
sub_80175EC(data->field_4, 4);
- sub_8017580(data->field_0, 16);
+ sub_8017580(data->field_0->arr, 16);
data->field_11 = sub_8016FC0(data->field_4, data->field_12 + 7);
winTemplate1 = gUnknown_082F0174;
@@ -2312,7 +2309,7 @@ void sub_80152F4(u8 taskId)
break;
case 2:
sub_80175EC(data->field_4, 4);
- sub_8017580(data->field_0, 16);
+ sub_8017580(data->field_0->arr, 16);
data->field_11 = sub_8016FF0(data->field_4, data->field_12 + 7);
if (data->field_13 != 0)
@@ -2510,13 +2507,11 @@ void sub_80156C8(struct UnkStruct_URoom *data)
memcpy(data->field_0, &gDecompressionBuffer[0x3F00], 0x100);
}
-// Cannot match, please fix later.
-/*
void sub_80156E0(u8 taskId)
{
u32 id = 0;
s32 var5 = 0;
- u32 playerGender = 0;
+ s32 playerGender = 0;
struct UnkStruct_URoom *data = gUnknown_02022C30.uRoom;
s16 *taskData = gTasks[taskId].data;
@@ -2527,7 +2522,7 @@ void sub_80156E0(u8 taskId)
data->field_C = AllocZeroed(0x70);
data->field_0 = AllocZeroed(0x100);
data->field_8 = AllocZeroed(0x20);
- sub_8017580(data->field_0, 8);
+ sub_8017580(data->field_0->arr, 8);
gUnknown_02022C2C = 0x40;
data->field_20 = sub_8016DF0(data->field_C, data->field_4, 9);
sub_8019BA8(data->field_A0);
@@ -2545,7 +2540,7 @@ void sub_80156E0(u8 taskId)
sub_800B488();
OpenLink();
sub_8011C84();
- sub_8017580(data->field_8, 1);
+ sub_8017580(&data->field_8->arr[0], 1);
sub_80175EC(data->field_4, 4);
sub_80175EC(data->field_C, 4);
gSpecialVar_Result = 0;
@@ -2679,7 +2674,7 @@ void sub_80156E0(u8 taskId)
break;
case 1:
sub_8012188(data->field_0->arr[taskData[1]].unk.playerName, &data->field_0->arr[taskData[1]].unk.field_0, gUnknown_02022C2C);
- data->field_12 = id;
+ data->field_12 = id; // Should be just 0, but won't match any other way.
data->state = 25;
break;
case 2:
@@ -2730,6 +2725,11 @@ void sub_80156E0(u8 taskId)
data->state = 2;
}
break;
+ case 5:
+ id = sub_80179AC(&data->field_0->arr[taskData[1]]);
+ playerGender = sub_8017CF8(taskData[1], data->field_0);
+ sub_8015664(6, gUnknown_082EE24C[id][playerGender]);
+ break;
case 6:
var5 = sub_8017178(&data->textState, &data->field_1B, &data->field_1C, &gUnknown_082F021C, &gUnknown_082F0244);
if (var5 != -1)
@@ -2742,16 +2742,15 @@ void sub_80156E0(u8 taskId)
{
data->field_98 = 0;
playerGender = sub_8017CF8(taskData[1], data->field_0);
- switch (var5)
+ if (var5 == -2 || var5 == 0x40)
{
- case -2:
- case 0x40:
data->field_4C[0] = 0x40;
sub_800FE50(data->field_4C);
StringCopy(gStringVar4, gUnknown_082EEB80[gLinkPlayers[0].gender]);
data->state = 32;
- break;
- default:
+ }
+ else
+ {
gUnknown_02022C2C = var5;
gUnknown_02022C2D = (u32)(var5) >> 8;
if (gUnknown_02022C2C == 0x41 && !sub_8018024())
@@ -2764,7 +2763,6 @@ void sub_80156E0(u8 taskId)
sub_800FE50(data->field_4C);
data->state = 27;
}
- break;
}
}
}
@@ -2823,7 +2821,7 @@ void sub_80156E0(u8 taskId)
}
}
break;
- case 5:
+
case 7:
id = sub_80179AC(&data->field_0->arr[taskData[1]]);
playerGender = sub_8017CF8(taskData[1], data->field_0);
@@ -2835,7 +2833,7 @@ void sub_80156E0(u8 taskId)
data->state = 41;
sub_800ADF8();
data->field_98 = 0;
- data->field_9A = 0;
+ data->field_9A[0] = 0;
}
break;
case 41:
@@ -2919,7 +2917,7 @@ void sub_80156E0(u8 taskId)
PlaySE(SE_PINPON);
sub_800EF7C();
data->state = 12;
- data->field_9A = 0;
+ data->field_9A[0] = 0;
break;
case 12:
if (sub_8011A80())
@@ -3019,7 +3017,7 @@ void sub_80156E0(u8 taskId)
gUnknown_02022C2C = 0x40;
sub_8015664(0x25, gStringVar4);
memset(data->field_4C, 0, sizeof(data->field_4C));
- data->field_9A = 0;
+ data->field_9A[0] = 0;
data->field_98 = 0;
}
break;
@@ -3262,4 +3260,247 @@ void var_800D_set_xB(void)
gSpecialVar_Result = 11;
}
+void sub_801689C(struct UnkStruct_URoom *arg0)
+{
+ if (gRecvCmds[1][1] != 0 && (gRecvCmds[1][0] & 0xFF00) == 0x2F00)
+ {
+ arg0->field_9A[0] = gRecvCmds[1][1];
+ if (gRecvCmds[1][1] == 0x44)
+ {
+ arg0->field_9A[1] = gRecvCmds[1][2];
+ arg0->field_9A[2] = gRecvCmds[1][3];
+ }
+ }
+}
+
+bool32 sub_80168DC(struct UnkStruct_URoom *arg0)
+{
+ if (arg0->field_9A[0] != 0)
+ {
+ s32 var = sub_8017EA0(gStringVar4, gLinkPlayers[1].gender, &arg0->field_9A[0], arg0);
+ if (var == 0)
+ {
+ return TRUE;
+ }
+ else if (var == 1)
+ {
+ arg0->state = 35;
+ gUnknown_02022C2C = arg0->field_9A[0];
+ return FALSE;
+ }
+ else if (var == 2)
+ {
+ arg0->state = 36;
+ sub_800AC34();
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+void sub_8016934(void)
+{
+ struct UnkStruct_URoom *ptr;
+
+ gUnknown_02022C20[0] = EOS;
+ CreateTask(sub_801697C, 0);
+ gUnknown_02022C30.uRoom = gUnknown_02022C30.uRoom; // Needed to match.
+ gUnknown_02022C30.uRoom = ptr = AllocZeroed(0x26C);
+ gUnknown_03000DA8 = gUnknown_02022C30.uRoom;
+ ptr->state = 0;
+ ptr->textState = 0;
+ ptr->field_10 = 0;
+ ptr->field_12 = 0;
+ gUnknown_02022C20[0] = EOS;
+}
+
+void sub_801697C(u8 taskId)
+{
+ s32 i;
+ u8 text[32];
+ struct UnkStruct_URoom *structPtr = gUnknown_02022C30.uRoom;
+
+ switch (structPtr->state)
+ {
+ case 0:
+ structPtr->state = 1;
+ break;
+ case 1:
+ sub_8010F84(0xC, 0, 0);
+ sub_800B488();
+ OpenLink();
+ sub_8011C84();
+ sub_80111B0(1);
+ structPtr->state = 2;
+ break;
+ case 2:
+ structPtr->field_4 = AllocZeroed(0x70);
+ sub_80175EC(structPtr->field_4, 4);
+ structPtr->field_C = AllocZeroed(0x70);
+ sub_80175EC(structPtr->field_C, 4);
+ structPtr->field_0 = AllocZeroed(0x100);
+ sub_8017580(structPtr->field_0->arr, 8);
+ structPtr->field_8 = AllocZeroed(0x20);
+ sub_8017580(&structPtr->field_8->arr[0], 1);
+ structPtr->field_20 = sub_8016DF0(structPtr->field_C, structPtr->field_4, 10);
+ structPtr->state = 3;
+ break;
+ case 3:
+ switch (sub_8016B00())
+ {
+ case 1:
+ case 2:
+ if (gUnknown_02022C20[0] == EOS)
+ {
+ for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
+ {
+ if (structPtr->field_0->arr[i].field_1A_0 == 1)
+ {
+ sub_8018404(text, &structPtr->field_0->arr[i]);
+ if (sub_800E540(ReadAsU16(structPtr->field_0->arr[i].unk.field_0.unk_00.playerTrainerId), text))
+ {
+ StringCopy(gUnknown_02022C20, text);
+ break;
+ }
+ }
+ }
+ }
+ break;
+ case 3:
+ break;
+ }
+ break;
+ case 4:
+ free(structPtr->field_8);
+ free(structPtr->field_0);
+ free(structPtr->field_C);
+ free(structPtr->field_4);
+ DestroyTask(structPtr->field_20);
+ free(gUnknown_02022C30.uRoom);
+ sub_800EDD4();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+bool16 sp182_move_string(void)
+{
+ if (gUnknown_02022C20[0] != EOS)
+ {
+ StringCopy(gStringVar1, gUnknown_02022C20);
+ gUnknown_02022C20[0] = EOS;
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+u8 sub_8016B00(void)
+{
+ s32 i;
+ u8 j;
+ struct UnkStruct_URoom *structPtr = gUnknown_02022C30.uRoom;
+ s32 r7 = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sub_8017630(&structPtr->field_C->arr[i].unk0, &gUnknown_082F045C) == TRUE)
+ {
+ structPtr->field_8->arr[0].unk = structPtr->field_C->arr[i].unk0;
+ structPtr->field_8->arr[0].field_18 = 0;
+ structPtr->field_8->arr[0].field_1A_0 = 1;
+ structPtr->field_8->arr[0].field_1B = 1;
+ return 4;
+ }
+ }
+ for (j = 0; j < 8; j++)
+ {
+ if (structPtr->field_0->arr[j].field_1A_0 != 0)
+ {
+ i = sub_80176E4(&structPtr->field_0->arr[j], &structPtr->field_4->arr[0]);
+ if (i != 0xFF)
+ {
+ if (structPtr->field_0->arr[j].field_1A_0 == 1)
+ {
+ if (sub_8017678(&structPtr->field_0->arr[j], &structPtr->field_4->arr[i]))
+ {
+ structPtr->field_0->arr[j].unk = structPtr->field_4->arr[i].unk0;
+ structPtr->field_0->arr[j].field_1B = 0x40;
+ r7 = 1;
+ }
+ else if (structPtr->field_0->arr[j].field_1B != 0)
+ {
+ structPtr->field_0->arr[j].field_1B--;
+ if (structPtr->field_0->arr[j].field_1B == 0)
+ r7 = 2;
+ }
+ }
+ else
+ {
+ structPtr->field_0->arr[j].field_1A_0 = 1;
+ structPtr->field_0->arr[j].field_1B = 0;
+ r7 = 2;
+ }
+ structPtr->field_0->arr[j].field_18 = 0;
+ }
+ else if (structPtr->field_0->arr[j].field_1A_0 != 2)
+ {
+ structPtr->field_0->arr[j].field_18++;
+ if (structPtr->field_0->arr[j].field_18 >= 600)
+ {
+ structPtr->field_0->arr[j].field_1A_0 = 2;
+ r7 = 2;
+ }
+ }
+ else if (structPtr->field_0->arr[j].field_1A_0 == 2)
+ {
+ structPtr->field_0->arr[j].field_18++;
+ if (structPtr->field_0->arr[j].field_18 >= 900)
+ {
+ sub_8017580(&structPtr->field_0->arr[j], 1);
+ }
+ }
+ }
+ }
+ for (i = 0; i < 4; i++)
+ {
+ if (sub_8017734(&structPtr->field_0->arr[0], &structPtr->field_4->arr[i].unk0, 8) != 0xFF)
+ r7 = 1;
+ }
+
+ return r7;
+}
+
+/*
+void sub_8016CA0(u8 taskId)
+{
+ s32 i, j;
+ struct UnkLinkRfuStruct_02022B14 sp0;
+ u8 text[10];
+ struct UnkStruct_Main4 *ptr = (void*) gTasks[taskId].data;
+
+ for (i = 0; i < 4; i++)
+ {
+ j = sub_800DE7C(&sp0, text, i);
+ if (!sub_8013D88(sp0.unk_0a_0, gTasks[taskId].data[4]))
+ sp0 = gUnknown_082F045C.field_0;
+ if (sp0.unk_00.unk_00_0 == 1)
+ sp0 = gUnknown_082F045C.field_0;
+
+ if (!j)
+ {
+ for (j = 0; j < i; j++)
+ {
+ if (sub_8017630())
+ }
+ }
+ else
+ {
+
+ }
+ }
+}
*/
diff --git a/src/rom_8034C54.c b/src/rom_8034C54.c
index 1ef223c69..be6d6614a 100644
--- a/src/rom_8034C54.c
+++ b/src/rom_8034C54.c
@@ -31,8 +31,6 @@ struct UnkStruct1
struct UnkStruct2 *array;
};
-extern struct UnkStruct1 *gUnknown_02022E10;
-
extern const struct SpriteTemplate gUnknown_0831AC88;
// this file's functions
@@ -50,6 +48,9 @@ static IWRAM_DATA s32 gUnknown_03000DD4;
static IWRAM_DATA s32 gUnknown_03000DD8;
static IWRAM_DATA s32 gUnknown_03000DDC;
+// ewram
+static EWRAM_DATA struct UnkStruct1 *gUnknown_02022E10 = {0};
+
// const rom data
static const u8 gUnknown_082FF1C8[][4] =
{
diff --git a/src/rotating_gate.c b/src/rotating_gate.c
index fcced6c8c..f617321af 100644
--- a/src/rotating_gate.c
+++ b/src/rotating_gate.c
@@ -2,10 +2,11 @@
#include "bike.h"
#include "event_data.h"
#include "event_object_movement.h"
-#include "constants/maps.h"
-#include "constants/songs.h"
+#include "fieldmap.h"
#include "sound.h"
#include "sprite.h"
+#include "constants/maps.h"
+#include "constants/songs.h"
#define ROTATING_GATE_TILE_TAG 0x1300
#define ROTATING_GATE_PUZZLE_MAX 12
@@ -638,9 +639,7 @@ static s32 GetCurrentMapRotatingGatePuzzleType(void)
static void RotatingGate_ResetAllGateOrientations(void)
{
s32 i;
- u8 *ptr;
-
- ptr = (u8 *)GetVarPointer(VAR_TEMP_0);
+ u8 *ptr = (u8 *)GetVarPointer(VAR_TEMP_0);
for (i = 0; i < gRotatingGate_PuzzleCount; i++)
{
@@ -715,12 +714,10 @@ static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY)
s16 y = gSaveBlock1Ptr->pos.y - 2;
s16 y2 = gSaveBlock1Ptr->pos.y + 0xe;
- s16 x3, y3;
-
for (i = 0; i < gRotatingGate_PuzzleCount; i++)
{
- x3 = gRotatingGate_PuzzleConfig[i].x + 7;
- y3 = gRotatingGate_PuzzleConfig[i].y + 7;
+ s16 x3 = gRotatingGate_PuzzleConfig[i].x + 7;
+ s16 y3 = gRotatingGate_PuzzleConfig[i].y + 7;
if (y <= y3 && y2 >= y3 && x <= x3 && x2 >= x3 &&
gRotatingGate_GateSpriteIds[i] == MAX_SPRITES)
@@ -734,11 +731,10 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY)
{
struct Sprite *sprite;
struct SpriteTemplate template;
- const struct RotatingGatePuzzle *gate;
u8 spriteId;
s16 x, y;
- gate = &gRotatingGate_PuzzleConfig[gateId];
+ const struct RotatingGatePuzzle *gate = &gRotatingGate_PuzzleConfig[gateId];
if (gate->shape == GATE_SHAPE_L1 || gate->shape == GATE_SHAPE_T1)
template = sSpriteTemplate_RotatingGateRegular;
@@ -767,12 +763,9 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY)
static void SpriteCallback_RotatingGate(struct Sprite *sprite)
{
- u8 rotationDirection;
- u8 orientation;
u8 affineAnimation;
-
- rotationDirection = sprite->data[1];
- orientation = sprite->data[2];
+ u8 rotationDirection = sprite->data[1];
+ u8 orientation = sprite->data[2];
RotatingGate_HideGatesOutsideViewport(sprite);
@@ -802,10 +795,8 @@ static void SpriteCallback_RotatingGate(struct Sprite *sprite)
static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite)
{
- u16 x;
- s16 x2;
- u16 y;
- s16 y2;
+ u16 x, y;
+ s16 x2, y2;
sprite->invisible = FALSE;
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
@@ -830,35 +821,27 @@ static void LoadRotatingGatePics(void)
LoadSpriteSheets(sRotatingGatesGraphicsTable);
}
-/*
-static*/ void RotatingGate_DestroyGatesOutsideViewport(void)
+static void RotatingGate_DestroyGatesOutsideViewport(void)
{
- s16 x;
- s16 x2;
- s16 y;
- s16 y2;
- s16 xGate;
- s16 yGate;
s32 i;
- struct Sprite *sprite;
// Same as RotatingGate_CreateGatesWithinViewport
- x = gSaveBlock1Ptr->pos.x - 2;
- x2 = gSaveBlock1Ptr->pos.x + 0x11;
- y = gSaveBlock1Ptr->pos.y - 2;
- y2 = gSaveBlock1Ptr->pos.y + 0xe;
+ s16 x = gSaveBlock1Ptr->pos.x - 2;
+ s16 x2 = gSaveBlock1Ptr->pos.x + 0x11;
+ s16 y = gSaveBlock1Ptr->pos.y - 2;
+ s16 y2 = gSaveBlock1Ptr->pos.y + 0xe;
for (i = 0; i < gRotatingGate_PuzzleCount; i++)
{
- xGate = gRotatingGate_PuzzleConfig[i].x + 7;
- yGate = gRotatingGate_PuzzleConfig[i].y + 7;
+ s16 xGate = gRotatingGate_PuzzleConfig[i].x + 7;
+ s16 yGate = gRotatingGate_PuzzleConfig[i].y + 7;
if (gRotatingGate_GateSpriteIds[i] == MAX_SPRITES)
continue;
if (xGate < x || xGate > x2 || yGate < y || yGate > y2)
{
- sprite = &gSprites[gRotatingGate_GateSpriteIds[i]];
+ struct Sprite *sprite = &gSprites[gRotatingGate_GateSpriteIds[i]];
FreeSpriteOamMatrix(sprite);
DestroySprite(sprite);
gRotatingGate_GateSpriteIds[i] = MAX_SPRITES;
@@ -866,23 +849,13 @@ static*/ void RotatingGate_DestroyGatesOutsideViewport(void)
}
}
-
-#ifdef NONMATCHING
-bool8 MapGridIsImpassableAt(s32, s32); //fool the compiler
-
-static s32 RotatingGate_CanRotate(u8 gateId, s16 rotationDirection)
+static s32 RotatingGate_CanRotate(u8 gateId, s32 rotationDirection)
{
const struct Coords8 *armPos;
u8 orientation;
- s16 x;
- s16 y;
+ s16 x, y;
u8 shape;
- u32 shape8;
- s32 i;
- s32 j;
- s32 armOrientation;
- const u8 *gateArmCollisionData;
- u8 armIndex;
+ s32 i, j;
if (rotationDirection == ROTATE_ANTICLOCKWISE)
armPos = sRotatingGate_ArmPositionsAntiClockwiseRotation;
@@ -897,166 +870,40 @@ static s32 RotatingGate_CanRotate(u8 gateId, s16 rotationDirection)
x = gRotatingGate_PuzzleConfig[gateId].x + 7;
y = gRotatingGate_PuzzleConfig[gateId].y + 7;
-
// Loop through the gate's "arms" clockwise (north, south, east, west)
- for (i = GATE_ARM_NORTH, shape8 = shape* 4*2 ; i <= GATE_ARM_WEST; i++)
+ for (i = GATE_ARM_NORTH ; i <= GATE_ARM_WEST; i++)
{
// Ensure that no part of the arm collides with the map
- for (j = 0, armOrientation = orientation + i, gateArmCollisionData = (u8 *)((u32)sRotatingGate_ArmLayout + shape8 + 2*i); j < GATE_ARM_MAX_LENGTH; j++)
+ for (j = 0; j < GATE_ARM_MAX_LENGTH; j++)
{
- armIndex = 2 * (armOrientation % 4) + j;
+ u8 armIndex = 2 * ((orientation + i) % 4) + j;
- if (*gateArmCollisionData)
+ if (sRotatingGate_ArmLayout[shape][2 * i + j])
{
- if (MapGridIsImpassableAt(x + armPos[armIndex].deltaX, y + armPos[armIndex].deltaY) == TRUE)
+ if (MapGridIsImpassableAt(x + armPos[armIndex].x, y + armPos[armIndex].y) == TRUE)
return FALSE;
}
- gateArmCollisionData++;
}
}
return TRUE;
}
-#else
-NAKED
-static s32 RotatingGate_CanRotate(u8 a, s16 rotationDirection)
-{
- 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 _080FBCFC\n\
- ldr r0, =sRotatingGate_ArmPositionsAntiClockwiseRotation\n\
- mov r10, r0\n\
- b _080FBD08\n\
- .pool\n\
-_080FBCFC:\n\
- cmp r1, 0x2\n\
- beq _080FBD04\n\
-_080FBD00:\n\
- movs r0, 0\n\
- b _080FBD98\n\
-_080FBD04:\n\
- ldr r1, =sRotatingGate_ArmPositionsClockwiseRotation\n\
- mov r10, r1\n\
-_080FBD08:\n\
- adds r0, r4, 0\n\
- bl RotatingGate_GetGateOrientation\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp]\n\
- ldr r0, =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\
-_080FBD38:\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, =sRotatingGate_ArmLayout\n\
- adds r4, r0, r2\n\
-_080FBD4A:\n\
- adds r0, r5, 0\n\
- cmp r5, 0\n\
- bge _080FBD52\n\
- adds r0, r7, 0x3\n\
-_080FBD52:\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 _080FBD88\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 _080FBD00\n\
-_080FBD88:\n\
- adds r4, 0x1\n\
- adds r6, 0x1\n\
- cmp r6, 0x1\n\
- ble _080FBD4A\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _080FBD38\n\
- movs r0, 0x1\n\
-_080FBD98:\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\
- .pool\n\
-.syntax divided\n");
-}
-#endif
-
static s32 RotatingGate_HasArm(u8 gateId, u8 armInfo)
{
- s32 isLongArm;
- s8 armOrientation;
- s32 arm;
- s32 shape;
-
- arm = armInfo >> 1;
- isLongArm = armInfo & 1;
+ s32 arm = armInfo / 2;
+ s32 isLongArm = armInfo % 2;
- armOrientation = (arm - RotatingGate_GetGateOrientation(gateId) + 4) % 4;
- shape = gRotatingGate_PuzzleConfig[gateId].shape;
+ s8 armOrientation = (arm - RotatingGate_GetGateOrientation(gateId) + 4) % 4;
+ s32 shape = gRotatingGate_PuzzleConfig[gateId].shape;
return sRotatingGate_ArmLayout[shape][armOrientation * 2 + isLongArm];
}
static void RotatingGate_TriggerRotationAnimation(u8 gateId, s32 rotationDirection)
{
- struct Sprite *sprite;
-
if (gRotatingGate_GateSpriteIds[gateId] != MAX_SPRITES)
{
- sprite = &gSprites[gRotatingGate_GateSpriteIds[gateId]];
+ struct Sprite *sprite = &gSprites[gRotatingGate_GateSpriteIds[gateId]];
sprite->data[1] = rotationDirection;
sprite->data[2] = RotatingGate_GetGateOrientation(gateId);
}
@@ -1064,7 +911,7 @@ static void RotatingGate_TriggerRotationAnimation(u8 gateId, s32 rotationDirecti
static u8 RotatingGate_GetRotationInfo(u8 direction, s16 x, s16 y)
{
- register const u8 *ptr;
+ const u8 *ptr;
if (direction == DIR_NORTH)
ptr = sRotatingGate_RotationInfoNorth;
diff --git a/src/rtc.c b/src/rtc.c
index ca8b9567e..3f413d0e3 100644
--- a/src/rtc.c
+++ b/src/rtc.c
@@ -344,4 +344,3 @@ u16 RtcGetLocalDayCount(void)
{
return RtcGetDayCount(&sRtc);
}
-
diff --git a/src/safari_zone.c b/src/safari_zone.c
index 427a5ceb8..accf94981 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -1,11 +1,15 @@
#include "global.h"
-#include "safari_zone.h"
+#include "battle.h"
#include "event_data.h"
-#include "constants/game_stat.h"
+#include "field_player_avatar.h"
+#include "overworld.h"
#include "main.h"
-#include "battle.h"
-#include "string_util.h"
#include "pokeblock.h"
+#include "safari_zone.h"
+#include "script.h"
+#include "string_util.h"
+#include "tv.h"
+#include "constants/game_stat.h"
struct PokeblockFeeder
{
@@ -18,26 +22,12 @@ struct PokeblockFeeder
#define NUM_POKEBLOCK_FEEDERS 10
-extern u8 gBattleOutcome;
-extern void* gFieldCallback;
-
-extern u8 EventScript_2A4B8A[];
-extern u8 EventScript_2A4B6F[];
-extern u8 EventScript_2A4B4C[];
-extern u8 EventScript_2A4B9B[];
-
-extern void sub_80EE44C(u8, u8);
-extern void IncrementGameStat(u8 index);
-extern void ScriptContext1_SetupScript(u8*);
-extern void ScriptContext2_RunNewScript(u8*);
-extern void CB2_ReturnToField(void);
-extern void CB2_ReturnToFieldContinueScriptPlayMapMusic(void);
-extern void CB2_LoadMap(void);
+extern const u8 EventScript_2A4B8A[];
+extern const u8 EventScript_2A4B6F[];
+extern const u8 EventScript_2A4B4C[];
+extern const u8 EventScript_2A4B9B[];
+
extern void sub_80AF6F0(void);
-extern void ScriptContext1_Stop(void);
-extern void WarpIntoMap(void);
-extern void GetXYCoordsOneStepInFrontOfPlayer(s16* x, s16* y);
-extern void PlayerGetDestCoords(s16* x, s16* y);
EWRAM_DATA u8 gNumSafariBalls = 0;
EWRAM_DATA static u16 sSafariZoneStepCounter = 0;
diff --git a/src/save.c b/src/save.c
index 68427c4c3..4ae516fc9 100644
--- a/src/save.c
+++ b/src/save.c
@@ -1,15 +1,23 @@
#include "global.h"
#include "gba/flash_internal.h"
#include "save.h"
-#include "constants/game_stat.h"
#include "task.h"
#include "decompress.h"
#include "load_save.h"
#include "overworld.h"
+#include "main.h"
+#include "constants/game_stat.h"
+
+static u16 CalculateChecksum(void *data, u16 size);
+static u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section);
+static u8 GetSaveValidStatus(const struct SaveSectionLocation *location);
+static u8 sub_8152E10(u16 a1, const struct SaveSectionLocation *location);
+static u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location);
+static u8 TryWriteSector(u8 sector, u8 *data);
+static u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location);
// for the chunk declarations
-extern bool8 gSoftResetDisabled;
extern u32 gUnknown_0203CF5C;
// Divide save blocks into individual chunks to be written to flash sectors
@@ -24,7 +32,7 @@ extern u32 gUnknown_0203CF5C;
* Sectors 0 - 13: Save Slot 1
* Sectors 14 - 27: Save Slot 2
* Sectors 28 - 29: Hall of Fame
- * Sector 30: e-Reader/Mystery Gift Stuff (note: e-Reader is deprecated in Emerald US)
+ * Sector 30: Trainer Hill
* Sector 31: Recorded Battle
*
* There are two save slots for saving the player's game data. We alternate between
@@ -86,6 +94,7 @@ u16 gSaveUnusedVar2;
u16 gUnknown_03006294;
EWRAM_DATA struct SaveSection gSaveDataBuffer = {0};
+EWRAM_DATA static u8 sUnusedVar = 0;
void ClearSaveData(void)
{
@@ -105,7 +114,7 @@ void Save_ResetSaveCounters(void)
gDamagedSaveSectors = 0;
}
-bool32 SetDamagedSectorBits(u8 op, u8 bit)
+static bool32 SetDamagedSectorBits(u8 op, u8 bit)
{
bool32 retVal = FALSE;
@@ -126,7 +135,7 @@ bool32 SetDamagedSectorBits(u8 op, u8 bit)
return retVal;
}
-u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location)
+static u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location)
{
u32 retVal;
u16 i;
@@ -142,11 +151,11 @@ u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location)
gLastKnownGoodSector = gLastWrittenSector; // backup the current written sector before attempting to write.
gLastSaveCounter = gSaveCounter;
gLastWrittenSector++;
- gLastWrittenSector = gLastWrittenSector % 0xE; // array count save sector locations
+ gLastWrittenSector = gLastWrittenSector % SECTOR_SAVE_SLOT_LENGTH; // array count save sector locations
gSaveCounter++;
retVal = 1;
- for (i = 0; i < 0xE; i++)
+ for (i = 0; i < SECTOR_SAVE_SLOT_LENGTH; i++)
HandleWriteSector(i, location);
if (gDamagedSaveSectors != 0) // skip the damaged sector.
@@ -160,7 +169,7 @@ u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location)
return retVal;
}
-u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location)
+static u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location)
{
u16 i;
u16 sector;
@@ -168,8 +177,8 @@ u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location)
u16 size;
sector = a1 + gLastWrittenSector;
- sector %= 0xE;
- sector += 0xE * (gSaveCounter % 2);
+ sector %= SECTOR_SAVE_SLOT_LENGTH;
+ sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2);
data = location[a1].data;
size = location[a1].size;
@@ -189,7 +198,7 @@ u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location)
return TryWriteSector(sector, gFastSaveSection->data);
}
-u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size)
+static u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size)
{
u16 i;
struct SaveSection *section = &gSaveDataBuffer;
@@ -206,7 +215,7 @@ u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size)
return TryWriteSector(sector, section->data);
}
-u8 TryWriteSector(u8 sector, u8 *data)
+static u8 TryWriteSector(u8 sector, u8 *data)
{
if (ProgramFlashSectorAndVerify(sector, data) != 0) // is damaged?
{
@@ -220,20 +229,20 @@ u8 TryWriteSector(u8 sector, u8 *data)
}
}
-u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location) // location is unused
+static u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location) // location is unused
{
gFastSaveSection = &gSaveDataBuffer;
gLastKnownGoodSector = gLastWrittenSector;
gLastSaveCounter = gSaveCounter;
gLastWrittenSector++;
- gLastWrittenSector = gLastWrittenSector % 0xE;
+ gLastWrittenSector %= SECTOR_SAVE_SLOT_LENGTH;
gSaveCounter++;
gUnknown_03006208 = 0;
gDamagedSaveSectors = 0;
return 0;
}
-u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location) // only ever called once, and gSaveBlock2 is passed to this function. location is unused
+static u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location) // only ever called once, and gSaveBlock2 is passed to this function. location is unused
{
gFastSaveSection = &gSaveDataBuffer;
gLastKnownGoodSector = gLastWrittenSector;
@@ -243,7 +252,7 @@ u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location) // only ev
return 0;
}
-u8 sub_81529D4(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_81529D4(u16 a1, const struct SaveSectionLocation *location)
{
u8 retVal;
@@ -267,7 +276,7 @@ u8 sub_81529D4(u16 a1, const struct SaveSectionLocation *location)
return retVal;
}
-u8 sub_8152A34(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_8152A34(u16 a1, const struct SaveSectionLocation *location)
{
u8 retVal = 1;
@@ -282,7 +291,7 @@ u8 sub_8152A34(u16 a1, const struct SaveSectionLocation *location)
return retVal;
}
-u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location)
+static u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location)
{
u16 i;
u16 sector;
@@ -291,8 +300,8 @@ u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location)
u8 status;
sector = a1 + gLastWrittenSector;
- sector %= 0xE;
- sector += 0xE * (gSaveCounter % 2);
+ sector %= SECTOR_SAVE_SLOT_LENGTH;
+ sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2);
data = location[a1].data;
size = location[a1].size;
@@ -356,13 +365,13 @@ u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location)
}
}
-u8 sav12_xor_get(u16 a1, const struct SaveSectionLocation *location)
+static u8 sav12_xor_get(u16 a1, const struct SaveSectionLocation *location)
{
u16 sector;
sector = a1 + gLastWrittenSector; // no sub 1?
- sector %= 0xE;
- sector += 0xE * (gSaveCounter % 2);
+ sector %= SECTOR_SAVE_SLOT_LENGTH;
+ sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2);
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25))
{
@@ -379,13 +388,13 @@ u8 sav12_xor_get(u16 a1, const struct SaveSectionLocation *location)
}
}
-u8 sub_8152CAC(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_8152CAC(u16 a1, const struct SaveSectionLocation *location)
{
u16 sector;
sector = a1 + gLastWrittenSector - 1;
- sector %= 0xE;
- sector += 0xE * (gSaveCounter % 2);
+ sector %= SECTOR_SAVE_SLOT_LENGTH;
+ sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2);
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), ((u8 *)gFastSaveSection)[sizeof(struct UnkSaveSection)]))
{
@@ -402,13 +411,13 @@ u8 sub_8152CAC(u16 a1, const struct SaveSectionLocation *location)
}
}
-u8 sub_8152D44(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_8152D44(u16 a1, const struct SaveSectionLocation *location)
{
u16 sector;
sector = a1 + gLastWrittenSector - 1; // no sub 1?
- sector %= 0xE;
- sector += 0xE * (gSaveCounter % 2);
+ sector %= SECTOR_SAVE_SLOT_LENGTH;
+ sector += SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2);
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25))
{
@@ -425,7 +434,7 @@ u8 sub_8152D44(u16 a1, const struct SaveSectionLocation *location)
}
}
-u8 sub_8152DD0(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_8152DD0(u16 a1, const struct SaveSectionLocation *location)
{
u8 retVal;
gFastSaveSection = &gSaveDataBuffer;
@@ -442,14 +451,14 @@ u8 sub_8152DD0(u16 a1, const struct SaveSectionLocation *location)
return retVal;
}
-u8 sub_8152E10(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_8152E10(u16 a1, const struct SaveSectionLocation *location)
{
u16 i;
u16 checksum;
- u16 v3 = 0xE * (gSaveCounter % 2);
+ u16 v3 = SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2);
u16 id;
- for (i = 0; i < 0xE; i++)
+ for (i = 0; i < SECTOR_SAVE_SLOT_LENGTH; i++)
{
DoReadFlashWholeSection(i + v3, gFastSaveSection);
id = gFastSaveSection->id;
@@ -468,7 +477,7 @@ u8 sub_8152E10(u16 a1, const struct SaveSectionLocation *location)
return 1;
}
-u8 GetSaveValidStatus(const struct SaveSectionLocation *location)
+static u8 GetSaveValidStatus(const struct SaveSectionLocation *location)
{
u16 i;
u16 checksum;
@@ -480,7 +489,7 @@ u8 GetSaveValidStatus(const struct SaveSectionLocation *location)
u8 saveSlot2Status;
// check save slot 1.
- for (i = 0; i < 0xE; i++)
+ for (i = 0; i < SECTOR_SAVE_SLOT_LENGTH; i++)
{
DoReadFlashWholeSection(i, gFastSaveSection);
if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE)
@@ -511,9 +520,9 @@ u8 GetSaveValidStatus(const struct SaveSectionLocation *location)
securityPassed = FALSE;
// check save slot 2.
- for (i = 0; i < 0xE; i++)
+ for (i = 0; i < SECTOR_SAVE_SLOT_LENGTH; i++)
{
- DoReadFlashWholeSection(i + 0xE, gFastSaveSection);
+ DoReadFlashWholeSection(i + SECTOR_SAVE_SLOT_LENGTH, gFastSaveSection);
if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE)
{
securityPassed = TRUE;
@@ -543,24 +552,16 @@ u8 GetSaveValidStatus(const struct SaveSectionLocation *location)
if ((saveSlot1Counter == -1 && saveSlot2Counter == 0) || (saveSlot1Counter == 0 && saveSlot2Counter == -1))
{
if ((unsigned)(saveSlot1Counter + 1) < (unsigned)(saveSlot2Counter + 1))
- {
gSaveCounter = saveSlot2Counter;
- }
else
- {
gSaveCounter = saveSlot1Counter;
- }
}
else
{
if (saveSlot1Counter < saveSlot2Counter)
- {
gSaveCounter = saveSlot2Counter;
- }
else
- {
gSaveCounter = saveSlot1Counter;
- }
}
return 1;
}
@@ -593,7 +594,7 @@ u8 GetSaveValidStatus(const struct SaveSectionLocation *location)
return 2;
}
-u8 sub_81530DC(u8 a1, u8 *data, u16 size)
+static u8 sub_81530DC(u8 a1, u8 *data, u16 size)
{
u16 i;
struct SaveSection *section = &gSaveDataBuffer;
@@ -618,13 +619,13 @@ u8 sub_81530DC(u8 a1, u8 *data, u16 size)
}
}
-u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section)
+static u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section)
{
ReadFlash(sector, 0, section->data, sizeof(struct SaveSection));
return 1;
}
-u16 CalculateChecksum(void *data, u16 size)
+static u16 CalculateChecksum(void *data, u16 size)
{
u16 i;
u32 checksum = 0;
@@ -635,7 +636,7 @@ u16 CalculateChecksum(void *data, u16 size)
return ((checksum >> 16) + checksum);
}
-void UpdateSaveAddresses(void)
+static void UpdateSaveAddresses(void)
{
int i = 0;
@@ -668,7 +669,7 @@ u8 HandleSavingData(u8 saveType)
switch (saveType)
{
case SAVE_HALL_OF_FAME_ERASE_BEFORE: // deletes HOF before overwriting HOF completely. unused
- for (i = 0xE * 2 + 0; i < 32; i++)
+ for (i = SECTOR_ID_HOF_1; i < SECTORS_COUNT; i++)
EraseFlashSector(i);
case SAVE_HALL_OF_FAME: // hall of fame.
if (GetGameStat(GAME_STAT_ENTERED_HOF) < 999)
@@ -676,8 +677,8 @@ u8 HandleSavingData(u8 saveType)
SaveSerializedGame();
save_write_to_flash(0xFFFF, gRamSaveSectionLocations);
tempAddr = gDecompressionBuffer;
- HandleWriteSectorNBytes(0x1C, tempAddr, 0xF80);
- HandleWriteSectorNBytes(0x1D, tempAddr + 0xF80, 0xF80);
+ HandleWriteSectorNBytes(SECTOR_ID_HOF_1, tempAddr, 0xF80);
+ HandleWriteSectorNBytes(SECTOR_ID_HOF_2, tempAddr + 0xF80, 0xF80);
break;
case SAVE_NORMAL: // normal save. also called by overwriting your own save.
default:
@@ -692,7 +693,7 @@ u8 HandleSavingData(u8 saveType)
for(i = 0; i < 5; i++)
sav12_xor_get(i, gRamSaveSectionLocations);
break;
- // support for Ereader was removed in Emerald.
+ // Support for Ereader was removed in Emerald.
/*
case EREADER_SAVE: // used in mossdeep "game corner" before/after battling old man e-reader trainer
SaveSerializedGame();
@@ -700,7 +701,7 @@ u8 HandleSavingData(u8 saveType)
break;
*/
case SAVE_OVERWRITE_DIFFERENT_FILE:
- for (i = (0xE * 2 + 0); i < 32; i++)
+ for (i = SECTOR_ID_HOF_1; i < SECTORS_COUNT; i++)
EraseFlashSector(i); // erase HOF.
SaveSerializedGame();
save_write_to_flash(0xFFFF, gRamSaveSectionLocations);
@@ -710,48 +711,52 @@ u8 HandleSavingData(u8 saveType)
return 0;
}
-u8 TrySavingData(u8 saveType) // TrySave
+u8 TrySavingData(u8 saveType)
{
- if(gFlashMemoryPresent == TRUE)
+ if (gFlashMemoryPresent != TRUE)
{
- HandleSavingData(saveType);
- if(gDamagedSaveSectors)
- DoSaveFailedScreen(saveType);
- else
- goto OK; // really?
+ gUnknown_03006294 = 0xFF;
+ return 0xFF;
}
- gUnknown_03006294 = 0xFF;
- return 0xFF;
-OK:
- gUnknown_03006294 = 1;
- return 1;
+ HandleSavingData(saveType);
+ if (!gDamagedSaveSectors)
+ {
+ gUnknown_03006294 = 1;
+ return 1;
+ }
+ else
+ {
+ DoSaveFailedScreen(saveType);
+ gUnknown_03006294 = 0xFF;
+ return 0xFF;
+ }
}
-u8 sub_8153380(void) // trade.s save
+bool8 sub_8153380(void) // trade.s save
{
if (gFlashMemoryPresent != TRUE)
- return 1;
+ return TRUE;
UpdateSaveAddresses();
SaveSerializedGame();
RestoreSaveBackupVarsAndIncrement(gRamSaveSectionLocations);
- return 0;
+ return FALSE;
}
bool8 sub_81533AC(void) // trade.s save
{
- u8 retVal = sub_81529D4(0xE, gRamSaveSectionLocations);
+ u8 retVal = sub_81529D4(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations);
if (gDamagedSaveSectors)
DoSaveFailedScreen(0);
if (retVal == 0xFF)
- return 1;
+ return TRUE;
else
- return 0;
+ return FALSE;
}
u8 sub_81533E0(void) // trade.s save
{
- sub_8152A34(0xE, gRamSaveSectionLocations);
+ sub_8152A34(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations);
if (gDamagedSaveSectors)
DoSaveFailedScreen(0);
return 0;
@@ -759,7 +764,7 @@ u8 sub_81533E0(void) // trade.s save
u8 sub_8153408(void) // trade.s save
{
- sub_8152CAC(0xE, gRamSaveSectionLocations);
+ sub_8152CAC(SECTOR_SAVE_SLOT_LENGTH, gRamSaveSectionLocations);
if (gDamagedSaveSectors)
DoSaveFailedScreen(0);
return 0;
@@ -836,8 +841,8 @@ u16 sub_815355C(void)
return 0;
UpdateSaveAddresses();
GetSaveValidStatus(gRamSaveSectionLocations);
- v3 = 0xE * (gSaveCounter % 2);
- for (i = 0; i < 14; i++)
+ v3 = SECTOR_SAVE_SLOT_LENGTH * (gSaveCounter % 2);
+ for (i = 0; i < SECTOR_SAVE_SLOT_LENGTH; i++)
{
DoReadFlashWholeSection(i + v3, gFastSaveSection);
if (gFastSaveSection->id == 0)
@@ -855,7 +860,7 @@ u32 TryCopySpecialSaveSection(u8 sector, u8* dst)
s32 size;
u8* savData;
- if (sector != 30 && sector != 31)
+ if (sector != SECTOR_ID_TRAINER_HILL && sector != SECTOR_ID_RECORDED_BATTLE)
return 0xFF;
ReadFlash(sector, 0, (u8 *)&gSaveDataBuffer, sizeof(struct SaveSection));
if (*(u32*)(&gSaveDataBuffer.data[0]) != 0xB39D)
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index 2587bf10a..c668c1db0 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -2,6 +2,7 @@
#include "text.h"
#include "main.h"
#include "palette.h"
+#include "graphics.h"
#include "gpu_regs.h"
#include "bg.h"
#include "decompress.h"
@@ -9,24 +10,20 @@
#include "window.h"
#include "menu.h"
#include "save.h"
+#include "starter_choose.h"
#include "gba/flash_internal.h"
#include "text_window.h"
+#include "constants/rgb.h"
#define MSG_WIN_TOP 12
#define CLOCK_WIN_TOP (MSG_WIN_TOP - 4)
-extern const u8 gBirchHelpGfx[];
-extern const u8 gBirchBagTilemap[];
-extern const u8 gBirchGrassTilemap[];
-extern const u16 gBirchBagGrassPal[];
-extern const u16 gUnknown_0860F074[];
-
-extern u8 gText_SaveFailedCheckingBackup[];
-extern u8 gText_BackupMemoryDamaged[];
-extern u8 gText_CheckCompleted[];
-extern u8 gText_SaveCompleteGameCannotContinue[];
-extern u8 gText_SaveCompletePressA[];
-extern u8 gText_GamePlayCannotBeContinued[];
+extern const u8 gText_SaveFailedCheckingBackup[];
+extern const u8 gText_BackupMemoryDamaged[];
+extern const u8 gText_CheckCompleted[];
+extern const u8 gText_SaveCompleteGameCannotContinue[];
+extern const u8 gText_SaveCompletePressA[];
+extern const u8 gText_GamePlayCannotBeContinued[];
// gSaveFailedClockInfo enum
enum
@@ -99,7 +96,7 @@ static const struct BgTemplate gUnknown_085EFD88[3] =
static const struct WindowTemplate gUnknown_085EFD94[] =
{
{
- .priority = 255,
+ .bg = 255,
.tilemapLeft = 0,
.tilemapTop = 0,
.width = 0,
@@ -112,7 +109,7 @@ static const struct WindowTemplate gUnknown_085EFD94[] =
static const struct WindowTemplate gUnknown_085EFD9C[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 1,
.tilemapTop = 13,
.width = 28,
@@ -125,7 +122,7 @@ static const struct WindowTemplate gUnknown_085EFD9C[] =
static const struct WindowTemplate gUnknown_085EFDA4[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 14,
.tilemapTop = 9,
.width = 2,
@@ -148,7 +145,7 @@ static const u8 sClockFrames[8][3] =
};
static const u8 sSaveFailedClockPal[] = INCBIN_U8("graphics/misc/clock_small.gbapal");
-static const u8 sSaveFailedClockGfx[] = INCBIN_U8("graphics/misc/clock_small.4bpp.lz");
+static const u32 sSaveFailedClockGfx[] = INCBIN_U32("graphics/misc/clock_small.4bpp.lz");
static void CB2_SaveFailedScreen(void);
static void CB2_WipeSave(void);
@@ -159,8 +156,8 @@ static void VBlankCB_UpdateClockGraphics(void);
static bool8 VerifySectorWipe(u16 sector);
static bool8 WipeSectors(u32);
-// although this is a general text printer, it's only used in this file.
-static void SaveFailedScreenTextPrint(u8 *text, u8 var1, u8 var2)
+// Although this is a general text printer, it's only used in this file.
+static void SaveFailedScreenTextPrint(const u8 *text, u8 var1, u8 var2)
{
u8 color[3];
@@ -191,72 +188,70 @@ static void CB2_SaveFailedScreen(void)
{
switch (gMain.state)
{
- case 0:
- default:
- SetVBlankCallback(NULL);
- SetGpuReg(REG_OFFSET_DISPCNT, 0);
- SetGpuReg(REG_OFFSET_BG3CNT, 0);
- SetGpuReg(REG_OFFSET_BG2CNT, 0);
- SetGpuReg(REG_OFFSET_BG1CNT, 0);
- SetGpuReg(REG_OFFSET_BG0CNT, 0);
- SetGpuReg(REG_OFFSET_BG3HOFS, 0);
- SetGpuReg(REG_OFFSET_BG3VOFS, 0);
- SetGpuReg(REG_OFFSET_BG2HOFS, 0);
- SetGpuReg(REG_OFFSET_BG2VOFS, 0);
- SetGpuReg(REG_OFFSET_BG1HOFS, 0);
- SetGpuReg(REG_OFFSET_BG1VOFS, 0);
- SetGpuReg(REG_OFFSET_BG0HOFS, 0);
- SetGpuReg(REG_OFFSET_BG0VOFS, 0);
- // how come this doesnt use the Dma manager?
- DmaFill16(3, 0, VRAM, VRAM_SIZE);
- DmaFill32(3, 0, OAM, OAM_SIZE);
- DmaFill16(3, 0, PLTT, PLTT_SIZE);
- LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM);
- LZ77UnCompVram(gBirchBagTilemap, (void *)(VRAM + 0x7000));
- LZ77UnCompVram(gBirchGrassTilemap, (void *)(VRAM + 0x7800));
- LZ77UnCompVram(sSaveFailedClockGfx, (void *)(VRAM + 0x10020));
- ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_085EFD88, 3);
- SetBgTilemapBuffer(0, (void *)&gDecompressionBuffer[0x2000]);
- CpuFill32(0, &gDecompressionBuffer[0x2000], 0x800);
- LoadBgTiles(0, gTextWindowFrame1_Gfx, 0x120, 0x214);
- InitWindows(gUnknown_085EFD94);
- // AddWindowWithoutTileMap returns a u16/integer, but the info is clobbered into a u8 here resulting in lost info. Bug?
- gSaveFailedWindowIds[TEXT_WIN_ID] = AddWindowWithoutTileMap(gUnknown_085EFD9C);
- SetWindowAttribute(gSaveFailedWindowIds[TEXT_WIN_ID], 7, (u32)&gDecompressionBuffer[0x2800]);
- gSaveFailedWindowIds[CLOCK_WIN_ID] = AddWindowWithoutTileMap(gUnknown_085EFDA4);
- SetWindowAttribute(gSaveFailedWindowIds[CLOCK_WIN_ID], 7, (u32)&gDecompressionBuffer[0x3D00]);
- DeactivateAllTextPrinters();
- ResetSpriteData();
- ResetTasks();
- ResetPaletteFade();
- LoadPalette(gBirchBagGrassPal, 0, 0x40);
- LoadPalette(sSaveFailedClockPal, 0x100, 0x20);
- LoadPalette(gTextWindowFrame1_Pal, 0xE0, 0x20);
- LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
- SetWindowBorderStyle(gSaveFailedWindowIds[TEXT_WIN_ID], FALSE, 0x214, 0xE);
- SetWindowBorderStyle(gSaveFailedWindowIds[CLOCK_WIN_ID], FALSE, 0x214, 0xE);
- FillWindowPixelBuffer(gSaveFailedWindowIds[CLOCK_WIN_ID], 0x11); // backwards?
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
- CopyWindowToVram(gSaveFailedWindowIds[CLOCK_WIN_ID], 2); // again?
- CopyWindowToVram(gSaveFailedWindowIds[TEXT_WIN_ID], 1);
- SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- EnableInterrupts(1);
- SetVBlankCallback(VBlankCB);
- SetGpuReg(0, 0x1040);
- ShowBg(0);
- ShowBg(2);
- ShowBg(3);
- gMain.state++;
- break;
- case 1:
- if (!UpdatePaletteFade())
- {
- SetMainCallback2(CB2_WipeSave);
- SetVBlankCallback(VBlankCB_UpdateClockGraphics);
- }
- break;
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG3CNT, 0);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ DmaFill16(3, 0, VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, OAM, OAM_SIZE);
+ DmaFill16(3, 0, PLTT, PLTT_SIZE);
+ LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM);
+ LZ77UnCompVram(gBirchBagTilemap, (void *)(VRAM + 0x7000));
+ LZ77UnCompVram(gBirchGrassTilemap, (void *)(VRAM + 0x7800));
+ LZ77UnCompVram(sSaveFailedClockGfx, (void *)(VRAM + 0x10020));
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_085EFD88, 3);
+ SetBgTilemapBuffer(0, (void *)&gDecompressionBuffer[0x2000]);
+ CpuFill32(0, &gDecompressionBuffer[0x2000], 0x800);
+ LoadBgTiles(0, gTextWindowFrame1_Gfx, 0x120, 0x214);
+ InitWindows(gUnknown_085EFD94);
+ gSaveFailedWindowIds[TEXT_WIN_ID] = AddWindowWithoutTileMap(gUnknown_085EFD9C);
+ SetWindowAttribute(gSaveFailedWindowIds[TEXT_WIN_ID], 7, (u32)&gDecompressionBuffer[0x2800]);
+ gSaveFailedWindowIds[CLOCK_WIN_ID] = AddWindowWithoutTileMap(gUnknown_085EFDA4);
+ SetWindowAttribute(gSaveFailedWindowIds[CLOCK_WIN_ID], 7, (u32)&gDecompressionBuffer[0x3D00]);
+ DeactivateAllTextPrinters();
+ ResetSpriteData();
+ ResetTasks();
+ ResetPaletteFade();
+ LoadPalette(gBirchBagGrassPal, 0, 0x40);
+ LoadPalette(sSaveFailedClockPal, 0x100, 0x20);
+ LoadPalette(gTextWindowFrame1_Pal, 0xE0, 0x20);
+ LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+ SetWindowBorderStyle(gSaveFailedWindowIds[TEXT_WIN_ID], FALSE, 0x214, 0xE);
+ SetWindowBorderStyle(gSaveFailedWindowIds[CLOCK_WIN_ID], FALSE, 0x214, 0xE);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[CLOCK_WIN_ID], 0x11); // backwards?
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ CopyWindowToVram(gSaveFailedWindowIds[CLOCK_WIN_ID], 2); // again?
+ CopyWindowToVram(gSaveFailedWindowIds[TEXT_WIN_ID], 1);
+ SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ EnableInterrupts(1);
+ SetVBlankCallback(VBlankCB);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ShowBg(0);
+ ShowBg(2);
+ ShowBg(3);
+ gMain.state++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ SetMainCallback2(CB2_WipeSave);
+ SetVBlankCallback(VBlankCB_UpdateClockGraphics);
+ }
+ break;
}
}
@@ -350,7 +345,7 @@ static void CB2_ReturnToTitleScreen(void)
static void VBlankCB_UpdateClockGraphics(void)
{
- unsigned int n = (gMain.vblankCounter2 >> 3) & 7;
+ u32 n = (gMain.vblankCounter2 >> 3) & 7;
gMain.oamBuffer[0] = sClockOamData;
gMain.oamBuffer[0].x = 112;
diff --git a/src/save_location.c b/src/save_location.c
index 262aaf40c..d49afa736 100644
--- a/src/save_location.c
+++ b/src/save_location.c
@@ -9,21 +9,18 @@
static bool32 IsCurMapInLocationList(const u16 *list)
{
+ s32 i;
u16 locSum = (gSaveBlock1Ptr->location.mapGroup << 8) + (gSaveBlock1Ptr->location.mapNum);
- // im sure it was written a different way, but for the love of christ I cant figure out how to write it different where it still matches.
- if (*list != 0xFFFF)
+ for (i = 0; list[i] != 0xFFFF; i++)
{
- u16 termValue = 0xFFFF;
- const u16 *localList;
- for (localList = list; *localList != termValue; localList++)
- if (*localList == locSum)
- return TRUE;
+ if (list[i] == locSum)
+ return TRUE;
}
+
return FALSE;
}
-// TODO: Not require a packed u16 array for these lists
static const u16 sSaveLocationPokeCenterList[] =
{
MAP_OLDALE_TOWN_POKEMON_CENTER_1F,
@@ -72,7 +69,7 @@ static bool32 IsCurMapPokeCenter(void)
return IsCurMapInLocationList(sSaveLocationPokeCenterList);
}
-static const u16 sSaveLocationReloadLocList[] = // there's only 1 location, and it's presumed its for the save reload feature for battle tower
+static const u16 sSaveLocationReloadLocList[] = // There's only 1 location, and it's presumed its for the save reload feature for battle tower.
{
MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY,
0xFFFF,
@@ -83,13 +80,13 @@ static bool32 IsCurMapReloadLocation(void)
return IsCurMapInLocationList(sSaveLocationReloadLocList);
}
-// nulled out list. unknown what this would have been
+// Nulled out list. Unknown what this would have been.
static const u16 sUnknown_0861440E[] =
{
0xFFFF,
};
-bool32 sub_81AFCEC(void)
+static bool32 sub_81AFCEC(void)
{
return IsCurMapInLocationList(sUnknown_0861440E);
}
diff --git a/src/scanline_effect.c b/src/scanline_effect.c
index 148e053fc..a9ae9427b 100644
--- a/src/scanline_effect.c
+++ b/src/scanline_effect.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "battle.h"
#include "data2.h"
#include "task.h"
#include "trig.h"
@@ -7,15 +8,6 @@
static void CopyValue16Bit(void);
static void CopyValue32Bit(void);
-extern u16 gBattle_BG0_Y;
-extern u16 gBattle_BG0_X;
-extern u16 gBattle_BG1_X;
-extern u16 gBattle_BG1_Y;
-extern u16 gBattle_BG2_X;
-extern u16 gBattle_BG2_Y;
-extern u16 gBattle_BG3_X;
-extern u16 gBattle_BG3_Y;
-
// EWRAM vars
// Per-scanline register values.
diff --git a/src/scrcmd.c b/src/scrcmd.c
index fa3e21996..310387337 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1,9 +1,10 @@
#include "global.h"
-#include "battle_frontier_2.h"
+#include "frontier_util.h"
#include "battle_setup.h"
#include "berry.h"
#include "clock.h"
#include "coins.h"
+#include "contest.h"
#include "contest_link_80F57C4.h"
#include "contest_painting.h"
#include "data2.h"
@@ -27,6 +28,7 @@
#include "event_obj_lock.h"
#include "menu.h"
#include "money.h"
+#include "mossdeep_gym.h"
#include "mystery_event_script.h"
#include "palette.h"
#include "party_menu.h"
@@ -61,8 +63,6 @@ static EWRAM_DATA u16 sMovingNpcMapBank = 0;
static EWRAM_DATA u16 sMovingNpcMapId = 0;
static EWRAM_DATA u16 sFieldEffectScriptId = 0;
-extern u16 gSpecialVar_ContestCategory;
-
IWRAM_DATA u8 gUnknown_03000F30;
extern const SpecialFunc gSpecials[];
@@ -1290,8 +1290,8 @@ bool8 ScrCmd_messageautoscroll(struct ScriptContext *ctx)
if (msg == NULL)
msg = (const u8 *)ctx->data[0];
- gTextFlags.flag_2 = TRUE;
- gTextFlags.flag_3 = TRUE;
+ gTextFlags.autoScroll = TRUE;
+ gTextFlags.forceMidTextSpeed = TRUE;
ShowFieldAutoScrollMessage(msg);
return FALSE;
}
@@ -1708,8 +1708,8 @@ bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx)
u8 i;
u16 moveId = ScriptReadHalfword(ctx);
- gSpecialVar_Result = 6;
- for (i = 0; i < 6; i++)
+ gSpecialVar_Result = PARTY_SIZE;
+ for (i = 0; i < PARTY_SIZE; i++)
{
u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL);
if (!species)
@@ -2152,13 +2152,13 @@ bool8 ScrCmd_mossdeepgym1(struct ScriptContext *ctx)
{
u16 v1 = VarGet(ScriptReadHalfword(ctx));
- sMovingNpcId = sub_81A89A0(v1);
+ sMovingNpcId = MossdeepGym_MoveEvents(v1);
return FALSE;
}
bool8 ScrCmd_mossdeepgym2(struct ScriptContext *ctx)
{
- sub_81A8AF8();
+ MossdeepGym_TurnEvents();
return FALSE;
}
@@ -2166,13 +2166,13 @@ bool8 ScrCmd_mossdeepgym3(struct ScriptContext *ctx)
{
u16 v1 = VarGet(ScriptReadHalfword(ctx));
- sub_81A8934(v1);
+ InitMossdeepGymTiles(v1);
return FALSE;
}
bool8 ScrCmd_mossdeepgym4(struct ScriptContext *ctx)
{
- sub_81A895C();
+ FinishMossdeepGymTiles();
return FALSE;
}
@@ -2199,7 +2199,7 @@ bool8 ScrCmd_cmdD9(struct ScriptContext *ctx)
}
}
-// This command will force the Pokémon to be obedient, you don't get to make it disobedient
+// This command will force the Pokémon to be obedient, you don't get to make it disobedient.
bool8 ScrCmd_setmonobedient(struct ScriptContext *ctx)
{
bool8 obedient = TRUE;
diff --git a/src/script_menu.c b/src/script_menu.c
index 04f1e82b7..2aa546288 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -1,16 +1,1762 @@
-
-// Includes
#include "global.h"
+#include "main.h"
+#include "event_data.h"
+#include "field_effect.h"
+#include "field_specials.h"
+#include "item.h"
+#include "menu.h"
+#include "palette.h"
+#include "script.h"
+#include "script_menu.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "text.h"
+#include "constants/items.h"
+#include "constants/songs.h"
+
+// multichoice lists
+const struct MenuAction MultichoiceList_000[] =
+{
+ {gUnknown_085EAD37, NULL},
+ {gUnknown_085EAD41, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_002[] =
+{
+ {gUnknown_085EAD67, NULL},
+ {gUnknown_085EAD6D, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_003[] =
+{
+ {gUnknown_085EAD72, NULL},
+ {gUnknown_085EAD84, NULL},
+ {gUnknown_085EAD96, NULL},
+ {gText_Cancel2, NULL},
+};
+
+const struct MenuAction MultichoiceList_004[] =
+{
+ {gUnknown_085EADA4, NULL},
+ {gUnknown_085EADB5, NULL},
+ {gUnknown_085EADC4, NULL},
+ {gUnknown_085EADD5, NULL},
+ {gUnknown_085EADE7, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_006[] =
+{
+ {gUnknown_085EADF9, NULL},
+ {gUnknown_085EAE04, NULL},
+ {gUnknown_085EAE12, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_005[] =
+{
+ {gUnknown_085EADF9, NULL},
+ {gUnknown_085EAE04, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_007[] =
+{
+ {gMenuText_Register, NULL},
+ {gUnknown_085EAE12, NULL},
+ {gUnknown_085EAE1B, NULL},
+ {gText_Cancel2, NULL},
+};
+
+const struct MenuAction MultichoiceList_012[] =
+{
+ {gUnknown_085EAE27, NULL},
+ {gUnknown_085EAE2C, NULL},
+};
+
+const struct MenuAction MultichoiceList_013[] =
+{
+ {gUnknown_085EAE31, NULL},
+ {gUnknown_085EAE35, NULL},
+ {gUnknown_085EAE39, NULL},
+ {gUnknown_085EAE3D, NULL},
+ {gUnknown_085EAE41, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_014[] =
+{
+ {gUnknown_085EAD5F, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_016[] =
+{
+ {gUnknown_085EAE53, NULL},
+ {gUnknown_085EAE5A, NULL},
+};
+
+const struct MenuAction MultichoiceList_020[] =
+{
+ {gText_Yes, NULL},
+ {gText_No, NULL},
+ {gUnknown_085EAD6D, NULL},
+};
+
+const struct MenuAction MultichoiceList_023[] =
+{
+ {gUnknown_085EAEA2, NULL},
+ {gUnknown_085EAEAC, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_024[] =
+{
+ {gText_Lv50, NULL},
+ {gText_OpenLevel, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_025[] =
+{
+ {gUnknown_0827ECBC, NULL},
+ {gUnknown_0827ECC3, NULL},
+ {gUnknown_0827ECCD, NULL},
+};
+
+const struct MenuAction MultichoiceList_026[] =
+{
+ {gUnknown_0827ECD5, NULL},
+ {gUnknown_0827ECDD, NULL},
+ {gUnknown_0827ECE3, NULL},
+};
+
+const struct MenuAction MultichoiceList_027[] =
+{
+ {gUnknown_0827ECEB, NULL},
+ {gUnknown_0827ECF2, NULL},
+ {gUnknown_0827ECF8, NULL},
+};
+
+const struct MenuAction MultichoiceList_028[] =
+{
+ {gUnknown_0827ED00, NULL},
+ {gUnknown_0827ED06, NULL},
+ {gUnknown_0827ED10, NULL},
+};
+
+const struct MenuAction MultichoiceList_029[] =
+{
+ {gUnknown_0827ED18, NULL},
+ {gUnknown_0827ED22, NULL},
+ {gUnknown_0827ED2C, NULL},
+};
+
+const struct MenuAction MultichoiceList_030[] =
+{
+ {gUnknown_0827ED36, NULL},
+ {gUnknown_0827ED40, NULL},
+ {gUnknown_0827ED46, NULL},
+};
+
+const struct MenuAction MultichoiceList_031[] =
+{
+ {gUnknown_0827ED4F, NULL},
+ {gUnknown_0827ED59, NULL},
+ {gUnknown_0827ED65, NULL},
+};
+
+const struct MenuAction MultichoiceList_032[] =
+{
+ {gUnknown_0827ED70, NULL},
+ {gUnknown_0827ED74, NULL},
+ {gUnknown_0827ED78, NULL},
+};
+
+const struct MenuAction MultichoiceList_033[] =
+{
+ {gUnknown_0827ED80, NULL},
+ {gUnknown_0827ED95, NULL},
+ {gUnknown_0827EDAA, NULL},
+};
+
+const struct MenuAction MultichoiceList_034[] =
+{
+ {gUnknown_0827EDB5, NULL},
+ {gUnknown_0827EDBA, NULL},
+ {gUnknown_0827EDC1, NULL},
+};
+
+const struct MenuAction MultichoiceList_035[] =
+{
+ {gUnknown_0827EDC9, NULL},
+ {gUnknown_0827EDD5, NULL},
+ {gUnknown_0827EDE4, NULL},
+};
+
+const struct MenuAction MultichoiceList_036[] =
+{
+ {gUnknown_0827EDF0, NULL},
+ {gUnknown_0827EDF5, NULL},
+ {gUnknown_0827EDF7, NULL},
+};
+
+const struct MenuAction MultichoiceList_037[] =
+{
+ {gUnknown_0827EDF9, NULL},
+ {gUnknown_0827EDFB, NULL},
+ {gUnknown_0827EDFD, NULL},
+};
+
+const struct MenuAction MultichoiceList_038[] =
+{
+ {gUnknown_0827EDFF, NULL},
+ {gUnknown_0827EE01, NULL},
+ {gUnknown_0827EE03, NULL},
+};
+
+const struct MenuAction MultichoiceList_039[] =
+{
+ {gUnknown_0827EE05, NULL},
+ {gUnknown_0827EE07, NULL},
+ {gUnknown_0827EE09, NULL},
+};
+
+const struct MenuAction MultichoiceList_042[] =
+{
+ {gUnknown_085EAEC3, NULL},
+ {gUnknown_085EAED6, NULL},
+ {gUnknown_085EAEE6, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_043[] =
+{
+ {gUnknown_085EAEF6, NULL},
+ {gUnknown_085EAF02, NULL},
+ {gUnknown_085EAF0E, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_044[] =
+{
+ {gUnknown_085EAF1B, NULL},
+ {gUnknown_085EAF24, NULL},
+ {gUnknown_085EAF2F, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_045[] =
+{
+ {gUnknown_085EAF34, NULL},
+ {gUnknown_085EAF3E, NULL},
+};
+
+const struct MenuAction MultichoiceList_046[] =
+{
+ {gUnknown_085EAF4B, NULL},
+ {gUnknown_085EAF58, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_047[] =
+{
+ {gUnknown_085EAF65, NULL},
+ {gUnknown_085EAF70, NULL},
+ {gUnknown_085EAF7D, NULL},
+ {gUnknown_085EAF87, NULL},
+ {gUnknown_085EAF93, NULL},
+ {gUnknown_085EAF9F, NULL},
+ {gUnknown_085EAFAB, NULL},
+ {gText_Cancel2, NULL},
+};
+
+const struct MenuAction MultichoiceList_048[] =
+{
+ {gUnknown_085EAFB6, NULL},
+ {gUnknown_085EAFCF, NULL},
+ {gUnknown_085EAFE8, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_055[] =
+{
+ {gUnknown_085EB089, NULL},
+ {gUnknown_085EB09C, NULL},
+ {gUnknown_085EB0AF, NULL},
+ {gUnknown_085EB0C2, NULL},
+ {gUnknown_085EB0D5, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_049[] =
+{
+ {gUnknown_085EB002, NULL},
+ {gUnknown_085EB017, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_050[] =
+{
+ {gUnknown_085EB02A, NULL},
+ {gUnknown_085EB034, NULL},
+};
+
+const struct MenuAction MultichoiceList_052[] =
+{
+ {gText_LilycoveCity, NULL},
+ {gText_BattleFrontier, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_053[] =
+{
+ {gText_SlateportCity, NULL},
+ {gText_LilycoveCity, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_054[] =
+{
+ {gUnknown_085EB07E, NULL},
+ {gUnknown_085EB084, NULL},
+};
+
+const struct MenuAction MultichoiceList_056[] =
+{
+ {gText_LilycoveCity, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_057[] =
+{
+ {gText_5F, NULL},
+ {gText_4F, NULL},
+ {gText_3F, NULL},
+ {gText_2F, NULL},
+ {gText_1F, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_058[] =
+{
+ {gUnknown_085EB040, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_059[] =
+{
+ {gUnknown_085EB04A, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_060[] =
+{
+ {gUnknown_085EB040, NULL},
+ {gUnknown_085EB04A, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_061[] =
+{
+ {gUnknown_085EB057, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_062[] =
+{
+ {gUnknown_085EB040, NULL},
+ {gUnknown_085EB057, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_063[] =
+{
+ {gUnknown_085EB04A, NULL},
+ {gUnknown_085EB057, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_064[] =
+{
+ {gUnknown_085EB040, NULL},
+ {gUnknown_085EB04A, NULL},
+ {gUnknown_085EB057, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_065[] =
+{
+ {gUnknown_085EB062, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_066[] =
+{
+ {gUnknown_085EB040, NULL},
+ {gUnknown_085EB062, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_067[] =
+{
+ {gUnknown_085EB04A, NULL},
+ {gUnknown_085EB062, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_068[] =
+{
+ {gUnknown_085EB040, NULL},
+ {gUnknown_085EB04A, NULL},
+ {gUnknown_085EB062, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_069[] =
+{
+ {gUnknown_085EB057, NULL},
+ {gUnknown_085EB062, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_070[] =
+{
+ {gUnknown_085EB040, NULL},
+ {gUnknown_085EB057, NULL},
+ {gUnknown_085EB062, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_071[] =
+{
+ {gUnknown_085EB04A, NULL},
+ {gUnknown_085EB057, NULL},
+ {gUnknown_085EB062, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_072[] =
+{
+ {gUnknown_085EB040, NULL},
+ {gUnknown_085EB04A, NULL},
+ {gUnknown_085EB057, NULL},
+ {gUnknown_085EB062, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_073[] =
+{
+ {gText_Opponent, NULL},
+ {gText_Tourney_Tree, NULL},
+ {gText_ReadyToStart, NULL},
+ {gUnknown_085EB5BC, NULL},
+ {gUnknown_085EB5C3, NULL},
+ {gUnknown_085EB5C8, NULL},
+};
+
+const struct MenuAction MultichoiceList_107[] =
+{
+ {gText_Opponent, NULL},
+ {gText_Tourney_Tree, NULL},
+ {gText_ReadyToStart, NULL},
+ {gUnknown_085EB5C3, NULL},
+ {gUnknown_085EB5C8, NULL},
+};
+
+const struct MenuAction MultichoiceList_088[] =
+{
+ {gUnknown_085EB29A, NULL},
+ {gUnknown_085EB2A3, NULL},
+};
+
+const struct MenuAction MultichoiceList_076[] =
+{
+ {gUnknown_085EB372, NULL},
+ {gUnknown_085EB37F, NULL},
+ {gUnknown_085EB389, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_017[] =
+{
+ {gText_Yes, NULL},
+ {gText_No, NULL},
+ {gUnknown_085EAD6D, NULL},
+};
+
+const struct MenuAction MultichoiceList_018[] =
+{
+ {gUnknown_085EAE6E, NULL},
+ {gUnknown_085EAE7C, NULL},
+ {gUnknown_085EAE8A, NULL},
+ {gUnknown_085EAD6D, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_078[] =
+{
+ {gUnknown_085EB372, NULL},
+ {gUnknown_085EB37F, NULL},
+ {gUnknown_085EB397, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_079[] =
+{
+ {gUnknown_085EB372, NULL},
+ {gUnknown_085EB37F, NULL},
+ {gUnknown_085EB389, NULL},
+ {gUnknown_085EB397, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_074[] =
+{
+ {gUnknown_085EB372, NULL},
+ {gUnknown_085EB37F, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_080[] =
+{
+ {gUnknown_085EB3A4, NULL},
+ {gUnknown_085EB3B1, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_081[] =
+{
+ {gUnknown_085EB3D4, NULL},
+ {gUnknown_085EB3C6, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_082[] =
+{
+ {gText_NormalRank, NULL},
+ {gText_SuperRank, NULL},
+ {gText_HyperRank, NULL},
+ {gText_MasterRank, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_083[] =
+{
+ {gText_BattleBag, NULL},
+ {gText_HeldItem, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_084[] =
+{
+ {gText_LinkContest, NULL},
+ {gText_AboutE_Mode, NULL},
+ {gText_AboutG_Mode, NULL},
+ {gText_Cancel2, NULL},
+};
+
+const struct MenuAction MultichoiceList_085[] =
+{
+ {gText_E_Mode, NULL},
+ {gText_G_Mode, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_086[] =
+{
+ {gText_MenuOptionPokedex, NULL},
+ {gText_MenuOptionPokemon, NULL},
+ {gText_MenuOptionBag, NULL},
+ {gText_MenuOptionPokenav, NULL},
+ {gUnknown_085EB278, NULL},
+ {gText_MenuOptionSave, NULL},
+ {gText_MenuOptionOption, NULL},
+ {gText_MenuOptionExit, NULL},
+};
+
+const struct MenuAction MultichoiceList_087[] =
+{
+ {gUnknown_085EB28A, NULL},
+ {gUnknown_085EB290, NULL},
+ {gUnknown_085EB295, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_089[] =
+{
+ {gText_SouthernIsland, NULL},
+ {gText_BirthIsland, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_090[] =
+{
+ {gText_SouthernIsland, NULL},
+ {gText_FarawayIsland, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_091[] =
+{
+ {gText_BirthIsland, NULL},
+ {gText_FarawayIsland, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_092[] =
+{
+ {gText_SouthernIsland, NULL},
+ {gText_BirthIsland, NULL},
+ {gText_FarawayIsland, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_093[] =
+{
+ {gUnknown_085EB2E4, NULL},
+ {gUnknown_085EB2F0, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_094[] =
+{
+ {gText_Yes, NULL},
+ {gUnknown_085EB2FC, NULL},
+};
+
+const struct MenuAction MultichoiceList_095[] =
+{
+ {gUnknown_085EB3DF, NULL},
+ {gUnknown_085EB3EA, NULL},
+ {gUnknown_085EB3F1, NULL},
+ {gUnknown_085EB3FC, NULL},
+ {gUnknown_085EB40A, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_011[] =
+{
+ {gUnknown_085EB415, NULL},
+ {gUnknown_085EB41D, NULL},
+ {gUnknown_085EB424, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_096[] =
+{
+ {gUnknown_085EB45C, NULL},
+ {gUnknown_085EB469, NULL},
+ {gUnknown_085EB475, NULL},
+ {gUnknown_085EB482, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_097[] =
+{
+ {gUnknown_085EB42F, NULL},
+ {gUnknown_085EB43A, NULL},
+ {gUnknown_085EB444, NULL},
+ {gUnknown_085EB451, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_098[] =
+{
+ {gUnknown_085EB48E, NULL},
+ {gUnknown_085EB496, NULL},
+ {gUnknown_085EB4A3, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_099[] =
+{
+ {gUnknown_085EB4AD, NULL},
+ {gUnknown_085EB4B9, NULL},
+ {gUnknown_085EB4C7, NULL},
+ {gUnknown_085EB4D4, NULL},
+ {gUnknown_085EB4E0, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_100[] =
+{
+ {gText_BattleBasics, NULL},
+ {gText_PokemonNature, NULL},
+ {gText_PokemonMoves, NULL},
+ {gText_Underpowered, NULL},
+ {gText_WhenInDanger, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_101[] =
+{
+ {gUnknown_085EB532, NULL},
+ {gUnknown_085EB543, NULL},
+ {gUnknown_085EB555, NULL},
+ {gUnknown_085EB563, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_102[] =
+{
+ {gUnknown_085EB56E, NULL},
+ {gUnknown_085EB57E, NULL},
+ {gUnknown_085EB589, NULL},
+ {gText_Exit, NULL},
+};
+
+const struct MenuAction MultichoiceList_103[] =
+{
+ {gUnknown_085EB5B6, NULL},
+ {gUnknown_085EB5BC, NULL},
+ {gUnknown_085EB5C3, NULL},
+ {gUnknown_085EB5C8, NULL},
+};
+
+const struct MenuAction MultichoiceList_104[] =
+{
+ {gUnknown_085EB5B6, NULL},
+ {gUnknown_085EB5C3, NULL},
+ {gUnknown_085EB5C8, NULL},
+};
+
+const struct MenuAction MultichoiceList_105[] =
+{
+ {gUnknown_085EB5B6, NULL},
+ {gUnknown_085EB5BC, NULL},
+ {gUnknown_085EB5C8, NULL},
+};
+
+const struct MenuAction MultichoiceList_106[] =
+{
+ {gUnknown_085EB5B6, NULL},
+ {gUnknown_085EB5C8, NULL},
+};
+
+const struct MenuAction MultichoiceList_108[] =
+{
+ {gUnknown_085EE14B, NULL},
+ {gUnknown_085EE14F, NULL},
+};
+
+const struct MenuAction MultichoiceList_109[] =
+{
+ {gUnknown_085EB2FF, NULL},
+ {gUnknown_085EB310, NULL},
+ {gUnknown_085EB317, NULL},
+ {gUnknown_085EB31F, NULL},
+};
+
+const struct MenuAction MultichoiceList_110[] =
+{
+ {gText_CaveOfOrigin, NULL},
+ {gText_MtPyre, NULL},
+ {gText_SkyPillar, NULL},
+ {gText_DontRemember, NULL},
+};
+
+const struct MenuAction MultichoiceList_111[] =
+{
+ {gUnknown_085EB4AD, NULL},
+ {gUnknown_085EB4B9, NULL},
+ {gUnknown_085EB4C7, NULL},
+ {gUnknown_085EB4D4, NULL},
+ {gUnknown_085EB597, NULL},
+ {gText_Exit, NULL},
+};
-// Static type declarations
+const struct MenuAction MultichoiceList_112[] =
+{
+ {gText_BattleTrainers, NULL},
+ {gUnknown_085EB45C, NULL},
+ {gUnknown_085EB469, NULL},
+ {gUnknown_085EB475, NULL},
+ {gUnknown_085EB482, NULL},
+ {gText_Exit, NULL},
+};
-// Static RAM declarations
+const struct MenuAction MultichoiceList_113[] =
+{
+ {gUnknown_085EB32D, NULL},
+ {gUnknown_085EB33E, NULL},
+ {gUnknown_085EB350, NULL},
+ {gUnknown_085EB361, NULL},
+ {gText_Exit, NULL},
+};
-IWRAM_DATA u8 gUnknown_03001124[6];
+const struct MenuAction MultichoiceList_001[] =
+{
+ {gText_Exit, NULL},
+};
+
+struct MultichoiceListStruct
+{
+ const struct MenuAction *list;
+ u8 count;
+};
+
+const struct MultichoiceListStruct gMultichoiceLists[] =
+{
+ {MultichoiceList_000, ARRAY_COUNT(MultichoiceList_000)},
+ {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
+ {MultichoiceList_002, ARRAY_COUNT(MultichoiceList_002)},
+ {MultichoiceList_003, ARRAY_COUNT(MultichoiceList_003)},
+ {MultichoiceList_004, ARRAY_COUNT(MultichoiceList_004)},
+ {MultichoiceList_005, ARRAY_COUNT(MultichoiceList_005)},
+ {MultichoiceList_006, ARRAY_COUNT(MultichoiceList_006)},
+ {MultichoiceList_007, ARRAY_COUNT(MultichoiceList_007)},
+ {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
+ {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
+ {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
+ {MultichoiceList_011, ARRAY_COUNT(MultichoiceList_011)},
+ {MultichoiceList_012, ARRAY_COUNT(MultichoiceList_012)},
+ {MultichoiceList_013, ARRAY_COUNT(MultichoiceList_013)},
+ {MultichoiceList_014, ARRAY_COUNT(MultichoiceList_014)},
+ {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
+ {MultichoiceList_016, ARRAY_COUNT(MultichoiceList_016)},
+ {MultichoiceList_017, ARRAY_COUNT(MultichoiceList_017)},
+ {MultichoiceList_018, ARRAY_COUNT(MultichoiceList_018)},
+ {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
+ {MultichoiceList_020, ARRAY_COUNT(MultichoiceList_020)},
+ {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
+ {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
+ {MultichoiceList_023, ARRAY_COUNT(MultichoiceList_023)},
+ {MultichoiceList_024, ARRAY_COUNT(MultichoiceList_024)},
+ {MultichoiceList_025, ARRAY_COUNT(MultichoiceList_025)},
+ {MultichoiceList_026, ARRAY_COUNT(MultichoiceList_026)},
+ {MultichoiceList_027, ARRAY_COUNT(MultichoiceList_027)},
+ {MultichoiceList_028, ARRAY_COUNT(MultichoiceList_028)},
+ {MultichoiceList_029, ARRAY_COUNT(MultichoiceList_029)},
+ {MultichoiceList_030, ARRAY_COUNT(MultichoiceList_030)},
+ {MultichoiceList_031, ARRAY_COUNT(MultichoiceList_031)},
+ {MultichoiceList_032, ARRAY_COUNT(MultichoiceList_032)},
+ {MultichoiceList_033, ARRAY_COUNT(MultichoiceList_033)},
+ {MultichoiceList_034, ARRAY_COUNT(MultichoiceList_034)},
+ {MultichoiceList_035, ARRAY_COUNT(MultichoiceList_035)},
+ {MultichoiceList_036, ARRAY_COUNT(MultichoiceList_036)},
+ {MultichoiceList_037, ARRAY_COUNT(MultichoiceList_037)},
+ {MultichoiceList_038, ARRAY_COUNT(MultichoiceList_038)},
+ {MultichoiceList_039, ARRAY_COUNT(MultichoiceList_039)},
+ {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
+ {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
+ {MultichoiceList_042, ARRAY_COUNT(MultichoiceList_042)},
+ {MultichoiceList_043, ARRAY_COUNT(MultichoiceList_043)},
+ {MultichoiceList_044, ARRAY_COUNT(MultichoiceList_044)},
+ {MultichoiceList_045, ARRAY_COUNT(MultichoiceList_045)},
+ {MultichoiceList_046, ARRAY_COUNT(MultichoiceList_046)},
+ {MultichoiceList_047, ARRAY_COUNT(MultichoiceList_047)},
+ {MultichoiceList_048, ARRAY_COUNT(MultichoiceList_048)},
+ {MultichoiceList_049, ARRAY_COUNT(MultichoiceList_049)},
+ {MultichoiceList_050, ARRAY_COUNT(MultichoiceList_050)},
+ {MultichoiceList_001, ARRAY_COUNT(MultichoiceList_001)},
+ {MultichoiceList_052, ARRAY_COUNT(MultichoiceList_052)},
+ {MultichoiceList_053, ARRAY_COUNT(MultichoiceList_053)},
+ {MultichoiceList_054, ARRAY_COUNT(MultichoiceList_054)},
+ {MultichoiceList_055, ARRAY_COUNT(MultichoiceList_055)},
+ {MultichoiceList_056, ARRAY_COUNT(MultichoiceList_056)},
+ {MultichoiceList_057, ARRAY_COUNT(MultichoiceList_057)},
+ {MultichoiceList_058, ARRAY_COUNT(MultichoiceList_058)},
+ {MultichoiceList_059, ARRAY_COUNT(MultichoiceList_059)},
+ {MultichoiceList_060, ARRAY_COUNT(MultichoiceList_060)},
+ {MultichoiceList_061, ARRAY_COUNT(MultichoiceList_061)},
+ {MultichoiceList_062, ARRAY_COUNT(MultichoiceList_062)},
+ {MultichoiceList_063, ARRAY_COUNT(MultichoiceList_063)},
+ {MultichoiceList_064, ARRAY_COUNT(MultichoiceList_064)},
+ {MultichoiceList_065, ARRAY_COUNT(MultichoiceList_065)},
+ {MultichoiceList_066, ARRAY_COUNT(MultichoiceList_066)},
+ {MultichoiceList_067, ARRAY_COUNT(MultichoiceList_067)},
+ {MultichoiceList_068, ARRAY_COUNT(MultichoiceList_068)},
+ {MultichoiceList_069, ARRAY_COUNT(MultichoiceList_069)},
+ {MultichoiceList_070, ARRAY_COUNT(MultichoiceList_070)},
+ {MultichoiceList_071, ARRAY_COUNT(MultichoiceList_071)},
+ {MultichoiceList_072, ARRAY_COUNT(MultichoiceList_072)},
+ {MultichoiceList_073, ARRAY_COUNT(MultichoiceList_073)},
+ {MultichoiceList_074, ARRAY_COUNT(MultichoiceList_074)},
+ {MultichoiceList_074, ARRAY_COUNT(MultichoiceList_074)},
+ {MultichoiceList_076, ARRAY_COUNT(MultichoiceList_076)},
+ {MultichoiceList_076, ARRAY_COUNT(MultichoiceList_076)},
+ {MultichoiceList_078, ARRAY_COUNT(MultichoiceList_078)},
+ {MultichoiceList_079, ARRAY_COUNT(MultichoiceList_079)},
+ {MultichoiceList_080, ARRAY_COUNT(MultichoiceList_080)},
+ {MultichoiceList_081, ARRAY_COUNT(MultichoiceList_081)},
+ {MultichoiceList_082, ARRAY_COUNT(MultichoiceList_082)},
+ {MultichoiceList_083, ARRAY_COUNT(MultichoiceList_083)},
+ {MultichoiceList_084, ARRAY_COUNT(MultichoiceList_084)},
+ {MultichoiceList_085, ARRAY_COUNT(MultichoiceList_085)},
+ {MultichoiceList_086, ARRAY_COUNT(MultichoiceList_086)},
+ {MultichoiceList_087, ARRAY_COUNT(MultichoiceList_087)},
+ {MultichoiceList_088, ARRAY_COUNT(MultichoiceList_088)},
+ {MultichoiceList_089, ARRAY_COUNT(MultichoiceList_089)},
+ {MultichoiceList_090, ARRAY_COUNT(MultichoiceList_090)},
+ {MultichoiceList_091, ARRAY_COUNT(MultichoiceList_091)},
+ {MultichoiceList_092, ARRAY_COUNT(MultichoiceList_092)},
+ {MultichoiceList_093, ARRAY_COUNT(MultichoiceList_093)},
+ {MultichoiceList_094, ARRAY_COUNT(MultichoiceList_094)},
+ {MultichoiceList_095, ARRAY_COUNT(MultichoiceList_095)},
+ {MultichoiceList_096, ARRAY_COUNT(MultichoiceList_096)},
+ {MultichoiceList_097, ARRAY_COUNT(MultichoiceList_097)},
+ {MultichoiceList_098, ARRAY_COUNT(MultichoiceList_098)},
+ {MultichoiceList_099, ARRAY_COUNT(MultichoiceList_099)},
+ {MultichoiceList_100, ARRAY_COUNT(MultichoiceList_100)},
+ {MultichoiceList_101, ARRAY_COUNT(MultichoiceList_101)},
+ {MultichoiceList_102, ARRAY_COUNT(MultichoiceList_102)},
+ {MultichoiceList_103, ARRAY_COUNT(MultichoiceList_103)},
+ {MultichoiceList_104, ARRAY_COUNT(MultichoiceList_104)},
+ {MultichoiceList_105, ARRAY_COUNT(MultichoiceList_105)},
+ {MultichoiceList_106, ARRAY_COUNT(MultichoiceList_106)},
+ {MultichoiceList_107, ARRAY_COUNT(MultichoiceList_107)},
+ {MultichoiceList_108, ARRAY_COUNT(MultichoiceList_108)},
+ {MultichoiceList_109, ARRAY_COUNT(MultichoiceList_109)},
+ {MultichoiceList_110, ARRAY_COUNT(MultichoiceList_110)},
+ {MultichoiceList_111, ARRAY_COUNT(MultichoiceList_111)},
+ {MultichoiceList_112, ARRAY_COUNT(MultichoiceList_112)},
+ {MultichoiceList_113, ARRAY_COUNT(MultichoiceList_113)},
+};
+
+const u8 *const gUnknown_0858BAF0[] =
+{
+ gText_Cool,
+ gText_Beauty,
+ gText_Cute,
+ gText_Smart,
+ gText_Tough,
+ gText_Normal,
+ gText_Super,
+ gText_Hyper,
+ gText_Master,
+ gText_Cool2,
+ gText_Beauty2,
+ gText_Cute2,
+ gText_Smart2,
+ gText_Tough2,
+ gText_Items,
+ gText_Key_Items,
+ gText_Poke_Balls,
+ gText_TMs_Hms,
+ gText_Berries2,
+ gText_Single2,
+ gText_Double2,
+ gText_Multi,
+ gText_MultiLink,
+ gText_BattleTower2,
+ gText_BattleDome,
+ gText_BattleFactory,
+ gText_BattlePalace,
+ gText_BattleArena,
+ gText_BattlePike,
+ gText_BattlePyramid,
+};
+
+const u8 gUnknown_0858BB68[] = { 74, 75, 76, 77, 78, 79 };
+
+const u8 *const sPCNameStrings[] =
+{
+ gText_SomeonesPC,
+ gText_LanettesPC,
+ gText_PlayersPC,
+ gText_LogOff,
+};
+
+const u8 *const gUnknown_0858BB80[] =
+{
+ gText_SlateportCity,
+ gText_BattleFrontier,
+ gText_SouthernIsland,
+ gText_NavelRock,
+ gText_BirthIsland,
+ gText_FarawayIsland,
+ gText_Exit,
+};
+
+const u8 *const gUnknown_0858BB9C[] =
+{
+ OldaleTown_PokemonCenter_2F_Text_277F1B,
+ OldaleTown_PokemonCenter_2F_Text_277F5A,
+ OldaleTown_PokemonCenter_2F_Text_277F96,
+ OldaleTown_PokemonCenter_2F_Text_27889C,
+};
+const u8 *const gUnknown_0858BBAC[] =
+{
+ OldaleTown_PokemonCenter_2F_Text_27879F,
+ OldaleTown_PokemonCenter_2F_Text_2787D5,
+ OldaleTown_PokemonCenter_2F_Text_278831,
+ OldaleTown_PokemonCenter_2F_Text_27889C,
+};
+const u8 *const gUnknown_0858BBBC[] =
+{
+ OldaleTown_PokemonCenter_2F_Text_27879F,
+ OldaleTown_PokemonCenter_2F_Text_2787D5,
+ OldaleTown_PokemonCenter_2F_Text_2787FC,
+ OldaleTown_PokemonCenter_2F_Text_27889C,
+};
+const u8 *const gUnknown_0858BBCC[] =
+{
+ OldaleTown_PokemonCenter_2F_Text_27879F,
+ OldaleTown_PokemonCenter_2F_Text_2787D5,
+ OldaleTown_PokemonCenter_2F_Text_278831,
+ OldaleTown_PokemonCenter_2F_Text_2787FC,
+ OldaleTown_PokemonCenter_2F_Text_27889C,
+};
+const u8 *const gUnknown_0858BBE0[] =
+{
+ OldaleTown_PokemonCenter_2F_Text_277F1B,
+ OldaleTown_PokemonCenter_2F_Text_277F5A,
+ OldaleTown_PokemonCenter_2F_Text_27889C,
+};
+const u8 *const gUnknown_0858BBEC[] =
+{
+ OldaleTown_PokemonCenter_2F_Text_27879F,
+ OldaleTown_PokemonCenter_2F_Text_2787D5,
+ OldaleTown_PokemonCenter_2F_Text_27889C,
+};
+
+EWRAM_DATA u8 gUnknown_02039F90 = 0;
+
+IWRAM_DATA u8 gUnknown_03001124[7];
IWRAM_DATA u32 filler_0300112c;
-// Static ROM declarations
+static void Task_HandleMultichoiceInput(u8);
+static void Task_HandleYesNoInput(u8);
+static void Task_HandleMultichoiceGridInput(u8);
+static void DrawMultichoiceMenu(u8, u8, u8, bool8, u8);
+static void sub_80E1FBC(u8, u8, u8, u8);
+static void sub_80E2A94(u8);
+static void CreatePCMenu(void);
+static void sub_80E2578(void);
+static bool8 IsPicboxClosed(void);
+static void CreateStartMenu(void);
+static void sub_80E2CC4(u8, u8, u8, u8);
+
+bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress)
+{
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gSpecialVar_Result = 0xFF;
+ DrawMultichoiceMenu(left, top, multichoiceId, ignoreBPress, 0);
+ return TRUE;
+ }
+}
+
+bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 defaultChoice)
+{
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gSpecialVar_Result = 0xFF;
+ DrawMultichoiceMenu(left, top, multichoiceId, ignoreBPress, defaultChoice);
+ return TRUE;
+ }
+}
+
+static u16 sub_80E1EB8(const u8 *str)
+{
+ u16 length = 0;
+
+ while (*str != EOS)
+ {
+ if (*str == PLACEHOLDER_BEGIN)
+ {
+ str++;
+ if (*str == 1)
+ {
+ length += StringLength(gSaveBlock2Ptr->playerName);
+ str++;
+ }
+ }
+ else
+ {
+ str++;
+ length++;
+ }
+ }
+
+ return length;
+}
+
+static void DrawMultichoiceMenu(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 cursorPos)
+{
+ int i;
+ u8 windowId;
+ u8 count = gMultichoiceLists[multichoiceId].count;
+ const struct MenuAction *actions = gMultichoiceLists[multichoiceId].list;
+ int width = 0;
+ u8 newWidth;
+
+ for (i = 0; i < count; i++)
+ {
+ width = display_text_and_get_width(actions[i].text, width);
+ }
+
+ newWidth = convert_pixel_width_to_tile_width(width);
+ left = sub_80E2D5C(left, newWidth);
+ windowId = CreateWindowFromRect(left, top, newWidth, count * 2);
+ SetStandardWindowBorderStyle(windowId, 0);
+ PrintMenuTable(windowId, count, actions);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, count, cursorPos);
+ schedule_bg_copy_tilemap_to_vram(0);
+ sub_80E1FBC(ignoreBPress, count, windowId, multichoiceId);
+}
+
+#define tLeft data[0]
+#define tTop data[1]
+#define tRight data[2]
+#define tBottom data[3]
+#define tIgnoreBPress data[4]
+#define tDoWrap data[5]
+#define tWindowId data[6]
+#define tMultichoiceId data[7]
+
+static void sub_80E1FBC(u8 ignoreBPress, u8 count, u8 windowId, u8 multichoiceId)
+{
+ u8 i;
+ u8 taskId;
+ gUnknown_02039F90 = 2;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (gUnknown_0858BB68[i] == multichoiceId)
+ {
+ gUnknown_02039F90 = 12;
+ }
+ }
+
+ taskId = CreateTask(Task_HandleMultichoiceInput, 80);
+
+ gTasks[taskId].tIgnoreBPress = ignoreBPress;
+
+ if (count > 3)
+ gTasks[taskId].tDoWrap = TRUE;
+ else
+ gTasks[taskId].tDoWrap = FALSE;
+
+ gTasks[taskId].tWindowId = windowId;
+ gTasks[taskId].tMultichoiceId = multichoiceId;
+
+ sub_80E2A94(multichoiceId);
+}
+
+static void Task_HandleMultichoiceInput(u8 taskId)
+{
+ s8 selection;
+ s16 *data = gTasks[taskId].data;
+
+ if (!gPaletteFade.active)
+ {
+ if (gUnknown_02039F90)
+ {
+ gUnknown_02039F90--;
+ }
+ else
+ {
+ if (!tDoWrap)
+ selection = Menu_ProcessInputNoWrap();
+ else
+ selection = Menu_ProcessInput();
+
+ if (gMain.newKeys & (DPAD_UP | DPAD_DOWN))
+ {
+ sub_80E2A94(tMultichoiceId);
+ }
+
+ if (selection != -2)
+ {
+ if (selection == -1)
+ {
+ if (tIgnoreBPress)
+ return;
+ PlaySE(SE_SELECT);
+ gSpecialVar_Result = 127;
+ }
+ else
+ {
+ gSpecialVar_Result = selection;
+ }
+ sub_80E2A78(tWindowId);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+ }
+ }
+}
+
+bool8 ScriptMenu_YesNo(u8 left, u8 top)
+{
+ u8 taskId;
+
+ if (FuncIsActiveTask(Task_HandleYesNoInput) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gSpecialVar_Result = 0xFF;
+ DisplayYesNoMenu();
+ taskId = CreateTask(Task_HandleYesNoInput, 0x50);
+ return TRUE;
+ }
+}
+
+// unused
+bool8 IsScriptActive(void)
+{
+ if (gSpecialVar_Result == 0xFF)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static void Task_HandleYesNoInput(u8 taskId)
+{
+ u8 left, top;
+
+ if (gTasks[taskId].tRight < 5)
+ {
+ gTasks[taskId].tRight++;
+ return;
+ }
+
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case -2:
+ return;
+ case -1:
+ case 1:
+ PlaySE(SE_SELECT);
+ gSpecialVar_Result = 0;
+ break;
+ case 0:
+ gSpecialVar_Result = 1;
+ break;
+ }
+
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+}
+
+bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 columnCount)
+{
+ u8 bottom = 0;
+
+ if (FuncIsActiveTask(Task_HandleMultichoiceGridInput) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ u8 taskId;
+ u8 unk2;
+ int width;
+ int i;
+ u8 newWidth;
+
+ gSpecialVar_Result = 0xFF;
+ width = 0;
+
+ for (i = 0; i < gMultichoiceLists[multichoiceId].count; i++)
+ {
+ width = display_text_and_get_width(gMultichoiceLists[multichoiceId].list[i].text, width);
+ }
+
+ newWidth = convert_pixel_width_to_tile_width(width);
+
+ left = sub_80E2D5C(left, columnCount * newWidth);
+ unk2 = gMultichoiceLists[multichoiceId].count / columnCount;
+
+ taskId = CreateTask(Task_HandleMultichoiceGridInput, 80);
+
+ gTasks[taskId].tIgnoreBPress = ignoreBPress;
+ gTasks[taskId].tWindowId = CreateWindowFromRect(left, top, columnCount * newWidth, unk2 * 2);
+ SetStandardWindowBorderStyle(gTasks[taskId].tWindowId, 0);
+ sub_81997AC(gTasks[taskId].tWindowId, newWidth * 8, columnCount, unk2, gMultichoiceLists[multichoiceId].list);
+ sub_8199944(gTasks[taskId].tWindowId, newWidth * 8, columnCount, unk2, 0);
+ CopyWindowToVram(gTasks[taskId].tWindowId, 3);
+ return TRUE;
+ }
+}
+
+static void Task_HandleMultichoiceGridInput(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s8 selection = Menu_ProcessInputGridLayout();
+
+ if (selection != -2)
+ {
+ if (selection == -1)
+ {
+ if (tIgnoreBPress)
+ return;
+ PlaySE(SE_SELECT);
+ gSpecialVar_Result = 0x7F;
+ }
+ else
+ {
+ gSpecialVar_Result = selection;
+ }
+ sub_80E2A78(tWindowId);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+}
+
+#undef tWindowId
+
+bool8 ScrSpecial_CreatePCMenu(void)
+{
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gSpecialVar_Result = 0xFF;
+ CreatePCMenu();
+ return TRUE;
+ }
+}
+
+static void CreatePCMenu(void)
+{
+ u8 y = 8;
+ u32 pixelWidth = 0;
+ u8 width;
+ u8 numChoices;
+ u8 windowId;
+ int i;
+
+ for (i = 0; i < ARRAY_COUNT(sPCNameStrings); i++)
+ {
+ pixelWidth = display_text_and_get_width(sPCNameStrings[i], pixelWidth);
+ }
+
+ if (FlagGet(FLAG_SYS_GAME_CLEAR))
+ {
+ pixelWidth = display_text_and_get_width(gText_HallOfFame, pixelWidth);
+ }
+
+ width = convert_pixel_width_to_tile_width(pixelWidth);
+
+ if (FlagGet(FLAG_SYS_GAME_CLEAR)) // player has cleared game?
+ {
+ numChoices = 4;
+ windowId = CreateWindowFromRect(0, 0, width, 8);
+ SetStandardWindowBorderStyle(windowId, 0);
+ AddTextPrinterParameterized(windowId, 1, gText_HallOfFame, y, 33, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(windowId, 1, gText_LogOff, y, 49, TEXT_SPEED_FF, NULL);
+ }
+ else
+ {
+ numChoices = 3;
+ windowId = CreateWindowFromRect(0, 0, width, 6);
+ SetStandardWindowBorderStyle(windowId, 0);
+ AddTextPrinterParameterized(windowId, 1, gText_LogOff, y, 33, TEXT_SPEED_FF, NULL);
+ }
+
+ if (FlagGet(FLAG_SYS_PC_LANETTE)) // player met lanette?
+ AddTextPrinterParameterized(windowId, 1, gText_LanettesPC, y, 1, TEXT_SPEED_FF, NULL);
+ else
+ AddTextPrinterParameterized(windowId, 1, gText_SomeonesPC, y, 1, TEXT_SPEED_FF, NULL);
+
+ StringExpandPlaceholders(gStringVar4, gText_PlayersPC);
+ PrintPlayerNameOnWindow(windowId, gStringVar4, y, 17);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, numChoices, 0);
+ CopyWindowToVram(windowId, 3);
+ sub_80E1FBC(FALSE, numChoices, windowId, 1);
+}
+
+void ScriptMenu_DisplayPCStartupPrompt(void)
+{
+ sub_819786C(0, TRUE);
+ AddTextPrinterParameterized2(0, 1, gText_WhichPCShouldBeAccessed, 0, NULL, 2, 1, 3);
+}
+
+bool8 sub_80E2548(void)
+{
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gSpecialVar_Result = 0xFF;
+ sub_80E2578();
+ return TRUE;
+ }
+}
+
+static void sub_80E2578(void)
+{
+ u8 temp = 0;
+ u8 count;
+ u32 pixelWidth;
+ u8 width;
+ u8 windowId;
+ u8 i;
+ u32 j;
+
+ for (i = 0; i < ARRAY_COUNT(gUnknown_03001124); i++)
+ {
+ gUnknown_03001124[i] |= 0xFF;
+ }
+
+ GetFontAttribute(1, FONTATTR_MAX_LETTER_WIDTH);
+
+ if (gSpecialVar_0x8004 == 0)
+ {
+ gUnknown_03001124[temp] = 0;
+ temp++;
+ if (FlagGet(FLAG_0x1D0) == TRUE)
+ {
+ gUnknown_03001124[temp] = 1;
+ temp++;
+ }
+ }
+
+ if (CheckBagHasItem(ITEM_EON_TICKET, 1) == TRUE && FlagGet(FLAG_SYS_HAS_EON_TICKET) == TRUE)
+ {
+ if (gSpecialVar_0x8004 == 0)
+ {
+ gUnknown_03001124[temp] = 2;
+ temp++;
+ }
+
+ if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_0x1AE) == FALSE)
+ {
+ gUnknown_03001124[temp] = 2;
+ temp++;
+ FlagSet(FLAG_0x1AE);
+ }
+ }
+
+ if (CheckBagHasItem(ITEM_MYSTIC_TICKET, 1) == TRUE && FlagGet(FLAG_0x8E0) == TRUE)
+ {
+ if (gSpecialVar_0x8004 == 0)
+ {
+ gUnknown_03001124[temp] = 3;
+ temp++;
+ }
+
+ if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_0x1DB) == FALSE)
+ {
+ gUnknown_03001124[temp] = 3;
+ temp++;
+ FlagSet(FLAG_0x1DB);
+ }
+ }
+
+ if (CheckBagHasItem(ITEM_AURORA_TICKET, 1) == TRUE && FlagGet(FLAG_0x8D5) == TRUE)
+ {
+ if (gSpecialVar_0x8004 == 0)
+ {
+ gUnknown_03001124[temp] = 4;
+ temp++;
+ }
+
+ if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_0x1AF) == FALSE)
+ {
+ gUnknown_03001124[temp] = 4;
+ temp++;
+ FlagSet(FLAG_0x1AF);
+ }
+ }
+
+ if (CheckBagHasItem(ITEM_OLD_SEA_MAP, 1) == TRUE && FlagGet(FLAG_0x8D6) == TRUE)
+ {
+ if (gSpecialVar_0x8004 == 0)
+ {
+ gUnknown_03001124[temp] = 5;
+ temp++;
+ }
+
+ if (gSpecialVar_0x8004 == 1 && FlagGet(FLAG_0x1B0) == FALSE)
+ {
+ gUnknown_03001124[temp] = 5;
+ temp++;
+ FlagSet(FLAG_0x1B0);
+ }
+ }
+
+ gUnknown_03001124[temp] = 6;
+ temp++;
+
+ if (gSpecialVar_0x8004 == 0 && FlagGet(FLAG_0x1D0) == TRUE)
+ {
+ count = temp;
+ }
+
+ count = temp;
+ if (count == 7)
+ {
+ gSpecialVar_0x8004 = 11;
+ sub_813A128();
+ }
+ else
+ {
+ pixelWidth = 0;
+
+ for (j = 0; j < ARRAY_COUNT(gUnknown_0858BB80); j++)
+ {
+ u8 test = gUnknown_03001124[j];
+ if (test != 0xFF)
+ {
+ pixelWidth = display_text_and_get_width(gUnknown_0858BB80[test], pixelWidth);
+ }
+ }
+
+ width = convert_pixel_width_to_tile_width(pixelWidth);
+ windowId = CreateWindowFromRect(28 - width, (6 - count) * 2, width, count * 2);
+ SetStandardWindowBorderStyle(windowId, 0);
+
+ for (temp = 0, i = 0; i < ARRAY_COUNT(gUnknown_0858BB80); i++)
+ {
+ if (gUnknown_03001124[i] != 0xFF)
+ {
+ AddTextPrinterParameterized(windowId, 1, gUnknown_0858BB80[gUnknown_03001124[i]], 8, temp * 16 + 1, TEXT_SPEED_FF, NULL);
+ temp++;
+ }
+ }
+
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, count, count - 1);
+ CopyWindowToVram(windowId, 3);
+ sub_80E1FBC(FALSE, count, windowId, 8);
+ }
+}
+
+void sub_80E2878(void)
+{
+ if (gSpecialVar_Result != 0x7F)
+ {
+ gSpecialVar_Result = gUnknown_03001124[gSpecialVar_Result];
+ }
+}
+
+#define tState data[0]
+#define tMonSpecies data[1]
+#define tMonSpriteId data[2]
+#define tWindowX data[3]
+#define tWindowY data[4]
+#define tWindowId data[5]
+
+static void Task_PokemonPicWindow(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->tState)
+ {
+ case 0:
+ task->tState++;
+ break;
+ case 1:
+ break;
+ case 2:
+ FreeResourcesAndDestroySprite(&gSprites[task->tMonSpriteId], task->tMonSpriteId);
+ task->tState++;
+ break;
+ case 3:
+ sub_80E2A78(task->tWindowId);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y)
+{
+ u8 taskId;
+ u8 spriteId;
+
+ if (FindTaskIdByFunc(Task_PokemonPicWindow) != 0xFF)
+ {
+ return FALSE;
+ }
+ else
+ {
+ spriteId = CreateMonSprite_PicBox(species, x * 8 + 40, y * 8 + 40, 0);
+ taskId = CreateTask(Task_PokemonPicWindow, 0x50);
+ gTasks[taskId].tWindowId = CreateWindowFromRect(x, y, 8, 8);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tMonSpecies = species;
+ gTasks[taskId].tMonSpriteId = spriteId;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[spriteId].oam.priority = 0;
+ SetStandardWindowBorderStyle(gTasks[taskId].tWindowId, 1);
+ schedule_bg_copy_tilemap_to_vram(0);
+ return TRUE;
+ }
+}
+
+bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void)
+{
+ u8 taskId = FindTaskIdByFunc(Task_PokemonPicWindow);
+
+ if (taskId == 0xFF)
+ return NULL;
+ gTasks[taskId].tState++;
+ return IsPicboxClosed;
+}
+
+static bool8 IsPicboxClosed(void)
+{
+ if (FindTaskIdByFunc(Task_PokemonPicWindow) == 0xFF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+#undef tState
+#undef tMonSpecies
+#undef tMonSpriteId
+#undef tWindowX
+#undef tWindowY
+#undef tWindowId
+
+u8 CreateWindowFromRect(u8 x, u8 y, u8 width, u8 height)
+{
+ struct WindowTemplate template = CreateWindowTemplate(0, x + 1, y + 1, width, height, 15, 100);
+ u8 windowId = AddWindow(&template);
+ PutWindowTilemap(windowId);
+ return windowId;
+}
+
+void sub_80E2A78(u8 windowId)
+{
+ sub_8198070(windowId, TRUE);
+ RemoveWindow(windowId);
+}
+
+static void sub_80E2A94(u8 multichoiceId)
+{
+ switch (multichoiceId)
+ {
+ case 77:
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized2(0, 1, gUnknown_0858BBAC[GetMenuCursorPos()], 0, NULL, 2, 1, 3);
+ break;
+ case 76:
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized2(0, 1, gUnknown_0858BB9C[GetMenuCursorPos()], 0, NULL, 2, 1, 3);
+ break;
+ case 78:
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized2(0, 1, gUnknown_0858BBBC[GetMenuCursorPos()], 0, NULL, 2, 1, 3);
+ break;
+ case 79:
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized2(0, 1, gUnknown_0858BBCC[GetMenuCursorPos()], 0, NULL, 2, 1, 3);
+ break;
+ case 75:
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized2(0, 1, gUnknown_0858BBEC[GetMenuCursorPos()], 0, NULL, 2, 1, 3);
+ break;
+ case 74:
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized2(0, 1, gUnknown_0858BBE0[GetMenuCursorPos()], 0, NULL, 2, 1, 3);
+ break;
+ }
+}
+
+bool16 sp106_CreateStartMenu(void)
+{
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
+ return FALSE;
+ }
+
+ gSpecialVar_Result = 0xFF;
+ CreateStartMenu();
+ return TRUE;
+}
+
+static void CreateStartMenu(void)
+{
+ u8 windowId = CreateWindowFromRect(21, 0, 7, 18);
+ SetStandardWindowBorderStyle(windowId, 0);
+ AddTextPrinterParameterized(windowId, 1, gText_MenuOptionPokedex, 8, 9, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(windowId, 1, gText_MenuOptionPokemon, 8, 25, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(windowId, 1, gText_MenuOptionBag, 8, 41, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(windowId, 1, gText_MenuOptionPokenav, 8, 57, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(windowId, 1, gSaveBlock2Ptr->playerName, 8, 73, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(windowId, 1, gText_MenuOptionSave, 8, 89, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(windowId, 1, gText_MenuOptionOption, 8, 105, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(windowId, 1, gText_MenuOptionExit, 8, 121, TEXT_SPEED_FF, NULL);
+ sub_81983AC(windowId, 1, 0, 9, 16, 8, 0);
+ sub_80E2CC4(0, 8, windowId, 86);
+ CopyWindowToVram(windowId, 3);
+}
+
+#define tWindowId data[6]
+
+static void sub_80E2CC4(bool8 ignoreBPress, u8 unused, u8 windowId, u8 multichoiceId)
+{
+ u8 taskId;
+ gUnknown_02039F90 = 2;
+ taskId = CreateTask(Task_HandleMultichoiceInput, 80);
+ gTasks[taskId].tIgnoreBPress = ignoreBPress;
+ gTasks[taskId].tDoWrap = 0;
+ gTasks[taskId].tWindowId = windowId;
+ gTasks[taskId].tMultichoiceId = multichoiceId;
+}
+
+#undef tLeft
+#undef tTop
+#undef tRight
+#undef tBottom
+#undef tIgnoreBPress
+#undef tDoWrap
+#undef tWindowId
+#undef tMultichoiceId
+
+static int display_text_and_get_width_internal(const u8 *str)
+{
+ u8 temp[64];
+ StringExpandPlaceholders(temp, str);
+ return GetStringWidth(1, temp, 0);
+}
+
+int display_text_and_get_width(const u8 *str, int prevMaxWidth)
+{
+ int len = display_text_and_get_width_internal(str);
+ if (len < prevMaxWidth)
+ {
+ len = prevMaxWidth;
+ }
+ return len;
+}
+
+int convert_pixel_width_to_tile_width(int width)
+{
+ return (((width + 9) / 8) + 1) > 28 ? 28 : (((width + 9) / 8) + 1);
+}
+
+int sub_80E2D5C(int a0, int a1)
+{
+ int ret = a0;
-// .rodata
+ if (a0 + a1 > 28)
+ {
+ if (28 - a1 < 0)
+ {
+ ret = 0;
+ }
+ else
+ {
+ ret = 28 - a1;
+ }
+ }
+ else
+ {
+ ret = a0;
+ }
-// .text
+ return ret;
+}
diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c
new file mode 100755
index 000000000..7fc61f953
--- /dev/null
+++ b/src/script_pokemon_util_80F87D8.c
@@ -0,0 +1,707 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_gfx_sfx_util.h"
+#include "berry.h"
+#include "contest.h"
+#include "contest_link_80F57C4.h"
+#include "contest_painting.h"
+#include "daycare.h"
+#include "decompress.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "international_string_util.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "main.h"
+#include "menu.h"
+#include "overworld.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "pokedex.h"
+#include "pokemon.h"
+#include "random.h"
+#include "script.h"
+#include "script_menu.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "tv.h"
+#include "constants/event_objects.h"
+#include "constants/items.h"
+#include "constants/species.h"
+#include "constants/vars.h"
+
+extern const u16 gEventObjectPalette8[];
+extern const u16 gEventObjectPalette17[];
+extern const u16 gEventObjectPalette33[];
+extern const u16 gEventObjectPalette34[];
+extern const struct CompressedSpriteSheet gMonFrontPicTable[];
+
+extern u8 gSelectedOrderFromParty[];
+
+static const u8 gUnknown_0858D8EC[] = { 3, 4, 5, 14 };
+
+static void sub_80F8EE8(u8 taskId);
+static void sub_80F9088(u8 taskId);
+static void sub_80F9460(void);
+static void sub_80F94B8(void);
+
+void SetContestTrainerGfxIds(void)
+{
+ gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_0 - VARS_START] = gContestMons[0].trainerGfxId;
+ gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_1 - VARS_START] = gContestMons[1].trainerGfxId;
+ gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_2 - VARS_START] = gContestMons[2].trainerGfxId;
+}
+
+void sub_80F8814(void)
+{
+ u16 var1;
+ u8 var0 = gSpecialVar_0x8005;
+ switch (var0)
+ {
+ case 0:
+ var1 = 3;
+ break;
+ case 1:
+ var1 = 4;
+ break;
+ case 2:
+ var1 = 5;
+ break;
+ default:
+ var1 = 100;
+ break;
+ }
+
+ gSpecialVar_0x8004 = var1;
+}
+
+void sub_80F8850(void)
+{
+ sub_80F8264();
+ sub_80F8290();
+ sub_80F8438();
+}
+
+void sub_80F8864(void)
+{
+ int contestWinner;
+ switch (gSpecialVar_ContestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ contestWinner = 8;
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ contestWinner = 9;
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ contestWinner = 10;
+ break;
+ case CONTEST_CATEGORY_SMART:
+ contestWinner = 11;
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ default:
+ contestWinner = 12;
+ break;
+ }
+
+ if (!gSaveBlock1Ptr->contestWinners[contestWinner].species)
+ gSpecialVar_0x8004 = 0;
+ else
+ gSpecialVar_0x8004 = 1;
+}
+
+void sub_80F88DC(void)
+{
+ sub_80DEDA8(0xFF);
+}
+
+void sub_80F88E8(void)
+{
+ if (gContestFinalStandings[gContestPlayerMonIndex] == 0
+ && gSpecialVar_ContestRank == 3
+ && gUnknown_02039F08[gContestPlayerMonIndex] >= 800)
+ {
+ gSpecialVar_0x8004 = 1;
+ }
+ else
+ {
+ gSpecialVar_0x8004 = 0;
+ }
+}
+
+u8 sub_80F8940(void)
+{
+ int i;
+ u8 var0 = 0;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (gSaveBlock1Ptr->contestWinners[8 + i].species)
+ var0++;
+ }
+
+ return var0;
+}
+
+void sub_80F8970(void)
+{
+ s16 sp[4];
+ int i, j;
+ s16 condition;
+ s8 var0;
+ u8 var2;
+ u8 r8;
+ u8 r7;
+
+ for (i = 0; i < 4; i++)
+ sp[i] = gContestMonConditions[i];
+
+ for (i = 0; i < 3; i++)
+ {
+ for (j = 3; j > i; j--)
+ {
+ if (sp[j - 1] < sp[j])
+ {
+ int temp = sp[j];
+ sp[j] = sp[j - 1];
+ sp[j - 1] = temp;
+ }
+ }
+ }
+
+ condition = sp[gSpecialVar_0x8006];
+ var0 = 0;
+ r8 = 0;
+ for (i = 0; i < 4; i++)
+ {
+ if (sp[i] == condition)
+ {
+ var0++;
+ if (i == gSpecialVar_0x8006)
+ r8 = var0;
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sp[i] == condition)
+ break;
+ }
+
+ r7 = i;
+ var2 = r8;
+ for (i = 0; i < 4; i++)
+ {
+ if (condition == gContestMonConditions[i])
+ {
+ if (var2 == 1)
+ break;
+ var2--;
+ }
+ }
+
+ StringCopy(gStringVar1, gContestMons[i].nickname);
+ StringCopy(gStringVar2, gContestMons[i].trainerName);
+ sub_81DB5AC(gStringVar2);
+
+ if (var0 == 1)
+ gSpecialVar_0x8006 = r7;
+ else if (r8 == var0)
+ gSpecialVar_0x8006 = r7;
+ else
+ gSpecialVar_0x8006 = r7 + 4;
+}
+
+static void ShowContestWinnerCleanup(void)
+{
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+}
+
+void ShowContestWinner(void)
+{
+ SetMainCallback2(sub_812FDEC);
+ gMain.savedCallback = ShowContestWinnerCleanup;
+}
+
+void sub_80F8AFC(void)
+{
+ int i;
+
+ if (gIsLinkContest & 1)
+ {
+ for (i = 0; i < gUnknown_02039F30; i++)
+ {
+ int version = (u8)gLinkPlayers[i].version;
+ if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
+ {
+ if (gLinkPlayers[i].gender == MALE)
+ gContestMons[i].trainerGfxId = EVENT_OBJ_GFX_LINK_RS_BRENDAN;
+ else
+ gContestMons[i].trainerGfxId = EVENT_OBJ_GFX_LINK_RS_MAY;
+ }
+ }
+
+ VarSet(VAR_OBJ_GFX_ID_0, gContestMons[0].trainerGfxId);
+ VarSet(VAR_OBJ_GFX_ID_1, gContestMons[1].trainerGfxId);
+ VarSet(VAR_OBJ_GFX_ID_2, gContestMons[2].trainerGfxId);
+ VarSet(VAR_OBJ_GFX_ID_3, gContestMons[3].trainerGfxId);
+ }
+}
+
+void sub_80F8B94(void)
+{
+ int i;
+ u8 eventObjectId;
+ int version;
+ struct Sprite *sprite;
+
+ gReservedSpritePaletteCount = 12;
+ if (gIsLinkContest & 1)
+ {
+ for (i = 0; i < gUnknown_02039F30; i++)
+ {
+ eventObjectId = GetEventObjectIdByLocalIdAndMap(gUnknown_0858D8EC[i], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ sprite = &gSprites[gEventObjects[eventObjectId].spriteId];
+ sprite->oam.paletteNum = 6 + i;
+ version = (u8)gLinkPlayers[i].version;
+ if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
+ {
+ if (gLinkPlayers[i].gender == MALE)
+ LoadPalette(gEventObjectPalette33, 0x160 + i * 0x10, 0x20);
+ else
+ LoadPalette(gEventObjectPalette34, 0x160 + i * 0x10, 0x20);
+ }
+ else
+ {
+ if (gLinkPlayers[i].gender == MALE)
+ LoadPalette(gEventObjectPalette8, 0x160 + i * 0x10, 0x20);
+ else
+ LoadPalette(gEventObjectPalette17, 0x160 + i * 0x10, 0x20);
+ }
+ }
+ }
+}
+
+u8 GiveMonArtistRibbon(void)
+{
+ u8 hasArtistRibbon;
+
+ hasArtistRibbon = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON);
+ if (!hasArtistRibbon && gContestFinalStandings[gContestPlayerMonIndex] == 0 && gSpecialVar_ContestRank == 3
+ && gUnknown_02039F08[gContestPlayerMonIndex] >= 800)
+ {
+ hasArtistRibbon = 1;
+ SetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON, &hasArtistRibbon);
+ if (GetRibbonCount(&gPlayerParty[gUnknown_02039F24]) > 4)
+ sub_80EE4DC(&gPlayerParty[gUnknown_02039F24], MON_DATA_ARTIST_RIBBON);
+
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+u8 sub_80F8D24(void)
+{
+ return 0;
+}
+
+void ShowContestEntryMonPic(void)
+{
+ const struct CompressedSpritePalette *palette;
+ u32 personality, otId;
+ u16 species;
+ u8 spriteId;
+ u8 taskId;
+ u8 left, top;
+
+ if (FindTaskIdByFunc(sub_80F8EE8) == 0xFF)
+ {
+ AllocateMonSpritesGfx();
+ left = 10;
+ top = 3;
+ species = gContestMons[gSpecialVar_0x8006].species;
+ personality = gContestMons[gSpecialVar_0x8006].personality;
+ otId = gContestMons[gSpecialVar_0x8006].otId;
+ taskId = CreateTask(sub_80F8EE8, 0x50);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = species;
+ if (gSpecialVar_0x8006 == gContestPlayerMonIndex)
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
+ else
+ HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
+
+ palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality);
+ LoadCompressedObjectPalette(palette);
+ SetMultiuseSpriteTemplateToPokemon(species, 1);
+ gMultiuseSpriteTemplate.paletteTag = palette->tag;
+ spriteId = CreateSprite(&gMultiuseSpriteTemplate, (left + 1) * 8 + 32, (top * 8) + 40, 0);
+
+ if (gIsLinkContest & 1)
+ {
+ if (!(gIsLinkContest & 4))
+ DoMonFrontSpriteAnimation(&gSprites[spriteId], species, FALSE, 0);
+ }
+ else
+ {
+ DoMonFrontSpriteAnimation(&gSprites[spriteId], species, FALSE, 0);
+ }
+
+ gTasks[taskId].data[2] = spriteId;
+ gTasks[taskId].data[3] = left;
+ gTasks[taskId].data[4] = top;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[spriteId].oam.priority = 0;
+ }
+}
+
+void sub_80F8EB8(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_80F8EE8);
+ if (taskId != 0xFF)
+ {
+ gTasks[taskId].data[0]++;
+ FreeMonSpritesGfx();
+ }
+}
+
+static void sub_80F8EE8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ struct Sprite *sprite;
+
+ switch(task->data[0])
+ {
+ case 0:
+ task->data[0]++;
+ break;
+ case 1:
+ task->data[5] = CreateWindowFromRect(10, 3, 8, 8);
+ SetStandardWindowBorderStyle(task->data[5], 1);
+ task->data[0]++;
+ break;
+ case 2:
+ break;
+ case 3:
+ sprite = &gSprites[task->data[2]];
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
+
+ if(sprite->oam.affineMode)
+ FreeOamMatrix(sprite->oam.matrixNum);
+
+ DestroySprite(sprite);
+ task->data[0]++;
+ break;
+ case 4:
+ sub_80E2A78(gTasks[taskId].data[5]);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void ScriptGetMultiplayerId(void)
+{
+ if ((gIsLinkContest & 1) && gUnknown_02039F30 == 4 && !(gIsLinkContest & 2))
+ gSpecialVar_Result = GetMultiplayerId();
+ else
+ gSpecialVar_Result = 4;
+}
+
+void ScriptRandom(void)
+{
+ u16 random;
+ u16 *scriptPtr;
+
+ if (gIsLinkContest & 1)
+ {
+ gContestRngValue = 1103515245 * gContestRngValue + 24691;
+ random = gContestRngValue >> 16;
+ scriptPtr = &gSpecialVar_Result;
+ }
+ else
+ {
+ scriptPtr = &gSpecialVar_Result;
+ random = Random();
+ }
+ *scriptPtr = random % *scriptPtr;
+}
+
+u16 sub_80F903C(void)
+{
+ gContestRngValue = 1103515245 * gContestRngValue + 24691;
+ return gContestRngValue >> 16;
+}
+
+u8 sub_80F905C(void)
+{
+ if (gIsLinkContest & 2)
+ {
+ CreateTask(sub_80F9088, 5);
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+static void sub_80F9088(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (sub_800A520())
+ {
+ sub_800ADF8();
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ gTasks[taskId].data[0]++;
+ break;
+ default:
+ if (sub_800A520() == 1)
+ {
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_80F90DC(void)
+{
+ if (gIsLinkContest & 2)
+ {
+ if (gReceivedRemoteLinkPlayers)
+ {
+ sub_800E0E8();
+ CreateWirelessStatusIndicatorSprite(8, 8);
+ }
+ }
+}
+
+void sub_80F910C(void)
+{
+ if (gIsLinkContest & 2)
+ {
+ if (gReceivedRemoteLinkPlayers)
+ sub_800E084();
+ }
+}
+
+u8 sub_80F9134(void)
+{
+ if (gIsLinkContest & 4)
+ return 1;
+ else
+ return 0;
+}
+
+void sub_80F9154(void)
+{
+ gIsLinkContest = 0;
+}
+
+u8 sub_80F9160(void)
+{
+ if (gIsLinkContest & 2)
+ return 1;
+ else
+ return 0;
+}
+
+void HealPlayerParty(void)
+{
+ u8 i, j;
+ u8 ppBonuses;
+ u8 arg[4];
+
+ // restore HP.
+ for(i = 0; i < gPlayerPartyCount; i++)
+ {
+ u16 maxHP = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP);
+ arg[0] = maxHP;
+ arg[1] = maxHP >> 8;
+ SetMonData(&gPlayerParty[i], MON_DATA_HP, arg);
+ ppBonuses = GetMonData(&gPlayerParty[i], MON_DATA_PP_BONUSES);
+
+ // restore PP.
+ for(j = 0; j < 4; j++)
+ {
+ arg[0] = CalculatePPWithBonus(GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j), ppBonuses, j);
+ SetMonData(&gPlayerParty[i], MON_DATA_PP1 + j, arg);
+ }
+
+ // since status is u32, the four 0 assignments here are probably for safety to prevent undefined data from reaching SetMonData.
+ arg[0] = 0;
+ arg[1] = 0;
+ arg[2] = 0;
+ arg[3] = 0;
+ SetMonData(&gPlayerParty[i], MON_DATA_STATUS, arg);
+ }
+}
+
+u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 unused3)
+{
+ u16 nationalDexNum;
+ int sentToPc;
+ u8 heldItem[2];
+ struct Pokemon mon;
+
+ CreateMon(&mon, species, level, 32, 0, 0, 0, 0);
+ heldItem[0] = item;
+ heldItem[1] = item >> 8;
+ SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem);
+ sentToPc = GiveMonToPlayer(&mon);
+ nationalDexNum = SpeciesToNationalPokedexNum(species);
+
+ switch(sentToPc)
+ {
+ case 0:
+ case 1:
+ GetSetPokedexFlag(nationalDexNum, 2);
+ GetSetPokedexFlag(nationalDexNum, 3);
+ break;
+ }
+ return sentToPc;
+}
+
+u8 ScriptGiveEgg(u16 species)
+{
+ struct Pokemon mon;
+ u8 isEgg;
+
+ CreateEgg(&mon, species, TRUE);
+ isEgg = TRUE;
+ SetMonData(&mon, MON_DATA_IS_EGG, &isEgg);
+
+ return GiveMonToPlayer(&mon);
+}
+
+void HasEnoughMonsForDoubleBattle(void)
+{
+ switch (GetMonsStateToDoubles())
+ {
+ case 0:
+ gSpecialVar_Result = 0;
+ break;
+ case 1:
+ gSpecialVar_Result = 1;
+ break;
+ case 2:
+ gSpecialVar_Result = 2;
+ break;
+ }
+}
+
+static bool8 CheckPartyMonHasHeldItem(u16 item)
+{
+ int i;
+
+ for(i = 0; i < PARTY_SIZE; i++)
+ {
+ u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == item)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_80F9370(void)
+{
+ bool8 hasItem = CheckPartyMonHasHeldItem(ITEM_ENIGMA_BERRY);
+ if (hasItem == TRUE)
+ GetBerryNameByBerryType(ItemIdToBerryType(ITEM_ENIGMA_BERRY), gStringVar1);
+
+ return hasItem;
+}
+
+void CreateScriptedWildMon(u16 species, u8 level, u16 item)
+{
+ u8 heldItem[2];
+
+ ZeroEnemyPartyMons();
+ CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, 0, 0);
+ if (item)
+ {
+ heldItem[0] = item;
+ heldItem[1] = item >> 8;
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem);
+ }
+}
+
+void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot)
+{
+ if (monIndex > PARTY_SIZE)
+ monIndex = gPlayerPartyCount - 1;
+
+ SetMonMoveSlot(&gPlayerParty[monIndex], move, slot);
+}
+
+void sub_80F9438(void)
+{
+ gMain.savedCallback = sub_80F9460;
+ VarSet(VAR_FRONTIER_FACILITY, 9); // this isn't a valid frontier facility id (??)
+ sub_81B8518(0);
+}
+
+static void sub_80F9460(void)
+{
+ switch (gSelectedOrderFromParty[0])
+ {
+ case 0:
+ gSpecialVar_Result = 0;
+ break;
+ default:
+ gSpecialVar_Result = 1;
+ break;
+ }
+
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+}
+
+void sub_80F9490(void)
+{
+ gMain.savedCallback = sub_80F94B8;
+ sub_81B8518(gSpecialVar_0x8004 + 1);
+}
+
+static void sub_80F94B8(void)
+{
+ switch (gSelectedOrderFromParty[0])
+ {
+ case 0:
+ gSpecialVar_Result = 0;
+ break;
+ default:
+ gSpecialVar_Result = 1;
+ break;
+ }
+
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+}
+
+void ReducePlayerPartyToSelectedMons(void)
+{
+ struct Pokemon party[4];
+ int i;
+
+ CpuFill32(0, party, sizeof party);
+
+ // copy the selected pokemon according to the order.
+ for (i = 0; i < 4; i++)
+ if (gSelectedOrderFromParty[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop
+ party[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; // index is 0 based, not literal
+
+ CpuFill32(0, gPlayerParty, sizeof gPlayerParty);
+
+ // overwrite the first 4 with the order copied to.
+ for (i = 0; i < 4; i++)
+ gPlayerParty[i] = party[i];
+
+ CalculatePlayerPartyCount();
+}
diff --git a/src/secret_base.c b/src/secret_base.c
index a684f3982..8436d8520 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -40,6 +40,7 @@
#include "tv.h"
#include "secret_base.h"
#include "constants/map_types.h"
+#include "constants/trainers.h"
extern void mapldr_default(void);
@@ -997,7 +998,7 @@ void sub_80E9FB0(u8 taskId)
{
s8 input;
- input = Menu_ProcessInputNoWrapAround();
+ input = Menu_ProcessInputNoWrap();
switch (input)
{
case -1:
@@ -1031,7 +1032,7 @@ void sub_80E9FFC(u8 taskId)
void sub_80EA06C(u8 taskId)
{
- sub_8197930();
+ DisplayYesNoMenu();
sub_8121F68(taskId, &gUnknown_0858D058);
}
@@ -1143,7 +1144,7 @@ const u8 *GetSecretBaseTrainerLoseText(void)
void sub_80EA2E4(void)
{
sub_813BADC(TRUE);
- gTrainerBattleOpponent_A = 0x400;
+ gTrainerBattleOpponent_A = TRAINER_SECRET_BASE;
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_SECRET_BASE;
}
diff --git a/src/shop.c b/src/shop.c
index 26151171a..a0eddee01 100755
--- a/src/shop.c
+++ b/src/shop.c
@@ -1,15 +1,20 @@
#include "global.h"
#include "bg.h"
+#include "data2.h"
#include "decompress.h"
#include "decoration.h"
+#include "decoration_inventory.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "field_screen.h"
#include "field_weather.h"
#include "fieldmap.h"
#include "gpu_regs.h"
+#include "graphics.h"
#include "international_string_util.h"
#include "item.h"
#include "item_icon.h"
+#include "item_menu.h"
#include "list_menu.h"
#include "main.h"
#include "malloc.h"
@@ -18,6 +23,7 @@
#include "money.h"
#include "overworld.h"
#include "palette.h"
+#include "party_menu.h"
#include "scanline_effect.h"
#include "script.h"
#include "shop.h"
@@ -27,54 +33,243 @@
#include "strings.h"
#include "text_window.h"
#include "tv.h"
+#include "constants/items.h"
+#include "constants/metatile_behaviors.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-extern struct ShopData *gShopDataPtr;
-extern struct ListMenuItem *gUnknown_02039F74;
-extern u8 (*gUnknown_02039F78)[16];
-extern struct MartInfo gMartInfo;
-
-extern const struct WindowTemplate gUnknown_08589A38[2];
-extern const struct MenuAction gUnknown_08589A10[3];
-extern const struct MenuAction gUnknown_08589A28[2];
-extern const struct ListMenuTemplate gUnknown_08589A48;
-extern const struct BgTemplate gUnknown_08589A60[4];
-extern const u8 gBuyMenuFrame_Gfx[];
-extern const u8 gBuyMenuFrame_Tilemap[];
-extern const u16 gMenuMoneyPal[];
-extern const struct WindowTemplate gUnknown_08589A70[];
-extern u8 gUnknown_08589AB0[][3];
+EWRAM_DATA struct MartInfo gMartInfo = {0};
+EWRAM_DATA struct ShopData *gShopDataPtr = NULL;
+EWRAM_DATA struct ListMenuItem *gUnknown_02039F74 = NULL;
+EWRAM_DATA u8 (*gUnknown_02039F78)[16] = {0};
+EWRAM_DATA u8 gMartPurchaseHistoryId = 0;
+EWRAM_DATA struct ItemSlot gMartPurchaseHistory[3] = {0};
static void Task_ShopMenu(u8 taskId);
-void HandleShopMenuQuit(u8 taskId);
-void CB2_InitBuyMenu(void);
+static void Task_HandleShopMenuQuit(u8 taskId);
+static void CB2_InitBuyMenu(void);
static void Task_GoToBuyOrSellMenu(u8 taskId);
-void CB2_GoToSellMenu(void);
-void MapPostLoadHook_ExitBuyOrSellMenu(void);
-void Task_ExitSellMenu(u8 taskId);
-void ReturnToShopMenuAfterExitingSellMenu(u8 taskId);
-void BuyMenuDrawGraphics(void);
-void BuyMenuAddScrollIndicatorArrows(void);
-void Task_BuyMenu(u8 taskId);
-void BuyMenuBuildListMenuTemplate(void);
-void BuyMenuInitBgs(void);
-void BuyMenuInitWindows(void);
-void BuyMenuDecompressBgGraphics(void);
-void BuyMenuSetListEntry(struct ListMenuItem*, u16, u8*);
-void BuyMenuAddItemIcon(u16, u8);
-void BuyMenuRemoveItemIcon(u16, u8);
-void BuyMenuPrint(u8 windowId, const u8 *text, u8 x, u8 y, s8 speed, u8 colorSet);
-void BuyMenuDrawMapGraphics(void);
-void BuyMenuCopyMenuBgToBg1TilemapBuffer(void);
-void BuyMenuCollectEventObjectData(void);
-void BuyMenuDrawEventObjects(void);
-void BuyMenuDrawMapBg(void);
-bool8 BuyMenuCheckForOverlapWithMenuBg(u16, u16);
-void BuyMenuDrawMapMetatile(s16, s16, u16*, u8);
-
-
-/*static*/ u8 CreateShopMenu(u8 martType)
+static void MapPostLoadHook_ReturnToShopMenu(void);
+static void Task_ReturnToShopMenu(u8 taskId);
+static void ShowShopMenuAfterExitingBuyOrSellMenu(u8 taskId);
+static void BuyMenuDrawGraphics(void);
+static void BuyMenuAddScrollIndicatorArrows(void);
+static void Task_BuyMenu(u8 taskId);
+static void BuyMenuBuildListMenuTemplate(void);
+static void BuyMenuInitBgs(void);
+static void BuyMenuInitWindows(void);
+static void BuyMenuDecompressBgGraphics(void);
+static void BuyMenuSetListEntry(struct ListMenuItem*, u16, u8*);
+static void BuyMenuAddItemIcon(u16, u8);
+static void BuyMenuRemoveItemIcon(u16, u8);
+static void BuyMenuPrint(u8 windowId, const u8 *text, u8 x, u8 y, s8 speed, u8 colorSet);
+static void BuyMenuDrawMapGraphics(void);
+static void BuyMenuCopyMenuBgToBg1TilemapBuffer(void);
+static void BuyMenuCollectEventObjectData(void);
+static void BuyMenuDrawEventObjects(void);
+static void BuyMenuDrawMapBg(void);
+static bool8 BuyMenuCheckForOverlapWithMenuBg(int, int);
+static void BuyMenuDrawMapMetatile(s16, s16, const u16*, u8);
+static void BuyMenuDrawMapMetatileLayer(u16 *dest, s16 offset1, s16 offset2, const u16 *src);
+static bool8 BuyMenuCheckIfEventObjectOverlapsMenuBg(s16 *);
+static void ExitBuyMenu(u8 taskId);
+static void Task_ExitBuyMenu(u8 taskId);
+static void BuyMenuTryMakePurchase(u8 taskId);
+static void BuyMenuReturnToItemList(u8 taskId);
+static void Task_BuyHowManyDialogueInit(u8 taskId);
+static void BuyMenuConfirmPurchase(u8 taskId);
+static void BuyMenuPrintItemQuantityAndPrice(u8 taskId);
+static void Task_BuyHowManyDialogueHandleInput(u8 taskId);
+static void BuyMenuSubtractMoney(u8 taskId);
+static void RecordItemPurchase(u8 taskId);
+static void Task_ReturnToItemListAfterItemPurchase(u8 taskId);
+static void Task_ReturnToItemListAfterDecorationPurchase(u8 taskId);
+static void Task_HandleShopMenuBuy(u8 taskId);
+static void Task_HandleShopMenuSell(u8 taskId);
+static void BuyMenuPrintItemDescriptionAndShowItemIcon(int item, bool8 onInit, struct ListMenu *list);
+static void BuyMenuPrintPriceInList(u8 windowId, int item, u8 y);
+
+static const struct YesNoFuncTable sShopPurchaseYesNoFuncs =
+{
+ BuyMenuTryMakePurchase,
+ BuyMenuReturnToItemList
+};
+
+static const struct MenuAction sShopMenuActions_BuySellQuit[] =
+{
+ { gText_ShopBuy, {.void_u8=Task_HandleShopMenuBuy} },
+ { gText_ShopSell, {.void_u8=Task_HandleShopMenuSell} },
+ { gText_ShopQuit, {.void_u8=Task_HandleShopMenuQuit} }
+};
+
+static const struct MenuAction sShopMenuActions_BuyQuit[] =
+{
+ { gText_ShopBuy, {.void_u8=Task_HandleShopMenuBuy} },
+ { gText_ShopQuit, {.void_u8=Task_HandleShopMenuQuit} }
+};
+
+static const struct WindowTemplate sShopMenuWindowTemplates[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 1,
+ .width = 9,
+ .height = 6,
+ .paletteNum = 15,
+ .baseBlock = 0x0008,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 1,
+ .width = 9,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x0008,
+ }
+};
+
+static const struct ListMenuTemplate sShopBuyMenuListTemplate =
+{
+ .items = NULL,
+ .moveCursorFunc = BuyMenuPrintItemDescriptionAndShowItemIcon,
+ .itemPrintFunc = BuyMenuPrintPriceInList,
+ .totalItems = 0,
+ .maxShowed = 0,
+ .windowId = 1,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 0,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 7,
+ .cursorKind = 0
+};
+
+static const struct BgTemplate sShopBuyMenuBgTemplates[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 28,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ }
+};
+
+static const struct WindowTemplate sShopBuyMenuWindowTemplates[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 10,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x001E,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 14,
+ .tilemapTop = 2,
+ .width = 15,
+ .height = 16,
+ .paletteNum = 15,
+ .baseBlock = 0x0032,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 13,
+ .width = 14,
+ .height = 6,
+ .paletteNum = 15,
+ .baseBlock = 0x0122,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 11,
+ .width = 12,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x0176,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 18,
+ .tilemapTop = 11,
+ .width = 10,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x018E,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 15,
+ .width = 27,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x01A2,
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate sShopBuyMenuYesNoWindowTemplates =
+{
+ .bg = 0,
+ .tilemapLeft = 21,
+ .tilemapTop = 9,
+ .width = 5,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x020E,
+};
+
+static const u8 sShopBuyMenuTextColors[][3] =
+{
+ {1, 2, 3},
+ {0, 2, 3},
+ {0, 3, 2}
+};
+
+static u8 CreateShopMenu(u8 martType)
{
int numMenuItems;
@@ -84,20 +279,20 @@ void BuyMenuDrawMapMetatile(s16, s16, u16*, u8);
if (martType == MART_TYPE_0)
{
struct WindowTemplate winTemplate;
- winTemplate = gUnknown_08589A38[0];
- winTemplate.width = GetMaxWidthInMenuTable(gUnknown_08589A10, ARRAY_COUNT(gUnknown_08589A10));
+ winTemplate = sShopMenuWindowTemplates[0];
+ winTemplate.width = GetMaxWidthInMenuTable(sShopMenuActions_BuySellQuit, ARRAY_COUNT(sShopMenuActions_BuySellQuit));
gMartInfo.windowId = AddWindow(&winTemplate);
- gMartInfo.menuActions = gUnknown_08589A10;
- numMenuItems = ARRAY_COUNT(gUnknown_08589A10);
+ gMartInfo.menuActions = sShopMenuActions_BuySellQuit;
+ numMenuItems = ARRAY_COUNT(sShopMenuActions_BuySellQuit);
}
else
{
struct WindowTemplate winTemplate;
- winTemplate = gUnknown_08589A38[1];
- winTemplate.width = GetMaxWidthInMenuTable(gUnknown_08589A28, ARRAY_COUNT(gUnknown_08589A28));
+ winTemplate = sShopMenuWindowTemplates[1];
+ winTemplate.width = GetMaxWidthInMenuTable(sShopMenuActions_BuyQuit, ARRAY_COUNT(sShopMenuActions_BuyQuit));
gMartInfo.windowId = AddWindow(&winTemplate);
- gMartInfo.menuActions = gUnknown_08589A28;
- numMenuItems = ARRAY_COUNT(gUnknown_08589A28);
+ gMartInfo.menuActions = sShopMenuActions_BuyQuit;
+ numMenuItems = ARRAY_COUNT(sShopMenuActions_BuyQuit);
}
SetStandardWindowBorderStyle(gMartInfo.windowId, 0);
@@ -109,12 +304,12 @@ void BuyMenuDrawMapMetatile(s16, s16, u16*, u8);
return CreateTask(Task_ShopMenu, 8);
}
-/*static*/ void SetShopMenuCallback(void (* callback)(void))
+static void SetShopMenuCallback(void (* callback)(void))
{
gMartInfo.callback = callback;
}
-/*static*/ void SetShopItemsForSale(const u16 *items)
+static void SetShopItemsForSale(const u16 *items)
{
u16 i = 0;
@@ -130,14 +325,14 @@ void BuyMenuDrawMapMetatile(s16, s16, u16*, u8);
static void Task_ShopMenu(u8 taskId)
{
- s8 inputCode = Menu_ProcessInputNoWrapAround();
+ s8 inputCode = Menu_ProcessInputNoWrap();
switch (inputCode)
{
- case -2:
+ case LIST_B_PRESSED:
break;
- case -1:
+ case LIST_NOTHING_CHOSEN:
PlaySE(SE_SELECT);
- HandleShopMenuQuit(taskId);
+ Task_HandleShopMenuQuit(taskId);
break;
default:
gMartInfo.menuActions[inputCode].func.void_u8(taskId);
@@ -145,31 +340,31 @@ static void Task_ShopMenu(u8 taskId)
}
}
-void HandleShopMenuBuy(u8 taskId)
+static void Task_HandleShopMenuBuy(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
- taskData[8] = (u32)CB2_InitBuyMenu >> 16;
- taskData[9] = (u32)CB2_InitBuyMenu;
+ s16 *data = gTasks[taskId].data;
+ data[8] = (u32)CB2_InitBuyMenu >> 16;
+ data[9] = (u32)CB2_InitBuyMenu;
gTasks[taskId].func = Task_GoToBuyOrSellMenu;
FadeScreen(1, 0);
}
-void HandleShopMenuSell(u8 taskId)
+static void Task_HandleShopMenuSell(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
- taskData[8] = (u32)CB2_GoToSellMenu >> 16;
- taskData[9] = (u32)CB2_GoToSellMenu;
+ s16 *data = gTasks[taskId].data;
+ data[8] = (u32)CB2_GoToSellMenu >> 16;
+ data[9] = (u32)CB2_GoToSellMenu;
gTasks[taskId].func = Task_GoToBuyOrSellMenu;
FadeScreen(1, 0);
}
void CB2_ExitSellMenu(void)
{
- gFieldCallback = MapPostLoadHook_ExitBuyOrSellMenu;
+ gFieldCallback = MapPostLoadHook_ReturnToShopMenu;
SetMainCallback2(CB2_ReturnToField);
}
-/*static*/ void HandleShopMenuQuit(u8 taskId)
+static void Task_HandleShopMenuQuit(u8 taskId)
{
sub_8198070(gMartInfo.windowId, 2);
RemoveWindow(gMartInfo.windowId);
@@ -183,38 +378,38 @@ void CB2_ExitSellMenu(void)
static void Task_GoToBuyOrSellMenu(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
if (!gPaletteFade.active)
{
DestroyTask(taskId);
- SetMainCallback2((void *)((u16)taskData[8] << 16 | (u16)taskData[9]));
+ SetMainCallback2((void *)((u16)data[8] << 16 | (u16)data[9]));
}
}
-void MapPostLoadHook_ExitBuyOrSellMenu(void)
+static void MapPostLoadHook_ReturnToShopMenu(void)
{
pal_fill_black();
- CreateTask(Task_ExitSellMenu, 8);
+ CreateTask(Task_ReturnToShopMenu, 8);
}
-void Task_ExitSellMenu(u8 taskId)
+static void Task_ReturnToShopMenu(u8 taskId)
{
if (IsWeatherNotFadingIn() == TRUE)
{
if (gMartInfo.martType == MART_TYPE_2)
- DisplayItemMessageOnField(taskId, gText_CanIHelpWithAnythingElse, ReturnToShopMenuAfterExitingSellMenu);
+ DisplayItemMessageOnField(taskId, gText_CanIHelpWithAnythingElse, ShowShopMenuAfterExitingBuyOrSellMenu);
else
- DisplayItemMessageOnField(taskId, gText_AnythingElseICanHelp, ReturnToShopMenuAfterExitingSellMenu);
+ DisplayItemMessageOnField(taskId, gText_AnythingElseICanHelp, ShowShopMenuAfterExitingBuyOrSellMenu);
}
}
-void ReturnToShopMenuAfterExitingSellMenu(u8 taskId)
+static void ShowShopMenuAfterExitingBuyOrSellMenu(u8 taskId)
{
CreateShopMenu(gMartInfo.martType);
DestroyTask(taskId);
}
-void CB2_BuyMenu(void)
+static void CB2_BuyMenu(void)
{
RunTasks();
AnimateSprites();
@@ -223,14 +418,18 @@ void CB2_BuyMenu(void)
UpdatePaletteFade();
}
-void VBlankCB_BuyMenu(void)
+static void VBlankCB_BuyMenu(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-void CB2_InitBuyMenu(void)
+#define tItemCount data[1]
+#define tItemId data[5]
+#define tListTaskId data[7]
+
+static void CB2_InitBuyMenu(void)
{
u8 taskId;
@@ -248,8 +447,8 @@ void CB2_InitBuyMenu(void)
clear_scheduled_bg_copies_to_vram();
gShopDataPtr = AllocZeroed(sizeof(struct ShopData));
gShopDataPtr->scrollIndicatorsTaskId = 0xFF;
- gShopDataPtr->unk200D[0] = -1;
- gShopDataPtr->unk200D[1] = -1;
+ gShopDataPtr->itemSpriteIds[0] = -1;
+ gShopDataPtr->itemSpriteIds[1] = -1;
BuyMenuBuildListMenuTemplate();
BuyMenuInitBgs();
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
@@ -268,7 +467,7 @@ void CB2_InitBuyMenu(void)
BuyMenuDrawGraphics();
BuyMenuAddScrollIndicatorArrows();
taskId = CreateTask(Task_BuyMenu, 8);
- gTasks[taskId].data[7] = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+ gTasks[taskId].tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
SetVBlankCallback(VBlankCB_BuyMenu);
@@ -277,7 +476,7 @@ void CB2_InitBuyMenu(void)
}
}
-void BuyMenuFreeMemory(void)
+static void BuyMenuFreeMemory(void)
{
Free(gShopDataPtr);
Free(gUnknown_02039F74);
@@ -285,7 +484,7 @@ void BuyMenuFreeMemory(void)
FreeAllWindowBuffers();
}
-void BuyMenuBuildListMenuTemplate(void)
+static void BuyMenuBuildListMenuTemplate(void)
{
u16 i;
u16 itemCount;
@@ -299,7 +498,7 @@ void BuyMenuBuildListMenuTemplate(void)
gUnknown_02039F74[i].name = gUnknown_02039F78[i];
gUnknown_02039F74[i].id = -2;
- gMultiuseListMenuTemplate = gUnknown_08589A48;
+ gMultiuseListMenuTemplate = sShopBuyMenuListTemplate;
gMultiuseListMenuTemplate.items = gUnknown_02039F74;
gMultiuseListMenuTemplate.totalItems = gMartInfo.itemCount + 1;
if (gMultiuseListMenuTemplate.totalItems > 8)
@@ -307,10 +506,10 @@ void BuyMenuBuildListMenuTemplate(void)
else
gMultiuseListMenuTemplate.maxShowed = gMultiuseListMenuTemplate.totalItems;
- gShopDataPtr->unk2004 = gMultiuseListMenuTemplate.maxShowed;
+ gShopDataPtr->itemsShowed = gMultiuseListMenuTemplate.maxShowed;
}
-void BuyMenuSetListEntry(struct ListMenuItem *menuItem, u16 item, u8 *name)
+static void BuyMenuSetListEntry(struct ListMenuItem *menuItem, u16 item, u8 *name)
{
if (gMartInfo.martType == MART_TYPE_0)
CopyItemName(item, name);
@@ -321,19 +520,19 @@ void BuyMenuSetListEntry(struct ListMenuItem *menuItem, u16 item, u8 *name)
menuItem->id = item;
}
-void BuyMenuPrintItemDescriptionAndShowItemIcon(int item, bool8 onInit, struct ListMenu *list)
+static void BuyMenuPrintItemDescriptionAndShowItemIcon(int item, bool8 onInit, struct ListMenu *list)
{
const u8 *description;
if (onInit != TRUE)
PlaySE(SE_SELECT);
if (item != -2)
- BuyMenuAddItemIcon(item, gShopDataPtr->unk200C);
+ BuyMenuAddItemIcon(item, gShopDataPtr->iconSlot);
else
- BuyMenuAddItemIcon(-1, gShopDataPtr->unk200C);
+ BuyMenuAddItemIcon(-1, gShopDataPtr->iconSlot);
- BuyMenuRemoveItemIcon(item, gShopDataPtr->unk200C ^ 1);
- gShopDataPtr->unk200C ^= 1;
+ BuyMenuRemoveItemIcon(item, gShopDataPtr->iconSlot ^ 1);
+ gShopDataPtr->iconSlot ^= 1;
if (item != -2)
{
if (gMartInfo.martType == MART_TYPE_0)
@@ -350,7 +549,7 @@ void BuyMenuPrintItemDescriptionAndShowItemIcon(int item, bool8 onInit, struct L
BuyMenuPrint(2, description, 3, 1, 0, 0);
}
-void BuyMenuPrintPriceInList(u8 windowId, int item, u8 y)
+static void BuyMenuPrintPriceInList(u8 windowId, int item, u8 y)
{
u8 x;
@@ -375,11 +574,11 @@ void BuyMenuPrintPriceInList(u8 windowId, int item, u8 y)
StringExpandPlaceholders(gStringVar4, gText_PokedollarVar1);
x = GetStringRightAlignXOffset(7, gStringVar4, 0x78);
- AddTextPrinterParameterized4(windowId, 7, x, y, 0, 0, gUnknown_08589AB0[1], -1, gStringVar4);
+ AddTextPrinterParameterized4(windowId, 7, x, y, 0, 0, sShopBuyMenuTextColors[1], -1, gStringVar4);
}
}
-void BuyMenuAddScrollIndicatorArrows(void)
+static void BuyMenuAddScrollIndicatorArrows(void)
{
if (gShopDataPtr->scrollIndicatorsTaskId == 0xFF && gMartInfo.itemCount + 1 > 8)
{
@@ -389,13 +588,13 @@ void BuyMenuAddScrollIndicatorArrows(void)
0xC,
0x94,
gMartInfo.itemCount - 7,
- 0x834,
- 0x834,
- &gShopDataPtr->unk2008);
+ 2100,
+ 2100,
+ &gShopDataPtr->scrollOffset);
}
}
-void BuyMenuRemoveScrollIndicatorArrows(void)
+static void BuyMenuRemoveScrollIndicatorArrows(void)
{
if (gShopDataPtr->scrollIndicatorsTaskId != 0xFF)
{
@@ -404,22 +603,22 @@ void BuyMenuRemoveScrollIndicatorArrows(void)
}
}
-void BuyMenuPrintCursor(u8 scrollIndicatorsTaskId, u8 colorSet)
+static void BuyMenuPrintCursor(u8 scrollIndicatorsTaskId, u8 colorSet)
{
u8 y = ListMenuGetYCoordForPrintingArrowCursor(scrollIndicatorsTaskId);
BuyMenuPrint(1, gText_SelectorArrow2, 0, y, 0, colorSet);
}
-void BuyMenuAddItemIcon(u16 item, u8 iconSlot)
+static void BuyMenuAddItemIcon(u16 item, u8 iconSlot)
{
u8 spriteId;
- u8 *spriteIdPtr = &gShopDataPtr->unk200D[iconSlot];
+ u8 *spriteIdPtr = &gShopDataPtr->itemSpriteIds[iconSlot];
if (*spriteIdPtr != 0xFF)
return;
if (gMartInfo.martType == MART_TYPE_0 || item == 0xFFFF)
{
- spriteId = AddItemIconSprite(iconSlot + 0x83E, iconSlot + 0x83E, item);
+ spriteId = AddItemIconSprite(iconSlot + 2110, iconSlot + 2110, item);
if (spriteId != MAX_SPRITES)
{
*spriteIdPtr = spriteId;
@@ -429,28 +628,28 @@ void BuyMenuAddItemIcon(u16 item, u8 iconSlot)
}
else
{
- spriteId = AddDecorationIconObject(item, 20, 84, 1, iconSlot + 0x83E, iconSlot + 0x83E);
+ spriteId = AddDecorationIconObject(item, 20, 84, 1, iconSlot + 2110, iconSlot + 2110);
if (spriteId != MAX_SPRITES)
*spriteIdPtr = spriteId;
}
}
-void BuyMenuRemoveItemIcon(u16 item, u8 iconSlot)
+static void BuyMenuRemoveItemIcon(u16 item, u8 iconSlot)
{
- u8 *spriteIdPtr = &gShopDataPtr->unk200D[iconSlot];
+ u8 *spriteIdPtr = &gShopDataPtr->itemSpriteIds[iconSlot];
if (*spriteIdPtr == 0xFF)
return;
- FreeSpriteTilesByTag(iconSlot + 0x83E);
- FreeSpritePaletteByTag(iconSlot + 0x83E);
+ FreeSpriteTilesByTag(iconSlot + 2110);
+ FreeSpritePaletteByTag(iconSlot + 2110);
DestroySprite(&gSprites[*spriteIdPtr]);
*spriteIdPtr = 0xFF;
}
-void BuyMenuInitBgs(void)
+static void BuyMenuInitBgs(void)
{
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_08589A60, ARRAY_COUNT(gUnknown_08589A60));
+ InitBgsFromTemplates(0, sShopBuyMenuBgTemplates, ARRAY_COUNT(sShopBuyMenuBgTemplates));
SetBgTilemapBuffer(1, gShopDataPtr->tilemapBuffers[1]);
SetBgTilemapBuffer(2, gShopDataPtr->tilemapBuffers[3]);
SetBgTilemapBuffer(3, gShopDataPtr->tilemapBuffers[2]);
@@ -470,16 +669,16 @@ void BuyMenuInitBgs(void)
ShowBg(3);
}
-void BuyMenuDecompressBgGraphics(void)
+static void BuyMenuDecompressBgGraphics(void)
{
decompress_and_copy_tile_data_to_vram(1, gBuyMenuFrame_Gfx, 0x3A0, 0x3E3, 0);
LZDecompressWram(gBuyMenuFrame_Tilemap, gShopDataPtr->tilemapBuffers[0]);
LoadCompressedPalette(gMenuMoneyPal, 0xC0, 0x20);
}
-void BuyMenuInitWindows(void)
+static void BuyMenuInitWindows(void)
{
- InitWindows(gUnknown_08589A70);
+ InitWindows(sShopBuyMenuWindowTemplates);
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 1, 0xD0);
LoadMessageBoxGfx(0, 0xA, 0xE0);
@@ -488,18 +687,18 @@ void BuyMenuInitWindows(void)
PutWindowTilemap(2);
}
-void BuyMenuPrint(u8 windowId, const u8 *text, u8 x, u8 y, s8 speed, u8 colorSet)
+static void BuyMenuPrint(u8 windowId, const u8 *text, u8 x, u8 y, s8 speed, u8 colorSet)
{
- AddTextPrinterParameterized4(windowId, 1, x, y, 0, 0, gUnknown_08589AB0[colorSet], speed, text);
+ AddTextPrinterParameterized4(windowId, 1, x, y, 0, 0, sShopBuyMenuTextColors[colorSet], speed, text);
}
-void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback)
+static void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback)
{
- DisplayMessageAndContinueTask(taskId, 5, 10, 14, 1, GetPlayerTextSpeed(), text, callback);
+ DisplayMessageAndContinueTask(taskId, 5, 10, 14, 1, GetPlayerTextSpeedDelay(), text, callback);
schedule_bg_copy_tilemap_to_vram(0);
}
-void BuyMenuDrawGraphics(void)
+static void BuyMenuDrawGraphics(void)
{
BuyMenuDrawMapGraphics();
BuyMenuCopyMenuBgToBg1TilemapBuffer();
@@ -511,24 +710,22 @@ void BuyMenuDrawGraphics(void)
schedule_bg_copy_tilemap_to_vram(3);
}
-void BuyMenuDrawMapGraphics(void)
+static void BuyMenuDrawMapGraphics(void)
{
BuyMenuCollectEventObjectData();
BuyMenuDrawEventObjects();
BuyMenuDrawMapBg();
}
-#ifdef NONMATCHING
-// functionally equivalent, but couldn't get the loop variables using the
-// stack correctly. Might be related to the tileset metatiles type.
-void BuyMenuDrawMapBg(void)
+static void BuyMenuDrawMapBg(void)
{
s16 i;
s16 j;
s16 x;
s16 y;
const struct MapLayout *mapLayout;
- u16 metatile, metatileLayerType;
+ u16 metatile;
+ u8 metatileLayerType;
mapLayout = gMapHeader.mapLayout;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
@@ -545,135 +742,491 @@ void BuyMenuDrawMapBg(void)
else
metatileLayerType = 1;
- if (metatile < 0x200)
+ if (metatile < NUM_METATILES_IN_PRIMARY)
{
BuyMenuDrawMapMetatile(i, j, (u16*)mapLayout->primaryTileset->metatiles + metatile * 8, metatileLayerType);
}
else
{
- BuyMenuDrawMapMetatile(i, j, (u16*)mapLayout->secondaryTileset->metatiles + ((metatile - 0x200) * 8), metatileLayerType);
+ BuyMenuDrawMapMetatile(i, j, (u16*)mapLayout->secondaryTileset->metatiles + ((metatile - NUM_METATILES_IN_PRIMARY) * 8), metatileLayerType);
+ }
+ }
+ }
+}
+
+static void BuyMenuDrawMapMetatile(s16 x, s16 y, const u16 *src, u8 metatileLayerType)
+{
+ u16 offset1 = x * 2;
+ u16 offset2 = y * 64;
+
+ switch (metatileLayerType)
+ {
+ case 0:
+ BuyMenuDrawMapMetatileLayer(gShopDataPtr->tilemapBuffers[3], offset1, offset2, src);
+ BuyMenuDrawMapMetatileLayer(gShopDataPtr->tilemapBuffers[1], offset1, offset2, src + 4);
+ break;
+ case 1:
+ BuyMenuDrawMapMetatileLayer(gShopDataPtr->tilemapBuffers[2], offset1, offset2, src);
+ BuyMenuDrawMapMetatileLayer(gShopDataPtr->tilemapBuffers[3], offset1, offset2, src + 4);
+ break;
+ case 2:
+ BuyMenuDrawMapMetatileLayer(gShopDataPtr->tilemapBuffers[2], offset1, offset2, src);
+ BuyMenuDrawMapMetatileLayer(gShopDataPtr->tilemapBuffers[1], offset1, offset2, src + 4);
+ break;
+ }
+}
+
+static void BuyMenuDrawMapMetatileLayer(u16 *dest, s16 offset1, s16 offset2, const u16 *src)
+{
+ // This function draws a whole 2x2 metatile.
+ dest[offset1 + offset2] = src[0]; // top left
+ dest[offset1 + offset2 + 1] = src[1]; // top right
+ dest[offset1 + offset2 + 32] = src[2]; // bottom left
+ dest[offset1 + offset2 + 33] = src[3]; // bottom right
+}
+
+static void BuyMenuCollectEventObjectData(void)
+{
+ s16 facingX;
+ s16 facingY;
+ u8 y;
+ u8 x;
+ u8 r8 = 0;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY);
+ for (y = 0; y < 16; y++)
+ gShopDataPtr->viewportObjects[y][EVENT_OBJ_ID] = 16;
+ for (y = 0; y < 5; y++)
+ {
+ for (x = 0; x < 7; x++)
+ {
+ u8 eventObjId = GetEventObjectIdByXY(facingX - 4 + x, facingY - 2 + y);
+
+ if (eventObjId != 16)
+ {
+ gShopDataPtr->viewportObjects[r8][EVENT_OBJ_ID] = eventObjId;
+ gShopDataPtr->viewportObjects[r8][X_COORD] = x;
+ gShopDataPtr->viewportObjects[r8][Y_COORD] = y;
+ gShopDataPtr->viewportObjects[r8][LAYER_TYPE] = MapGridGetMetatileLayerTypeAt(facingX - 4 + x, facingY - 2 + y);
+
+ switch (gEventObjects[eventObjId].facingDirection)
+ {
+ case DIR_SOUTH:
+ gShopDataPtr->viewportObjects[r8][ANIM_NUM] = 0;
+ break;
+ case DIR_NORTH:
+ gShopDataPtr->viewportObjects[r8][ANIM_NUM] = 1;
+ break;
+ case DIR_WEST:
+ gShopDataPtr->viewportObjects[r8][ANIM_NUM] = 2;
+ break;
+ case DIR_EAST:
+ default:
+ gShopDataPtr->viewportObjects[r8][ANIM_NUM] = 3;
+ break;
+ }
+ r8++;
+ }
+ }
+ }
+}
+
+static void BuyMenuDrawEventObjects(void)
+{
+ u8 i;
+ u8 spriteId;
+ const struct EventObjectGraphicsInfo *graphicsInfo;
+
+ for (i = 0; i < 16; i++) // max objects?
+ {
+ if (gShopDataPtr->viewportObjects[i][EVENT_OBJ_ID] == 16)
+ continue;
+
+ graphicsInfo = GetEventObjectGraphicsInfo(gEventObjects[gShopDataPtr->viewportObjects[i][EVENT_OBJ_ID]].graphicsId);
+
+ spriteId = AddPseudoEventObject(
+ gEventObjects[gShopDataPtr->viewportObjects[i][EVENT_OBJ_ID]].graphicsId,
+ SpriteCallbackDummy,
+ (u16)gShopDataPtr->viewportObjects[i][X_COORD] * 16 + 8,
+ (u16)gShopDataPtr->viewportObjects[i][Y_COORD] * 16 + 48 - graphicsInfo->height / 2,
+ 2);
+
+ if (BuyMenuCheckIfEventObjectOverlapsMenuBg(gShopDataPtr->viewportObjects[i]) == TRUE)
+ {
+ gSprites[spriteId].subspriteTableNum = 4;
+ gSprites[spriteId].subspriteMode = 1;
+ }
+
+ StartSpriteAnim(&gSprites[spriteId], gShopDataPtr->viewportObjects[i][ANIM_NUM]);
+ }
+}
+
+static bool8 BuyMenuCheckIfEventObjectOverlapsMenuBg(s16 *object)
+{
+ if (!BuyMenuCheckForOverlapWithMenuBg(object[X_COORD], object[Y_COORD] + 2) && object[LAYER_TYPE] != MB_SECRET_BASE_WALL)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void BuyMenuCopyMenuBgToBg1TilemapBuffer(void)
+{
+ s16 i;
+ u16 *dest = gShopDataPtr->tilemapBuffers[1];
+ const u16 *src = gShopDataPtr->tilemapBuffers[0];
+
+ for (i = 0; i < 1024; i++)
+ {
+ if (src[i] != 0)
+ {
+ dest[i] = src[i] + 0xC3E3;
+ }
+ }
+}
+
+static bool8 BuyMenuCheckForOverlapWithMenuBg(int x, int y)
+{
+ const u16 *metatile = gShopDataPtr->tilemapBuffers[0];
+ int offset1 = x * 2;
+ int offset2 = y * 64;
+
+ if (metatile[offset2 + offset1] == 0 &&
+ metatile[offset2 + offset1 + 32] == 0 &&
+ metatile[offset2 + offset1 + 1] == 0 &&
+ metatile[offset2 + offset1 + 33] == 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void Task_BuyMenu(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (!gPaletteFade.active)
+ {
+ s32 itemId = ListMenuHandleInputGetItemId(tListTaskId);
+ ListMenuGetScrollAndRow(tListTaskId, &gShopDataPtr->scrollOffset, &gShopDataPtr->selectedRow);
+
+ switch (itemId)
+ {
+ case LIST_NOTHING_CHOSEN:
+ break;
+ case LIST_B_PRESSED:
+ PlaySE(SE_SELECT);
+ ExitBuyMenu(taskId);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ tItemId = itemId;
+ ClearWindowTilemap(2);
+ BuyMenuRemoveScrollIndicatorArrows();
+ BuyMenuPrintCursor(tListTaskId, 2);
+
+ if (gMartInfo.martType == MART_TYPE_0)
+ {
+ gShopDataPtr->totalCost = (ItemId_GetPrice(itemId) >> GetPriceReduction(1));
+ }
+ else
+ {
+ gShopDataPtr->totalCost = gDecorations[itemId].price;
+ }
+
+ if (!IsEnoughMoney(&gSaveBlock1Ptr->money, gShopDataPtr->totalCost))
+ {
+ BuyMenuDisplayMessage(taskId, gText_YouDontHaveMoney, BuyMenuReturnToItemList);
+ }
+ else
+ {
+ if (gMartInfo.martType == MART_TYPE_0)
+ {
+ CopyItemName(itemId, gStringVar1);
+ if (ItemId_GetPocket(itemId) == POCKET_TM_HM)
+ {
+ StringCopy(gStringVar2, gMoveNames[ItemIdToBattleMoveId(itemId)]);
+ BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany2, Task_BuyHowManyDialogueInit);
+ }
+ else
+ {
+ BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany, Task_BuyHowManyDialogueInit);
+ }
+ }
+ else
+ {
+ StringCopy(gStringVar1, gDecorations[itemId].name);
+ ConvertIntToDecimalStringN(gStringVar2, gShopDataPtr->totalCost, STR_CONV_MODE_LEFT_ALIGN, 6);
+
+ if (gMartInfo.martType == MART_TYPE_1)
+ StringExpandPlaceholders(gStringVar4, gText_Var1IsItThatllBeVar2);
+ else
+ StringExpandPlaceholders(gStringVar4, gText_YouWantedVar1ThatllBeVar2);
+ BuyMenuDisplayMessage(taskId, gStringVar4, BuyMenuConfirmPurchase);
+ }
+ }
+ break;
+ }
+ }
+}
+
+static void Task_BuyHowManyDialogueInit(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ u16 quantityInBag = CountTotalItemQuantityInBag(tItemId);
+ u16 maxQuantity;
+
+ SetWindowBorderStyle(3, FALSE, 1, 13);
+ ConvertIntToDecimalStringN(gStringVar1, quantityInBag, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ StringExpandPlaceholders(gStringVar4, gText_InBagVar1);
+ BuyMenuPrint(3, gStringVar4, 0, 1, 0, 0);
+ tItemCount = 1;
+ SetWindowBorderStyle(4, FALSE, 1, 13);
+ BuyMenuPrintItemQuantityAndPrice(taskId);
+ schedule_bg_copy_tilemap_to_vram(0);
+
+ maxQuantity = GetMoney(&gSaveBlock1Ptr->money) / gShopDataPtr->totalCost;
+
+ if (maxQuantity > 99)
+ {
+ gShopDataPtr->maxQuantity = 99;
+ }
+ else
+ {
+ gShopDataPtr->maxQuantity = maxQuantity;
+ }
+
+ gTasks[taskId].func = Task_BuyHowManyDialogueHandleInput;
+}
+
+static void Task_BuyHowManyDialogueHandleInput(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (AdjustQuantityAccordingToDPadInput(&tItemCount, gShopDataPtr->maxQuantity) == TRUE)
+ {
+ gShopDataPtr->totalCost = (ItemId_GetPrice(tItemId) >> GetPriceReduction(1)) * tItemCount;
+ BuyMenuPrintItemQuantityAndPrice(taskId);
+ }
+ else
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8198070(4, 0);
+ sub_8198070(3, 0);
+ ClearWindowTilemap(4);
+ ClearWindowTilemap(3);
+ PutWindowTilemap(1);
+ CopyItemName(tItemId, gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar3, gShopDataPtr->totalCost, STR_CONV_MODE_LEFT_ALIGN, 6);
+ BuyMenuDisplayMessage(taskId, gText_Var1AndYouWantedVar2, BuyMenuConfirmPurchase);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8198070(4, 0);
+ sub_8198070(3, 0);
+ ClearWindowTilemap(4);
+ ClearWindowTilemap(3);
+ BuyMenuReturnToItemList(taskId);
+ }
+ }
+}
+
+static void BuyMenuConfirmPurchase(u8 taskId)
+{
+ CreateYesNoMenuWithCallbacks(taskId, &sShopBuyMenuYesNoWindowTemplates, 1, 0, 0, 1, 13, &sShopPurchaseYesNoFuncs);
+}
+
+static void BuyMenuTryMakePurchase(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ PutWindowTilemap(1);
+
+ if (gMartInfo.martType == MART_TYPE_0)
+ {
+ if (AddBagItem(tItemId, tItemCount) == TRUE)
+ {
+ BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, BuyMenuSubtractMoney);
+ RecordItemPurchase(taskId);
+ }
+ else
+ {
+ BuyMenuDisplayMessage(taskId, gText_NoMoreRoomForThis, BuyMenuReturnToItemList);
+ }
+ }
+ else
+ {
+ if (DecorationAdd(tItemId))
+ {
+ if (gMartInfo.martType == MART_TYPE_1)
+ {
+ BuyMenuDisplayMessage(taskId, gText_ThankYouIllSendItHome, BuyMenuSubtractMoney);
+ }
+ else
+ {
+ BuyMenuDisplayMessage(taskId, gText_ThanksIllSendItHome, BuyMenuSubtractMoney);
}
}
+ else
+ {
+ BuyMenuDisplayMessage(taskId, gText_SpaceForVar1Full, BuyMenuReturnToItemList);
+ }
}
}
-#else
-NAKED
-void BuyMenuDrawMapBg(void)
-{
- asm_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\
- ldr r0, =gMapHeader\n\
- ldr r0, [r0]\n\
- mov r9, r0\n\
- mov r4, sp\n\
- adds r4, 0x2\n\
- mov r0, sp\n\
- adds r1, r4, 0\n\
- bl GetXYCoordsOneStepInFrontOfPlayer\n\
- mov r1, sp\n\
- mov r0, sp\n\
- ldrh r0, [r0]\n\
- subs r0, 0x4\n\
- strh r0, [r1]\n\
- ldrh r0, [r4]\n\
- subs r0, 0x4\n\
- strh r0, [r4]\n\
- movs r1, 0\n\
- mov r10, r4\n\
-_080E05B6:\n\
- movs r4, 0\n\
- lsls r7, r1, 16\n\
- asrs r0, r7, 16\n\
- mov r8, r0\n\
-_080E05BE:\n\
- mov r0, sp\n\
- movs r1, 0\n\
- ldrsh r0, [r0, r1]\n\
- lsls r4, 16\n\
- asrs r5, r4, 16\n\
- adds r0, r5\n\
- mov r2, r10\n\
- movs r3, 0\n\
- ldrsh r1, [r2, r3]\n\
- add r1, r8\n\
- bl MapGridGetMetatileIdAt\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- adds r0, r5, 0\n\
- mov r1, r8\n\
- bl BuyMenuCheckForOverlapWithMenuBg\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bne _080E0608\n\
- mov r0, sp\n\
- movs r1, 0\n\
- ldrsh r0, [r0, r1]\n\
- adds r0, r5\n\
- mov r2, r10\n\
- movs r3, 0\n\
- ldrsh r1, [r2, r3]\n\
- add r1, r8\n\
- bl MapGridGetMetatileLayerTypeAt\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- b _080E060A\n\
- .pool\n\
-_080E0608:\n\
- movs r5, 0x1\n\
-_080E060A:\n\
- ldr r0, =0x000001ff\n\
- cmp r6, r0\n\
- bhi _080E062C\n\
- asrs r0, r4, 16\n\
- mov r2, r9\n\
- ldr r1, [r2, 0x10]\n\
- lsls r3, r6, 4\n\
- ldr r2, [r1, 0xC]\n\
- adds r2, r3\n\
- asrs r1, r7, 16\n\
- adds r3, r5, 0\n\
- bl BuyMenuDrawMapMetatile\n\
- b _080E0644\n\
- .pool\n\
-_080E062C:\n\
- asrs r0, r4, 16\n\
- mov r3, r9\n\
- ldr r2, [r3, 0x14]\n\
- ldr r3, =0xfffffe00\n\
- adds r1, r6, r3\n\
- lsls r1, 4\n\
- ldr r2, [r2, 0xC]\n\
- adds r2, r1\n\
- asrs r1, r7, 16\n\
- adds r3, r5, 0\n\
- bl BuyMenuDrawMapMetatile\n\
-_080E0644:\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r0, r4, r1\n\
- lsrs r4, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0xE\n\
- ble _080E05BE\n\
- adds r0, r7, r1\n\
- lsrs r1, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x9\n\
- ble _080E05B6\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\
- .pool");
-}
-#endif // NONMATCHING
+
+static void BuyMenuSubtractMoney(u8 taskId)
+{
+ IncrementGameStat(GAME_STAT_SHOPPED);
+ RemoveMoney(&gSaveBlock1Ptr->money, gShopDataPtr->totalCost);
+ PlaySE(SE_REGI);
+ PrintMoneyAmountInMoneyBox(0, GetMoney(&gSaveBlock1Ptr->money), 0);
+
+ if (gMartInfo.martType == MART_TYPE_0)
+ {
+ gTasks[taskId].func = Task_ReturnToItemListAfterItemPurchase;
+ }
+ else
+ {
+ gTasks[taskId].func = Task_ReturnToItemListAfterDecorationPurchase;
+ }
+}
+
+static void Task_ReturnToItemListAfterItemPurchase(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ if (tItemId == ITEM_POKE_BALL && tItemCount > 9 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE)
+ {
+ BuyMenuDisplayMessage(taskId, gText_ThrowInPremierBall, BuyMenuReturnToItemList);
+ }
+ else
+ {
+ BuyMenuReturnToItemList(taskId);
+ }
+ }
+}
+
+static void Task_ReturnToItemListAfterDecorationPurchase(u8 taskId)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ BuyMenuReturnToItemList(taskId);
+ }
+}
+
+static void BuyMenuReturnToItemList(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ sub_8197DF8(5, 0);
+ BuyMenuPrintCursor(tListTaskId, 1);
+ PutWindowTilemap(1);
+ PutWindowTilemap(2);
+ schedule_bg_copy_tilemap_to_vram(0);
+ BuyMenuAddScrollIndicatorArrows();
+ gTasks[taskId].func = Task_BuyMenu;
+}
+
+static void BuyMenuPrintItemQuantityAndPrice(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ FillWindowPixelBuffer(4, 0x11);
+ PrintMoneyAmount(4, 38, 1, gShopDataPtr->totalCost, TEXT_SPEED_FF);
+ ConvertIntToDecimalStringN(gStringVar1, tItemCount, 2, 2);
+ StringExpandPlaceholders(gStringVar4, gText_xVar1);
+ BuyMenuPrint(4, gStringVar4, 0, 1, 0, 0);
+}
+
+static void ExitBuyMenu(u8 taskId)
+{
+ gFieldCallback = MapPostLoadHook_ReturnToShopMenu;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = Task_ExitBuyMenu;
+}
+
+static void Task_ExitBuyMenu(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ RemoveMoneyLabelObject();
+ BuyMenuFreeMemory();
+ SetMainCallback2(CB2_ReturnToField);
+ DestroyTask(taskId);
+ }
+}
+
+static void ClearItemPurchases(void)
+{
+ gMartPurchaseHistoryId = 0;
+ memset(gMartPurchaseHistory, 0, sizeof(gMartPurchaseHistory));
+}
+
+static void RecordItemPurchase(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ u16 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (gMartPurchaseHistory[i].itemId == tItemId && gMartPurchaseHistory[i].quantity != 0)
+ {
+ if (gMartPurchaseHistory[i].quantity + tItemCount > 255)
+ {
+ gMartPurchaseHistory[i].quantity = 255;
+ }
+ else
+ {
+ gMartPurchaseHistory[i].quantity += tItemCount;
+ }
+ return;
+ }
+ }
+
+ if (gMartPurchaseHistoryId < 3)
+ {
+ gMartPurchaseHistory[gMartPurchaseHistoryId].itemId = tItemId;
+ gMartPurchaseHistory[gMartPurchaseHistoryId].quantity = tItemCount;
+ gMartPurchaseHistoryId++;
+ }
+}
+
+#undef tItemCount
+#undef tItemId
+#undef tListTaskId
+
+void CreatePokemartMenu(const u16 *itemsForSale)
+{
+ CreateShopMenu(MART_TYPE_0);
+ SetShopItemsForSale(itemsForSale);
+ ClearItemPurchases();
+ SetShopMenuCallback(EnableBothScriptContexts);
+}
+
+void CreateDecorationShop1Menu(const u16 *itemsForSale)
+{
+ CreateShopMenu(MART_TYPE_1);
+ SetShopItemsForSale(itemsForSale);
+ SetShopMenuCallback(EnableBothScriptContexts);
+}
+
+void CreateDecorationShop2Menu(const u16 *itemsForSale)
+{
+ CreateShopMenu(MART_TYPE_2);
+ SetShopItemsForSale(itemsForSale);
+ SetShopMenuCallback(EnableBothScriptContexts);
+}
diff --git a/src/slot_machine.c b/src/slot_machine.c
index ef52b7171..01ef6d85c 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -25,8 +25,6 @@
#include "bg.h"
#include "window.h"
-extern u8 gOamLimit;
-
// Text
extern const u8 gText_YouDontHaveThreeCoins[];
extern const u8 gText_QuitTheGame[];
@@ -34,9 +32,6 @@ extern const u8 gText_YouveGot9999Coins[];
extern const u8 gText_YouveRunOutOfCoins[];
extern const u8 gText_ReelTimeHelp[];
-// gfx
-extern const u8 gSlotMachineReelTime_Gfx[];
-
enum
{
SLOT_MACHINE_TAG_7_RED,
@@ -382,7 +377,7 @@ extern const u16 sSlotMatchFlags[];
extern const u16 sSlotPayouts[];
extern const u8 *const gUnknown_083EDCE4;
extern const u8 *const gUnknown_083EDCDC;
-extern const u8 sReelTimeGfx[];
+extern const u32 sReelTimeGfx[];
extern const struct SpriteSheet sSlotMachineSpriteSheets[];
extern const struct SpritePalette gSlotMachineSpritePalettes[];
extern const u16 *const gUnknown_083EDE20;
@@ -1271,7 +1266,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
/*static */bool8 sub_8102344(struct Task *task)
{
- s8 input = Menu_ProcessInputNoWrap_();
+ s8 input = Menu_ProcessInputNoWrapClearOnChoose();
if (input == 0)
{
sub_8197434(0, TRUE);
@@ -4107,9 +4102,9 @@ s16 sub_8102D5C(s16 a0)
LoadSpriteSheet(gUnknown_0203AB2C);
}
-extern const u8 gSlotMachineMenu_Gfx[];
-extern const u8 gSlotMachineMenu_Tilemap[];
-extern const u8 gUnknown_08DCEC70[];
+extern const u32 gSlotMachineMenu_Gfx[];
+extern const u16 gSlotMachineMenu_Tilemap[];
+extern const u16 gUnknown_08DCEC70[];
extern const u16 gSlotMachineMenu_Pal[];
/*static */void sub_8106448(void)
diff --git a/src/sprite.c b/src/sprite.c
index c133dc73e..4087dd8c4 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -15,15 +15,15 @@
#define ALLOC_SPRITE_TILE(n) \
{ \
- gSpriteTileAllocBitmap[(n) / 8] |= (1 << ((n) % 8)); \
+ sSpriteTileAllocBitmap[(n) / 8] |= (1 << ((n) % 8)); \
}
#define FREE_SPRITE_TILE(n) \
{ \
- gSpriteTileAllocBitmap[(n) / 8] &= ~(1 << ((n) % 8)); \
+ sSpriteTileAllocBitmap[(n) / 8] &= ~(1 << ((n) % 8)); \
}
-#define SPRITE_TILE_IS_ALLOCATED(n) ((gSpriteTileAllocBitmap[(n) / 8] >> ((n) % 8)) & 1)
+#define SPRITE_TILE_IS_ALLOCATED(n) ((sSpriteTileAllocBitmap[(n) / 8] >> ((n) % 8)) & 1)
struct SpriteCopyRequest
@@ -295,18 +295,18 @@ u32 gOamMatrixAllocBitmap;
u8 gReservedSpritePaletteCount;
EWRAM_DATA struct Sprite gSprites[MAX_SPRITES + 1] = {0};
-EWRAM_DATA u16 gSpritePriorities[MAX_SPRITES] = {0};
-EWRAM_DATA u8 gSpriteOrder[MAX_SPRITES] = {0};
-EWRAM_DATA bool8 gShouldProcessSpriteCopyRequests = 0;
-EWRAM_DATA u8 gSpriteCopyRequestCount = 0;
-EWRAM_DATA struct SpriteCopyRequest gSpriteCopyRequests[MAX_SPRITES] = {0};
+EWRAM_DATA static u16 sSpritePriorities[MAX_SPRITES] = {0};
+EWRAM_DATA static u8 sSpriteOrder[MAX_SPRITES] = {0};
+EWRAM_DATA static bool8 sShouldProcessSpriteCopyRequests = 0;
+EWRAM_DATA static u8 sSpriteCopyRequestCount = 0;
+EWRAM_DATA static struct SpriteCopyRequest sSpriteCopyRequests[MAX_SPRITES] = {0};
EWRAM_DATA u8 gOamLimit = 0;
EWRAM_DATA u16 gReservedSpriteTileCount = 0;
-EWRAM_DATA u8 gSpriteTileAllocBitmap[128] = {0};
+EWRAM_DATA static u8 sSpriteTileAllocBitmap[128] = {0};
EWRAM_DATA s16 gSpriteCoordOffsetX = 0;
EWRAM_DATA s16 gSpriteCoordOffsetY = 0;
EWRAM_DATA struct OamMatrix gOamMatrices[OAM_MATRIX_COUNT] = {0};
-EWRAM_DATA bool8 gAffineAnimsDisabled = 0;
+EWRAM_DATA bool8 gAffineAnimsDisabled = FALSE;
void ResetSpriteData(void)
{
@@ -350,7 +350,7 @@ void BuildOamBuffer(void)
AddSpritesToOamBuffer();
CopyMatricesToOamBuffer();
gMain.oamLoadDisabled = temp;
- gShouldProcessSpriteCopyRequests = TRUE;
+ sShouldProcessSpriteCopyRequests = TRUE;
}
void UpdateOamCoords(void)
@@ -382,7 +382,7 @@ void BuildSpritePriorities(void)
{
struct Sprite *sprite = &gSprites[i];
u16 priority = sprite->subpriority | (sprite->oam.priority << 8);
- gSpritePriorities[i] = priority;
+ sSpritePriorities[i] = priority;
}
}
@@ -392,10 +392,10 @@ void SortSprites(void)
for (i = 1; i < MAX_SPRITES; i++)
{
u8 j = i;
- struct Sprite *sprite1 = &gSprites[gSpriteOrder[i - 1]];
- struct Sprite *sprite2 = &gSprites[gSpriteOrder[i]];
- u16 sprite1Priority = gSpritePriorities[gSpriteOrder[i - 1]];
- u16 sprite2Priority = gSpritePriorities[gSpriteOrder[i]];
+ struct Sprite *sprite1 = &gSprites[sSpriteOrder[i - 1]];
+ struct Sprite *sprite2 = &gSprites[sSpriteOrder[i]];
+ u16 sprite1Priority = sSpritePriorities[sSpriteOrder[i - 1]];
+ u16 sprite2Priority = sSpritePriorities[sSpriteOrder[i]];
s16 sprite1Y = sprite1->oam.y;
s16 sprite2Y = sprite2->oam.y;
@@ -431,20 +431,20 @@ void SortSprites(void)
&& ((sprite1Priority > sprite2Priority)
|| (sprite1Priority == sprite2Priority && sprite1Y < sprite2Y)))
{
- u8 temp = gSpriteOrder[j];
- gSpriteOrder[j] = gSpriteOrder[j - 1];
- gSpriteOrder[j - 1] = temp;
+ u8 temp = sSpriteOrder[j];
+ sSpriteOrder[j] = sSpriteOrder[j - 1];
+ sSpriteOrder[j - 1] = temp;
// UB: If j equals 1, then j-- makes j equal 0.
- // Then, gSpriteOrder[-1] gets accessed below.
+ // Then, sSpriteOrder[-1] gets accessed below.
// Although this doesn't result in a bug in the ROM,
// the behavior is undefined.
j--;
- sprite1 = &gSprites[gSpriteOrder[j - 1]];
- sprite2 = &gSprites[gSpriteOrder[j]];
- sprite1Priority = gSpritePriorities[gSpriteOrder[j - 1]];
- sprite2Priority = gSpritePriorities[gSpriteOrder[j]];
+ sprite1 = &gSprites[sSpriteOrder[j - 1]];
+ sprite2 = &gSprites[sSpriteOrder[j]];
+ sprite1Priority = sSpritePriorities[sSpriteOrder[j - 1]];
+ sprite2Priority = sSpritePriorities[sSpriteOrder[j]];
sprite1Y = sprite1->oam.y;
sprite2Y = sprite2->oam.y;
@@ -499,7 +499,7 @@ void AddSpritesToOamBuffer(void)
while (i < MAX_SPRITES)
{
- struct Sprite *sprite = &gSprites[gSpriteOrder[i]];
+ struct Sprite *sprite = &gSprites[sSpriteOrder[i]];
if (sprite->inUse && !sprite->invisible && AddSpriteToOamBuffer(sprite, &oamIndex))
return;
i++;
@@ -664,14 +664,14 @@ void ClearSpriteCopyRequests(void)
{
u8 i;
- gShouldProcessSpriteCopyRequests = FALSE;
- gSpriteCopyRequestCount = 0;
+ sShouldProcessSpriteCopyRequests = FALSE;
+ sSpriteCopyRequestCount = 0;
for (i = 0; i < MAX_SPRITE_COPY_REQUESTS; i++)
{
- gSpriteCopyRequests[i].src = 0;
- gSpriteCopyRequests[i].dest = 0;
- gSpriteCopyRequests[i].size = 0;
+ sSpriteCopyRequests[i].src = 0;
+ sSpriteCopyRequests[i].dest = 0;
+ sSpriteCopyRequests[i].size = 0;
}
}
@@ -779,17 +779,17 @@ u8 SpriteTileAllocBitmapOp(u16 bit, u8 op)
if (op == 0)
{
val = ~(1 << val);
- gSpriteTileAllocBitmap[index] &= val;
+ sSpriteTileAllocBitmap[index] &= val;
}
else if (op == 1)
{
val = (1 << val);
- gSpriteTileAllocBitmap[index] |= val;
+ sSpriteTileAllocBitmap[index] |= val;
}
else
{
retVal = 1 << shift;
- retVal &= gSpriteTileAllocBitmap[index];
+ retVal &= sSpriteTileAllocBitmap[index];
}
return retVal;
@@ -801,40 +801,40 @@ void SpriteCallbackDummy(struct Sprite *sprite)
void ProcessSpriteCopyRequests(void)
{
- if (gShouldProcessSpriteCopyRequests)
+ if (sShouldProcessSpriteCopyRequests)
{
u8 i = 0;
- while (gSpriteCopyRequestCount > 0)
+ while (sSpriteCopyRequestCount > 0)
{
- CpuCopy16(gSpriteCopyRequests[i].src, gSpriteCopyRequests[i].dest, gSpriteCopyRequests[i].size);
- gSpriteCopyRequestCount--;
+ CpuCopy16(sSpriteCopyRequests[i].src, sSpriteCopyRequests[i].dest, sSpriteCopyRequests[i].size);
+ sSpriteCopyRequestCount--;
i++;
}
- gShouldProcessSpriteCopyRequests = FALSE;
+ sShouldProcessSpriteCopyRequests = FALSE;
}
}
void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images)
{
- if (gSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS)
+ if (sSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS)
{
- gSpriteCopyRequests[gSpriteCopyRequestCount].src = images[index].data;
- gSpriteCopyRequests[gSpriteCopyRequestCount].dest = (u8 *)OBJ_VRAM0 + TILE_SIZE_4BPP * tileNum;
- gSpriteCopyRequests[gSpriteCopyRequestCount].size = images[index].size;
- gSpriteCopyRequestCount++;
+ sSpriteCopyRequests[sSpriteCopyRequestCount].src = images[index].data;
+ sSpriteCopyRequests[sSpriteCopyRequestCount].dest = (u8 *)OBJ_VRAM0 + TILE_SIZE_4BPP * tileNum;
+ sSpriteCopyRequests[sSpriteCopyRequestCount].size = images[index].size;
+ sSpriteCopyRequestCount++;
}
}
void RequestSpriteCopy(const u8 *src, u8 *dest, u16 size)
{
- if (gSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS)
+ if (sSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS)
{
- gSpriteCopyRequests[gSpriteCopyRequestCount].src = src;
- gSpriteCopyRequests[gSpriteCopyRequestCount].dest = dest;
- gSpriteCopyRequests[gSpriteCopyRequestCount].size = size;
- gSpriteCopyRequestCount++;
+ sSpriteCopyRequests[sSpriteCopyRequestCount].src = src;
+ sSpriteCopyRequests[sSpriteCopyRequestCount].dest = dest;
+ sSpriteCopyRequests[sSpriteCopyRequestCount].size = size;
+ sSpriteCopyRequestCount++;
}
}
@@ -869,7 +869,7 @@ void ResetAllSprites(void)
for (i = 0; i < MAX_SPRITES; i++)
{
ResetSprite(&gSprites[i]);
- gSpriteOrder[i] = i;
+ sSpriteOrder[i] = i;
}
ResetSprite(&gSprites[i]);
@@ -1414,7 +1414,7 @@ void ResetAffineAnimData(void)
{
u8 i;
- gAffineAnimsDisabled = 0;
+ gAffineAnimsDisabled = FALSE;
gOamMatrixAllocBitmap = 0;
ResetOamMatrices();
diff --git a/src/start_menu.c b/src/start_menu.c
index dcb2c4154..079f05be0 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -12,7 +12,7 @@
#include "task.h"
#include "overworld.h"
#include "link.h"
-#include "battle_frontier_2.h"
+#include "frontier_util.h"
#include "rom_818CFC8.h"
#include "field_specials.h"
#include "event_object_movement.h"
@@ -34,6 +34,8 @@
#include "constants/songs.h"
#include "field_player_avatar.h"
#include "battle_pyramid_bag.h"
+#include "battle_pike.h"
+#include "new_game.h"
// Menu actions
enum
@@ -62,6 +64,10 @@ enum
SAVE_ERROR
};
+// IWRAM common
+bool8 (*gMenuCallback)(void);
+
+// EWRAM
EWRAM_DATA static u8 sSafariBallsWindowId = 0;
EWRAM_DATA static u8 sBattlePyramidFloorWindowId = 0;
EWRAM_DATA static u8 sStartMenuCursorPos = 0;
@@ -75,14 +81,13 @@ EWRAM_DATA static bool8 sSavingComplete = FALSE;
EWRAM_DATA static u8 sSaveInfoWindowId = 0;
// Extern variables.
-extern u8 gDifferentSaveFile;
extern u8 gUnknown_03005DB4;
// Extern functions in not decompiled files.
extern void sub_80AF688(void);
extern void var_800D_set_xB(void);
extern void sub_808B864(void);
-extern void sub_80BB534(void);
+extern void CB2_Pokedex(void);
extern void play_some_sound(void);
extern void CB2_PartyMenuFromStartMenu(void);
extern void CB2_PokeNav(void);
@@ -383,14 +388,14 @@ static void ShowSafariBallsWindow(void)
static void ShowPyramidFloorWindow(void)
{
- if (gSaveBlock2Ptr->frontier.field_CB2 == 7)
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum == 7)
sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_1);
else
sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_2);
PutWindowTilemap(sBattlePyramidFloorWindowId);
NewMenuHelpers_DrawStdWindowFrame(sBattlePyramidFloorWindowId, FALSE);
- StringCopy(gStringVar1, sPyramindFloorNames[gSaveBlock2Ptr->frontier.field_CB2]);
+ StringCopy(gStringVar1, sPyramindFloorNames[gSaveBlock2Ptr->frontier.curChallengeBattleNum]);
StringExpandPlaceholders(gStringVar4, gText_BattlePyramidFloor);
AddTextPrinterParameterized(sBattlePyramidFloorWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
CopyWindowToVram(sBattlePyramidFloorWindowId, 2);
@@ -459,18 +464,18 @@ static bool32 InitStartMenuStep(void)
sUnknown_02037619[0]++;
break;
case 3:
- if (GetSafariZoneFlag() != FALSE)
+ if (GetSafariZoneFlag())
{
ShowSafariBallsWindow();
}
- if (InBattlePyramid() != FALSE)
+ if (InBattlePyramid())
{
ShowPyramidFloorWindow();
}
sUnknown_02037619[0]++;
break;
case 4:
- if (PrintStartMenuActions(&sUnknown_02037619[1], 2) == FALSE)
+ if (!PrintStartMenuActions(&sUnknown_02037619[1], 2))
{
break;
}
@@ -619,7 +624,7 @@ static bool8 StartMenuPokedexCallback(void)
play_some_sound();
RemoveExtraStartMenuWindows();
overworld_free_bg_tilemaps();
- SetMainCallback2(sub_80BB534); // Display pokedex
+ SetMainCallback2(CB2_Pokedex);
return TRUE;
}
@@ -977,14 +982,14 @@ static u8 SaveConfirmSaveCallback(void)
static u8 SaveYesNoCallback(void)
{
- sub_8197930(); // Show Yes/No menu
+ DisplayYesNoMenu(); // Show Yes/No menu
sSaveDialogCallback = SaveConfirmInputCallback;
return SAVE_IN_PROGRESS;
}
static u8 SaveConfirmInputCallback(void)
{
- switch (Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0: // Yes
switch (gSaveFileStatus)
@@ -1037,14 +1042,14 @@ static u8 SaveConfirmOverwriteNoCallback(void)
static u8 SaveConfirmOverwriteCallback(void)
{
- sub_8197930(); // Show Yes/No menu
+ DisplayYesNoMenu(); // Show Yes/No menu
sSaveDialogCallback = SaveOverwriteInputCallback;
return SAVE_IN_PROGRESS;
}
static u8 SaveOverwriteInputCallback(void)
{
- switch (Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0: // Yes
sSaveDialogCallback = SaveSavingMessageCallback;
@@ -1168,7 +1173,7 @@ static u8 BattlePyramidRetireYesNoCallback(void)
static u8 BattlePyramidRetireInputCallback(void)
{
- switch (Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0: // Yes
return SAVE_CANCELED;
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 179d9a05a..46aac5590 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -63,20 +63,20 @@ const u16 gBirchBallarrow_Pal[] = INCBIN_U16("graphics/misc/birch_ballarrow.gbap
const u16 gBirchCircle_Pal[] = INCBIN_U16("graphics/misc/birch_circle.gbapal");
-const u8 gBirchBagTilemap[] = INCBIN_U8("graphics/misc/birch_bag_map.bin.lz");
+const u32 gBirchBagTilemap[] = INCBIN_U32("graphics/misc/birch_bag_map.bin.lz");
-const u8 gBirchGrassTilemap[] = INCBIN_U8("graphics/misc/birch_grass_map.bin.lz");
+const u32 gBirchGrassTilemap[] = INCBIN_U32("graphics/misc/birch_grass_map.bin.lz");
-const u8 gBirchHelpGfx[] = INCBIN_U8("graphics/misc/birch_help.4bpp.lz");
+const u32 gBirchHelpGfx[] = INCBIN_U32("graphics/misc/birch_help.4bpp.lz");
-const u8 gUnknown_085B18AC[] = INCBIN_U8("graphics/misc/birch_ballarrow.4bpp.lz");
+const u32 gUnknown_085B18AC[] = INCBIN_U32("graphics/misc/birch_ballarrow.4bpp.lz");
-const u8 gUnknown_085B1BCC[] = INCBIN_U8("graphics/misc/birch_circle.4bpp.lz");
+const u32 gUnknown_085B1BCC[] = INCBIN_U32("graphics/misc/birch_circle.4bpp.lz");
-static const struct WindowTemplate gUnknown_085B1DCC[] =
+static const struct WindowTemplate gUnknown_085B1DCC[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 3,
.tilemapTop = 15,
.width = 24,
@@ -87,9 +87,9 @@ static const struct WindowTemplate gUnknown_085B1DCC[] =
DUMMY_WIN_TEMPLATE,
};
-static const struct WindowTemplate gUnknown_085B1DDC =
+static const struct WindowTemplate gUnknown_085B1DDC =
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 24,
.tilemapTop = 9,
.width = 5,
@@ -98,9 +98,9 @@ static const struct WindowTemplate gUnknown_085B1DDC =
.baseBlock = 0x0260
};
-static const struct WindowTemplate gUnknown_085B1DE4 =
+static const struct WindowTemplate gUnknown_085B1DE4 =
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
.width = 13,
@@ -392,9 +392,9 @@ void CB2_ChooseStarter(void)
DmaFill32(3, 0, OAM, OAM_SIZE);
DmaFill16(3, 0, PLTT, PLTT_SIZE);
- LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM);
- LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000));
- LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800));
+ LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM);
+ LZ77UnCompVram(gBirchBagTilemap, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gBirchGrassTilemap, (void *)(VRAM + 0x3800));
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_085B1E00, ARRAY_COUNT(gUnknown_085B1E00));
@@ -534,7 +534,7 @@ static void Task_StarterChoose5(u8 taskId)
{
u8 spriteId;
- switch (Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0: // YES
// Return the starter choice and exit.
diff --git a/src/string_util.c b/src/string_util.c
index 3fbf79d87..8ce9a97ed 100644
--- a/src/string_util.c
+++ b/src/string_util.c
@@ -2,7 +2,11 @@
#include "string_util.h"
#include "text.h"
-EWRAM_DATA u8 gUnknownStringVar[16] = {0};
+EWRAM_DATA u8 gStringVar1[0x100] = {0};
+EWRAM_DATA u8 gStringVar2[0x100] = {0};
+EWRAM_DATA u8 gStringVar3[0x100] = {0};
+EWRAM_DATA u8 gStringVar4[0x3E8] = {0};
+EWRAM_DATA static u8 sUnknownStringVar[16] = {0};
static const u8 sDigits[] = __("0123456789ABCDEF");
@@ -421,7 +425,7 @@ u8 *StringBraille(u8 *dest, const u8 *src)
static const u8 *ExpandPlaceholder_UnknownStringVar(void)
{
- return gUnknownStringVar;
+ return sUnknownStringVar;
}
static const u8 *ExpandPlaceholder_PlayerName(void)
diff --git a/src/strings.c b/src/strings.c
index cdbbb4468..3cf801c7c 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -1,9 +1,7 @@
#include "global.h"
#include "strings.h"
-// Yes, all the aligns are absolutely necessary.
-// Until someone can come up with a better way to align byte arrays in C, this is what we're doing.
-asm(".align 2");
+ALIGNED(4)
const u8 gExpandedPlaceholder_Empty[] = _("");
const u8 gExpandedPlaceholder_Kun[] = _("");
const u8 gExpandedPlaceholder_Chan[] = _("");
@@ -49,24 +47,12 @@ const u8 gUnknown_085E8504[] = _("SELECT");
const u8 gUnknown_085E850B[] = _("+ Control Pad");
const u8 gUnknown_085E8519[] = _("L Button R Button");
const u8 gUnknown_085E852C[] = _("CONTROLS");
-
-asm(".align 2");
-const u8 gUnknown_085E8538[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK");
-
-asm(".align 2");
-const u8 gUnknown_085E8544[] = _("{A_BUTTON}NEXT");
-
-asm(".align 2");
-const u8 gUnknown_085E854C[] = _("{A_BUTTON}NEXT {B_BUTTON}BACK");
-
-asm(".align 2");
-const u8 gText_PickNextCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}NEXT {B_BUTTON}CANCEL");
-
-asm(".align 2");
-const u8 gText_PickCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}{B_BUTTON}CANCEL");
-
-asm(".align 2");
-const u8 gText_UnkCtrlF800Exit[] = _("{A_BUTTON}EXIT");
+ALIGNED(4) const u8 gUnknown_085E8538[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK");
+ALIGNED(4) const u8 gUnknown_085E8544[] = _("{A_BUTTON}NEXT");
+ALIGNED(4) const u8 gUnknown_085E854C[] = _("{A_BUTTON}NEXT {B_BUTTON}BACK");
+ALIGNED(4) const u8 gText_PickNextCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}NEXT {B_BUTTON}CANCEL");
+ALIGNED(4) const u8 gText_PickCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}{B_BUTTON}CANCEL");
+ALIGNED(4) const u8 gText_UnkCtrlF800Exit[] = _("{A_BUTTON}EXIT");
const u8 gText_BirchBoy[] = _("BOY");
const u8 gText_BirchGirl[] = _("GIRL");
const u8 gText_DefaultNameStu[] = _("STU");
@@ -135,44 +121,44 @@ const u8 gUnknown_085E8840[] = _("List by the first letter in the name.\nSpotted
const u8 gUnknown_085E887C[] = _("List by body color.\nSpotted POKéMON only.");
const u8 gUnknown_085E88A6[] = _("List by type.\nOwned POKéMON only.");
const u8 gUnknown_085E88C8[] = _("Execute search/switch.");
-const u8 gUnknown_085E88DF[] = _("HOENN DEX");
-const u8 gUnknown_085E88E9[] = _("NATIONAL DEX");
-const u8 gUnknown_085E88F6[] = _("NUMERICAL MODE");
-const u8 gUnknown_085E8905[] = _("A TO Z MODE");
-const u8 gUnknown_085E8911[] = _("HEAVIEST MODE");
-const u8 gUnknown_085E891F[] = _("LIGHTEST MODE");
-const u8 gUnknown_085E892D[] = _("TALLEST MODE");
-const u8 gUnknown_085E893A[] = _("SMALLEST MODE");
-const u8 gUnknown_085E8948[] = _("ABC");
-const u8 gUnknown_085E894C[] = _("DEF");
-const u8 gUnknown_085E8950[] = _("GHI");
-const u8 gUnknown_085E8954[] = _("JKL");
-const u8 gUnknown_085E8958[] = _("MNO");
-const u8 gUnknown_085E895C[] = _("PQR");
-const u8 gUnknown_085E8960[] = _("STU");
-const u8 gUnknown_085E8964[] = _("VWX");
-const u8 gUnknown_085E8968[] = _("YZ");
-const u8 gUnknown_085E896B[] = _("RED");
-const u8 gUnknown_085E896F[] = _("BLUE");
-const u8 gUnknown_085E8974[] = _("YELLOW");
-const u8 gUnknown_085E897B[] = _("GREEN");
-const u8 gUnknown_085E8981[] = _("BLACK");
-const u8 gUnknown_085E8987[] = _("BROWN");
-const u8 gUnknown_085E898D[] = _("PURPLE");
-const u8 gUnknown_085E8994[] = _("GRAY");
-const u8 gUnknown_085E8999[] = _("WHITE");
-const u8 gUnknown_085E899F[] = _("PINK");
-const u8 gUnknown_085E89A4[] = _("HOENN region’s POKéDEX");
-const u8 gUnknown_085E89BB[] = _("National edition POKéDEX");
-const u8 gUnknown_085E89D4[] = _("POKéMON are listed according to their\nnumber.");
-const u8 gUnknown_085E8A02[] = _("Spotted and owned POKéMON are listed\nalphabetically.");
-const u8 gUnknown_085E8A37[] = _("Owned POKéMON are listed from the\nheaviest to the lightest.");
-const u8 gUnknown_085E8A73[] = _("Owned POKéMON are listed from the\nlightest to the heaviest.");
-const u8 gUnknown_085E8AAF[] = _("Owned POKéMON are listed from the\ntallest to the smallest.");
-const u8 gUnknown_085E8AEA[] = _("Owned POKéMON are listed from the\nsmallest to the tallest.");
-const u8 gUnknown_085E8B25[] = _("");
-const u8 gUnknown_085E8B26[] = _("DON’T SPECIFY.");
-const u8 gUnknown_085E8B35[] = _("NONE");
+const u8 gText_DexHoennTitle[] = _("HOENN DEX");
+const u8 gText_DexNatTitle[] = _("NATIONAL DEX");
+const u8 gText_DexSortNumericalTitle[] = _("NUMERICAL MODE");
+const u8 gText_DexSortAtoZTitle[] = _("A TO Z MODE");
+const u8 gText_DexSortHeaviestTitle[] = _("HEAVIEST MODE");
+const u8 gText_DexSortLightestTitle[] = _("LIGHTEST MODE");
+const u8 gText_DexSortTallestTitle[] = _("TALLEST MODE");
+const u8 gText_DexSortSmallestTitle[] = _("SMALLEST MODE");
+const u8 gText_DexSearchAlphaABC[] = _("ABC");
+const u8 gText_DexSearchAlphaDEF[] = _("DEF");
+const u8 gText_DexSearchAlphaGHI[] = _("GHI");
+const u8 gText_DexSearchAlphaJKL[] = _("JKL");
+const u8 gText_DexSearchAlphaMNO[] = _("MNO");
+const u8 gText_DexSearchAlphaPQR[] = _("PQR");
+const u8 gText_DexSearchAlphaSTU[] = _("STU");
+const u8 gText_DexSearchAlphaVWX[] = _("VWX");
+const u8 gText_DexSearchAlphaYZ[] = _("YZ");
+const u8 gText_DexSearchColorRed[] = _("RED");
+const u8 gText_DexSearchColorBlue[] = _("BLUE");
+const u8 gText_DexSearchColorYellow[] = _("YELLOW");
+const u8 gText_DexSearchColorGreen[] = _("GREEN");
+const u8 gText_DexSearchColorBlack[] = _("BLACK");
+const u8 gText_DexSearchColorBrown[] = _("BROWN");
+const u8 gText_DexSearchColorPurple[] = _("PURPLE");
+const u8 gText_DexSearchColorGray[] = _("GRAY");
+const u8 gText_DexSearchColorWhite[] = _("WHITE");
+const u8 gText_DexSearchColorPink[] = _("PINK");
+const u8 gText_DexHoennDescription[] = _("HOENN region’s POKéDEX");
+const u8 gText_DexNatDescription[] = _("National edition POKéDEX");
+const u8 gText_DexSortNumericalDescription[] = _("POKéMON are listed according to their\nnumber.");
+const u8 gText_DexSortAtoZDescription[] = _("Spotted and owned POKéMON are listed\nalphabetically.");
+const u8 gText_DexSortHeaviestDescription[] = _("Owned POKéMON are listed from the\nheaviest to the lightest.");
+const u8 gText_DexSortLightestDescription[] = _("Owned POKéMON are listed from the\nlightest to the heaviest.");
+const u8 gText_DexSortTallestDescription[] = _("Owned POKéMON are listed from the\ntallest to the smallest.");
+const u8 ggText_DexSortSmallestDescription[] = _("Owned POKéMON are listed from the\nsmallest to the tallest.");
+const u8 gText_DexEmptyString[] = _("");
+const u8 gText_DexSearchDontSpecify[] = _("DON’T SPECIFY.");
+const u8 gText_DexSearchTypeNone[] = _("NONE");
const u8 gText_SelectorArrow[] = _("▶");
const u8 gUnknown_085E8B3C[] = _(" ");
const u8 gText_WelcomeToHOF[] = _("Welcome to the HALL OF FAME!");
@@ -349,9 +335,9 @@ const u8 gText_Var1ThrownAway[] = _("The {STR_VAR_1}\nwas thrown away.");
const u8 gText_Var1AteTheVar2[] = _("{STR_VAR_1} ate the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}");
const u8 gText_Var1HappilyAteVar2[] = _("{STR_VAR_1} happily ate the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}");
const u8 gText_Var1DisdainfullyAteVar2[] = _("{STR_VAR_1} disdainfully ate the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}");
-const u8 gUnknown_085E93C7[] = _("BUY");
-const u8 gUnknown_085E93CB[] = _("SELL");
-const u8 gUnknown_085E93D0[] = _("QUIT");
+const u8 gText_ShopBuy[] = _("BUY");
+const u8 gText_ShopSell[] = _("SELL");
+const u8 gText_ShopQuit[] = _("QUIT");
const u8 gText_InBagVar1[] = _("IN BAG: {STR_VAR_1}");
const u8 gText_QuitShopping[] = _("Quit shopping.");
const u8 gText_Var1CertainlyHowMany[] = _("{STR_VAR_1}? Certainly.\nHow many would you like?");
@@ -486,30 +472,14 @@ const u8 gText_EscapeFromHere[] = _("Want to escape from here and return\nto {ST
const u8 gText_ReturnToHealingSpot[] = _("Want to return to the healing spot\nused last in {STR_VAR_1}?");
const u8 gText_PauseUntilPress[] = _("{PAUSE_UNTIL_PRESS}");
const u8 gJPText_PutVar1IntoSpinner[] = _("{STR_VAR_1}を ぐるぐるこうかんに\nだして よろしいですか?");
-
-asm(".align 2");
-const u8 gText_OnlyPkmnForBattle[] = _("That’s your only\nPOKéMON for battle.");
-
-asm(".align 2");
-const u8 gText_PkmnCantBeTradedNow[] = _("That POKéMON can’t be traded\nnow.");
-
-asm(".align 2");
-const u8 gText_EggCantBeTradedNow[] = _("An EGG can’t be traded now.");
-
-asm(".align 2");
-const u8 gText_OtherTrainersPkmnCantBeTraded[] = _("The other TRAINER’s POKéMON\ncan’t be traded now.");
-
-asm(".align 2");
-const u8 gText_OtherTrainerCantAcceptPkmn[] = _("The other TRAINER can’t accept\nthat POKéMON now.");
-
-asm(".align 2");
-const u8 gText_CantTradeWithTrainer[] = _("You can’t trade with that\nTRAINER now.");
-
-asm(".align 2");
-const u8 gText_NotPkmnOtherTrainerWants[] = _("That isn’t the type of POKéMON\nthat the other TRAINER wants.");
-
-asm(".align 2");
-const u8 gText_ThatIsntAnEgg[] = _("That isn’t an EGG.");
+ALIGNED(4) const u8 gText_OnlyPkmnForBattle[] = _("That’s your only\nPOKéMON for battle.");
+ALIGNED(4) const u8 gText_PkmnCantBeTradedNow[] = _("That POKéMON can’t be traded\nnow.");
+ALIGNED(4) const u8 gText_EggCantBeTradedNow[] = _("An EGG can’t be traded now.");
+ALIGNED(4) const u8 gText_OtherTrainersPkmnCantBeTraded[] = _("The other TRAINER’s POKéMON\ncan’t be traded now.");
+ALIGNED(4) const u8 gText_OtherTrainerCantAcceptPkmn[] = _("The other TRAINER can’t accept\nthat POKéMON now.");
+ALIGNED(4) const u8 gText_CantTradeWithTrainer[] = _("You can’t trade with that\nTRAINER now.");
+ALIGNED(4) const u8 gText_NotPkmnOtherTrainerWants[] = _("That isn’t the type of POKéMON\nthat the other TRAINER wants.");
+ALIGNED(4) const u8 gText_ThatIsntAnEgg[] = _("That isn’t an EGG.");
const u8 gText_Register[] = _("REGISTER");
const u8 gText_Attack3[] = _("ATTACK");
const u8 gText_Defense3[] = _("DEFENSE");
@@ -1251,20 +1221,12 @@ const u8 gText_BattleArena[] = _("BATTLE ARENA");
const u8 gText_BattlePike[] = _("BATTLE PIKE");
const u8 gText_BattlePyramid[] = _("BATTLE PYRAMID");
-asm(".align 2");
-const u8 gUnknown_085ED164[] = _("{STR_VAR_1} SINGLE");
+ALIGNED(4) const u8 gUnknown_085ED164[] = _("{STR_VAR_1} SINGLE");
+ALIGNED(4) const u8 gUnknown_085ED170[] = _("{STR_VAR_1} DOUBLE");
+ALIGNED(4) const u8 gUnknown_085ED17C[] = _("{STR_VAR_1} MULTI");
+ALIGNED(4) const u8 gUnknown_085ED188[] = _("{STR_VAR_1} LINK");
+ALIGNED(4) const u8 gUnknown_085ED190[] = _("{STR_VAR_1}");
-asm(".align 2");
-const u8 gUnknown_085ED170[] = _("{STR_VAR_1} DOUBLE");
-
-asm(".align 2");
-const u8 gUnknown_085ED17C[] = _("{STR_VAR_1} MULTI");
-
-asm(".align 2");
-const u8 gUnknown_085ED188[] = _("{STR_VAR_1} LINK");
-
-asm(".align 2");
-const u8 gUnknown_085ED190[] = _("{STR_VAR_1}");
const u8 gText_Give[] = _("Give");
const u8 gText_NoNeed[] = _("No need");
const u8 gText_ColorLightShadowDarkGrey[] = _("{COLOR LIGHT_GREY}{SHADOW DARK_GREY}");
@@ -1331,93 +1293,35 @@ const u8 gMatchCall_MaySelfIntroductionText_Line1[] = _("My POKéMON and I help"
const u8 gMatchCall_MaySelfIntroductionText_Line2[] = _("my father’s research.");
const u8 gText_HatchedFromEgg[] = _("{STR_VAR_1} hatched from the EGG!");
const u8 gText_NickHatchPrompt[] = _("Would you like to nickname the newly\nhatched {STR_VAR_1}?");
-
-asm(".align 2");
-const u8 gText_ReadyToBerryCrush[] = _("Are you ready to BERRY-CRUSH?\nPlease pick a BERRY for use.\p");
-
-asm(".align 2");
-const u8 gText_WaitForAllChooseBerry[] = _("Please wait while each member\nchooses a BERRY.");
-
-asm(".align 2");
-const u8 gText_EndedWithXUnitsPowder[] = _("{PAUSE_MUSIC}{PLAY_BGM MUS_FANFA1}You ended up with {STR_VAR_1} units of\nsilky-smooth BERRY POWDER.{RESUME_MUSIC}\pYour total amount of BERRY POWDER\nis {STR_VAR_2}.\p");
-
-asm(".align 2");
-const u8 gText_RecordingGameResults[] = _("Recording your game results in the\nsave file.\lPlease wait.");
-
-asm(".align 2");
-const u8 gText_PlayBerryCrushAgain[] = _("Want to play BERRY CRUSH again?");
-
-asm(".align 2");
-const u8 gText_YouHaveNoBerries[] = _("You have no BERRIES.\nThe game will be canceled.");
-
-asm(".align 2");
-const u8 gText_MemberDroppedOut[] = _("A member dropped out.\nThe game will be canceled.");
-
-asm(".align 2");
-const u8 gText_TimesUpNoGoodPowder[] = _("Time’s up.\pGood BERRY POWDER could not be\nmade…\p");
-
-asm(".align 2");
-const u8 gText_CommunicationStandby2[] = _("Communication standby…");
-
-asm(".align 2");
-const u8 gText_1DotBlueF700[] = _("1. {COLOR BLUE}{SHADOW LIGHT_BLUE}{SPECIAL_F7 0x00}");
-
-asm(".align 2");
-const u8 gText_1DotF700[] = _("1. {SPECIAL_F7 0x00}");
-
-asm(".align 2");
-const u8 gText_SpaceTimes2[] = _(" time(s)");
-
-asm(".align 2");
-const u8 gText_XDotY[] = _("{STR_VAR_1}.{STR_VAR_2}");
-
-asm(".align 2");
-const u8 gText_Var1Berry[] = _("{STR_VAR_1} BERRY");
-
-asm(".align 2");
-const u8 gText_TimeColon[] = _("Time:");
-
-asm(".align 2");
-const u8 gText_PressingSpeed[] = _("Pressing Speed:");
-
-asm(".align 2");
-const u8 gText_Silkiness[] = _("Silkiness:");
-
-asm(".align 2");
-const u8 gText_StrVar1[] = _("{STR_VAR_1}");
-
-asm(".align 2");
-const u8 gText_SpaceMin[] = _(" min. ");
-
-asm(".align 2");
-const u8 gText_XDotY2[] = _("{STR_VAR_1}.{STR_VAR_2}");
-
-asm(".align 2");
-const u8 gText_SpaceSec[] = _(" sec.");
-
-asm(".align 2");
-const u8 gText_XDotY3[] = _("{STR_VAR_1}.{STR_VAR_2}");
-
-asm(".align 2");
-const u8 gText_TimesPerSec[] = _(" Times/sec.");
-
-asm(".align 2");
-const u8 gText_Var1Percent[] = _("{STR_VAR_1}%");
-
-asm(".align 2");
-const u8 gText_PressesRankings[] = _("No. of Presses Rankings");
-
-asm(".align 2");
-const u8 gText_CrushingResults[] = _("Crushing Results");
-
-asm(".align 2");
-const u8 gText_NeatnessRankings[] = _("Neatness Rankings");
-
-asm(".align 2");
-const u8 gText_CoopRankings[] = _("Cooperative Rankings");
-
-asm(".align 2");
-const u8 gText_PressingPowerRankings[] = _("Pressing-Power Rankings");
+ALIGNED(4) const u8 gText_ReadyToBerryCrush[] = _("Are you ready to BERRY-CRUSH?\nPlease pick a BERRY for use.\p");
+ALIGNED(4) const u8 gText_WaitForAllChooseBerry[] = _("Please wait while each member\nchooses a BERRY.");
+ALIGNED(4) const u8 gText_EndedWithXUnitsPowder[] = _("{PAUSE_MUSIC}{PLAY_BGM MUS_FANFA1}You ended up with {STR_VAR_1} units of\nsilky-smooth BERRY POWDER.{RESUME_MUSIC}\pYour total amount of BERRY POWDER\nis {STR_VAR_2}.\p");
+ALIGNED(4) const u8 gText_RecordingGameResults[] = _("Recording your game results in the\nsave file.\lPlease wait.");
+ALIGNED(4) const u8 gText_PlayBerryCrushAgain[] = _("Want to play BERRY CRUSH again?");
+ALIGNED(4) const u8 gText_YouHaveNoBerries[] = _("You have no BERRIES.\nThe game will be canceled.");
+ALIGNED(4) const u8 gText_MemberDroppedOut[] = _("A member dropped out.\nThe game will be canceled.");
+ALIGNED(4) const u8 gText_TimesUpNoGoodPowder[] = _("Time’s up.\pGood BERRY POWDER could not be\nmade…\p");
+ALIGNED(4) const u8 gText_CommunicationStandby2[] = _("Communication standby…");
+ALIGNED(4) const u8 gText_1DotBlueF700[] = _("1. {COLOR BLUE}{SHADOW LIGHT_BLUE}{SPECIAL_F7 0x00}");
+ALIGNED(4) const u8 gText_1DotF700[] = _("1. {SPECIAL_F7 0x00}");
+ALIGNED(4) const u8 gText_SpaceTimes2[] = _(" time(s)");
+ALIGNED(4) const u8 gText_XDotY[] = _("{STR_VAR_1}.{STR_VAR_2}");
+ALIGNED(4) const u8 gText_Var1Berry[] = _("{STR_VAR_1} BERRY");
+ALIGNED(4) const u8 gText_TimeColon[] = _("Time:");
+ALIGNED(4) const u8 gText_PressingSpeed[] = _("Pressing Speed:");
+ALIGNED(4) const u8 gText_Silkiness[] = _("Silkiness:");
+ALIGNED(4) const u8 gText_StrVar1[] = _("{STR_VAR_1}");
+ALIGNED(4) const u8 gText_SpaceMin[] = _(" min. ");
+ALIGNED(4) const u8 gText_XDotY2[] = _("{STR_VAR_1}.{STR_VAR_2}");
+ALIGNED(4) const u8 gText_SpaceSec[] = _(" sec.");
+ALIGNED(4) const u8 gText_XDotY3[] = _("{STR_VAR_1}.{STR_VAR_2}");
+ALIGNED(4) const u8 gText_TimesPerSec[] = _(" Times/sec.");
+ALIGNED(4) const u8 gText_Var1Percent[] = _("{STR_VAR_1}%");
+ALIGNED(4) const u8 gText_PressesRankings[] = _("No. of Presses Rankings");
+ALIGNED(4) const u8 gText_CrushingResults[] = _("Crushing Results");
+ALIGNED(4) const u8 gText_NeatnessRankings[] = _("Neatness Rankings");
+ALIGNED(4) const u8 gText_CoopRankings[] = _("Cooperative Rankings");
+ALIGNED(4) const u8 gText_PressingPowerRankings[] = _("Pressing-Power Rankings");
const u8 gText_BerryCrush2[] = _("BERRY CRUSH");
const u8 gText_PressingSpeedRankings[] = _("Pressing-Speed Rankings");
const u8 gText_Var1Players[] = _("{STR_VAR_1} PLAYERS");
@@ -1547,31 +1451,15 @@ const u8 gText_KOsInARow[] = _("KOs in a row: {STR_VAR_1}");
const u8 gText_TimesVar1[] = _("Times: {STR_VAR_1}");
const u8 gText_FloorsCleared[] = _("Floors cleared: {STR_VAR_1}");
-asm(".align 2");
-const u8 gUnknown_085EE3B0[] = _("LV. 50");
-
-asm(".align 2");
-const u8 gUnknown_085EE3B8[] = _("OPEN LEVEL");
-
-asm(".align 2");
-const u8 gUnknown_085EE3C4[] = _("Win streak: {STR_VAR_2}");
-
-asm(".align 2");
-const u8 gUnknown_085EE3D4[] = _("Clear streak: {STR_VAR_2}");
+ALIGNED(4) const u8 gText_RecordsLv50[] = _("LV. 50");
+ALIGNED(4) const u8 gText_RecordsOpenLevel[] = _("OPEN LEVEL");
+ALIGNED(4) const u8 gText_FrontierFacilityWinStreak[] = _("Win streak: {STR_VAR_2}");
+ALIGNED(4) const u8 gText_FrontierFacilityClearStreak[] = _("Clear streak: {STR_VAR_2}");
+ALIGNED(4) const u8 gText_FrontierFacilityRoomsCleared[] = _("Rooms cleared: {STR_VAR_2}");
+ALIGNED(4) const u8 gText_FrontierFacilityKOsStreak[] = _("KOs in a row: {STR_VAR_2}");
+ALIGNED(4) const u8 gText_FrontierFacilityFloorsCleared[] = _("Floors cleared: {STR_VAR_2}");
+ALIGNED(4) const u8 gText_123Dot[][3] = {_("1."), _("2."), _("3.")};
-asm(".align 2");
-const u8 gUnknown_085EE3E8[] = _("Rooms cleared: {STR_VAR_2}");
-
-asm(".align 2");
-const u8 gUnknown_085EE3FC[] = _("KOs in a row: {STR_VAR_2}");
-
-asm(".align 2");
-const u8 gUnknown_085EE410[] = _("Floors cleared: {STR_VAR_2}");
-
-asm(".align 2");
-const u8 gText_1Dot[] = _("1.");
-const u8 gUnknown_085EE427[] = _("2.");
-const u8 gUnknown_085EE42A[] = _("3.");
const u8 gText_SavingDontTurnOff2[] = _("SAVING…\nDON’T TURN OFF THE POWER.");
const u8 gText_BlenderMaxSpeedRecord[] = _("BERRY BLENDER\nMAXIMUM SPEED RECORD!");
const u8 gText_234Players[] = _("2 PLAYERS\n3 PLAYERS\n4 PLAYERS");
@@ -1770,185 +1658,66 @@ const u8 *const gTextTable_Players[] = {
gText_F703Players
};
-asm(".align 2");
-const u8 gText_WonderCards[] = _("WONDER CARDS");
-
-asm(".align 2");
-const u8 gText_WonderNews[] = _("WONDER NEWS");
-
-asm(".align 2");
-const u8 gText_WirelessCommunication[] = _("WIRELESS COMMUNICATION");
-
-asm(".align 2");
-const u8 gText_Friend2[] = _("FRIEND");
-
-asm(".align 2");
-const u8 gText_Exit3[] = _("EXIT");
-
-asm(".align 2");
-const u8 gText_Receive[] = _("RECEIVE");
-
-asm(".align 2");
-const u8 gText_Send[] = _("SEND");
-
-asm(".align 2");
-const u8 gText_Toss[] = _("TOSS");
-
-asm(".align 2");
-const u8 gText_VarietyOfEventsImportedWireless[] = _("A variety of events will be imported\nover Wireless Communication.");
-
-asm(".align 2");
-const u8 gText_WonderCardsInPossession[] = _("Read the WONDER CARDS in your\npossession.");
-
-asm(".align 2");
-const u8 gText_ReadNewsThatArrived[] = _("Read the NEWS that arrived.");
-
-asm(".align 2");
-const u8 gText_ReturnToTitle[] = _("Return to the title screen.");
-
-asm(".align 2");
-const u8 gText_DontHaveCardNewOneInput[] = _("You don’t have a WONDER CARD,\nso a new CARD will be input.");
-
-asm(".align 2");
-const u8 gText_DontHaveNewsNewOneInput[] = _("You don’t have any WONDER NEWS,\nso new NEWS will be input.");
-
-asm(".align 2");
-const u8 gText_WhereShouldCardBeAccessed[] = _("Where should the WONDER CARD\nbe accessed?");
-
-asm(".align 2");
-const u8 gText_WhereShouldNewsBeAccessed[] = _("Where should the WONDER NEWS\nbe accessed?");
-
-asm(".align 2");
-const u8 gUnknown_085EEFC0[] = _("Communication standby…\nB Button: Cancel");
-
-asm(".align 2");
-const u8 gText_Communicating[] = _("Communicating…");
-
-asm(".align 2");
-const u8 gText_CommunicationCompleted[] = _("Communication completed.");
-
-asm(".align 2");
-const u8 gText_CommunicationError[] = _("Communication error.");
-
-asm(".align 2");
-const u8 gText_CommunicationCanceled[] = _("Communication has been canceled.");
-
-asm(".align 2");
-const u8 gText_ThrowAwayWonderCard[] = _("Throw away the WONDER CARD\nand input a new CARD?");
-
-asm(".align 2");
-const u8 gText_HaventReceivedCardsGift[] = _("You haven’t received the CARD’s gift\nyet. Input a new CARD anyway?");
-
-asm(".align 2");
-const u8 gText_WonderCardReceivedFrom[] = _("A WONDER CARD has been received\nfrom {STR_VAR_1}.");
-
-asm(".align 2");
-const u8 gText_WonderNewsReceivedFrom[] = _("A WONDER NEWS item has been\nreceived from {STR_VAR_1}.");
-
-asm(".align 2");
-const u8 gText_WonderCardReceived[] = _("A new WONDER CARD has been\nreceived.");
-
-asm(".align 2");
-const u8 gText_WonderNewsReceived[] = _("A new WONDER NEWS item has been\nreceived.");
-
-asm(".align 2");
-const u8 gText_NewStampReceived[] = _("A new STAMP has been received.");
-
-asm(".align 2");
-const u8 gText_NewTrainerReceived[] = _("A new TRAINER has arrived.");
-
-asm(".align 2");
-const u8 gText_AlreadyHadCard[] = _("You already had that\nWONDER CARD.");
-
-asm(".align 2");
-const u8 gText_AlreadyHadNews[] = _("You already had that\nWONDER NEWS item.");
-
-asm(".align 2");
-const u8 gText_AlreadyHadStamp[] = _("You already had that\nSTAMP.");
-
-asm(".align 2");
-const u8 gText_NoMoreRoomForStamps[] = _("There’s no more room for adding\nSTAMPS.");
-
-asm(".align 2");
-const u8 gText_RecordUploadedViaWireless[] = _("Your record has been uploaded via\nWIRELESS COMMUNICATION.");
-
-asm(".align 2");
-const u8 gText_CantAcceptCardFromTrainer[] = _("You can’t accept a WONDER CARD\nfrom this TRAINER.");
-
-asm(".align 2");
-const u8 gText_CantAcceptNewsFromTrainer[] = _("You can’t accept WONDER NEWS\nfrom this TRAINER.");
-
-asm(".align 2");
-const u8 gText_NothingSentOver[] = _("Nothing was sent over…");
-
-asm(".align 2");
-const u8 gText_WhatToDoWithCards[] = _("What would you like to do\nwith the WONDER CARDS?");
-
-asm(".align 2");
-const u8 gText_WhatToDoWithNews[] = _("What would you like to do\nwith the WONDER NEWS?");
-
-asm(".align 2");
-const u8 gText_SendingWonderCard[] = _("Sending your WONDER CARD…");
-
-asm(".align 2");
-const u8 gText_SendingWonderNews[] = _("Sending your WONDER NEWS item…");
-
-asm(".align 2");
-const u8 gText_WonderCardSentTo[] = _("Your WONDER CARD has been sent\nto {STR_VAR_1}.");
-
-asm(".align 2");
-const u8 gText_WonderNewsSentTo[] = _("Your WONDER NEWS item has been\nsent to {STR_VAR_1}.");
-
-asm(".align 2");
-const u8 gText_StampSentTo[] = _("A STAMP has been sent to {STR_VAR_1}.");
-
-asm(".align 2");
-const u8 gText_GiftSentTo[] = _("A GIFT has been sent to {STR_VAR_1}.");
-
-asm(".align 2");
-const u8 gText_OtherTrainerHasCard[] = _("The other TRAINER has the same\nWONDER CARD already.");
-
-asm(".align 2");
-const u8 gText_OtherTrainerHasNews[] = _("The other TRAINER has the same\nWONDER NEWS already.");
-
-asm(".align 2");
-const u8 gText_OtherTrainerHasStamp[] = _("The other TRAINER has the same\nSTAMP already.");
-
-asm(".align 2");
-const u8 gText_OtherTrainerCanceled[] = _("The other TRAINER canceled\ncommunication.");
-
-asm(".align 2");
-const u8 gText_CantSendGiftToTrainer[] = _("You can’t send a MYSTERY GIFT to\nthis TRAINER.");
-
-asm(".align 2");
-const u8 gText_IfThrowAwayCardEventWontHappen[] = _("If you throw away the CARD,\nits event won’t happen. Okay?");
-
-asm(".align 2");
-const u8 gText_OkayToDiscardNews[] = _("Is it okay to discard this\nNEWS item?");
-
-asm(".align 2");
-const u8 gText_HaventReceivedGiftOkayToDiscard[] = _("You haven’t received the\nGIFT. Is it okay to discard?");
-
-asm(".align 2");
-const u8 gText_DataWillBeSaved[] = _("Data will be saved.\nPlease wait.");
-
-asm(".align 2");
-const u8 gText_SaveCompletedPressA[] = _("Save completed.\nPlease press the A Button.");
-
-asm(".align 2");
-const u8 gText_WonderCardThrownAway[] = _("The WONDER CARD was thrown away.");
-
-asm(".align 2");
-const u8 gText_WonderNewsThrownAway[] = _("The WONDER NEWS was thrown away.");
-
-asm(".align 2");
-const u8 gText_MysteryGift[] = _("MYSTERY GIFT");
-
-asm(".align 2");
-const u8 gText_PickOKExit[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}EXIT");
-
-asm(".align 2");
-const u8 gText_PickOKCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}CANCEL");
+ALIGNED(4) const u8 gText_WonderCards[] = _("WONDER CARDS");
+ALIGNED(4) const u8 gText_WonderNews[] = _("WONDER NEWS");
+ALIGNED(4) const u8 gText_WirelessCommunication[] = _("WIRELESS COMMUNICATION");
+ALIGNED(4) const u8 gText_Friend2[] = _("FRIEND");
+ALIGNED(4) const u8 gText_Exit3[] = _("EXIT");
+ALIGNED(4) const u8 gText_Receive[] = _("RECEIVE");
+ALIGNED(4) const u8 gText_Send[] = _("SEND");
+ALIGNED(4) const u8 gText_Toss[] = _("TOSS");
+ALIGNED(4) const u8 gText_VarietyOfEventsImportedWireless[] = _("A variety of events will be imported\nover Wireless Communication.");
+ALIGNED(4) const u8 gText_WonderCardsInPossession[] = _("Read the WONDER CARDS in your\npossession.");
+ALIGNED(4) const u8 gText_ReadNewsThatArrived[] = _("Read the NEWS that arrived.");
+ALIGNED(4) const u8 gText_ReturnToTitle[] = _("Return to the title screen.");
+ALIGNED(4) const u8 gText_DontHaveCardNewOneInput[] = _("You don’t have a WONDER CARD,\nso a new CARD will be input.");
+ALIGNED(4) const u8 gText_DontHaveNewsNewOneInput[] = _("You don’t have any WONDER NEWS,\nso new NEWS will be input.");
+ALIGNED(4) const u8 gText_WhereShouldCardBeAccessed[] = _("Where should the WONDER CARD\nbe accessed?");
+ALIGNED(4) const u8 gText_WhereShouldNewsBeAccessed[] = _("Where should the WONDER NEWS\nbe accessed?");
+ALIGNED(4) const u8 gUnknown_085EEFC0[] = _("Communication standby…\nB Button: Cancel");
+ALIGNED(4) const u8 gText_Communicating[] = _("Communicating…");
+ALIGNED(4) const u8 gText_CommunicationCompleted[] = _("Communication completed.");
+ALIGNED(4) const u8 gText_CommunicationError[] = _("Communication error.");
+ALIGNED(4) const u8 gText_CommunicationCanceled[] = _("Communication has been canceled.");
+ALIGNED(4) const u8 gText_ThrowAwayWonderCard[] = _("Throw away the WONDER CARD\nand input a new CARD?");
+ALIGNED(4) const u8 gText_HaventReceivedCardsGift[] = _("You haven’t received the CARD’s gift\nyet. Input a new CARD anyway?");
+ALIGNED(4) const u8 gText_WonderCardReceivedFrom[] = _("A WONDER CARD has been received\nfrom {STR_VAR_1}.");
+ALIGNED(4) const u8 gText_WonderNewsReceivedFrom[] = _("A WONDER NEWS item has been\nreceived from {STR_VAR_1}.");
+ALIGNED(4) const u8 gText_WonderCardReceived[] = _("A new WONDER CARD has been\nreceived.");
+ALIGNED(4) const u8 gText_WonderNewsReceived[] = _("A new WONDER NEWS item has been\nreceived.");
+ALIGNED(4) const u8 gText_NewStampReceived[] = _("A new STAMP has been received.");
+ALIGNED(4) const u8 gText_NewTrainerReceived[] = _("A new TRAINER has arrived.");
+ALIGNED(4) const u8 gText_AlreadyHadCard[] = _("You already had that\nWONDER CARD.");
+ALIGNED(4) const u8 gText_AlreadyHadNews[] = _("You already had that\nWONDER NEWS item.");
+ALIGNED(4) const u8 gText_AlreadyHadStamp[] = _("You already had that\nSTAMP.");
+ALIGNED(4) const u8 gText_NoMoreRoomForStamps[] = _("There’s no more room for adding\nSTAMPS.");
+ALIGNED(4) const u8 gText_RecordUploadedViaWireless[] = _("Your record has been uploaded via\nWIRELESS COMMUNICATION.");
+ALIGNED(4) const u8 gText_CantAcceptCardFromTrainer[] = _("You can’t accept a WONDER CARD\nfrom this TRAINER.");
+ALIGNED(4) const u8 gText_CantAcceptNewsFromTrainer[] = _("You can’t accept WONDER NEWS\nfrom this TRAINER.");
+ALIGNED(4) const u8 gText_NothingSentOver[] = _("Nothing was sent over…");
+ALIGNED(4) const u8 gText_WhatToDoWithCards[] = _("What would you like to do\nwith the WONDER CARDS?");
+ALIGNED(4) const u8 gText_WhatToDoWithNews[] = _("What would you like to do\nwith the WONDER NEWS?");
+ALIGNED(4) const u8 gText_SendingWonderCard[] = _("Sending your WONDER CARD…");
+ALIGNED(4) const u8 gText_SendingWonderNews[] = _("Sending your WONDER NEWS item…");
+ALIGNED(4) const u8 gText_WonderCardSentTo[] = _("Your WONDER CARD has been sent\nto {STR_VAR_1}.");
+ALIGNED(4) const u8 gText_WonderNewsSentTo[] = _("Your WONDER NEWS item has been\nsent to {STR_VAR_1}.");
+ALIGNED(4) const u8 gText_StampSentTo[] = _("A STAMP has been sent to {STR_VAR_1}.");
+ALIGNED(4) const u8 gText_GiftSentTo[] = _("A GIFT has been sent to {STR_VAR_1}.");
+ALIGNED(4) const u8 gText_OtherTrainerHasCard[] = _("The other TRAINER has the same\nWONDER CARD already.");
+ALIGNED(4) const u8 gText_OtherTrainerHasNews[] = _("The other TRAINER has the same\nWONDER NEWS already.");
+ALIGNED(4) const u8 gText_OtherTrainerHasStamp[] = _("The other TRAINER has the same\nSTAMP already.");
+ALIGNED(4) const u8 gText_OtherTrainerCanceled[] = _("The other TRAINER canceled\ncommunication.");
+ALIGNED(4) const u8 gText_CantSendGiftToTrainer[] = _("You can’t send a MYSTERY GIFT to\nthis TRAINER.");
+ALIGNED(4) const u8 gText_IfThrowAwayCardEventWontHappen[] = _("If you throw away the CARD,\nits event won’t happen. Okay?");
+ALIGNED(4) const u8 gText_OkayToDiscardNews[] = _("Is it okay to discard this\nNEWS item?");
+ALIGNED(4) const u8 gText_HaventReceivedGiftOkayToDiscard[] = _("You haven’t received the\nGIFT. Is it okay to discard?");
+ALIGNED(4) const u8 gText_DataWillBeSaved[] = _("Data will be saved.\nPlease wait.");
+ALIGNED(4) const u8 gText_SaveCompletedPressA[] = _("Save completed.\nPlease press the A Button.");
+ALIGNED(4) const u8 gText_WonderCardThrownAway[] = _("The WONDER CARD was thrown away.");
+ALIGNED(4) const u8 gText_WonderNewsThrownAway[] = _("The WONDER NEWS was thrown away.");
+ALIGNED(4) const u8 gText_MysteryGift[] = _("MYSTERY GIFT");
+ALIGNED(4) const u8 gText_PickOKExit[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}EXIT");
+ALIGNED(4) const u8 gText_PickOKCancel[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}CANCEL");
const u8 gText_PlayersBattleResults[] = _("{PLAYER}’s BATTLE RESULTS");
const u8 gText_TotalRecordWLD[] = _("TOTAL RECORD W:{STR_VAR_1} L:{STR_VAR_2} D:{STR_VAR_3}");
const u8 gText_WinLoseDraw[] = _("{CLEAR_TO 0x53}WIN{CLEAR_TO 0x80}LOSE{CLEAR_TO 0xB0}DRAW");
diff --git a/src/text.c b/src/text.c
index ec0d26ab1..07c15596e 100644
--- a/src/text.c
+++ b/src/text.c
@@ -9,12 +9,12 @@
#include "window.h"
#include "text.h"
#include "blit.h"
+#include "dynamic_placeholder_text_util.h"
extern u8 GetKeypadIconWidth(u8 keypadIconId);
extern u16 Font6Func(struct TextPrinter *textPrinter);
extern u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese);
-extern u8* DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 a1);
-extern int sub_8197964();
+extern int GetPlayerTextSpeed();
EWRAM_DATA struct TextPrinter gTempTextPrinter = {0};
EWRAM_DATA struct TextPrinter gTextPrinters[NUM_TEXT_PRINTERS] = {0};
@@ -24,18 +24,13 @@ static u16 gLastTextBgColor;
static u16 gLastTextFgColor;
static u16 gLastTextShadowColor;
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
const struct FontInfo *gFonts;
u8 gUnknown_03002F84;
-u8 gUnknown_03002F90[0x20];
-u8 gUnknown_03002FB0[0x20];
-u8 gUnknown_03002FD0[0x20];
-u8 gUnknown_03002FF0[0x20];
-u8 gGlyphDimensions[0x2];
+struct Struct_03002F90 gUnknown_03002F90;
TextFlags gTextFlags;
-const u8 gFontHalfRowOffsets[] = {
+const u8 gFontHalfRowOffsets[] =
+{
0x00, 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x03, 0x06, 0x07, 0x08, 0x06, 0x00, 0x01, 0x02, 0x00,
0x09, 0x0A, 0x0B, 0x09, 0x0C, 0x0D, 0x0E, 0x0C, 0x0F, 0x10, 0x11, 0x0F, 0x09, 0x0A, 0x0B, 0x09,
0x12, 0x13, 0x14, 0x12, 0x15, 0x16, 0x17, 0x15, 0x18, 0x19, 0x1A, 0x18, 0x12, 0x13, 0x14, 0x12,
@@ -61,7 +56,8 @@ const u8 gUnusedFRLGDownArrow[] = INCBIN_U8("data/graphics/fonts/unused_frlg_dow
const u8 gDownArrowYCoords[] = { 0x0, 0x1, 0x2, 0x1 };
const u8 gWindowVerticalScrollSpeeds[] = { 0x1, 0x2, 0x4, 0x0 };
-const struct GlyphWidthFunc gGlyphWidthFuncs[] = {
+const struct GlyphWidthFunc gGlyphWidthFuncs[] =
+{
{ 0x0, GetGlyphWidthFont0 },
{ 0x1, GetGlyphWidthFont1 },
{ 0x2, GetGlyphWidthFont2 },
@@ -73,7 +69,8 @@ const struct GlyphWidthFunc gGlyphWidthFuncs[] = {
{ 0x8, GetGlyphWidthFont8 }
};
-const struct KeypadIcon gKeypadIcons[] = {
+const struct KeypadIcon gKeypadIcons[] =
+{
{ 0x0, 0x8, 0xC },
{ 0x1, 0x8, 0xC },
{ 0x2, 0x10, 0xC },
@@ -91,7 +88,8 @@ const struct KeypadIcon gKeypadIcons[] = {
const u8 gKeypadIconTiles[] = INCBIN_U8("data/graphics/fonts/keypad_icons.4bpp");
-const struct FontInfo gFontInfos[] = {
+const struct FontInfo gFontInfos[] =
+{
{ Font0Func, 0x5, 0xC, 0x0, 0x0, 0x0, 0x2, 0x1, 0x3 },
{ Font1Func, 0x6, 0x10, 0x0, 0x0, 0x0, 0x2, 0x1, 0x3 },
{ Font2Func, 0x6, 0xE, 0x0, 0x0, 0x0, 0x2, 0x1, 0x3 },
@@ -104,7 +102,8 @@ const struct FontInfo gFontInfos[] = {
{ NULL, 0x8, 0x8, 0x0, 0x0, 0x0, 0x1, 0x2, 0xF }
};
-const u8 gMenuCursorDimensions[][2] = {
+const u8 gMenuCursorDimensions[][2] =
+{
{ 0x8, 0xC },
{ 0x8, 0xF },
{ 0x8, 0xE },
@@ -143,62 +142,63 @@ void DeactivateAllTextPrinters(void)
{
int printer;
for (printer = 0; printer < NUM_TEXT_PRINTERS; ++printer)
- gTextPrinters[printer].sub_union.sub.active = 0;
+ gTextPrinters[printer].active = 0;
}
-u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16))
+u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16))
{
- struct TextSubPrinter subPrinter;
-
- subPrinter.current_text_offset = str;
- subPrinter.windowId = windowId;
- subPrinter.fontId = fontId;
- subPrinter.x = x;
- subPrinter.y = y;
- subPrinter.currentX = x;
- subPrinter.currentY = y;
- subPrinter.letterSpacing = gFonts[fontId].letterSpacing;
- subPrinter.lineSpacing = gFonts[fontId].lineSpacing;
- subPrinter.fontColor_l = gFonts[fontId].fontColor_l;
- subPrinter.fgColor = gFonts[fontId].fgColor;
- subPrinter.bgColor = gFonts[fontId].bgColor;
- subPrinter.shadowColor = gFonts[fontId].shadowColor;
- return AddTextPrinter(&subPrinter, speed, callback);
+ struct TextPrinterTemplate printerTemplate;
+
+ printerTemplate.currentChar = str;
+ printerTemplate.windowId = windowId;
+ printerTemplate.fontId = fontId;
+ printerTemplate.x = x;
+ printerTemplate.y = y;
+ printerTemplate.currentX = x;
+ printerTemplate.currentY = y;
+ printerTemplate.letterSpacing = gFonts[fontId].letterSpacing;
+ printerTemplate.lineSpacing = gFonts[fontId].lineSpacing;
+ printerTemplate.unk = gFonts[fontId].unk;
+ printerTemplate.fgColor = gFonts[fontId].fgColor;
+ printerTemplate.bgColor = gFonts[fontId].bgColor;
+ printerTemplate.shadowColor = gFonts[fontId].shadowColor;
+ return AddTextPrinter(&printerTemplate, speed, callback);
}
-bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*callback)(struct TextSubPrinter *, u16))
+bool16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16))
{
int i;
u16 j;
+ u8 *ptr;
if (!gFonts)
return FALSE;
- gTempTextPrinter.sub_union.sub.active = 1;
+ gTempTextPrinter.active = 1;
gTempTextPrinter.state = 0;
- gTempTextPrinter.text_speed = speed;
+ gTempTextPrinter.textSpeed = speed;
gTempTextPrinter.delayCounter = 0;
gTempTextPrinter.scrollDistance = 0;
- for (i = 0; i < 7; ++i)
+ for (i = 0; i < 7; i++)
{
- gTempTextPrinter.sub_union.sub_fields[i] = 0;
+ gTempTextPrinter.subUnion.fields[i] = 0;
}
- gTempTextPrinter.subPrinter = *textSubPrinter;
+ gTempTextPrinter.printerTemplate = *printerTemplate;
gTempTextPrinter.callback = callback;
gTempTextPrinter.minLetterSpacing = 0;
gTempTextPrinter.japanese = 0;
- GenerateFontHalfRowLookupTable(textSubPrinter->fgColor, textSubPrinter->bgColor, textSubPrinter->shadowColor);
+ GenerateFontHalfRowLookupTable(printerTemplate->fgColor, printerTemplate->bgColor, printerTemplate->shadowColor);
if (speed != TEXT_SPEED_FF && speed != 0x0)
{
- --gTempTextPrinter.text_speed;
- gTextPrinters[textSubPrinter->windowId] = gTempTextPrinter;
+ --gTempTextPrinter.textSpeed;
+ gTextPrinters[printerTemplate->windowId] = gTempTextPrinter;
}
else
{
- gTempTextPrinter.text_speed = 0;
+ gTempTextPrinter.textSpeed = 0;
for (j = 0; j < 0x400; ++j)
{
if ((u32)RenderFont(&gTempTextPrinter) == 1)
@@ -206,8 +206,8 @@ bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*ca
}
if (speed != TEXT_SPEED_FF)
- CopyWindowToVram(gTempTextPrinter.subPrinter.windowId, 2);
- gTextPrinters[textSubPrinter->windowId].sub_union.sub.active = 0;
+ CopyWindowToVram(gTempTextPrinter.printerTemplate.windowId, 2);
+ gTextPrinters[printerTemplate->windowId].active = 0;
}
gUnknown_03002F84 = 0;
return TRUE;
@@ -216,25 +216,25 @@ bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*ca
void RunTextPrinters(void)
{
int i;
- u16 temp;
if (gUnknown_03002F84 == 0)
{
for (i = 0; i < 0x20; ++i)
{
- if (gTextPrinters[i].sub_union.sub.active != 0)
+ if (gTextPrinters[i].active)
{
- temp = RenderFont(&gTextPrinters[i]);
- switch (temp) {
- case 0:
- CopyWindowToVram(gTextPrinters[i].subPrinter.windowId, 2);
- case 3:
- if (gTextPrinters[i].callback != 0)
- gTextPrinters[i].callback(&gTextPrinters[i].subPrinter, temp);
- break;
- case 1:
- gTextPrinters[i].sub_union.sub.active = 0;
- break;
+ u16 temp = RenderFont(&gTextPrinters[i]);
+ switch (temp)
+ {
+ case 0:
+ CopyWindowToVram(gTextPrinters[i].printerTemplate.windowId, 2);
+ case 3:
+ if (gTextPrinters[i].callback != 0)
+ gTextPrinters[i].callback(&gTextPrinters[i].printerTemplate, temp);
+ break;
+ case 1:
+ gTextPrinters[i].active = 0;
+ break;
}
}
}
@@ -243,7 +243,7 @@ void RunTextPrinters(void)
bool16 IsTextPrinterActive(u8 id)
{
- return gTextPrinters[id].sub_union.sub.active;
+ return gTextPrinters[id].active;
}
u32 RenderFont(struct TextPrinter *textPrinter)
@@ -251,590 +251,162 @@ u32 RenderFont(struct TextPrinter *textPrinter)
u32 ret;
while (TRUE)
{
- ret = gFonts[textPrinter->subPrinter.fontId].fontFunction(textPrinter);
+ ret = gFonts[textPrinter->printerTemplate.fontId].fontFunction(textPrinter);
if (ret != 2)
return ret;
}
}
-#ifdef NONMATCHING
void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor)
{
- u16* current = gFontHalfRowLookupTable;
+ u32 fg12, bg12, shadow12;
+ u32 temp;
+
+ u16 *current = gFontHalfRowLookupTable;
gLastTextBgColor = bgColor;
gLastTextFgColor = fgColor;
gLastTextShadowColor = shadowColor;
- *(current++) = (bgColor << 12) | (bgColor << 8) | (bgColor << 4) | bgColor;
- *(current++) = (fgColor << 12) | (bgColor << 8) | (bgColor << 4) | bgColor;
- *(current++) = (shadowColor << 12) | (bgColor << 8) | (bgColor << 4) | bgColor;
-
- *(current++) = (bgColor << 12) | (fgColor << 8) | (bgColor << 4) | bgColor;
- *(current++) = (fgColor << 12) | (fgColor << 8) | (bgColor << 4) | bgColor;
- *(current++) = (shadowColor << 12) | (fgColor << 8) | (bgColor << 4) | bgColor;
-
- *(current++) = (bgColor << 12) | (shadowColor << 8) | (bgColor << 4) | bgColor;
- *(current++) = (fgColor << 12) | (shadowColor << 8) | (bgColor << 4) | bgColor;
- *(current++) = (shadowColor << 12) | (shadowColor << 8) | (bgColor << 4) | bgColor;
-
- *(current++) = (bgColor << 12) | (bgColor << 8) | (fgColor << 4) | bgColor;
- *(current++) = (fgColor << 12) | (bgColor << 8) | (fgColor << 4) | bgColor;
- *(current++) = (shadowColor << 12) | (bgColor << 8) | (fgColor << 4) | bgColor;
-
- *(current++) = (bgColor << 12) | (fgColor << 8) | (fgColor << 4) | bgColor;
- *(current++) = (fgColor << 12) | (fgColor << 8) | (fgColor << 4) | bgColor;
- *(current++) = (shadowColor << 12) | (fgColor << 8) | (fgColor << 4) | bgColor;
-
- *(current++) = (bgColor << 12) | (shadowColor << 8) | (fgColor << 4) | bgColor;
- *(current++) = (fgColor << 12) | (shadowColor << 8) | (fgColor << 4) | bgColor;
- *(current++) = (shadowColor << 12) | (shadowColor << 8) | (fgColor << 4) | bgColor;
-
- *(current++) = (bgColor << 12) | (bgColor << 8) | (shadowColor << 4) | bgColor;
- *(current++) = (fgColor << 12) | (bgColor << 8) | (shadowColor << 4) | bgColor;
- *(current++) = (shadowColor << 12) | (bgColor << 8) | (shadowColor << 4) | bgColor;
-
- *(current++) = (bgColor << 12) | (fgColor << 8) | (shadowColor << 4) | bgColor;
- *(current++) = (fgColor << 12) | (fgColor << 8) | (shadowColor << 4) | bgColor;
- *(current++) = (shadowColor << 12) | (fgColor << 8) | (shadowColor << 4) | bgColor;
-
- *(current++) = (bgColor << 12) | (shadowColor << 8) | (shadowColor << 4) | bgColor;
- *(current++) = (fgColor << 12) | (shadowColor << 8) | (shadowColor << 4) | bgColor;
- *(current++) = (shadowColor << 12) | (shadowColor << 8) | (shadowColor << 4) | bgColor;
-
- *(current++) = (bgColor << 12) | (bgColor << 8) | (bgColor << 4) | fgColor;
- *(current++) = (fgColor << 12) | (bgColor << 8) | (bgColor << 4) | fgColor;
- *(current++) = (shadowColor << 12) | (bgColor << 8) | (bgColor << 4) | fgColor;
-
- *(current++) = (bgColor << 12) | (fgColor << 8) | (bgColor << 4) | fgColor;
- *(current++) = (fgColor << 12) | (fgColor << 8) | (bgColor << 4) | fgColor;
- *(current++) = (shadowColor << 12) | (fgColor << 8) | (bgColor << 4) | fgColor;
-
- *(current++) = (bgColor << 12) | (shadowColor << 8) | (bgColor << 4) | fgColor;
- *(current++) = (fgColor << 12) | (shadowColor << 8) | (bgColor << 4) | fgColor;
- *(current++) = (shadowColor << 12) | (shadowColor << 8) | (bgColor << 4) | fgColor;
-
- *(current++) = (bgColor << 12) | (bgColor << 8) | (fgColor << 4) | fgColor;
- *(current++) = (fgColor << 12) | (bgColor << 8) | (fgColor << 4) | fgColor;
- *(current++) = (shadowColor << 12) | (bgColor << 8) | (fgColor << 4) | fgColor;
-
- *(current++) = (bgColor << 12) | (fgColor << 8) | (fgColor << 4) | fgColor;
- *(current++) = (fgColor << 12) | (fgColor << 8) | (fgColor << 4) | fgColor;
- *(current++) = (shadowColor << 12) | (fgColor << 8) | (fgColor << 4) | fgColor;
-
- *(current++) = (bgColor << 12) | (shadowColor << 8) | (fgColor << 4) | fgColor;
- *(current++) = (fgColor << 12) | (shadowColor << 8) | (fgColor << 4) | fgColor;
- *(current++) = (shadowColor << 12) | (shadowColor << 8) | (fgColor << 4) | fgColor;
-
- *(current++) = (bgColor << 12) | (bgColor << 8) | (shadowColor << 4) | fgColor;
- *(current++) = (fgColor << 12) | (bgColor << 8) | (shadowColor << 4) | fgColor;
- *(current++) = (shadowColor << 12) | (bgColor << 8) | (shadowColor << 4) | fgColor;
-
- *(current++) = (bgColor << 12) | (fgColor << 8) | (shadowColor << 4) | fgColor;
- *(current++) = (fgColor << 12) | (fgColor << 8) | (shadowColor << 4) | fgColor;
- *(current++) = (shadowColor << 12) | (fgColor << 8) | (shadowColor << 4) | fgColor;
-
- *(current++) = (bgColor << 12) | (shadowColor << 8) | (shadowColor << 4) | fgColor;
- *(current++) = (fgColor << 12) | (shadowColor << 8) | (shadowColor << 4) | fgColor;
- *(current++) = (shadowColor << 12) | (shadowColor << 8) | (shadowColor << 4) | fgColor;
-
- *(current++) = (bgColor << 12) | (bgColor << 8) | (bgColor << 4) | shadowColor;
- *(current++) = (fgColor << 12) | (bgColor << 8) | (bgColor << 4) | shadowColor;
- *(current++) = (shadowColor << 12) | (bgColor << 8) | (bgColor << 4) | shadowColor;
-
- *(current++) = (bgColor << 12) | (fgColor << 8) | (bgColor << 4) | shadowColor;
- *(current++) = (fgColor << 12) | (fgColor << 8) | (bgColor << 4) | shadowColor;
- *(current++) = (shadowColor << 12) | (fgColor << 8) | (bgColor << 4) | shadowColor;
-
- *(current++) = (bgColor << 12) | (shadowColor << 8) | (bgColor << 4) | shadowColor;
- *(current++) = (fgColor << 12) | (shadowColor << 8) | (bgColor << 4) | shadowColor;
- *(current++) = (shadowColor << 12) | (shadowColor << 8) | (bgColor << 4) | shadowColor;
-
- *(current++) = (bgColor << 12) | (bgColor << 8) | (fgColor << 4) | shadowColor;
- *(current++) = (fgColor << 12) | (bgColor << 8) | (fgColor << 4) | shadowColor;
- *(current++) = (shadowColor << 12) | (bgColor << 8) | (fgColor << 4) | shadowColor;
-
- *(current++) = (bgColor << 12) | (fgColor << 8) | (fgColor << 4) | shadowColor;
- *(current++) = (fgColor << 12) | (fgColor << 8) | (fgColor << 4) | shadowColor;
- *(current++) = (shadowColor << 12) | (fgColor << 8) | (fgColor << 4) | shadowColor;
-
- *(current++) = (bgColor << 12) | (shadowColor << 8) | (fgColor << 4) | shadowColor;
- *(current++) = (fgColor << 12) | (shadowColor << 8) | (fgColor << 4) | shadowColor;
- *(current++) = (shadowColor << 12) | (shadowColor << 8) | (fgColor << 4) | shadowColor;
-
- *(current++) = (bgColor << 12) | (bgColor << 8) | (shadowColor << 4) | shadowColor;
- *(current++) = (fgColor << 12) | (bgColor << 8) | (shadowColor << 4) | shadowColor;
- *(current++) = (shadowColor << 12) | (bgColor << 8) | (shadowColor << 4) | shadowColor;
-
- *(current++) = (bgColor << 12) | (fgColor << 8) | (shadowColor << 4) | shadowColor;
- *(current++) = (fgColor << 12) | (fgColor << 8) | (shadowColor << 4) | shadowColor;
- *(current++) = (shadowColor << 12) | (fgColor << 8) | (shadowColor << 4) | shadowColor;
-
- *(current++) = (bgColor << 12) | (shadowColor << 8) | (shadowColor << 4) | shadowColor;
- *(current++) = (fgColor << 12) | (shadowColor << 8) | (shadowColor << 4) | shadowColor;
- *(current++) = (shadowColor << 12) | (shadowColor << 8) | (shadowColor << 4) | shadowColor;
-}
-#else
-NAKED
-void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor)
-{
- asm("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, #0x24\n\
- lsl r0, #24\n\
- lsr r0, #24\n\
- lsl r1, #24\n\
- lsr r1, #24\n\
- lsl r2, #24\n\
- lsr r2, #24\n\
- ldr r3, =gFontHalfRowLookupTable\n\
- ldr r4, =gLastTextBgColor\n\
- strh r1, [r4]\n\
- ldr r4, =gLastTextFgColor\n\
- strh r0, [r4]\n\
- ldr r4, =gLastTextShadowColor\n\
- strh r2, [r4]\n\
- lsl r5, r1, #12\n\
- lsl r6, r0, #12\n\
- lsl r4, r2, #12\n\
- mov r8, r4\n\
- lsl r7, r1, #8\n\
- str r7, [sp]\n\
- lsl r4, r1, #4\n\
- mov r9, r4\n\
- orr r7, r4\n\
- str r7, [sp, #0x4]\n\
- orr r7, r1\n\
- add r4, r5, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- add r4, r6, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- mov r4, r8\n\
- orr r7, r4\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- lsl r7, r0, #8\n\
- mov r10, r7\n\
- mov r4, r10\n\
- mov r7, r9\n\
- orr r4, r7\n\
- str r4, [sp, #0x8]\n\
- add r7, r4, #0\n\
- orr r7, r1\n\
- add r4, r5, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- add r4, r6, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- mov r4, r8\n\
- orr r7, r4\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- lsl r7, r2, #8\n\
- mov r12, r7\n\
- mov r4, r12\n\
- mov r7, r9\n\
- orr r4, r7\n\
- str r4, [sp, #0xC]\n\
- add r7, r4, #0\n\
- orr r7, r1\n\
- add r4, r5, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- add r4, r6, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- mov r4, r8\n\
- orr r7, r4\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- lsl r7, r0, #4\n\
- mov r9, r7\n\
- ldr r4, [sp]\n\
- orr r4, r7\n\
- str r4, [sp, #0x10]\n\
- add r7, r4, #0\n\
- orr r7, r1\n\
- add r4, r5, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- add r4, r6, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- mov r4, r8\n\
- orr r7, r4\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- mov r7, r10\n\
- add r4, r7, #0\n\
- mov r7, r9\n\
- orr r4, r7\n\
- str r4, [sp, #0x14]\n\
- add r7, r4, #0\n\
- orr r7, r1\n\
- add r4, r5, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- add r4, r6, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- mov r4, r8\n\
- orr r7, r4\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- mov r7, r12\n\
- add r4, r7, #0\n\
- mov r7, r9\n\
- orr r4, r7\n\
- str r4, [sp, #0x18]\n\
- add r7, r4, #0\n\
- orr r7, r1\n\
- add r4, r5, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- add r4, r6, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- mov r4, r8\n\
- orr r7, r4\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- lsl r7, r2, #4\n\
- mov r9, r7\n\
- mov r4, r9\n\
- ldr r7, [sp]\n\
- orr r7, r4\n\
- str r7, [sp, #0x1C]\n\
- orr r7, r1\n\
- add r4, r5, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- add r4, r6, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- mov r4, r8\n\
- orr r7, r4\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- mov r7, r9\n\
- mov r4, r10\n\
- orr r4, r7\n\
- str r4, [sp, #0x20]\n\
- add r7, r4, #0\n\
- orr r7, r1\n\
- add r4, r5, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- add r4, r6, #0\n\
- orr r4, r7\n\
- strh r4, [r3]\n\
- add r3, #0x2\n\
- mov r4, r8\n\
- orr r7, r4\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- mov r4, r12\n\
- mov r7, r9\n\
- orr r4, r7\n\
- add r7, r4, #0\n\
- orr r7, r1\n\
- add r1, r5, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- add r1, r6, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- mov r1, r8\n\
- orr r7, r1\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- ldr r7, [sp, #0x4]\n\
- orr r7, r0\n\
- add r1, r5, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- add r1, r6, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- mov r1, r8\n\
- orr r7, r1\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- ldr r7, [sp, #0x8]\n\
- orr r7, r0\n\
- add r1, r5, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- add r1, r6, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- mov r1, r8\n\
- orr r7, r1\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- ldr r7, [sp, #0xC]\n\
- orr r7, r0\n\
- add r1, r5, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- add r1, r6, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- mov r1, r8\n\
- orr r7, r1\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- ldr r7, [sp, #0x10]\n\
- orr r7, r0\n\
- add r1, r5, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- add r1, r6, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- mov r1, r8\n\
- orr r7, r1\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- ldr r7, [sp, #0x14]\n\
- orr r7, r0\n\
- add r1, r5, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- add r1, r6, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- mov r1, r8\n\
- orr r7, r1\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- ldr r7, [sp, #0x18]\n\
- orr r7, r0\n\
- add r1, r5, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- add r1, r6, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- mov r1, r8\n\
- orr r7, r1\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- ldr r7, [sp, #0x1C]\n\
- orr r7, r0\n\
- add r1, r5, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- add r1, r6, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- mov r1, r8\n\
- orr r7, r1\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- ldr r7, [sp, #0x20]\n\
- orr r7, r0\n\
- add r1, r5, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- add r1, r6, #0\n\
- orr r1, r7\n\
- strh r1, [r3]\n\
- add r3, #0x2\n\
- mov r1, r8\n\
- orr r7, r1\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- add r7, r4, #0\n\
- orr r7, r0\n\
- add r0, r5, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- add r0, r6, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- orr r7, r1\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- add r7, r2, #0\n\
- ldr r0, [sp, #0x4]\n\
- orr r7, r0\n\
- add r0, r5, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- add r0, r6, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- orr r7, r1\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- add r7, r2, #0\n\
- ldr r1, [sp, #0x8]\n\
- orr r7, r1\n\
- add r0, r5, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- add r0, r6, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- mov r0, r8\n\
- orr r7, r0\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- add r7, r2, #0\n\
- ldr r1, [sp, #0xC]\n\
- orr r7, r1\n\
- add r0, r5, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- add r0, r6, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- mov r0, r8\n\
- orr r7, r0\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- add r7, r2, #0\n\
- ldr r1, [sp, #0x10]\n\
- orr r7, r1\n\
- add r0, r5, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- add r0, r6, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- mov r0, r8\n\
- orr r7, r0\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- add r7, r2, #0\n\
- ldr r1, [sp, #0x14]\n\
- orr r7, r1\n\
- add r0, r5, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- add r0, r6, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- mov r0, r8\n\
- orr r7, r0\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- add r7, r2, #0\n\
- ldr r1, [sp, #0x18]\n\
- orr r7, r1\n\
- add r0, r5, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- add r0, r6, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- mov r0, r8\n\
- orr r7, r0\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- add r7, r2, #0\n\
- ldr r1, [sp, #0x1C]\n\
- orr r7, r1\n\
- add r0, r5, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- add r0, r6, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- mov r0, r8\n\
- orr r7, r0\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- add r7, r2, #0\n\
- ldr r1, [sp, #0x20]\n\
- orr r7, r1\n\
- add r0, r5, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- add r0, r6, #0\n\
- orr r0, r7\n\
- strh r0, [r3]\n\
- add r3, #0x2\n\
- mov r0, r8\n\
- orr r7, r0\n\
- strh r7, [r3]\n\
- add r3, #0x2\n\
- add r7, r2, #0\n\
- orr r7, r4\n\
- orr r5, r7\n\
- strh r5, [r3]\n\
- add r3, #0x2\n\
- orr r6, r7\n\
- strh r6, [r3]\n\
- orr r0, r7\n\
- strh r0, [r3, #0x2]\n\
- add sp, #0x24\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\
- .pool");
+ bg12 = bgColor << 12;
+ fg12 = fgColor << 12;
+ shadow12 = shadowColor << 12;
+
+ temp = (bgColor << 8) | (bgColor << 4) | bgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (fgColor << 8) | (bgColor << 4) | bgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (shadowColor << 8) | (bgColor << 4) | bgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (bgColor << 8) | (fgColor << 4) | bgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (fgColor << 8) | (fgColor << 4) | bgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (shadowColor << 8) | (fgColor << 4) | bgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (bgColor << 8) | (shadowColor << 4) | bgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (fgColor << 8) | (shadowColor << 4) | bgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (shadowColor << 8) | (shadowColor << 4) | bgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (bgColor << 8) | (bgColor << 4) | fgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (fgColor << 8) | (bgColor << 4) | fgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (shadowColor << 8) | (bgColor << 4) | fgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (bgColor << 8) | (fgColor << 4) | fgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (fgColor << 8) | (fgColor << 4) | fgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (shadowColor << 8) | (fgColor << 4) | fgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (bgColor << 8) | (shadowColor << 4) | fgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (fgColor << 8) | (shadowColor << 4) | fgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (shadowColor << 8) | (shadowColor << 4) | fgColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (bgColor << 8) | (bgColor << 4) | shadowColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (fgColor << 8) | (bgColor << 4) | shadowColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (shadowColor << 8) | (bgColor << 4) | shadowColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (bgColor << 8) | (fgColor << 4) | shadowColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (fgColor << 8) | (fgColor << 4) | shadowColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (shadowColor << 8) | (fgColor << 4) | shadowColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (bgColor << 8) | (shadowColor << 4) | shadowColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (fgColor << 8) | (shadowColor << 4) | shadowColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
+
+ temp = (shadowColor << 8) | (shadowColor << 4) | shadowColor;
+ *(current++) = (bg12) | temp;
+ *(current++) = (fg12) | temp;
+ *(current++) = (shadow12) | temp;
}
-#endif
void SaveTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor)
{
@@ -848,207 +420,49 @@ void RestoreTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor)
GenerateFontHalfRowLookupTable(*fgColor, *bgColor, *shadowColor);
}
-#ifdef NONMATCHING
-void DecompressGlyphTile(const u16 *src, u16 *dest)
+void DecompressGlyphTile(const void *src_, void *dest_)
{
u32 temp;
+ const u16 *src = src_;
+ u32 *dest = dest_;
- temp = src[0];
- *(dest++) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]];
- temp = src[1];
- src += 2;
- dest[1] = (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]];
- dest++;
temp = *(src++);
- *(dest++) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]];
+ *(dest)++ = ((gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]]) << 16) | (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]]);
+
temp = *(src++);
- *(dest++) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]];
+ *(dest++) = ((gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]]) << 16) | (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]]);
+
temp = *(src++);
- *(dest++) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]];
+ *(dest++) = ((gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]]) << 16) | (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]]);
+
temp = *(src++);
- *(dest++) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]];
- *(dest++) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[src[0] & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[src[0] >> 8]];
- *(dest) = (gFontHalfRowLookupTable[gFontHalfRowOffsets[src[1] & 0xFF]] << 16) | gFontHalfRowLookupTable[gFontHalfRowOffsets[src[1] >> 8]];
-}
-#else
-NAKED
-void DecompressGlyphTile(const u16 *src, u16 *dest)
-{
- asm("push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- ldrh r7, [r0]\n\
- ldr r5, =gFontHalfRowLookupTable\n\
- ldr r4, =gFontHalfRowOffsets\n\
- mov r2, #0xFF\n\
- mov r8, r2\n\
- add r2, r7, #0\n\
- mov r3, r8\n\
- and r2, r3\n\
- add r2, r4\n\
- ldrb r2, [r2]\n\
- lsl r2, #1\n\
- add r2, r5\n\
- ldrh r3, [r2]\n\
- lsl r3, #16\n\
- lsr r2, r7, #8\n\
- add r2, r4\n\
- ldrb r2, [r2]\n\
- lsl r2, #1\n\
- add r2, r5\n\
- ldrh r2, [r2]\n\
- orr r3, r2\n\
- add r6, r1, #0\n\
- stmia r6!, {r3}\n\
- ldrh r7, [r0, #0x2]\n\
- add r0, #0x4\n\
- add r2, r7, #0\n\
- mov r3, r8\n\
- and r2, r3\n\
- add r2, r4\n\
- ldrb r2, [r2]\n\
- lsl r2, #1\n\
- add r2, r5\n\
- ldrh r3, [r2]\n\
- lsl r3, #16\n\
- lsr r2, r7, #8\n\
- add r2, r4\n\
- ldrb r2, [r2]\n\
- lsl r2, #1\n\
- add r2, r5\n\
- ldrh r2, [r2]\n\
- orr r3, r2\n\
- str r3, [r1, #0x4]\n\
- add r6, #0x4\n\
- ldrh r7, [r0]\n\
- add r0, #0x2\n\
- add r1, r7, #0\n\
- mov r2, r8\n\
- and r1, r2\n\
- add r1, r4\n\
- ldrb r1, [r1]\n\
- lsl r1, #1\n\
- add r1, r5\n\
- ldrh r2, [r1]\n\
- lsl r2, #16\n\
- lsr r1, r7, #8\n\
- add r1, r4\n\
- ldrb r1, [r1]\n\
- lsl r1, #1\n\
- add r1, r5\n\
- ldrh r1, [r1]\n\
- orr r2, r1\n\
- stmia r6!, {r2}\n\
- ldrh r7, [r0]\n\
- add r0, #0x2\n\
- add r1, r7, #0\n\
- mov r3, r8\n\
- and r1, r3\n\
- add r1, r4\n\
- ldrb r1, [r1]\n\
- lsl r1, #1\n\
- add r1, r5\n\
- ldrh r2, [r1]\n\
- lsl r2, #16\n\
- lsr r1, r7, #8\n\
- add r1, r4\n\
- ldrb r1, [r1]\n\
- lsl r1, #1\n\
- add r1, r5\n\
- ldrh r1, [r1]\n\
- orr r2, r1\n\
- stmia r6!, {r2}\n\
- ldrh r7, [r0]\n\
- add r0, #0x2\n\
- add r1, r7, #0\n\
- and r1, r3\n\
- add r1, r4\n\
- ldrb r1, [r1]\n\
- lsl r1, #1\n\
- add r1, r5\n\
- ldrh r2, [r1]\n\
- lsl r2, #16\n\
- lsr r1, r7, #8\n\
- add r1, r4\n\
- ldrb r1, [r1]\n\
- lsl r1, #1\n\
- add r1, r5\n\
- ldrh r1, [r1]\n\
- orr r2, r1\n\
- stmia r6!, {r2}\n\
- ldrh r7, [r0]\n\
- add r0, #0x2\n\
- add r1, r7, #0\n\
- and r1, r3\n\
- add r1, r4\n\
- ldrb r1, [r1]\n\
- lsl r1, #1\n\
- add r1, r5\n\
- ldrh r2, [r1]\n\
- lsl r2, #16\n\
- lsr r1, r7, #8\n\
- add r1, r4\n\
- ldrb r1, [r1]\n\
- lsl r1, #1\n\
- add r1, r5\n\
- ldrh r1, [r1]\n\
- orr r2, r1\n\
- stmia r6!, {r2}\n\
- ldrh r7, [r0]\n\
- add r1, r7, #0\n\
- and r1, r3\n\
- add r1, r4\n\
- ldrb r1, [r1]\n\
- lsl r1, #1\n\
- add r1, r5\n\
- ldrh r2, [r1]\n\
- lsl r2, #16\n\
- lsr r1, r7, #8\n\
- add r1, r4\n\
- ldrb r1, [r1]\n\
- lsl r1, #1\n\
- add r1, r5\n\
- ldrh r1, [r1]\n\
- orr r2, r1\n\
- stmia r6!, {r2}\n\
- ldrh r7, [r0, #0x2]\n\
- add r0, r7, #0\n\
- and r0, r3\n\
- add r0, r4\n\
- ldrb r0, [r0]\n\
- lsl r0, #1\n\
- add r0, r5\n\
- ldrh r1, [r0]\n\
- lsl r1, #16\n\
- lsr r0, r7, #8\n\
- add r0, r4\n\
- ldrb r0, [r0]\n\
- lsl r0, #1\n\
- add r0, r5\n\
- ldrh r0, [r0]\n\
- orr r1, r0\n\
- str r1, [r6]\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool");
+ *(dest++) = ((gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]]) << 16) | (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]]);
+
+ temp = *(src++);
+ *(dest++) = ((gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]]) << 16) | (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]]);
+
+ temp = *(src++);
+ *(dest++) = ((gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]]) << 16) | (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]]);
+
+ temp = *(src++);
+ *(dest++) = ((gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]]) << 16) | (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]]);
+
+ temp = *(src++);
+ *(dest++) = ((gFontHalfRowLookupTable[gFontHalfRowOffsets[temp & 0xFF]]) << 16) | (gFontHalfRowLookupTable[gFontHalfRowOffsets[temp >> 8]]);
}
-#endif
u8 GetLastTextColor(u8 colorType)
{
switch (colorType)
{
- case 0:
- return gLastTextFgColor;
- case 2:
- return gLastTextBgColor;
- case 1:
- return gLastTextShadowColor;
- default:
- return 0;
+ case 0:
+ return gLastTextFgColor;
+ case 2:
+ return gLastTextBgColor;
+ case 1:
+ return gLastTextShadowColor;
+ default:
+ return 0;
}
}
@@ -1249,7 +663,7 @@ _08004F06:\n\
bcc _08004EA8\n\
_08004F0E:\n\
ldr r1, [sp, #0x88]\n\
- ldr r3, =gUnknown_03002FD0\n\
+ ldr r3, =gUnknown_03002F90 + 0x40\n\
str r3, [sp, #0x20]\n\
ldr r0, [sp, #0x74]\n\
mov r8, r0\n\
@@ -1394,7 +808,7 @@ _08005014:\n\
bcc _08004FBA\n\
_0800501C:\n\
mov r1, r8\n\
- ldr r3, =gUnknown_03002FB0\n\
+ ldr r3, =gUnknown_03002F90 + 0x20\n\
str r3, [sp, #0x38]\n\
ldr r0, [sp, #0x84]\n\
ldr r2, [sp, #0x7C]\n\
@@ -1539,7 +953,7 @@ _08005124:\n\
bcc _080050CA\n\
_0800512C:\n\
mov r1, r8\n\
- ldr r3, =gUnknown_03002FB0\n\
+ ldr r3, =gUnknown_03002F90 + 0x20\n\
str r3, [sp, #0x50]\n\
ldr r0, [sp, #0x84]\n\
ldr r2, [sp, #0x7C]\n\
@@ -1608,7 +1022,7 @@ _080051A4:\n\
bcc _08005146\n\
_080051AC:\n\
ldr r1, [sp, #0x88]\n\
- ldr r3, =gUnknown_03002FD0\n\
+ ldr r3, =gUnknown_03002F90 + 0x40\n\
str r3, [sp, #0x5C]\n\
ldr r0, [sp, #0x84]\n\
mov r8, r0\n\
@@ -1677,7 +1091,7 @@ _08005222:\n\
_0800522A:\n\
ldr r4, [sp, #0x84]\n\
ldr r1, [sp, #0x88]\n\
- ldr r3, =gUnknown_03002FF0\n\
+ ldr r3, =gUnknown_03002F90 + 0x60\n\
str r3, [sp, #0x68]\n\
ldr r0, [sp, #0x7C]\n\
add r0, r4\n\
@@ -1759,23 +1173,23 @@ void ClearTextSpan(struct TextPrinter *textPrinter, u32 width)
{
struct Window *window;
struct Bitmap pixels_data;
- u8* gUnk;
+ struct Struct_03002F90 *gUnk;
u8* glyphHeight;
if (gLastTextBgColor != 0)
{
- window = &gWindows[textPrinter->subPrinter.windowId];
+ window = &gWindows[textPrinter->printerTemplate.windowId];
pixels_data.pixels = window->tileData;
pixels_data.width = window->window.width << 3;
pixels_data.height = window->window.height << 3;
- gUnk = gUnknown_03002F90;
- glyphHeight = &gUnk[0x81];
+ gUnk = &gUnknown_03002F90;
+ glyphHeight = &gUnk->unk81;
FillBitmapRect4Bit(
&pixels_data,
- textPrinter->subPrinter.currentX,
- textPrinter->subPrinter.currentY,
+ textPrinter->printerTemplate.currentX,
+ textPrinter->printerTemplate.currentY,
width,
*glyphHeight,
gLastTextBgColor);
@@ -1784,135 +1198,135 @@ void ClearTextSpan(struct TextPrinter *textPrinter, u32 width)
u16 Font0Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == FALSE)
{
- textPrinter->sub_union.sub.font_type = 0;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 0;
+ subStruct->hasGlyphIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font1Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == FALSE)
{
- textPrinter->sub_union.sub.font_type = 1;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 1;
+ subStruct->hasGlyphIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font2Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == FALSE)
{
- textPrinter->sub_union.sub.font_type = 2;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 2;
+ subStruct->hasGlyphIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font3Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == FALSE)
{
- textPrinter->sub_union.sub.font_type = 3;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 3;
+ subStruct->hasGlyphIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font4Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == FALSE)
{
- textPrinter->sub_union.sub.font_type = 4;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 4;
+ subStruct->hasGlyphIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font5Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == FALSE)
{
- textPrinter->sub_union.sub.font_type = 5;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 5;
+ subStruct->hasGlyphIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font7Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == FALSE)
{
- textPrinter->sub_union.sub.font_type = 7;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 7;
+ subStruct->hasGlyphIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font8Func(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->field_1_top == 0)
+ if (subStruct->hasGlyphIdBeenSet == FALSE)
{
- textPrinter->sub_union.sub.font_type = 8;
- subStruct->field_1_top = 1;
+ textPrinter->subUnion.sub.glyphId = 8;
+ subStruct->hasGlyphIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (gTextFlags.flag_2 == 1)
- subStruct->frames_visible_counter = 0;
+ if (gTextFlags.autoScroll == 1)
+ subStruct->autoScrollDelay = 0;
else
{
- subStruct->field_1_upmid = 0;
- subStruct->field_1 = 0;
+ subStruct->downArrowYPosIdx = 0;
+ subStruct->downArrowDelay = 0;
}
}
void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
const u8 *arrowTiles;
- if (gTextFlags.flag_2 == 0)
+ if (gTextFlags.autoScroll == 0)
{
- if (subStruct->field_1 != 0)
+ if (subStruct->downArrowDelay != 0)
{
- subStruct->field_1 = ((*(u32*)&textPrinter->sub_union.sub) << 19 >> 27) - 1; // convoluted way of getting field_1, necessary to match
+ subStruct->downArrowDelay = ((*(u32*)&textPrinter->subUnion.sub) << 19 >> 27) - 1; // convoluted way of getting downArrowDelay, necessary to match
}
else
{
FillWindowPixelRect(
- textPrinter->subPrinter.windowId,
- textPrinter->subPrinter.bgColor << 4 | textPrinter->subPrinter.bgColor,
- textPrinter->subPrinter.currentX,
- textPrinter->subPrinter.currentY,
+ textPrinter->printerTemplate.windowId,
+ textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor,
+ textPrinter->printerTemplate.currentX,
+ textPrinter->printerTemplate.currentY,
0x8,
0x10);
- switch (gTextFlags.flag_1)
+ switch (gTextFlags.useAlternateDownArrow)
{
case 0:
default:
@@ -1924,20 +1338,20 @@ void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter)
}
BlitBitmapRectToWindow(
- textPrinter->subPrinter.windowId,
+ textPrinter->printerTemplate.windowId,
arrowTiles,
0,
- gDownArrowYCoords[*(u32*)subStruct << 17 >> 30], // subStruct->field_1_upmid but again, stupidly retrieved
+ gDownArrowYCoords[*(u32*)subStruct << 17 >> 30], // subStruct->downArrowYPosIdx but again, stupidly retrieved
0x8,
0x10,
- textPrinter->subPrinter.currentX,
- textPrinter->subPrinter.currentY,
+ textPrinter->printerTemplate.currentX,
+ textPrinter->printerTemplate.currentY,
0x8,
0x10);
- CopyWindowToVram(textPrinter->subPrinter.windowId, 0x2);
+ CopyWindowToVram(textPrinter->printerTemplate.windowId, 0x2);
- subStruct->field_1 = 0x8;
- subStruct->field_1_upmid = (*(u32*)subStruct << 17 >> 30) + 1;
+ subStruct->downArrowDelay = 0x8;
+ subStruct->downArrowYPosIdx = (*(u32*)subStruct << 17 >> 30) + 1;
}
}
}
@@ -1945,26 +1359,26 @@ void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter)
void TextPrinterClearDownArrow(struct TextPrinter *textPrinter)
{
FillWindowPixelRect(
- textPrinter->subPrinter.windowId,
- textPrinter->subPrinter.bgColor << 4 | textPrinter->subPrinter.bgColor,
- textPrinter->subPrinter.currentX,
- textPrinter->subPrinter.currentY,
+ textPrinter->printerTemplate.windowId,
+ textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor,
+ textPrinter->printerTemplate.currentX,
+ textPrinter->printerTemplate.currentY,
0x8,
0x10);
- CopyWindowToVram(textPrinter->subPrinter.windowId, 0x2);
+ CopyWindowToVram(textPrinter->printerTemplate.windowId, 0x2);
}
bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *subStruct = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
- if (subStruct->frames_visible_counter == 49)
+ if (subStruct->autoScrollDelay == 49)
{
return TRUE;
}
else
{
- ++subStruct->frames_visible_counter;
+ ++subStruct->autoScrollDelay;
return FALSE;
}
}
@@ -1972,7 +1386,7 @@ bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter)
bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter)
{
bool8 result = FALSE;
- if (gTextFlags.flag_2 != 0)
+ if (gTextFlags.autoScroll != 0)
{
result = TextPrinterWaitAutoMode(textPrinter);
}
@@ -1991,7 +1405,7 @@ bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter)
bool16 TextPrinterWait(struct TextPrinter *textPrinter)
{
bool16 result = FALSE;
- if (gTextFlags.flag_2 != 0)
+ if (gTextFlags.autoScroll != 0)
{
result = TextPrinterWaitAutoMode(textPrinter);
}
@@ -2019,7 +1433,7 @@ void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *c
FillWindowPixelRect(windowId, (bgColor << 4) | bgColor, x, y, 0x8, 0x10);
if (drawArrow == 0)
{
- switch (gTextFlags.flag_1)
+ switch (gTextFlags.useAlternateDownArrow)
{
case 0:
default:
@@ -2047,290 +1461,289 @@ void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *c
}
}
}
-#ifdef NONMATCHING
+
u16 RenderText(struct TextPrinter *textPrinter)
{
- struct TextPrinterSubStruct *r4 = &textPrinter->sub_union.sub;
+ struct TextPrinterSubStruct *subStruct = &textPrinter->subUnion.sub;
u16 currChar;
s32 width;
+ s32 widthHelper;
- switch (textPrinter->state) // _080057C4
+ switch (textPrinter->state)
{
- case 0: // _080057F0
- if ((gMain.heldKeys & (A_BUTTON | B_BUTTON)) && r4->font_type_upper)
+ case 0:
+ if ((gMain.heldKeys & (A_BUTTON | B_BUTTON)) && subStruct->hasPrintBeenSpedUp)
textPrinter->delayCounter = 0;
- if (textPrinter->delayCounter && textPrinter->text_speed) //_0800580A
+ if (textPrinter->delayCounter && textPrinter->textSpeed)
{
textPrinter->delayCounter--;
- if (gTextFlags.flag_0 && (gMain.newKeys & (A_BUTTON | B_BUTTON)))
+ if (gTextFlags.canABSpeedUpPrint && (gMain.newKeys & (A_BUTTON | B_BUTTON)))
{
- r4->font_type_upper = 1;
+ subStruct->hasPrintBeenSpedUp = TRUE;
textPrinter->delayCounter = 0;
}
return 3;
}
- if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED) && gTextFlags.flag_2)
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED) && gTextFlags.autoScroll)
textPrinter->delayCounter = 3;
else
- textPrinter->delayCounter = textPrinter->text_speed;
+ textPrinter->delayCounter = textPrinter->textSpeed;
- currChar = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
+ currChar = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
- switch (currChar) //_0800588A
+ switch (currChar)
{
- case 0xF8+6: //_080058B8
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
- textPrinter->subPrinter.currentY += (gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing);
+ case CHAR_NEWLINE:
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentY += (gFonts[textPrinter->printerTemplate.fontId].maxLetterHeight + textPrinter->printerTemplate.lineSpacing);
return 2;
- case 0xF8+5: //_080058DC
- textPrinter->subPrinter.current_text_offset++;
+ case PLACEHOLDER_BEGIN:
+ textPrinter->printerTemplate.currentChar++;
return 2;
- case 0xF8+4: //_080058E0
- currChar = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
- switch (currChar) // _080058F0
+ case EXT_CTRL_CODE_BEGIN:
+ currChar = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ switch (currChar)
{
- case 1: // _08005960
- textPrinter->subPrinter.fontColor_h = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ case 1:
+ textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
- case 2: // _08005982
- textPrinter->subPrinter.bgColor = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ case 2:
+ textPrinter->printerTemplate.bgColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
- case 3: // _080059A6
- textPrinter->subPrinter.shadowColor = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ case 3:
+ textPrinter->printerTemplate.shadowColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
- case 4: // _080059C0
- textPrinter->subPrinter.fontColor_h = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
- textPrinter->subPrinter.bgColor = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
- textPrinter->subPrinter.shadowColor = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ case 4:
+ textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ textPrinter->printerTemplate.bgColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ textPrinter->printerTemplate.shadowColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
- case 5: // _08005A0E
- textPrinter->subPrinter.current_text_offset++;
+ case 5:
+ textPrinter->printerTemplate.currentChar++;
return 2;
- case 6: //_08005A12
- r4->font_type = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
+ case 6:
+ subStruct->glyphId = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
return 2;
- case 7: // _08005A0A
+ case EXT_CTRL_CODE_UNKNOWN_7:
return 2;
- case 8: // _08005A2A
- textPrinter->delayCounter = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
+ case 8:
+ textPrinter->delayCounter = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
textPrinter->state = 6;
return 2;
- case 9: // _08005A3A
+ case 9:
textPrinter->state = 1;
- if (gTextFlags.flag_2)
- r4->frames_visible_counter = 0;
+ if (gTextFlags.autoScroll)
+ subStruct->autoScrollDelay = 0;
return 3;
- case 10: // _08005A58
+ case 10:
textPrinter->state = 5;
return 3;
- case 11: // _08005A5C
- currChar = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
- currChar |= *textPrinter->subPrinter.current_text_offset << 8;
- textPrinter->subPrinter.current_text_offset++;
+ case 11:
+ currChar = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ currChar |= *textPrinter->printerTemplate.currentChar << 8;
+ textPrinter->printerTemplate.currentChar++;
PlayBGM(currChar);
return 2;
- case 16: // _08005A76
- currChar = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
- currChar |= (*textPrinter->subPrinter.current_text_offset << 8);
- textPrinter->subPrinter.current_text_offset++;
+ case 12:
+ currChar = *textPrinter->printerTemplate.currentChar | 0x100;
+ textPrinter->printerTemplate.currentChar++;
+ break;
+ case 16:
+ currChar = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
+ currChar |= (*textPrinter->printerTemplate.currentChar << 8);
+ textPrinter->printerTemplate.currentChar++;
PlaySE(currChar);
return 2;
- case 13: // _08005A90
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x + *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
+ case 13:
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x + *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
return 2;
- case 14: // _08005A98
- textPrinter->subPrinter.currentY = textPrinter->subPrinter.y + *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
+ case 14:
+ textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y + *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
return 2;
- case 15: // _08005AA4
- FillWindowPixelBuffer(textPrinter->subPrinter.windowId, textPrinter->subPrinter.bgColor | textPrinter->subPrinter.bgColor << 4);
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
- textPrinter->subPrinter.currentY = textPrinter->subPrinter.y;
+ case 15:
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, textPrinter->printerTemplate.bgColor | textPrinter->printerTemplate.bgColor << 4);
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y;
return 2;
- case 23: // _08005ABE
+ case 23:
m4aMPlayStop(&gMPlayInfo_BGM);
return 2;
- case 24: // _08005ACC
+ case 24:
m4aMPlayContinue(&gMPlayInfo_BGM);
return 2;
- case 17: // _08005AD8
- width = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
+ case EXT_CTRL_CODE_CLEAR:
+ width = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
if (width > 0)
{
ClearTextSpan(textPrinter, width);
- textPrinter->subPrinter.currentX += width;
+ textPrinter->printerTemplate.currentX += width;
return 0;
}
return 2;
- case 18: // _08005AF2
- textPrinter->subPrinter.currentX = *textPrinter->subPrinter.current_text_offset + textPrinter->subPrinter.x;
- textPrinter->subPrinter.current_text_offset++;
+ case 18:
+ textPrinter->printerTemplate.currentX = *textPrinter->printerTemplate.currentChar + textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentChar++;
return 2;
- case 19: // _08005B02
+ case 19:
{
- s32 widthHelper = *textPrinter->subPrinter.current_text_offset;
- widthHelper += textPrinter->subPrinter.x;
- textPrinter->subPrinter.current_text_offset++;
- width = widthHelper - textPrinter->subPrinter.currentX;
+ widthHelper = *textPrinter->printerTemplate.currentChar;
+ widthHelper += textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentChar++;
+ width = widthHelper - textPrinter->printerTemplate.currentX;
if (width > 0)
{
ClearTextSpan(textPrinter, width);
- textPrinter->subPrinter.currentX += width;
+ textPrinter->printerTemplate.currentX += width;
return 0;
}
}
return 2;
- case 20: // _08005B26
- textPrinter->minLetterSpacing = *textPrinter->subPrinter.current_text_offset++;
+ case 20:
+ textPrinter->minLetterSpacing = *textPrinter->printerTemplate.currentChar++;
return 2;
- case 21: // _08005B36
+ case EXT_CTRL_CODE_JPN:
textPrinter->japanese = 1;
return 2;
- case 22: // _08005B3E
+ case EXT_CTRL_CODE_ENG:
textPrinter->japanese = 0;
return 2;
- case 12: // _08005B5A
- currChar = *textPrinter->subPrinter.current_text_offset | 0x100;
- textPrinter->subPrinter.current_text_offset++;
- break;
}
break;
-
- case 0xF8+3: // _08005B48
+ case CHAR_PROMPT_CLEAR:
textPrinter->state = 2;
TextPrinterInitDownArrowCounters(textPrinter);
return 3;
- case 0xF8+2: // _08005B4C
+ case CHAR_PROMPT_SCROLL:
textPrinter->state = 3;
TextPrinterInitDownArrowCounters(textPrinter);
return 3;
- case 0xF8+1: // _08005B5A
- currChar = *textPrinter->subPrinter.current_text_offset | 0x100;
- textPrinter->subPrinter.current_text_offset++;
+ case CHAR_SPECIAL_F9:
+ currChar = *textPrinter->printerTemplate.currentChar | 0x100;
+ textPrinter->printerTemplate.currentChar++;
break;
- case 0xF8+0: // _08005B6C
- currChar = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset++;
- gUnknown_03002F90[0x80] = DrawKeypadIcon(textPrinter->subPrinter.windowId, currChar, textPrinter->subPrinter.currentX, textPrinter->subPrinter.currentY);
- textPrinter->subPrinter.currentX += gUnknown_03002F90[0x80] + textPrinter->subPrinter.letterSpacing;
+ case CHAR_SPECIAL_F8:
+ currChar = *textPrinter->printerTemplate.currentChar++;
+ gUnknown_03002F90.unk80 = DrawKeypadIcon(textPrinter->printerTemplate.windowId, currChar, textPrinter->printerTemplate.currentX, textPrinter->printerTemplate.currentY);
+ textPrinter->printerTemplate.currentX += gUnknown_03002F90.unk80 + textPrinter->printerTemplate.letterSpacing;
return 0;
- case 0xF8+7: // _08005D6C
+ case EOS:
return 1;
}
- switch (r4->font_type) // _08005B90
+ switch (subStruct->glyphId)
{
- case 0: // _08005BCC
+ case 0:
DecompressGlyphFont0(currChar, textPrinter->japanese);
break;
- case 1: // _08005BDA
+ case 1:
DecompressGlyphFont1(currChar, textPrinter->japanese);
break;
case 2:
case 3:
case 4:
- case 5: // _08005BE8
+ case 5:
DecompressGlyphFont2(currChar, textPrinter->japanese);
break;
- case 7: // _08005BF6
+ case 7:
DecompressGlyphFont7(currChar, textPrinter->japanese);
break;
- case 8: // _08005C04
+ case 8:
DecompressGlyphFont8(currChar, textPrinter->japanese);
break;
- case 6: // _08005C10
+ case 6:
break;
}
- CopyGlyphToWindow(textPrinter); // _08005C10
+ CopyGlyphToWindow(textPrinter);
if (textPrinter->minLetterSpacing)
{
- textPrinter->subPrinter.currentX += gUnknown_03002F90[0x80];
- width = textPrinter->minLetterSpacing - gUnknown_03002F90[0x80];
+ textPrinter->printerTemplate.currentX += gUnknown_03002F90.unk80;
+ width = textPrinter->minLetterSpacing - gUnknown_03002F90.unk80;
if (width > 0)
{
ClearTextSpan(textPrinter, width);
- textPrinter->subPrinter.currentX += width;
+ textPrinter->printerTemplate.currentX += width;
}
}
- else // _08005C48
+ else
{
if (textPrinter->japanese)
- textPrinter->subPrinter.currentX += (gUnknown_03002F90[0x80] + textPrinter->subPrinter.letterSpacing);
+ textPrinter->printerTemplate.currentX += (gUnknown_03002F90.unk80 + textPrinter->printerTemplate.letterSpacing);
else
- textPrinter->subPrinter.currentX += gUnknown_03002F90[0x80];
+ textPrinter->printerTemplate.currentX += gUnknown_03002F90.unk80;
}
return 0;
- case 1: // _08005C78
+ case 1:
if (TextPrinterWait(textPrinter))
textPrinter->state = 0;
return 3;
- case 2: // _08005C8C
+ case 2:
if (TextPrinterWaitWithDownArrow(textPrinter))
{
- FillWindowPixelBuffer(textPrinter->subPrinter.windowId, (textPrinter->subPrinter.bgColor << 4) | textPrinter->subPrinter.bgColor);
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
- textPrinter->subPrinter.currentY = textPrinter->subPrinter.y;
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, (textPrinter->printerTemplate.bgColor << 4) | textPrinter->printerTemplate.bgColor);
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y;
textPrinter->state = 0;
}
return 3;
- case 3: // _08005CB8
+ case 3:
if (TextPrinterWaitWithDownArrow(textPrinter))
{
TextPrinterClearDownArrow(textPrinter);
- textPrinter->scrollDistance = gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing;
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
+ textPrinter->scrollDistance = gFonts[textPrinter->printerTemplate.fontId].maxLetterHeight + textPrinter->printerTemplate.lineSpacing;
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
textPrinter->state = 4;
}
return 3;
- case 4: // _08005CF0
+ case 4:
if (textPrinter->scrollDistance)
{
- int scrollSpeed = sub_8197964();
+ int scrollSpeed = GetPlayerTextSpeed();
int speed = gWindowVerticalScrollSpeeds[scrollSpeed];
if (textPrinter->scrollDistance < speed)
{
- ScrollWindow(textPrinter->subPrinter.windowId, 0, textPrinter->scrollDistance, textPrinter->subPrinter.bgColor << 4 | textPrinter->subPrinter.bgColor);
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor);
textPrinter->scrollDistance = 0;
}
else
{
- ScrollWindow(textPrinter->subPrinter.windowId, 0, speed, textPrinter->subPrinter.bgColor << 4 | textPrinter->subPrinter.bgColor);
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, speed, textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor);
textPrinter->scrollDistance -= speed;
}
- CopyWindowToVram(textPrinter->subPrinter.windowId, 2);
+ CopyWindowToVram(textPrinter->printerTemplate.windowId, 2);
}
else
{
textPrinter->state = 0;
}
return 3;
- case 5: // _08005D48
+ case 5:
if (!IsSEPlaying())
textPrinter->state = 0;
return 3;
- case 6: // _08005D5A
+ case 6:
if (textPrinter->delayCounter != 0)
textPrinter->delayCounter--;
else
@@ -2340,734 +1753,6 @@ u16 RenderText(struct TextPrinter *textPrinter)
return 1;
}
-#else
-NAKED
-u16 RenderText(struct TextPrinter *textPrinter)
-{
- asm("push {r4-r6,lr}\n\
- add r6, r0, #0\n\
- add r4, r6, #0\n\
- add r4, #0x14\n\
- ldrb r0, [r6, #0x1C]\n\
- cmp r0, #0x6\n\
- bls _080057C4\n\
- b _08005D6C\n\
-_080057C4:\n\
- lsl r0, #2\n\
- ldr r1, =_080057D4\n\
- add r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
-_080057D4:\n\
- .4byte _080057F0\n\
- .4byte _08005C78\n\
- .4byte _08005C8C\n\
- .4byte _08005CB8\n\
- .4byte _08005CF0\n\
- .4byte _08005D48\n\
- .4byte _08005D5A\n\
-_080057F0:\n\
- ldr r2, =gMain\n\
- ldrh r1, [r2, #0x2C]\n\
- mov r0, #0x3\n\
- and r0, r1\n\
- cmp r0, #0\n\
- beq _0800580A\n\
- ldrb r1, [r4]\n\
- mov r0, #0x10\n\
- and r0, r1\n\
- cmp r0, #0\n\
- beq _0800580A\n\
- mov r0, #0\n\
- strb r0, [r6, #0x1E]\n\
-_0800580A:\n\
- ldrb r1, [r6, #0x1E]\n\
- cmp r1, #0\n\
- beq _0800584C\n\
- ldrb r0, [r6, #0x1D]\n\
- cmp r0, #0\n\
- beq _0800584C\n\
- sub r0, r1, #0x1\n\
- strb r0, [r6, #0x1E]\n\
- ldr r0, =gTextFlags\n\
- ldrb r1, [r0]\n\
- mov r0, #0x1\n\
- and r0, r1\n\
- cmp r0, #0\n\
- bne _08005828\n\
- b _08005B56\n\
-_08005828:\n\
- ldrh r1, [r2, #0x2E]\n\
- mov r0, #0x3\n\
- and r0, r1\n\
- cmp r0, #0\n\
- bne _08005834\n\
- b _08005B56\n\
-_08005834:\n\
- ldrb r0, [r4]\n\
- mov r1, #0x10\n\
- orr r0, r1\n\
- strb r0, [r4]\n\
- mov r0, #0\n\
- strb r0, [r6, #0x1E]\n\
- b _08005B56\n\
- .pool\n\
-_0800584C:\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- mov r1, #0x80\n\
- lsl r1, #17\n\
- and r0, r1\n\
- cmp r0, #0\n\
- bne _08005874\n\
- ldr r0, =gTextFlags\n\
- ldrb r1, [r0]\n\
- mov r0, #0x4\n\
- and r0, r1\n\
- cmp r0, #0\n\
- beq _08005874\n\
- mov r0, #0x3\n\
- b _08005876\n\
- .pool\n\
-_08005874:\n\
- ldrb r0, [r6, #0x1D]\n\
-_08005876:\n\
- strb r0, [r6, #0x1E]\n\
- ldr r0, [r6]\n\
- ldrb r3, [r0]\n\
- add r0, #0x1\n\
- str r0, [r6]\n\
- add r0, r3, #0\n\
- sub r0, #0xF8\n\
- cmp r0, #0x7\n\
- bls _0800588A\n\
- b _08005B90\n\
-_0800588A:\n\
- lsl r0, #2\n\
- ldr r1, =_08005898\n\
- add r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
-_08005898:\n\
- .4byte _08005B6C\n\
- .4byte _08005B5A\n\
- .4byte _08005B4C\n\
- .4byte _08005B48\n\
- .4byte _080058E0\n\
- .4byte _080058DC\n\
- .4byte _080058B8\n\
- .4byte _08005D6C\n\
-_080058B8:\n\
- ldrb r0, [r6, #0x6]\n\
- strb r0, [r6, #0x8]\n\
- ldrb r1, [r6, #0x5]\n\
- ldr r0, =gFonts\n\
- ldr r2, [r0]\n\
- lsl r0, r1, #1\n\
- add r0, r1\n\
- lsl r0, #2\n\
- add r0, r2\n\
- ldrb r1, [r6, #0xB]\n\
- ldrb r0, [r0, #0x5]\n\
- add r1, r0\n\
- ldrb r0, [r6, #0x9]\n\
- add r0, r1\n\
- b _08005ABA\n\
- .pool\n\
-_080058DC:\n\
- ldr r0, [r6]\n\
- b _08005B30\n\
-_080058E0:\n\
- ldr r0, [r6]\n\
- ldrb r3, [r0]\n\
- add r0, #0x1\n\
- str r0, [r6]\n\
- sub r0, r3, #0x1\n\
- cmp r0, #0x17\n\
- bls _080058F0\n\
- b _08005B90\n\
-_080058F0:\n\
- lsl r0, #2\n\
- ldr r1, =_08005900\n\
- add r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
-_08005900:\n\
- .4byte _08005960 @0\n\
- .4byte _08005982 @1\n\
- .4byte _080059A6 @2\n\
- .4byte _080059C0 @3\n\
- .4byte _08005A0E @4\n\
- .4byte _08005A12 @5\n\
- .4byte _08005A0A @6\n\
- .4byte _08005A2A @7\n\
- .4byte _08005A3A @8\n\
- .4byte _08005A58 @9\n\
- .4byte _08005A5C @10\n\
- .4byte _08005B5A @11\n\
- .4byte _08005A90 @12\n\
- .4byte _08005A98 @13\n\
- .4byte _08005AA4 @14\n\
- .4byte _08005A76 @15\n\
- .4byte _08005AD8 @16\n\
- .4byte _08005AF2 @17\n\
- .4byte _08005B02 @18\n\
- .4byte _08005B26 @19\n\
- .4byte _08005B36 @20\n\
- .4byte _08005B3E @21\n\
- .4byte _08005ABE @22\n\
- .4byte _08005ACC @23\n\
-_08005960:\n\
- ldr r2, [r6]\n\
- ldrb r1, [r2]\n\
- lsl r1, #4\n\
- ldrb r3, [r6, #0xC]\n\
- mov r0, #0xF\n\
- and r0, r3\n\
- orr r0, r1\n\
- strb r0, [r6, #0xC]\n\
- add r2, #0x1\n\
- str r2, [r6]\n\
- lsl r0, #24\n\
- lsr r0, #28\n\
- ldrb r2, [r6, #0xD]\n\
- lsl r1, r2, #28\n\
- lsr r1, #28\n\
- lsr r2, #4\n\
- b _08005A06\n\
-_08005982:\n\
- ldr r1, [r6]\n\
- ldrb r2, [r1]\n\
- mov r0, #0xF\n\
- and r0, r2\n\
- ldrb r3, [r6, #0xD]\n\
- mov r2, #0x10\n\
- neg r2, r2\n\
- and r2, r3\n\
- orr r2, r0\n\
- strb r2, [r6, #0xD]\n\
- add r1, #0x1\n\
- str r1, [r6]\n\
- ldrb r0, [r6, #0xC]\n\
- lsr r0, #4\n\
- lsl r1, r2, #28\n\
- lsr r1, #28\n\
- lsr r2, #4\n\
- b _08005A06\n\
-_080059A6:\n\
- ldr r1, [r6]\n\
- ldrb r0, [r1]\n\
- lsl r0, #4\n\
- ldrb r3, [r6, #0xD]\n\
- mov r2, #0xF\n\
- and r2, r3\n\
- orr r2, r0\n\
- strb r2, [r6, #0xD]\n\
- add r1, #0x1\n\
- str r1, [r6]\n\
- ldrb r0, [r6, #0xC]\n\
- lsr r0, #4\n\
- b _080059FE\n\
-_080059C0:\n\
- ldr r3, [r6]\n\
- ldrb r1, [r3]\n\
- lsl r1, #4\n\
- ldrb r4, [r6, #0xC]\n\
- mov r2, #0xF\n\
- add r0, r2, #0\n\
- and r0, r4\n\
- orr r0, r1\n\
- strb r0, [r6, #0xC]\n\
- add r5, r3, #0x1\n\
- str r5, [r6]\n\
- ldrb r3, [r3, #0x1]\n\
- add r1, r2, #0\n\
- and r1, r3\n\
- ldrb r4, [r6, #0xD]\n\
- mov r3, #0x10\n\
- neg r3, r3\n\
- and r3, r4\n\
- orr r3, r1\n\
- strb r3, [r6, #0xD]\n\
- add r4, r5, #0x1\n\
- str r4, [r6]\n\
- ldrb r1, [r5, #0x1]\n\
- lsl r1, #4\n\
- and r2, r3\n\
- orr r2, r1\n\
- strb r2, [r6, #0xD]\n\
- add r4, #0x1\n\
- str r4, [r6]\n\
- lsl r0, #24\n\
- lsr r0, #28\n\
-_080059FE:\n\
- lsl r1, r2, #28\n\
- lsr r1, #28\n\
- lsl r2, #24\n\
- lsr r2, #28\n\
-_08005A06:\n\
- bl GenerateFontHalfRowLookupTable\n\
-_08005A0A:\n\
- mov r0, #0x2\n\
- b _08005D6E\n\
-_08005A0E:\n\
- ldr r0, [r6]\n\
- b _08005B30\n\
-_08005A12:\n\
- ldr r0, [r6]\n\
- ldrb r0, [r0]\n\
- mov r1, #0xF\n\
- and r1, r0\n\
- ldrb r2, [r4]\n\
- mov r0, #0x10\n\
- neg r0, r0\n\
- and r0, r2\n\
- orr r0, r1\n\
- strb r0, [r4]\n\
- ldr r0, [r6]\n\
- b _08005B30\n\
-_08005A2A:\n\
- ldr r0, [r6]\n\
- ldrb r1, [r0]\n\
- strb r1, [r6, #0x1E]\n\
- add r0, #0x1\n\
- str r0, [r6]\n\
- mov r0, #0x6\n\
- strb r0, [r6, #0x1C]\n\
- b _08005A0A\n\
-_08005A3A:\n\
- mov r0, #0x1\n\
- strb r0, [r6, #0x1C]\n\
- ldr r0, =gTextFlags\n\
- ldrb r1, [r0]\n\
- mov r0, #0x4\n\
- and r0, r1\n\
- cmp r0, #0\n\
- bne _08005A4C\n\
- b _08005B56\n\
-_08005A4C:\n\
- mov r0, #0\n\
- strb r0, [r4, #0x2]\n\
- b _08005B56\n\
- .pool\n\
-_08005A58:\n\
- mov r0, #0x5\n\
- b _08005D56\n\
-_08005A5C:\n\
- ldr r0, [r6]\n\
- ldrb r3, [r0]\n\
- add r1, r0, #0x1\n\
- str r1, [r6]\n\
- ldrb r0, [r0, #0x1]\n\
- lsl r0, #8\n\
- orr r3, r0\n\
- add r1, #0x1\n\
- str r1, [r6]\n\
- add r0, r3, #0\n\
- bl PlayBGM\n\
- b _08005A0A\n\
-_08005A76:\n\
- ldr r0, [r6]\n\
- ldrb r3, [r0]\n\
- add r1, r0, #0x1\n\
- str r1, [r6]\n\
- ldrb r0, [r0, #0x1]\n\
- lsl r0, #8\n\
- orr r3, r0\n\
- add r1, #0x1\n\
- str r1, [r6]\n\
- add r0, r3, #0\n\
- bl PlaySE\n\
- b _08005A0A\n\
-_08005A90:\n\
- ldr r1, [r6]\n\
- ldrb r0, [r1]\n\
- ldrb r3, [r6, #0x6]\n\
- b _08005AF8\n\
-_08005A98:\n\
- ldr r1, [r6]\n\
- ldrb r0, [r1]\n\
- ldrb r2, [r6, #0x7]\n\
- add r0, r2\n\
- strb r0, [r6, #0x9]\n\
- b _08005AFC\n\
-_08005AA4:\n\
- ldrb r0, [r6, #0x4]\n\
- ldrb r2, [r6, #0xD]\n\
- lsl r2, #28\n\
- lsr r1, r2, #4\n\
- orr r1, r2\n\
- lsr r1, #24\n\
- bl FillWindowPixelBuffer\n\
- ldrb r0, [r6, #0x6]\n\
- strb r0, [r6, #0x8]\n\
- ldrb r0, [r6, #0x7]\n\
-_08005ABA:\n\
- strb r0, [r6, #0x9]\n\
- b _08005A0A\n\
-_08005ABE:\n\
- ldr r0, =gMPlayInfo_BGM\n\
- bl m4aMPlayStop\n\
- b _08005A0A\n\
- .pool\n\
-_08005ACC:\n\
- ldr r0, =gMPlayInfo_BGM\n\
- bl m4aMPlayContinue\n\
- b _08005A0A\n\
- .pool\n\
-_08005AD8:\n\
- ldr r0, [r6]\n\
- ldrb r4, [r0]\n\
- add r0, #0x1\n\
- str r0, [r6]\n\
- cmp r4, #0\n\
- ble _08005A0A\n\
- add r0, r6, #0\n\
- add r1, r4, #0\n\
- bl ClearTextSpan\n\
- ldrb r0, [r6, #0x8]\n\
- add r0, r4\n\
- b _08005C6E\n\
-_08005AF2:\n\
- ldr r1, [r6]\n\
- ldrb r0, [r6, #0x6]\n\
- ldrb r3, [r1]\n\
-_08005AF8:\n\
- add r0, r3\n\
- strb r0, [r6, #0x8]\n\
-_08005AFC:\n\
- add r1, #0x1\n\
- str r1, [r6]\n\
- b _08005A0A\n\
-_08005B02:\n\
- ldr r0, [r6]\n\
- ldrb r2, [r0]\n\
- ldrb r1, [r6, #0x6]\n\
- add r2, r1\n\
- add r0, #0x1\n\
- str r0, [r6]\n\
- ldrb r0, [r6, #0x8]\n\
- sub r4, r2, r0\n\
- cmp r4, #0\n\
- bgt _08005B18\n\
- b _08005A0A\n\
-_08005B18:\n\
- add r0, r6, #0\n\
- add r1, r4, #0\n\
- bl ClearTextSpan\n\
- ldrb r0, [r6, #0x8]\n\
- add r0, r4\n\
- b _08005C6E\n\
-_08005B26:\n\
- ldr r0, [r6]\n\
- ldrb r2, [r0]\n\
- add r1, r6, #0\n\
- add r1, #0x20\n\
- strb r2, [r1]\n\
-_08005B30:\n\
- add r0, #0x1\n\
- str r0, [r6]\n\
- b _08005A0A\n\
-_08005B36:\n\
- add r1, r6, #0\n\
- add r1, #0x21\n\
- mov r0, #0x1\n\
- b _08005B44\n\
-_08005B3E:\n\
- add r1, r6, #0\n\
- add r1, #0x21\n\
- mov r0, #0\n\
-_08005B44:\n\
- strb r0, [r1]\n\
- b _08005A0A\n\
-_08005B48:\n\
- mov r0, #0x2\n\
- b _08005B4E\n\
-_08005B4C:\n\
- mov r0, #0x3\n\
-_08005B4E:\n\
- strb r0, [r6, #0x1C]\n\
- add r0, r6, #0\n\
- bl TextPrinterInitDownArrowCounters\n\
-_08005B56:\n\
- mov r0, #0x3\n\
- b _08005D6E\n\
-_08005B5A:\n\
- ldr r0, [r6]\n\
- ldrb r3, [r0]\n\
- mov r2, #0x80\n\
- lsl r2, #1\n\
- add r1, r2, #0\n\
- orr r3, r1\n\
- add r0, #0x1\n\
- str r0, [r6]\n\
- b _08005B90\n\
-_08005B6C:\n\
- ldr r0, [r6]\n\
- ldrb r3, [r0]\n\
- add r0, #0x1\n\
- str r0, [r6]\n\
- ldrb r0, [r6, #0x4]\n\
- add r1, r3, #0\n\
- ldrb r2, [r6, #0x8]\n\
- ldrb r3, [r6, #0x9]\n\
- bl DrawKeypadIcon\n\
- ldr r1, =gUnknown_03002F90\n\
- add r1, #0x80\n\
- strb r0, [r1]\n\
- ldrb r3, [r6, #0xA]\n\
- add r0, r3\n\
- b _08005C6A\n\
- .pool\n\
-_08005B90:\n\
- ldr r0, [r4]\n\
- lsl r0, #28\n\
- lsr r0, #28\n\
- cmp r0, #0x8\n\
- bhi _08005C10\n\
- lsl r0, #2\n\
- ldr r1, =_08005BA8\n\
- add r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
-_08005BA8:\n\
- .4byte _08005BCC\n\
- .4byte _08005BDA\n\
- .4byte _08005BE8\n\
- .4byte _08005BE8\n\
- .4byte _08005BE8\n\
- .4byte _08005BE8\n\
- .4byte _08005C10\n\
- .4byte _08005BF6\n\
- .4byte _08005C04\n\
-_08005BCC:\n\
- add r0, r6, #0\n\
- add r0, #0x21\n\
- ldrb r1, [r0]\n\
- add r0, r3, #0\n\
- bl DecompressGlyphFont0\n\
- b _08005C10\n\
-_08005BDA:\n\
- add r0, r6, #0\n\
- add r0, #0x21\n\
- ldrb r1, [r0]\n\
- add r0, r3, #0\n\
- bl DecompressGlyphFont1\n\
- b _08005C10\n\
-_08005BE8:\n\
- add r0, r6, #0\n\
- add r0, #0x21\n\
- ldrb r1, [r0]\n\
- add r0, r3, #0\n\
- bl DecompressGlyphFont2\n\
- b _08005C10\n\
-_08005BF6:\n\
- add r0, r6, #0\n\
- add r0, #0x21\n\
- ldrb r1, [r0]\n\
- add r0, r3, #0\n\
- bl DecompressGlyphFont7\n\
- b _08005C10\n\
-_08005C04:\n\
- add r0, r6, #0\n\
- add r0, #0x21\n\
- ldrb r1, [r0]\n\
- add r0, r3, #0\n\
- bl DecompressGlyphFont8\n\
-_08005C10:\n\
- add r0, r6, #0\n\
- bl CopyGlyphToWindow\n\
- add r2, r6, #0\n\
- add r2, #0x20\n\
- ldrb r0, [r2]\n\
- cmp r0, #0\n\
- beq _08005C48\n\
- ldr r1, =gUnknown_03002F90\n\
- add r1, #0x80\n\
- ldrb r0, [r1]\n\
- ldrb r3, [r6, #0x8]\n\
- add r0, r3\n\
- strb r0, [r6, #0x8]\n\
- ldrb r2, [r2]\n\
- ldrb r0, [r1]\n\
- sub r4, r2, r0\n\
- cmp r4, #0\n\
- ble _08005C70\n\
- add r0, r6, #0\n\
- add r1, r4, #0\n\
- bl ClearTextSpan\n\
- ldrb r0, [r6, #0x8]\n\
- add r0, r4\n\
- b _08005C6E\n\
- .pool\n\
-_08005C48:\n\
- add r0, r6, #0\n\
- add r0, #0x21\n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- beq _08005C64\n\
- ldr r0, =gUnknown_03002F90\n\
- add r0, #0x80\n\
- ldrb r1, [r6, #0xA]\n\
- ldrb r0, [r0]\n\
- add r1, r0\n\
- ldrb r0, [r6, #0x8]\n\
- b _08005C6C\n\
- .pool\n\
-_08005C64:\n\
- ldr r0, =gUnknown_03002F90\n\
- add r0, #0x80\n\
- ldrb r0, [r0]\n\
-_08005C6A:\n\
- ldrb r1, [r6, #0x8]\n\
-_08005C6C:\n\
- add r0, r1\n\
-_08005C6E:\n\
- strb r0, [r6, #0x8]\n\
-_08005C70:\n\
- mov r0, #0\n\
- b _08005D6E\n\
- .pool\n\
-_08005C78:\n\
- add r0, r6, #0\n\
- bl TextPrinterWait\n\
- lsl r0, #16\n\
- cmp r0, #0\n\
- bne _08005C86\n\
- b _08005B56\n\
-_08005C86:\n\
- mov r0, #0\n\
- strb r0, [r6, #0x1C]\n\
- b _08005B56\n\
-_08005C8C:\n\
- add r0, r6, #0\n\
- bl TextPrinterWaitWithDownArrow\n\
- lsl r0, #16\n\
- cmp r0, #0\n\
- bne _08005C9A\n\
- b _08005B56\n\
-_08005C9A:\n\
- ldrb r0, [r6, #0x4]\n\
- ldrb r2, [r6, #0xD]\n\
- lsl r2, #28\n\
- lsr r1, r2, #4\n\
- orr r1, r2\n\
- lsr r1, #24\n\
- bl FillWindowPixelBuffer\n\
- ldrb r0, [r6, #0x6]\n\
- mov r1, #0\n\
- strb r0, [r6, #0x8]\n\
- ldrb r0, [r6, #0x7]\n\
- strb r0, [r6, #0x9]\n\
- strb r1, [r6, #0x1C]\n\
- b _08005B56\n\
-_08005CB8:\n\
- add r0, r6, #0\n\
- bl TextPrinterWaitWithDownArrow\n\
- lsl r0, #16\n\
- cmp r0, #0\n\
- bne _08005CC6\n\
- b _08005B56\n\
-_08005CC6:\n\
- add r0, r6, #0\n\
- bl TextPrinterClearDownArrow\n\
- ldrb r1, [r6, #0x5]\n\
- ldr r0, =gFonts\n\
- ldr r2, [r0]\n\
- lsl r0, r1, #1\n\
- add r0, r1\n\
- lsl r0, #2\n\
- add r0, r2\n\
- ldrb r1, [r6, #0xB]\n\
- ldrb r0, [r0, #0x5]\n\
- add r1, r0\n\
- strb r1, [r6, #0x1F]\n\
- ldrb r0, [r6, #0x6]\n\
- strb r0, [r6, #0x8]\n\
- mov r0, #0x4\n\
- strb r0, [r6, #0x1C]\n\
- b _08005B56\n\
- .pool\n\
-_08005CF0:\n\
- ldrb r0, [r6, #0x1F]\n\
- cmp r0, #0\n\
- beq _08005D44\n\
- bl sub_8197964\n\
- ldr r1, =gWindowVerticalScrollSpeeds\n\
- add r0, r1\n\
- ldrb r4, [r0]\n\
- ldrb r2, [r6, #0x1F]\n\
- cmp r2, r4\n\
- bge _08005D20\n\
- ldrb r0, [r6, #0x4]\n\
- ldrb r1, [r6, #0xD]\n\
- lsl r1, #28\n\
- lsr r3, r1, #4\n\
- orr r3, r1\n\
- lsr r3, #24\n\
- mov r1, #0\n\
- bl ScrollWindow\n\
- mov r0, #0\n\
- b _08005D38\n\
- .pool\n\
-_08005D20:\n\
- ldrb r0, [r6, #0x4]\n\
- ldrb r1, [r6, #0xD]\n\
- lsl r1, #28\n\
- lsr r3, r1, #4\n\
- orr r3, r1\n\
- lsr r3, #24\n\
- mov r1, #0\n\
- add r2, r4, #0\n\
- bl ScrollWindow\n\
- ldrb r0, [r6, #0x1F]\n\
- sub r0, r4\n\
-_08005D38:\n\
- strb r0, [r6, #0x1F]\n\
- ldrb r0, [r6, #0x4]\n\
- mov r1, #0x2\n\
- bl CopyWindowToVram\n\
- b _08005B56\n\
-_08005D44:\n\
- strb r0, [r6, #0x1C]\n\
- b _08005B56\n\
-_08005D48:\n\
- bl IsSEPlaying\n\
- lsl r0, #24\n\
- lsr r0, #24\n\
- cmp r0, #0\n\
- beq _08005D56\n\
- b _08005B56\n\
-_08005D56:\n\
- strb r0, [r6, #0x1C]\n\
- b _08005B56\n\
-_08005D5A:\n\
- ldrb r0, [r6, #0x1E]\n\
- add r1, r0, #0\n\
- cmp r1, #0\n\
- beq _08005D68\n\
- sub r0, #0x1\n\
- strb r0, [r6, #0x1E]\n\
- b _08005B56\n\
-_08005D68:\n\
- strb r1, [r6, #0x1C]\n\
- b _08005B56\n\
-_08005D6C:\n\
- mov r0, #0x1\n\
-_08005D6E:\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n");
-}
-#endif
u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
{
@@ -3095,59 +1780,59 @@ u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
temp = strLocal[strPos++];
switch (temp)
{
- case CHAR_NEWLINE:
- case EOS:
- lineWidths[line] = width;
- width = 0;
- line++;
- break;
- case EXT_CTRL_CODE_BEGIN:
- temp2 = strLocal[strPos++];
- switch (temp2)
- {
- case 0x4:
- ++strPos;
- case 0xB:
- case 0x10:
- ++strPos;
- case 0x1:
- case 0x2:
- case 0x3:
- case 0x5:
- case 0x6:
- case 0x8:
- case 0xC:
- case 0xD:
- case 0xE:
- case 0x11:
- case 0x12:
- case 0x13:
- case 0x14:
- ++strPos;
- break;
- case 0x7:
- case 0x9:
- case 0xA:
- case 0xF:
- case 0x15:
- case 0x16:
- default:
- break;
- }
- break;
- case CHAR_SPECIAL_F7:
- case PLACEHOLDER_BEGIN:
+ case CHAR_NEWLINE:
+ case EOS:
+ lineWidths[line] = width;
+ width = 0;
+ line++;
+ break;
+ case EXT_CTRL_CODE_BEGIN:
+ temp2 = strLocal[strPos++];
+ switch (temp2)
+ {
+ case 0x4:
++strPos;
- break;
- case CHAR_PROMPT_SCROLL:
- case CHAR_PROMPT_CLEAR:
- break;
- case CHAR_SPECIAL_F8:
- case CHAR_SPECIAL_F9:
+ case 0xB:
+ case 0x10:
++strPos;
+ case 0x1:
+ case 0x2:
+ case 0x3:
+ case 0x5:
+ case 0x6:
+ case 0x8:
+ case 0xC:
+ case 0xD:
+ case 0xE:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ ++strPos;
+ break;
+ case EXT_CTRL_CODE_UNKNOWN_7:
+ case 0x9:
+ case 0xA:
+ case 0xF:
+ case EXT_CTRL_CODE_JPN:
+ case EXT_CTRL_CODE_ENG:
default:
- ++width;
break;
+ }
+ break;
+ case CHAR_SPECIAL_F7:
+ case PLACEHOLDER_BEGIN:
+ ++strPos;
+ break;
+ case CHAR_PROMPT_SCROLL:
+ case CHAR_PROMPT_CLEAR:
+ break;
+ case CHAR_SPECIAL_F8:
+ case CHAR_SPECIAL_F9:
+ ++strPos;
+ default:
+ ++width;
+ break;
}
} while (temp != EOS);
@@ -3166,11 +1851,11 @@ u32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32)
for (i = 0; i < 9; ++i)
{
- if (glyphId == gGlyphWidthFuncs[i].font_id)
+ if (glyphId == gGlyphWidthFuncs[i].fontId)
return gGlyphWidthFuncs[i].func;
}
- return 0;
+ return NULL;
}
u32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
@@ -3181,7 +1866,7 @@ u32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
s32 result;
int localLetterSpacing;
u32 lineWidth;
- u8 *bufferPointer;
+ const u8 *bufferPointer;
int glyphWidth;
u32 width;
@@ -3205,107 +1890,32 @@ u32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
{
switch (*str)
{
- case CHAR_NEWLINE:
- if (lineWidth > width)
- width = lineWidth;
- lineWidth = 0;
- break;
- case PLACEHOLDER_BEGIN:
- switch (*++str)
- {
- case 0x2:
- bufferPointer = gStringVar1;
- break;
- case 0x3:
- bufferPointer = gStringVar2;
- break;
- case 0x4:
- bufferPointer = gStringVar3;
- break;
- default:
- return 0;
- }
- case CHAR_SPECIAL_F7:
- if (bufferPointer == NULL)
- bufferPointer = DynamicPlaceholderTextUtil_GetPlaceholderPtr(*++str);
- while (*bufferPointer != EOS)
- {
- glyphWidth = func(*bufferPointer++, isJapanese);
- if (minGlyphWidth > 0)
- {
- if (glyphWidth < minGlyphWidth)
- glyphWidth = minGlyphWidth;
- lineWidth += glyphWidth;
- }
- else
- {
- lineWidth += glyphWidth;
- if (isJapanese && str[1] != EOS)
- lineWidth += localLetterSpacing;
- }
- }
- bufferPointer = 0;
- break;
- case EXT_CTRL_CODE_BEGIN:
- switch (*++str)
- {
- case 0x4:
- ++str;
- case 0xB:
- case 0x10:
- ++str;
- case 0x1:
- case 0x2:
- case 0x3:
- case 0x5:
- case 0x8:
- case 0xC:
- case 0xD:
- case 0xE:
- ++str;
- break;
- case 0x6:
- func = GetFontWidthFunc(*++str);
- if (func == NULL)
- return 0;
- if (letterSpacing == -1)
- localLetterSpacing = GetFontAttribute(*str, FONTATTR_LETTER_SPACING);
- break;
- case 0x11:
- glyphWidth = *++str;
- lineWidth += glyphWidth;
- break;
- case 0x12:
- lineWidth = *++str;
- break;
- case 0x13:
- if (*++str > lineWidth)
- lineWidth = *str;
- break;
- case 0x14:
- minGlyphWidth = *++str;
- break;
- case 0x15:
- isJapanese = 1;
- break;
- case 0x16:
- isJapanese = 0;
- break;
- case 0x7:
- case 0x9:
- case 0xA:
- case 0xF:
- default:
- break;
- }
- break;
- case CHAR_SPECIAL_F8:
- case CHAR_SPECIAL_F9:
- if (*str == CHAR_SPECIAL_F9)
- glyphWidth = func(*++str | 0x100, isJapanese);
- else
- glyphWidth = GetKeypadIconWidth(*++str);
-
+ case CHAR_NEWLINE:
+ if (lineWidth > width)
+ width = lineWidth;
+ lineWidth = 0;
+ break;
+ case PLACEHOLDER_BEGIN:
+ switch (*++str)
+ {
+ case 0x2:
+ bufferPointer = gStringVar1;
+ break;
+ case 0x3:
+ bufferPointer = gStringVar2;
+ break;
+ case 0x4:
+ bufferPointer = gStringVar3;
+ break;
+ default:
+ return 0;
+ }
+ case CHAR_SPECIAL_F7:
+ if (bufferPointer == NULL)
+ bufferPointer = DynamicPlaceholderTextUtil_GetPlaceholderPtr(*++str);
+ while (*bufferPointer != EOS)
+ {
+ glyphWidth = func(*bufferPointer++, isJapanese);
if (minGlyphWidth > 0)
{
if (glyphWidth < minGlyphWidth)
@@ -3318,25 +1928,100 @@ u32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
if (isJapanese && str[1] != EOS)
lineWidth += localLetterSpacing;
}
+ }
+ bufferPointer = 0;
+ break;
+ case EXT_CTRL_CODE_BEGIN:
+ switch (*++str)
+ {
+ case 0x4:
+ ++str;
+ case 0xB:
+ case 0x10:
+ ++str;
+ case 0x1:
+ case 0x2:
+ case 0x3:
+ case 0x5:
+ case 0x8:
+ case 0xC:
+ case 0xD:
+ case 0xE:
+ ++str;
+ break;
+ case 0x6:
+ func = GetFontWidthFunc(*++str);
+ if (func == NULL)
+ return 0;
+ if (letterSpacing == -1)
+ localLetterSpacing = GetFontAttribute(*str, FONTATTR_LETTER_SPACING);
+ break;
+ case 0x11:
+ glyphWidth = *++str;
+ lineWidth += glyphWidth;
+ break;
+ case 0x12:
+ lineWidth = *++str;
+ break;
+ case 0x13:
+ if (*++str > lineWidth)
+ lineWidth = *str;
break;
- case CHAR_PROMPT_SCROLL:
- case CHAR_PROMPT_CLEAR:
+ case 0x14:
+ minGlyphWidth = *++str;
break;
+ case EXT_CTRL_CODE_JPN:
+ isJapanese = 1;
+ break;
+ case EXT_CTRL_CODE_ENG:
+ isJapanese = 0;
+ break;
+ case EXT_CTRL_CODE_UNKNOWN_7:
+ case 0x9:
+ case 0xA:
+ case 0xF:
default:
- glyphWidth = func(*str, isJapanese);
- if (minGlyphWidth > 0)
- {
- if (glyphWidth < minGlyphWidth)
- glyphWidth = minGlyphWidth;
- lineWidth += glyphWidth;
- }
- else
- {
- lineWidth += glyphWidth;
- if (isJapanese && str[1] != EOS)
- lineWidth += localLetterSpacing;
- }
break;
+ }
+ break;
+ case CHAR_SPECIAL_F8:
+ case CHAR_SPECIAL_F9:
+ if (*str == CHAR_SPECIAL_F9)
+ glyphWidth = func(*++str | 0x100, isJapanese);
+ else
+ glyphWidth = GetKeypadIconWidth(*++str);
+
+ if (minGlyphWidth > 0)
+ {
+ if (glyphWidth < minGlyphWidth)
+ glyphWidth = minGlyphWidth;
+ lineWidth += glyphWidth;
+ }
+ else
+ {
+ lineWidth += glyphWidth;
+ if (isJapanese && str[1] != EOS)
+ lineWidth += localLetterSpacing;
+ }
+ break;
+ case CHAR_PROMPT_SCROLL:
+ case CHAR_PROMPT_CLEAR:
+ break;
+ default:
+ glyphWidth = func(*str, isJapanese);
+ if (minGlyphWidth > 0)
+ {
+ if (glyphWidth < minGlyphWidth)
+ glyphWidth = minGlyphWidth;
+ lineWidth += glyphWidth;
+ }
+ else
+ {
+ lineWidth += glyphWidth;
+ if (isJapanese && str[1] != EOS)
+ lineWidth += localLetterSpacing;
+ }
+ break;
}
++str;
}
@@ -3372,82 +2057,81 @@ u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str)
temp = strLocal[strPos++];
switch (temp)
{
- case EXT_CTRL_CODE_BEGIN:
- temp2 = strLocal[strPos++];
- switch (temp2)
- {
- case 0x4:
- fgColor = strLocal[strPos++];
- bgColor = strLocal[strPos++];
- shadowColor = strLocal[strPos++];
- GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
- continue;
- case 0x1:
- fgColor = strLocal[strPos++];
- GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
- continue;
- case 0x2:
- bgColor = strLocal[strPos++];
- GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
- continue;
- case 0x3:
- shadowColor = strLocal[strPos++];
- GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
- continue;
- case 0x6:
- fontId = strLocal[strPos++];
- break;
- case 0xB:
- case 0x10:
- ++strPos;
- case 0x5:
- case 0x8:
- case 0xC:
- case 0xD:
- case 0xE:
- case 0x11:
- case 0x12:
- case 0x13:
- case 0x14:
- ++strPos;
- break;
- case 0x7:
- case 0x9:
- case 0xA:
- case 0xF:
- case 0x15:
- case 0x16:
- default:
- continue;
- }
+ case EXT_CTRL_CODE_BEGIN:
+ temp2 = strLocal[strPos++];
+ switch (temp2)
+ {
+ case 0x4:
+ fgColor = strLocal[strPos++];
+ bgColor = strLocal[strPos++];
+ shadowColor = strLocal[strPos++];
+ GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
+ continue;
+ case 0x1:
+ fgColor = strLocal[strPos++];
+ GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
+ continue;
+ case 0x2:
+ bgColor = strLocal[strPos++];
+ GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
+ continue;
+ case 0x3:
+ shadowColor = strLocal[strPos++];
+ GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
+ continue;
+ case 0x6:
+ fontId = strLocal[strPos++];
break;
- case CHAR_SPECIAL_F7:
- case CHAR_SPECIAL_F8:
- case CHAR_SPECIAL_F9:
- case PLACEHOLDER_BEGIN:
+ case 0xB:
+ case 0x10:
+ ++strPos;
+ case 0x5:
+ case 0x8:
+ case 0xC:
+ case 0xD:
+ case 0xE:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
++strPos;
break;
- case CHAR_PROMPT_SCROLL:
- case CHAR_PROMPT_CLEAR:
- case CHAR_NEWLINE:
- case EOS:
+ case EXT_CTRL_CODE_UNKNOWN_7:
+ case 0x9:
+ case 0xA:
+ case 0xF:
+ case EXT_CTRL_CODE_JPN:
+ case EXT_CTRL_CODE_ENG:
+ default:
+ continue;
+ }
+ break;
+ case CHAR_SPECIAL_F7:
+ case CHAR_SPECIAL_F8:
+ case CHAR_SPECIAL_F9:
+ case PLACEHOLDER_BEGIN:
+ ++strPos;
+ break;
+ case CHAR_PROMPT_SCROLL:
+ case CHAR_PROMPT_CLEAR:
+ case CHAR_NEWLINE:
+ case EOS:
+ break;
+ default:
+ switch (fontId)
+ {
+ case 9:
+ DecompressGlyphFont9(temp);
break;
+ case 1:
default:
- switch (fontId)
- {
- case 9:
- DecompressGlyphFont9(temp);
- break;
- case 1:
- default:
- DecompressGlyphFont1(temp, 1);
- break;
- }
-
- CpuCopy32(gUnknown_03002F90, pixels, 0x20);
- CpuCopy32(gUnknown_03002F90 + 0x40, pixels + 0x20, 0x20);
- pixels += 0x40;
+ DecompressGlyphFont1(temp, 1);
break;
+ }
+ CpuCopy32(gUnknown_03002F90.unk0, pixels, 0x20);
+ CpuCopy32(gUnknown_03002F90.unk40, pixels + 0x20, 0x20);
+ pixels += 0x40;
+ break;
}
}
while (temp != EOS);
@@ -3460,7 +2144,7 @@ u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y)
{
BlitBitmapRectToWindow(
windowId,
- gKeypadIconTiles + (gKeypadIcons[keypadIconId].tile_offset * 0x20),
+ gKeypadIconTiles + (gKeypadIcons[keypadIconId].tileOffset * 0x20),
0,
0,
0x80,
@@ -3474,7 +2158,7 @@ u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y)
u8 GetKeypadIconTileOffset(u8 keypadIconId)
{
- return gKeypadIcons[keypadIconId].tile_offset;
+ return gKeypadIcons[keypadIconId].tileOffset;
}
u8 GetKeypadIconWidth(u8 keypadIconId)
@@ -3509,8 +2193,8 @@ u8 GetFontAttribute(u8 fontId, u8 attributeId)
case FONTATTR_LINE_SPACING:
result = gFontInfos[fontId].lineSpacing;
break;
- case FONTATTR_COLOR_LOWNIBBLE:
- result = gFontInfos[fontId].fontColor_l;
+ case FONTATTR_UNKNOWN:
+ result = gFontInfos[fontId].unk;
break;
case FONTATTR_COLOR_FOREGROUND:
result = gFontInfos[fontId].fgColor;
@@ -3537,30 +2221,30 @@ void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese)
if (isJapanese == 1)
{
glyphs = gFont0JapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId & 0xF));
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x80, (u16 *)(gUnknown_03002F90 + 0x40)); // gUnknown_03002FD0
- gUnknown_03002F90[0x80] = 8; // gGlyphWidth
- gUnknown_03002F90[0x81] = 12; // gGlyphHeight
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x80, gUnknown_03002F90.unk40); // gUnknown_03002F90 + 0x40
+ gUnknown_03002F90.unk80 = 8; // gGlyphWidth
+ gUnknown_03002F90.unk81 = 12; // gGlyphHeight
}
else
{
glyphs = gFont0LatinGlyphs + (0x20 * glyphId);
- gUnknown_03002F90[0x80] = gFont0LatinGlyphWidths[glyphId];
+ gUnknown_03002F90.unk80 = gFont0LatinGlyphWidths[glyphId];
- if (gUnknown_03002F90[0x80] <= 8)
+ if (gUnknown_03002F90.unk80 <= 8)
{
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x10, (u16 *)(gUnknown_03002F90 + 0x40));
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x10, gUnknown_03002F90.unk40);
}
else
{
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x8, (u16 *)(gUnknown_03002F90 + 0x20));
- DecompressGlyphTile(glyphs + 0x10, (u16 *)(gUnknown_03002F90 + 0x40));
- DecompressGlyphTile(glyphs + 0x18, (u16 *)(gUnknown_03002F90 + 0x60));
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x8, gUnknown_03002F90.unk20);
+ DecompressGlyphTile(glyphs + 0x10, gUnknown_03002F90.unk40);
+ DecompressGlyphTile(glyphs + 0x18, gUnknown_03002F90.unk60);
}
- gUnknown_03002F90[0x81] = 13;
+ gUnknown_03002F90.unk81 = 13;
}
}
@@ -3580,30 +2264,30 @@ void DecompressGlyphFont7(u16 glyphId, bool32 isJapanese)
{
int eff;
glyphs = gFont1JapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId & (eff = 0xF))); // shh, no questions, only matching now
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x80, (u16 *)(gUnknown_03002F90 + 0x40)); // gUnknown_03002FD0
- gUnknown_03002F90[0x80] = 8; // gGlyphWidth
- gUnknown_03002F90[0x81] = 15; // gGlyphHeight
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x80, gUnknown_03002F90.unk40); // gUnknown_03002F90 + 0x40
+ gUnknown_03002F90.unk80 = 8; // gGlyphWidth
+ gUnknown_03002F90.unk81 = 15; // gGlyphHeight
}
else
{
glyphs = gFont7LatinGlyphs + (0x20 * glyphId);
- gUnknown_03002F90[0x80] = gFont7LatinGlyphWidths[glyphId];
+ gUnknown_03002F90.unk80 = gFont7LatinGlyphWidths[glyphId];
- if (gUnknown_03002F90[0x80] <= 8)
+ if (gUnknown_03002F90.unk80 <= 8)
{
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x10, (u16 *)(gUnknown_03002F90 + 0x40));
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x10, gUnknown_03002F90.unk40);
}
else
{
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x8, (u16 *)(gUnknown_03002F90 + 0x20));
- DecompressGlyphTile(glyphs + 0x10, (u16 *)(gUnknown_03002F90 + 0x40));
- DecompressGlyphTile(glyphs + 0x18, (u16 *)(gUnknown_03002F90 + 0x60));
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x8, gUnknown_03002F90.unk20);
+ DecompressGlyphTile(glyphs + 0x10, gUnknown_03002F90.unk40);
+ DecompressGlyphTile(glyphs + 0x18, gUnknown_03002F90.unk60);
}
- gUnknown_03002F90[0x81] = 15;
+ gUnknown_03002F90.unk81 = 15;
}
}
@@ -3622,30 +2306,30 @@ void DecompressGlyphFont8(u16 glyphId, bool32 isJapanese)
if (isJapanese == TRUE)
{
glyphs = gFont0JapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId & 0xF));
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x80, (u16 *)(gUnknown_03002F90 + 0x40)); // gUnknown_03002FD0
- gUnknown_03002F90[0x80] = 8; // gGlyphWidth
- gUnknown_03002F90[0x81] = 12; // gGlyphHeight
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x80, gUnknown_03002F90.unk40); // gUnknown_03002F90 + 0x40
+ gUnknown_03002F90.unk80 = 8; // gGlyphWidth
+ gUnknown_03002F90.unk81 = 12; // gGlyphHeight
}
else
{
glyphs = gFont8LatinGlyphs + (0x20 * glyphId);
- gUnknown_03002F90[0x80] = gFont8LatinGlyphWidths[glyphId];
+ gUnknown_03002F90.unk80 = gFont8LatinGlyphWidths[glyphId];
- if (gUnknown_03002F90[0x80] <= 8)
+ if (gUnknown_03002F90.unk80 <= 8)
{
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x10, (u16 *)(gUnknown_03002F90 + 0x40));
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x10, gUnknown_03002F90.unk40);
}
else
{
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x8, (u16 *)(gUnknown_03002F90 + 0x20));
- DecompressGlyphTile(glyphs + 0x10, (u16 *)(gUnknown_03002F90 + 0x40));
- DecompressGlyphTile(glyphs + 0x18, (u16 *)(gUnknown_03002F90 + 0x60));
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x8, gUnknown_03002F90.unk20);
+ DecompressGlyphTile(glyphs + 0x10, gUnknown_03002F90.unk40);
+ DecompressGlyphTile(glyphs + 0x18, gUnknown_03002F90.unk60);
}
- gUnknown_03002F90[0x81] = 12;
+ gUnknown_03002F90.unk81 = 12;
}
}
@@ -3664,32 +2348,32 @@ void DecompressGlyphFont2(u16 glyphId, bool32 isJapanese)
if (isJapanese == TRUE)
{
glyphs = gFont2JapaneseGlyphs + (0x100 * (glyphId >> 0x3)) + (0x10 * (glyphId & 0x7));
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x8, (u16 *)(gUnknown_03002F90 + 0x20)); // gUnknown_03002FD0
- DecompressGlyphTile(glyphs + 0x80, (u16 *)(gUnknown_03002F90 + 0x40)); // gUnknown_03002FB0
- DecompressGlyphTile(glyphs + 0x88, (u16 *)(gUnknown_03002F90 + 0x60)); // gUnknown_03002FF0
- gUnknown_03002F90[0x80] = gFont2JapaneseGlyphWidths[glyphId]; // gGlyphWidth
- gUnknown_03002F90[0x81] = 14; // gGlyphHeight
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x8, gUnknown_03002F90.unk20); // gUnknown_03002F90 + 0x40
+ DecompressGlyphTile(glyphs + 0x80, gUnknown_03002F90.unk40); // gUnknown_03002F90 + 0x20
+ DecompressGlyphTile(glyphs + 0x88, gUnknown_03002F90.unk60); // gUnknown_03002F90 + 0x60
+ gUnknown_03002F90.unk80 = gFont2JapaneseGlyphWidths[glyphId]; // gGlyphWidth
+ gUnknown_03002F90.unk81 = 14; // gGlyphHeight
}
else
{
glyphs = gFont2LatinGlyphs + (0x20 * glyphId);
- gUnknown_03002F90[0x80] = gFont2LatinGlyphWidths[glyphId];
+ gUnknown_03002F90.unk80 = gFont2LatinGlyphWidths[glyphId];
- if (gUnknown_03002F90[0x80] <= 8)
+ if (gUnknown_03002F90.unk80 <= 8)
{
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x10, (u16 *)(gUnknown_03002F90 + 0x40));
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x10, gUnknown_03002F90.unk40);
}
else
{
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x8, (u16 *)(gUnknown_03002F90 + 0x20));
- DecompressGlyphTile(glyphs + 0x10, (u16 *)(gUnknown_03002F90 + 0x40));
- DecompressGlyphTile(glyphs + 0x18, (u16 *)(gUnknown_03002F90 + 0x60));
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x8, gUnknown_03002F90.unk20);
+ DecompressGlyphTile(glyphs + 0x10, gUnknown_03002F90.unk40);
+ DecompressGlyphTile(glyphs + 0x18, gUnknown_03002F90.unk60);
}
- gUnknown_03002F90[0x81] = 14;
+ gUnknown_03002F90.unk81 = 14;
}
}
@@ -3709,30 +2393,30 @@ void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese)
{
int eff;
glyphs = gFont1JapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId & (eff = 0xF))); // shh, no questions, only matching now
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x80, (u16 *)(gUnknown_03002F90 + 0x40)); // gUnknown_03002FD0
- gUnknown_03002F90[0x80] = 8; // gGlyphWidth
- gUnknown_03002F90[0x81] = 15; // gGlyphHeight
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x80, gUnknown_03002F90.unk40); // gUnknown_03002F90 + 0x40
+ gUnknown_03002F90.unk80 = 8; // gGlyphWidth
+ gUnknown_03002F90.unk81 = 15; // gGlyphHeight
}
else
{
glyphs = gFont1LatinGlyphs + (0x20 * glyphId);
- gUnknown_03002F90[0x80] = gFont1LatinGlyphWidths[glyphId];
+ gUnknown_03002F90.unk80 = gFont1LatinGlyphWidths[glyphId];
- if (gUnknown_03002F90[0x80] <= 8)
+ if (gUnknown_03002F90.unk80 <= 8)
{
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x10, (u16 *)(gUnknown_03002F90 + 0x40));
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x10, gUnknown_03002F90.unk40);
}
else
{
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x8, (u16 *)(gUnknown_03002F90 + 0x20));
- DecompressGlyphTile(glyphs + 0x10, (u16 *)(gUnknown_03002F90 + 0x40));
- DecompressGlyphTile(glyphs + 0x18, (u16 *)(gUnknown_03002F90 + 0x60));
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x8, gUnknown_03002F90.unk20);
+ DecompressGlyphTile(glyphs + 0x10, gUnknown_03002F90.unk40);
+ DecompressGlyphTile(glyphs + 0x18, gUnknown_03002F90.unk60);
}
- gUnknown_03002F90[0x81] = 15;
+ gUnknown_03002F90.unk81 = 15;
}
}
@@ -3749,8 +2433,8 @@ void DecompressGlyphFont9(u16 glyphId)
const u16* glyphs;
glyphs = gFont9JapaneseGlyphs + (0x100 * (glyphId >> 4)) + (0x8 * (glyphId & 0xF));
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x80, (u16 *)(gUnknown_03002F90 + 0x40));
- gUnknown_03002F90[0x80] = 8;
- gUnknown_03002F90[0x81] = 12;
+ DecompressGlyphTile(glyphs, gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x80, gUnknown_03002F90.unk40);
+ gUnknown_03002F90.unk80 = 8;
+ gUnknown_03002F90.unk81 = 12;
}
diff --git a/src/text_window.c b/src/text_window.c
index e7e8f0ca6..517f4bdb9 100644
--- a/src/text_window.c
+++ b/src/text_window.c
@@ -93,7 +93,7 @@ const struct TilesPal *GetWindowFrameTilesPal(u8 id)
void LoadMessageBoxGfx(u8 windowId, u16 destOffset, u8 palOffset)
{
- LoadBgTiles(GetWindowAttribute(windowId, WINDOW_PRIORITY), gMessageBox_Gfx, 0x1C0, destOffset);
+ LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), gMessageBox_Gfx, 0x1C0, destOffset);
LoadPalette(GetOverworldTextboxPalettePtr(), palOffset, 0x20);
}
@@ -104,7 +104,7 @@ void LoadUserWindowBorderGfx_(u8 windowId, u16 destOffset, u8 palOffset)
void LoadWindowGfx(u8 windowId, u8 frameId, u16 destOffset, u8 palOffset)
{
- LoadBgTiles(GetWindowAttribute(windowId, WINDOW_PRIORITY), sWindowFrames[frameId].tiles, 0x120, destOffset);
+ LoadBgTiles(GetWindowAttribute(windowId, WINDOW_BG), sWindowFrames[frameId].tiles, 0x120, destOffset);
LoadPalette(sWindowFrames[frameId].pal, palOffset, 0x20);
}
@@ -115,7 +115,7 @@ void LoadUserWindowBorderGfx(u8 windowId, u16 destOffset, u8 palOffset)
void sub_8098858(u8 windowId, u16 tileNum, u8 palNum)
{
- u8 bgLayer = GetWindowAttribute(windowId, WINDOW_PRIORITY);
+ u8 bgLayer = GetWindowAttribute(windowId, WINDOW_BG);
u16 tilemapLeft = GetWindowAttribute(windowId, WINDOW_TILEMAP_LEFT);
u16 tilemapTop = GetWindowAttribute(windowId, WINDOW_TILEMAP_TOP);
u16 width = GetWindowAttribute(windowId, WINDOW_WIDTH);
@@ -133,7 +133,7 @@ void sub_8098858(u8 windowId, u16 tileNum, u8 palNum)
void sub_80989E0(u8 windowId, u16 tileNum, u8 palNum)
{
- u8 bgLayer = GetWindowAttribute(windowId, WINDOW_PRIORITY);
+ u8 bgLayer = GetWindowAttribute(windowId, WINDOW_BG);
u16 tilemapLeft = GetWindowAttribute(windowId, WINDOW_TILEMAP_LEFT);
u16 tilemapTop = GetWindowAttribute(windowId, WINDOW_TILEMAP_TOP);
u16 width = GetWindowAttribute(windowId, WINDOW_WIDTH);
@@ -151,7 +151,7 @@ void sub_80989E0(u8 windowId, u16 tileNum, u8 palNum)
void rbox_fill_rectangle(u8 windowId)
{
- u8 bgLayer = GetWindowAttribute(windowId, WINDOW_PRIORITY);
+ u8 bgLayer = GetWindowAttribute(windowId, WINDOW_BG);
u16 tilemapLeft = GetWindowAttribute(windowId, WINDOW_TILEMAP_LEFT);
u16 tilemapTop = GetWindowAttribute(windowId, WINDOW_TILEMAP_TOP);
u16 width = GetWindowAttribute(windowId, WINDOW_WIDTH);
diff --git a/src/time_events.c b/src/time_events.c
index 1f46e7705..9702d321f 100644
--- a/src/time_events.c
+++ b/src/time_events.c
@@ -81,7 +81,7 @@ void UpdateShoalTideFlag(void)
1, // 23
};
- if (is_map_type_1_2_3_5_or_6(get_map_light_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 8a2c01192..70a1a3449 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "battle.h"
#include "title_screen.h"
#include "sprite.h"
#include "gba/m4a_internal.h"
@@ -18,6 +19,7 @@
#include "scanline_effect.h"
#include "gpu_regs.h"
#include "trig.h"
+#include "graphics.h"
#include "constants/rgb.h"
#include "constants/songs.h"
@@ -36,17 +38,6 @@
#define A_B_START_SELECT (A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON)
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern u16 gBattle_BG1_X;
-extern u16 gBattle_BG1_Y;
-
-extern const u8 gTitleScreenEmeraldVersionGfx[];
-extern const u8 gTitleScreenPressStartGfx[];
-extern const u8 gTitleScreenPokemonLogoGfx[];
-extern const u8 gUnknown_08DE0644[];
-extern const u8 gUnknown_08DDE458[];
-extern const u16 gTitleScreenBgPalettes[];
-extern const u16 gTitleScreenPressStartPal[];
-extern const u16 gTitleScreenEmeraldVersionPal[];
// this file's functions
static void MainCB2(void);
@@ -68,10 +59,10 @@ static void SpriteCB_PokemonLogoShine(struct Sprite *sprite);
// const rom data
static const u16 sUnusedUnknownPal[] = INCBIN_U16("graphics/title_screen/unk_853EF78.gbapal");
-static const u8 sTitleScreenRayquazaGfx[] = INCBIN_U8("graphics/title_screen/rayquaza.4bpp.lz");
-static const u8 sTitleScreenRayquazaTilemap[] = INCBIN_U8("graphics/title_screen/rayquaza.bin.lz");
-static const u8 sTitleScreenLogoShineGfx[] = INCBIN_U8("graphics/title_screen/logo_shine.4bpp.lz");
-static const u8 sTitleScreenCloudsGfx[] = INCBIN_U8("graphics/title_screen/clouds.4bpp.lz");
+static const u32 sTitleScreenRayquazaGfx[] = INCBIN_U32("graphics/title_screen/rayquaza.4bpp.lz");
+static const u32 sTitleScreenRayquazaTilemap[] = INCBIN_U32("graphics/title_screen/rayquaza.bin.lz");
+static const u32 sTitleScreenLogoShineGfx[] = INCBIN_U32("graphics/title_screen/logo_shine.4bpp.lz");
+static const u32 sTitleScreenCloudsGfx[] = INCBIN_U32("graphics/title_screen/clouds.4bpp.lz");
const u16 gUnknown_0853FF70[] =
{
diff --git a/src/trader.c b/src/trader.c
index f081d7e95..e23efb4ce 100644
--- a/src/trader.c
+++ b/src/trader.c
@@ -109,7 +109,7 @@ void sub_8133BE4(u8 taskId, u8 decorationId)
void Task_HandleGetDecorationMenuInput(u8 taskId)
{
struct MauvilleOldManTrader *trader = &gSaveBlock1Ptr->oldMan.trader;
- s8 input = ProcessMenuInput();
+ s8 input = Menu_ProcessInput();
switch (input)
{
diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c
index 18c02350f..040310901 100644
--- a/src/trainer_pokemon_sprites.c
+++ b/src/trainer_pokemon_sprites.c
@@ -404,9 +404,9 @@ u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass)
switch (gender)
{
default:
- return gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_MAY];
+ return gFacilityClassToPicIndex[FACILITY_CLASS_MAY];
case MALE:
- return gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_BRENDAN];
+ return gFacilityClassToPicIndex[FACILITY_CLASS_BRENDAN];
}
}
return gender;
diff --git a/src/trainer_see.c b/src/trainer_see.c
index f5e9c300e..d3d450de4 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -1,21 +1,22 @@
#include "global.h"
-#include "trainer_see.h"
+#include "constants/battle_setup.h"
#include "battle_setup.h"
-#include "pokemon.h"
-#include "sprite.h"
-#include "field_effect.h"
+#include "event_data.h"
#include "event_object_movement.h"
+#include "field_effect.h"
#include "field_player_avatar.h"
+#include "pokemon.h"
#include "pokenav.h"
-#include "task.h"
-#include "util.h"
#include "script.h"
-#include "event_data.h"
#include "script_movement.h"
+#include "sprite.h"
+#include "task.h"
+#include "trainer_see.h"
+#include "util.h"
+#include "battle_pyramid.h"
+#include "constants/field_effects.h"
-extern bool8 InBattlePyramid(void);
extern bool32 InTrainerHill(void);
-extern bool8 GetBattlePyramidTrainerFlag(u8 eventObjectId);
extern bool8 GetTrainerHillTrainerFlag(u8 eventObjectId);
extern void sub_809BE48(u16 npcId);
diff --git a/src/tv.c b/src/tv.c
index af1102c2d..d3d1e797b 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -1544,7 +1544,7 @@ static void InterviewAfter_BravoTrainerBattleTowerProfile(void)
StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2Ptr->frontier.field_BD8);
show->bravoTrainerTower.species = gSaveBlock2Ptr->frontier.field_BD4;
show->bravoTrainerTower.defeatedSpecies = gSaveBlock2Ptr->frontier.field_BD6;
- show->bravoTrainerTower.numFights = sub_8164FCC(gSaveBlock2Ptr->frontier.field_D07, 0);
+ show->bravoTrainerTower.numFights = GetCurrentBattleTowerWinStreak(gSaveBlock2Ptr->frontier.field_D07, 0);
show->bravoTrainerTower.wonTheChallenge = gSaveBlock2Ptr->frontier.field_D06;
if (gSaveBlock2Ptr->frontier.field_D07 == 0)
{
@@ -1580,7 +1580,7 @@ void SaveRecordedItemPurchasesForTVShow(void)
if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SMART_SHOPPER, FALSE) != TRUE)
{
TV_SortPurchasesByQuantity();
- if (gUnknown_02039F80[0].quantity >= 20)
+ if (gMartPurchaseHistory[0].quantity >= 20)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->smartshopperShow.kind = TVSHOW_SMART_SHOPPER;
@@ -1588,8 +1588,8 @@ void SaveRecordedItemPurchasesForTVShow(void)
show->smartshopperShow.shopLocation = gMapHeader.regionMapSectionId;
for (i = 0; i < 3; i ++)
{
- show->smartshopperShow.itemIds[i] = gUnknown_02039F80[i].itemId;
- show->smartshopperShow.itemAmounts[i] = gUnknown_02039F80[i].quantity;
+ show->smartshopperShow.itemIds[i] = gMartPurchaseHistory[i].itemId;
+ show->smartshopperShow.itemAmounts[i] = gMartPurchaseHistory[i].quantity;
}
show->smartshopperShow.priceReduced = GetPriceReduction(1);
StringCopy(show->smartshopperShow.playerName, gSaveBlock2Ptr->playerName);
@@ -1972,7 +1972,7 @@ void sub_80EDB44(void)
show->rivalTrainer.nGoldSymbols ++;
}
}
- show->rivalTrainer.battlePoints = gSaveBlock2Ptr->frontier.frontierBattlePoints;
+ show->rivalTrainer.battlePoints = gSaveBlock2Ptr->frontier.battlePoints;
StringCopy(show->rivalTrainer.playerName, gSaveBlock2Ptr->playerName);
tv_store_id_3x(show);
show->rivalTrainer.language = gGameLanguage;
@@ -2500,7 +2500,7 @@ bool8 sub_80EE818(void)
return TRUE;
}
-void sub_80EE8C8(u16 winStreak, u8 facility)
+void sub_80EE8C8(u16 winStreak, u8 facilityAndMode)
{
TVShow *show;
@@ -2512,8 +2512,8 @@ void sub_80EE8C8(u16 winStreak, u8 facility)
show->frontier.active = FALSE;
StringCopy(show->frontier.playerName, gSaveBlock2Ptr->playerName);
show->frontier.winStreak = winStreak;
- show->frontier.facility = facility;
- switch (facility)
+ show->frontier.facility = facilityAndMode;
+ switch (facilityAndMode)
{
case 1:
case 5:
@@ -2540,8 +2540,8 @@ void sub_80EE8C8(u16 winStreak, u8 facility)
show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
break;
case 4:
- show->frontier.species1 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.field_CAA[0] - 1], MON_DATA_SPECIES, NULL);
- show->frontier.species2 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.field_CAA[1] - 1], MON_DATA_SPECIES, NULL);
+ show->frontier.species1 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[0] - 1], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[1] - 1], MON_DATA_SPECIES, NULL);
break;
}
tv_store_id_3x(show);
@@ -2992,14 +2992,14 @@ void TV_SortPurchasesByQuantity(void)
{
for (j = i + 1; j < 3; j ++)
{
- if (gUnknown_02039F80[i].quantity < gUnknown_02039F80[j].quantity)
- {
- tmpId = gUnknown_02039F80[i].itemId;
- tmpQn = gUnknown_02039F80[i].quantity;
- gUnknown_02039F80[i].itemId = gUnknown_02039F80[j].itemId;
- gUnknown_02039F80[i].quantity = gUnknown_02039F80[j].quantity;
- gUnknown_02039F80[j].itemId = tmpId;
- gUnknown_02039F80[j].quantity = tmpQn;
+ if (gMartPurchaseHistory[i].quantity < gMartPurchaseHistory[j].quantity)
+ {
+ tmpId = gMartPurchaseHistory[i].itemId;
+ tmpQn = gMartPurchaseHistory[i].quantity;
+ gMartPurchaseHistory[i].itemId = gMartPurchaseHistory[j].itemId;
+ gMartPurchaseHistory[i].quantity = gMartPurchaseHistory[j].quantity;
+ gMartPurchaseHistory[j].itemId = tmpId;
+ gMartPurchaseHistory[j].quantity = tmpQn;
}
}
}
diff --git a/src/unk_81BAD84.c b/src/unk_81BAD84.c
index c0d891c12..adf43bb90 100644
--- a/src/unk_81BAD84.c
+++ b/src/unk_81BAD84.c
@@ -2,8 +2,8 @@
#include "graphics.h"
const struct {
- const u8 *gfx;
- const u8 *tileMap;
+ const u32 *gfx;
+ const u32 *tileMap;
const u16 *pltt;
} gUnknown_08617128[] = {
{
diff --git a/src/unk_pokedex_area_screen_helper.c b/src/unk_pokedex_area_screen_helper.c
index 521af6dd9..6b88069bb 100644
--- a/src/unk_pokedex_area_screen_helper.c
+++ b/src/unk_pokedex_area_screen_helper.c
@@ -4,24 +4,17 @@
#include "bg.h"
#include "malloc.h"
#include "palette.h"
+#include "unk_pokedex_area_screen_helper.h"
EWRAM_DATA u8 *gUnknown_0203CF28 = NULL;
static const u16 gUnknown_0861D140[] = INCBIN_U16("graphics/interface/region_map.gbapal");
-static const u8 gUnknown_0861D1A0[] = INCBIN_U8("graphics/interface/region_map.8bpp.lz");
-static const u8 gUnknown_0861DEF4[] = INCBIN_U8("graphics/interface/region_map.bin.lz");
-static const u8 gUnknown_0861E208[] = INCBIN_U8("graphics/interface/region_map_affine.8bpp.lz");
-static const u8 gUnknown_0861EF64[] = INCBIN_U8("graphics/interface/region_map_affine.bin.lz");
+static const u32 gUnknown_0861D1A0[] = INCBIN_U32("graphics/interface/region_map.8bpp.lz");
+static const u32 gUnknown_0861DEF4[] = INCBIN_U32("graphics/interface/region_map.bin.lz");
+static const u32 gUnknown_0861E208[] = INCBIN_U32("graphics/interface/region_map_affine.8bpp.lz");
+static const u32 gUnknown_0861EF64[] = INCBIN_U32("graphics/interface/region_map_affine.bin.lz");
-struct UnkStruct_1C4D70
-{
- u32 bg:2;
- u32 unk2:8;
- u32 unk10:2;
- u32 unk12:20;
-};
-
-void sub_81C4D70(struct UnkStruct_1C4D70 *template)
+void sub_81C4D70(const struct UnkStruct_1C4D70 *template)
{
u8 unk;
gUnknown_0203CF28 = Alloc(4);
diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c
index 4821ed776..bbc256915 100644
--- a/src/unk_text_util_2.c
+++ b/src/unk_text_util_2.c
@@ -15,86 +15,86 @@ u16 Font6Func(struct TextPrinter *textPrinter)
u16 char_;
struct TextPrinterSubStruct *sub;
- sub = &textPrinter->sub_union.sub;
+ sub = &textPrinter->subUnion.sub;
switch (textPrinter->state)
{
case 0:
- if (gMain.heldKeys & (A_BUTTON | B_BUTTON) && sub->font_type_upper)
+ if (gMain.heldKeys & (A_BUTTON | B_BUTTON) && sub->hasPrintBeenSpedUp)
{
textPrinter->delayCounter = 0;
}
- if (textPrinter->delayCounter && textPrinter->text_speed)
+ if (textPrinter->delayCounter && textPrinter->textSpeed)
{
textPrinter->delayCounter --;
- if (gTextFlags.flag_0 && gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (gTextFlags.canABSpeedUpPrint && gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- sub->font_type_upper = TRUE;
+ sub->hasPrintBeenSpedUp = TRUE;
textPrinter->delayCounter = 0;
}
return 3;
}
- if (gTextFlags.flag_2)
+ if (gTextFlags.autoScroll)
{
textPrinter->delayCounter = 3;
}
else
{
- textPrinter->delayCounter = textPrinter->text_speed;
+ textPrinter->delayCounter = textPrinter->textSpeed;
}
- char_ = *textPrinter->subPrinter.current_text_offset ++;
+ char_ = *textPrinter->printerTemplate.currentChar++;
switch (char_)
{
case EOS:
return 1;
case CHAR_NEWLINE:
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
- textPrinter->subPrinter.currentY += gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing;
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentY += gFonts[textPrinter->printerTemplate.fontId].maxLetterHeight + textPrinter->printerTemplate.lineSpacing;
return 2;
case PLACEHOLDER_BEGIN:
- textPrinter->subPrinter.current_text_offset ++;
+ textPrinter->printerTemplate.currentChar++;
return 2;
case EXT_CTRL_CODE_BEGIN:
- char_ = *textPrinter->subPrinter.current_text_offset ++;
+ char_ = *textPrinter->printerTemplate.currentChar++;
switch (char_)
{
case 1:
- textPrinter->subPrinter.fgColor = *textPrinter->subPrinter.current_text_offset ++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
case 2:
- textPrinter->subPrinter.bgColor = *textPrinter->subPrinter.current_text_offset ++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ textPrinter->printerTemplate.bgColor = *textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
case 3:
- textPrinter->subPrinter.shadowColor = *textPrinter->subPrinter.current_text_offset ++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ textPrinter->printerTemplate.shadowColor = *textPrinter->printerTemplate.currentChar++;
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
case 4:
- textPrinter->subPrinter.fgColor = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.bgColor = *++ textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.shadowColor = *++ textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset ++;
+ textPrinter->printerTemplate.fgColor = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.bgColor = *++textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.shadowColor = *++textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ GenerateFontHalfRowLookupTable(textPrinter->printerTemplate.fgColor, textPrinter->printerTemplate.bgColor, textPrinter->printerTemplate.shadowColor);
return 2;
case 5:
- textPrinter->subPrinter.current_text_offset ++;
+ textPrinter->printerTemplate.currentChar++;
return 2;
case 6:
- sub->font_type = *textPrinter->subPrinter.current_text_offset;
- textPrinter->subPrinter.current_text_offset ++;
+ sub->glyphId = *textPrinter->printerTemplate.currentChar;
+ textPrinter->printerTemplate.currentChar++;
return 2;
case 7:
return 2;
case 8:
- textPrinter->delayCounter = *textPrinter->subPrinter.current_text_offset ++;
+ textPrinter->delayCounter = *textPrinter->printerTemplate.currentChar++;
textPrinter->state = 6;
return 2;
case 9:
textPrinter->state = 1;
- if (gTextFlags.flag_2)
+ if (gTextFlags.autoScroll)
{
- sub->frames_visible_counter = 0;
+ sub->autoScrollDelay = 0;
}
return 3;
case 10:
@@ -102,19 +102,19 @@ u16 Font6Func(struct TextPrinter *textPrinter)
return 3;
case 11:
case 16:
- textPrinter->subPrinter.current_text_offset += 2;
+ textPrinter->printerTemplate.currentChar += 2;
return 2;
case 12:
- char_ = *++textPrinter->subPrinter.current_text_offset;
+ char_ = *++textPrinter->printerTemplate.currentChar;
break;
case 13:
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x + *textPrinter->subPrinter.current_text_offset ++;
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x + *textPrinter->printerTemplate.currentChar++;
return 2;
case 14:
- textPrinter->subPrinter.currentY = textPrinter->subPrinter.y + *textPrinter->subPrinter.current_text_offset ++;
+ textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y + *textPrinter->printerTemplate.currentChar++;
return 2;
case 15:
- FillWindowPixelBuffer(textPrinter->subPrinter.windowId, textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4));
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4));
return 2;
}
break;
@@ -127,15 +127,15 @@ u16 Font6Func(struct TextPrinter *textPrinter)
TextPrinterInitDownArrowCounters(textPrinter);
return 3;
case 0xF9:
- char_ = *textPrinter->subPrinter.current_text_offset ++ | 0x100;
+ char_ = *textPrinter->printerTemplate.currentChar++| 0x100;
break;
case 0xF8:
- textPrinter->subPrinter.current_text_offset ++;
+ textPrinter->printerTemplate.currentChar++;
return 0;
}
DecompressGlyphFont6(char_);
CopyGlyphToWindow(textPrinter);
- textPrinter->subPrinter.currentX += gUnknown_03002F90[0x80] + textPrinter->subPrinter.letterSpacing;
+ textPrinter->printerTemplate.currentX += gUnknown_03002F90.unk80 + textPrinter->printerTemplate.letterSpacing;
return 0;
case 1:
if (TextPrinterWait(textPrinter))
@@ -146,9 +146,9 @@ u16 Font6Func(struct TextPrinter *textPrinter)
case 2:
if (TextPrinterWaitWithDownArrow(textPrinter))
{
- FillWindowPixelBuffer(textPrinter->subPrinter.windowId, textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4));
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
- textPrinter->subPrinter.currentY = textPrinter->subPrinter.y;
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4));
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
+ textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y;
textPrinter->state = 0;
}
return 3;
@@ -156,8 +156,8 @@ u16 Font6Func(struct TextPrinter *textPrinter)
if (TextPrinterWaitWithDownArrow(textPrinter))
{
TextPrinterClearDownArrow(textPrinter);
- textPrinter->scrollDistance = gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing;
- textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
+ textPrinter->scrollDistance = gFonts[textPrinter->printerTemplate.fontId].maxLetterHeight + textPrinter->printerTemplate.lineSpacing;
+ textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
textPrinter->state = 4;
}
return 3;
@@ -166,15 +166,15 @@ u16 Font6Func(struct TextPrinter *textPrinter)
{
if (textPrinter->scrollDistance < sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed])
{
- ScrollWindow(textPrinter->subPrinter.windowId, 0, textPrinter->scrollDistance, textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4));
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4));
textPrinter->scrollDistance = 0;
}
else
{
- ScrollWindow(textPrinter->subPrinter.windowId, 0, sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed], textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4));
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed], textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4));
textPrinter->scrollDistance -= sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed];
}
- CopyWindowToVram(textPrinter->subPrinter.windowId, 2);
+ CopyWindowToVram(textPrinter->printerTemplate.windowId, 2);
}
else
{
@@ -206,12 +206,12 @@ static void DecompressGlyphFont6(u16 glyph)
const u16 *glyphs;
glyphs = sFont6BrailleGlyphs + 0x100 * (glyph / 8) + 0x10 * (glyph % 8);
- DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
- DecompressGlyphTile(glyphs + 0x8, (u16 *)(gUnknown_03002F90 + 0x20));
- DecompressGlyphTile(glyphs + 0x80, (u16 *)(gUnknown_03002F90 + 0x40));
- DecompressGlyphTile(glyphs + 0x88, (u16 *)(gUnknown_03002F90 + 0x60));
- gUnknown_03002F90[0x80] = 0x10;
- gUnknown_03002F90[0x81] = 0x10;
+ DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90.unk0);
+ DecompressGlyphTile(glyphs + 0x8, (u16 *)(gUnknown_03002F90.unk20));
+ DecompressGlyphTile(glyphs + 0x80, (u16 *)(gUnknown_03002F90.unk40));
+ DecompressGlyphTile(glyphs + 0x88, (u16 *)(gUnknown_03002F90.unk60));
+ gUnknown_03002F90.unk80 = 0x10;
+ gUnknown_03002F90.unk81 = 0x10;
}
u8 GetGlyphWidthFont6(void)
diff --git a/src/unk_transition.c b/src/unk_transition.c
index 20692bb7c..18cee2544 100644
--- a/src/unk_transition.c
+++ b/src/unk_transition.c
@@ -36,9 +36,9 @@ static bool8 sub_81DB328(struct Task *task);
// const rom data
// TODO: move those from .s file to .c
-extern const u8 gUnknown_0862AD54[];
-extern const u8 gUnknown_0862AF30[];
-extern const u8 gUnknown_0862B0DC[];
+extern const u32 gUnknown_0862AD54[];
+extern const u32 gUnknown_0862AF30[];
+extern const u32 gUnknown_0862B0DC[];
extern const u16 gUnknown_0862B53C[];
static const struct OamData sOamData_862B71C =
diff --git a/src/walda_phrase.c b/src/walda_phrase.c
index 4a82be14f..ff2ee7399 100644
--- a/src/walda_phrase.c
+++ b/src/walda_phrase.c
@@ -95,7 +95,7 @@ u16 TryGetWallpaperWithWaldaPhrase(void)
{
u16 backgroundClr, foregroundClr;
u8 patternId, iconId;
- u16 trainerId = ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId);
+ u16 trainerId = GetTrainerId(gSaveBlock2Ptr->playerTrainerId);
gSpecialVar_Result = TryCalculateWallpaper(&backgroundClr, &foregroundClr, &iconId, &patternId, trainerId, GetWaldaPhrasePtr());
if (gSpecialVar_Result)
diff --git a/src/wallclock.c b/src/wallclock.c
index 6bcfa1717..e2e03ecba 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -1,37 +1,24 @@
#include "global.h"
-#include "main.h"
-#include "palette.h"
-#include "gpu_regs.h"
#include "bg.h"
-#include "rtc.h"
#include "clock.h"
-#include "wallclock.h"
+#include "decompress.h"
#include "event_data.h"
+#include "gpu_regs.h"
#include "graphics.h"
-#include "text.h"
-#include "window.h"
-#include "text_window.h"
+#include "main.h"
#include "menu.h"
+#include "palette.h"
+#include "rtc.h"
#include "scanline_effect.h"
-#include "task.h"
-#include "strings.h"
#include "sound.h"
-#include "constants/songs.h"
+#include "strings.h"
+#include "task.h"
+#include "text.h"
+#include "text_window.h"
#include "trig.h"
-#include "decompress.h"
-
-// static types
-
-#define tMinuteHandAngle data[0]
-#define tHourHandAngle data[1]
-#define tHours data[2]
-#define tMinutes data[3]
-#define tMvmtDir data[4]
-#define tPeriod data[5]
-#define tMvmtSpeed data[6]
-
-#define TAG_GFX_WALL_CLOCK_HAND 0x1000
-#define TAG_PAL_WALL_CLOCK_HAND 0x1000
+#include "wallclock.h"
+#include "window.h"
+#include "constants/songs.h"
// static declarations
@@ -46,24 +33,48 @@ static void Task_ViewClock1(u8 taskId);
static void Task_ViewClock2(u8 taskId);
static void Task_ViewClock3(u8 taskId);
static void Task_ViewClock4(u8 taskId);
-static u16 CalcNewMinHandAngle(u16 a0, u8 command, u8 a2);
-static bool32 AdvanceClock(u8 taskId, u8 command);
-static void UpdateClockPeriod(u8 taskId, u8 command);
+static u16 CalcNewMinHandAngle(u16 angle, u8 direction, u8 speed);
+static bool32 AdvanceClock(u8 taskId, u8 direction);
+static void UpdateClockPeriod(u8 taskId, u8 direction);
static void InitClockWithRtc(u8 taskId);
static void SpriteCB_MinuteHand(struct Sprite *sprite);
static void SpriteCB_HourHand(struct Sprite *sprite);
static void SpriteCB_AMIndicator(struct Sprite *sprite);
static void SpriteCB_PMIndicator(struct Sprite *sprite);
+#define tMinuteHandAngle data[0]
+#define tHourHandAngle data[1]
+#define tHours data[2]
+#define tMinutes data[3]
+#define tMvmtDir data[4]
+#define tPeriod data[5]
+#define tMvmtSpeed data[6]
+
+#define TAG_GFX_WALL_CLOCK_HAND 0x1000
+#define TAG_PAL_WALL_CLOCK_HAND 0x1000
+
+enum
+{
+ PERIOD_AM,
+ PERIOD_PM,
+};
+
+enum
+{
+ MVMT_NONE,
+ MVMT_BACKWARD,
+ MVMT_FORWARD,
+};
+
// rodata
-static const u8 sUnknown_085B1F58[] = INCBIN_U8("graphics/wallclock/graphics_85b1f58.4bpp.lz");
+static const u32 sUnknown_085B1F58[] = INCBIN_U32("graphics/wallclock/graphics_85b1f58.4bpp.lz");
static const u16 sUnknown_085B21D4[] = INCBIN_U16("graphics/wallclock/palette_85b21d4.gbapal");
-static const struct WindowTemplate gUnknown_085B21DC[] =
+static const struct WindowTemplate gUnknown_085B21DC[] =
{
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 3,
.tilemapTop = 17,
.width = 24,
@@ -72,7 +83,7 @@ static const struct WindowTemplate gUnknown_085B21DC[] =
.baseBlock = 512
},
{
- .priority = 2,
+ .bg = 2,
.tilemapLeft = 24,
.tilemapTop = 16,
.width = 6,
@@ -84,7 +95,7 @@ static const struct WindowTemplate gUnknown_085B21DC[] =
};
static const struct WindowTemplate gUnknown_085B21F4 =
{
- .priority = 0,
+ .bg = 0,
.tilemapLeft = 24,
.tilemapTop = 9,
.width = 5,
@@ -122,17 +133,17 @@ static const struct SpritePalette gUnknown_085B2218[] = {
{}
};
static const struct OamData Unknown_085B2230 = {
- .y = 0xa0,
+ .y = 160,
.size = 3,
- .priority = 1
+ .priority = 1,
};
static const union AnimCmd Unknown_085B2238[] = {
ANIMCMD_FRAME(0, 30),
- ANIMCMD_END
+ ANIMCMD_END,
};
static const union AnimCmd Unknown_085B2240[] = {
ANIMCMD_FRAME(64, 30),
- ANIMCMD_END
+ ANIMCMD_END,
};
static const union AnimCmd *const gUnknown_085B2248[] = {
Unknown_085B2238
@@ -148,7 +159,7 @@ static const struct SpriteTemplate gUnknown_085B2250 =
.anims = gUnknown_085B2248,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_MinuteHand
+ .callback = SpriteCB_MinuteHand,
};
static const struct SpriteTemplate gUnknown_085B2268 =
{
@@ -158,20 +169,20 @@ static const struct SpriteTemplate gUnknown_085B2268 =
.anims = gUnknown_085B224C,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_HourHand
+ .callback = SpriteCB_HourHand,
};
static const struct OamData Unknown_085B2280 = {
- .y = 0xa0,
+ .y = 160,
.size = 1,
- .priority = 3
+ .priority = 3,
};
static const union AnimCmd Unknown_085B2288[] = {
- ANIMCMD_FRAME(0x84, 30),
- ANIMCMD_END
+ ANIMCMD_FRAME(132, 30),
+ ANIMCMD_END,
};
static const union AnimCmd Unknown_085B2290[] = {
- ANIMCMD_FRAME(0x80, 30),
- ANIMCMD_END
+ ANIMCMD_FRAME(128, 30),
+ ANIMCMD_END,
};
static const union AnimCmd *const gUnknown_085B2298[] = {
Unknown_085B2288
@@ -648,21 +659,21 @@ void CB2_StartWallClock(void)
gTasks[taskId].tMinuteHandAngle = 0;
gTasks[taskId].tHourHandAngle = 300;
- spriteId = CreateSprite(&gUnknown_085B2250, 0x78, 0x50, 1);
+ spriteId = CreateSprite(&gUnknown_085B2250, 120, 80, 1);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 0;
- spriteId = CreateSprite(&gUnknown_085B2268, 0x78, 0x50, 0);
+ spriteId = CreateSprite(&gUnknown_085B2268, 120, 80, 0);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 1;
- spriteId = CreateSprite(&gUnknown_085B22A0, 0x78, 0x50, 2);
+ spriteId = CreateSprite(&gUnknown_085B22A0, 120, 80, 2);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = 45;
- spriteId = CreateSprite(&gUnknown_085B22B8, 0x78, 0x50, 2);
+ spriteId = CreateSprite(&gUnknown_085B22B8, 120, 80, 2);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = 90;
@@ -696,21 +707,21 @@ void CB2_ViewWallClock(void)
angle2 = 135;
}
- spriteId = CreateSprite(&gUnknown_085B2250, 0x78, 0x50, 1);
+ spriteId = CreateSprite(&gUnknown_085B2250, 120, 80, 1);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 0;
- spriteId = CreateSprite(&gUnknown_085B2268, 0x78, 0x50, 0);
+ spriteId = CreateSprite(&gUnknown_085B2268, 120, 80, 0);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 1;
- spriteId = CreateSprite(&gUnknown_085B22A0, 0x78, 0x50, 2);
+ spriteId = CreateSprite(&gUnknown_085B22A0, 120, 80, 2);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = angle1;
- spriteId = CreateSprite(&gUnknown_085B22B8, 0x78, 0x50, 2);
+ spriteId = CreateSprite(&gUnknown_085B22B8, 120, 80, 2);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = angle2;
@@ -757,11 +768,11 @@ static void Task_SetClock2(u8 taskId)
gTasks[taskId].tMvmtDir = 0;
if (gMain.heldKeys & DPAD_LEFT)
{
- gTasks[taskId].tMvmtDir = 1;
+ gTasks[taskId].tMvmtDir = MVMT_BACKWARD;
}
if (gMain.heldKeys & DPAD_RIGHT)
{
- gTasks[taskId].tMvmtDir = 2;
+ gTasks[taskId].tMvmtDir = MVMT_FORWARD;
}
if (gTasks[taskId].tMvmtDir != 0)
{
@@ -792,14 +803,14 @@ static void Task_SetClock3(u8 taskId)
static void Task_SetClock4(u8 taskId)
{
- switch (Menu_ProcessInputNoWrap_())
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
+ case 0: //YES
PlaySE(SE_SELECT);
gTasks[taskId].func = Task_SetClock5;
break;
- case 1:
- case -1:
+ case 1: //B button
+ case -1: //NO
PlaySE(SE_SELECT);
sub_8198070(0, FALSE);
ClearWindowTilemap(0);
@@ -855,45 +866,49 @@ static void Task_ViewClock4(u8 taskId)
}
}
-static u8 CalcMinHandDelta(u16 a0)
+static u8 CalcMinHandDelta(u16 speed)
{
- if (a0 > 60)
+ if (speed > 60)
{
return 6;
}
- if (a0 > 30)
+ if (speed > 30)
{
return 3;
}
- if (a0 > 10)
+ if (speed > 10)
{
return 2;
}
return 1;
}
-static u16 CalcNewMinHandAngle(u16 a0, u8 command, u8 a2)
+static u16 CalcNewMinHandAngle(u16 angle, u8 direction, u8 speed)
{
- u8 r1 = CalcMinHandDelta(a2);
- switch (command)
+ u8 delta = CalcMinHandDelta(speed);
+ switch (direction)
{
- case 1:
- if (a0) a0 -= r1;
- else a0 = 360 - r1;
+ case MVMT_BACKWARD:
+ if (angle)
+ angle -= delta ;
+ else
+ angle = 360 - delta ;
break;
- case 2:
- if (a0 < 360 - r1) a0 += r1;
- else a0 = 0;
+ case MVMT_FORWARD:
+ if (angle < 360 - delta )
+ angle += delta ;
+ else
+ angle = 0;
break;
}
- return a0;
+ return angle;
}
-static bool32 AdvanceClock(u8 taskId, u8 command)
+static bool32 AdvanceClock(u8 taskId, u8 direction)
{
- switch (command)
+ switch (direction)
{
- case 1:
+ case MVMT_BACKWARD:
if (gTasks[taskId].tMinutes > 0)
{
gTasks[taskId].tMinutes--;
@@ -909,10 +924,10 @@ static bool32 AdvanceClock(u8 taskId, u8 command)
{
gTasks[taskId].tHours = 23;
}
- UpdateClockPeriod(taskId, command);
+ UpdateClockPeriod(taskId, direction);
}
break;
- case 2:
+ case MVMT_FORWARD:
if (gTasks[taskId].tMinutes < 59)
{
gTasks[taskId].tMinutes++;
@@ -928,37 +943,37 @@ static bool32 AdvanceClock(u8 taskId, u8 command)
{
gTasks[taskId].tHours = 0;
}
- UpdateClockPeriod(taskId, command);
+ UpdateClockPeriod(taskId, direction);
}
break;
}
return FALSE;
}
-static void UpdateClockPeriod(u8 taskId, u8 command)
+static void UpdateClockPeriod(u8 taskId, u8 direction)
{
u8 hours = gTasks[taskId].tHours;
- switch (command)
+ switch (direction)
{
- case 1:
+ case MVMT_BACKWARD:
switch (hours)
{
case 11:
- gTasks[taskId].tPeriod = FALSE;
+ gTasks[taskId].tPeriod = PERIOD_AM;
break;
case 23:
- gTasks[taskId].tPeriod = TRUE;
+ gTasks[taskId].tPeriod = PERIOD_PM;
break;
}
break;
- case 2:
+ case MVMT_FORWARD:
switch (hours)
{
case 0:
- gTasks[taskId].tPeriod = FALSE;
+ gTasks[taskId].tPeriod = PERIOD_AM;
break;
case 12:
- gTasks[taskId].tPeriod = TRUE;
+ gTasks[taskId].tPeriod = PERIOD_PM;
break;
}
break;
@@ -974,11 +989,11 @@ static void InitClockWithRtc(u8 taskId)
gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
if (gLocalTime.hours < 12)
{
- gTasks[taskId].tPeriod = FALSE;
+ gTasks[taskId].tPeriod = PERIOD_AM;
}
else
{
- gTasks[taskId].tPeriod = TRUE;
+ gTasks[taskId].tPeriod = PERIOD_PM;
}
}
@@ -987,8 +1002,7 @@ static void SpriteCB_MinuteHand(struct Sprite *sprite)
u16 angle = gTasks[sprite->data[0]].tMinuteHandAngle;
s16 sin = Sin2(angle) / 16;
s16 cos = Cos2(angle) / 16;
- u16 xhat;
- u16 yhat;
+ u16 xhat, yhat;
SetOamMatrix(0, cos, sin, -sin, cos);
xhat = sClockHandCoords[angle][0];
@@ -1011,8 +1025,7 @@ static void SpriteCB_HourHand(struct Sprite *sprite)
u16 angle = gTasks[sprite->data[0]].tHourHandAngle;
s16 sin = Sin2(angle) / 16;
s16 cos = Cos2(angle) / 16;
- u16 xhat;
- u16 yhat;
+ u16 xhat, yhat;
SetOamMatrix(1, cos, sin, -sin, cos);
xhat = sClockHandCoords[angle][0];
diff --git a/src/water.c b/src/water.c
new file mode 100644
index 000000000..955526ccd
--- /dev/null
+++ b/src/water.c
@@ -0,0 +1,442 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_810721C(struct Sprite *);
+extern void sub_8107260(struct Sprite *);
+extern void sub_810744C(struct Sprite *);
+extern void sub_81075EC(struct Sprite *);
+extern void sub_8107730(struct Sprite *);
+extern void sub_81077C0(struct Sprite *);
+extern void sub_80A78AC(struct Sprite *);
+extern void sub_8107894(struct Sprite *);
+extern void sub_81078D0(struct Sprite *);
+extern void sub_8108034(struct Sprite *);
+extern void sub_810851C(struct Sprite *);
+extern void sub_8108BE0(struct Sprite *);
+extern void sub_8108C54(struct Sprite *);
+extern void sub_80A8EE4(struct Sprite *);
+
+extern const union AffineAnimCmd *const gUnknown_08593420[];
+extern const union AffineAnimCmd *const gUnknown_08596208[];
+extern const union AnimCmd *const gUnknown_08595AB8[];
+
+// what is this?
+const u8 gUnknown_8593C80[] = INCBIN_U8("graphics/unknown/unknown_593C80.4bpp");
+const u8 gUnknown_8593FFC[] = INCBIN_U8("graphics/unknown/unknown_593FFC.bin");
+
+const union AnimCmd gUnknown_08594FFC[] =
+{
+ 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 gUnknown_0859501C[] =
+{
+ gUnknown_08594FFC,
+};
+
+const struct SpriteTemplate gUnknown_08595020 =
+{
+ .tileTag = ANIM_TAG_RAIN_DROPS,
+ .paletteTag = ANIM_TAG_RAIN_DROPS,
+ .oam = &gUnknown_08524954,
+ .anims = gUnknown_0859501C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810721C,
+};
+
+const union AffineAnimCmd gUnknown_08595038[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFFB, 0xFFFB, 0, 10),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08595050[] =
+{
+ gUnknown_08595038,
+};
+
+const union AnimCmd gUnknown_08595054[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08595064[] =
+{
+ gUnknown_08595054,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8595068 =
+{
+ .tileTag = ANIM_TAG_BUBBLE,
+ .paletteTag = ANIM_TAG_BUBBLE,
+ .oam = &gUnknown_08524A8C,
+ .anims = gUnknown_08595064,
+ .images = NULL,
+ .affineAnims = gUnknown_08595050,
+ .callback = sub_8107260,
+};
+
+const union AnimCmd gUnknown_08595080[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595088[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08595090[] =
+{
+ gUnknown_08595080,
+ gUnknown_08595088,
+};
+
+const union AffineAnimCmd gUnknown_08595098[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_FRAME(0x60, 0x60, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085950B0[] =
+{
+ gUnknown_08595098,
+};
+
+// Multi-colored rings used in Aurora Beam.
+const struct SpriteTemplate gUnknown_085950B4 =
+{
+ .tileTag = ANIM_TAG_RAINBOW_RINGS,
+ .paletteTag = ANIM_TAG_RAINBOW_RINGS,
+ .oam = &gUnknown_08524A04,
+ .anims = gUnknown_08595090,
+ .images = NULL,
+ .affineAnims = gUnknown_085950B0,
+ .callback = sub_810744C,
+};
+
+const union AnimCmd gUnknown_085950CC[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_FRAME(12, 1),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_085950E0[] =
+{
+ gUnknown_085950CC,
+};
+
+const struct SpriteTemplate gUnknown_085950E4 =
+{
+ .tileTag = ANIM_TAG_WATER_ORB,
+ .paletteTag = ANIM_TAG_WATER_ORB,
+ .oam = &gUnknown_08524A2C,
+ .anims = gUnknown_085950E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81075EC,
+};
+
+const struct SpriteTemplate gUnknown_085950FC =
+{
+ .tileTag = ANIM_TAG_BROWN_ORB,
+ .paletteTag = ANIM_TAG_BROWN_ORB,
+ .oam = &gUnknown_08524A2C,
+ .anims = gUnknown_085950E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81075EC,
+};
+
+const struct SpriteTemplate gUnknown_08595114 =
+{
+ .tileTag = ANIM_TAG_GLOWY_RED_ORB,
+ .paletteTag = ANIM_TAG_GLOWY_RED_ORB,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81075EC,
+};
+
+const struct SpriteTemplate gUnknown_0859512C =
+{
+ .tileTag = ANIM_TAG_GLOWY_GREEN_ORB,
+ .paletteTag = ANIM_TAG_GLOWY_GREEN_ORB,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81075EC,
+};
+
+const union AnimCmd gUnknown_08595144[] =
+{
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595154[] =
+{
+ gUnknown_08595144,
+};
+
+const struct SpriteTemplate gUnknown_08595158 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595154,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81075EC,
+};
+
+const struct SpriteTemplate gUnknown_08595170 =
+{
+ .tileTag = ANIM_TAG_BLUE_RING,
+ .paletteTag = ANIM_TAG_BLUE_RING,
+ .oam = &gUnknown_08524A14,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08593420,
+ .callback = sub_81075EC,
+};
+
+const union AffineAnimCmd gUnknown_08595188[] =
+{
+ AFFINEANIMCMD_FRAME(0x3, 0x3, 10, 50),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 10),
+ AFFINEANIMCMD_FRAME(0xFFEC, 0xFFEC, -10, 20),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085951A8[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085951B8[] =
+{
+ gUnknown_08595188,
+};
+
+const union AffineAnimCmd *const gUnknown_085951BC[] =
+{
+ gUnknown_085951A8,
+};
+
+const struct SpriteTemplate gUnknown_085951C0 =
+{
+ .tileTag = ANIM_TAG_WATER_ORB,
+ .paletteTag = ANIM_TAG_WATER_ORB,
+ .oam = &gUnknown_08524AEC,
+ .anims = gUnknown_085950E0,
+ .images = NULL,
+ .affineAnims = gUnknown_085951B8,
+ .callback = sub_8107730,
+};
+
+const struct SpriteTemplate gUnknown_085951D8 =
+{
+ .tileTag = ANIM_TAG_WATER_ORB,
+ .paletteTag = ANIM_TAG_WATER_ORB,
+ .oam = &gUnknown_08524AEC,
+ .anims = gUnknown_085950E0,
+ .images = NULL,
+ .affineAnims = gUnknown_085951BC,
+ .callback = sub_81077C0,
+};
+
+const union AnimCmd gUnknown_085951F0[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085951F8[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08595200[] =
+{
+ gUnknown_085951F0,
+};
+
+const union AnimCmd *const gUnknown_08595204[] =
+{
+ gUnknown_085951F8,
+};
+
+const struct SpriteTemplate gUnknown_08595208 =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gUnknown_08524A2C,
+ .anims = gUnknown_08595200,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A78AC,
+};
+
+const struct SpriteTemplate gUnknown_08595220 =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gUnknown_08524AEC,
+ .anims = gUnknown_08595204,
+ .images = NULL,
+ .affineAnims = gUnknown_08596208,
+ .callback = sub_8107894,
+};
+
+const struct SpriteTemplate gUnknown_08595238 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08595AB8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81078D0,
+};
+
+const struct SpriteTemplate gUnknown_08595250 =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8108034,
+};
+
+const struct SpriteTemplate gUnknown_08595268 =
+{
+ .tileTag = ANIM_TAG_GLOWY_BLUE_ORB,
+ .paletteTag = ANIM_TAG_GLOWY_BLUE_ORB,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810851C,
+};
+
+const union AnimCmd gUnknown_08595280[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595288[] =
+{
+ ANIMCMD_FRAME(9, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595290[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08595298[] =
+{
+ gUnknown_08595280,
+ gUnknown_08595288,
+};
+
+const union AnimCmd *const gUnknown_085952A0[] =
+{
+ gUnknown_08595290,
+};
+
+const union AffineAnimCmd gUnknown_085952A4[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085952BC[] =
+{
+ AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_085952D4[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085952EC[] =
+{
+ gUnknown_085952A4,
+ gUnknown_085952BC,
+};
+
+const union AffineAnimCmd *const gUnknown_085952F4[] =
+{
+ gUnknown_085952D4,
+};
+
+const struct SpriteTemplate gUnknown_085952F8 =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08595298,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8108BE0,
+};
+
+const struct SpriteTemplate gUnknown_08595310 =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gUnknown_08524964,
+ .anims = gUnknown_08595298,
+ .images = NULL,
+ .affineAnims = gUnknown_085952EC,
+ .callback = sub_8108C54,
+};
+
+const struct SpriteTemplate gUnknown_08595328 =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gUnknown_0852496C,
+ .anims = gUnknown_085952A0,
+ .images = NULL,
+ .affineAnims = gUnknown_085952F4,
+ .callback = sub_80A8EE4,
+};
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 9a22323ff..9b3c70ad7 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -18,6 +18,8 @@
#include "tv.h"
#include "link.h"
#include "script.h"
+#include "battle_pike.h"
+#include "battle_pyramid.h"
#include "constants/items.h"
#include "constants/maps.h"
@@ -25,12 +27,6 @@ extern const u8 EventScript_RepelWoreOff[];
#define NUM_FEEBAS_SPOTS 6
-extern u8 GetBattlePikeWildMonHeaderId(void);
-extern bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate);
-extern void GenerateBattlePyramidWildMon(void);
-extern bool8 InBattlePike(void);
-extern bool8 InBattlePyramid(void);
-
// this file's functions
static u16 FeebasRandom(void);
static void FeebasSeedRng(u16 seed);
@@ -5102,7 +5098,7 @@ bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavi
}
if (gMapHeader.mapLayoutId == 0x169)
{
- headerId = gSaveBlock2Ptr->frontier.field_CB2;
+ headerId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll())
return FALSE;
else if (DoWildEncounterRateTest(gBattlePyramidWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE)
@@ -5240,7 +5236,7 @@ bool8 SweetScentWildEncounter(void)
}
if (gMapHeader.mapLayoutId == 0x169)
{
- headerId = gSaveBlock2Ptr->frontier.field_CB2;
+ headerId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
if (TryGenerateWildMon(gBattlePyramidWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0) != TRUE)
return FALSE;
diff --git a/src/window.c b/src/window.c
index 9a52a5a20..8efd1c281 100644
--- a/src/window.c
+++ b/src/window.c
@@ -20,7 +20,7 @@ EWRAM_DATA static u16 sWindowSize = 0;
static u8 GetNumActiveWindowsOnBg(u8 bgId);
static u8 GetNumActiveWindowsOnBg8Bit(u8 bgId);
-static const struct WindowTemplate sDummyWindowTemplate = {0xFF, 0, 0, 0, 0, 0, 0};
+static const struct WindowTemplate sDummyWindowTemplate = DUMMY_WIN_TEMPLATE;
static void nullsub_8(void)
{
@@ -52,7 +52,7 @@ bool16 InitWindows(const struct WindowTemplate *templates)
gWindows[i].tileData = NULL;
}
- for (i = 0, allocatedBaseBlock = 0, bgLayer = templates[i].priority; bgLayer != 0xFF && i < 0x20; ++i, bgLayer = templates[i].priority)
+ for (i = 0, allocatedBaseBlock = 0, bgLayer = templates[i].bg; bgLayer != 0xFF && i < 0x20; ++i, bgLayer = templates[i].bg)
{
if (gUnneededFireRedVariable == 1)
{
@@ -121,14 +121,14 @@ u16 AddWindow(const struct WindowTemplate *template)
for (win = 0; win < WINDOWS_MAX; ++win)
{
- if ((bgLayer = gWindows[win].window.priority) == 0xFF)
+ if ((bgLayer = gWindows[win].window.bg) == 0xFF)
break;
}
if (win == WINDOWS_MAX)
return 0xFF;
- bgLayer = template->priority;
+ bgLayer = template->bg;
allocatedBaseBlock = 0;
if (gUnneededFireRedVariable == 1)
@@ -190,14 +190,14 @@ int AddWindowWithoutTileMap(const struct WindowTemplate *template)
for (win = 0; win < WINDOWS_MAX; ++win)
{
- if (gWindows[win].window.priority == 0xFF)
+ if (gWindows[win].window.bg == 0xFF)
break;
}
if (win == WINDOWS_MAX)
return 0xFF;
- bgLayer = template->priority;
+ bgLayer = template->bg;
allocatedBaseBlock = 0;
if (gUnneededFireRedVariable == 1)
@@ -221,7 +221,7 @@ int AddWindowWithoutTileMap(const struct WindowTemplate *template)
void RemoveWindow(u8 windowId)
{
- u8 bgLayer = gWindows[windowId].window.priority;
+ u8 bgLayer = gWindows[windowId].window.bg;
if (gUnneededFireRedVariable == 1)
{
@@ -277,14 +277,14 @@ void CopyWindowToVram(u8 windowId, u8 mode)
switch (mode)
{
case 1:
- CopyBgTilemapBufferToVram(windowLocal.window.priority);
+ CopyBgTilemapBufferToVram(windowLocal.window.bg);
break;
case 2:
- LoadBgTiles(windowLocal.window.priority, windowLocal.tileData, windowSize, windowLocal.window.baseBlock);
+ LoadBgTiles(windowLocal.window.bg, windowLocal.tileData, windowSize, windowLocal.window.baseBlock);
break;
case 3:
- LoadBgTiles(windowLocal.window.priority, windowLocal.tileData, windowSize, windowLocal.window.baseBlock);
- CopyBgTilemapBufferToVram(windowLocal.window.priority);
+ LoadBgTiles(windowLocal.window.bg, windowLocal.tileData, windowSize, windowLocal.window.baseBlock);
+ CopyBgTilemapBufferToVram(windowLocal.window.bg);
break;
}
}
@@ -309,14 +309,14 @@ void CopyWindowRectToVram(u32 windowId, u32 mode, u32 x, u32 y, u32 w, u32 h)
switch (mode)
{
case 1:
- CopyBgTilemapBufferToVram(windowLocal.window.priority);
+ CopyBgTilemapBufferToVram(windowLocal.window.bg);
break;
case 2:
- LoadBgTiles(windowLocal.window.priority, windowLocal.tileData + (rectPos * 32), rectSize, windowLocal.window.baseBlock + rectPos);
+ LoadBgTiles(windowLocal.window.bg, windowLocal.tileData + (rectPos * 32), rectSize, windowLocal.window.baseBlock + rectPos);
break;
case 3:
- LoadBgTiles(windowLocal.window.priority, windowLocal.tileData + (rectPos * 32), rectSize, windowLocal.window.baseBlock + rectPos);
- CopyBgTilemapBufferToVram(windowLocal.window.priority);
+ LoadBgTiles(windowLocal.window.bg, windowLocal.tileData + (rectPos * 32), rectSize, windowLocal.window.baseBlock + rectPos);
+ CopyBgTilemapBufferToVram(windowLocal.window.bg);
break;
}
}
@@ -327,8 +327,8 @@ void PutWindowTilemap(u8 windowId)
struct Window windowLocal = gWindows[windowId];
WriteSequenceToBgTilemapBuffer(
- windowLocal.window.priority,
- GetBgAttribute(windowLocal.window.priority, 0xA) + windowLocal.window.baseBlock,
+ windowLocal.window.bg,
+ GetBgAttribute(windowLocal.window.bg, 0xA) + windowLocal.window.baseBlock,
windowLocal.window.tilemapLeft,
windowLocal.window.tilemapTop,
windowLocal.window.width,
@@ -340,13 +340,13 @@ void PutWindowTilemap(u8 windowId)
void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette)
{
struct Window windowLocal = gWindows[windowId];
- u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.priority, 0xA);
+ u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, 0xA);
int i;
for (i = 0; i < height; ++i)
{
WriteSequenceToBgTilemapBuffer(
- windowLocal.window.priority,
+ windowLocal.window.bg,
currentRow,
windowLocal.window.tilemapLeft + x,
windowLocal.window.tilemapTop + y + i,
@@ -364,7 +364,7 @@ void ClearWindowTilemap(u8 windowId)
struct Window windowLocal = gWindows[windowId];
FillBgTilemapBufferRect(
- windowLocal.window.priority,
+ windowLocal.window.bg,
gUnknown_03002F60,
windowLocal.window.tilemapLeft,
windowLocal.window.tilemapTop,
@@ -376,13 +376,13 @@ void ClearWindowTilemap(u8 windowId)
void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height)
{
struct Window windowLocal = gWindows[windowId];
- u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.priority, 0xA);
+ u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, 0xA);
int i;
for (i = 0; i < height; ++i)
{
WriteSequenceToBgTilemapBuffer(
- windowLocal.window.priority,
+ windowLocal.window.bg,
currentRow,
windowLocal.window.tilemapLeft + x,
windowLocal.window.tilemapTop + y + i,
@@ -443,7 +443,7 @@ void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16
FillBitmapRect4Bit(&pixelRect, x, y, width, height, fillValue);
}
-void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset)
+void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOffset)
{
if (size != 0)
CpuCopy16(src, gWindows[windowId].tileData + (0x20 * tileOffset), size);
@@ -529,7 +529,7 @@ void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue)
void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8))
{
struct WindowTemplate window = gWindows[windowId].window;
- func(window.priority, window.tilemapLeft, window.tilemapTop, window.width, window.height, window.paletteNum);
+ func(window.bg, window.tilemapLeft, window.tilemapTop, window.width, window.height, window.paletteNum);
}
bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value)
@@ -551,7 +551,7 @@ bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value)
case WINDOW_TILE_DATA:
gWindows[windowId].tileData = (u8*)(value);
return TRUE;
- case WINDOW_PRIORITY:
+ case WINDOW_BG:
case WINDOW_WIDTH:
case WINDOW_HEIGHT:
default:
@@ -563,8 +563,8 @@ u32 GetWindowAttribute(u8 windowId, u8 attributeId)
{
switch (attributeId)
{
- case WINDOW_PRIORITY:
- return gWindows[windowId].window.priority;
+ case WINDOW_BG:
+ return gWindows[windowId].window.bg;
case WINDOW_TILEMAP_LEFT:
return gWindows[windowId].window.tilemapLeft;
case WINDOW_TILEMAP_TOP:
@@ -590,7 +590,7 @@ static u8 GetNumActiveWindowsOnBg(u8 bgId)
s32 i;
for (i = 0; i < WINDOWS_MAX; i++)
{
- if (gWindows[i].window.priority == bgId)
+ if (gWindows[i].window.bg == bgId)
windowsNum++;
}
return windowsNum;
@@ -609,12 +609,12 @@ u16 AddWindow8Bit(struct WindowTemplate *template)
for (windowId = 0; windowId < 32; windowId++)
{
- if (gWindows[windowId].window.priority == 0xFF)
+ if (gWindows[windowId].window.bg == 0xFF)
break;
}
if (windowId == WINDOWS_MAX)
return 0xFF;
- bgLayer = template->priority;
+ bgLayer = template->bg;
if (gUnknown_03002F70[bgLayer] == 0)
{
u16 attribute = GetBgAttribute(bgLayer, 8);
@@ -693,14 +693,14 @@ void CopyWindowToVram8Bit(u8 windowId, u8 mode)
switch (mode)
{
case 1:
- CopyBgTilemapBufferToVram(sWindowPtr->window.priority);
+ CopyBgTilemapBufferToVram(sWindowPtr->window.bg);
break;
case 2:
- LoadBgTiles(sWindowPtr->window.priority, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock);
+ LoadBgTiles(sWindowPtr->window.bg, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock);
break;
case 3:
- LoadBgTiles(sWindowPtr->window.priority, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock);
- CopyBgTilemapBufferToVram(sWindowPtr->window.priority);
+ LoadBgTiles(sWindowPtr->window.bg, sWindowPtr->tileData, sWindowSize, sWindowPtr->window.baseBlock);
+ CopyBgTilemapBufferToVram(sWindowPtr->window.bg);
break;
}
}
@@ -711,7 +711,7 @@ static u8 GetNumActiveWindowsOnBg8Bit(u8 bgId)
s32 i;
for (i = 0; i < WINDOWS_MAX; i++)
{
- if (gWindows[i].window.priority == bgId)
+ if (gWindows[i].window.bg == bgId)
windowsNum++;
}
return windowsNum;