summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2019-03-23 09:39:46 -0500
committerMarcus Huderle <huderlem@gmail.com>2019-03-23 09:39:46 -0500
commit65391a1eb2979dc050dd4a98afea02bb0ef310ea (patch)
treee31a90d0966cec7e8713ead9ca8083d439c8d9b5 /src
parenteb48cc2f7eefc1e56c2dcec21c38381b4534b897 (diff)
parentabe56579c107af58e6f3a43968ba2257ff358189 (diff)
Merge remote-tracking branch 'upstream/master' into use_pokeblock
# Conflicts: # src/use_pokeblock.c
Diffstat (limited to 'src')
-rw-r--r--src/anim_mon_front_pics.c832
-rw-r--r--src/apprentice.c4
-rw-r--r--src/battle_anim.c346
-rw-r--r--src/battle_anim_80A5C6C.c223
-rw-r--r--src/battle_anim_80A9C70.c176
-rw-r--r--src/battle_anim_80D51AC.c12
-rwxr-xr-xsrc/battle_anim_8170478.c14
-rw-r--r--src/battle_anim_effects_1.c34
-rwxr-xr-xsrc/battle_anim_effects_2.c49
-rwxr-xr-xsrc/battle_anim_effects_3.c57
-rw-r--r--src/battle_anim_utility_funcs.c34
-rw-r--r--src/battle_arena.c138
-rw-r--r--src/battle_bg.c156
-rw-r--r--src/battle_controller_link_opponent.c20
-rw-r--r--src/battle_controller_link_partner.c19
-rw-r--r--src/battle_controller_opponent.c14
-rw-r--r--src/battle_controller_player.c14
-rw-r--r--src/battle_controller_player_partner.c13
-rw-r--r--src/battle_controller_recorded_opponent.c13
-rw-r--r--src/battle_controller_recorded_player.c12
-rw-r--r--src/battle_controller_safari.c10
-rw-r--r--src/battle_controller_wally.c12
-rw-r--r--src/battle_controllers.c2
-rw-r--r--src/battle_dome.c895
-rw-r--r--src/battle_factory.c200
-rw-r--r--src/battle_factory_screen.c90
-rw-r--r--src/battle_interface.c181
-rw-r--r--src/battle_main.c20
-rw-r--r--src/battle_message.c94
-rw-r--r--src/battle_pike.c782
-rw-r--r--src/battle_pyramid.c1901
-rw-r--r--src/battle_pyramid_bag.c59
-rw-r--r--src/battle_records.c11
-rw-r--r--src/battle_script_commands.c36
-rw-r--r--src/battle_setup.c13
-rw-r--r--src/battle_tent.c15
-rw-r--r--src/battle_tower.c100
-rw-r--r--src/battle_transition.c4
-rw-r--r--src/battle_util.c30
-rw-r--r--src/berry.c6
-rw-r--r--src/berry_blender.c56
-rw-r--r--src/berry_fix_program.c8
-rw-r--r--src/berry_tag_screen.c14
-rw-r--r--src/bg.c4
-rw-r--r--src/bike.c6
-rw-r--r--src/braille_puzzles.c169
-rw-r--r--src/bug.c4
-rwxr-xr-xsrc/cable_car.c17
-rw-r--r--src/cable_club.c51
-rw-r--r--src/clear_save_data_screen.c8
-rw-r--r--src/clock.c2
-rw-r--r--src/coins.c6
-rw-r--r--src/contest.c34
-rw-r--r--src/contest_link_80F57C4.c1752
-rw-r--r--src/contest_painting.c33
-rw-r--r--src/contest_painting_effects.c720
-rw-r--r--src/credits.c18
-rw-r--r--src/dark.c32
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_actions.h471
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_adjectives.h219
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_battle.h381
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_conditions.h417
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_endings.h417
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_events.h177
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_feelings.h417
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_greetings.h255
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_hobbies.h327
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_lifestyle.h273
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_misc.h255
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_move_1.h158
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_move_2.h204
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_people.h453
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_pokemon.h206
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_pokemon2.h255
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_speech.h363
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_status.h657
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_time.h273
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_trainer.h165
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_trendy_saying.h201
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_voices.h381
-rwxr-xr-xsrc/data/easy_chat/easy_chat_groups.h137
-rwxr-xr-xsrc/data/easy_chat/easy_chat_words_by_letter.h2750
-rwxr-xr-xsrc/data/field_event_obj/base_oam.h32
-rw-r--r--src/data/graphics/pokemon.h5578
-rw-r--r--src/data/pokemon/trainer_class_lookups.h4
-rw-r--r--src/data/trainer_graphics/back_pic_anims.h12
-rw-r--r--src/data/trainer_graphics/back_pic_tables.h32
-rw-r--r--src/data2b.c18
-rw-r--r--src/daycare.c12
-rw-r--r--src/decoration.c90
-rw-r--r--src/dewford_trend.c4
-rw-r--r--src/diploma.c5
-rw-r--r--src/dragon.c6
-rw-r--r--src/easy_chat.c5591
-rw-r--r--src/egg_hatch.c18
-rw-r--r--src/electric.c3
-rwxr-xr-xsrc/ereader_helpers.c553
-rwxr-xr-xsrc/ereader_screen.c464
-rw-r--r--src/event_data.c33
-rw-r--r--src/event_object_movement.c10
-rw-r--r--src/evolution_graphics.c4
-rw-r--r--src/evolution_scene.c15
-rwxr-xr-xsrc/faraway_island.c445
-rw-r--r--src/field_control_avatar.c23
-rw-r--r--src/field_effect.c160
-rwxr-xr-xsrc/field_effect_helpers.c4
-rwxr-xr-xsrc/field_message_box.c10
-rw-r--r--src/field_player_avatar.c14
-rw-r--r--src/field_poison.c2
-rw-r--r--src/field_region_map.c8
-rw-r--r--src/field_screen_effect.c66
-rw-r--r--src/field_special_scene.c10
-rw-r--r--src/field_specials.c202
-rw-r--r--src/field_weather.c15
-rw-r--r--src/field_weather_effect.c131
-rw-r--r--src/fieldmap.c52
-rw-r--r--src/fire.c10
-rw-r--r--src/fldeff_cut.c8
-rw-r--r--src/fldeff_escalator.c14
-rw-r--r--src/fldeff_flash.c6
-rw-r--r--src/fldeff_misc.c18
-rw-r--r--src/fldeff_rocksmash.c6
-rw-r--r--src/fldeff_softboiled.c2
-rw-r--r--src/flying.c1621
-rw-r--r--src/frontier_pass.c8
-rw-r--r--src/frontier_util.c57
-rw-r--r--src/ghost.c4
-rw-r--r--src/graphics.c38
-rw-r--r--src/ground.c6
-rw-r--r--src/hall_of_fame.c24
-rw-r--r--src/hof_pc.c4
-rw-r--r--src/ice.c77
-rw-r--r--src/intro.c476
-rw-r--r--src/intro_credits_graphics.c648
-rw-r--r--src/item.c4
-rw-r--r--src/item_icon.c4
-rwxr-xr-xsrc/item_menu.c62
-rw-r--r--src/item_menu_icons.c20
-rwxr-xr-xsrc/item_use.c43
-rw-r--r--src/learn_move.c833
-rw-r--r--src/lilycove_lady.c6
-rw-r--r--src/link.c38
-rw-r--r--src/link_rfu.c90
-rw-r--r--src/list_menu.c68
-rw-r--r--src/load_save.c4
-rw-r--r--src/lottery_corner.c2
-rw-r--r--src/mail.c6
-rw-r--r--src/main.c19
-rw-r--r--src/main_menu.c221
-rw-r--r--src/map_name_popup.c15
-rw-r--r--src/match_call.c10
-rw-r--r--src/mauville_old_man.c6
-rw-r--r--src/menu.c129
-rw-r--r--src/menu_helpers.c12
-rw-r--r--src/menu_specialized.c2094
-rw-r--r--src/mirage_tower.c14
-rw-r--r--src/mon_markings.c12
-rw-r--r--src/money.c10
-rw-r--r--src/move_relearner.c976
-rw-r--r--src/mystery_event_menu.c10
-rw-r--r--src/mystery_event_script.c2
-rw-r--r--src/naming_screen.c26
-rw-r--r--src/new_game.c48
-rw-r--r--src/normal.c14
-rw-r--r--src/option_menu.c7
-rw-r--r--src/overworld.c1118
-rw-r--r--src/palette.c33
-rwxr-xr-xsrc/party_menu.c81
-rw-r--r--src/player_pc.c66
-rw-r--r--src/poison.c8
-rw-r--r--src/pokeball.c8
-rw-r--r--src/pokeblock.c30
-rw-r--r--src/pokeblock_feed.c10
-rw-r--r--src/pokedex.c72
-rwxr-xr-xsrc/pokedex_area_screen.c46
-rwxr-xr-xsrc/pokedex_cry_screen.c32
-rw-r--r--src/pokemon.c74
-rw-r--r--src/pokemon_icon.c4
-rw-r--r--src/pokemon_size_record.c4
-rw-r--r--src/pokemon_storage_system.c97
-rw-r--r--src/pokemon_summary_screen.c1773
-rw-r--r--src/pokenav.c1433
-rw-r--r--src/pokenav_match_call.c4
-rw-r--r--src/psychic.c2
-rw-r--r--src/rayquaza_scene.c32
-rw-r--r--src/record_mixing.c59
-rw-r--r--src/region_map.c254
-rw-r--r--src/reset_rtc_screen.c14
-rw-r--r--src/reset_save_heap.c2
-rw-r--r--src/reshow_battle_screen.c3
-rw-r--r--src/rock.c26
-rw-r--r--src/rom_8011DC0.c51
-rw-r--r--src/rotating_gate.c8
-rw-r--r--src/roulette.c336
-rw-r--r--src/safari_zone.c3
-rw-r--r--src/save.c19
-rw-r--r--src/save_failed_screen.c50
-rw-r--r--src/scrcmd.c22
-rw-r--r--src/script.c43
-rw-r--r--src/script_menu.c22
-rwxr-xr-xsrc/script_pokemon_util_80F87D8.c21
-rw-r--r--src/secret_base.c196
-rwxr-xr-xsrc/shop.c28
-rw-r--r--src/siirtc.c139
-rw-r--r--src/slot_machine.c2803
-rw-r--r--src/sound.c4
-rw-r--r--src/sprite.c30
-rw-r--r--src/start_menu.c158
-rw-r--r--src/starter_choose.c52
-rw-r--r--src/strings.c54
-rw-r--r--src/task.c3
-rw-r--r--src/text.c12
-rw-r--r--src/tileset_anims.c1672
-rw-r--r--src/time_events.c2
-rw-r--r--src/title_screen.c108
-rw-r--r--src/trade.c372
-rw-r--r--src/trader.c8
-rwxr-xr-xsrc/trainer_card.c21
-rw-r--r--src/trainer_hill.c130
-rw-r--r--src/trainer_pokemon_sprites.c9
-rw-r--r--src/trainer_see.c21
-rw-r--r--src/tv.c66
-rw-r--r--src/unk_text_util_2.c10
-rw-r--r--src/unk_transition.c13
-rw-r--r--src/use_pokeblock.c127
-rw-r--r--src/walda_phrase.c2
-rw-r--r--src/wallclock.c84
-rw-r--r--src/water.c92
-rw-r--r--src/wild_encounter.c20
-rw-r--r--src/window.c9
230 files changed, 38801 insertions, 14149 deletions
diff --git a/src/anim_mon_front_pics.c b/src/anim_mon_front_pics.c
index ba53ba193..b566b7760 100644
--- a/src/anim_mon_front_pics.c
+++ b/src/anim_mon_front_pics.c
@@ -1,424 +1,424 @@
#include "global.h"
-const u32 gMonFrontPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/anim_front_pics/circled_question_mark_front_pic.4bpp.lz");
+const u32 gMonFrontPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/circled_question_mark/anim_front.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 u32 gMonFrontPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/anim_front.4bpp.lz");
+const u32 gMonFrontPic_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/anim_front.4bpp.lz");
+const u32 gMonFrontPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Paras[] = INCBIN_U32("graphics/pokemon/paras/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Abra[] = INCBIN_U32("graphics/pokemon/abra/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Machop[] = INCBIN_U32("graphics/pokemon/machop/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Onix[] = INCBIN_U32("graphics/pokemon/onix/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Mrmime[] = INCBIN_U32("graphics/pokemon/mr_mime/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Mew[] = INCBIN_U32("graphics/pokemon/mew/anim_front.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 u32 gMonFrontPic_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Natu[] = INCBIN_U32("graphics/pokemon/natu/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/anim_front.4bpp.lz");
+const u32 gMonFrontPic_UnownA[] = INCBIN_U32("graphics/pokemon/unown/anim_front_a.4bpp.lz");
+const u32 gMonFrontPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Magby[] = INCBIN_U32("graphics/pokemon/magby/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Entei[] = INCBIN_U32("graphics/pokemon/entei/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/anim_front.4bpp.lz");
+const u32 gMonFrontPic_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/anim_front.4bpp.lz");
-const u32 gMonFrontPic_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/anim_front_pics/double_question_mark_front_pic.4bpp.lz");
+const u32 gMonFrontPic_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/double_question_mark/anim_front.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 u32 gMonFrontPic_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Numel[] = INCBIN_U32("graphics/pokemon/numel/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Minun[] = INCBIN_U32("graphics/pokemon/minun/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Absol[] = INCBIN_U32("graphics/pokemon/absol/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Aron[] = INCBIN_U32("graphics/pokemon/aron/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Castform[] = INCBIN_U32("graphics/pokemon/castform/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Regice[] = INCBIN_U32("graphics/pokemon/regice/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Latias[] = INCBIN_U32("graphics/pokemon/latias/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Latios[] = INCBIN_U32("graphics/pokemon/latios/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/anim_front.4bpp.lz");
+const u32 gMonFrontPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/anim_front.4bpp.lz");
-const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/anim_front_pics/egg_front_pic.4bpp.lz");
+const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/anim_front.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");
+const u32 gMonFrontPic_UnownB[] = INCBIN_U32("graphics/pokemon/unown/anim_front_b.4bpp.lz");
+const u32 gMonFrontPic_UnownC[] = INCBIN_U32("graphics/pokemon/unown/anim_front_c.4bpp.lz");
+const u32 gMonFrontPic_UnownD[] = INCBIN_U32("graphics/pokemon/unown/anim_front_d.4bpp.lz");
+const u32 gMonFrontPic_UnownE[] = INCBIN_U32("graphics/pokemon/unown/anim_front_e.4bpp.lz");
+const u32 gMonFrontPic_UnownF[] = INCBIN_U32("graphics/pokemon/unown/anim_front_f.4bpp.lz");
+const u32 gMonFrontPic_UnownG[] = INCBIN_U32("graphics/pokemon/unown/anim_front_g.4bpp.lz");
+const u32 gMonFrontPic_UnownH[] = INCBIN_U32("graphics/pokemon/unown/anim_front_h.4bpp.lz");
+const u32 gMonFrontPic_UnownI[] = INCBIN_U32("graphics/pokemon/unown/anim_front_i.4bpp.lz");
+const u32 gMonFrontPic_UnownJ[] = INCBIN_U32("graphics/pokemon/unown/anim_front_j.4bpp.lz");
+const u32 gMonFrontPic_UnownK[] = INCBIN_U32("graphics/pokemon/unown/anim_front_k.4bpp.lz");
+const u32 gMonFrontPic_UnownL[] = INCBIN_U32("graphics/pokemon/unown/anim_front_l.4bpp.lz");
+const u32 gMonFrontPic_UnownM[] = INCBIN_U32("graphics/pokemon/unown/anim_front_m.4bpp.lz");
+const u32 gMonFrontPic_UnownN[] = INCBIN_U32("graphics/pokemon/unown/anim_front_n.4bpp.lz");
+const u32 gMonFrontPic_UnownO[] = INCBIN_U32("graphics/pokemon/unown/anim_front_o.4bpp.lz");
+const u32 gMonFrontPic_UnownP[] = INCBIN_U32("graphics/pokemon/unown/anim_front_p.4bpp.lz");
+const u32 gMonFrontPic_UnownQ[] = INCBIN_U32("graphics/pokemon/unown/anim_front_q.4bpp.lz");
+const u32 gMonFrontPic_UnownR[] = INCBIN_U32("graphics/pokemon/unown/anim_front_r.4bpp.lz");
+const u32 gMonFrontPic_UnownS[] = INCBIN_U32("graphics/pokemon/unown/anim_front_s.4bpp.lz");
+const u32 gMonFrontPic_UnownT[] = INCBIN_U32("graphics/pokemon/unown/anim_front_t.4bpp.lz");
+const u32 gMonFrontPic_UnownU[] = INCBIN_U32("graphics/pokemon/unown/anim_front_u.4bpp.lz");
+const u32 gMonFrontPic_UnownV[] = INCBIN_U32("graphics/pokemon/unown/anim_front_v.4bpp.lz");
+const u32 gMonFrontPic_UnownW[] = INCBIN_U32("graphics/pokemon/unown/anim_front_w.4bpp.lz");
+const u32 gMonFrontPic_UnownX[] = INCBIN_U32("graphics/pokemon/unown/anim_front_x.4bpp.lz");
+const u32 gMonFrontPic_UnownY[] = INCBIN_U32("graphics/pokemon/unown/anim_front_y.4bpp.lz");
+const u32 gMonFrontPic_UnownZ[] = INCBIN_U32("graphics/pokemon/unown/anim_front_z.4bpp.lz");
+const u32 gMonFrontPic_UnownExclamationMark[] = INCBIN_U32("graphics/pokemon/unown/anim_front_exclamation_mark.4bpp.lz");
+const u32 gMonFrontPic_UnownQuestionMark[] = INCBIN_U32("graphics/pokemon/unown/anim_front_question_mark.4bpp.lz");
diff --git a/src/apprentice.c b/src/apprentice.c
index 9cf8cd4b4..27ff8e36e 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -1619,7 +1619,7 @@ static u8 CreateAndShowWindow(u8 left, u8 top, u8 width, u8 height)
static void RemoveAndHideWindow(u8 windowId)
{
- sub_8198070(windowId, TRUE);
+ ClearStdWindowAndFrameToTransparent(windowId, TRUE);
RemoveWindow(windowId);
}
@@ -1826,7 +1826,7 @@ static void Script_PrintMessage(void)
FreezeEventObjects();
sub_808B864();
sub_808BCF4();
- NewMenuHelpers_DrawDialogueFrame(0, 1);
+ DrawDialogueFrame(0, 1);
PrintMessage();
}
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 1f4831c54..31ff11ee8 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -119,8 +119,8 @@ const struct OamData gUnknown_08524904 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.priority = 2,
};
@@ -129,8 +129,8 @@ const struct OamData gUnknown_0852490C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 2,
};
@@ -138,8 +138,8 @@ const struct OamData gUnknown_08524914 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 2,
};
@@ -147,8 +147,8 @@ const struct OamData gUnknown_0852491C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
.priority = 2,
};
@@ -156,8 +156,8 @@ const struct OamData gUnknown_08524924 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
.priority = 2,
};
@@ -165,8 +165,8 @@ const struct OamData gUnknown_0852492C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
.priority = 2,
};
@@ -174,8 +174,8 @@ const struct OamData gUnknown_08524934 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16),
.priority = 2,
};
@@ -183,8 +183,8 @@ const struct OamData gUnknown_0852493C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
.priority = 2,
};
@@ -192,8 +192,8 @@ const struct OamData gUnknown_08524944 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x16),
+ .size = SPRITE_SIZE(8x16),
.priority = 2,
};
@@ -201,8 +201,8 @@ const struct OamData gUnknown_0852494C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(8x32),
+ .size = SPRITE_SIZE(8x32),
.priority = 2,
};
@@ -210,8 +210,8 @@ const struct OamData gUnknown_08524954 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
.priority = 2,
};
@@ -219,8 +219,8 @@ const struct OamData gUnknown_0852495C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(32x64),
+ .size = SPRITE_SIZE(32x64),
.priority = 2,
};
@@ -228,8 +228,8 @@ const struct OamData gUnknown_08524964 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.priority = 2,
};
@@ -237,8 +237,8 @@ const struct OamData gUnknown_0852496C =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 2,
};
@@ -246,8 +246,8 @@ const struct OamData gUnknown_08524974 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 2,
};
@@ -255,8 +255,8 @@ const struct OamData gUnknown_0852497C =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
.priority = 2,
};
@@ -264,8 +264,8 @@ const struct OamData gUnknown_08524984 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
.priority = 2,
};
@@ -273,8 +273,8 @@ const struct OamData gUnknown_0852498C =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
.priority = 2,
};
@@ -282,8 +282,8 @@ const struct OamData gUnknown_08524994 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16),
.priority = 2,
};
@@ -291,8 +291,8 @@ const struct OamData gUnknown_0852499C =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
.priority = 2,
};
@@ -300,8 +300,8 @@ const struct OamData gUnknown_085249A4 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x16),
+ .size = SPRITE_SIZE(8x16),
.priority = 2,
};
@@ -309,8 +309,8 @@ const struct OamData gUnknown_085249AC =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(8x32),
+ .size = SPRITE_SIZE(8x32),
.priority = 2,
};
@@ -318,8 +318,8 @@ const struct OamData gUnknown_085249B4 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
.priority = 2,
};
@@ -327,8 +327,8 @@ const struct OamData gUnknown_085249BC =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(32x64),
+ .size = SPRITE_SIZE(32x64),
.priority = 2,
};
@@ -336,8 +336,8 @@ const struct OamData gUnknown_085249C4 =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.priority = 2,
};
@@ -345,8 +345,8 @@ const struct OamData gUnknown_085249CC =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 2,
};
@@ -354,8 +354,8 @@ const struct OamData gUnknown_085249D4 =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 2,
};
@@ -363,8 +363,8 @@ const struct OamData gUnknown_085249DC =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
.priority = 2,
};
@@ -372,8 +372,8 @@ const struct OamData gUnknown_085249E4 =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
.priority = 2,
};
@@ -381,8 +381,8 @@ const struct OamData gUnknown_085249EC =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
.priority = 2,
};
@@ -390,8 +390,8 @@ const struct OamData gUnknown_085249F4 =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16),
.priority = 2,
};
@@ -399,8 +399,8 @@ const struct OamData gUnknown_085249FC =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
.priority = 2,
};
@@ -408,8 +408,8 @@ const struct OamData gUnknown_08524A04 =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x16),
+ .size = SPRITE_SIZE(8x16),
.priority = 2,
};
@@ -417,8 +417,8 @@ const struct OamData gUnknown_08524A0C =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(8x32),
+ .size = SPRITE_SIZE(8x32),
.priority = 2,
};
@@ -426,8 +426,8 @@ const struct OamData gUnknown_08524A14 =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
.priority = 2,
};
@@ -435,8 +435,8 @@ const struct OamData gUnknown_08524A1C =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(32x64),
+ .size = SPRITE_SIZE(32x64),
.priority = 2,
};
@@ -444,8 +444,8 @@ const struct OamData gUnknown_08524A24 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_SQUARE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.priority = 2,
};
@@ -453,8 +453,8 @@ const struct OamData gUnknown_08524A2C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_SQUARE,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 2,
};
@@ -462,8 +462,8 @@ const struct OamData gUnknown_08524A34 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_SQUARE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 2,
};
@@ -471,8 +471,8 @@ const struct OamData gUnknown_08524A3C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_SQUARE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
.priority = 2,
};
@@ -480,8 +480,8 @@ const struct OamData gUnknown_08524A44 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
.priority = 2,
};
@@ -489,8 +489,8 @@ const struct OamData gUnknown_08524A4C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
.priority = 2,
};
@@ -498,8 +498,8 @@ const struct OamData gUnknown_08524A54 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16),
.priority = 2,
};
@@ -507,8 +507,8 @@ const struct OamData gUnknown_08524A5C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
.priority = 2,
};
@@ -516,8 +516,8 @@ const struct OamData gUnknown_08524A64 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x16),
+ .size = SPRITE_SIZE(8x16),
.priority = 2,
};
@@ -525,8 +525,8 @@ const struct OamData gUnknown_08524A6C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(8x32),
+ .size = SPRITE_SIZE(8x32),
.priority = 2,
};
@@ -534,8 +534,8 @@ const struct OamData gUnknown_08524A74 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
.priority = 2,
};
@@ -543,8 +543,8 @@ const struct OamData gUnknown_08524A7C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(32x64),
+ .size = SPRITE_SIZE(32x64),
.priority = 2,
};
@@ -552,8 +552,8 @@ const struct OamData gUnknown_08524A84 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_SQUARE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.priority = 2,
};
@@ -561,8 +561,8 @@ const struct OamData gUnknown_08524A8C =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_SQUARE,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 2,
};
@@ -570,8 +570,8 @@ const struct OamData gUnknown_08524A94 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_SQUARE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 2,
};
@@ -579,8 +579,8 @@ const struct OamData gUnknown_08524A9C =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_SQUARE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
.priority = 2,
};
@@ -588,8 +588,8 @@ const struct OamData gUnknown_08524AA4 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
.priority = 2,
};
@@ -597,8 +597,8 @@ const struct OamData gUnknown_08524AAC =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
.priority = 2,
};
@@ -606,8 +606,8 @@ const struct OamData gUnknown_08524AB4 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16),
.priority = 2,
};
@@ -615,8 +615,8 @@ const struct OamData gUnknown_08524ABC =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
.priority = 2,
};
@@ -624,8 +624,8 @@ const struct OamData gUnknown_08524AC4 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x16),
+ .size = SPRITE_SIZE(8x16),
.priority = 2,
};
@@ -633,8 +633,8 @@ const struct OamData gUnknown_08524ACC =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(8x32),
+ .size = SPRITE_SIZE(8x32),
.priority = 2,
};
@@ -642,8 +642,8 @@ const struct OamData gUnknown_08524AD4 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
.priority = 2,
};
@@ -651,8 +651,8 @@ const struct OamData gUnknown_08524ADC =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(32x64),
+ .size = SPRITE_SIZE(32x64),
.priority = 2,
};
@@ -660,8 +660,8 @@ const struct OamData gUnknown_08524AE4 =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_SQUARE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.priority = 2,
};
@@ -669,8 +669,8 @@ const struct OamData gUnknown_08524AEC =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_SQUARE,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 2,
};
@@ -678,8 +678,8 @@ const struct OamData gUnknown_08524AF4 =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_SQUARE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 2,
};
@@ -687,8 +687,8 @@ const struct OamData gUnknown_08524AFC =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_SQUARE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
.priority = 2,
};
@@ -696,8 +696,8 @@ const struct OamData gUnknown_08524B04 =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
.priority = 2,
};
@@ -705,8 +705,8 @@ const struct OamData gUnknown_08524B0C =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
.priority = 2,
};
@@ -714,8 +714,8 @@ const struct OamData gUnknown_08524B14 =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16),
.priority = 2,
};
@@ -723,8 +723,8 @@ const struct OamData gUnknown_08524B1C =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
.priority = 2,
};
@@ -732,8 +732,8 @@ const struct OamData gUnknown_08524B24 =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x16),
+ .size = SPRITE_SIZE(8x16),
.priority = 2,
};
@@ -741,8 +741,8 @@ const struct OamData gUnknown_08524B2C =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(8x32),
+ .size = SPRITE_SIZE(8x32),
.priority = 2,
};
@@ -750,8 +750,8 @@ const struct OamData gUnknown_08524B34 =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
.priority = 2,
};
@@ -759,8 +759,8 @@ const struct OamData gUnknown_08524B3C =
{
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(32x64),
+ .size = SPRITE_SIZE(32x64),
.priority = 2,
};
@@ -1924,7 +1924,7 @@ bool8 IsBattlerSpriteVisible(u8 battlerId)
void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
u8 battlerSpriteId;
if (!toBG_2)
@@ -1933,18 +1933,18 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
if (IsContest() == TRUE)
{
- RequestDma3Fill(0, (void*)(VRAM + 0x8000), 0x2000, 1);
- RequestDma3Fill(0xFF, (void*)(VRAM + 0xF000), 0x1000, 0);
+ RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(16)), 0x2000, 1);
+ RequestDma3Fill(0xFF, (void*)(BG_SCREEN_ADDR(30)), 0x1000, 0);
}
else
{
- RequestDma3Fill(0, (void*)(VRAM + 0x4000), 0x2000, 1);
- RequestDma3Fill(0xFF, (void*)(VRAM + 0xe000), 0x1000, 0);
+ RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(8)), 0x2000, 1);
+ RequestDma3Fill(0xFF, (void*)(BG_SCREEN_ADDR(28)), 0x1000, 0);
}
- sub_80A6B30(&unknownStruct);
- CpuFill16(0, unknownStruct.bgTiles, 0x1000);
- CpuFill16(0xFF, unknownStruct.unk4, 0x800);
+ sub_80A6B30(&animBg);
+ CpuFill16(0, animBg.bgTiles, 0x1000);
+ CpuFill16(0xFF, animBg.bgTilemap, 0x800);
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 2);
SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1);
@@ -1963,26 +1963,26 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
- LoadPalette(&gPlttBufferUnfaded[0x100 + battlerId * 16], unknownStruct.unk8 * 16, 0x20);
- CpuCopy32(&gPlttBufferUnfaded[0x100 + battlerId * 16], (void*)(BG_PLTT + unknownStruct.unk8 * 32), 0x20);
+ LoadPalette(&gPlttBufferUnfaded[0x100 + battlerId * 16], animBg.paletteId * 16, 0x20);
+ CpuCopy32(&gPlttBufferUnfaded[0x100 + battlerId * 16], (void*)(BG_PLTT + animBg.paletteId * 32), 0x20);
if (IsContest())
battlerPosition = 0;
else
battlerPosition = GetBattlerPosition(battlerId);
- sub_8118FBC(1, 0, 0, battlerPosition, unknownStruct.unk8, unknownStruct.bgTiles, unknownStruct.unk4, unknownStruct.tilesOffset);
+ sub_8118FBC(1, 0, 0, battlerPosition, animBg.paletteId, animBg.bgTiles, animBg.bgTilemap, animBg.tilesOffset);
if (IsContest())
sub_80A46A0();
}
else
{
- RequestDma3Fill(0, (void*)(VRAM + 0x6000), 0x2000, 1);
- RequestDma3Fill(0, (void*)(VRAM + 0xF000), 0x1000, 1);
- sub_80A6B90(&unknownStruct, 2);
- CpuFill16(0, unknownStruct.bgTiles + 0x1000, 0x1000);
- CpuFill16(0, unknownStruct.unk4 + 0x400, 0x800);
+ RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(12)), 0x2000, 1);
+ RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(30)), 0x1000, 1);
+ sub_80A6B90(&animBg, 2);
+ CpuFill16(0, animBg.bgTiles + 0x1000, 0x1000);
+ CpuFill16(0, animBg.bgTilemap + 0x400, 0x800);
SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
SetAnimBgAttribute(2, BG_ANIM_SCREEN_SIZE, 1);
SetAnimBgAttribute(2, BG_ANIM_AREA_OVERFLOW_MODE, 0);
@@ -2001,20 +2001,20 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
LoadPalette(&gPlttBufferUnfaded[0x100 + battlerId * 16], 0x90, 0x20);
CpuCopy32(&gPlttBufferUnfaded[0x100 + battlerId * 16], (void*)(BG_PLTT + 0x120), 0x20);
- sub_8118FBC(2, 0, 0, GetBattlerPosition(battlerId), unknownStruct.unk8, unknownStruct.bgTiles + 0x1000, unknownStruct.unk4 + 0x400, unknownStruct.tilesOffset);
+ sub_8118FBC(2, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles + 0x1000, animBg.bgTilemap + 0x400, animBg.tilesOffset);
}
}
static void sub_80A46A0(void)
{
s32 i, j;
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
u16 *ptr;
if (IsSpeciesNotUnown(gContestResources->field_18->species))
{
- sub_80A6B30(&unknownStruct);
- ptr = unknownStruct.unk4;
+ sub_80A6B30(&animBg);
+ ptr = animBg.bgTilemap;
for (i = 0; i < 8; i++)
{
for (j = 0; j < 4; j++)
@@ -2052,8 +2052,8 @@ void sub_80A4720(u16 a, u16 *b, u32 c, u8 d)
void sub_80A477C(bool8 to_BG2)
{
- struct UnknownAnimStruct2 unknownStruct;
- sub_80A6B30(&unknownStruct);
+ struct BattleAnimBgData animBg;
+ sub_80A6B30(&animBg);
if (!to_BG2 || IsContest())
{
@@ -2073,11 +2073,11 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
{
u8 spriteId, palIndex;
s16 x, y;
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
spriteId = gTasks[taskId].data[0];
palIndex = gTasks[taskId].data[6];
- sub_80A6B30(&unknownStruct);
+ sub_80A6B30(&animBg);
x = gTasks[taskId].data[1] - (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x);
y = gTasks[taskId].data[2] - (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y);
@@ -2089,7 +2089,7 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
gBattle_BG1_X = x + gTasks[taskId].data[3];
gBattle_BG1_Y = y + gTasks[taskId].data[4];
src = gPlttBufferFaded + 0x100 + palIndex * 16;
- dst = gPlttBufferFaded + 0x100 + unknownStruct.unk8 * 16 - 256;
+ dst = gPlttBufferFaded + 0x100 + animBg.paletteId * 16 - 256;
CpuCopy32(src, dst, 0x20);
}
else
@@ -2452,15 +2452,15 @@ static void LoadMoveBg(u16 bgId)
LZDecompressWram(tilemap, gDecompressionBuffer);
sub_80A4720(sub_80A6D94(), (void*)(gDecompressionBuffer), 0x100, 0);
dmaSrc = gDecompressionBuffer;
- dmaDest = (void *)(VRAM + 0xD000);
+ dmaDest = (void *)(BG_SCREEN_ADDR(26));
DmaCopy32(3, dmaSrc, dmaDest, 0x800);
- LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x2000));
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(BG_SCREEN_ADDR(4)));
LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, sub_80A6D94() * 16, 32);
}
else
{
- LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)(VRAM + 0xD000));
- LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x8000));
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)(BG_SCREEN_ADDR(26)));
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(BG_CHAR_ADDR(2)));
LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, 32, 32);
}
}
diff --git a/src/battle_anim_80A5C6C.c b/src/battle_anim_80A5C6C.c
index 3efc86bf8..372377a0c 100644
--- a/src/battle_anim_80A5C6C.c
+++ b/src/battle_anim_80A5C6C.c
@@ -33,21 +33,18 @@ extern const u8 gEnemyMonElevation[];
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
extern const union AffineAnimCmd *gUnknown_082FF6C0[];
-// This file's functions.
-void sub_80A64EC(struct Sprite *sprite);
-void sub_80A6FB4(struct Sprite *sprite);
-void sub_80A7144(struct Sprite *sprite);
-void sub_80A791C(struct Sprite *sprite);
-void sub_80A8DFC(struct Sprite *sprite);
-void sub_80A8E88(struct Sprite *sprite);
-void SetBattlerSpriteYOffsetFromYScale(u8 spriteId);
-u16 GetBattlerYDeltaFromSpriteId(u8 spriteId);
-void AnimTask_BlendMonInAndOutSetup(struct Task *task);
-void sub_80A7AFC(u8 taskId);
-void sub_80A8CAC(u8 taskId);
-void AnimTask_BlendMonInAndOutStep(u8 taskId);
-bool8 sub_80A7238(void);
-void sub_80A8D78(struct Task *task, u8 taskId);
+static void sub_80A6FB4(struct Sprite *sprite);
+static void sub_80A7144(struct Sprite *sprite);
+static void sub_80A791C(struct Sprite *sprite);
+static void sub_80A8DFC(struct Sprite *sprite);
+static void sub_80A8E88(struct Sprite *sprite);
+static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId);
+static void AnimTask_BlendMonInAndOutSetup(struct Task *task);
+static void sub_80A7AFC(u8 taskId);
+static void sub_80A8CAC(u8 taskId);
+static void AnimTask_BlendMonInAndOutStep(u8 taskId);
+static bool8 sub_80A7238(void);
+static void sub_80A8D78(struct Task *task, u8 taskId);
// EWRAM vars
EWRAM_DATA static union AffineAnimCmd *gAnimTaskAffineAnim = NULL;
@@ -503,7 +500,7 @@ void sub_80A63C8(struct Sprite *sprite)
}
}
-void sub_80A6450(struct Sprite *sprite)
+void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite)
{
if (sprite->data[3])
{
@@ -533,28 +530,28 @@ void WaitAnimForDuration(struct Sprite *sprite)
SetCallbackToStoredInData6(sprite);
}
-void sub_80A64D0(struct Sprite *sprite)
+static void sub_80A64D0(struct Sprite *sprite)
{
sub_80A64EC(sprite);
- sprite->callback = TranslateSpriteOverDuration;
+ sprite->callback = TranslateSpriteLinear;
sprite->callback(sprite);
}
void sub_80A64EC(struct Sprite *sprite)
{
s16 old;
- int v1;
+ int xDiff;
if (sprite->data[1] > sprite->data[2])
sprite->data[0] = -sprite->data[0];
- v1 = sprite->data[2] - sprite->data[1];
+ xDiff = sprite->data[2] - sprite->data[1];
old = sprite->data[0];
- sprite->data[0] = abs(v1 / sprite->data[0]);
+ sprite->data[0] = abs(xDiff / sprite->data[0]);
sprite->data[2] = (sprite->data[4] - sprite->data[3]) / sprite->data[0];
sprite->data[1] = old;
}
-void TranslateSpriteOverDuration(struct Sprite *sprite)
+void TranslateSpriteLinear(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -568,7 +565,7 @@ void TranslateSpriteOverDuration(struct Sprite *sprite)
}
}
-void AnimTranslateLinearSimple(struct Sprite *sprite)
+void TranslateSpriteLinearFixedPoint(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -584,7 +581,7 @@ void AnimTranslateLinearSimple(struct Sprite *sprite)
}
}
-void sub_80A65A8(struct Sprite *sprite)
+static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -598,6 +595,7 @@ void sub_80A65A8(struct Sprite *sprite)
{
SetCallbackToStoredInData6(sprite);
}
+
UpdateMonIconFrame(sprite);
}
@@ -605,12 +603,12 @@ void sub_80A65EC(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
sprite->callback = sub_80A64D0;
}
-void TranslateMonBGUntil(struct Sprite *sprite)
+void TranslateMonSpriteLinear(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -624,9 +622,7 @@ void TranslateMonBGUntil(struct Sprite *sprite)
}
}
-// Same as TranslateMonBGUntil, but it operates on sub-pixel values
-// to handle slower translations.
-void sub_80A6680(struct Sprite *sprite)
+void TranslateMonSpriteLinearFixedPoint(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -642,7 +638,7 @@ void sub_80A6680(struct Sprite *sprite)
}
}
-void sub_80A66DC(struct Sprite *sprite)
+void TranslateSpriteLinearAndFlicker(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -673,8 +669,8 @@ void sub_80A6760(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
- sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->callback = sub_80A64D0;
}
@@ -696,7 +692,7 @@ void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite)
SetCallbackToStoredInData6(sprite);
}
-void sub_80A67F4(struct Sprite *sprite)
+void DestroyAnimSpriteAndDisableBlend(struct Sprite *sprite)
{
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
@@ -749,7 +745,7 @@ void InitAnimArcTranslation(struct Sprite *sprite)
sprite->data[7] = 0;
}
-bool8 TranslateAnimArc(struct Sprite *sprite)
+bool8 TranslateAnimHorizontalArc(struct Sprite *sprite)
{
if (AnimTranslateLinear(sprite))
return TRUE;
@@ -758,7 +754,7 @@ bool8 TranslateAnimArc(struct Sprite *sprite)
return FALSE;
}
-bool8 sub_80A6934(struct Sprite *sprite)
+bool8 TranslateAnimVerticalArc(struct Sprite *sprite)
{
if (AnimTranslateLinear(sprite))
return TRUE;
@@ -767,7 +763,7 @@ bool8 sub_80A6934(struct Sprite *sprite)
return FALSE;
}
-void oamt_add_pos2_onto_pos1(struct Sprite *sprite)
+void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite)
{
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
@@ -862,38 +858,38 @@ bool8 IsDoubleBattle(void)
return IS_DOUBLE_BATTLE();
}
-void sub_80A6B30(struct UnknownAnimStruct2 *unk)
+void sub_80A6B30(struct BattleAnimBgData *unk)
{
if (IsContest())
{
unk->bgTiles = gUnknown_0202305C;
- unk->unk4 = (u16 *)gUnknown_02023060;
- unk->unk8 = 0xe;
+ unk->bgTilemap = (u16 *)gUnknown_02023060;
+ unk->paletteId = 14;
unk->bgId = 1;
unk->tilesOffset = 0;
- unk->unkC = 0;
+ unk->unused = 0;
}
else
{
unk->bgTiles = gUnknown_0202305C;
- unk->unk4 = (u16 *)gUnknown_02023060;
- unk->unk8 = 0x8;
+ unk->bgTilemap = (u16 *)gUnknown_02023060;
+ unk->paletteId = 8;
unk->bgId = 1;
unk->tilesOffset = 0x200;
- unk->unkC = 0;
+ unk->unused = 0;
}
}
-void sub_80A6B90(struct UnknownAnimStruct2 *unk, u32 arg1)
+void sub_80A6B90(struct BattleAnimBgData *unk, u32 arg1)
{
if (IsContest())
{
unk->bgTiles = gUnknown_0202305C;
- unk->unk4 = (u16 *)gUnknown_02023060;
- unk->unk8 = 0xe;
+ unk->bgTilemap = (u16 *)gUnknown_02023060;
+ unk->paletteId = 14;
unk->bgId = 1;
unk->tilesOffset = 0;
- unk->unkC = 0;
+ unk->unused = 0;
}
else if (arg1 == 1)
{
@@ -902,76 +898,76 @@ void sub_80A6B90(struct UnknownAnimStruct2 *unk, u32 arg1)
else
{
unk->bgTiles = gUnknown_0202305C;
- unk->unk4 = (u16 *)gUnknown_02023060;
- unk->unk8 = 0x9;
+ unk->bgTilemap = (u16 *)gUnknown_02023060;
+ unk->paletteId = 9;
unk->bgId = 2;
unk->tilesOffset = 0x300;
- unk->unkC = 0;
+ unk->unused = 0;
}
}
-void sub_80A6BFC(struct UnknownAnimStruct2 *unk, u8 unused)
+void sub_80A6BFC(struct BattleAnimBgData *unk, u8 unused)
{
unk->bgTiles = gUnknown_0202305C;
- unk->unk4 = (u16 *)gUnknown_02023060;
+ unk->bgTilemap = (u16 *)gUnknown_02023060;
if (IsContest())
{
- unk->unk8 = 0xe;
+ unk->paletteId = 14;
unk->bgId = 1;
unk->tilesOffset = 0;
- unk->unkC = 0;
+ unk->unused = 0;
}
else if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
{
- unk->unk8 = 8;
+ unk->paletteId = 8;
unk->bgId = 1;
unk->tilesOffset = 0x200;
- unk->unkC = 0;
+ unk->unused = 0;
}
else
{
- unk->unk8 = 0x9;
+ unk->paletteId = 9;
unk->bgId = 2;
unk->tilesOffset = 0x300;
- unk->unkC = 0;
+ unk->unused = 0;
}
}
void sub_80A6C68(u32 bgId)
{
- struct UnknownAnimStruct2 unkStruct;
+ struct BattleAnimBgData unkStruct;
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);
+ FillBgTilemapBufferRect(unkStruct.bgId, 0, 0, 0, 32, 64, 17);
CopyBgTilemapBufferToVram(unkStruct.bgId);
}
-void sub_80A6CC0(u32 bgId, const u32 *src, u32 tilesOffset)
+void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset)
{
CpuFill32(0, gUnknown_0202305C, 0x2000);
LZDecompressWram(src, gUnknown_0202305C);
LoadBgTiles(bgId, gUnknown_0202305C, 0x2000, tilesOffset);
}
-void sub_80A6D10(u32 bgId, const void *src)
+static void InitAnimBgTilemapBuffer(u32 bgId, const void *src)
{
- FillBgTilemapBufferRect(bgId, 0, 0, 0, 0x20, 0x40, 0x11);
+ FillBgTilemapBufferRect(bgId, 0, 0, 0, 32, 64, 17);
CopyToBgTilemapBuffer(bgId, src, 0, 0);
}
-void sub_80A6D48(u32 bgId, const void *src)
+void AnimLoadCompressedBgTilemap(u32 bgId, const void *src)
{
- sub_80A6D10(bgId, src);
+ InitAnimBgTilemapBuffer(bgId, src);
CopyBgTilemapBufferToVram(bgId);
}
-void sub_80A6D60(struct UnknownAnimStruct2 *unk, const void *src, u32 arg2)
+void sub_80A6D60(struct BattleAnimBgData *unk, const void *src, u32 arg2)
{
- sub_80A6D10(unk->bgId, src);
+ InitAnimBgTilemapBuffer(unk->bgId, src);
if (IsContest() == TRUE)
- sub_80A4720(unk->unk8, unk->unk4, 0, arg2);
+ sub_80A4720(unk->paletteId, unk->bgTilemap, 0, arg2);
CopyBgTilemapBufferToVram(unk->bgId);
}
@@ -1002,7 +998,7 @@ void sub_80A6DEC(struct Sprite *sprite)
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
InitSpriteDataForLinearTranslation(sprite);
- sprite->callback = sub_80A65A8;
+ sprite->callback = TranslateSpriteLinearFixedPointIconFrame;
sprite->callback(sprite);
}
@@ -1098,7 +1094,7 @@ void sub_80A6F98(struct Sprite *sprite)
SetCallbackToStoredInData6(sprite);
}
-void sub_80A6FB4(struct Sprite *sprite)
+static void sub_80A6FB4(struct Sprite *sprite)
{
sub_8039E9C(sprite);
if (AnimTranslateLinear(sprite))
@@ -1188,7 +1184,7 @@ bool8 AnimFastTranslateLinear(struct Sprite *sprite)
return FALSE;
}
-void sub_80A7144(struct Sprite *sprite)
+static void sub_80A7144(struct Sprite *sprite)
{
if (AnimFastTranslateLinear(sprite))
SetCallbackToStoredInData6(sprite);
@@ -1229,7 +1225,7 @@ void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation)
gOamMatrices[i].d = matrix.d;
}
-bool8 sub_80A7238(void)
+static bool8 sub_80A7238(void)
{
if (IsContest())
{
@@ -1352,56 +1348,57 @@ void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor)
}
}
-u32 sub_80A75AC(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7)
+u32 sub_80A75AC(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7)
{
- u32 var = 0;
+ u32 selectedPalettes = 0;
u32 shift;
- if (a1)
+ if (battleBackground)
{
if (!IsContest())
- var = 0xe;
+ selectedPalettes = 0xe;
else
- var = 1 << sub_80A6D94();
+ selectedPalettes = 1 << sub_80A6D94();
}
- if (a2)
+ if (attacker)
{
shift = gBattleAnimAttacker + 16;
- var |= 1 << shift;
+ selectedPalettes |= 1 << shift;
}
- if (a3) {
+ if (target)
+ {
shift = gBattleAnimTarget + 16;
- var |= 1 << shift;
+ selectedPalettes |= 1 << shift;
}
- if (a4)
+ if (attackerPartner)
{
- if (IsBattlerSpriteVisible(gBattleAnimAttacker ^ 2))
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
{
- shift = (gBattleAnimAttacker ^ 2) + 16;
- var |= 1 << shift;
+ shift = BATTLE_PARTNER(gBattleAnimAttacker) + 16;
+ selectedPalettes |= 1 << shift;
}
}
- if (a5)
+ if (targetPartner)
{
- if (IsBattlerSpriteVisible(gBattleAnimTarget ^ 2))
+ if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget)))
{
- shift = (gBattleAnimTarget ^ 2) + 16;
- var |= 1 << shift;
+ shift = BATTLE_PARTNER(gBattleAnimTarget) + 16;
+ selectedPalettes |= 1 << shift;
}
}
if (a6)
{
if (!IsContest())
- var |= 0x100;
+ selectedPalettes |= 0x100;
else
- var |= 0x4000;
+ selectedPalettes |= 0x4000;
}
if (a7)
{
if (!IsContest())
- var |= 0x200;
+ selectedPalettes |= 0x200;
}
- return var;
+ return selectedPalettes;
}
u32 sub_80A76C4(u8 a1, u8 a2, u8 a3, u8 a4)
@@ -1459,7 +1456,7 @@ u8 sub_80A77AC(u8 a1)
return a1;
}
-u8 sub_80A77B4(u8 position)
+static u8 GetBattlerAtPosition_(u8 position)
{
return GetBattlerAtPosition(position);
}
@@ -1527,33 +1524,33 @@ void sub_80A78AC(struct Sprite *sprite)
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[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
InitAnimArcTranslation(sprite);
sprite->callback = sub_80A791C;
}
-void sub_80A791C(struct Sprite *sprite)
+static void sub_80A791C(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
DestroyAnimSprite(sprite);
}
void sub_80A7938(struct Sprite *sprite)
{
bool8 r4;
- u8 battlerId, attributeId;
+ u8 battlerId, coordType;
if (!gBattleAnimArgs[6])
{
r4 = TRUE;
- attributeId = BATTLER_COORD_Y_PIC_OFFSET;
+ coordType = BATTLER_COORD_Y_PIC_OFFSET;
}
else
{
r4 = FALSE;
- attributeId = BATTLER_COORD_Y;
+ coordType = BATTLER_COORD_Y;
}
if (!gBattleAnimArgs[5])
{
@@ -1570,7 +1567,7 @@ void sub_80A7938(struct Sprite *sprite)
InitSpritePosToAnimTarget(sprite, r4);
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->data[4] = GetBattlerSpriteCoord(battlerId, coordType) + gBattleAnimArgs[3];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -1629,7 +1626,7 @@ void sub_80A7A74(u8 taskId)
gTasks[taskId].func = sub_80A7AFC;
}
-void sub_80A7AFC(u8 taskId)
+static void sub_80A7AFC(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -1674,7 +1671,7 @@ void AnimTask_BlendMonInAndOut(u8 task)
AnimTask_BlendMonInAndOutSetup(&gTasks[task]);
}
-void AnimTask_BlendMonInAndOutSetup(struct Task *task)
+static void AnimTask_BlendMonInAndOutSetup(struct Task *task)
{
task->data[1] = gBattleAnimArgs[1];
task->data[2] = 0;
@@ -1686,7 +1683,7 @@ void AnimTask_BlendMonInAndOutSetup(struct Task *task)
task->func = AnimTask_BlendMonInAndOutStep;
}
-void AnimTask_BlendMonInAndOutStep(u8 taskId)
+static void AnimTask_BlendMonInAndOutStep(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -1844,7 +1841,7 @@ void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId)
gSprites[spriteId].pos2.y = (var - var2) / 2;
}
-u16 GetBattlerYDeltaFromSpriteId(u8 spriteId)
+static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId)
{
struct BattleSpriteInfo *spriteInfo;
u8 battlerId = gSprites[spriteId].data[0];
@@ -2300,7 +2297,7 @@ void sub_80A8A6C(struct Sprite *sprite)
sprite->data[3] = gBattleAnimArgs[4];
sprite->data[5] = gBattleAnimArgs[5];
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
- sprite->callback = sub_80A66DC;
+ sprite->callback = TranslateSpriteLinearAndFlicker;
}
void sub_80A8AEC(struct Sprite *sprite)
@@ -2321,7 +2318,7 @@ void sub_80A8AEC(struct Sprite *sprite)
sprite->data[5] = gBattleAnimArgs[5];
StartSpriteAnim(sprite, gBattleAnimArgs[6]);
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
- sprite->callback = sub_80A66DC;
+ sprite->callback = TranslateSpriteLinearAndFlicker;
}
void sub_80A8B64(struct Sprite *sprite)
@@ -2362,7 +2359,7 @@ void sub_80A8BC4(u8 taskId)
task->func = sub_80A8CAC;
}
-void sub_80A8CAC(u8 taskId)
+static void sub_80A8CAC(u8 taskId)
{
struct Task *task = &gTasks[taskId];
switch (task->data[2])
@@ -2395,7 +2392,7 @@ void sub_80A8CAC(u8 taskId)
}
}
-void sub_80A8D78(struct Task *task, u8 taskId)
+static void sub_80A8D78(struct Task *task, u8 taskId)
{
s16 spriteId = CloneBattlerSpriteWithBlend(0);
if (spriteId >= 0)
@@ -2411,7 +2408,7 @@ void sub_80A8D78(struct Task *task, u8 taskId)
}
}
-void sub_80A8DFC(struct Sprite *sprite)
+static void sub_80A8DFC(struct Sprite *sprite)
{
if (--sprite->data[0] == 0)
{
@@ -2432,7 +2429,7 @@ void sub_80A8E30(struct Sprite *sprite)
sprite->callback = sub_80A8E88;
}
-void sub_80A8E88(struct Sprite *sprite)
+static void sub_80A8E88(struct Sprite *sprite)
{
sprite->data[2] += sprite->data[0];
sprite->data[3] += sprite->data[1];
diff --git a/src/battle_anim_80A9C70.c b/src/battle_anim_80A9C70.c
index 001f99d7f..1271680e0 100644
--- a/src/battle_anim_80A9C70.c
+++ b/src/battle_anim_80A9C70.c
@@ -28,6 +28,182 @@ static void sub_80A9E44(struct Sprite *sprite);
static void sub_80A9E78(struct Sprite *sprite);
// const rom data
+static const union AnimCmd sSpriteAnim_853EDE4[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(4, 3),
+ ANIMCMD_FRAME(8, 3),
+ ANIMCMD_FRAME(12, 3),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpriteAnimTable_853EDF8[] =
+{
+ sSpriteAnim_853EDE4
+};
+
+const struct SpriteTemplate gUnknown_0853EDFC =
+{
+ .tileTag = ANIM_TAG_UNUSED_ORB,
+ .paletteTag = ANIM_TAG_UNUSED_ORB,
+ .oam = &gUnknown_0852490C,
+ .anims = sSpriteAnimTable_853EDF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8AEC,
+};
+
+const struct SpriteTemplate gUnknown_0853EE14 =
+{
+ .tileTag = ANIM_TAG_UNUSED_ORB,
+ .paletteTag = ANIM_TAG_UNUSED_ORB,
+ .oam = &gUnknown_0852490C,
+ .anims = sSpriteAnimTable_853EDF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8A6C,
+};
+
+static const union AnimCmd sSpriteAnim_853EE2C[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpriteAnimTable_853EE34[] =
+{
+ sSpriteAnim_853EE2C
+};
+
+const struct SpriteTemplate gUnknown_0853EE38 =
+{
+ .tileTag = ANIM_TAG_WEATHER_BALL,
+ .paletteTag = ANIM_TAG_WEATHER_BALL,
+ .oam = &gUnknown_08524914,
+ .anims = sSpriteAnimTable_853EE34,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8E30,
+};
+
+const struct SpriteTemplate gUnknown_0853EE50 =
+{
+ .tileTag = ANIM_TAG_WEATHER_BALL,
+ .paletteTag = ANIM_TAG_WEATHER_BALL,
+ .oam = &gUnknown_08524914,
+ .anims = sSpriteAnimTable_853EE34,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8EE4,
+};
+
+static const union AnimCmd sSpriteAnim_853EE68[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_853EE80[] =
+{
+ sSpriteAnim_853EE68
+};
+
+const struct SpriteTemplate gUnknown_0853EE84 =
+{
+ .tileTag = ANIM_TAG_SPARKLE_4,
+ .paletteTag = ANIM_TAG_SPARKLE_4,
+ .oam = &gUnknown_08524914,
+ .anims = sSpriteAnimTable_853EE80,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8B64,
+};
+
+const struct SpriteTemplate gUnknown_0853EE9C =
+{
+ .tileTag = ANIM_TAG_UNUSED_MONSTER_FOOT,
+ .paletteTag = ANIM_TAG_UNUSED_MONSTER_FOOT,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8AEC,
+};
+
+static const union AnimCmd sSpriteAnim_853EEB4[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_853EEBC[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sSpriteAnim_853EEC4[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpriteAnimTable_853EECC[] =
+{
+ sSpriteAnim_853EEB4,
+ sSpriteAnim_853EEBC,
+ sSpriteAnim_853EEC4
+};
+
+const struct SpriteTemplate gUnknown_0853EED8 =
+{
+ .tileTag = ANIM_TAG_IMPACT,
+ .paletteTag = ANIM_TAG_IMPACT,
+ .oam = &gUnknown_08524914,
+ .anims = sSpriteAnimTable_853EECC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8AEC,
+};
+
+static const union AnimCmd sSpriteAnim_853EEF0[] =
+{
+ ANIMCMD_FRAME(0, 15),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSpriteAnimTable_853EEF8[] =
+{
+ sSpriteAnim_853EEF0
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_853EEFC[] =
+{
+ AFFINEANIMCMD_FRAME(96, 96, 0, 0),
+ AFFINEANIMCMD_FRAME(2, 2, 0, 1),
+ AFFINEANIMCMD_JUMP(1)
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_853EEF8[] =
+{
+ sSpriteAffineAnim_853EEFC
+};
+
+const struct SpriteTemplate gUnknown_0853EF18 =
+{
+ .tileTag = ANIM_TAG_UNUSED_ORB,
+ .paletteTag = ANIM_TAG_UNUSED_ORB,
+ .oam = &gUnknown_085249CC,
+ .anims = sSpriteAnimTable_853EEF8,
+ .images = NULL,
+ .affineAnims = sSpriteAffineAnimTable_853EEF8,
+ .callback = sub_80A8A6C,
+};
+
static const struct Subsprite gUnknown_0853EF30[] =
{
{.x = -16, .y = -16, .shape = ST_OAM_SQUARE, .size = 3, .tileOffset = 0, .priority = 2},
diff --git a/src/battle_anim_80D51AC.c b/src/battle_anim_80D51AC.c
index 34eee7376..250a0459f 100644
--- a/src/battle_anim_80D51AC.c
+++ b/src/battle_anim_80D51AC.c
@@ -441,14 +441,14 @@ static void DoHorizontalLunge(struct Sprite *sprite)
sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
sprite->data[4] = gBattleAnimArgs[0];
StoreSpriteCallbackInData6(sprite, ReverseHorizontalLungeDirection);
- sprite->callback = TranslateMonBGUntil;
+ sprite->callback = TranslateMonSpriteLinear;
}
static void ReverseHorizontalLungeDirection(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[4];
sprite->data[1] = -sprite->data[1];
- sprite->callback = TranslateMonBGUntil;
+ sprite->callback = TranslateMonSpriteLinear;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -468,14 +468,14 @@ static void DoVerticalDip(struct Sprite *sprite)
sprite->data[3] = spriteId;
sprite->data[4] = gBattleAnimArgs[0];
StoreSpriteCallbackInData6(sprite, ReverseVerticalDipDirection);
- sprite->callback = TranslateMonBGUntil;
+ sprite->callback = TranslateMonSpriteLinear;
}
static void ReverseVerticalDipDirection(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[4];
sprite->data[2] = -sprite->data[2];
- sprite->callback = TranslateMonBGUntil;
+ sprite->callback = TranslateMonSpriteLinear;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -581,7 +581,7 @@ static void SlideMonToOffset(struct Sprite *sprite)
sprite->data[5] = monSpriteId;
sprite->invisible = TRUE;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
- sprite->callback = sub_80A6680;
+ sprite->callback = TranslateMonSpriteLinearFixedPoint;
}
static void sub_80D5B48(struct Sprite *sprite)
@@ -624,7 +624,7 @@ static void sub_80D5B48(struct Sprite *sprite)
{
StoreSpriteCallbackInData6(sprite, sub_80D5C20);
}
- sprite->callback = sub_80A6680;
+ sprite->callback = TranslateMonSpriteLinearFixedPoint;
}
diff --git a/src/battle_anim_8170478.c b/src/battle_anim_8170478.c
index 7d899fb09..92874fe09 100755
--- a/src/battle_anim_8170478.c
+++ b/src/battle_anim_8170478.c
@@ -392,7 +392,7 @@ extern const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate;
void unref_sub_8170478(u8 taskId)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData unknownStruct;
u8 healthBoxSpriteId;
u8 battler;
u8 spriteId1, spriteId2, spriteId3, spriteId4;
@@ -426,9 +426,9 @@ void unref_sub_8170478(u8 taskId)
gSprites[spriteId4].callback = SpriteCallbackDummy;
sub_80A6B30(&unknownStruct);
- sub_80A6D48(unknownStruct.bgId, gUnknown_08C2EA9C);
- sub_80A6CC0(unknownStruct.bgId, gUnknown_08C2EA50, unknownStruct.tilesOffset);
- LoadCompressedPalette(gCureBubblesPal, unknownStruct.unk8 << 4, 32);
+ AnimLoadCompressedBgTilemap(unknownStruct.bgId, gUnknown_08C2EA9C);
+ AnimLoadCompressedBgGfx(unknownStruct.bgId, gUnknown_08C2EA50, unknownStruct.tilesOffset);
+ LoadCompressedPalette(gCureBubblesPal, unknownStruct.paletteId << 4, 32);
gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32;
gBattle_BG1_Y = -gSprites[spriteId3].pos1.y - 32;
@@ -806,7 +806,7 @@ static void sub_8171134(struct Sprite *sprite)
u8 ballId;
int ballId2; // extra var needed to match
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK)
{
@@ -1276,7 +1276,7 @@ static void sub_81719EC(struct Sprite *sprite)
static void sub_8171AAC(struct Sprite *sprite)
{
sprite->invisible = !sprite->invisible;
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
DestroySprite(sprite);
}
@@ -2206,7 +2206,7 @@ static void sub_817339C(struct Sprite *sprite)
static void sub_81733D4(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
sprite->data[0] = 0;
sprite->invisible = 1;
diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c
index 25eb14637..f14e502f3 100644
--- a/src/battle_anim_effects_1.c
+++ b/src/battle_anim_effects_1.c
@@ -2326,7 +2326,7 @@ void AnimAbsorptionOrb(struct Sprite* sprite)
static void AnimAbsorptionOrbStep(struct Sprite* sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
DestroyAnimSprite(sprite);
}
@@ -2401,7 +2401,7 @@ void AnimLeechSeed(struct Sprite* sprite)
static void AnimLeechSeedStep(struct Sprite* sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
sprite->invisible = 1;
sprite->data[0] = 10;
@@ -2662,7 +2662,7 @@ static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite)
s16 r0;
sprite->data[0] = 1;
- TranslateAnimArc(sprite);
+ TranslateAnimHorizontalArc(sprite);
r0 = sprite->data[7];
sprite->data[0] = a;
if (b > 200 && r0 < 56 && sprite->oam.affineParam == 0)
@@ -3325,7 +3325,7 @@ static void sub_8100128(u8 taskId)
{
case 4:
sub_8100524(task, taskId);
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
task->data[15] = 5;
task->data[0] = 0xFF;
@@ -3333,7 +3333,7 @@ static void sub_8100128(u8 taskId)
break;
case 8:
sub_8100524(task, taskId);
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
task->data[15] = 9;
task->data[0] = 0xFF;
@@ -3341,7 +3341,7 @@ static void sub_8100128(u8 taskId)
break;
case 0:
sub_8100524(task, taskId);
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
task->data[15] = 1;
task->data[0] = 0xFF;
@@ -3367,7 +3367,7 @@ static void sub_8100128(u8 taskId)
break;
case 2:
sub_8100524(task, taskId);
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
task->data[15] = 3;
task->data[0] = 0xFF;
@@ -3410,7 +3410,7 @@ static void sub_8100128(u8 taskId)
break;
case 6:
sub_8100524(task, taskId);
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
task->data[15] = 7;
task->data[0] = 0xFF;
@@ -3453,7 +3453,7 @@ static void sub_8100128(u8 taskId)
break;
case 10:
sub_8100524(task, taskId);
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
task->data[15] = 11;
task->data[0] = 0xFF;
@@ -3481,7 +3481,7 @@ static void sub_8100128(u8 taskId)
}
case 12:
sub_8100524(task, taskId);
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
DestroySprite(sprite);
task->data[0]++;
@@ -3766,7 +3766,7 @@ void sub_8100A94(struct Sprite* sprite)
sprite->data[5] = gBattleAnimArgs[5];
StartSpriteAffineAnim(sprite, gBattleAnimArgs[6]);
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
- sprite->callback = sub_80A66DC;
+ sprite->callback = TranslateSpriteLinearAndFlicker;
}
// Moves the sprite in a diagonally slashing motion across the target mon.
@@ -3995,7 +3995,7 @@ static void sub_8100FD4(struct Sprite *sprite)
if (sprite->data[7] == 16)
{
sprite->invisible = 1;
- sprite->callback = sub_80A67F4;
+ sprite->callback = DestroyAnimSpriteAndDisableBlend;
}
}
}
@@ -4121,7 +4121,7 @@ void sub_810130C(struct Sprite* sprite)
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = gBattleAnimArgs[4];
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
- sprite->callback = AnimTranslateLinearSimple;
+ sprite->callback = TranslateSpriteLinearFixedPoint;
}
void sub_810135C(struct Sprite* sprite)
@@ -4158,7 +4158,7 @@ void sub_810135C(struct Sprite* sprite)
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = gBattleAnimArgs[4];
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
- sprite->callback = AnimTranslateLinearSimple;
+ sprite->callback = TranslateSpriteLinearFixedPoint;
}
void sub_8101440(struct Sprite* sprite)
@@ -4428,7 +4428,7 @@ static void sub_8101998(struct Sprite* sprite)
sprite->data[2] = 0;
sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
StoreSpriteCallbackInData6(sprite, sub_81019E8);
- sprite->callback = TranslateMonBGUntil;
+ sprite->callback = TranslateMonSpriteLinear;
}
static void sub_81019E8(struct Sprite* sprite)
@@ -4458,7 +4458,7 @@ static void sub_8101A74(struct Sprite* sprite)
sprite->data[2] = 0;
sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker];
StoreSpriteCallbackInData6(sprite, sub_8101B84);
- sprite->callback = TranslateMonBGUntil;
+ sprite->callback = TranslateMonSpriteLinear;
}
static void sub_8101AC4(struct Sprite* sprite)
@@ -4737,7 +4737,7 @@ static void sub_8102044(struct Sprite* sprite)
sprite->data[1] = 8;
sprite->data[2] = 0;
StoreSpriteCallbackInData6(sprite, sub_810207C);
- sprite->callback = TranslateSpriteOverDuration;
+ sprite->callback = TranslateSpriteLinear;
}
}
diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c
index 8306ada1c..80b3258b4 100755
--- a/src/battle_anim_effects_2.c
+++ b/src/battle_anim_effects_2.c
@@ -16,9 +16,6 @@
#include "constants/rgb.h"
#include "constants/songs.h"
-extern void sub_8108C94(struct Sprite *);
-extern void sub_810310C(u8, struct Sprite *);
-
void sub_8103448(struct Sprite *);
void sub_8103498(struct Sprite *);
void sub_810358C(struct Sprite *);
@@ -1264,7 +1261,7 @@ void sub_8103448(struct Sprite *sprite)
sprite->data[3] = gBattleAnimArgs[5];
sprite->data[4] = gBattleAnimArgs[3];
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
- sprite->callback = sub_80A6450;
+ sprite->callback = TranslateSpriteInEllipseOverDuration;
sprite->callback(sprite);
}
@@ -1417,7 +1414,7 @@ static void AnimTask_WithdrawStep(u8 taskId)
}
}
-// Animates a "zap of energy" used in KINESIS.
+// Animates a "zap of energy" used in KINESIS.
// arg 0: x pixel offset
// arg 1: y pixel offset
// arg 2: vertical flip
@@ -1592,7 +1589,7 @@ void sub_8103AA4(struct Sprite *sprite)
sprite->data[3] = sub_8151534(sub_8151534(b, a), sub_8151624(0x1C0));
sprite->data[4] = sub_8151534(sub_8151534(c, a), sub_8151624(0x1C0));
sprite->callback = sub_8103A00;
- }
+ }
}
static void sub_8103BE4(u8 taskId)
@@ -2318,7 +2315,7 @@ void Anim_BreathPuff(struct Sprite *sprite)
sprite->data[3] = 0;
sprite->data[4] = 0;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
- sprite->callback = AnimTranslateLinearSimple;
+ sprite->callback = TranslateSpriteLinearFixedPoint;
}
// Animates an "angry" mark above a mon's head.
@@ -3291,7 +3288,7 @@ static void sub_810627C(struct Sprite *sprite)
void sub_81062E8(u8 taskId)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
@@ -3304,16 +3301,16 @@ void sub_81062E8(u8 taskId)
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_08C232E0, unknownStruct.tilesOffset);
- sub_80A6D60(&unknownStruct, &gUnknown_08C23D78, 0);
- LoadCompressedPalette(&gUnknown_08C23D50, unknownStruct.unk8 << 4, 32);
+ sub_80A6B30(&animBg);
+ AnimLoadCompressedBgGfx(animBg.bgId, &gUnknown_08C232E0, animBg.tilesOffset);
+ sub_80A6D60(&animBg, &gUnknown_08C23D78, 0);
+ LoadCompressedPalette(&gUnknown_08C23D50, animBg.paletteId * 16, 32);
gTasks[taskId].func = sub_81063A8;
}
static void sub_81063A8(u8 taskId)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
switch (gTasks[taskId].data[12])
{
@@ -3351,8 +3348,8 @@ static void sub_81063A8(u8 taskId)
}
break;
case 3:
- sub_80A6B30(&unknownStruct);
- sub_80A6C68(unknownStruct.bgId);
+ sub_80A6B30(&animBg);
+ sub_80A6C68(animBg.bgId);
gTasks[taskId].data[12]++;
break;
case 4:
@@ -3369,7 +3366,7 @@ static void sub_81063A8(u8 taskId)
void sub_81064F8(u8 taskId)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
@@ -3382,22 +3379,22 @@ void sub_81064F8(u8 taskId)
gBattle_BG1_Y = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
- sub_80A6B30(&unknownStruct);
+ sub_80A6B30(&animBg);
if (IsContest())
- sub_80A6D60(&unknownStruct, &gBattleAnimBackgroundTilemap_ScaryFaceContest, 0);
+ sub_80A6D60(&animBg, &gBattleAnimBackgroundTilemap_ScaryFaceContest, 0);
else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
- sub_80A6D60(&unknownStruct, &gBattleAnimBackgroundTilemap_ScaryFacePlayer, 0);
+ sub_80A6D60(&animBg, &gBattleAnimBackgroundTilemap_ScaryFacePlayer, 0);
else
- sub_80A6D60(&unknownStruct, &gBattleAnimBackgroundTilemap_ScaryFaceOpponent, 0);
+ sub_80A6D60(&animBg, &gBattleAnimBackgroundTilemap_ScaryFaceOpponent, 0);
- sub_80A6CC0(unknownStruct.bgId, gUnknown_08C249F8, unknownStruct.tilesOffset);
- LoadCompressedPalette(gUnknown_08C249D0, unknownStruct.unk8 << 4, 32);
+ AnimLoadCompressedBgGfx(animBg.bgId, gUnknown_08C249F8, animBg.tilesOffset);
+ LoadCompressedPalette(gUnknown_08C249D0, animBg.paletteId * 16, 32);
gTasks[taskId].func = sub_81065EC;
}
static void sub_81065EC(u8 taskId)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
switch (gTasks[taskId].data[12])
{
@@ -3435,7 +3432,7 @@ static void sub_81065EC(u8 taskId)
}
break;
case 3:
- sub_80A6B30(&unknownStruct);
+ sub_80A6B30(&animBg);
sub_80A6C68(1);
sub_80A6C68(2);
gTasks[taskId].data[12]++;
@@ -3470,7 +3467,7 @@ void AnimOrbitFast(struct Sprite *sprite)
static void AnimOrbitFastStep(struct Sprite *sprite)
{
- if ((u16)(sprite->data[1] - 64) < 128)
+ if (sprite->data[1] >= 64 && sprite->data[1] <= 191)
sprite->subpriority = sprite->data[7] + 1;
else
sprite->subpriority = sprite->data[7] - 1;
@@ -3804,7 +3801,7 @@ void sub_8106F60(struct Sprite *sprite)
sprite->callback = sub_8107018;
sprite->data[0] = 0;
- oamt_add_pos2_onto_pos1(sprite);
+ SetSpritePrimaryCoordsFromSecondaryCoords(sprite);
sprite->data[2] = 5;
sprite->data[4] = 0;
sprite->data[3] = 0;
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index a8b7d6d6a..efa2620fd 100755
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -24,9 +24,6 @@
#include "constants/species.h"
#include "constants/weather.h"
-extern u8 sub_807521C(s16 x, s16 y, u8 a3);
-extern void sub_810E2C8(struct Sprite *);
-
extern const struct SpriteTemplate gUnknown_08593114;
extern const union AffineAnimCmd *const gUnknown_082FF6C0[];
extern const union AffineAnimCmd *const gUnknown_082FF694[];
@@ -1453,7 +1450,7 @@ void sub_815A6C4(struct Sprite *sprite)
static void sub_815A73C(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
sprite->data[0] = 30;
sprite->data[1] = 0;
@@ -2257,10 +2254,10 @@ void sub_815B7D0(u8 taskId)
{
int i, j;
u8 position;
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
u8 *dest;
u8 *src;
- u16 *unk4;
+ u16 *bgTilemap;
u16 stretch;
switch (gTasks[taskId].data[0])
@@ -2288,7 +2285,7 @@ void sub_815B7D0(u8 taskId)
break;
case 2:
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10]);
- sub_80A6BFC(&unknownStruct, gBattleAnimAttacker);
+ sub_80A6BFC(&animBg, gBattleAnimAttacker);
if (IsContest())
position = 0;
@@ -2296,21 +2293,21 @@ void sub_815B7D0(u8 taskId)
position = GetBattlerPosition(gBattleAnimAttacker);
src = gMonSpritesGfxPtr->sprites[position] + (gBattleMonForms[gBattleAnimAttacker] << 11);
- dest = unknownStruct.bgTiles;
+ dest = animBg.bgTiles;
CpuCopy32(src, dest, 0x800);
- LoadBgTiles(1, unknownStruct.bgTiles, 0x800, unknownStruct.tilesOffset);
+ LoadBgTiles(1, animBg.bgTiles, 0x800, animBg.tilesOffset);
if (IsContest())
{
if (IsSpeciesNotUnown(gContestResources->field_18->species) != IsSpeciesNotUnown(gContestResources->field_18->unk2))
{
- unk4 = (u16 *)unknownStruct.unk4;
+ bgTilemap = (u16 *)animBg.bgTilemap;
for (i = 0; i < 8; i++)
{
for (j = 0; j < 4; j++)
{
- u16 temp = unk4[j + i * 0x20];
- unk4[j + i * 0x20] = unk4[(7 - j) + i * 0x20];
- unk4[(7 - j) + i * 0x20] = temp;
+ u16 temp = bgTilemap[j + i * 0x20];
+ bgTilemap[j + i * 0x20] = bgTilemap[(7 - j) + i * 0x20];
+ bgTilemap[(7 - j) + i * 0x20] = temp;
}
}
@@ -2318,7 +2315,7 @@ void sub_815B7D0(u8 taskId)
{
for (j = 0; j < 8; j++)
{
- unk4[j + i * 0x20] ^= 0x400;
+ bgTilemap[j + i * 0x20] ^= 0x400;
}
}
}
@@ -2380,7 +2377,7 @@ void sub_815BB58(u8 taskId)
void sub_815BB84(u8 taskId)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
switch (gTasks[taskId].data[0])
{
@@ -2392,8 +2389,8 @@ void sub_815BB84(u8 taskId)
if (!IsContest())
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
- sub_80A6B30(&unknownStruct);
- sub_80A6D60(&unknownStruct, &gUnknown_08C2A6EC, 0);
+ sub_80A6B30(&animBg);
+ sub_80A6D60(&animBg, &gUnknown_08C2A6EC, 0);
if (IsContest())
{
gBattle_BG1_X = -56;
@@ -2409,8 +2406,8 @@ void sub_815BB84(u8 taskId)
gBattle_BG1_Y = 0;
}
- sub_80A6CC0(unknownStruct.bgId, gUnknown_08C2A634, unknownStruct.tilesOffset);
- LoadCompressedPalette(gUnknown_08C2A6D4, unknownStruct.unk8 << 4, 32);
+ AnimLoadCompressedBgGfx(animBg.bgId, gUnknown_08C2A634, animBg.tilesOffset);
+ LoadCompressedPalette(gUnknown_08C2A6D4, animBg.paletteId * 16, 32);
gTasks[taskId].data[10] = gBattle_BG1_X;
gTasks[taskId].data[11] = gBattle_BG1_Y;
@@ -2455,8 +2452,8 @@ void sub_815BB84(u8 taskId)
}
break;
case 4:
- sub_80A6B30(&unknownStruct);
- sub_80A6C68(unknownStruct.bgId);
+ sub_80A6B30(&animBg);
+ sub_80A6C68(animBg.bgId);
if (!IsContest())
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
@@ -2571,7 +2568,7 @@ static void sub_815C050(struct Sprite *sprite)
void sub_815C0A4(u8 taskId)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
switch (gTasks[taskId].data[0])
{
@@ -2583,8 +2580,8 @@ void sub_815C0A4(u8 taskId)
if (!IsContest())
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
- sub_80A6B30(&unknownStruct);
- sub_80A6D60(&unknownStruct, &gUnknown_08C2A6EC, 0);
+ sub_80A6B30(&animBg);
+ sub_80A6D60(&animBg, &gUnknown_08C2A6EC, 0);
if (IsContest())
{
gBattle_BG1_X = -56;
@@ -2615,8 +2612,8 @@ void sub_815C0A4(u8 taskId)
gBattle_BG1_Y = 0;
}
- sub_80A6CC0(unknownStruct.bgId, gUnknown_08C2A634, unknownStruct.tilesOffset);
- LoadCompressedPalette(gUnknown_08C2A6D4, unknownStruct.unk8 << 4, 32);
+ AnimLoadCompressedBgGfx(animBg.bgId, gUnknown_08C2A634, animBg.tilesOffset);
+ LoadCompressedPalette(gUnknown_08C2A6D4, animBg.paletteId * 16, 32);
gTasks[taskId].data[10] = gBattle_BG1_X;
gTasks[taskId].data[11] = gBattle_BG1_Y;
gTasks[taskId].data[0]++;
@@ -2654,8 +2651,8 @@ void sub_815C0A4(u8 taskId)
gTasks[taskId].data[0] = 1;
break;
case 5:
- sub_80A6B30(&unknownStruct);
- sub_80A6C68(unknownStruct.bgId);
+ sub_80A6B30(&animBg);
+ sub_80A6C68(animBg.bgId);
if (!IsContest())
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 0);
@@ -4130,13 +4127,13 @@ static void AnimTask_BarrageBallStep(u8 taskId)
if (++task->data[1] > 1)
{
task->data[1] = 0;
- TranslateAnimArc(&gSprites[task->data[15]]);
+ TranslateAnimHorizontalArc(&gSprites[task->data[15]]);
if (++task->data[2] > 7)
task->data[0]++;
}
break;
case 1:
- if (TranslateAnimArc(&gSprites[task->data[15]]))
+ if (TranslateAnimHorizontalArc(&gSprites[task->data[15]]))
{
task->data[1] = 0;
task->data[2] = 0;
diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c
index ba7cbd3aa..efe35e1b4 100644
--- a/src/battle_anim_utility_funcs.c
+++ b/src/battle_anim_utility_funcs.c
@@ -276,7 +276,7 @@ void sub_8116B14(u8 taskId)
int spriteId, newSpriteId;
u16 var0;
u16 bg1Cnt;
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData unknownStruct;
var0 = 0;
gBattle_WIN0H = 0;
@@ -330,8 +330,8 @@ void sub_8116B14(u8 taskId)
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);
+ AnimLoadCompressedBgGfx(unknownStruct.bgId, gUnknown_08C20668, unknownStruct.tilesOffset);
+ LoadPalette(&gUnknown_08597418, unknownStruct.paletteId * 16 + 1, 2);
gBattle_BG1_X = -gSprites[spriteId].pos1.x + 32;
gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
@@ -342,7 +342,7 @@ void sub_8116B14(u8 taskId)
static void sub_8116D64(u8 taskId)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData unknownStruct;
struct Sprite *sprite;
u16 bg1Cnt;
@@ -453,7 +453,7 @@ static void sub_8116F04(u8 taskId)
static void sub_81170EC(u8 taskId)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData unknownStruct;
u8 spriteId, spriteId2;
u8 battlerSpriteId;
@@ -472,32 +472,32 @@ static void sub_81170EC(u8 taskId)
else
sub_80A6D60(&unknownStruct, gBattleStatMask2_Tilemap, 0);
- sub_80A6CC0(unknownStruct.bgId, gBattleStatMask_Gfx, unknownStruct.tilesOffset);
+ AnimLoadCompressedBgGfx(unknownStruct.bgId, gBattleStatMask_Gfx, unknownStruct.tilesOffset);
switch (sAnimStatsChangeData->data[1])
{
case 0:
- LoadCompressedPalette(gBattleStatMask2_Pal, unknownStruct.unk8 << 4, 32);
+ LoadCompressedPalette(gBattleStatMask2_Pal, unknownStruct.paletteId * 16, 32);
break;
case 1:
- LoadCompressedPalette(gBattleStatMask1_Pal, unknownStruct.unk8 << 4, 32);
+ LoadCompressedPalette(gBattleStatMask1_Pal, unknownStruct.paletteId * 16, 32);
break;
case 2:
- LoadCompressedPalette(gBattleStatMask3_Pal, unknownStruct.unk8 << 4, 32);
+ LoadCompressedPalette(gBattleStatMask3_Pal, unknownStruct.paletteId * 16, 32);
break;
case 3:
- LoadCompressedPalette(gBattleStatMask4_Pal, unknownStruct.unk8 << 4, 32);
+ LoadCompressedPalette(gBattleStatMask4_Pal, unknownStruct.paletteId * 16, 32);
break;
case 4:
- LoadCompressedPalette(gBattleStatMask6_Pal, unknownStruct.unk8 << 4, 32);
+ LoadCompressedPalette(gBattleStatMask6_Pal, unknownStruct.paletteId * 16, 32);
break;
case 5:
- LoadCompressedPalette(gBattleStatMask7_Pal, unknownStruct.unk8 << 4, 32);
+ LoadCompressedPalette(gBattleStatMask7_Pal, unknownStruct.paletteId * 16, 32);
break;
case 6:
- LoadCompressedPalette(gBattleStatMask8_Pal, unknownStruct.unk8 << 4, 32);
+ LoadCompressedPalette(gBattleStatMask8_Pal, unknownStruct.paletteId * 16, 32);
break;
default:
- LoadCompressedPalette(gBattleStatMask5_Pal, unknownStruct.unk8 << 4, 32);
+ LoadCompressedPalette(gBattleStatMask5_Pal, unknownStruct.paletteId * 16, 32);
break;
}
@@ -773,7 +773,7 @@ void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5,
u16 species;
u8 spriteId, spriteId2;
u16 bg1Cnt;
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData unknownStruct;
u8 battler2;
spriteId2 = 0;
@@ -820,8 +820,8 @@ void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5,
sub_80A6B30(&unknownStruct);
sub_80A6D60(&unknownStruct, tilemap, 0);
- sub_80A6CC0(unknownStruct.bgId, gfx, unknownStruct.tilesOffset);
- LoadCompressedPalette(palette, unknownStruct.unk8 << 4, 32);
+ AnimLoadCompressedBgGfx(unknownStruct.bgId, gfx, unknownStruct.tilesOffset);
+ LoadCompressedPalette(palette, unknownStruct.paletteId * 16, 32);
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
diff --git a/src/battle_arena.c b/src/battle_arena.c
index cfcb10a0d..f785fa7c3 100644
--- a/src/battle_arena.c
+++ b/src/battle_arena.c
@@ -22,18 +22,20 @@
#include "constants/songs.h"
#include "constants/battle_string_ids.h"
#include "constants/battle_frontier.h"
+#include "constants/items.h"
#include "constants/moves.h"
+#include "constants/rgb.h"
// This file's functions.
-static void sub_81A58B4(void);
-static void sub_81A5964(void);
-static void sub_81A59FC(void);
+static void InitArenaChallenge(void);
+static void GetArenaData(void);
+static void SetArenaData(void);
static void sub_81A5AC4(void);
-static void sub_81A5B08(void);
-static void sub_81A5B88(void);
-static void sub_81A5BE0(void);
+static void SetArenaRewardItem(void);
+static void GiveArenaRewardItem(void);
+static void BufferArenaOpponentName(void);
static void SpriteCb_JudgmentIcon(struct Sprite *sprite);
-static void ShowJudgmentSprite(u8 x, u8 y, u8 arg2, u8 battler);
+static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler);
// Const rom data.
static const s8 sMindRatings[] =
@@ -395,91 +397,106 @@ static const s8 sMindRatings[] =
[MOVE_PSYCHO_BOOST] = 1,
};
-static const struct OamData sOamData_8611F24 =
+#define TAG_JUDGEMENT_ICON 1000
+
+static const struct OamData sJudgementIconOamData =
{
.y = 0,
.affineMode = 0,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 15,
.affineParam = 0
};
-static const union AnimCmd sSpriteAnim_8611F2C[] =
+static const union AnimCmd sJudgementIconAnimCmd0[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8611F34[] =
+static const union AnimCmd sJudgementIconAnimCmd1[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8611F3C[] =
+static const union AnimCmd sJudgementIconAnimCmd2[] =
{
ANIMCMD_FRAME(8, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8611F44[] =
+static const union AnimCmd sJudgementIconAnimCmd3[] =
{
ANIMCMD_FRAME(12, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_8611F4C[] =
+static const union AnimCmd *const sJudgementIconAnimCmds[] =
{
- sSpriteAnim_8611F2C,
- sSpriteAnim_8611F34,
- sSpriteAnim_8611F3C,
- sSpriteAnim_8611F44
+ sJudgementIconAnimCmd0,
+ sJudgementIconAnimCmd1,
+ sJudgementIconAnimCmd2,
+ sJudgementIconAnimCmd3
};
static const struct SpriteTemplate sSpriteTemplate_JudgmentIcon =
{
- .tileTag = 0x3E8,
+ .tileTag = TAG_JUDGEMENT_ICON,
.paletteTag = 0xFFFF,
- .oam = &sOamData_8611F24,
- .anims = sSpriteAnimTable_8611F4C,
+ .oam = &sJudgementIconOamData,
+ .anims = sJudgementIconAnimCmds,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCb_JudgmentIcon,
};
-static const struct CompressedSpriteSheet gUnknown_08611F74[] =
+static const struct CompressedSpriteSheet sBattleArenaJudgementSymbolsSpriteSheet[] =
{
- {gUnknown_08D854E8, 0x200, 0x3E8},
+ {gBattleArenaJudgementSymbolsGfx, 0x200, TAG_JUDGEMENT_ICON},
{0}
};
static void (* const sArenaFunctions[])(void) =
{
- sub_81A58B4,
- sub_81A5964,
- sub_81A59FC,
+ InitArenaChallenge,
+ GetArenaData,
+ SetArenaData,
sub_81A5AC4,
- sub_81A5B08,
- sub_81A5B88,
- sub_81A5BE0,
+ SetArenaRewardItem,
+ GiveArenaRewardItem,
+ BufferArenaOpponentName,
};
-static const u16 gUnknown_08611FA0[6] =
+static const u16 sShortStreakRewardItems[] =
{
- 0x003f, 0x0040, 0x0041, 0x0043, 0x0042, 0x0046
+ ITEM_HP_UP,
+ ITEM_PROTEIN,
+ ITEM_IRON,
+ ITEM_CALCIUM,
+ ITEM_CARBOS,
+ ITEM_ZINC,
};
-static const u16 gUnknown_08611FAC[9] =
+static const u16 sLongStreakRewardItems[] =
{
- 0x00b3, 0x00b4, 0x00b7, 0x00c8, 0x00b9, 0x00bb, 0x00c4, 0x00c6, 0x00ba
+ 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,
};
// code
@@ -490,15 +507,15 @@ void CallBattleArenaFunction(void)
u8 BattleArena_ShowJudgmentWindow(u8 *state)
{
- s32 i;
+ int i;
u8 ret = 0;
switch (*state)
{
case 0:
- BeginNormalPaletteFade(0x7FFFFF1C, 4, 0, 8, 0);
+ BeginNormalPaletteFade(0x7FFFFF1C, 4, 0, 8, RGB_BLACK);
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);
- LoadCompressedSpriteSheet(gUnknown_08611F74);
- LoadCompressedPalette(gUnknown_08D855E8, 0x1F0, 0x20);
+ LoadCompressedSpriteSheet(sBattleArenaJudgementSymbolsSpriteSheet);
+ LoadCompressedPalette(gBattleArenaJudgementSymbolsPalette, 0x1F0, 0x20);
gBattle_WIN0H = 0xFF;
gBattle_WIN0V = 0x70;
(*state)++;
@@ -536,7 +553,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
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);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_JudgmentIcon, 64 + i * 16, 84, 0);
StartSpriteAnim(&gSprites[spriteId], 3);
}
ret = 1;
@@ -596,14 +613,14 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
HandleBattleWindow(5, 0, 24, 13, WINDOW_CLEAR);
CopyBgTilemapBufferToVram(0);
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
- BeginNormalPaletteFade(0x7FFFFF1C, 4, 8, 0, 0);
+ BeginNormalPaletteFade(0x7FFFFF1C, 4, 8, 0, RGB_BLACK);
(*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);
+ FreeSpriteTilesByTag(TAG_JUDGEMENT_ICON);
ret = 1;
(*state)++;
}
@@ -615,9 +632,9 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
{
- s32 animNum = 0;
- s32 pointsPlayer = 0;
- s32 pointsOpponent = 0;
+ int animNum = 0;
+ int pointsPlayer = 0;
+ int pointsOpponent = 0;
s8 *mindPoints = gBattleStruct->arenaMindPoints;
s8 *skillPoints = gBattleStruct->arenaSkillPoints;
u16 *hpAtStart = gBattleStruct->arenaStartHp;
@@ -686,7 +703,6 @@ void BattleArena_InitPoints(void)
void BattleArena_AddMindPoints(u8 battler)
{
s8 *mindPoints = gBattleStruct->arenaMindPoints;
-
mindPoints[battler] += sMindRatings[gCurrentMove];
}
@@ -707,7 +723,7 @@ void BattleArena_AddSkillPoints(u8 battler)
if (!(gMoveResultFlags & MOVE_RESULT_MISSED) || gBattleCommunication[6] != 1)
skillPoints[battler] -= 2;
}
- else if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE && gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE)
+ else if ((gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) && (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE))
{
skillPoints[battler] += 1;
}
@@ -765,7 +781,7 @@ void sub_81A586C(u8 battler) // Unused.
hpAtStart[BATTLE_OPPOSITE(battler)] = gBattleMons[BATTLE_OPPOSITE(battler)].hp;
}
-static void sub_81A58B4(void)
+static void InitArenaChallenge(void)
{
bool32 isCurrent;
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
@@ -786,14 +802,14 @@ static void sub_81A58B4(void)
gTrainerBattleOpponent_A = 0;
}
-static void sub_81A5964(void)
+static void GetArenaData(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
switch (gSpecialVar_0x8005)
{
case 0:
- gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DD8;
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.arenaRewardItem;
break;
case 1:
gSpecialVar_Result = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode];
@@ -807,14 +823,14 @@ static void sub_81A5964(void)
}
}
-static void sub_81A59FC(void)
+static void SetArenaData(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
switch (gSpecialVar_0x8005)
{
case 0:
- gSaveBlock2Ptr->frontier.field_DD8 = gSpecialVar_0x8006;
+ gSaveBlock2Ptr->frontier.arenaRewardItem = gSpecialVar_0x8006;
break;
case 1:
gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] = gSpecialVar_0x8006;
@@ -846,22 +862,22 @@ static void sub_81A5AC4(void)
sub_81A4C30();
}
-static void sub_81A5B08(void)
+static void SetArenaRewardItem(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
if (gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] > 41)
- gSaveBlock2Ptr->frontier.field_DD8 = gUnknown_08611FAC[Random() % ARRAY_COUNT(gUnknown_08611FAC)];
+ gSaveBlock2Ptr->frontier.arenaRewardItem = sLongStreakRewardItems[Random() % ARRAY_COUNT(sLongStreakRewardItems)];
else
- gSaveBlock2Ptr->frontier.field_DD8 = gUnknown_08611FA0[Random() % ARRAY_COUNT(gUnknown_08611FA0)];
+ gSaveBlock2Ptr->frontier.arenaRewardItem = sShortStreakRewardItems[Random() % ARRAY_COUNT(sShortStreakRewardItems)];
}
-static void sub_81A5B88(void)
+static void GiveArenaRewardItem(void)
{
- if (AddBagItem(gSaveBlock2Ptr->frontier.field_DD8, 1) == TRUE)
+ if (AddBagItem(gSaveBlock2Ptr->frontier.arenaRewardItem, 1) == TRUE)
{
- CopyItemName(gSaveBlock2Ptr->frontier.field_DD8, gStringVar1);
- gSaveBlock2Ptr->frontier.field_DD8 = 0;
+ CopyItemName(gSaveBlock2Ptr->frontier.arenaRewardItem, gStringVar1);
+ gSaveBlock2Ptr->frontier.arenaRewardItem = 0;
gSpecialVar_Result = TRUE;
}
else
@@ -870,12 +886,12 @@ static void sub_81A5B88(void)
}
}
-static void sub_81A5BE0(void)
+static void BufferArenaOpponentName(void)
{
GetFrontierTrainerName(gStringVar1, gTrainerBattleOpponent_A);
}
-void sub_81A5BF8(void)
+void DrawArenaRefereeTextBox(void)
{
u8 width = 27;
u8 palNum = 7;
@@ -898,7 +914,7 @@ void sub_81A5BF8(void)
FillBgTilemapBufferRect(0, 0x836, 29, 19, 1, 1, palNum);
}
-void sub_81A5D44(void)
+void RemoveArenaRefereeTextBox(void)
{
u8 width;
u8 height;
diff --git a/src/battle_bg.c b/src/battle_bg.c
index 61a914fc9..524f73abf 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -42,10 +42,10 @@ static const struct OamData gUnknown_0831A988 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -59,10 +59,10 @@ static const struct OamData gUnknown_0831A990 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 64,
.priority = 0,
.paletteNum = 0,
@@ -720,26 +720,26 @@ void DrawMainBattleBackground(void)
{
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x2000000))
{
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60);
}
else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON)
{
- LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Groudon, 0x20, 0x60);
}
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE)
{
- LZDecompressVram(gBattleTerrainTiles_Water, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Water, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Kyogre, 0x20, 0x60);
}
else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA)
{
- LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, 0x20, 0x60);
}
else
@@ -749,15 +749,15 @@ void DrawMainBattleBackground(void)
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
if (trainerClass == TRAINER_CLASS_LEADER)
{
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_BuildingLeader, 0x20, 0x60);
return;
}
else if (trainerClass == TRAINER_CLASS_CHAMPION)
{
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumWallace, 0x20, 0x60);
return;
}
@@ -767,48 +767,48 @@ void DrawMainBattleBackground(void)
{
default:
case MAP_BATTLE_SCENE_NORMAL:
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainTable[gBattleTerrain].palette, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_GYM:
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_BuildingGym, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_MAGMA:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumMagma, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_AQUA:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumAqua, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_SIDNEY:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumSidney, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_PHOEBE:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumPhoebe, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_GLACIA:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumGlacia, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_DRAKE:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_StadiumDrake, 0x20, 0x60);
break;
case MAP_BATTLE_SCENE_FRONTIER:
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60);
break;
}
@@ -1089,7 +1089,7 @@ void DrawBattleEntryBackground(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- LZDecompressVram(gUnknown_08D778F0, (void*)(VRAM + 0x4000));
+ LZDecompressVram(gUnknown_08D778F0, (void*)(BG_CHAR_ADDR(1)));
LZDecompressVram(gUnknown_08D77B0C, (void*)(VRAM + 0x10000));
LoadCompressedPalette(gUnknown_08D77AE4, 0x60, 0x20);
SetBgAttribute(1, BG_ATTR_SCREENSIZE, 1);
@@ -1108,8 +1108,8 @@ void DrawBattleEntryBackground(void)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) || gPartnerTrainerId == TRAINER_STEVEN_PARTNER)
{
- LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(BG_SCREEN_ADDR(28)));
}
else
{
@@ -1123,18 +1123,18 @@ void DrawBattleEntryBackground(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON)
{
- LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void*)(BG_SCREEN_ADDR(28)));
}
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE)
{
- LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void*)(BG_SCREEN_ADDR(28)));
}
else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA)
{
- LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(28)));
}
else
{
@@ -1143,27 +1143,27 @@ void DrawBattleEntryBackground(void)
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
if (trainerClass == TRAINER_CLASS_LEADER)
{
- LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(BG_SCREEN_ADDR(28)));
return;
}
else if (trainerClass == TRAINER_CLASS_CHAMPION)
{
- LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(BG_SCREEN_ADDR(28)));
return;
}
}
if (GetCurrentMapBattleScene() == MAP_BATTLE_SCENE_NORMAL)
{
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTileset, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTileset, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void*)(BG_SCREEN_ADDR(28)));
}
else
{
- LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
- LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(BG_SCREEN_ADDR(28)));
}
}
}
@@ -1187,11 +1187,11 @@ bool8 LoadChosenBattleElement(u8 caseId)
case 3:
if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
{
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
}
else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON)
{
- LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2)));
}
else
{
@@ -1200,12 +1200,12 @@ bool8 LoadChosenBattleElement(u8 caseId)
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
if (trainerClass == TRAINER_CLASS_LEADER)
{
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
break;
}
else if (trainerClass == TRAINER_CLASS_CHAMPION)
{
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
}
}
@@ -1214,31 +1214,31 @@ bool8 LoadChosenBattleElement(u8 caseId)
{
default:
case MAP_BATTLE_SCENE_NORMAL:
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_GYM:
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_MAGMA:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_AQUA:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_SIDNEY:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_PHOEBE:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_GLACIA:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_DRAKE:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void*)(BG_CHAR_ADDR(2)));
break;
case MAP_BATTLE_SCENE_FRONTIER:
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
break;
}
}
@@ -1246,14 +1246,14 @@ bool8 LoadChosenBattleElement(u8 caseId)
case 4:
if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
{
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
}
else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
{
if (gGameVersion == VERSION_RUBY)
- LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26)));
else
- LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(26)));
}
else
{
@@ -1262,12 +1262,12 @@ bool8 LoadChosenBattleElement(u8 caseId)
u8 trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
if (trainerClass == TRAINER_CLASS_LEADER)
{
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
break;
}
else if (trainerClass == TRAINER_CLASS_CHAMPION)
{
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
}
}
@@ -1276,31 +1276,31 @@ bool8 LoadChosenBattleElement(u8 caseId)
{
default:
case MAP_BATTLE_SCENE_NORMAL:
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_GYM:
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_MAGMA:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_AQUA:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_SIDNEY:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_PHOEBE:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_GLACIA:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_DRAKE:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void*)(BG_SCREEN_ADDR(26)));
break;
case MAP_BATTLE_SCENE_FRONTIER:
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
break;
}
}
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index a7b08a974..23d469c27 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -16,6 +16,7 @@
#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"
@@ -26,15 +27,12 @@
#include "constants/battle_anim.h"
#include "constants/songs.h"
#include "constants/trainers.h"
+#include "recorded_battle.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern void sub_81851A8(u8 *);
-extern u16 sub_8068B48(void);
-
// this file's functions
static void LinkOpponentHandleGetMonData(void);
static void LinkOpponentHandleGetRawMonData(void);
@@ -92,7 +90,7 @@ static void LinkOpponentHandleBattleAnimation(void);
static void LinkOpponentHandleLinkStandbyMsg(void);
static void LinkOpponentHandleResetActionMoveSelection(void);
static void LinkOpponentHandleCmd55(void);
-static void nullsub_92(void);
+static void LinkOpponentCmdEnd(void);
static void LinkOpponentBufferRunCommand(void);
static void LinkOpponentBufferExecCompleted(void);
@@ -164,7 +162,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
LinkOpponentHandleLinkStandbyMsg,
LinkOpponentHandleResetActionMoveSelection,
LinkOpponentHandleCmd55,
- nullsub_92
+ LinkOpponentCmdEnd
};
static void nullsub_28(void)
@@ -1278,7 +1276,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
else if ((gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_FIRE_RED
|| (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_LEAF_GREEN)
{
- if (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].gender != 0)
+ if (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].gender != MALE)
trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_LEAF];
else
trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_RED];
@@ -1286,7 +1284,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
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)
+ if (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].gender != MALE)
trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_RS_MAY];
else
trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_RS_BRENDAN];
@@ -1339,7 +1337,7 @@ static void LinkOpponentHandleTrainerSlide(void)
static void LinkOpponentHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
@@ -1700,7 +1698,7 @@ static void LinkOpponentHandleIntroTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
@@ -1857,6 +1855,6 @@ static void LinkOpponentHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_92(void)
+static void LinkOpponentCmdEnd(void)
{
}
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 5c9a92744..22633c5bc 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -16,6 +16,7 @@
#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"
@@ -26,13 +27,11 @@
#include "constants/battle_anim.h"
#include "constants/songs.h"
#include "constants/trainers.h"
+#include "recorded_battle.h"
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern void sub_81851A8(u8 *);
-
// this file's functions
static void LinkPartnerHandleGetMonData(void);
static void LinkPartnerHandleGetRawMonData(void);
@@ -90,7 +89,7 @@ static void LinkPartnerHandleBattleAnimation(void);
static void LinkPartnerHandleLinkStandbyMsg(void);
static void LinkPartnerHandleResetActionMoveSelection(void);
static void LinkPartnerHandleCmd55(void);
-static void nullsub_113(void);
+static void LinkPartnerCmdEnd(void);
static void LinkPartnerBufferRunCommand(void);
static void LinkPartnerBufferExecCompleted(void);
@@ -161,10 +160,10 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
LinkPartnerHandleLinkStandbyMsg,
LinkPartnerHandleResetActionMoveSelection,
LinkPartnerHandleCmd55,
- nullsub_113
+ LinkPartnerCmdEnd
};
-static void nullsub_112(void)
+static void SpriteCB_Null2(void)
{
}
@@ -1160,7 +1159,7 @@ static void LinkPartnerHandleTrainerSlide(void)
static void LinkPartnerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
@@ -1525,7 +1524,7 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
u8 taskId;
u32 trainerPicId;
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
@@ -1564,7 +1563,7 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_112;
+ gBattlerControllerFuncs[gActiveBattler] = SpriteCB_Null2;
}
static void sub_814DCCC(u8 taskId)
@@ -1687,6 +1686,6 @@ static void LinkPartnerHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_113(void)
+static void LinkPartnerCmdEnd(void)
{
}
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index d8a0127d0..7d940cb89 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -32,14 +32,12 @@
#include "constants/moves.h"
#include "constants/songs.h"
#include "constants/trainers.h"
+#include "trainer_hill.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId);
-
// this file's functions
static void OpponentHandleGetMonData(void);
static void OpponentHandleGetRawMonData(void);
@@ -97,7 +95,7 @@ static void OpponentHandleBattleAnimation(void);
static void OpponentHandleLinkStandbyMsg(void);
static void OpponentHandleResetActionMoveSelection(void);
static void OpponentHandleCmd55(void);
-static void nullsub_91(void);
+static void OpponentCmdEnd(void);
static void OpponentBufferRunCommand(void);
static void OpponentBufferExecCompleted(void);
@@ -169,7 +167,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
OpponentHandleLinkStandbyMsg,
OpponentHandleResetActionMoveSelection,
OpponentHandleCmd55,
- nullsub_91
+ OpponentCmdEnd
};
// unknown unused data
@@ -1376,7 +1374,7 @@ static void OpponentHandleTrainerSlide(void)
static void OpponentHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
@@ -1849,7 +1847,7 @@ static void OpponentHandleIntroTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
@@ -2003,6 +2001,6 @@ static void OpponentHandleCmd55(void)
OpponentBufferExecCompleted();
}
-static void nullsub_91(void)
+static void OpponentCmdEnd(void)
{
}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 70b0a6160..b377ecf64 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -39,10 +39,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern void sub_81AABB0(void);
-extern void sub_81851A8(u8 *);
-
// this file's functions
static void PlayerHandleGetMonData(void);
static void PlayerHandleSetMonData(void);
@@ -99,7 +95,7 @@ static void PlayerHandleBattleAnimation(void);
static void PlayerHandleLinkStandbyMsg(void);
static void PlayerHandleResetActionMoveSelection(void);
static void PlayerHandleCmd55(void);
-static void nullsub_22(void);
+static void PlayerCmdEnd(void);
static void PlayerBufferRunCommand(void);
static void HandleInputChooseTarget(void);
@@ -186,7 +182,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
PlayerHandleLinkStandbyMsg,
PlayerHandleResetActionMoveSelection,
PlayerHandleCmd55,
- nullsub_22
+ PlayerCmdEnd
};
static const u8 sTargetIdentities[] = {B_POSITION_PLAYER_LEFT, B_POSITION_PLAYER_RIGHT, B_POSITION_OPPONENT_RIGHT, B_POSITION_OPPONENT_LEFT};
@@ -2377,7 +2373,7 @@ static void PlayerHandleTrainerSlide(void)
static void PlayerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
@@ -2921,7 +2917,7 @@ static void PlayerHandleIntroTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
@@ -3105,6 +3101,6 @@ static void PlayerHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_22(void)
+static void PlayerCmdEnd(void)
{
}
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index 3cfc94977..2c53938c1 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -30,9 +30,6 @@
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern void sub_81358F4(void);
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-
// this file's functions
static void PlayerPartnerHandleGetMonData(void);
static void PlayerPartnerHandleGetRawMonData(void);
@@ -90,7 +87,7 @@ static void PlayerPartnerHandleBattleAnimation(void);
static void PlayerPartnerHandleLinkStandbyMsg(void);
static void PlayerPartnerHandleResetActionMoveSelection(void);
static void PlayerPartnerHandleCmd55(void);
-static void nullsub_128(void);
+static void PlayerPartnerCmdEnd(void);
static void PlayerPartnerBufferRunCommand(void);
static void PlayerPartnerBufferExecCompleted(void);
@@ -167,7 +164,7 @@ static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
PlayerPartnerHandleLinkStandbyMsg,
PlayerPartnerHandleResetActionMoveSelection,
PlayerPartnerHandleCmd55,
- nullsub_128
+ PlayerPartnerCmdEnd
};
// unknown unused data
@@ -1354,7 +1351,7 @@ static void PlayerPartnerHandleTrainerSlide(void)
static void PlayerPartnerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
@@ -1777,7 +1774,7 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
@@ -1928,6 +1925,6 @@ static void PlayerPartnerHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_128(void)
+static void PlayerPartnerCmdEnd(void)
{
}
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 03c3c88b2..e43c5f8ae 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -33,9 +33,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern u16 sub_8068B48(void);
-
// this file's functions
static void RecordedOpponentHandleGetMonData(void);
static void RecordedOpponentHandleGetRawMonData(void);
@@ -93,7 +90,7 @@ static void RecordedOpponentHandleBattleAnimation(void);
static void RecordedOpponentHandleLinkStandbyMsg(void);
static void RecordedOpponentHandleResetActionMoveSelection(void);
static void RecordedOpponentHandleCmd55(void);
-static void nullsub_119(void);
+static void RecordedOpponentCmdEnd(void);
static void RecordedOpponentBufferRunCommand(void);
static void RecordedOpponentBufferExecCompleted(void);
@@ -165,7 +162,7 @@ static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void
RecordedOpponentHandleLinkStandbyMsg,
RecordedOpponentHandleResetActionMoveSelection,
RecordedOpponentHandleCmd55,
- nullsub_119
+ RecordedOpponentCmdEnd
};
static void nullsub_70(void)
@@ -1267,7 +1264,7 @@ static void RecordedOpponentHandleTrainerSlide(void)
static void RecordedOpponentHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
@@ -1640,7 +1637,7 @@ static void RecordedOpponentHandleIntroTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
@@ -1791,6 +1788,6 @@ static void RecordedOpponentHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_119(void)
+static void RecordedOpponentCmdEnd(void)
{
}
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index 9055fc16b..412c49f17 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -30,8 +30,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-
// this file's functions
static void RecordedPlayerHandleGetMonData(void);
static void RecordedPlayerHandleGetRawMonData(void);
@@ -89,7 +87,7 @@ static void RecordedPlayerHandleBattleAnimation(void);
static void RecordedPlayerHandleLinkStandbyMsg(void);
static void RecordedPlayerHandleResetActionMoveSelection(void);
static void RecordedPlayerHandleCmd55(void);
-static void nullsub_121(void);
+static void RecordedPlayerCmdEnd(void);
static void RecordedPlayerBufferRunCommand(void);
static void RecordedPlayerBufferExecCompleted(void);
@@ -160,7 +158,7 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void)
RecordedPlayerHandleLinkStandbyMsg,
RecordedPlayerHandleResetActionMoveSelection,
RecordedPlayerHandleCmd55,
- nullsub_121
+ RecordedPlayerCmdEnd
};
static void nullsub_120(void)
@@ -1268,7 +1266,7 @@ static void RecordedPlayerHandleTrainerSlide(void)
static void RecordedPlayerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
@@ -1662,7 +1660,7 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(void)
u8 taskId;
u32 trainerPicId;
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
@@ -1808,6 +1806,6 @@ static void RecordedPlayerHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_121(void)
+static void RecordedPlayerCmdEnd(void)
{
}
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index 54ba04ab4..e9da16252 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -25,8 +25,6 @@
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern void sub_81358F4(void);
-
// this file's functions
static void SafariHandleGetMonData(void);
static void SafariHandleGetRawMonData(void);
@@ -84,7 +82,7 @@ static void SafariHandleBattleAnimation(void);
static void SafariHandleLinkStandbyMsg(void);
static void SafariHandleResetActionMoveSelection(void);
static void SafariHandleCmd55(void);
-static void nullsub_115(void);
+static void SafariCmdEnd(void);
static void SafariBufferRunCommand(void);
static void SafariBufferExecCompleted(void);
@@ -148,10 +146,10 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
SafariHandleLinkStandbyMsg,
SafariHandleResetActionMoveSelection,
SafariHandleCmd55,
- nullsub_115
+ SafariCmdEnd
};
-static void nullsub_114(void)
+static void SpriteCB_Null4(void)
{
}
@@ -688,6 +686,6 @@ static void SafariHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_81595E4;
}
-static void nullsub_115(void)
+static void SafariCmdEnd(void)
{
}
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index 9a9773316..f1b783b21 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -33,8 +33,6 @@
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-
// this file's functions
static void WallyHandleGetMonData(void);
static void WallyHandleGetRawMonData(void);
@@ -92,7 +90,7 @@ static void WallyHandleBattleAnimation(void);
static void WallyHandleLinkStandbyMsg(void);
static void WallyHandleResetActionMoveSelection(void);
static void WallyHandleCmd55(void);
-static void nullsub_118(void);
+static void WallyCmdEnd(void);
static void WallyBufferRunCommand(void);
static void WallyBufferExecCompleted(void);
@@ -161,10 +159,10 @@ static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
WallyHandleLinkStandbyMsg,
WallyHandleResetActionMoveSelection,
WallyHandleCmd55,
- nullsub_118
+ WallyCmdEnd
};
-static void nullsub_117(void)
+static void SpriteCB_Null7(void)
{
}
@@ -1427,7 +1425,7 @@ static void WallyHandleIntroTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
@@ -1559,6 +1557,6 @@ static void WallyHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_118(void)
+static void WallyCmdEnd(void)
{
}
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 70a53f332..29272c19a 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -767,7 +767,7 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
{
if (IsLinkMaster())
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gTasks[taskId].data[11]++;
}
else
diff --git a/src/battle_dome.c b/src/battle_dome.c
index b9e27675b..1b7953180 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -17,6 +17,7 @@
#include "text.h"
#include "bg.h"
#include "window.h"
+#include "strings.h"
#include "palette.h"
#include "decompress.h"
#include "party_menu.h"
@@ -59,177 +60,62 @@ struct UnkStruct_860DD10
};
// text
-extern const u8 gTrainerClassNames[][0xD];
-
-extern const u8 gBattleDomeOpponentPotential1[];
-extern const u8 gBattleDomeOpponentPotential2[];
-extern const u8 gBattleDomeOpponentPotential3[];
-extern const u8 gBattleDomeOpponentPotential4[];
-extern const u8 gBattleDomeOpponentPotential5[];
-extern const u8 gBattleDomeOpponentPotential6[];
-extern const u8 gBattleDomeOpponentPotential7[];
-extern const u8 gBattleDomeOpponentPotential8[];
-extern const u8 gBattleDomeOpponentPotential9[];
-extern const u8 gBattleDomeOpponentPotential10[];
-extern const u8 gBattleDomeOpponentPotential11[];
-extern const u8 gBattleDomeOpponentPotential12[];
-extern const u8 gBattleDomeOpponentPotential13[];
-extern const u8 gBattleDomeOpponentPotential14[];
-extern const u8 gBattleDomeOpponentPotential15[];
-extern const u8 gBattleDomeOpponentPotential16[];
-extern const u8 gBattleDomeOpponentPotential17[];
-extern const u8 gBattleDomeOpponentStyle1[];
-extern const u8 gBattleDomeOpponentStyle2[];
-extern const u8 gBattleDomeOpponentStyle3[];
-extern const u8 gBattleDomeOpponentStyle4[];
-extern const u8 gBattleDomeOpponentStyle5[];
-extern const u8 gBattleDomeOpponentStyle6[];
-extern const u8 gBattleDomeOpponentStyle7[];
-extern const u8 gBattleDomeOpponentStyle8[];
-extern const u8 gBattleDomeOpponentStyle9[];
-extern const u8 gBattleDomeOpponentStyle10[];
-extern const u8 gBattleDomeOpponentStyle11[];
-extern const u8 gBattleDomeOpponentStyle12[];
-extern const u8 gBattleDomeOpponentStyle13[];
-extern const u8 gBattleDomeOpponentStyle14[];
-extern const u8 gBattleDomeOpponentStyle15[];
-extern const u8 gBattleDomeOpponentStyle16[];
-extern const u8 gBattleDomeOpponentStyle17[];
-extern const u8 gBattleDomeOpponentStyle18[];
-extern const u8 gBattleDomeOpponentStyle19[];
-extern const u8 gBattleDomeOpponentStyle20[];
-extern const u8 gBattleDomeOpponentStyle21[];
-extern const u8 gBattleDomeOpponentStyle22[];
-extern const u8 gBattleDomeOpponentStyle23[];
-extern const u8 gBattleDomeOpponentStyle24[];
-extern const u8 gBattleDomeOpponentStyle25[];
-extern const u8 gBattleDomeOpponentStyle26[];
-extern const u8 gBattleDomeOpponentStyle27[];
-extern const u8 gBattleDomeOpponentStyle28[];
-extern const u8 gBattleDomeOpponentStyleUnused1[];
-extern const u8 gBattleDomeOpponentStyleUnused2[];
-extern const u8 gBattleDomeOpponentStyleUnused3[];
-extern const u8 gBattleDomeOpponentStyleUnused4[];
-extern const u8 gBattleDomeOpponentStats1[];
-extern const u8 gBattleDomeOpponentStats2[];
-extern const u8 gBattleDomeOpponentStats3[];
-extern const u8 gBattleDomeOpponentStats4[];
-extern const u8 gBattleDomeOpponentStats5[];
-extern const u8 gBattleDomeOpponentStats6[];
-extern const u8 gBattleDomeOpponentStats7[];
-extern const u8 gBattleDomeOpponentStats8[];
-extern const u8 gBattleDomeOpponentStats9[];
-extern const u8 gBattleDomeOpponentStats10[];
-extern const u8 gBattleDomeOpponentStats11[];
-extern const u8 gBattleDomeOpponentStats12[];
-extern const u8 gBattleDomeOpponentStats13[];
-extern const u8 gBattleDomeOpponentStats14[];
-extern const u8 gBattleDomeOpponentStats15[];
-extern const u8 gBattleDomeOpponentStats16[];
-extern const u8 gBattleDomeOpponentStats17[];
-extern const u8 gBattleDomeOpponentStats18[];
-extern const u8 gBattleDomeOpponentStats19[];
-extern const u8 gBattleDomeOpponentStats20[];
-extern const u8 gBattleDomeOpponentStats21[];
-extern const u8 gBattleDomeOpponentStats22[];
-extern const u8 gBattleDomeOpponentStats23[];
-extern const u8 gBattleDomeOpponentStats24[];
-extern const u8 gBattleDomeOpponentStats25[];
-extern const u8 gBattleDomeOpponentStats26[];
-extern const u8 gBattleDomeOpponentStats27[];
-extern const u8 gBattleDomeOpponentStats28[];
-extern const u8 gBattleDomeOpponentStats29[];
-extern const u8 gBattleDomeOpponentStats30[];
-extern const u8 gBattleDomeOpponentStats31[];
-extern const u8 gBattleDomeOpponentStats32[];
-extern const u8 gBattleDomeOpponentStats33[];
-extern const u8 gBattleDomeOpponentStats34[];
-extern const u8 gBattleDomeOpponentStats35[];
-extern const u8 gBattleDomeOpponentStats36[];
-extern const u8 gBattleDomeOpponentStats37[];
-extern const u8 gBattleDomeOpponentStats38[];
-extern const u8 gBattleDomeOpponentStats39[];
-extern const u8 gBattleDomeOpponentStats40[];
-extern const u8 gBattleDomeOpponentStats41[];
-extern const u8 gBattleDomeOpponentStats42[];
-extern const u8 gBattleDomeOpponentStats43[];
-extern const u8 gBattleDomeMatchNumber1[];
-extern const u8 gBattleDomeMatchNumber2[];
-extern const u8 gBattleDomeMatchNumber3[];
-extern const u8 gBattleDomeMatchNumber4[];
-extern const u8 gBattleDomeMatchNumber5[];
-extern const u8 gBattleDomeMatchNumber6[];
-extern const u8 gBattleDomeMatchNumber7[];
-extern const u8 gBattleDomeMatchNumber8[];
-extern const u8 gBattleDomeMatchNumber9[];
-extern const u8 gBattleDomeMatchNumber10[];
-extern const u8 gBattleDomeMatchNumber11[];
-extern const u8 gBattleDomeMatchNumber12[];
-extern const u8 gBattleDomeMatchNumber13[];
-extern const u8 gBattleDomeMatchNumber14[];
-extern const u8 gBattleDomeMatchNumber15[];
-extern const u8 gBattleDomeWinStrings1[];
-extern const u8 gBattleDomeWinStrings2[];
-extern const u8 gBattleDomeWinStrings3[];
-extern const u8 gBattleDomeWinStrings4[];
-extern const u8 gBattleDomeWinStrings5[];
-extern const u8 gBattleDomeWinStrings6[];
-extern const u8 gBattleDomeWinStrings7[];
+extern const u8 gTrainerClassNames[][13];
// This file's functions.
static u8 GetDomeTrainerMonIvs(u16 trainerId);
-static void SwapDomeTrainers(s32 id1, s32 id2, u16 *statsArray);
-static void CalcDomeMonStats(u16 species, s32 level, s32 ivs, u8 evBits, u8 nature, s32 *stats);
-static void CreateDomeTrainerMons(u16 tournamentTrainerId);
-static s32 sub_818FCBC(u16 tournamentTrainerId, bool8 arg1);
-static s32 sub_818FDB8(u16 tournamentTrainerId, bool8 arg1);
-static s32 GetTypeEffectivenessPoints(s32 move, s32 species, s32 arg2);
-static s32 sub_818FEB4(s32 *arr, bool8 arg1);
-static void sub_8190400(u8 taskId);
+static void SwapDomeTrainers(int id1, int id2, u16 *statsArray);
+static void CalcDomeMonStats(u16 species, int level, int ivs, u8 evBits, u8 nature, int *stats);
+static void CreateDomeOpponentMons(u16 tournamentTrainerId);
+static int sub_818FCBC(u16 tournamentTrainerId, bool8 arg1);
+static int sub_818FDB8(u16 tournamentTrainerId, bool8 arg1);
+static int GetTypeEffectivenessPoints(int move, int species, int arg2);
+static int sub_818FEB4(int *arr, bool8 arg1);
+static void Task_ShowOpponentInfo(u8 taskId);
static void sub_8190CD4(u8 taskId);
static u8 sub_819221C(u8 taskId);
-static void sub_8194D48(void);
-static s32 TrainerIdToTournamentId(u16 trainerId);
+static void InitDomeFacilityTrainersAndMons(void);
+static int TrainerIdToTournamentId(u16 trainerId);
static u16 TrainerIdOfPlayerOpponent(void);
-static void sub_8194220(u8 taskId);
+static void Task_ShowTourneyTree(u8 taskId);
static void sub_8194950(u8 taskId);
static void CB2_BattleDome(void);
static void VblankCb0_BattleDome(void);
static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo);
static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId);
-static s32 sub_8192F08(u8, u8*);
+static int sub_8192F08(u8, u8*);
static u8 GetDomeBrainTrainerPicId(void);
static u8 GetDomeBrainTrainerClass(void);
-static void CopyDomeBrainTrainerName(u8 *dst);
-static void CopyDomeTrainerName(u8 *dst, u16 trainerId);
+static void CopyDomeBrainTrainerName(u8 *str);
+static void CopyDomeTrainerName(u8 *str, u16 trainerId);
static void HblankCb_BattleDome(void);
static void VblankCb1_BattleDome(void);
-static u8 sub_8193BDC(u8 taskId);
+static u8 UpdateTourneyTreeCursor(u8 taskId);
static void DecideRoundWinners(u8 roundId);
static u8 sub_81953E8(u8 tournamentId, u8);
static void sub_81948EC(u8, u8);
static void sub_8190B40(struct Sprite *sprite);
static void sub_8190C6C(struct Sprite *sprite);
-static void sub_818E9CC(void);
-static void sub_818EA84(void);
-static void sub_818ED28(void);
-static void sub_818F9B0(void);
-static void sub_818F9E0(void);
-static void sub_818FA20(void);
+static void InitDomeChallenge(void);
+static void GetDomeData(void);
+static void SetDomeData(void);
+static void BufferDomeRoundText(void);
+static void BufferDomeOpponentName(void);
+static void InitDomeOpponentParty(void);
static void ShowDomeOpponentInfo(void);
-static void sub_81938A4(void);
-static void sub_81938E0(void);
-static void sub_8190298(void);
-static void sub_81902E4(void);
-static void sub_8193D40(void);
-static void sub_8193D7C(void);
+static void ShowDomeTourneyTree(void);
+static void ShowPreviousDomeResultsTourneyTree(void);
+static void SetDomeOpponentId(void);
+static void SetDomeOpponentGraphicsId(void);
+static void ShowNonInteractiveDomeTourneyTree(void);
+static void ResolveDomeRoundWinners(void);
static void sub_81902F8(void);
-static void sub_819033C(void);
-static void sub_8194D68(void);
-static void sub_8194E44(void);
-static void sub_8194EB4(void);
-static void sub_8194EC0(void);
-static void sub_8194EF8(void);
+static void UpdateDomeStreaks(void);
+static void RestoreDomePlayerParty(void);
+static void RestoreDomePlayerPartyHeldItems(void);
+static void ReduceDomePlayerPartyTo3Mons(void);
+static void GetPlayerSeededBeforeOpponent(void);
+static void BufferLastDomeWinnerName(void);
static void sub_8194F58(void);
static void InitDomeTrainers(void);
@@ -645,7 +531,7 @@ static const u8 sUnusedArray[] =
0, 0, 0, 254, 0, 0, 0, 0, 0,
};
-static const u8 gUnknown_0860CBF1[][5][4]=
+static const u8 sTourneyTreeCursorMovementMap[][5][4]=
{
{{0x07, 0x01, 0x08, 0x10}, {0x07, 0x01, 0x08, 0x10}, {0x07, 0x01, 0x08, 0x10}, {0x07, 0x01, 0x08, 0x10}, {0x07, 0x01, 0x08, 0x10}},
{{0x00, 0x02, 0x09, 0x10}, {0x00, 0x02, 0x09, 0x10}, {0x00, 0x02, 0x09, 0x10}, {0x00, 0x02, 0x09, 0x10}, {0x00, 0x02, 0x09, 0x10}},
@@ -960,14 +846,14 @@ static const struct WindowTemplate gUnknown_0860CEB4[] =
// UB: No DUMMY_WIN_TEMPLATE at the array's end.
};
-static const struct ScanlineEffectParams gUnknown_0860CF44 =
+static const struct ScanlineEffectParams sTourneyTreeScanlineEffectParams =
{
.dmaDest = (void *)REG_ADDR_BG3CNT,
- .dmaControl = 0xa2600001,
+ .dmaControl = SCANLINE_EFFECT_DMACNT_16BIT,
.initState = 1,
};
-static const struct CompressedSpriteSheet gUnknown_0860CF50[] =
+static const struct CompressedSpriteSheet sDomeOptionsSpriteSheet[] =
{
{gBattleFrontierGfx_DomeOptions, 0x0600, 0x0000},
{},
@@ -986,10 +872,10 @@ static const struct OamData gUnknown_0860CF70 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -1003,10 +889,10 @@ static const struct OamData gUnknown_0860CF78 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(32x16),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 1,
@@ -1020,10 +906,10 @@ static const struct OamData gUnknown_0860CF80 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(16x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(16x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 2,
@@ -1037,10 +923,10 @@ static const struct OamData gUnknown_0860CF88 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 2,
+ .shape = SPRITE_SHAPE(8x16),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 2,
@@ -1191,34 +1077,31 @@ static const struct SpriteTemplate gUnknown_0860D068 =
.callback = sub_8190C6C
};
-static const u8 gUnknown_0860D080[DOME_TOURNAMENT_TRAINERS_COUNT] =
-{
- 0x00, 0x08, 0x0c, 0x04, 0x07, 0x0f, 0x0b, 0x03, 0x02, 0x0a, 0x0e, 0x06, 0x05, 0x0d, 0x09, 0x01
-};
+static const u8 sTourneyTreeTrainerIds[] = {0, 8, 12, 4, 7, 15, 11, 3, 2, 10, 14, 6, 5, 13, 9, 1};
-static void (* const gUnknown_0860D090[])(void) =
+static void (* const sBattleDomeFunctions[])(void) =
{
- sub_818E9CC,
- sub_818EA84,
- sub_818ED28,
- sub_818F9B0,
- sub_818F9E0,
- sub_818FA20,
+ InitDomeChallenge,
+ GetDomeData,
+ SetDomeData,
+ BufferDomeRoundText,
+ BufferDomeOpponentName,
+ InitDomeOpponentParty,
ShowDomeOpponentInfo,
- sub_81938A4,
- sub_81938E0,
- sub_8190298,
- sub_81902E4,
- sub_8193D40,
- sub_8193D7C,
+ ShowDomeTourneyTree,
+ ShowPreviousDomeResultsTourneyTree,
+ SetDomeOpponentId,
+ SetDomeOpponentGraphicsId,
+ ShowNonInteractiveDomeTourneyTree,
+ ResolveDomeRoundWinners,
sub_81902F8,
- sub_819033C,
- sub_8194D48,
- sub_8194D68,
- sub_8194E44,
- sub_8194EB4,
- sub_8194EC0,
- sub_8194EF8,
+ UpdateDomeStreaks,
+ InitDomeFacilityTrainersAndMons,
+ RestoreDomePlayerParty,
+ RestoreDomePlayerPartyHeldItems,
+ ReduceDomePlayerPartyTo3Mons,
+ GetPlayerSeededBeforeOpponent,
+ BufferLastDomeWinnerName,
sub_8194F58,
InitDomeTrainers,
};
@@ -1293,108 +1176,108 @@ static const u8 gUnknown_0860D1A0[][4] =
static const u8 gUnknown_0860D1C0[] = {0x00, 0x0f, 0x08, 0x07, 0x03, 0x0c, 0x0b, 0x04, 0x01, 0x0e, 0x09, 0x06, 0x02, 0x0d, 0x0a, 0x05};
-static const u8 *const gBattleDomePotentialPointers[] =
-{
- gBattleDomeOpponentPotential1,
- gBattleDomeOpponentPotential2,
- gBattleDomeOpponentPotential3,
- gBattleDomeOpponentPotential4,
- gBattleDomeOpponentPotential5,
- gBattleDomeOpponentPotential6,
- gBattleDomeOpponentPotential7,
- gBattleDomeOpponentPotential8,
- gBattleDomeOpponentPotential9,
- gBattleDomeOpponentPotential10,
- gBattleDomeOpponentPotential11,
- gBattleDomeOpponentPotential12,
- gBattleDomeOpponentPotential13,
- gBattleDomeOpponentPotential14,
- gBattleDomeOpponentPotential15,
- gBattleDomeOpponentPotential16,
- gBattleDomeOpponentPotential17,
+static const u8 *const sBattleDomePotentialTexts[] =
+{
+ gBattleDomeOpponentPotentialText1,
+ gBattleDomeOpponentPotentialText2,
+ gBattleDomeOpponentPotentialText3,
+ gBattleDomeOpponentPotentialText4,
+ gBattleDomeOpponentPotentialText5,
+ gBattleDomeOpponentPotentialText6,
+ gBattleDomeOpponentPotentialText7,
+ gBattleDomeOpponentPotentialText8,
+ gBattleDomeOpponentPotentialText9,
+ gBattleDomeOpponentPotentialText10,
+ gBattleDomeOpponentPotentialText11,
+ gBattleDomeOpponentPotentialText12,
+ gBattleDomeOpponentPotentialText13,
+ gBattleDomeOpponentPotentialText14,
+ gBattleDomeOpponentPotentialText15,
+ gBattleDomeOpponentPotentialText16,
+ gBattleDomeOpponentPotentialText17,
};
-static const u8 *const gBattleDomeOpponentStylePointers[] =
-{
- gBattleDomeOpponentStyle1,
- gBattleDomeOpponentStyle2,
- gBattleDomeOpponentStyle3,
- gBattleDomeOpponentStyle4,
- gBattleDomeOpponentStyle5,
- gBattleDomeOpponentStyle6,
- gBattleDomeOpponentStyle7,
- gBattleDomeOpponentStyle8,
- gBattleDomeOpponentStyle9,
- gBattleDomeOpponentStyle10,
- gBattleDomeOpponentStyle11,
- gBattleDomeOpponentStyle12,
- gBattleDomeOpponentStyle13,
- gBattleDomeOpponentStyle14,
- gBattleDomeOpponentStyle15,
- gBattleDomeOpponentStyle16,
- gBattleDomeOpponentStyle17,
- gBattleDomeOpponentStyle18,
- gBattleDomeOpponentStyle19,
- gBattleDomeOpponentStyle20,
- gBattleDomeOpponentStyle21,
- gBattleDomeOpponentStyle22,
- gBattleDomeOpponentStyle23,
- gBattleDomeOpponentStyle24,
- gBattleDomeOpponentStyle25,
- gBattleDomeOpponentStyle26,
- gBattleDomeOpponentStyle27,
- gBattleDomeOpponentStyle28,
- gBattleDomeOpponentStyleUnused1,
- gBattleDomeOpponentStyleUnused2,
- gBattleDomeOpponentStyleUnused3,
- gBattleDomeOpponentStyleUnused4,
+static const u8 *const sBattleDomeOpponentStyleTexts[] =
+{
+ gBattleDomeOpponentStyleText1,
+ gBattleDomeOpponentStyleText2,
+ gBattleDomeOpponentStyleText3,
+ gBattleDomeOpponentStyleText4,
+ gBattleDomeOpponentStyleText5,
+ gBattleDomeOpponentStyleText6,
+ gBattleDomeOpponentStyleText7,
+ gBattleDomeOpponentStyleText8,
+ gBattleDomeOpponentStyleText9,
+ gBattleDomeOpponentStyleText10,
+ gBattleDomeOpponentStyleText11,
+ gBattleDomeOpponentStyleText12,
+ gBattleDomeOpponentStyleText13,
+ gBattleDomeOpponentStyleText14,
+ gBattleDomeOpponentStyleText15,
+ gBattleDomeOpponentStyleText16,
+ gBattleDomeOpponentStyleText17,
+ gBattleDomeOpponentStyleText18,
+ gBattleDomeOpponentStyleText19,
+ gBattleDomeOpponentStyleText20,
+ gBattleDomeOpponentStyleText21,
+ gBattleDomeOpponentStyleText22,
+ gBattleDomeOpponentStyleText23,
+ gBattleDomeOpponentStyleText24,
+ gBattleDomeOpponentStyleText25,
+ gBattleDomeOpponentStyleText26,
+ gBattleDomeOpponentStyleText27,
+ gBattleDomeOpponentStyleText28,
+ gBattleDomeOpponentStyleTextUnused1,
+ gBattleDomeOpponentStyleTextUnused2,
+ gBattleDomeOpponentStyleTextUnused3,
+ gBattleDomeOpponentStyleTextUnused4,
};
-static const u8 *const gBattleDomeOpponentStatsPointers[] =
-{
- gBattleDomeOpponentStats1,
- gBattleDomeOpponentStats2,
- gBattleDomeOpponentStats3,
- gBattleDomeOpponentStats4,
- gBattleDomeOpponentStats5,
- gBattleDomeOpponentStats6,
- gBattleDomeOpponentStats7,
- gBattleDomeOpponentStats8,
- gBattleDomeOpponentStats9,
- gBattleDomeOpponentStats10,
- gBattleDomeOpponentStats11,
- gBattleDomeOpponentStats12,
- gBattleDomeOpponentStats13,
- gBattleDomeOpponentStats14,
- gBattleDomeOpponentStats15,
- gBattleDomeOpponentStats16,
- gBattleDomeOpponentStats17,
- gBattleDomeOpponentStats18,
- gBattleDomeOpponentStats19,
- gBattleDomeOpponentStats20,
- gBattleDomeOpponentStats21,
- gBattleDomeOpponentStats22,
- gBattleDomeOpponentStats23,
- gBattleDomeOpponentStats24,
- gBattleDomeOpponentStats25,
- gBattleDomeOpponentStats26,
- gBattleDomeOpponentStats27,
- gBattleDomeOpponentStats28,
- gBattleDomeOpponentStats29,
- gBattleDomeOpponentStats30,
- gBattleDomeOpponentStats31,
- gBattleDomeOpponentStats32,
- gBattleDomeOpponentStats33,
- gBattleDomeOpponentStats34,
- gBattleDomeOpponentStats35,
- gBattleDomeOpponentStats36,
- gBattleDomeOpponentStats37,
- gBattleDomeOpponentStats38,
- gBattleDomeOpponentStats39,
- gBattleDomeOpponentStats40,
- gBattleDomeOpponentStats41,
- gBattleDomeOpponentStats42,
- gBattleDomeOpponentStats43,
+static const u8 *const sBattleDomeOpponentStatsTexts[] =
+{
+ gBattleDomeOpponentStatsText1,
+ gBattleDomeOpponentStatsText2,
+ gBattleDomeOpponentStatsText3,
+ gBattleDomeOpponentStatsText4,
+ gBattleDomeOpponentStatsText5,
+ gBattleDomeOpponentStatsText6,
+ gBattleDomeOpponentStatsText7,
+ gBattleDomeOpponentStatsText8,
+ gBattleDomeOpponentStatsText9,
+ gBattleDomeOpponentStatsText10,
+ gBattleDomeOpponentStatsText11,
+ gBattleDomeOpponentStatsText12,
+ gBattleDomeOpponentStatsText13,
+ gBattleDomeOpponentStatsText14,
+ gBattleDomeOpponentStatsText15,
+ gBattleDomeOpponentStatsText16,
+ gBattleDomeOpponentStatsText17,
+ gBattleDomeOpponentStatsText18,
+ gBattleDomeOpponentStatsText19,
+ gBattleDomeOpponentStatsText20,
+ gBattleDomeOpponentStatsText21,
+ gBattleDomeOpponentStatsText22,
+ gBattleDomeOpponentStatsText23,
+ gBattleDomeOpponentStatsText24,
+ gBattleDomeOpponentStatsText25,
+ gBattleDomeOpponentStatsText26,
+ gBattleDomeOpponentStatsText27,
+ gBattleDomeOpponentStatsText28,
+ gBattleDomeOpponentStatsText29,
+ gBattleDomeOpponentStatsText30,
+ gBattleDomeOpponentStatsText31,
+ gBattleDomeOpponentStatsText32,
+ gBattleDomeOpponentStatsText33,
+ gBattleDomeOpponentStatsText34,
+ gBattleDomeOpponentStatsText35,
+ gBattleDomeOpponentStatsText36,
+ gBattleDomeOpponentStatsText37,
+ gBattleDomeOpponentStatsText38,
+ gBattleDomeOpponentStatsText39,
+ gBattleDomeOpponentStatsText40,
+ gBattleDomeOpponentStatsText41,
+ gBattleDomeOpponentStatsText42,
+ gBattleDomeOpponentStatsText43,
};
static const u8 sInfoTrainerMonX[] = {0x68, 0x88, 0x68};
@@ -1403,34 +1286,34 @@ static const u8 gUnknown_0860D346[] = {0x00, 0x04, 0x00};
static const u8 gUnknown_0860D349[] = {0x00, 0x05, 0x09, 0x0c, 0x0e, 0x00, 0x00};
-static const u8 *const gBattleDomeMatchNumberPointers[] =
-{
- gBattleDomeMatchNumber1,
- gBattleDomeMatchNumber2,
- gBattleDomeMatchNumber3,
- gBattleDomeMatchNumber4,
- gBattleDomeMatchNumber5,
- gBattleDomeMatchNumber6,
- gBattleDomeMatchNumber7,
- gBattleDomeMatchNumber8,
- gBattleDomeMatchNumber9,
- gBattleDomeMatchNumber10,
- gBattleDomeMatchNumber11,
- gBattleDomeMatchNumber12,
- gBattleDomeMatchNumber13,
- gBattleDomeMatchNumber14,
- gBattleDomeMatchNumber15,
+static const u8 *const sBattleDomeMatchNumberTexts[] =
+{
+ gBattleDomeMatchNumberText1,
+ gBattleDomeMatchNumberText2,
+ gBattleDomeMatchNumberText3,
+ gBattleDomeMatchNumberText4,
+ gBattleDomeMatchNumberText5,
+ gBattleDomeMatchNumberText6,
+ gBattleDomeMatchNumberText7,
+ gBattleDomeMatchNumberText8,
+ gBattleDomeMatchNumberText9,
+ gBattleDomeMatchNumberText10,
+ gBattleDomeMatchNumberText11,
+ gBattleDomeMatchNumberText12,
+ gBattleDomeMatchNumberText13,
+ gBattleDomeMatchNumberText14,
+ gBattleDomeMatchNumberText15,
};
-static const u8 *const gBattleDomeWinStringsPointers[] =
+static const u8 *const sBattleDomeWinTexts[] =
{
- gBattleDomeWinStrings1,
- gBattleDomeWinStrings2,
- gBattleDomeWinStrings3,
- gBattleDomeWinStrings4,
- gBattleDomeWinStrings5,
- gBattleDomeWinStrings6,
- gBattleDomeWinStrings7,
+ gBattleDomeWinText1,
+ gBattleDomeWinText2,
+ gBattleDomeWinText3,
+ gBattleDomeWinText4,
+ gBattleDomeWinText5,
+ gBattleDomeWinText6,
+ gBattleDomeWinText7,
};
static const u8 sFirstTrainerMonX[] = {0x60, 0x60, 0x60};
@@ -2373,10 +2256,10 @@ static const u8 gUnknown_0860DE10[DOME_TOURNAMENT_TRAINERS_COUNT][4] =
// code
void CallBattleDomeFunction(void)
{
- gUnknown_0860D090[gSpecialVar_0x8004]();
+ sBattleDomeFunctions[gSpecialVar_0x8004]();
}
-static void sub_818E9CC(void)
+static void InitDomeChallenge(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
@@ -2392,7 +2275,7 @@ static void sub_818E9CC(void)
gTrainerBattleOpponent_A = 0;
}
-static void sub_818EA84(void)
+static void GetDomeData(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
@@ -2460,7 +2343,7 @@ static void sub_818EA84(void)
}
}
-static void sub_818ED28(void)
+static void SetDomeData(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
@@ -2528,21 +2411,21 @@ static void sub_818ED28(void)
static void InitDomeTrainers(void)
{
- s32 i, j, k;
- s32 monLevel;
- s32 species[3];
- s32 monTypesBits, monTypesCount;
- s32 trainerId;
- s32 monSetId;
+ int i, j, k;
+ int monLevel;
+ int species[3];
+ int monTypesBits, monTypesCount;
+ int trainerId;
+ int monSetId;
u16 *statSums;
- s32 *statValues;
+ int *statValues;
u8 ivs = 0;
species[0] = 0;
species[1] = 0;
species[2] = 0;
statSums = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT);
- statValues = AllocZeroed(sizeof(s32) * 6);
+ statValues = AllocZeroed(sizeof(int) * 6);
gSaveBlock2Ptr->frontier.field_D0A = gSaveBlock2Ptr->frontier.lvlMode + 1;
gSaveBlock2Ptr->frontier.field_D0B = VarGet(VAR_FRONTIER_BATTLE_MODE) + 1;
@@ -2599,7 +2482,7 @@ static void InitDomeTrainers(void)
monSetId = RandomizeFacilityTrainerMonSet(trainerId);
for (k = 0; k < j; k++)
{
- s32 checkingMonSetId = gSaveBlock2Ptr->frontier.domeMonIds[i][k];
+ int checkingMonSetId = gSaveBlock2Ptr->frontier.domeMonIds[i][k];
if (checkingMonSetId == monSetId
|| species[0] == gFacilityTrainerMons[monSetId].species
|| species[1] == gFacilityTrainerMons[monSetId].species
@@ -2729,12 +2612,12 @@ static void InitDomeTrainers(void)
stats[statIndex] = (u8) ModifyStatByNature(nature, stats[statIndex], statIndex); \
}
-static void CalcDomeMonStats(u16 species, s32 level, s32 ivs, u8 evBits, u8 nature, s32 *stats)
+static void CalcDomeMonStats(u16 species, int level, int ivs, u8 evBits, u8 nature, int *stats)
{
- s32 i, count;
+ int i, count;
u8 bits;
u16 resultingEvs;
- s32 evs[NUM_STATS];
+ int evs[NUM_STATS];
count = 0, bits = evBits;
for (i = 0; i < NUM_STATS; bits >>= 1, i++)
@@ -2757,7 +2640,7 @@ static void CalcDomeMonStats(u16 species, s32 level, s32 ivs, u8 evBits, u8 natu
}
else
{
- s32 n = 2 * gBaseStats[species].baseHP;
+ int n = 2 * gBaseStats[species].baseHP;
stats[STAT_HP] = (((n + ivs + evs[STAT_HP] / 4) * level) / 100) + level + 10;
}
@@ -2768,9 +2651,9 @@ static void CalcDomeMonStats(u16 species, s32 level, s32 ivs, u8 evBits, u8 natu
CALC_STAT(baseSpDefense, STAT_SPDEF);
}
-static void SwapDomeTrainers(s32 id1, s32 id2, u16 *statsArray)
+static void SwapDomeTrainers(int id1, int id2, u16 *statsArray)
{
- s32 i;
+ int i;
u16 temp;
SWAP(statsArray[id1], statsArray[id2], temp);
@@ -2780,29 +2663,29 @@ static void SwapDomeTrainers(s32 id1, s32 id2, u16 *statsArray)
SWAP(gSaveBlock2Ptr->frontier.domeMonIds[id1][i], gSaveBlock2Ptr->frontier.domeMonIds[id2][i], temp);
}
-static void sub_818F9B0(void)
+static void BufferDomeRoundText(void)
{
StringCopy(gStringVar1, gRoundsStringTable[gSaveBlock2Ptr->frontier.curChallengeBattleNum]);
}
-static void sub_818F9E0(void)
+static void BufferDomeOpponentName(void)
{
StringCopy(gStringVar1, gRoundsStringTable[gSaveBlock2Ptr->frontier.curChallengeBattleNum]);
CopyDomeTrainerName(gStringVar2, gTrainerBattleOpponent_A);
}
-static void sub_818FA20(void)
+static void InitDomeOpponentParty(void)
{
gUnknown_0203CD70 = 0;
gUnknown_0203CD74 = GetMonData(&gPlayerParty[0], MON_DATA_MAX_HP, NULL);
gUnknown_0203CD74 += GetMonData(&gPlayerParty[1], MON_DATA_MAX_HP, NULL);
CalculatePlayerPartyCount();
- CreateDomeTrainerMons(TrainerIdToTournamentId(gTrainerBattleOpponent_A));
+ CreateDomeOpponentMons(TrainerIdToTournamentId(gTrainerBattleOpponent_A));
}
-static void CreateDomeMon(u8 monPartyId, u16 tournamentTrainerId, u8 tournamentMonId, u32 otId)
+static void CreateDomeOpponentMon(u8 monPartyId, u16 tournamentTrainerId, u8 tournamentMonId, u32 otId)
{
- s32 i;
+ int 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 = SetFacilityPtrsGetLevel();
@@ -2827,11 +2710,11 @@ static void CreateDomeMon(u8 monPartyId, u16 tournamentTrainerId, u8 tournamentM
&gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].itemTableId]);
}
-static void CreateDomeTrainerMons(u16 tournamentTrainerId)
+static void CreateDomeOpponentMons(u16 tournamentTrainerId)
{
u8 monsCount = 0;
u32 otId = 0;
- s32 i, bits;
+ int i, bits;
ZeroEnemyPartyMons();
bits = GetDomeTrainerMonCountInBits(tournamentTrainerId);
@@ -2842,7 +2725,7 @@ static void CreateDomeTrainerMons(u16 tournamentTrainerId)
{
if (bits & 1)
{
- CreateDomeMon(monsCount, tournamentTrainerId, i, otId);
+ CreateDomeOpponentMon(monsCount, tournamentTrainerId, i, otId);
monsCount++;
}
bits >>= 1;
@@ -2854,7 +2737,7 @@ static void CreateDomeTrainerMons(u16 tournamentTrainerId)
{
if (bits & 4)
{
- CreateDomeMon(monsCount, tournamentTrainerId, i, otId);
+ CreateDomeOpponentMon(monsCount, tournamentTrainerId, i, otId);
monsCount++;
}
bits <<= 1;
@@ -2862,9 +2745,9 @@ static void CreateDomeTrainerMons(u16 tournamentTrainerId)
}
}
-s32 GetDomeTrainerMonCountInBits(u16 tournamentTrainerId)
+int GetDomeTrainerMonCountInBits(u16 tournamentTrainerId)
{
- s32 bits;
+ int bits;
if (Random() & 1)
{
bits = sub_818FCBC(tournamentTrainerId, FALSE);
@@ -2881,10 +2764,10 @@ s32 GetDomeTrainerMonCountInBits(u16 tournamentTrainerId)
return bits;
}
-static s32 sub_818FCBC(u16 tournamentTrainerId, bool8 arg1)
+static int sub_818FCBC(u16 tournamentTrainerId, bool8 arg1)
{
- s32 i, moveId, playerMonId;
- s32 array[3];
+ int i, moveId, playerMonId;
+ int array[3];
for (i = 0; i < 3; i++)
{
@@ -2909,10 +2792,10 @@ static s32 sub_818FCBC(u16 tournamentTrainerId, bool8 arg1)
return sub_818FEB4(array, arg1);
}
-static s32 sub_818FDB8(u16 tournamentTrainerId, bool8 arg1)
+static int sub_818FDB8(u16 tournamentTrainerId, bool8 arg1)
{
- s32 i, moveId, playerMonId;
- s32 array[3];
+ int i, moveId, playerMonId;
+ int array[3];
for (i = 0; i < 3; i++)
{
@@ -2937,11 +2820,11 @@ static s32 sub_818FDB8(u16 tournamentTrainerId, bool8 arg1)
return sub_818FEB4(array, arg1);
}
-static s32 sub_818FEB4(s32 *arr, bool8 arg1)
+static int sub_818FEB4(int *arr, bool8 arg1)
{
- s32 i, j;
- s32 bits = 0;
- s32 array[3];
+ int i, j;
+ int bits = 0;
+ int array[3];
for (i = 0; i < 3; i++)
array[i] = i;
@@ -2968,7 +2851,7 @@ static s32 sub_818FEB4(s32 *arr, bool8 arg1)
{
for (j = i + 1; j < 3; j++)
{
- s32 temp;
+ int temp;
if (arr[i] < arr[j])
{
@@ -3012,11 +2895,11 @@ static s32 sub_818FEB4(s32 *arr, bool8 arg1)
// Functionally equivalent, while loop is impossible to match.
#ifdef NONMATCHING
-static s32 GetTypeEffectivenessPoints(s32 move, s32 targetSpecies, s32 arg2)
+static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
{
- s32 defType1, defType2, defAbility, moveType;
- s32 i = 0;
- s32 typePower = TYPE_x1;
+ int defType1, defType2, defAbility, moveType;
+ int i = 0;
+ int typePower = TYPE_x1;
if (move == MOVE_NONE || move == 0xFFFF || gBattleMoves[move].power == 0)
return 0;
@@ -3131,7 +3014,7 @@ static s32 GetTypeEffectivenessPoints(s32 move, s32 targetSpecies, s32 arg2)
}
#else
NAKED
-static s32 GetTypeEffectivenessPoints(s32 move, s32 species, s32 arg2)
+static int GetTypeEffectivenessPoints(int move, int species, int arg2)
{
asm_unified("\n\
push {r4-r7,lr}\n\
@@ -3394,9 +3277,9 @@ static u8 GetDomeTrainerMonIvs(u16 trainerId)
return fixedIv;
}
-static s32 TournamentIdOfOpponent(s32 roundId, s32 trainerId)
+static int TournamentIdOfOpponent(int roundId, int trainerId)
{
- s32 i, j, val;
+ int i, j, val;
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++)
{
@@ -3431,7 +3314,7 @@ static s32 TournamentIdOfOpponent(s32 roundId, s32 trainerId)
}
}
-static void sub_8190298(void)
+static void SetDomeOpponentId(void)
{
gTrainerBattleOpponent_A = TrainerIdOfPlayerOpponent();
}
@@ -3441,7 +3324,7 @@ static u16 TrainerIdOfPlayerOpponent(void)
return gSaveBlock2Ptr->frontier.domeTrainers[TournamentIdOfOpponent(gSaveBlock2Ptr->frontier.curChallengeBattleNum, TRAINER_PLAYER)].trainerId;
}
-static void sub_81902E4(void)
+static void SetDomeOpponentGraphicsId(void)
{
SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
}
@@ -3454,7 +3337,7 @@ static void sub_81902F8(void)
sub_81A4C30();
}
-static void sub_819033C(void)
+static void UpdateDomeStreaks(void)
{
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
@@ -3470,7 +3353,7 @@ static void sub_819033C(void)
static void ShowDomeOpponentInfo(void)
{
- u8 taskId = CreateTask(sub_8190400, 0);
+ u8 taskId = CreateTask(Task_ShowOpponentInfo, 0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = TrainerIdToTournamentId(TrainerIdOfPlayerOpponent());
gTasks[taskId].data[2] = 0;
@@ -3479,12 +3362,12 @@ static void ShowDomeOpponentInfo(void)
SetMainCallback2(CB2_BattleDome);
}
-static void sub_8190400(u8 taskId)
+static void Task_ShowOpponentInfo(u8 taskId)
{
- s32 i;
- s32 r5 = gTasks[taskId].data[1];
- s32 r9 = gTasks[taskId].data[2];
- s32 r7 = gTasks[taskId].data[3];
+ int i;
+ int r5 = gTasks[taskId].data[1];
+ int r9 = gTasks[taskId].data[2];
+ int r7 = gTasks[taskId].data[3];
switch (gTasks[taskId].data[0])
{
@@ -3531,7 +3414,7 @@ static void sub_8190400(u8 taskId)
DecompressAndLoadBgGfxUsingHeap(2, gUnknown_08D83D50, 0x2000, 0, 0);
DecompressAndLoadBgGfxUsingHeap(2, gUnknown_08D84970, 0x2000, 0, 1);
DecompressAndLoadBgGfxUsingHeap(3, gUnknown_08D84F00, 0x800, 0, 1);
- LoadCompressedSpriteSheet(gUnknown_0860CF50);
+ LoadCompressedSpriteSheet(sDomeOptionsSpriteSheet);
LoadCompressedPalette(gUnknown_08D85358, 0, 0x200);
LoadCompressedPalette(gUnknown_08D85444, 0x100, 0x200);
LoadCompressedPalette(gUnknown_08D85600, 0xF0, 0x20);
@@ -3774,10 +3657,10 @@ static void SpriteCb_MonIconCardScrollRight(struct Sprite *sprite)
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 roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
+ int taskId1 = sprite->data[0];
+ int arrId = gTasks[gTasks[taskId1].data[4]].data[1];
+ int tournmanetTrainerId = sTourneyTreeTrainerIds[arrId];
+ int roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
if (gTasks[taskId1].data[3] == 1)
{
@@ -3843,7 +3726,7 @@ static void sub_8190B40(struct Sprite *sprite)
static void sub_8190C6C(struct Sprite *sprite)
{
- s32 taskId1 = sprite->data[0];
+ int taskId1 = sprite->data[0];
if (gTasks[taskId1].data[3] == 1)
{
@@ -3873,12 +3756,12 @@ static void sub_8190C6C(struct Sprite *sprite)
static void sub_8190CD4(u8 taskId)
{
- s32 i;
- s32 windowId = 0;
- s32 r9 = gTasks[taskId].data[3];
- s32 taskId2 = gTasks[taskId].data[4];
- s32 trainerTournamentId = 0;
- s32 matchNo = 0;
+ int i;
+ int windowId = 0;
+ int r9 = gTasks[taskId].data[3];
+ int taskId2 = gTasks[taskId].data[4];
+ int trainerTournamentId = 0;
+ int matchNo = 0;
switch (gTasks[taskId].data[0])
{
@@ -3911,7 +3794,7 @@ static void sub_8190CD4(u8 taskId)
for (i = windowId; i < windowId + 9; i++)
{
CopyWindowToVram(i, 2);
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
}
gTasks[taskId].data[0] = 3;
break;
@@ -3946,14 +3829,14 @@ static void sub_8190CD4(u8 taskId)
{
gBattle_BG2_X = 0;
gBattle_BG2_Y = 320;
- trainerTournamentId = gUnknown_0860D080[gTasks[taskId2].data[1]];
+ trainerTournamentId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]];
DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 0x10, trainerTournamentId);
}
else
{
gBattle_BG2_X = 256;
gBattle_BG2_Y = 0;
- trainerTournamentId = gUnknown_0860D080[gTasks[taskId2].data[1]];
+ trainerTournamentId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]];
DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 0x10, trainerTournamentId);
sBattleDomeStruct->unk_10 = 0;
}
@@ -4062,14 +3945,14 @@ static void sub_8190CD4(u8 taskId)
{
gBattle_BG2_X = 0;
gBattle_BG2_Y = 160;
- trainerTournamentId = gUnknown_0860D080[gTasks[taskId2].data[1]];
+ trainerTournamentId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]];
DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 4, trainerTournamentId);
}
else
{
gBattle_BG2_X = 0;
gBattle_BG2_Y = 0;
- trainerTournamentId = gUnknown_0860D080[gTasks[taskId2].data[1]];
+ trainerTournamentId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]];
DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 4, trainerTournamentId);
sBattleDomeStruct->unk_10 = 0;
}
@@ -4175,7 +4058,7 @@ static void sub_8190CD4(u8 taskId)
{
gBattle_BG2_X = 256;
gBattle_BG2_Y = 160;
- trainerTournamentId = gUnknown_0860D080[gTasks[taskId2].data[1]];
+ trainerTournamentId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]];
DisplayTrainerInfoOnCard(gTasks[taskId].data[2] | 8, trainerTournamentId);
}
else
@@ -4574,7 +4457,7 @@ static void sub_8190CD4(u8 taskId)
}
else
{
- i = CreateTask(sub_8194220, 0);
+ i = CreateTask(Task_ShowTourneyTree, 0);
gTasks[i].data[0] = 0;
gTasks[i].data[1] = 0;
gTasks[i].data[2] = 3;
@@ -4590,9 +4473,9 @@ static void sub_8190CD4(u8 taskId)
static u8 sub_819221C(u8 taskId)
{
u8 retVal = 0;
- s32 taskId2 = gTasks[taskId].data[4];
- s32 r5 = gTasks[taskId2].data[1];
- u8 r10 = gUnknown_0860D080[r5];
+ int taskId2 = gTasks[taskId].data[4];
+ int r5 = gTasks[taskId2].data[1];
+ u8 r10 = sTourneyTreeTrainerIds[r5];
u16 roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
@@ -4699,12 +4582,12 @@ static u8 sub_819221C(u8 taskId)
static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
{
struct TextPrinterTemplate textPrinter;
- s32 i, j, k;
- s32 trainerId = 0;
+ int i, j, k;
+ int trainerId = 0;
u8 nature = 0;
- s32 arrId = 0;
- s32 windowId = 0;
- s32 x = 0, y = 0;
+ int arrId = 0;
+ int windowId = 0;
+ int x = 0, y = 0;
u8 palSlot = 0;
s16 *allocatedArray = AllocZeroed(sizeof(s16) * 18);
trainerId = gSaveBlock2Ptr->frontier.domeTrainers[trainerTournamentId].trainerId;
@@ -4835,9 +4718,9 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
PutWindowTilemap(windowId + 4);
CopyWindowToVram(windowId + 4, 3);
if (trainerId == TRAINER_FRONTIER_BRAIN)
- textPrinter.currentChar = gBattleDomePotentialPointers[16];
+ textPrinter.currentChar = sBattleDomePotentialTexts[16];
else
- textPrinter.currentChar = gBattleDomePotentialPointers[trainerTournamentId];
+ textPrinter.currentChar = sBattleDomePotentialTexts[trainerTournamentId];
textPrinter.fontId = 1;
textPrinter.windowId = windowId + 4;
@@ -4864,7 +4747,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
for (i = 0; i < ARRAY_COUNT(gUnknown_0860C988); i++)
{
- s32 r4 = 0;
+ int r4 = 0;
for (k = 0, j = 0; j < DOME_TOURNAMENT_TRAINERS_COUNT; j++)
{
@@ -4879,7 +4762,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
break;
}
- textPrinter.currentChar = gBattleDomeOpponentStylePointers[i];
+ textPrinter.currentChar = sBattleDomeOpponentStyleTexts[i];
textPrinter.y = 20;
textPrinter.currentY = 20;
AddTextPrinter(&textPrinter, 0, NULL);
@@ -4930,7 +4813,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
{
for (i = 0; i < 3; i++)
{
- s32 evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].evSpread;
+ int evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].evSpread;
for (k = 0, j = 0; j < NUM_STATS; j++)
{
allocatedArray[j] = 0;
@@ -5051,19 +4934,19 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId)
else
i = 42;
- textPrinter.currentChar = gBattleDomeOpponentStatsPointers[i];
+ textPrinter.currentChar = sBattleDomeOpponentStatsTexts[i];
textPrinter.y = 36;
textPrinter.currentY = 36;
AddTextPrinter(&textPrinter, 0, NULL);
Free(allocatedArray);
}
-static s32 sub_8192F08(u8 arg0, u8 *arg1)
+static int sub_8192F08(u8 arg0, u8 *arg1)
{
- s32 i;
+ int i;
u8 tournamentId;
- s32 retVal = 0;
- s32 count = 0;
+ int retVal = 0;
+ int count = 0;
for (i = gUnknown_0860D3C4[arg0][0]; i < gUnknown_0860D3C4[arg0][0] + gUnknown_0860D3C4[arg0][1]; i++)
{
@@ -5123,14 +5006,14 @@ static s32 sub_8192F08(u8 arg0, u8 *arg1)
static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
{
struct TextPrinterTemplate textPrinter;
- s32 tournamentIds[2];
- s32 trainerIds[2];
+ int tournamentIds[2];
+ int trainerIds[2];
bool32 lost[2];
- s32 i;
- s32 winStringId = 0;
- s32 arrId = 0;
- s32 windowId = 0;
- s32 x = 0, y = 0;
+ int i;
+ int winStringId = 0;
+ int arrId = 0;
+ int windowId = 0;
+ int x = 0, y = 0;
u8 palSlot = 0;
if (flags & 1)
@@ -5274,7 +5157,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
textPrinter.fgColor = 14;
textPrinter.bgColor = 0;
textPrinter.shadowColor = 13;
- StringExpandPlaceholders(gStringVar4, gBattleDomeWinStringsPointers[winStringId]);
+ StringExpandPlaceholders(gStringVar4, sBattleDomeWinTexts[winStringId]);
textPrinter.currentChar = gStringVar4;
textPrinter.windowId = windowId + 8;
textPrinter.fontId = 1;
@@ -5320,7 +5203,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
// Print match number.
textPrinter.letterSpacing = 0;
- textPrinter.currentChar = gBattleDomeMatchNumberPointers[matchNo];
+ textPrinter.currentChar = sBattleDomeMatchNumberTexts[matchNo];
textPrinter.windowId = windowId + 5;
textPrinter.currentX = GetStringCenterAlignXOffsetWithLetterSpacing(textPrinter.fontId, textPrinter.currentChar, 0xA0, textPrinter.letterSpacing);
textPrinter.currentY = textPrinter.y = 2;
@@ -5329,9 +5212,9 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
AddTextPrinter(&textPrinter, 0, NULL);
}
-static void sub_81938A4(void)
+static void ShowDomeTourneyTree(void)
{
- u8 taskId = CreateTask(sub_8194220, 0);
+ u8 taskId = CreateTask(Task_ShowTourneyTree, 0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 2;
@@ -5339,14 +5222,14 @@ static void sub_81938A4(void)
SetMainCallback2(CB2_BattleDome);
}
-static void sub_81938E0(void)
+static void ShowPreviousDomeResultsTourneyTree(void)
{
u8 taskId;
- sub_8194D48();
+ InitDomeFacilityTrainersAndMons();
gSaveBlock2Ptr->frontier.lvlMode = gSaveBlock2Ptr->frontier.field_D0A - 1;
gSaveBlock2Ptr->frontier.curChallengeBattleNum = 3;
- taskId = CreateTask(sub_8194220, 0);
+ taskId = CreateTask(Task_ShowTourneyTree, 0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 2;
@@ -5357,7 +5240,7 @@ static void sub_81938E0(void)
static void sub_819395C(u8 taskId)
{
u8 newTaskId = 0;
- s32 spriteId = gTasks[taskId].data[1];
+ int spriteId = gTasks[taskId].data[1];
switch (gTasks[taskId].data[0])
{
@@ -5374,7 +5257,7 @@ static void sub_819395C(u8 taskId)
gTasks[taskId].data[0] = 2;
break;
case 2:
- switch (sub_8193BDC(taskId))
+ switch (UpdateTourneyTreeCursor(taskId))
{
case 0:
default:
@@ -5399,9 +5282,9 @@ static void sub_819395C(u8 taskId)
FreeAllWindowBuffers();
ScanlineEffect_Stop();
FREE_AND_SET_NULL(sTilemapBuffer);
- newTaskId = CreateTask(sub_8190400, 0);
+ newTaskId = CreateTask(Task_ShowOpponentInfo, 0);
gTasks[newTaskId].data[0] = 0;
- gTasks[newTaskId].data[1] = gUnknown_0860D080[spriteId];
+ gTasks[newTaskId].data[1] = sTourneyTreeTrainerIds[spriteId];
gTasks[newTaskId].data[2] = 1;
gTasks[newTaskId].data[3] = taskId;
@@ -5417,7 +5300,7 @@ static void sub_819395C(u8 taskId)
FreeAllWindowBuffers();
ScanlineEffect_Stop();
FREE_AND_SET_NULL(sTilemapBuffer);
- newTaskId = CreateTask(sub_8190400, 0);
+ newTaskId = CreateTask(Task_ShowOpponentInfo, 0);
gTasks[newTaskId].data[0] = 0;
gTasks[newTaskId].data[1] = spriteId - 16;
gTasks[newTaskId].data[2] = 2;
@@ -5442,21 +5325,21 @@ static void sub_819395C(u8 taskId)
}
}
-static u8 sub_8193BDC(u8 taskId)
+static u8 UpdateTourneyTreeCursor(u8 taskId)
{
u8 retVal = 1;
- s32 arrId = 4;
- s32 spriteId = gTasks[taskId].data[1];
- s32 roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
+ int direction = 4;
+ int tourneyTreeCursorSpriteId = gTasks[taskId].data[1];
+ int roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
- if (gMain.newKeys == B_BUTTON || (gMain.newKeys & A_BUTTON && spriteId == 31))
+ if (gMain.newKeys == B_BUTTON || (gMain.newKeys & A_BUTTON && tourneyTreeCursorSpriteId == 31))
{
PlaySE(SE_SELECT);
retVal = 0;
}
else if (gMain.newKeys & A_BUTTON)
{
- if (spriteId < 16)
+ if (tourneyTreeCursorSpriteId < 16)
{
PlaySE(SE_SELECT);
retVal = 2;
@@ -5469,31 +5352,31 @@ static u8 sub_8193BDC(u8 taskId)
}
else
{
- if (gMain.newKeys == DPAD_UP && gUnknown_0860CBF1[spriteId][roundId][0] != 0xFF)
- arrId = 0;
- else if (gMain.newKeys == DPAD_DOWN && gUnknown_0860CBF1[spriteId][roundId][1] != 0xFF)
- arrId = 1;
- else if (gMain.newKeys == DPAD_LEFT && gUnknown_0860CBF1[spriteId][roundId][2] != 0xFF)
- arrId = 2;
- else if (gMain.newKeys == DPAD_RIGHT && gUnknown_0860CBF1[spriteId][roundId][3] != 0xFF)
- arrId = 3;
+ if (gMain.newKeys == DPAD_UP && sTourneyTreeCursorMovementMap[tourneyTreeCursorSpriteId][roundId][0] != 0xFF)
+ direction = 0;
+ else if (gMain.newKeys == DPAD_DOWN && sTourneyTreeCursorMovementMap[tourneyTreeCursorSpriteId][roundId][1] != 0xFF)
+ direction = 1;
+ else if (gMain.newKeys == DPAD_LEFT && sTourneyTreeCursorMovementMap[tourneyTreeCursorSpriteId][roundId][2] != 0xFF)
+ direction = 2;
+ else if (gMain.newKeys == DPAD_RIGHT && sTourneyTreeCursorMovementMap[tourneyTreeCursorSpriteId][roundId][3] != 0xFF)
+ direction = 3;
}
- if (arrId != 4)
+ if (direction != 4)
{
PlaySE(SE_SELECT);
- StartSpriteAnim(&gSprites[spriteId], 0);
- spriteId = gUnknown_0860CBF1[spriteId][roundId][arrId];
- StartSpriteAnim(&gSprites[spriteId], 1);
- gTasks[taskId].data[1] = spriteId;
+ StartSpriteAnim(&gSprites[tourneyTreeCursorSpriteId], 0);
+ tourneyTreeCursorSpriteId = sTourneyTreeCursorMovementMap[tourneyTreeCursorSpriteId][roundId][direction];
+ StartSpriteAnim(&gSprites[tourneyTreeCursorSpriteId], 1);
+ gTasks[taskId].data[1] = tourneyTreeCursorSpriteId;
}
return retVal;
}
-static void sub_8193D40(void)
+static void ShowNonInteractiveDomeTourneyTree(void)
{
- u8 taskId = CreateTask(sub_8194220, 0);
+ u8 taskId = CreateTask(Task_ShowTourneyTree, 0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 1;
gTasks[taskId].data[2] = 2;
@@ -5501,9 +5384,9 @@ static void sub_8193D40(void)
SetMainCallback2(CB2_BattleDome);
}
-static void sub_8193D7C(void)
+static void ResolveDomeRoundWinners(void)
{
- s32 i;
+ int i;
if (gSpecialVar_0x8005 == 1)
{
@@ -5525,14 +5408,14 @@ static void sub_8193D7C(void)
}
}
-static u16 GetWinningMove(s32 winnerTournamentId, s32 loserTournamentId, u8 roundId)
+static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roundId)
{
- s32 i, j, k;
- s32 moveScores[4 * 3];
+ int i, j, k;
+ int moveScores[4 * 3];
u16 moveIds[4 * 3];
u16 bestScore = 0;
u16 bestId = 0;
- s32 movePower = 0;
+ int movePower = 0;
SetFacilityPtrsGetLevel();
// Calc move points of all 4 moves for all 3 pokemon hitting all 3 target mons.
@@ -5639,12 +5522,12 @@ static u16 GetWinningMove(s32 winnerTournamentId, s32 loserTournamentId, u8 roun
return moveIds[j];
}
-static void sub_8194220(u8 taskId)
+static void Task_ShowTourneyTree(u8 taskId)
{
- s32 i;
+ int i;
struct TextPrinterTemplate textPrinter;
- s32 r10 = gTasks[taskId].data[1];
- s32 r4 = gTasks[taskId].data[2];
+ int r10 = gTasks[taskId].data[1];
+ int r4 = gTasks[taskId].data[2];
switch (gTasks[taskId].data[0])
{
@@ -5703,7 +5586,7 @@ static void sub_8194220(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 3:
- LoadCompressedSpriteSheet(gUnknown_0860CF50);
+ LoadCompressedSpriteSheet(sDomeOptionsSpriteSheet);
if (r10 == 0)
{
for (i = 0; i < (unsigned) 31; i++)
@@ -5734,7 +5617,7 @@ static void sub_8194220(u8 taskId)
AddTextPrinter(&textPrinter, 0, NULL);
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++)
{
- s32 roundId, var2;
+ int roundId, var2;
CopyDomeTrainerName(gDisplayedStringBattle, gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId);
if (r10 == 1)
@@ -5851,19 +5734,19 @@ static void sub_8194220(u8 taskId)
i = 0;
while (i < 91)
{
- gScanlineEffectRegBuffers[0][i] = 0x1F0A;
- gScanlineEffectRegBuffers[1][i] = 0x1F0A;
+ gScanlineEffectRegBuffers[0][i] = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_CHARBASE(2) | BGCNT_TXT256x256;
+ gScanlineEffectRegBuffers[1][i] = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_CHARBASE(2) | BGCNT_TXT256x256;
i++;
}
while (i < 160)
{
- gScanlineEffectRegBuffers[0][i] = 0x1F09;
- gScanlineEffectRegBuffers[1][i] = 0x1F09;
+ gScanlineEffectRegBuffers[0][i] = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_CHARBASE(2) | BGCNT_TXT256x256;
+ gScanlineEffectRegBuffers[1][i] = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_CHARBASE(2) | BGCNT_TXT256x256;
i++;
}
- ScanlineEffect_SetParams(gUnknown_0860CF44);
+ ScanlineEffect_SetParams(sTourneyTreeScanlineEffectParams);
DestroyTask(taskId);
break;
}
@@ -5871,7 +5754,7 @@ static void sub_8194220(u8 taskId)
static void sub_81948EC(u8 tournamentId, u8 arg1)
{
- s32 i;
+ int i;
const struct UnkStruct_860DD10 *structPtr = gUnknown_0860DD10[tournamentId][arg1];
for (i = 0; i < gUnknown_0860DE10[tournamentId][arg1]; i++)
@@ -5882,7 +5765,7 @@ static void sub_81948EC(u8 tournamentId, u8 arg1)
static void sub_8194950(u8 taskId)
{
- s32 i;
+ int i;
struct TextPrinterTemplate textPrinter;
switch (gTasks[taskId].data[0])
@@ -5923,7 +5806,7 @@ static void sub_8194950(u8 taskId)
}
if (!gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated)
{
- s32 roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1;
+ int roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1;
sub_81948EC(i, roundId);
}
}
@@ -6050,20 +5933,20 @@ static void VblankCb1_BattleDome(void)
ScanlineEffect_InitHBlankDmaTransfer();
}
-static void sub_8194D48(void)
+static void InitDomeFacilityTrainersAndMons(void)
{
gFacilityTrainerMons = gBattleFrontierMons;
gFacilityTrainers = gBattleFrontierTrainers;
}
-static void sub_8194D68(void)
+static void RestoreDomePlayerParty(void)
{
- s32 i, moveSlot;
+ int i, moveSlot;
for (i = 0; i < 2; i++)
{
- s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1;
- s32 count;
+ int playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1;
+ int count;
for (moveSlot = 0; moveSlot < MAX_MON_MOVES; moveSlot++)
{
@@ -6082,24 +5965,24 @@ static void sub_8194D68(void)
}
}
-static void sub_8194E44(void)
+static void RestoreDomePlayerPartyHeldItems(void)
{
- s32 i;
+ int i;
for (i = 0; i < 2; i++)
{
- s32 playerMonId = gSaveBlock2Ptr->frontier.selectedPartyMons[gSelectedOrderFromParty[i] - 1] - 1;
+ int 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);
}
}
-static void sub_8194EB4(void)
+static void ReduceDomePlayerPartyTo3Mons(void)
{
ReducePlayerPartyToSelectedMons();
}
-static void sub_8194EC0(void)
+static void GetPlayerSeededBeforeOpponent(void)
{
if (TrainerIdToTournamentId(gTrainerBattleOpponent_A) > TrainerIdToTournamentId(TRAINER_PLAYER))
gSpecialVar_Result = 1;
@@ -6107,11 +5990,11 @@ static void sub_8194EC0(void)
gSpecialVar_Result = 2;
}
-static void sub_8194EF8(void)
+static void BufferLastDomeWinnerName(void)
{
- s32 i;
+ int i;
- sub_8194D48();
+ InitDomeFacilityTrainersAndMons();
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++)
{
if (!gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated)
@@ -6122,15 +6005,15 @@ static void sub_8194EF8(void)
static void sub_8194F58(void)
{
- s32 i, j, k;
- s32 monLevel;
- s32 species[3];
- s32 monTypesBits;
- s32 trainerId;
- s32 monSetId;
+ int i, j, k;
+ int monLevel;
+ int species[3];
+ int monTypesBits;
+ int trainerId;
+ int monSetId;
u8 lvlMode;
u16 *statSums;
- s32 *statValues;
+ int *statValues;
u8 ivs = 0;
species[0] = 0;
@@ -6140,7 +6023,7 @@ static void sub_8194F58(void)
return;
statSums = AllocZeroed(sizeof(u16) * DOME_TOURNAMENT_TRAINERS_COUNT);
- statValues = AllocZeroed(sizeof(s32) * 6);
+ statValues = AllocZeroed(sizeof(int) * 6);
lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
gSaveBlock2Ptr->frontier.lvlMode = 0;
// This one, I'd like to call a 'C fakematching'.
@@ -6177,7 +6060,7 @@ static void sub_8194F58(void)
monSetId = RandomizeFacilityTrainerMonSet(trainerId);
for (k = 0; k < j; k++)
{
- s32 checkingMonId = gSaveBlock2Ptr->frontier.domeMonIds[i][k];
+ int checkingMonId = gSaveBlock2Ptr->frontier.domeMonIds[i][k];
if (checkingMonId == monSetId
|| species[0] == gFacilityTrainerMons[monSetId].species
|| species[1] == gFacilityTrainerMons[monSetId].species
@@ -6253,9 +6136,9 @@ static void sub_8194F58(void)
gSaveBlock2Ptr->frontier.lvlMode = lvlMode;
}
-static s32 TrainerIdToTournamentId(u16 trainerId)
+static int TrainerIdToTournamentId(u16 trainerId)
{
- s32 i;
+ int i;
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++)
{
@@ -6267,9 +6150,9 @@ static s32 TrainerIdToTournamentId(u16 trainerId)
}
// The same as the above one, but has global scope.
-s32 TrainerIdToDomeTournamentId(u16 trainerId)
+int TrainerIdToDomeTournamentId(u16 trainerId)
{
- s32 i;
+ int i;
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++)
{
@@ -6280,10 +6163,10 @@ s32 TrainerIdToDomeTournamentId(u16 trainerId)
return i;
}
-static u8 sub_81953E8(u8 tournamentId, u8 arg1)
+static u8 sub_81953E8(u8 tournamentId, u8 round)
{
u8 arr[2];
- sub_8192F08(gUnknown_0860D1A0[gUnknown_0860D1C0[tournamentId] / 2][arg1] - 16, arr);
+ sub_8192F08(gUnknown_0860D1A0[gUnknown_0860D1C0[tournamentId] / 2][round] - 16, arr);
if (tournamentId == arr[0])
return arr[1];
else
@@ -6292,11 +6175,11 @@ static u8 sub_81953E8(u8 tournamentId, u8 arg1)
static void DecideRoundWinners(u8 roundId)
{
- s32 i;
- s32 moveSlot, monId1, monId2;
- s32 tournamentId1, tournamentId2;
- s32 species;
- s32 points1 = 0, points2 = 0;
+ int i;
+ int moveSlot, monId1, monId2;
+ int tournamentId1, tournamentId2;
+ int species;
+ int points1 = 0, points2 = 0;
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT; i++)
{
@@ -6400,28 +6283,28 @@ static void DecideRoundWinners(u8 roundId)
}
}
-static void CopyDomeTrainerName(u8 *dst, u16 trainerId)
+static void CopyDomeTrainerName(u8 *str, u16 trainerId)
{
- s32 i = 0;
+ int i = 0;
SetFacilityPtrsGetLevel();
if (trainerId == TRAINER_FRONTIER_BRAIN)
{
- CopyDomeBrainTrainerName(dst);
+ CopyDomeBrainTrainerName(str);
}
else
{
if (trainerId == TRAINER_PLAYER)
{
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
- dst[i] = gSaveBlock2Ptr->playerName[i];
+ str[i] = gSaveBlock2Ptr->playerName[i];
}
else if (trainerId < 300)
{
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
- dst[i] = gFacilityTrainers[trainerId].trainerName[i];
+ str[i] = gFacilityTrainers[trainerId].trainerName[i];
}
- dst[i] = EOS;
+ str[i] = EOS;
}
}
@@ -6435,11 +6318,11 @@ static u8 GetDomeBrainTrainerClass(void)
return gTrainers[TRAINER_TUCKER].trainerClass;
}
-static void CopyDomeBrainTrainerName(u8 *dst)
+static void CopyDomeBrainTrainerName(u8 *str)
{
- s32 i;
+ int i;
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
- dst[i] = gTrainers[TRAINER_TUCKER].trainerName[i];
- dst[i] = EOS;
+ str[i] = gTrainers[TRAINER_TUCKER].trainerName[i];
+ str[i] = EOS;
}
diff --git a/src/battle_factory.c b/src/battle_factory.c
index 5793c78e9..d08ffe6e6 100644
--- a/src/battle_factory.c
+++ b/src/battle_factory.c
@@ -11,32 +11,33 @@
#include "constants/species.h"
#include "constants/battle_ai.h"
#include "constants/battle_frontier.h"
+#include "constants/layouts.h"
#include "constants/trainers.h"
#include "constants/moves.h"
// IWRAM bss
-static IWRAM_DATA bool8 gUnknown_03001288;
+static IWRAM_DATA bool8 sPerformedRentalSwap;
// This file's functions.
-static void sub_81A5E94(void);
-static void sub_81A5FA8(void);
-static void sub_81A6054(void);
+static void InitFactoryChallenge(void);
+static void GetBattleFactoryData(void);
+static void SetBattleFactoryData(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 void SelectInitialRentalMons(void);
+static void SwapRentalMons(void);
+static void SetPerformedRentalSwap(void);
+static void SetRentalsToOpponentParty(void);
+static void SetPlayerAndOpponentParties(void);
+static void SetOpponentGfxVar(void);
+static void GenerateOpponentMons(void);
+static void GenerateInitialRentalMons(void);
+static void GetOpponentMostCommonMonType(void);
+static void GetOpponentBattleStyle(void);
+static void RestorePlayerPartyHeldItems(void);
static u16 GetMonSetId(u8 lvlMode, u8 challengeNum, bool8 arg2);
-static u8 GetStyleForMove(u16 move);
+static u8 GetMoveBattleStyle(u16 move);
// Const rom data.
static const u8 sRequiredMoveCounts[] = {3, 3, 3, 2, 2, 2, 2};
@@ -109,25 +110,25 @@ static const u16 *const sMoveStyles[] =
sMoves_DependsOnTheBattlesFlow,
};
-static void (* const gUnknown_08612120[])(void) =
+static void (* const sBattleFactoryFunctions[])(void) =
{
- sub_81A5E94,
- sub_81A5FA8,
- sub_81A6054,
+ InitFactoryChallenge,
+ GetBattleFactoryData,
+ SetBattleFactoryData,
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,
+ SelectInitialRentalMons,
+ SwapRentalMons,
+ SetPerformedRentalSwap,
+ SetRentalsToOpponentParty,
+ SetPlayerAndOpponentParties,
+ SetOpponentGfxVar,
+ GenerateOpponentMons,
+ GenerateInitialRentalMons,
+ GetOpponentMostCommonMonType,
+ GetOpponentBattleStyle,
+ RestorePlayerPartyHeldItems,
};
static const u32 gUnknown_08612164[][2] =
@@ -177,10 +178,10 @@ static const u16 sMonsToChooseFrom[][2] =
// code
void CallBattleFactoryFunction(void)
{
- gUnknown_08612120[gSpecialVar_0x8004]();
+ sBattleFactoryFunctions[gSpecialVar_0x8004]();
}
-static void sub_81A5E94(void)
+static void InitFactoryChallenge(void)
{
u8 i;
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
@@ -196,9 +197,9 @@ static void sub_81A5E94(void)
gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode] = 0;
}
- gUnknown_03001288 = FALSE;
+ sPerformedRentalSwap = FALSE;
for (i = 0; i < 6; i++)
- gSaveBlock2Ptr->frontier.field_E70[i].monId = 0xFFFF;
+ gSaveBlock2Ptr->frontier.rentalMons[i].monId = 0xFFFF;
for (i = 0; i < 3; i++)
gUnknown_03006298[i] = 0xFFFF;
@@ -206,10 +207,10 @@ static void sub_81A5E94(void)
gTrainerBattleOpponent_A = 0;
}
-static void sub_81A5FA8(void)
+static void GetBattleFactoryData(void)
{
- u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ int lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ int battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
switch (gSpecialVar_0x8005)
{
@@ -225,10 +226,10 @@ static void sub_81A5FA8(void)
}
}
-static void sub_81A6054(void)
+static void SetBattleFactoryData(void)
{
- u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ int lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ int battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
switch (gSpecialVar_0x8005)
{
@@ -242,10 +243,10 @@ static void sub_81A6054(void)
gSaveBlock2Ptr->frontier.field_CDC &= gUnknown_08612174[battleMode][lvlMode];
break;
case 3:
- if (gUnknown_03001288 == TRUE)
+ if (sPerformedRentalSwap == TRUE)
{
gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode] = gSpecialVar_0x8006;
- gUnknown_03001288 = FALSE;
+ sPerformedRentalSwap = FALSE;
}
break;
}
@@ -269,28 +270,28 @@ static void nullsub_123(void)
}
-static void sub_81A6188(void)
+static void SelectInitialRentalMons(void)
{
ZeroPlayerPartyMons();
DoBattleFactorySelectScreen();
}
-static void sub_81A6198(void)
+static void SwapRentalMons(void)
{
DoBattleFactorySwapScreen();
}
-static void sub_81A61A4(void)
+static void SetPerformedRentalSwap(void)
{
- gUnknown_03001288 = TRUE;
+ sPerformedRentalSwap = TRUE;
}
-static void sub_81A61B0(void)
+static void GenerateOpponentMons(void)
{
- s32 i, j, k;
+ int i, j, k;
u16 species[3];
u16 heldItems[3];
- s32 firstMonId = 0;
+ int firstMonId = 0;
u16 trainerId = 0;
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
@@ -303,14 +304,14 @@ static void sub_81A61B0(void)
trainerId = sub_8162548(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum);
for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId)
break;
}
} while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum);
gTrainerBattleOpponent_A = trainerId;
if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 6)
- gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = trainerId;
+ gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = trainerId;
i = 0;
while (i != 3)
@@ -321,7 +322,7 @@ static void sub_81A61B0(void)
for (j = 0; j < 6; j++)
{
- if (gFacilityTrainerMons[monSetId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.field_E70[j].monId].species)
+ if (gFacilityTrainerMons[monSetId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species)
break;
}
if (j != 6)
@@ -353,12 +354,12 @@ static void sub_81A61B0(void)
}
}
-static void sub_81A63B8(void)
+static void SetOpponentGfxVar(void)
{
SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
}
-static void sub_81A63CC(void)
+static void SetRentalsToOpponentParty(void)
{
u8 i;
@@ -369,18 +370,18 @@ static void sub_81A63CC(void)
for (i = 0; i < 3; i++)
{
- 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);
+ gSaveBlock2Ptr->frontier.rentalMons[i + 3].monId = gUnknown_03006298[i];
+ gSaveBlock2Ptr->frontier.rentalMons[i + 3].ivs = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ATK_IV, NULL);
+ gSaveBlock2Ptr->frontier.rentalMons[i + 3].personality = GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY, NULL);
+ gSaveBlock2Ptr->frontier.rentalMons[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_81A64C4(void)
+static void SetPlayerAndOpponentParties(void)
{
- s32 i, j, k;
- s32 count = 0;
+ int i, j, k;
+ int count = 0;
u8 bits = 0;
u8 monLevel;
u16 monSetId;
@@ -407,13 +408,13 @@ static void sub_81A64C4(void)
ZeroPlayerPartyMons();
for (i = 0; i < 3; i++)
{
- monSetId = gSaveBlock2Ptr->frontier.field_E70[i].monId;
- ivs = gSaveBlock2Ptr->frontier.field_E70[i].ivs;
+ monSetId = gSaveBlock2Ptr->frontier.rentalMons[i].monId;
+ ivs = gSaveBlock2Ptr->frontier.rentalMons[i].ivs;
CreateMon(&gPlayerParty[i],
gFacilityTrainerMons[monSetId].species,
monLevel,
ivs,
- TRUE, gSaveBlock2Ptr->frontier.field_E70[i].personality,
+ TRUE, gSaveBlock2Ptr->frontier.rentalMons[i].personality,
0, 0);
count = 0;
@@ -438,7 +439,7 @@ static void sub_81A64C4(void)
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);
+ SetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY, &gSaveBlock2Ptr->frontier.rentalMons[i].abilityBit);
}
}
@@ -448,13 +449,13 @@ static void sub_81A64C4(void)
case 2:
for (i = 0; i < 3; i++)
{
- monSetId = gSaveBlock2Ptr->frontier.field_E70[i + 3].monId;
- ivs = gSaveBlock2Ptr->frontier.field_E70[i + 3].ivs;
+ monSetId = gSaveBlock2Ptr->frontier.rentalMons[i + 3].monId;
+ ivs = gSaveBlock2Ptr->frontier.rentalMons[i + 3].ivs;
CreateMon(&gEnemyParty[i],
gFacilityTrainerMons[monSetId].species,
monLevel,
ivs,
- TRUE, gSaveBlock2Ptr->frontier.field_E70[i + 3].personality,
+ TRUE, gSaveBlock2Ptr->frontier.rentalMons[i + 3].personality,
0, 0);
count = 0;
@@ -477,15 +478,15 @@ static void sub_81A64C4(void)
for (k = 0; k < MAX_MON_MOVES; 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);
+ SetMonData(&gEnemyParty[i], MON_DATA_ALT_ABILITY, &gSaveBlock2Ptr->frontier.rentalMons[i + 3].abilityBit);
}
break;
}
}
-static void sub_81A67EC(void)
+static void GenerateInitialRentalMons(void)
{
- s32 i, j;
+ int i, j;
u8 firstMonId;
u8 battleMode;
u8 lvlMode;
@@ -525,7 +526,7 @@ static void sub_81A67EC(void)
factoryLvlMode = FRONTIER_LVL_50;
firstMonId = 0;
}
- var_40 = sub_81A6F70(factoryBattleMode, factoryLvlMode);
+ var_40 = GetNumPastRentalsRank(factoryBattleMode, factoryLvlMode);
currSpecies = SPECIES_NONE;
i = 0;
@@ -569,7 +570,7 @@ static void sub_81A67EC(void)
if (j != firstMonId + i)
continue;
- gSaveBlock2Ptr->frontier.field_E70[i].monId = monSetId;
+ gSaveBlock2Ptr->frontier.rentalMons[i].monId = monSetId;
species[i] = gFacilityTrainerMons[monSetId].species;
heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId];
monIds[i] = monSetId;
@@ -577,7 +578,7 @@ static void sub_81A67EC(void)
}
}
-static void sub_81A6A08(void)
+static void GetOpponentMostCommonMonType(void)
{
u8 i;
u8 typesCount[NUMBER_OF_MON_TYPES];
@@ -612,7 +613,7 @@ static void sub_81A6A08(void)
gSpecialVar_Result = NUMBER_OF_MON_TYPES;
}
-static void sub_81A6AEC(void)
+static void GetOpponentBattleStyle(void)
{
u8 i, j, count;
u8 stylePoints[8];
@@ -621,13 +622,14 @@ static void sub_81A6AEC(void)
gFacilityTrainerMons = gBattleFrontierMons;
for (i = 0; i < 8; i++)
stylePoints[i] = 0;
+
for (i = 0; i < 3; i++)
{
u16 monSetId = gUnknown_03006298[i];
for (j = 0; j < MAX_MON_MOVES; j++)
{
- u8 id = GetStyleForMove(gFacilityTrainerMons[monSetId].moves[j]);
- stylePoints[id]++;
+ u8 battleStyle = GetMoveBattleStyle(gFacilityTrainerMons[monSetId].moves[j]);
+ stylePoints[battleStyle]++;
}
}
@@ -640,11 +642,12 @@ static void sub_81A6AEC(void)
count++;
}
}
+
if (count > 2)
gSpecialVar_Result = 8;
}
-static u8 GetStyleForMove(u16 move)
+static u8 GetMoveBattleStyle(u16 move)
{
const u16 *moves;
u8 i, j;
@@ -660,12 +663,13 @@ static u8 GetStyleForMove(u16 move)
return 0;
}
-bool8 sub_81A6BF4(void)
+bool8 InBattleFactory(void)
{
- return (gMapHeader.mapLayoutId == 347 || gMapHeader.mapLayoutId == 348);
+ return gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM
+ || gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM;
}
-static void sub_81A6C1C(void)
+static void RestorePlayerPartyHeldItems(void)
{
u8 i;
@@ -678,7 +682,7 @@ static void sub_81A6C1C(void)
{
SetMonData(&gPlayerParty[i],
MON_DATA_HELD_ITEM,
- &gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.field_E70[i].monId].itemTableId]);
+ &gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[i].monId].itemTableId]);
}
}
@@ -697,11 +701,11 @@ u8 GetFactoryMonFixedIV(u8 arg0, u8 arg1)
void FillFactoryBrainParty(void)
{
- s32 i, j, k;
+ int i, j, k;
u16 species[3];
u16 heldItems[3];
u8 friendship;
- s32 monLevel;
+ int monLevel;
u8 fixedIV;
u32 otId;
@@ -724,7 +728,7 @@ void FillFactoryBrainParty(void)
for (j = 0; j < 6; j++)
{
- if (monSetId == gSaveBlock2Ptr->frontier.field_E70[j].monId)
+ if (monSetId == gSaveBlock2Ptr->frontier.rentalMons[j].monId)
break;
}
if (j != 6)
@@ -767,7 +771,7 @@ void FillFactoryBrainParty(void)
static u16 GetMonSetId(u8 lvlMode, u8 challengeNum, bool8 arg2)
{
- u16 range, ret;
+ u16 range, monSetId;
u16 adder;
if (lvlMode == FRONTIER_LVL_50)
@@ -780,14 +784,14 @@ static u16 GetMonSetId(u8 lvlMode, u8 challengeNum, bool8 arg2)
if (arg2)
{
range = (sMonsToChooseFrom[adder + challengeNum + 1][1] - sMonsToChooseFrom[adder + challengeNum + 1][0]) + 1;
- ret = Random() % range;
- ret += sMonsToChooseFrom[adder + challengeNum + 1][0];
+ monSetId = Random() % range;
+ monSetId += sMonsToChooseFrom[adder + challengeNum + 1][0];
}
else
{
range = (sMonsToChooseFrom[adder + challengeNum][1] - sMonsToChooseFrom[adder + challengeNum][0]) + 1;
- ret = Random() % range;
- ret += sMonsToChooseFrom[adder + challengeNum][0];
+ monSetId = Random() % range;
+ monSetId += sMonsToChooseFrom[adder + challengeNum][0];
}
}
else
@@ -796,14 +800,14 @@ static u16 GetMonSetId(u8 lvlMode, u8 challengeNum, bool8 arg2)
if (num != 7)
num = 7;
range = (sMonsToChooseFrom[adder + num][1] - sMonsToChooseFrom[adder + num][0]) + 1;
- ret = Random() % range;
- ret += sMonsToChooseFrom[adder + num][0];
+ monSetId = Random() % range;
+ monSetId += sMonsToChooseFrom[adder + num][0];
}
- return ret;
+ return monSetId;
}
-u8 sub_81A6F70(u8 battleMode, u8 lvlMode)
+u8 GetNumPastRentalsRank(u8 battleMode, u8 lvlMode)
{
u8 ret;
u8 rents = gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode];
@@ -826,7 +830,7 @@ u8 sub_81A6F70(u8 battleMode, u8 lvlMode)
u32 GetAiScriptsInBattleFactory(void)
{
- s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ int lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
if (lvlMode == FRONTIER_LVL_TENT)
{
@@ -834,8 +838,8 @@ u32 GetAiScriptsInBattleFactory(void)
}
else
{
- s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
- s32 challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7;
+ int battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ int 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;
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index 7831ef750..367c1401f 100644
--- a/src/battle_factory_screen.c
+++ b/src/battle_factory_screen.c
@@ -385,10 +385,10 @@ static const struct OamData gUnknown_0861047C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 3,
.paletteNum = 0,
@@ -402,10 +402,10 @@ static const struct OamData gUnknown_08610484 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 3,
.paletteNum = 0,
@@ -419,10 +419,10 @@ static const struct OamData gUnknown_0861048C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(32x16),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x16),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -436,10 +436,10 @@ static const struct OamData gUnknown_08610494 =
.objMode = 1,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -1183,7 +1183,7 @@ static void CB2_InitSelectScreen(void)
break;
case 5:
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
- sFactorySelectScreen->cursorPos = gUnknown_0203CF20;
+ sFactorySelectScreen->cursorPos = gLastViewedMonIndex;
Select_InitMonsData();
Select_InitAllSprites();
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
@@ -1673,12 +1673,12 @@ static void CreateFrontierFactorySelectableMons(u8 firstMonId)
else
level = 50;
- var_28 = sub_81A6F70(battleMode, lvlMode);
+ var_28 = GetNumPastRentalsRank(battleMode, lvlMode);
otId = T1_READ_32(gSaveBlock2Ptr->playerTrainerId);
for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
{
- u16 monSetId = gSaveBlock2Ptr->frontier.field_E70[i].monId;
+ u16 monSetId = gSaveBlock2Ptr->frontier.rentalMons[i].monId;
sFactorySelectScreen->mons[i + firstMonId].monSetId = monSetId;
if (i < var_28)
ivs = GetFactoryMonFixedIV(challengeNum + 1, 0);
@@ -1712,7 +1712,7 @@ static void CreateTentFactorySelectableMons(u8 firstMonId)
for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
{
- u16 monSetId = gSaveBlock2Ptr->frontier.field_E70[i].monId;
+ u16 monSetId = gSaveBlock2Ptr->frontier.rentalMons[i].monId;
sFactorySelectScreen->mons[i + firstMonId].monSetId = monSetId;
CreateMonWithEVSpreadNatureOTID(&sFactorySelectScreen->mons[i + firstMonId].monData,
gFacilityTrainerMons[monSetId].species,
@@ -1740,10 +1740,10 @@ static void Select_CopyMonsToPlayerParty(void)
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);
+ gSaveBlock2Ptr->frontier.rentalMons[i].monId = sFactorySelectScreen->mons[j].monSetId;
+ gSaveBlock2Ptr->frontier.rentalMons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY, NULL);
+ gSaveBlock2Ptr->frontier.rentalMons[i].abilityBit = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ALT_ABILITY, NULL);
+ gSaveBlock2Ptr->frontier.rentalMons[i].ivs = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ATK_IV, NULL);
break;
}
}
@@ -1786,14 +1786,14 @@ static void sub_819B958(u8 windowId)
{
gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = TRUE;
gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = TRUE;
- FillWindowPixelBuffer(windowId, 0);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
CopyWindowToVram(windowId, 2);
ClearWindowTilemap(windowId);
}
static void Select_PrintRentalPkmnString(void)
{
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
AddTextPrinterParameterized(0, 1, gText_RentalPkmn2, 2, 1, 0, NULL);
CopyWindowToVram(0, 3);
}
@@ -1804,7 +1804,7 @@ static void Select_PrintMonSpecies(void)
u8 x;
u8 monId = sFactorySelectScreen->cursorPos;
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL);
StringCopy(gStringVar4, gSpeciesNames[species]);
x = GetStringRightAlignXOffset(1, gStringVar4, 86);
@@ -1816,7 +1816,7 @@ static void Select_PrintSelectMonString(void)
{
const u8 *str = NULL;
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
if (sFactorySelectScreen->selectingMonsState == 1)
str = gText_SelectFirstPkmn;
else if (sFactorySelectScreen->selectingMonsState == 2)
@@ -1832,7 +1832,7 @@ static void Select_PrintSelectMonString(void)
static void Select_PrintCantSelectSameMon(void)
{
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
AddTextPrinterParameterized(2, 1, gText_CantSelectSamePkmn, 2, 5, 0, NULL);
CopyWindowToVram(2, 2);
}
@@ -1842,7 +1842,7 @@ static void Select_PrintMenuOptions(void)
u8 selectedId = sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].selectedId;
PutWindowTilemap(3);
- FillWindowPixelBuffer(3, 0);
+ FillWindowPixelBuffer(3, PIXEL_FILL(0));
AddTextPrinterParameterized3(3, 1, 7, 1, gUnknown_08610476, 0, gText_Summary);
if (selectedId != 0)
AddTextPrinterParameterized3(3, 1, 7, 17, gUnknown_08610476, 0, gText_Deselect);
@@ -1856,7 +1856,7 @@ static void Select_PrintMenuOptions(void)
static void Select_PrintYesNoOptions(void)
{
PutWindowTilemap(4);
- FillWindowPixelBuffer(4, 0);
+ FillWindowPixelBuffer(4, PIXEL_FILL(0));
AddTextPrinterParameterized3(4, 1, 7, 1, gUnknown_08610476, 0, gText_Yes2);
AddTextPrinterParameterized3(4, 1, 7, 17, gUnknown_08610476, 0, gText_No2);
CopyWindowToVram(4, 3);
@@ -1924,7 +1924,7 @@ static void Select_PrintMonCategory(void)
if (monId < SELECTABLE_MONS_COUNT)
{
PutWindowTilemap(5);
- FillWindowPixelBuffer(5, 0);
+ FillWindowPixelBuffer(5, PIXEL_FILL(0));
species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL);
CopyMonCategoryText(SpeciesToNationalPokedexNum(species), text);
x = GetStringRightAlignXOffset(1, text, 0x76);
@@ -2263,10 +2263,10 @@ static void CopySwappedMonData(void)
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);
+ gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].monId = gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->enemyMonId + 3].monId;
+ gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].ivs = gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->enemyMonId + 3].ivs;
+ gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].personality = GetMonData(&gEnemyParty[sFactorySwapScreen->enemyMonId], MON_DATA_PERSONALITY, NULL);
+ gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].abilityBit = GetBoxMonData(&gEnemyParty[sFactorySwapScreen->enemyMonId].box, MON_DATA_ALT_ABILITY, NULL);
}
static void Task_FromSwapScreenToSummaryScreen(u8 taskId)
@@ -2873,7 +2873,7 @@ static void sub_819D588(u8 taskId)
case 3:
if (!gPaletteFade.active)
{
- FillWindowPixelBuffer(5, 0);
+ FillWindowPixelBuffer(5, PIXEL_FILL(0));
CopyWindowToVram(5, 2);
if (sFactorySwapScreen->inEnemyScreen == TRUE)
{
@@ -3002,7 +3002,7 @@ static void sub_819D770(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 6:
- FillWindowPixelBuffer(5, 0);
+ FillWindowPixelBuffer(5, PIXEL_FILL(0));
CopyWindowToVram(5, 2);
gTasks[taskId].data[0]++;
break;
@@ -3172,7 +3172,7 @@ static void CB2_InitSwapScreen(void)
break;
case 5:
if (sFactorySwapScreen->fromSummaryScreen == TRUE)
- sFactorySwapScreen->cursorPos = gUnknown_0203CF20;
+ sFactorySwapScreen->cursorPos = gLastViewedMonIndex;
gMain.state++;
break;
case 6:
@@ -3546,7 +3546,7 @@ static void sub_819EA64(u8 windowId)
{
gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = TRUE;
gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = TRUE;
- FillWindowPixelBuffer(windowId, 0);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
CopyWindowToVram(windowId, 2);
ClearWindowTilemap(windowId);
}
@@ -3554,14 +3554,14 @@ static void sub_819EA64(u8 windowId)
static void sub_819EAC0(void)
{
PutWindowTilemap(1);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
CopyWindowToVram(1, 2);
}
static void sub_819EADC(void)
{
PutWindowTilemap(7);
- FillWindowPixelBuffer(7, 0);
+ FillWindowPixelBuffer(7, PIXEL_FILL(0));
CopyWindowToVram(7, 2);
}
@@ -3569,13 +3569,13 @@ static void sub_819EAF8(void)
{
sub_819EAC0();
PutWindowTilemap(5);
- FillWindowPixelBuffer(5, 0);
+ FillWindowPixelBuffer(5, PIXEL_FILL(0));
CopyWindowToVram(5, 2);
}
static void Swap_PrintPkmnSwap(void)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, 1, gText_PkmnSwap, 2, 1, 0, NULL);
CopyWindowToVram(0, 3);
}
@@ -3585,7 +3585,7 @@ static void Swap_PrintMonSpecies(void)
u16 species;
u8 x;
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
if (sFactorySwapScreen->cursorPos > 2)
{
CopyWindowToVram(1, 2);
@@ -3606,7 +3606,7 @@ static void Swap_PrintMonSpecies(void)
static void Swap_PrintOnInfoWindow(const u8 *str)
{
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
AddTextPrinterParameterized(2, 1, str, 2, 5, 0, NULL);
CopyWindowToVram(2, 2);
}
@@ -3614,7 +3614,7 @@ static void Swap_PrintOnInfoWindow(const u8 *str)
static void Swap_PrintMenuOptions(void)
{
PutWindowTilemap(3);
- FillWindowPixelBuffer(3, 0);
+ FillWindowPixelBuffer(3, PIXEL_FILL(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);
@@ -3624,7 +3624,7 @@ static void Swap_PrintMenuOptions(void)
static void Swap_PrintYesNoOptions(void)
{
PutWindowTilemap(4);
- FillWindowPixelBuffer(4, 0);
+ FillWindowPixelBuffer(4, PIXEL_FILL(0));
AddTextPrinterParameterized3(4, 1, 7, 1, gUnknown_08610922, 0, gText_Yes3);
AddTextPrinterParameterized3(4, 1, 7, 17, gUnknown_08610922, 0, gText_No3);
CopyWindowToVram(4, 3);
@@ -3638,7 +3638,7 @@ static void Swap_PrintActionString(const u8 *str, u32 y, u32 windowId)
static void Swap_PrintActionStrings(void)
{
- FillWindowPixelBuffer(5, 0);
+ FillWindowPixelBuffer(5, PIXEL_FILL(0));
switch (sFactorySwapScreen->inEnemyScreen)
{
case TRUE:
@@ -3652,7 +3652,7 @@ static void Swap_PrintActionStrings(void)
static void Swap_PrintActionStrings2(void)
{
- FillWindowPixelBuffer(3, 0);
+ FillWindowPixelBuffer(3, PIXEL_FILL(0));
switch (sFactorySwapScreen->inEnemyScreen)
{
case TRUE:
@@ -3693,7 +3693,7 @@ static void Swap_PrintMonSpecies2(void)
LoadPalette(pal, 0xF0, 0xA);
PutWindowTilemap(7);
- FillWindowPixelBuffer(7, 0);
+ FillWindowPixelBuffer(7, PIXEL_FILL(0));
if (sFactorySwapScreen->cursorPos > 2)
{
CopyWindowToVram(7, 3);
@@ -3745,7 +3745,7 @@ static void Swap_PrintMonCategory(void)
u8 x;
u8 monId = sFactorySwapScreen->cursorPos;
- FillWindowPixelBuffer(8, 0);
+ FillWindowPixelBuffer(8, PIXEL_FILL(0));
if (monId > 2)
{
CopyWindowToVram(8, 2);
@@ -3940,7 +3940,7 @@ static void Task_SwapCantHaveSameMons(u8 taskId)
case 2:
if (sFactorySwapScreen->unk30 != TRUE)
{
- FillWindowPixelBuffer(5, 0);
+ FillWindowPixelBuffer(5, PIXEL_FILL(0));
CopyWindowToVram(5, 2);
gTasks[taskId].data[0]++;
}
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 0eb494db4..a8651f6cf 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -35,125 +35,126 @@ struct TestingBar
};
enum
-{
- HEALTHBOX_GFX_0,
- HEALTHBOX_GFX_1,
- HEALTHBOX_GFX_2,
- HEALTHBOX_GFX_HP_BAR_GREEN,
- HEALTHBOX_GFX_4,
- HEALTHBOX_GFX_5,
- HEALTHBOX_GFX_6,
- HEALTHBOX_GFX_7,
- HEALTHBOX_GFX_8,
- HEALTHBOX_GFX_9,
- HEALTHBOX_GFX_10,
- HEALTHBOX_GFX_11,
- HEALTHBOX_GFX_12,
- HEALTHBOX_GFX_13,
- HEALTHBOX_GFX_14,
- HEALTHBOX_GFX_15,
- HEALTHBOX_GFX_16,
- HEALTHBOX_GFX_17,
- HEALTHBOX_GFX_18,
- HEALTHBOX_GFX_19,
- HEALTHBOX_GFX_20,
- HEALTHBOX_GFX_STATUS_PSN_BATTLER0,
- HEALTHBOX_GFX_22,
- HEALTHBOX_GFX_23,
- HEALTHBOX_GFX_STATUS_PRZ_BATTLER0,
+{ // Corresponds to gHealthboxElementsGfxTable (and the tables after it) in graphics.c
+ // These are indexes into the tables, which are filled with 8x8 square pixel data.
+ HEALTHBOX_GFX_0, //hp bar [black section]
+ HEALTHBOX_GFX_1, //hp bar "H"
+ HEALTHBOX_GFX_2, //hp bar "P"
+ HEALTHBOX_GFX_HP_BAR_GREEN, //hp bar [0 pixels]
+ HEALTHBOX_GFX_4, //hp bar [1 pixels]
+ HEALTHBOX_GFX_5, //hp bar [2 pixels]
+ HEALTHBOX_GFX_6, //hp bar [3 pixels]
+ HEALTHBOX_GFX_7, //hp bar [4 pixels]
+ HEALTHBOX_GFX_8, //hp bar [5 pixels]
+ HEALTHBOX_GFX_9, //hp bar [6 pixels]
+ HEALTHBOX_GFX_10, //hp bar [7 pixels]
+ HEALTHBOX_GFX_11, //hp bar [8 pixels]
+ HEALTHBOX_GFX_12, //exp bar [0 pixels]
+ HEALTHBOX_GFX_13, //exp bar [1 pixels]
+ HEALTHBOX_GFX_14, //exp bar [2 pixels]
+ HEALTHBOX_GFX_15, //exp bar [3 pixels]
+ HEALTHBOX_GFX_16, //exp bar [4 pixels]
+ HEALTHBOX_GFX_17, //exp bar [5 pixels]
+ HEALTHBOX_GFX_18, //exp bar [6 pixels]
+ HEALTHBOX_GFX_19, //exp bar [7 pixels]
+ HEALTHBOX_GFX_20, //exp bar [8 pixels]
+ HEALTHBOX_GFX_STATUS_PSN_BATTLER0, //status psn "(P"
+ HEALTHBOX_GFX_22, //status psn "SN"
+ HEALTHBOX_GFX_23, //status psn "|)""
+ HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, //status prz
HEALTHBOX_GFX_25,
HEALTHBOX_GFX_26,
- HEALTHBOX_GFX_STATUS_SLP_BATTLER0,
+ HEALTHBOX_GFX_STATUS_SLP_BATTLER0, //status slp
HEALTHBOX_GFX_28,
HEALTHBOX_GFX_29,
- HEALTHBOX_GFX_STATUS_FRZ_BATTLER0,
+ HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, //status frz
HEALTHBOX_GFX_31,
HEALTHBOX_GFX_32,
- HEALTHBOX_GFX_STATUS_BRN_BATTLER0,
+ HEALTHBOX_GFX_STATUS_BRN_BATTLER0, //status brn
HEALTHBOX_GFX_34,
HEALTHBOX_GFX_35,
- HEALTHBOX_GFX_36,
- HEALTHBOX_GFX_37,
- HEALTHBOX_GFX_38,
- HEALTHBOX_GFX_39,
- HEALTHBOX_GFX_40,
- HEALTHBOX_GFX_41,
- HEALTHBOX_GFX_42,
- HEALTHBOX_GFX_43,
- HEALTHBOX_GFX_44,
- HEALTHBOX_GFX_45,
- HEALTHBOX_GFX_46,
- HEALTHBOX_GFX_HP_BAR_YELLOW,
- HEALTHBOX_GFX_48,
- HEALTHBOX_GFX_49,
- HEALTHBOX_GFX_50,
- HEALTHBOX_GFX_51,
- HEALTHBOX_GFX_52,
- HEALTHBOX_GFX_53,
- HEALTHBOX_GFX_54,
- HEALTHBOX_GFX_55,
- HEALTHBOX_GFX_HP_BAR_RED,
- HEALTHBOX_GFX_57,
- HEALTHBOX_GFX_58,
- HEALTHBOX_GFX_59,
- HEALTHBOX_GFX_60,
- HEALTHBOX_GFX_61,
- HEALTHBOX_GFX_62,
- HEALTHBOX_GFX_63,
- HEALTHBOX_GFX_64,
- HEALTHBOX_GFX_65,
- HEALTHBOX_GFX_66,
- HEALTHBOX_GFX_67,
- HEALTHBOX_GFX_68,
- HEALTHBOX_GFX_69,
- HEALTHBOX_GFX_70,
- HEALTHBOX_GFX_STATUS_PSN_BATTLER1,
+ HEALTHBOX_GFX_36, //misc [Black section]
+ HEALTHBOX_GFX_37, //misc [Black section]
+ HEALTHBOX_GFX_38, //misc [Black section]
+ HEALTHBOX_GFX_39, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_40, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_41, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_42, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_43, //misc [Top of Health Window?]
+ HEALTHBOX_GFX_44, //misc [Top of Health Window?]
+ HEALTHBOX_GFX_45, //misc [Top of Health Window?]
+ HEALTHBOX_GFX_46, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_HP_BAR_YELLOW, //hp bar yellow [0 pixels]
+ HEALTHBOX_GFX_48, //hp bar yellow [1 pixels]
+ HEALTHBOX_GFX_49, //hp bar yellow [2 pixels]
+ HEALTHBOX_GFX_50, //hp bar yellow [3 pixels]
+ HEALTHBOX_GFX_51, //hp bar yellow [4 pixels]
+ HEALTHBOX_GFX_52, //hp bar yellow [5 pixels]
+ HEALTHBOX_GFX_53, //hp bar yellow [6 pixels]
+ HEALTHBOX_GFX_54, //hp bar yellow [7 pixels]
+ HEALTHBOX_GFX_55, //hp bar yellow [8 pixels]
+ HEALTHBOX_GFX_HP_BAR_RED, //hp bar red [0 pixels]
+ HEALTHBOX_GFX_57, //hp bar red [1 pixels]
+ HEALTHBOX_GFX_58, //hp bar red [2 pixels]
+ HEALTHBOX_GFX_59, //hp bar red [3 pixels]
+ HEALTHBOX_GFX_60, //hp bar red [4 pixels]
+ HEALTHBOX_GFX_61, //hp bar red [5 pixels]
+ HEALTHBOX_GFX_62, //hp bar red [6 pixels]
+ HEALTHBOX_GFX_63, //hp bar red [7 pixels]
+ HEALTHBOX_GFX_64, //hp bar red [8 pixels]
+ HEALTHBOX_GFX_65, //hp bar frame end
+ HEALTHBOX_GFX_66, //status ball [full]
+ HEALTHBOX_GFX_67, //status ball [empty]
+ HEALTHBOX_GFX_68, //status ball [fainted]
+ HEALTHBOX_GFX_69, //status ball [statused]
+ HEALTHBOX_GFX_70, //status ball [unused extra]
+ HEALTHBOX_GFX_STATUS_PSN_BATTLER1, //status2 "PSN"
HEALTHBOX_GFX_72,
HEALTHBOX_GFX_73,
- HEALTHBOX_GFX_STATUS_PRZ_BATTLER1,
+ HEALTHBOX_GFX_STATUS_PRZ_BATTLER1, //status2 "PRZ"
HEALTHBOX_GFX_75,
HEALTHBOX_GFX_76,
- HEALTHBOX_GFX_STATUS_SLP_BATTLER1,
+ HEALTHBOX_GFX_STATUS_SLP_BATTLER1, //status2 "SLP"
HEALTHBOX_GFX_78,
HEALTHBOX_GFX_79,
- HEALTHBOX_GFX_STATUS_FRZ_BATTLER1,
+ HEALTHBOX_GFX_STATUS_FRZ_BATTLER1, //status2 "FRZ"
HEALTHBOX_GFX_81,
HEALTHBOX_GFX_82,
- HEALTHBOX_GFX_STATUS_BRN_BATTLER1,
+ HEALTHBOX_GFX_STATUS_BRN_BATTLER1, //status2 "BRN"
HEALTHBOX_GFX_84,
HEALTHBOX_GFX_85,
- HEALTHBOX_GFX_STATUS_PSN_BATTLER2,
+ HEALTHBOX_GFX_STATUS_PSN_BATTLER2, //status3 "PSN"
HEALTHBOX_GFX_87,
HEALTHBOX_GFX_88,
- HEALTHBOX_GFX_STATUS_PRZ_BATTLER2,
+ HEALTHBOX_GFX_STATUS_PRZ_BATTLER2, //status3 "PRZ"
HEALTHBOX_GFX_90,
HEALTHBOX_GFX_91,
- HEALTHBOX_GFX_STATUS_SLP_BATTLER2,
+ HEALTHBOX_GFX_STATUS_SLP_BATTLER2, //status3 "SLP"
HEALTHBOX_GFX_93,
HEALTHBOX_GFX_94,
- HEALTHBOX_GFX_STATUS_FRZ_BATTLER2,
+ HEALTHBOX_GFX_STATUS_FRZ_BATTLER2, //status3 "FRZ"
HEALTHBOX_GFX_96,
HEALTHBOX_GFX_97,
- HEALTHBOX_GFX_STATUS_BRN_BATTLER2,
+ HEALTHBOX_GFX_STATUS_BRN_BATTLER2, //status3 "BRN"
HEALTHBOX_GFX_99,
HEALTHBOX_GFX_100,
- HEALTHBOX_GFX_STATUS_PSN_BATTLER3,
+ HEALTHBOX_GFX_STATUS_PSN_BATTLER3, //status4 "PSN"
HEALTHBOX_GFX_102,
HEALTHBOX_GFX_103,
- HEALTHBOX_GFX_STATUS_PRZ_BATTLER3,
+ HEALTHBOX_GFX_STATUS_PRZ_BATTLER3, //status4 "PRZ"
HEALTHBOX_GFX_105,
HEALTHBOX_GFX_106,
- HEALTHBOX_GFX_STATUS_SLP_BATTLER3,
+ HEALTHBOX_GFX_STATUS_SLP_BATTLER3, //status4 "SLP"
HEALTHBOX_GFX_108,
HEALTHBOX_GFX_109,
- HEALTHBOX_GFX_STATUS_FRZ_BATTLER3,
+ HEALTHBOX_GFX_STATUS_FRZ_BATTLER3, //status4 "FRZ"
HEALTHBOX_GFX_111,
HEALTHBOX_GFX_112,
- HEALTHBOX_GFX_STATUS_BRN_BATTLER3,
+ HEALTHBOX_GFX_STATUS_BRN_BATTLER3, //status4 "BRN"
HEALTHBOX_GFX_114,
HEALTHBOX_GFX_115,
- HEALTHBOX_GFX_116,
- HEALTHBOX_GFX_117,
+ HEALTHBOX_GFX_116, //unknown_D12FEC
+ HEALTHBOX_GFX_117, //unknown_D1300C
};
extern const u8 *const gNatureNamePointers[];
@@ -206,10 +207,10 @@ static const struct OamData sUnknown_0832C138 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(64x32),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -278,10 +279,10 @@ static const struct OamData sOamData_Healthbar =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(32x8),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(32x8),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -445,10 +446,10 @@ static const struct OamData sUnknown_0832C354 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(64x32),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -462,10 +463,10 @@ static const struct OamData sOamData_StatusSummaryBalls =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -2578,7 +2579,7 @@ static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y,
struct WindowTemplate winTemplate = sHealthboxWindowTemplate;
winId = AddWindow(&winTemplate);
- FillWindowPixelBuffer(winId, (bgColor << 4) | (bgColor));
+ FillWindowPixelBuffer(winId, PIXEL_FILL(bgColor));
color[0] = bgColor;
color[1] = 1;
diff --git a/src/battle_main.c b/src/battle_main.c
index 09ea3dfc9..0f593fef6 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -57,6 +57,7 @@
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/trainers.h"
+#include "cable_club.h"
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
@@ -69,9 +70,6 @@ extern const u8 *const gBattlescriptsForRunningByItem[];
extern const u8 *const gBattlescriptsForUsingItem[];
extern const u8 *const gBattlescriptsForSafariActions[];
-// functions
-extern void sub_80B3AF8(u8 taskId); // cable club
-
// this file's functions
static void CB2_InitBattleInternal(void);
static void CB2_PreInitMultiBattle(void);
@@ -139,7 +137,7 @@ static void HandleAction_ThrowPokeblock(void);
static void HandleAction_GoNear(void);
static void HandleAction_SafariZoneRun(void);
static void HandleAction_WallyBallThrow(void);
-static void HandleAction_Action11(void);
+static void HandleAction_TryFinish(void);
static void HandleAction_NothingIsFainted(void);
static void HandleAction_ActionFinished(void);
@@ -298,10 +296,10 @@ const struct OamData gOamData_831ACA8 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -315,10 +313,10 @@ const struct OamData gOamData_831ACB0 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 2,
.paletteNum = 2,
@@ -553,7 +551,7 @@ static void (* const sTurnActionsFuncsTable[])(void) =
[B_ACTION_SAFARI_RUN] = HandleAction_SafariZoneRun,
[B_ACTION_WALLY_THROW] = HandleAction_WallyBallThrow,
[B_ACTION_EXEC_SCRIPT] = HandleAction_RunBattleScript,
- [11] = HandleAction_Action11, // not sure about this one
+ [B_ACTION_TRY_FINISH] = HandleAction_TryFinish,
[B_ACTION_FINISHED] = HandleAction_ActionFinished,
[B_ACTION_NOTHING_FAINTED] = HandleAction_NothingIsFainted,
};
@@ -3279,7 +3277,7 @@ void FaintClearSetData(void)
gProtectStructs[gActiveBattler].targetNotAffected = 0;
gProtectStructs[gActiveBattler].chargingTurn = 0;
gProtectStructs[gActiveBattler].fleeFlag = 0;
- gProtectStructs[gActiveBattler].usedImprisionedMove = 0;
+ gProtectStructs[gActiveBattler].usedImprisonedMove = 0;
gProtectStructs[gActiveBattler].loveImmobility = 0;
gProtectStructs[gActiveBattler].usedDisabledMove = 0;
gProtectStructs[gActiveBattler].usedTauntedMove = 0;
@@ -5845,7 +5843,7 @@ static void HandleAction_WallyBallThrow(void)
gActionsByTurnOrder[1] = B_ACTION_FINISHED;
}
-static void HandleAction_Action11(void)
+static void HandleAction_TryFinish(void)
{
if (!HandleFaintedMonActions())
{
diff --git a/src/battle_message.c b/src/battle_message.c
index 164108dec..6762cd416 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -1357,7 +1357,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
{
// The corresponding WindowTemplate is gStandardBattleWindowTemplates[] within src/battle_bg.c
{ // 0 Standard battle message
- .fillValue = 0xFF,
+ .fillValue = PIXEL_FILL(0xF),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1369,7 +1369,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 6,
},
{ // 1 "What will (pokemon) do?"
- .fillValue = 0xFF,
+ .fillValue = PIXEL_FILL(0xF),
.fontId = 1,
.x = 1,
.y = 1,
@@ -1381,7 +1381,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 6,
},
{ // 2 "Fight/Pokemon/Bag/Run"
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1393,7 +1393,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 3 Top left move
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1405,7 +1405,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 4 Top right move
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1417,7 +1417,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 5 Bottom left move
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1429,7 +1429,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 6 Bottom right move
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1441,7 +1441,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 7 "PP"
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1453,7 +1453,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 11,
},
{ // 8
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1465,7 +1465,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 9 PP remaining
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 2,
.y = 1,
@@ -1477,7 +1477,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 11,
},
{ // 10 "type"
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1489,7 +1489,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 11 "switch which?"
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1501,7 +1501,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 12 "gText_BattleYesNoChoice"
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1513,7 +1513,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 13
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1525,7 +1525,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 14
- .fillValue = 0x0,
+ .fillValue = PIXEL_FILL(0),
.fontId = 1,
.x = 32,
.y = 1,
@@ -1537,7 +1537,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 2,
},
{ // 15
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1549,7 +1549,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 16
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1561,7 +1561,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 17
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1573,7 +1573,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 18
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1585,7 +1585,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 19
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1597,7 +1597,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 20
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1609,7 +1609,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 21
- .fillValue = 0x0,
+ .fillValue = PIXEL_FILL(0),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1621,7 +1621,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 6,
},
{ // 22
- .fillValue = 0x0,
+ .fillValue = PIXEL_FILL(0),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1633,7 +1633,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 6,
},
{ // 23
- .fillValue = 0x0,
+ .fillValue = PIXEL_FILL(0x0),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1649,7 +1649,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
{
{ // 0
- .fillValue = 0xFF,
+ .fillValue = PIXEL_FILL(0xF),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1661,7 +1661,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 6,
},
{ // 1
- .fillValue = 0xFF,
+ .fillValue = PIXEL_FILL(0xF),
.fontId = 1,
.x = 1,
.y = 1,
@@ -1673,7 +1673,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 6,
},
{ // 2
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1685,7 +1685,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 3
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1697,7 +1697,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 4
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1709,7 +1709,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 5
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1721,7 +1721,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 6
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1733,7 +1733,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 7
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1745,7 +1745,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 11,
},
{ // 8
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1757,7 +1757,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 9
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 2,
.y = 1,
@@ -1769,7 +1769,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 11,
},
{ // 10
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1781,7 +1781,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 11
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1793,7 +1793,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 12
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1805,7 +1805,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 13
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1817,7 +1817,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 14
- .fillValue = 0x0,
+ .fillValue = PIXEL_FILL(0),
.fontId = 1,
.x = 32,
.y = 1,
@@ -1829,7 +1829,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 2,
},
{ // 15
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1841,7 +1841,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 16
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1853,7 +1853,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 17
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1865,7 +1865,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 18
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1877,7 +1877,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 19
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1889,7 +1889,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 20
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1901,7 +1901,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 21
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1913,7 +1913,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 22
- .fillValue = 0x11,
+ .fillValue = PIXEL_FILL(0x1),
.fontId = 1,
.x = 0,
.y = 1,
diff --git a/src/battle_pike.c b/src/battle_pike.c
index c12038efb..cc58b81bb 100644
--- a/src/battle_pike.c
+++ b/src/battle_pike.c
@@ -16,6 +16,8 @@
#include "constants/event_objects.h"
#include "constants/battle_frontier.h"
#include "constants/abilities.h"
+#include "constants/easy_chat.h"
+#include "constants/layouts.h"
#include "constants/rgb.h"
#include "constants/trainers.h"
#include "constants/species.h"
@@ -35,12 +37,12 @@
#define PIKE_STATUS_KIRLIA 0
#define PIKE_STATUS_DUSCLOPS 1
-struct Unk0861231C
+struct PikeRoomNPC
{
- u16 unk0;
- u8 unk2;
- u8 unk3;
- u8 unk4;
+ u16 graphicsId;
+ u8 speechId1;
+ u8 speechId2;
+ u8 speechId3;
};
struct PikeWildMon
@@ -55,50 +57,50 @@ 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;
+static IWRAM_DATA u8 sNpcId;
// 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 SetRoomType(void);
+static void GetBattlePikeData(void);
+static void SetBattlePikeData(void);
+static void GetInFinalRoom(void);
+static void SetupRoomEventObjects(void);
+static void GetRoomType(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 void GetRoomInflictedStatus(void);
+static void GetRoomInflictedStatusMon(void);
+static void HealOneOrTwoMons(void);
+static void BufferNPCMessage(void);
+static void StatusInflictionScreenFade(void);
+static void GetInBattlePike(void);
+static void SetHintedRoom(void);
+static void GetHintedRoomIndex(void);
+static void GetRoomTypeHint(void);
+static void ClearPikeTrainerIds(void);
+static void BufferRecordMixingTrainerMessage(void);
+static void GetCurrentRoomPikeQueenFightType(void);
+static void HealSomeMonsBeforePikeQueen(void);
+static void SetHealingRoomsDisabled(void);
+static void CanAnyPartyMonsBeHealed(void);
+static void BackupMonHeldItems(void);
+static void RestoreMonHeldItems(void);
+static void InitPikeChallenge(void);
static u8 GetNextRoomType(void);
static void PrepareOneTrainer(bool8 difficult);
-static u16 sub_81A7B58(void);
+static u16 GetNPCRoomGraphicsId(void);
static void PrepareTwoTrainers(void);
static void TryHealMons(u8 healCount);
-static void sub_81A7EE4(u8 taskId);
+static void Task_DoStatusInflictionScreenFade(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);
+static u8 GetPikeQueenFightType(u8);
+static bool8 StatusInflictionFadeOut(struct Task *task);
+static bool8 StatusInflictionFadeIn(struct Task *task);
// Const rom data.
static const struct PikeWildMon sLvl50_Mons1[] =
@@ -275,253 +277,264 @@ static const struct PikeWildMon *const *const sWildMons[2] =
[FRONTIER_LVL_OPEN] = sLvlOpenMons
};
-static const struct Unk0861231C gUnknown_0861231C[] =
+static const struct PikeRoomNPC sNPCTable[] =
{
{
- .unk0 = 0x0012,
- .unk2 = 0x03,
- .unk3 = 0x05,
- .unk4 = 0x06
+ .graphicsId = EVENT_OBJ_GFX_POKEFAN_F,
+ .speechId1 = 3,
+ .speechId2 = 5,
+ .speechId3 = 6
},
{
- .unk0 = 0x0005,
- .unk2 = 0x0d,
- .unk3 = 0x20,
- .unk4 = 0x25
+ .graphicsId = EVENT_OBJ_GFX_NINJA_BOY,
+ .speechId1 = 13,
+ .speechId2 = 32,
+ .speechId3 = 37
},
{
- .unk0 = 0x0011,
- .unk2 = 0x08,
- .unk3 = 0x0b,
- .unk4 = 0x0c
+ .graphicsId = EVENT_OBJ_GFX_FAT_MAN,
+ .speechId1 = 8,
+ .speechId2 = 11,
+ .speechId3 = 12
},
{
- .unk0 = 0x0024,
- .unk2 = 0x22,
- .unk3 = 0x1e,
- .unk4 = 0x21
+ .graphicsId = EVENT_OBJ_GFX_BUG_CATCHER,
+ .speechId1 = 34,
+ .speechId2 = 30,
+ .speechId3 = 33
},
{
- .unk0 = 0x0015,
- .unk2 = 0x00,
- .unk3 = 0x00,
- .unk4 = 0x00
+ .graphicsId = EVENT_OBJ_GFX_EXPERT_M,
+ .speechId1 = 0,
+ .speechId2 = 0,
+ .speechId3 = 0
},
{
- .unk0 = 0x001e,
- .unk2 = 0x01,
- .unk3 = 0x01,
- .unk4 = 0x01
+ .graphicsId = EVENT_OBJ_GFX_OLD_WOMAN,
+ .speechId1 = 1,
+ .speechId2 = 1,
+ .speechId3 = 1
},
{
- .unk0 = 0x002c,
- .unk2 = 0x16,
- .unk3 = 0x17,
- .unk4 = 0x1b
+ .graphicsId = EVENT_OBJ_GFX_BLACK_BELT,
+ .speechId1 = 22,
+ .speechId2 = 23,
+ .speechId3 = 27
},
{
- .unk0 = 0x0037,
- .unk2 = 0x08,
- .unk3 = 0x16,
- .unk4 = 0x1f
+ .graphicsId = EVENT_OBJ_GFX_HIKER,
+ .speechId1 = 8,
+ .speechId2 = 22,
+ .speechId3 = 31
},
{
- .unk0 = 0x000e,
- .unk2 = 0x0d,
- .unk3 = 0x27,
- .unk4 = 0x15
+ .graphicsId = EVENT_OBJ_GFX_GIRL_3,
+ .speechId1 = 13,
+ .speechId2 = 39,
+ .speechId3 = 21
},
{
- .unk0 = 0x0014,
- .unk2 = 0x02,
- .unk3 = 0x04,
- .unk4 = 0x11
+ .graphicsId = EVENT_OBJ_GFX_WOMAN_2,
+ .speechId1 = 2,
+ .speechId2 = 4,
+ .speechId3 = 17
},
{
- .unk0 = 0x0038,
- .unk2 = 0x1e,
- .unk3 = 0x14,
- .unk4 = 0x24
+ .graphicsId = EVENT_OBJ_GFX_CYCLING_TRIATHLETE_M,
+ .speechId1 = 30,
+ .speechId2 = 20,
+ .speechId3 = 36
},
{
- .unk0 = 0x0042,
- .unk2 = 0x1c,
- .unk3 = 0x22,
- .unk4 = 0x19
+ .graphicsId = EVENT_OBJ_GFX_MAN_5,
+ .speechId1 = 28,
+ .speechId2 = 34,
+ .speechId3 = 25
},
{
- .unk0 = 0x0026,
- .unk2 = 0x17,
- .unk3 = 0x26,
- .unk4 = 0x1a
+ .graphicsId = EVENT_OBJ_GFX_SCHOOL_KID_M,
+ .speechId1 = 23,
+ .speechId2 = 38,
+ .speechId3 = 26
},
{
- .unk0 = 0x0032,
- .unk2 = 0x17,
- .unk3 = 0x1e,
- .unk4 = 0x0b
+ .graphicsId = EVENT_OBJ_GFX_FISHERMAN,
+ .speechId1 = 23,
+ .speechId2 = 30,
+ .speechId3 = 11
},
{
- .unk0 = 0x002f,
- .unk2 = 0x0f,
- .unk3 = 0x13,
- .unk4 = 0x0e
+ .graphicsId = EVENT_OBJ_GFX_LASS,
+ .speechId1 = 15,
+ .speechId2 = 19,
+ .speechId3 = 14
},
{
- .unk0 = 0x0027,
- .unk2 = 0x02,
- .unk3 = 0x1d,
- .unk4 = 0x1a
+ .graphicsId = EVENT_OBJ_GFX_MANIAC,
+ .speechId1 = 2,
+ .speechId2 = 29,
+ .speechId3 = 26
},
{
- .unk0 = 0x0033,
- .unk2 = 0x25,
- .unk3 = 0x0c,
- .unk4 = 0x20
+ .graphicsId = EVENT_OBJ_GFX_RUNNING_TRIATHLETE_M,
+ .speechId1 = 37,
+ .speechId2 = 12,
+ .speechId3 = 32
},
{
- .unk0 = 0x0021,
- .unk2 = 0x18,
- .unk3 = 0x17,
- .unk4 = 0x26
+ .graphicsId = EVENT_OBJ_GFX_MAN_3,
+ .speechId1 = 24,
+ .speechId2 = 23,
+ .speechId3 = 38
},
{
- .unk0 = 0x0018,
- .unk2 = 0x05,
- .unk3 = 0x16,
- .unk4 = 0x04
+ .graphicsId = EVENT_OBJ_GFX_WOMAN_3,
+ .speechId1 = 5,
+ .speechId2 = 22,
+ .speechId3 = 4
},
{
- .unk0 = 0x000b,
- .unk2 = 0x29,
- .unk3 = 0x25,
- .unk4 = 0x23
+ .graphicsId = EVENT_OBJ_GFX_LITTLE_BOY,
+ .speechId1 = 41,
+ .speechId2 = 37,
+ .speechId3 = 35
},
{
- .unk0 = 0x0035,
- .unk2 = 0x27,
- .unk3 = 0x0e,
- .unk4 = 0x0d
+ .graphicsId = EVENT_OBJ_GFX_TUBER_F,
+ .speechId1 = 39,
+ .speechId2 = 14,
+ .speechId3 = 13
},
{
- .unk0 = 0x0030,
- .unk2 = 0x0a,
- .unk3 = 0x07,
- .unk4 = 0x09
+ .graphicsId = EVENT_OBJ_GFX_GENTLEMAN,
+ .speechId1 = 10,
+ .speechId2 = 7,
+ .speechId3 = 9
},
{
- .unk0 = 0x000c,
- .unk2 = 0x28,
- .unk3 = 0x14,
- .unk4 = 0x10
+ .graphicsId = EVENT_OBJ_GFX_LITTLE_GIRL,
+ .speechId1 = 40,
+ .speechId2 = 20,
+ .speechId3 = 16
},
{
- .unk0 = 0x0034,
- .unk2 = 0x12,
- .unk3 = 0x0d,
- .unk4 = 0x15
+ .graphicsId = EVENT_OBJ_GFX_RUNNING_TRIATHLETE_F,
+ .speechId1 = 18,
+ .speechId2 = 13,
+ .speechId3 = 21
},
{
- .unk0 = 0x0013,
- .unk2 = 0x16,
- .unk3 = 0x1f,
- .unk4 = 0x1b
+ .graphicsId = EVENT_OBJ_GFX_MAN_1,
+ .speechId1 = 22,
+ .speechId2 = 31,
+ .speechId3 = 27
}
};
-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 u16 sNPCSpeeches[][6] =
+{
+ {EC_WORD_I_AM, EC_WORD_LOST, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_MOVE2(HELPING_HAND)},
+ {EC_WORD_I_VE, EC_WORD_NO, EC_WORD_SENSE, EC_WORD_OF, EC_WORD_WHERE, EC_WORD_I_AM},
+ {EC_WORD_WHAT, EC_WORD_SHOULD, EC_WORD_I, EC_WORD_DO, EC_WORD_NOW, EC_WORD_QUES},
+ {EC_WORD_THIS, EC_WORD_IS, EC_WORD_TOO, EC_WORD_EXCITING, EC_WORD_FOR, EC_WORD_ME},
+ {EC_WORD_DID, EC_WORD_YOU, EC_WORD_MAKE, EC_WORD_A, EC_WORD_MISTAKE, EC_WORD_QUES},
+ {EC_WORD_IT_S, EC_WORD_MEAN, EC_WORD_AND, EC_WORD_AWFUL, EC_WORD_IN, EC_WORD_HERE},
+ {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_TIRED, EC_WORD_OF, EC_WORD_THIS, EC_WORD_PLACE},
+ {EC_WORD_I, EC_WORD_QUITE, EC_WORD_ENJOY, EC_WORD_THIS, EC_WORD_CHALLENGE, 0xFFFF},
+ {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_HOW, EC_WORD_I, EC_MOVE2(TACKLE), EC_WORD_THIS},
+ {EC_WORD_READY, EC_WORD_TO, EC_WORD_GIVE_UP, EC_WORD_YET, EC_WORD_QUES, 0xFFFF},
+ {EC_WORD_OH, EC_WORD_NO, EC_WORD_WHO, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_QUES},
+ {EC_WORD_I_VE, EC_WORD_BEEN, EC_WORD_WANDERING, EC_WORD_ABOUT, EC_WORD_FOREVER, EC_WORD_ELLIPSIS},
+ {EC_WORD_I, EC_WORD_THINK, EC_WORD_I, EC_WORD_WILL, EC_WORD_GIVE_UP, 0xFFFF},
+ {EC_WORD_WHAT, EC_WORD_SHOULD, EC_WORD_I, EC_WORD_DO, EC_WORD_NEXT, EC_WORD_QUES},
+ {EC_WORD_I, EC_WORD_CAN_WIN, EC_WORD_WITH, EC_WORD_MY, EC_MOVE(SHEER_COLD), EC_WORD_GENIUS},
+ {EC_WORD_WON_T, EC_WORD_SOMEONE, EC_WORD_COOL, EC_WORD_SHOW, EC_WORD_UP, EC_WORD_QUES},
+ {EC_WORD_BATTLE, EC_WORD_GAME, EC_WORD_IS, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF},
+ {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_TAKE, EC_WORD_THIS, EC_WORD_ANY, EC_WORD_MORE},
+ {EC_WORD_I, EC_WORD_DON_T, EC_WORD_KNOW, EC_WORD_IF, EC_WORD_IT_S, EC_WORD_OKAY},
+ {EC_WORD_OH, EC_WORD_NO, EC_WORD_EXCL, EC_WORD_NOT, EC_WORD_ANOTHER, EC_WORD_TRAINER},
+ {EC_WORD_IT, EC_WORD_HAS, EC_WORD_TO, EC_WORD_BE, EC_WORD_LEFT, EC_WORD_NEXT},
+ {EC_WORD_IT, EC_WORD_MUST_BE, EC_WORD_OVER, EC_WORD_SOON, EC_WORD_RIGHT, EC_WORD_QUES},
+ {EC_WORD_THIS, EC_WORD_IS, EC_WORD_TOTALLY, EC_WORD_EASY, EC_WORD_ISN_T_IT_QUES, 0xFFFF},
+ {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_POWER, EC_WORD_ON, 0xFFFF},
+ {EC_WORD_THERE, EC_WORD_IS, EC_WORD_NO, EC_WORD_GIVE_UP, EC_WORD_IN, EC_WORD_ME},
+ {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_GOING, EC_WORD_TO, EC_WORD_MAKE, EC_WORD_IT},
+ {EC_WORD_GO, EC_WORD_ON, EC_WORD_I, EC_WORD_CAN_T, EC_WORD_ANY, EC_WORD_MORE},
+ {EC_WORD_A, EC_WORD_TRAINER, EC_WORD_AFTER, EC_WORD_ANOTHER, EC_WORD_ELLIPSIS, 0xFFFF},
+ {EC_WORD_DO, EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_STEEL, EC_WORD_POKEMON, EC_WORD_QUES},
+ {EC_WORD_EVERY, EC_WORD_TRAINER, EC_WORD_HERE, EC_WORD_IS, EC_WORD_TOO_WEAK, 0xFFFF},
+ {EC_WORD_YOU, EC_WORD_THINK, EC_WORD_THIS, EC_WORD_IS, EC_WORD_EASY, EC_WORD_QUES},
+ {EC_WORD_WHAT, EC_WORD_WILL, EC_WORD_COME, EC_WORD_AFTER, EC_WORD_THIS, EC_WORD_QUES},
+ {EC_WORD_I_AM, EC_WORD_JUST, EC_WORD_SO, EC_WORD_CONFUSED, EC_WORD_EXCL, 0xFFFF},
+ {EC_WORD_I, EC_WORD_JUST, EC_WORD_WANT, EC_WORD_TO, EC_WORD_GO_HOME, EC_WORD_ELLIPSIS},
+ {EC_WORD_YEEHAW_EXCL, EC_WORD_THIS, EC_WORD_PLACE, EC_WORD_IS, EC_WORD_A, EC_WORD_PUSHOVER},
+ {EC_WORD_I, EC_WORD_HAVEN_T, EC_WORD_BEEN, EC_WORD_IN, EC_WORD_A, EC_WORD_BATTLE},
+ {EC_WORD_MAYBE, EC_WORD_IT_S, EC_WORD_RIGHT, EC_WORD_NEXT, EC_WORD_I, EC_WORD_THINK},
+ {EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_IT, EC_WORD_WASN_T, EC_WORD_THIS, EC_WORD_WAY},
+ {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_TOO, EC_WORD_TIRED, EC_WORD_ELLIPSIS},
+ {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_STRONG, EC_WORD_TO, EC_WORD_POISON},
+ {EC_WORD_LALALA, EC_WORD_LALALA, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_AWESOME, EC_WORD_LALALA},
+ {EC_MOVE2(TOXIC), EC_WORD_IS, EC_WORD_A, EC_WORD_TERRIBLE, EC_WORD_THING, EC_WORD_ISN_T_IT_QUES},
};
-static const u8 gUnknown_086125DC[][4] =
+// Only the 5th array in this data is used by the code.
+static const u8 sPikeQueenWinStreakAppearances[][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},
+ {35, 70, 35, 1},
+ { 4, 9, 5, 0},
+ {21, 42, 21, 1},
+ {28, 56, 28, 1},
+ {21, 42, 21, 1},
+ {28, 140, 56, 1},
+ {21, 70, 35, 0},
};
static void (* const sBattlePikeFunctions[])(void) =
{
- sub_81A705C,
- sub_81A7140,
- sub_81A7248,
- sub_81A73B8,
- sub_81A7070,
- sub_81A73EC,
+ SetRoomType,
+ GetBattlePikeData,
+ SetBattlePikeData,
+ GetInFinalRoom,
+ SetupRoomEventObjects,
+ GetRoomType,
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
+ GetRoomInflictedStatus,
+ GetRoomInflictedStatusMon,
+ HealOneOrTwoMons,
+ BufferNPCMessage,
+ StatusInflictionScreenFade,
+ GetInBattlePike,
+ SetHintedRoom,
+ GetHintedRoomIndex,
+ GetRoomTypeHint,
+ ClearPikeTrainerIds,
+ BufferRecordMixingTrainerMessage,
+ GetCurrentRoomPikeQueenFightType,
+ HealSomeMonsBeforePikeQueen,
+ SetHealingRoomsDisabled,
+ CanAnyPartyMonsBeHealed,
+ BackupMonHeldItems,
+ RestoreMonHeldItems,
+ InitPikeChallenge
};
-static const u8 gUnknown_0861266C[] = {3, 3, 1, 0, 0, 2, 2, 1, 4};
+static const u8 sRoomTypeHints[] = {
+ 3, // PIKE_ROOM_SINGLE_BATTLE
+ 3, // PIKE_ROOM_HEAL_FULL
+ 1, // PIKE_ROOM_NPC
+ 0, // PIKE_ROOM_STATUS
+ 0, // PIKE_ROOM_HEAL_PART
+ 2, // PIKE_ROOM_WILD_MONS
+ 2, // PIKE_ROOM_HARD_BATTLE
+ 1, // PIKE_ROOM_DOUBLE_BATTLE
+ 4, // PIKE_ROOM_BRAIN
+};
-static const u8 gUnknown_08612675[][3] =
+static const u8 sNumMonsToHealBeforePikeQueen[][3] =
{
{2, 1, 0},
{2, 0, 1},
@@ -531,9 +544,9 @@ static const u8 gUnknown_08612675[][3] =
{0, 1, 2},
};
-static bool8 (* const gUnknown_08612688[])(struct Task *) =
+static bool8 (* const sStatusInflictionScreenFadeFuncs[])(struct Task *) =
{
- sub_81A7D8C, sub_81A7DE8
+ StatusInflictionFadeOut, StatusInflictionFadeIn
};
static const u32 gUnknown_08612690[] = {0x400, 0x800};
@@ -544,78 +557,78 @@ void CallBattlePikeFunction(void)
sBattlePikeFunctions[gSpecialVar_0x8004]();
}
-static void sub_81A705C(void)
+static void SetRoomType(void)
{
u8 roomType = GetNextRoomType();
sRoomType = roomType;
}
-static void sub_81A7070(void)
+static void SetupRoomEventObjects(void)
{
- bool32 setPerson1, setPerson2;
- u32 person1;
- u16 person2;
+ bool32 setObjGfx1, setObjGfx2;
+ u32 objGfx1;
+ u16 objGfx2;
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;
+ setObjGfx1 = TRUE;
+ setObjGfx2 = FALSE;
+ objGfx1 = 0;
+ objGfx2 = 0;
switch (sRoomType)
{
case PIKE_ROOM_SINGLE_BATTLE:
PrepareOneTrainer(FALSE);
- setPerson1 = FALSE;
+ setObjGfx1 = FALSE;
break;
case PIKE_ROOM_HEAL_FULL:
- person1 = EVENT_OBJ_GFX_LINK_RECEPTIONIST;
+ objGfx1 = EVENT_OBJ_GFX_LINK_RECEPTIONIST;
break;
case PIKE_ROOM_NPC:
- person1 = (u8)(sub_81A7B58());
+ objGfx1 = (u8)(GetNPCRoomGraphicsId());
break;
case PIKE_ROOM_STATUS:
- person1 = EVENT_OBJ_GFX_GENTLEMAN;
+ objGfx1 = EVENT_OBJ_GFX_GENTLEMAN;
if (sStatusMon == PIKE_STATUS_DUSCLOPS)
- person2 = EVENT_OBJ_GFX_DUSCLOPS;
+ objGfx2 = EVENT_OBJ_GFX_DUSCLOPS;
else
- person2 = EVENT_OBJ_GFX_KIRLIA;
- setPerson2 = TRUE;
+ objGfx2 = EVENT_OBJ_GFX_KIRLIA;
+ setObjGfx2 = TRUE;
break;
case PIKE_ROOM_HEAL_PART:
- person1 = EVENT_OBJ_GFX_GENTLEMAN;
+ objGfx1 = EVENT_OBJ_GFX_GENTLEMAN;
break;
case PIKE_ROOM_WILD_MONS:
- setPerson1 = FALSE;
+ setObjGfx1 = FALSE;
break;
case PIKE_ROOM_HARD_BATTLE:
PrepareOneTrainer(TRUE);
- person2 = EVENT_OBJ_GFX_LINK_RECEPTIONIST;
- setPerson1 = FALSE;
- setPerson2 = TRUE;
+ objGfx2 = EVENT_OBJ_GFX_LINK_RECEPTIONIST;
+ setObjGfx1 = FALSE;
+ setObjGfx2 = TRUE;
break;
case PIKE_ROOM_DOUBLE_BATTLE:
PrepareTwoTrainers();
- setPerson1 = FALSE;
+ setObjGfx1 = FALSE;
break;
case PIKE_ROOM_BRAIN:
SetFrontierBrainEventObjGfx(FRONTIER_FACILITY_PIKE);
- person2 = EVENT_OBJ_GFX_LINK_RECEPTIONIST;
- setPerson1 = FALSE;
- setPerson2 = TRUE;
+ objGfx2 = EVENT_OBJ_GFX_LINK_RECEPTIONIST;
+ setObjGfx1 = FALSE;
+ setObjGfx2 = TRUE;
break;
default:
return;
}
- if (setPerson1 == TRUE)
- VarSet(VAR_OBJ_GFX_ID_0, person1);
- if (setPerson2 == TRUE)
- VarSet(VAR_OBJ_GFX_ID_1, person2);
+ if (setObjGfx1 == TRUE)
+ VarSet(VAR_OBJ_GFX_ID_0, objGfx1);
+ if (setObjGfx2 == TRUE)
+ VarSet(VAR_OBJ_GFX_ID_1, objGfx2);
}
-static void sub_81A7140(void)
+static void GetBattlePikeData(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
@@ -642,7 +655,7 @@ static void sub_81A7140(void)
}
}
-static void sub_81A7248(void)
+static void SetBattlePikeData(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
@@ -682,15 +695,15 @@ static void sub_81A7248(void)
}
}
-static void sub_81A73B8(void)
+static void GetInFinalRoom(void)
{
- if (gSaveBlock2Ptr->frontier.curChallengeBattleNum >= 15)
+ if (gSaveBlock2Ptr->frontier.curChallengeBattleNum > 14)
gSpecialVar_Result = TRUE;
else
gSpecialVar_Result = FALSE;
}
-static void sub_81A73EC(void)
+static void GetRoomType(void)
{
gSpecialVar_Result = sRoomType;
}
@@ -724,7 +737,7 @@ static void nullsub_124(void)
}
-static void sub_81A7468(void)
+static void GetRoomInflictedStatus(void)
{
switch (sStatusFlags)
{
@@ -746,35 +759,35 @@ static void sub_81A7468(void)
}
}
-static void sub_81A74CC(void)
+static void GetRoomInflictedStatusMon(void)
{
gSpecialVar_Result = sStatusMon;
}
-static void sub_81A74E0(void)
+static void HealOneOrTwoMons(void)
{
u16 toHeal = (Random() % 2) + 1;
TryHealMons(toHeal);
gSpecialVar_Result = toHeal;
}
-static void sub_81A7508(void)
+static void BufferNPCMessage(void)
{
- s32 id;
+ int speechId;
if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 4)
- id = gUnknown_0861231C[sUnknown_03001294].unk2;
+ speechId = sNPCTable[sNpcId].speechId1;
else if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 10)
- id = gUnknown_0861231C[sUnknown_03001294].unk3;
+ speechId = sNPCTable[sNpcId].speechId2;
else
- id = gUnknown_0861231C[sUnknown_03001294].unk4;
+ speechId = sNPCTable[sNpcId].speechId3;
- FrontierSpeechToString(gUnknown_086123E4[id]);
+ FrontierSpeechToString(sNPCSpeeches[speechId]);
}
-static void sub_81A7580(void)
+static void StatusInflictionScreenFade(void)
{
- CreateTask(sub_81A7EE4, 2);
+ CreateTask(Task_DoStatusInflictionScreenFade, 2);
}
static void HealMon(struct Pokemon *mon)
@@ -1013,81 +1026,88 @@ static bool8 AtLeastOneHealthyMon(void)
static u8 GetNextRoomType(void)
{
- u8 sp[8];
+ u8 roomTypesAvailability[8];
u8 i;
- u8 ret;
- u8 var;
- u8 count;
- u8 *allocated;
+ u8 nextRoomType;
+ u8 roomTypeGroup;
+ u8 numRoomCandidates;
+ u8 *roomCandidates;
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.pikeHintedRoomType == PIKE_ROOM_BRAIN)
+ return gSaveBlock2Ptr->frontier.pikeHintedRoomType;
+
+ // Check if the player walked into the same room that the lady gave a hint about.
+ if (gSpecialVar_0x8007 == gSaveBlock2Ptr->frontier.pikeHintedRoomIndex)
{
- if (gSaveBlock2Ptr->frontier.field_E10_2 == PIKE_ROOM_STATUS)
+ if (gSaveBlock2Ptr->frontier.pikeHintedRoomType == PIKE_ROOM_STATUS)
TryInflictRandomStatus();
- return gSaveBlock2Ptr->frontier.field_E10_2;
+ return gSaveBlock2Ptr->frontier.pikeHintedRoomType;
}
for (i = 0; i < 8; i++)
- sp[i] = 0;
+ roomTypesAvailability[i] = 0;
+
+ numRoomCandidates = 8;
- count = 8;
- var = gUnknown_0861266C[gSaveBlock2Ptr->frontier.field_E10_2];
+ // The room types associated with the lady's hint cannot be in the other two rooms.
+ roomTypeGroup = sRoomTypeHints[gSaveBlock2Ptr->frontier.pikeHintedRoomType];
for (i = 0; i < 8; i++)
{
- if (gUnknown_0861266C[i] == var)
+ if (sRoomTypeHints[i] == roomTypeGroup)
{
- sp[i] = 1;
- count--;
+ roomTypesAvailability[i] = 1;
+ numRoomCandidates--;
}
}
- if (sp[7] != 1 && !AtLeastTwoAliveMons())
+ // Remove room type candidates that would have no effect on the player's party.
+ if (roomTypesAvailability[PIKE_ROOM_DOUBLE_BATTLE] != 1 && !AtLeastTwoAliveMons())
{
- sp[7] = 1;
- count--;
+ roomTypesAvailability[PIKE_ROOM_DOUBLE_BATTLE] = 1;
+ numRoomCandidates--;
}
- if (sp[3] != 1 && !AtLeastOneHealthyMon())
+ if (roomTypesAvailability[PIKE_ROOM_STATUS] != 1 && !AtLeastOneHealthyMon())
{
- sp[3] = 1;
- count--;
+ roomTypesAvailability[PIKE_ROOM_STATUS] = 1;
+ numRoomCandidates--;
}
- if (gSaveBlock2Ptr->frontier.field_E10_3)
+
+ // Remove healing room type candidates if healing rooms are disabled.
+ if (gSaveBlock2Ptr->frontier.pikeHealingRoomsDisabled)
{
- if (sp[1] != 1)
+ if (roomTypesAvailability[PIKE_ROOM_HEAL_FULL] != 1)
{
- sp[1] = 1;
- count--;
+ roomTypesAvailability[PIKE_ROOM_HEAL_FULL] = 1;
+ numRoomCandidates--;
}
- if (sp[4] != 1)
+ if (roomTypesAvailability[PIKE_ROOM_HEAL_PART] != 1)
{
- sp[4] = 1;
- count--;
+ roomTypesAvailability[PIKE_ROOM_HEAL_PART] = 1;
+ numRoomCandidates--;
}
}
- allocated = AllocZeroed(count);
+ roomCandidates = AllocZeroed(numRoomCandidates);
id = 0;
for (i = 0; i < 8; i++)
{
- if (sp[i] == 0)
- allocated[id++] = i;
+ if (roomTypesAvailability[i] == 0)
+ roomCandidates[id++] = i;
}
- ret = allocated[Random() % count];
- free(allocated);
- if (ret == PIKE_ROOM_STATUS)
+ nextRoomType = roomCandidates[Random() % numRoomCandidates];
+ free(roomCandidates);
+ if (nextRoomType == PIKE_ROOM_STATUS)
TryInflictRandomStatus();
- return ret;
+ return nextRoomType;
}
-static u16 sub_81A7B58(void)
+static u16 GetNPCRoomGraphicsId(void)
{
- sUnknown_03001294 = Random() % 25;
- return gUnknown_0861231C[sUnknown_03001294].unk0;
+ sNpcId = Random() % ARRAY_COUNT(sNPCTable);
+ return sNPCTable[sNpcId].graphicsId;
}
static u8 sub_81A7B84(void)
@@ -1162,12 +1182,12 @@ u8 GetBattlePikeWildMonHeaderId(void)
return headerId;
}
-static void sub_81A7D54(u8 taskId)
+static void DoStatusInflictionScreenFade(u8 taskId)
{
- while (gUnknown_08612688[gTasks[taskId].data[0]](&gTasks[taskId]));
+ while (sStatusInflictionScreenFadeFuncs[gTasks[taskId].data[0]](&gTasks[taskId]));
}
-static bool8 sub_81A7D8C(struct Task *task)
+static bool8 StatusInflictionFadeOut(struct Task *task)
{
if (task->data[6] == 0 || --task->data[6] == 0)
{
@@ -1186,7 +1206,7 @@ static bool8 sub_81A7D8C(struct Task *task)
return FALSE;
}
-static bool8 sub_81A7DE8(struct Task *task)
+static bool8 StatusInflictionFadeIn(struct Task *task)
{
if (task->data[6] == 0 || --task->data[6] == 0)
{
@@ -1201,7 +1221,7 @@ static bool8 sub_81A7DE8(struct Task *task)
{
if (--task->data[3] == 0)
{
- DestroyTask(FindTaskIdByFunc(sub_81A7D54));
+ DestroyTask(FindTaskIdByFunc(DoStatusInflictionScreenFade));
}
else
{
@@ -1212,36 +1232,36 @@ static bool8 sub_81A7DE8(struct Task *task)
return FALSE;
}
-static void sub_81A7E60(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4)
+static void StartStatusInflictionScreenFade(s16 fadeOutDelay, s16 fadeInDelay, s16 numFades, s16 fadeOutSpeed, s16 fadeInSpped)
{
- u8 taskId = CreateTask(sub_81A7D54, 3);
+ u8 taskId = CreateTask(DoStatusInflictionScreenFade, 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;
+ gTasks[taskId].data[1] = fadeOutDelay;
+ gTasks[taskId].data[2] = fadeInDelay;
+ gTasks[taskId].data[3] = numFades;
+ gTasks[taskId].data[4] = fadeOutSpeed;
+ gTasks[taskId].data[5] = fadeInSpped;
+ gTasks[taskId].data[6] = fadeOutDelay;
}
-static bool8 sub_81A7EC4(void)
+static bool8 IsStatusInflictionScreenFadeTaskFinished(void)
{
- if (FindTaskIdByFunc(sub_81A7D54) == 0xFF)
+ if (FindTaskIdByFunc(DoStatusInflictionScreenFade) == 0xFF)
return TRUE;
else
return FALSE;
}
-static void sub_81A7EE4(u8 taskId)
+static void Task_DoStatusInflictionScreenFade(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
gTasks[taskId].data[0]++;
- sub_81A7E60(0, 0, 3, 2, 2);
+ StartStatusInflictionScreenFade(0, 0, 3, 2, 2);
}
else
{
- if (sub_81A7EC4())
+ if (IsStatusInflictionScreenFadeTaskFinished())
{
EnableBothScriptContexts();
DestroyTask(taskId);
@@ -1307,72 +1327,78 @@ static void TryHealMons(u8 healCount)
}
}
-static void sub_81A8090(void)
+static void GetInBattlePike(void)
{
gSpecialVar_Result = InBattlePike();
}
bool8 InBattlePike(void)
{
- return (gMapHeader.mapLayoutId == 351 || gMapHeader.mapLayoutId == 352
- || gMapHeader.mapLayoutId == 358 || gMapHeader.mapLayoutId == 359);
+ return gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM
+ || gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM1
+ || gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3
+ || gMapHeader.mapLayoutId == LAYOUT_UNKNOWN_084693AC;
}
-static void sub_81A80DC(void)
+static void SetHintedRoom(void)
{
u8 i, count, id;
- u8 *allocated;
+ u8 *roomCandidates;
gSpecialVar_Result = 0;
- if (sub_81A8590(1))
+ if (GetPikeQueenFightType(1))
{
gSpecialVar_Result = 1;
- gSaveBlock2Ptr->frontier.field_E10_1 = Random() % 6;
- gSaveBlock2Ptr->frontier.field_E10_2 = PIKE_ROOM_BRAIN;
+ gSaveBlock2Ptr->frontier.pikeHintedRoomIndex = Random() % 6;
+ gSaveBlock2Ptr->frontier.pikeHintedRoomType = PIKE_ROOM_BRAIN;
}
else
{
- gSaveBlock2Ptr->frontier.field_E10_1 = Random() % 3;
- if (gSaveBlock2Ptr->frontier.field_E10_3)
+ gSaveBlock2Ptr->frontier.pikeHintedRoomIndex = Random() % 3;
+ if (gSaveBlock2Ptr->frontier.pikeHealingRoomsDisabled)
count = 6;
else
count = 8;
- allocated = AllocZeroed(count);
+ roomCandidates = AllocZeroed(count);
for (i = 0, id = 0; i < count; i++)
{
- if (gSaveBlock2Ptr->frontier.field_E10_3)
+ if (gSaveBlock2Ptr->frontier.pikeHealingRoomsDisabled)
{
if (i != PIKE_ROOM_HEAL_FULL && i != PIKE_ROOM_HEAL_PART)
- allocated[id++] = i;
+ roomCandidates[id++] = i;
}
else
{
- allocated[i] = i;
+ roomCandidates[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;
+
+ gSaveBlock2Ptr->frontier.pikeHintedRoomType = roomCandidates[Random() % count];
+ free(roomCandidates);
+ if (gSaveBlock2Ptr->frontier.pikeHintedRoomType == PIKE_ROOM_STATUS && !AtLeastOneHealthyMon())
+ gSaveBlock2Ptr->frontier.pikeHintedRoomType = PIKE_ROOM_NPC;
+ if (gSaveBlock2Ptr->frontier.pikeHintedRoomType == PIKE_ROOM_DOUBLE_BATTLE && !AtLeastTwoAliveMons())
+ gSaveBlock2Ptr->frontier.pikeHintedRoomType = PIKE_ROOM_NPC;
}
}
-static void sub_81A825C(void)
+static void GetHintedRoomIndex(void)
{
- gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E10_1;
+ // 0 = left room
+ // 1 = center room
+ // 2 = right room
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.pikeHintedRoomIndex;
}
-static void sub_81A827C(void)
+static void GetRoomTypeHint(void)
{
- gSpecialVar_Result = gUnknown_0861266C[gSaveBlock2Ptr->frontier.field_E10_2];
+ gSpecialVar_Result = sRoomTypeHints[gSaveBlock2Ptr->frontier.pikeHintedRoomType];
}
static void PrepareOneTrainer(bool8 difficult)
{
- s32 i;
+ int i;
u8 lvlMode;
u8 battleNum;
u16 challengeNum;
@@ -1390,7 +1416,7 @@ static void PrepareOneTrainer(bool8 difficult)
trainerId = sub_8162548(challengeNum, battleNum);
for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; i++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId)
break;
}
} while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1);
@@ -1399,12 +1425,12 @@ static void PrepareOneTrainer(bool8 difficult)
gFacilityTrainers = gBattleFrontierTrainers;
SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 14)
- gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1] = gTrainerBattleOpponent_A;
+ gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1] = gTrainerBattleOpponent_A;
}
static void PrepareTwoTrainers(void)
{
- s32 i;
+ int i;
u16 trainerId;
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u16 challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14;
@@ -1415,7 +1441,7 @@ static void PrepareTwoTrainers(void)
trainerId = sub_8162548(challengeNum, 1);
for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1; i++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId)
break;
}
} while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1);
@@ -1423,14 +1449,14 @@ static void PrepareTwoTrainers(void)
gTrainerBattleOpponent_A = trainerId;
SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
if (gSaveBlock2Ptr->frontier.curChallengeBattleNum <= 14)
- gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 1] = gTrainerBattleOpponent_A;
+ gSaveBlock2Ptr->frontier.trainerIds[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)
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId)
break;
}
} while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum);
@@ -1438,18 +1464,18 @@ static void PrepareTwoTrainers(void)
gTrainerBattleOpponent_B = trainerId;
SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_B, 1);
if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 14)
- gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 2] = gTrainerBattleOpponent_B;
+ gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum - 2] = gTrainerBattleOpponent_B;
}
-static void sub_81A84B4(void)
+static void ClearPikeTrainerIds(void)
{
u8 i;
for (i = 0; i < 14; i++)
- gSaveBlock2Ptr->frontier.field_CB4[i] = 0xFFFF;
+ gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF;
}
-static void sub_81A84EC(void)
+static void BufferRecordMixingTrainerMessage(void)
{
if (gSpecialVar_0x8005 == 0)
{
@@ -1482,31 +1508,31 @@ static bool8 AtLeastTwoAliveMons(void)
return TRUE;
}
-static u8 sub_81A8590(u8 arg0)
+static u8 GetPikeQueenFightType(u8 nextRoom)
{
- u8 symbolsCount;
+ u8 numPikeSymbols;
u8 var = 5;
u8 ret = 0;
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u16 wins = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode];
- wins += arg0;
- symbolsCount = GetPlayerSymbolCountForFacility(FRONTIER_FACILITY_PIKE);
+ u16 winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode];
+ winStreak += nextRoom;
+ numPikeSymbols = GetPlayerSymbolCountForFacility(FRONTIER_FACILITY_PIKE);
- switch (symbolsCount)
+ switch (numPikeSymbols)
{
case 0:
case 1:
- if (wins == gUnknown_086125DC[var][symbolsCount] - gUnknown_086125DC[var][3])
- ret = symbolsCount + 1;
+ if (winStreak == sPikeQueenWinStreakAppearances[var][numPikeSymbols] - sPikeQueenWinStreakAppearances[var][3])
+ ret = numPikeSymbols + 1;
break;
case 2:
default:
- if (wins == gUnknown_086125DC[var][0] - gUnknown_086125DC[var][3])
+ if (winStreak == sPikeQueenWinStreakAppearances[var][0] - sPikeQueenWinStreakAppearances[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))
+ else if (winStreak == sPikeQueenWinStreakAppearances[var][1] - sPikeQueenWinStreakAppearances[var][3]
+ || (winStreak > sPikeQueenWinStreakAppearances[var][1]
+ && (winStreak - sPikeQueenWinStreakAppearances[var][1] + sPikeQueenWinStreakAppearances[var][3]) % sPikeQueenWinStreakAppearances[var][2] == 0))
ret = 4;
break;
}
@@ -1514,25 +1540,25 @@ static u8 sub_81A8590(u8 arg0)
return ret;
}
-static void sub_81A863C(void)
+static void GetCurrentRoomPikeQueenFightType(void)
{
- gSpecialVar_Result = sub_81A8590(0);
+ gSpecialVar_Result = GetPikeQueenFightType(0);
}
-static void sub_81A8658(void)
+static void HealSomeMonsBeforePikeQueen(void)
{
- u8 toHealCount = gUnknown_08612675[gSaveBlock2Ptr->frontier.field_E10_1][gSpecialVar_0x8007];
+ u8 toHealCount = sNumMonsToHealBeforePikeQueen[gSaveBlock2Ptr->frontier.pikeHintedRoomIndex][gSpecialVar_0x8007];
TryHealMons(toHealCount);
gSpecialVar_Result = toHealCount;
}
-static void sub_81A869C(void)
+static void SetHealingRoomsDisabled(void)
{
- gSaveBlock2Ptr->frontier.field_E10_3 = gSpecialVar_0x8005;
+ gSaveBlock2Ptr->frontier.pikeHealingRoomsDisabled = gSpecialVar_0x8005;
}
-static void sub_81A86C0(void)
+static void CanAnyPartyMonsBeHealed(void)
{
u8 i, j;
@@ -1571,19 +1597,19 @@ static void sub_81A86C0(void)
}
}
-static void sub_81A8794(void)
+static void BackupMonHeldItems(void)
{
u8 i;
for (i = 0; i < 3; i++)
{
- s32 heldItem = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1],
+ int heldItem = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1],
MON_DATA_HELD_ITEM);
- gSaveBlock2Ptr->frontier.field_E12[i] = heldItem;
+ gSaveBlock2Ptr->frontier.pikeHeldItemsBackup[i] = heldItem;
}
}
-static void sub_81A87E8(void)
+static void RestoreMonHeldItems(void)
{
u8 i;
@@ -1591,11 +1617,11 @@ static void sub_81A87E8(void)
{
SetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1],
MON_DATA_HELD_ITEM,
- &gSaveBlock2Ptr->frontier.field_E12[i]);
+ &gSaveBlock2Ptr->frontier.pikeHeldItemsBackup[i]);
}
}
-static void sub_81A8830(void)
+static void InitPikeChallenge(void)
{
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index c0ff1ecf5..34da3a25d 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -30,15 +30,47 @@
#include "constants/event_objects.h"
#include "constants/event_object_movement_constants.h"
#include "constants/items.h"
+#include "constants/layouts.h"
#include "constants/maps.h"
#include "constants/moves.h"
#include "constants/species.h"
+#include "constants/trainers.h"
extern const struct MapLayout *const gMapLayouts[];
extern const u16 gUnknown_08D856C8[][16];
#define TOTAL_ROUNDS 20
#define PICKUP_ITEMS_PER_ROUND 10
+#define FLOOR_WALKABLE_METATILE 0x28D
+#define FLOOR_EXIT_METATILE 0x28E
+
+enum
+{
+ HINT_EXIT_DIRECTION,
+ HINT_REMAINING_ITEMS,
+ HINT_REMAINING_TRAINERS,
+ HINT_EXIT_SHORT_REMAINING_TRAINERS,
+ HINT_EXIT_SHORT_REMAINING_ITEMS,
+ HINT_EXIT_MEDIUM_REMAINING_TRAINERS,
+ HINT_EXIT_MEDIUM_REMAINING_ITEMS,
+ HINT_EXIT_FAR_REMAINING_TRAINERS,
+ HINT_EXIT_FAR_REMAINING_ITEMS,
+};
+
+enum
+{
+ OBJ_TRAINERS,
+ OBJ_ITEMS,
+};
+
+enum
+{
+ OBJ_POSITIONS_UNIFORM,
+ OBJ_POSITIONS_IN_AND_NEAR_ENTRANCE,
+ OBJ_POSITIONS_IN_AND_NEAR_EXIT,
+ OBJ_POSITIONS_NEAR_ENTRANCE,
+ OBJ_POSITIONS_NEAR_EXIT,
+};
struct PyramidWildMon
{
@@ -48,231 +80,238 @@ struct PyramidWildMon
u16 moves[4];
};
-struct Struct_08613650
+struct PyramidFloorTemplate
{
- u8 unk0;
- u8 unk1;
- u8 unk2;
- u8 unk3;
+ u8 numItems;
+ u8 numTrainers;
+ u8 itemPositions;
+ u8 trainerPositions;
u8 runMultiplier;
- u8 unk5[8];
+ u8 layoutOffsets[8];
};
-struct ClassMusic
+struct PyramidTrainerEncounterMusic
{
- u8 class;
- u8 music;
+ u8 trainerClass;
+ u8 trainerEncounterMusic;
};
// This file's functions.
-static void sub_81A8E9C(void);
-static void sub_81A8F38(void);
-static void sub_81A9048(void);
+static void InitPyramidChallenge(void);
+static void GetBattlePyramidData(void);
+static void SetBattlePyramidData(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 SetBattlePyramidRewardItem(void);
+static void GiveBattlePyramidRewardItem(void);
+static void SeedPyramidFloor(void);
+static void SetPickupItem(void);
+static void HidePyramidItem(void);
+static void InitPyramidFacilityTrainers(void);
+static void ShowPostBattleHintText(void);
+static void UpdatePyramidWinStreak(void);
+static void GetInBattlePyramid(void);
+static void UpdatePyramidLightRadius(void);
+static void ClearPyramidPartyHeldItems(void);
+static void SetPyramidFloorPalette(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);
+static void RestorePyramidPlayerParty(void);
+static void InitPyramidBagItems(u8 lvlMode);
+static u8 GetPyramidFloorTemplateId(void);
+static u8 GetPostBattleDirectionHintTextIndex(int *, u8, u8);
+static void Task_SetPyramidFloorPalette(u8 taskId);
+static void MarkPyramidTrainerAsBattled(u16 trainerId);
+static void GetPyramidFloorLayoutOffsets(u8 *layoutOffsets);
+static void GetPyramidEntranceAndExitSquareIds(u8 *, u8 *);
+static void SetPyramidObjectPositionsUniformly(u8);
+static bool8 SetPyramidObjectPositionsInAndNearSquare(u8, u8);
+static bool8 SetPyramidObjectPositionsNearSquare(u8, u8);
+static bool8 TrySetPyramidEventObjectPositionInSquare(u8 arg0, u8 *floorLayoutOffsets, u8 squareId, u8 eventObjectId);
+static bool8 TrySetPyramidEventObjectPositionAtCoords(bool8 objType, u8 x, u8 y, u8 *floorLayoutOffsets, u8 squareId, u8 eventObjectId);
// 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[] =
+static const struct PyramidFloorTemplate sPyramidFloorTemplates[] =
{
{
- .unk0 = 0x07,
- .unk1 = 0x03,
- .unk2 = 0x00,
- .unk3 = 0x00,
- .runMultiplier = 0x80,
- .unk5 = {0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03}
+ .numItems = 7,
+ .numTrainers = 3,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_UNIFORM,
+ .runMultiplier = 128,
+ .layoutOffsets = {0, 0, 1, 1, 2, 2, 3, 3},
},
{
- .unk0 = 0x06,
- .unk1 = 0x03,
- .unk2 = 0x00,
- .unk3 = 0x00,
- .runMultiplier = 0x80,
- .unk5 = {0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04}
+ .numItems = 6,
+ .numTrainers = 3,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_UNIFORM,
+ .runMultiplier = 128,
+ .layoutOffsets = {1, 1, 2, 2, 3, 3, 4, 4},
},
{
- .unk0 = 0x05,
- .unk1 = 0x03,
- .unk2 = 0x00,
- .unk3 = 0x00,
- .runMultiplier = 0x78,
- .unk5 = {0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05}
+ .numItems = 5,
+ .numTrainers = 3,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_UNIFORM,
+ .runMultiplier = 120,
+ .layoutOffsets = {2, 2, 3, 3, 4, 4, 5, 5},
},
{
- .unk0 = 0x04,
- .unk1 = 0x04,
- .unk2 = 0x00,
- .unk3 = 0x00,
- .runMultiplier = 0x78,
- .unk5 = {0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x06}
+ .numItems = 4,
+ .numTrainers = 4,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_UNIFORM,
+ .runMultiplier = 120,
+ .layoutOffsets = {3, 3, 4, 4, 5, 5, 6, 6},
},
{
- .unk0 = 0x04,
- .unk1 = 0x04,
- .unk2 = 0x00,
- .unk3 = 0x01,
- .runMultiplier = 0x70,
- .unk5 = {0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07}
+ .numItems = 4,
+ .numTrainers = 4,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_IN_AND_NEAR_ENTRANCE,
+ .runMultiplier = 112,
+ .layoutOffsets = {4, 4, 5, 5, 6, 6, 7, 7},
},
{
- .unk0 = 0x03,
- .unk1 = 0x05,
- .unk2 = 0x00,
- .unk3 = 0x02,
- .runMultiplier = 0x70,
- .unk5 = {0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c}
+ .numItems = 3,
+ .numTrainers = 5,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_IN_AND_NEAR_EXIT,
+ .runMultiplier = 112,
+ .layoutOffsets = {5, 6, 7, 8, 9, 10, 11, 12},
},
{
- .unk0 = 0x03,
- .unk1 = 0x05,
- .unk2 = 0x00,
- .unk3 = 0x00,
- .runMultiplier = 0x68,
- .unk5 = {0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d}
+ .numItems = 3,
+ .numTrainers = 5,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_UNIFORM,
+ .runMultiplier = 104,
+ .layoutOffsets = {6, 7, 8, 9, 10, 11, 12, 13},
},
{
- .unk0 = 0x02,
- .unk1 = 0x04,
- .unk2 = 0x00,
- .unk3 = 0x01,
- .runMultiplier = 0x68,
- .unk5 = {0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e}
+ .numItems = 2,
+ .numTrainers = 4,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_IN_AND_NEAR_ENTRANCE,
+ .runMultiplier = 104,
+ .layoutOffsets = {7, 8, 9, 10, 11, 12, 13, 14},
},
{
- .unk0 = 0x04,
- .unk1 = 0x05,
- .unk2 = 0x00,
- .unk3 = 0x02,
- .runMultiplier = 0x60,
- .unk5 = {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}
+ .numItems = 4,
+ .numTrainers = 5,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_IN_AND_NEAR_EXIT,
+ .runMultiplier = 96,
+ .layoutOffsets = {8, 9, 10, 11, 12, 13, 14, 15},
},
{
- .unk0 = 0x03,
- .unk1 = 0x06,
- .unk2 = 0x00,
- .unk3 = 0x04,
- .runMultiplier = 0x60,
- .unk5 = {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}
+ .numItems = 3,
+ .numTrainers = 6,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_NEAR_EXIT,
+ .runMultiplier = 96,
+ .layoutOffsets = {8, 9, 10, 11, 12, 13, 14, 15},
},
{
- .unk0 = 0x02,
- .unk1 = 0x03,
- .unk2 = 0x00,
- .unk3 = 0x00,
- .runMultiplier = 0x58,
- .unk5 = {0x0c, 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c, 0x0d}
+ .numItems = 2,
+ .numTrainers = 3,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_UNIFORM,
+ .runMultiplier = 88,
+ .layoutOffsets = {12, 13, 14, 12, 13, 14, 12, 13},
},
{
- .unk0 = 0x04,
- .unk1 = 0x05,
- .unk2 = 0x00,
- .unk3 = 0x00,
- .runMultiplier = 0x58,
- .unk5 = {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}
+ .numItems = 4,
+ .numTrainers = 5,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_UNIFORM,
+ .runMultiplier = 88,
+ .layoutOffsets = {11, 11, 11, 11, 11, 11, 11, 11},
},
{
- .unk0 = 0x03,
- .unk1 = 0x07,
- .unk2 = 0x00,
- .unk3 = 0x00,
- .runMultiplier = 0x50,
- .unk5 = {0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c}
+ .numItems = 3,
+ .numTrainers = 7,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_UNIFORM,
+ .runMultiplier = 80,
+ .layoutOffsets = {12, 12, 12, 12, 12, 12, 12, 12},
},
{
- .unk0 = 0x02,
- .unk1 = 0x04,
- .unk2 = 0x00,
- .unk3 = 0x00,
- .runMultiplier = 0x50,
- .unk5 = {0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d}
+ .numItems = 2,
+ .numTrainers = 4,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_UNIFORM,
+ .runMultiplier = 80,
+ .layoutOffsets = {13, 13, 13, 13, 13, 13, 13, 13},
},
{
- .unk0 = 0x03,
- .unk1 = 0x06,
- .unk2 = 0x00,
- .unk3 = 0x00,
- .runMultiplier = 0x50,
- .unk5 = {0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e}
+ .numItems = 3,
+ .numTrainers = 6,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_UNIFORM,
+ .runMultiplier = 80,
+ .layoutOffsets = {14, 14, 14, 14, 14, 14, 14, 14},
},
{
- .unk0 = 0x03,
- .unk1 = 0x08,
- .unk2 = 0x00,
- .unk3 = 0x00,
- .runMultiplier = 0x50,
- .unk5 = {0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f}
+ .numItems = 3,
+ .numTrainers = 8,
+ .itemPositions = OBJ_POSITIONS_UNIFORM,
+ .trainerPositions = OBJ_POSITIONS_UNIFORM,
+ .runMultiplier = 80,
+ .layoutOffsets = {15, 15, 15, 15, 15, 15, 15, 15},
}
};
-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 sPyramidFloorTemplateOptions[][2] =
+{
+ // Floor 0
+ {40, 0},
+ {70, 1},
+ {90, 2},
+ {100, 3},
+ // Floor 1
+ {35, 1},
+ {55, 2},
+ {75, 3},
+ {90, 4},
+ {100, 10},
+ // Floor 2
+ {35, 2},
+ {55, 3},
+ {75, 4},
+ {90, 5},
+ {100, 11},
+ // Floor 3
+ {35, 3},
+ {55, 4},
+ {75, 5},
+ {90, 6},
+ {100, 12},
+ // Floor 4
+ {35, 4},
+ {55, 5},
+ {75, 6},
+ {90, 7},
+ {100, 13},
+ // Floor 5
+ {35, 5},
+ {55, 6},
+ {75, 7},
+ {90, 8},
+ {100, 14},
+ // Floor 6
+ {35, 6},
+ {55, 7},
+ {75, 8},
+ {90, 9},
+ {100, 15}
};
-static const u8 gUnknown_08613794[] =
+static const u8 sFloorTemplateOffsets[] =
{
- 0x00, 0x04, 0x09, 0x0e, 0x13, 0x18, 0x1d, 0x00
+ 0, 4, 9, 14, 19, 24, 29, 0
};
static const u16 sPickupItemsLvl50[TOTAL_ROUNDS][PICKUP_ITEMS_PER_ROUND] =
@@ -323,482 +362,499 @@ static const u16 sPickupItemsLvlOpen[TOTAL_ROUNDS][PICKUP_ITEMS_PER_ROUND] =
{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 sPickupItemSlots[][2] =
+{
+ // Floor 0
+ { 31, 0},
+ { 46, 1},
+ { 61, 2},
+ { 71, 3},
+ { 81, 4},
+ { 91, 5},
+ { 94, 6},
+ { 97, 7},
+ {100, 8},
+ // Floor 1
+ { 15, 0},
+ { 46, 1},
+ { 61, 2},
+ { 71, 3},
+ { 81, 4},
+ { 91, 5},
+ { 94, 6},
+ { 97, 8},
+ {100, 9},
+ // Floor 2
+ { 15, 0},
+ { 30, 1},
+ { 61, 2},
+ { 71, 3},
+ { 81, 4},
+ { 91, 5},
+ { 94, 6},
+ { 97, 7},
+ {100, 8},
+ // Floor 3
+ { 28, 0},
+ { 43, 1},
+ { 58, 2},
+ { 68, 3},
+ { 78, 4},
+ { 88, 5},
+ { 92, 7},
+ { 96, 8},
+ {100, 9},
+ // Floor 4
+ { 15, 0},
+ { 43, 1},
+ { 58, 2},
+ { 68, 3},
+ { 78, 4},
+ { 88, 5},
+ { 92, 6},
+ { 96, 7},
+ {100, 9},
+ // Floor 5
+ { 15, 0},
+ { 30, 1},
+ { 58, 2},
+ { 68, 3},
+ { 78, 4},
+ { 88, 5},
+ { 92, 6},
+ { 96, 7},
+ {100, 8},
+ // Floor 6
+ { 28, 0},
+ { 43, 1},
+ { 58, 2},
+ { 68, 3},
+ { 78, 4},
+ { 88, 5},
+ { 92, 6},
+ { 96, 8},
+ {100, 9},
};
-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 sPickupItemOffsets[] = {0, 9, 18, 27, 36, 45, 54};
+
+static const struct PyramidTrainerEncounterMusic sTrainerClassEncounterMusic[54] =
+{
+ {TRAINER_CLASS_TEAM_AQUA, TRAINER_ENCOUNTER_MUSIC_AQUA},
+ {TRAINER_CLASS_AQUA_ADMIN, TRAINER_ENCOUNTER_MUSIC_AQUA},
+ {TRAINER_CLASS_AQUA_LEADER, TRAINER_ENCOUNTER_MUSIC_AQUA},
+ {TRAINER_CLASS_AROMA_LADY, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_BATTLE_GIRL, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_SWIMMER_F, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_POKEFAN, TRAINER_ENCOUNTER_MUSIC_TWINS},
+ {TRAINER_CLASS_DRAGON_TAMER, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_COOLTRAINER, TRAINER_ENCOUNTER_MUSIC_COOL},
+ {TRAINER_CLASS_GUITARIST, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_SAILOR, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_TWINS, TRAINER_ENCOUNTER_MUSIC_TWINS},
+ {TRAINER_CLASS_INTERVIEWER, TRAINER_ENCOUNTER_MUSIC_INTERVIEWER},
+ {TRAINER_CLASS_RUIN_MANIAC, TRAINER_ENCOUNTER_MUSIC_HIKER},
+ {TRAINER_CLASS_GENTLEMAN, TRAINER_ENCOUNTER_MUSIC_RICH},
+ {TRAINER_CLASS_SWIMMER_M, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_POKEMANIAC, TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS},
+ {TRAINER_CLASS_BLACK_BELT, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_OLD_COUPLE, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_BUG_MANIAC, TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS},
+ {TRAINER_CLASS_CAMPER, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_KINDLER, TRAINER_ENCOUNTER_MUSIC_HIKER},
+ {TRAINER_CLASS_TEAM_MAGMA, TRAINER_ENCOUNTER_MUSIC_MAGMA},
+ {TRAINER_CLASS_MAGMA_ADMIN, TRAINER_ENCOUNTER_MUSIC_MAGMA},
+ {TRAINER_CLASS_MAGMA_LEADER, TRAINER_ENCOUNTER_MUSIC_MAGMA},
+ {TRAINER_CLASS_LASS, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_BUG_CATCHER, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_NINJA_BOY, TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS},
+ {TRAINER_CLASS_RICH_BOY, TRAINER_ENCOUNTER_MUSIC_RICH},
+ {TRAINER_CLASS_HEX_MANIAC, TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS},
+ {TRAINER_CLASS_BEAUTY, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_LADY, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_PARASOL_LADY, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_PICNICKER, TRAINER_ENCOUNTER_MUSIC_GIRL},
+ {TRAINER_CLASS_PKMN_BREEDER, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_COLLECTOR, TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS},
+ {TRAINER_CLASS_PKMN_RANGER, TRAINER_ENCOUNTER_MUSIC_COOL},
+ {TRAINER_CLASS_PKMN_TRAINER_3, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_YOUNG_COUPLE, TRAINER_ENCOUNTER_MUSIC_GIRL},
+ {TRAINER_CLASS_PSYCHIC, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_SR_AND_JR, TRAINER_ENCOUNTER_MUSIC_TWINS},
+ {TRAINER_CLASS_ELITE_FOUR, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_YOUNGSTER, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_EXPERT, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_TRIATHLETE, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_BIRD_KEEPER, TRAINER_ENCOUNTER_MUSIC_COOL},
+ {TRAINER_CLASS_FISHERMAN, TRAINER_ENCOUNTER_MUSIC_HIKER},
+ {TRAINER_CLASS_CHAMPION, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_TUBER_M, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_TUBER_F, TRAINER_ENCOUNTER_MUSIC_GIRL},
+ {TRAINER_CLASS_SIS_AND_BRO, TRAINER_ENCOUNTER_MUSIC_SWIMMER},
+ {TRAINER_CLASS_HIKER, TRAINER_ENCOUNTER_MUSIC_HIKER},
+ {TRAINER_CLASS_LEADER, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_SCHOOL_KID, TRAINER_ENCOUNTER_MUSIC_MALE},
};
-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 sTrainerTextGroups[50][2] =
+{
+ {FACILITY_CLASS_AROMA_LADY, 3},
+ {FACILITY_CLASS_RUIN_MANIAC, 4},
+ {FACILITY_CLASS_TUBER_F, 1},
+ {FACILITY_CLASS_TUBER_M, 0},
+ {FACILITY_CLASS_COOLTRAINER_M, 2},
+ {FACILITY_CLASS_COOLTRAINER_F, 3},
+ {FACILITY_CLASS_HEX_MANIAC, 3},
+ {FACILITY_CLASS_LADY, 3},
+ {FACILITY_CLASS_BEAUTY, 3},
+ {FACILITY_CLASS_RICH_BOY, 2},
+ {FACILITY_CLASS_POKEMANIAC, 2},
+ {FACILITY_CLASS_SWIMMER_M, 2},
+ {FACILITY_CLASS_BLACK_BELT, 4},
+ {FACILITY_CLASS_GUITARIST, 2},
+ {FACILITY_CLASS_KINDLER, 2},
+ {FACILITY_CLASS_CAMPER, 0},
+ {FACILITY_CLASS_BUG_MANIAC, 2},
+ {FACILITY_CLASS_PSYCHIC_M, 2},
+ {FACILITY_CLASS_PSYCHIC_F, 3},
+ {FACILITY_CLASS_GENTLEMAN, 4},
+ {FACILITY_CLASS_SCHOOL_KID_M, 0},
+ {FACILITY_CLASS_SCHOOL_KID_F, 1},
+ {FACILITY_CLASS_POKEFAN_M, 4},
+ {FACILITY_CLASS_POKEFAN_F, 5},
+ {FACILITY_CLASS_EXPERT_M, 4},
+ {FACILITY_CLASS_EXPERT_F, 5},
+ {FACILITY_CLASS_YOUNGSTER, 0},
+ {FACILITY_CLASS_FISHERMAN, 4},
+ {FACILITY_CLASS_CYCLING_TRIATHLETE_M, 2},
+ {FACILITY_CLASS_RUNNING_TRIATHLETE_M, 2},
+ {FACILITY_CLASS_SWIMMING_TRIATHLETE_M, 2},
+ {FACILITY_CLASS_RUNNING_TRIATHLETE_F, 3},
+ {FACILITY_CLASS_CYCLING_TRIATHLETE_F, 3},
+ {FACILITY_CLASS_SWIMMING_TRIATHLETE_F, 3},
+ {FACILITY_CLASS_DRAGON_TAMER, 2},
+ {FACILITY_CLASS_BIRD_KEEPER, 2},
+ {FACILITY_CLASS_NINJA_BOY, 0},
+ {FACILITY_CLASS_BATTLE_GIRL, 3},
+ {FACILITY_CLASS_PARASOL_LADY, 3},
+ {FACILITY_CLASS_SWIMMER_F, 3},
+ {FACILITY_CLASS_PICNICKER, 1},
+ {FACILITY_CLASS_SAILOR, 2},
+ {FACILITY_CLASS_COLLECTOR, 2},
+ {FACILITY_CLASS_PKMN_BREEDER_M, 2},
+ {FACILITY_CLASS_POKEMON_BREEDER_F, 3},
+ {FACILITY_CLASS_PKMN_RANGER_M, 2},
+ {FACILITY_CLASS_PKMN_RANGER_F, 3},
+ {FACILITY_CLASS_LASS, 3},
+ {FACILITY_CLASS_BUG_CATCHER, 0},
+ {FACILITY_CLASS_HIKER, 4},
};
-static const u8 *const gUnknown_08613C80[] =
+static const u8 *const sExitDirectionHintTexts1[] =
{
- BattleFrontier_BattlePyramidEmptySquare_Text_252D2D,
- BattleFrontier_BattlePyramidEmptySquare_Text_252D57,
- BattleFrontier_BattlePyramidEmptySquare_Text_252D81,
- BattleFrontier_BattlePyramidEmptySquare_Text_252DAB,
+ BattlePyramid_ExitHintUp_Text1,
+ BattlePyramid_ExitHintLeft_Text1,
+ BattlePyramid_ExitHintRight_Text1,
+ BattlePyramid_ExitHintDown_Text1,
};
-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 sRemainingItemsHintTexts1[] =
+{
+ BattlePyramid_ZeroItemsRemaining_Text1,
+ BattlePyramid_OneItemRemaining_Text1,
+ BattlePyramid_TwoItemsRemaining_Text1,
+ BattlePyramid_ThreeItemsRemaining_Text1,
+ BattlePyramid_FourItemsRemaining_Text1,
+ BattlePyramid_FiveItemsRemaining_Text1,
+ BattlePyramid_SixItemsRemaining_Text1,
+ BattlePyramid_SevenItemsRemaining_Text1,
+ BattlePyramid_EightItemsRemaining_Text1,
};
-static const u8 *const gUnknown_08613CB4[] =
+static const u8 *const sRemainingTrainersHintTexts1[] =
{
- 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,
+ BattlePyramid_ZeroTrainersRemaining_Text1,
+ BattlePyramid_OneTrainersRemaining_Text1,
+ BattlePyramid_TwoTrainersRemaining_Text1,
+ BattlePyramid_ThreeTrainersRemaining_Text1,
+ BattlePyramid_FourTrainersRemaining_Text1,
+ BattlePyramid_FiveTrainersRemaining_Text1,
+ BattlePyramid_SixTrainersRemaining_Text1,
+ BattlePyramid_SevenTrainersRemaining_Text1,
};
-static const u8 *const gUnknown_08613CD4[] =
+static const u8 *const sExitDirectionHintTexts2[] =
{
- BattleFrontier_BattlePyramidEmptySquare_Text_252DD5,
- BattleFrontier_BattlePyramidEmptySquare_Text_252E03,
- BattleFrontier_BattlePyramidEmptySquare_Text_252E31,
- BattleFrontier_BattlePyramidEmptySquare_Text_252E5F,
+ BattlePyramid_ExitHintUp_Text2,
+ BattlePyramid_ExitHintLeft_Text2,
+ BattlePyramid_ExitHintRight_Text2,
+ BattlePyramid_ExitHintDown_Text2,
};
-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 sRemainingItemsHintTexts2[] =
+{
+ BattlePyramid_ZeroItemsRemaining_Text2,
+ BattlePyramid_OneItemRemaining_Text2,
+ BattlePyramid_TwoItemsRemaining_Text2,
+ BattlePyramid_ThreeItemsRemaining_Text2,
+ BattlePyramid_FourItemsRemaining_Text2,
+ BattlePyramid_FiveItemsRemaining_Text2,
+ BattlePyramid_SixItemsRemaining_Text2,
+ BattlePyramid_SevenItemsRemaining_Text2,
+ BattlePyramid_EightItemsRemaining_Text2,
};
-static const u8 *const gUnknown_08613D08[] =
+static const u8 *const sRemainingTrainersHintTexts2[] =
{
- 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,
+ BattlePyramid_ZeroTrainersRemaining_Text2,
+ BattlePyramid_OneTrainersRemaining_Text2,
+ BattlePyramid_TwoTrainersRemaining_Text2,
+ BattlePyramid_ThreeTrainersRemaining_Text2,
+ BattlePyramid_FourTrainersRemaining_Text2,
+ BattlePyramid_FiveTrainersRemaining_Text2,
+ BattlePyramid_SixTrainersRemaining_Text2,
+ BattlePyramid_SevenTrainersRemaining_Text2,
};
-static const u8 *const gUnknown_08613D28[] =
+static const u8 *const sExitDirectionHintTexts3[] =
{
- BattleFrontier_BattlePyramidEmptySquare_Text_252E8D,
- BattleFrontier_BattlePyramidEmptySquare_Text_252EAA,
- BattleFrontier_BattlePyramidEmptySquare_Text_252EC7,
- BattleFrontier_BattlePyramidEmptySquare_Text_252EE4,
+ BattlePyramid_ExitHintUp_Text3,
+ BattlePyramid_ExitHintLeft_Text3,
+ BattlePyramid_ExitHintRight_Text3,
+ BattlePyramid_ExitHintDown_Text3,
};
-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 sRemainingItemsHintTexts3[] =
+{
+ BattlePyramid_ZeroItemsRemaining_Text3,
+ BattlePyramid_OneItemRemaining_Text3,
+ BattlePyramid_TwoItemsRemaining_Text3,
+ BattlePyramid_ThreeItemsRemaining_Text3,
+ BattlePyramid_FourItemsRemaining_Text3,
+ BattlePyramid_FiveItemsRemaining_Text3,
+ BattlePyramid_SixItemsRemaining_Text3,
+ BattlePyramid_SevenItemsRemaining_Text3,
+ BattlePyramid_EightItemsRemaining_Text3,
};
-static const u8 *const gUnknown_08613D5C[] =
+static const u8 *const sRemainingTrainersHintTexts3[] =
{
- 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,
+ BattlePyramid_ZeroTrainersRemaining_Text3,
+ BattlePyramid_OneTrainersRemaining_Text3,
+ BattlePyramid_TwoTrainersRemaining_Text3,
+ BattlePyramid_ThreeTrainersRemaining_Text3,
+ BattlePyramid_FourTrainersRemaining_Text3,
+ BattlePyramid_FiveTrainersRemaining_Text3,
+ BattlePyramid_SixTrainersRemaining_Text3,
+ BattlePyramid_SevenTrainersRemaining_Text3,
};
-static const u8 *const gUnknown_08613D7C[] =
+static const u8 *const sExitDirectionHintTexts4[] =
{
- BattleFrontier_BattlePyramidEmptySquare_Text_252F01,
- BattleFrontier_BattlePyramidEmptySquare_Text_252F3A,
- BattleFrontier_BattlePyramidEmptySquare_Text_252F73,
- BattleFrontier_BattlePyramidEmptySquare_Text_252FAC,
+ BattlePyramid_ExitHintUp_Text4,
+ BattlePyramid_ExitHintLeft_Text4,
+ BattlePyramid_ExitHintRight_Text4,
+ BattlePyramid_ExitHintDown_Text4,
};
-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 sRemainingItemsHintTexts4[] =
+{
+ BattlePyramid_ZeroItemsRemaining_Text4,
+ BattlePyramid_OneItemRemaining_Text4,
+ BattlePyramid_TwoItemsRemaining_Text4,
+ BattlePyramid_ThreeItemsRemaining_Text4,
+ BattlePyramid_FourItemsRemaining_Text4,
+ BattlePyramid_FiveItemsRemaining_Text4,
+ BattlePyramid_SixItemsRemaining_Text4,
+ BattlePyramid_SevenItemsRemaining_Text4,
+ BattlePyramid_EightItemsRemaining_Text4,
};
-static const u8 *const gUnknown_08613DB0[] =
+static const u8 *const sRemainingTrainersHintTexts4[] =
{
- 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,
+ BattlePyramid_ZeroTrainersRemaining_Text4,
+ BattlePyramid_OneTrainersRemaining_Text4,
+ BattlePyramid_TwoTrainersRemaining_Text4,
+ BattlePyramid_ThreeTrainersRemaining_Text4,
+ BattlePyramid_FourTrainersRemaining_Text4,
+ BattlePyramid_FiveTrainersRemaining_Text4,
+ BattlePyramid_SixTrainersRemaining_Text4,
+ BattlePyramid_SevenTrainersRemaining_Text4,
};
-static const u8 *const gUnknown_08613DD0[] =
+static const u8 *const sExitDirectionHintTexts5[] =
{
- BattleFrontier_BattlePyramidEmptySquare_Text_252FE5,
- BattleFrontier_BattlePyramidEmptySquare_Text_253000,
- BattleFrontier_BattlePyramidEmptySquare_Text_25301B,
- BattleFrontier_BattlePyramidEmptySquare_Text_253036,
+ BattlePyramid_ExitHintUp_Text5,
+ BattlePyramid_ExitHintLeft_Text5,
+ BattlePyramid_ExitHintRight_Text5,
+ BattlePyramid_ExitHintDown_Text5,
};
-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 sRemainingItemsHintTexts5[] =
+{
+ BattlePyramid_ZeroItemsRemaining_Text5,
+ BattlePyramid_OneItemRemaining_Text5,
+ BattlePyramid_TwoItemsRemaining_Text5,
+ BattlePyramid_ThreeItemsRemaining_Text5,
+ BattlePyramid_FourItemsRemaining_Text5,
+ BattlePyramid_FiveItemsRemaining_Text5,
+ BattlePyramid_SixItemsRemaining_Text5,
+ BattlePyramid_SevenItemsRemaining_Text5,
+ BattlePyramid_EightItemsRemaining_Text5,
};
-static const u8 *const gUnknown_08613E04[] =
+static const u8 *const sRemainingTrainersHintTexts5[] =
{
- 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,
+ BattlePyramid_ZeroTrainersRemaining_Text5,
+ BattlePyramid_OneTrainersRemaining_Text5,
+ BattlePyramid_TwoTrainersRemaining_Text5,
+ BattlePyramid_ThreeTrainersRemaining_Text5,
+ BattlePyramid_FourTrainersRemaining_Text5,
+ BattlePyramid_FiveTrainersRemaining_Text5,
+ BattlePyramid_SixTrainersRemaining_Text5,
+ BattlePyramid_SevenTrainersRemaining_Text5,
};
-static const u8 *const gUnknown_08613E24[] =
+static const u8 *const sExitDirectionHintTexts6[] =
{
- BattleFrontier_BattlePyramidEmptySquare_Text_253051,
- BattleFrontier_BattlePyramidEmptySquare_Text_25307C,
- BattleFrontier_BattlePyramidEmptySquare_Text_2530A7,
- BattleFrontier_BattlePyramidEmptySquare_Text_2530D2,
+ BattlePyramid_ExitHintUp_Text6,
+ BattlePyramid_ExitHintLeft_Text6,
+ BattlePyramid_ExitHintRight_Text6,
+ BattlePyramid_ExitHintDown_Text6,
};
-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 sRemainingItemsHintTexts6[] =
+{
+ BattlePyramid_ZeroItemsRemaining_Text6,
+ BattlePyramid_OneItemRemaining_Text6,
+ BattlePyramid_TwoItemsRemaining_Text6,
+ BattlePyramid_ThreeItemsRemaining_Text6,
+ BattlePyramid_FourItemsRemaining_Text6,
+ BattlePyramid_FiveItemsRemaining_Text6,
+ BattlePyramid_SixItemsRemaining_Text6,
+ BattlePyramid_SevenItemsRemaining_Text6,
+ BattlePyramid_EightItemsRemaining_Text6,
};
-static const u8 *const gUnknown_08613E58[] =
+static const u8 *const sRemainingTrainersHintTexts6[] =
{
- 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,
+ BattlePyramid_ZeroTrainersRemaining_Text6,
+ BattlePyramid_OneTrainersRemaining_Text6,
+ BattlePyramid_TwoTrainersRemaining_Text6,
+ BattlePyramid_ThreeTrainersRemaining_Text6,
+ BattlePyramid_FourTrainersRemaining_Text6,
+ BattlePyramid_FiveTrainersRemaining_Text6,
+ BattlePyramid_SixTrainersRemaining_Text6,
+ BattlePyramid_SevenTrainersRemaining_Text6,
};
-static const u8 *const *const gUnknown_08613E78[] =
+static const u8 *const *const sPostBattleHintTexts1[] =
{
- gUnknown_08613C80,
- gUnknown_08613C90,
- gUnknown_08613CB4,
+ sExitDirectionHintTexts1,
+ sRemainingItemsHintTexts1,
+ sRemainingTrainersHintTexts1,
};
-static const u8 *const *const gUnknown_08613E84[] =
+static const u8 *const *const sPostBattleHintTexts2[] =
{
- gUnknown_08613CD4,
- gUnknown_08613CE4,
- gUnknown_08613D08,
+ sExitDirectionHintTexts2,
+ sRemainingItemsHintTexts2,
+ sRemainingTrainersHintTexts2,
};
-static const u8 *const *const gUnknown_08613E90[] =
+static const u8 *const *const sPostBattleHintTexts3[] =
{
- gUnknown_08613D28,
- gUnknown_08613D38,
- gUnknown_08613D5C,
+ sExitDirectionHintTexts3,
+ sRemainingItemsHintTexts3,
+ sRemainingTrainersHintTexts3,
};
-static const u8 *const *const gUnknown_08613E9C[] =
+static const u8 *const *const sPostBattleHintTexts4[] =
{
- gUnknown_08613D7C,
- gUnknown_08613D8C,
- gUnknown_08613DB0,
+ sExitDirectionHintTexts4,
+ sRemainingItemsHintTexts4,
+ sRemainingTrainersHintTexts4,
};
-static const u8 *const *const gUnknown_08613EA8[] =
+static const u8 *const *const sPostBattleHintTexts5[] =
{
- gUnknown_08613DD0,
- gUnknown_08613DE0,
- gUnknown_08613E04,
+ sExitDirectionHintTexts5,
+ sRemainingItemsHintTexts5,
+ sRemainingTrainersHintTexts5,
};
-static const u8 *const *const gUnknown_08613EB4[] =
+static const u8 *const *const sPostBattleHintTexts6[] =
{
- gUnknown_08613E24,
- gUnknown_08613E34,
- gUnknown_08613E58,
+ sExitDirectionHintTexts6,
+ sRemainingItemsHintTexts6,
+ sRemainingTrainersHintTexts6,
};
-static const u8 *const *const *const gUnknown_08613EC0[] =
+static const u8 *const *const *const sPostBattleTexts[] =
{
- gUnknown_08613E78,
- gUnknown_08613E84,
- gUnknown_08613E90,
- gUnknown_08613E9C,
- gUnknown_08613EA8,
- gUnknown_08613EB4,
+ sPostBattleHintTexts1,
+ sPostBattleHintTexts2,
+ sPostBattleHintTexts3,
+ sPostBattleHintTexts4,
+ sPostBattleHintTexts5,
+ sPostBattleHintTexts6,
};
-static const u8 gUnknown_08613ED8[] = {3, 4, 5, 6, 7, 8, 3, 4};
+static const u8 sHintTextTypes[] =
+{
+ HINT_EXIT_SHORT_REMAINING_TRAINERS,
+ HINT_EXIT_SHORT_REMAINING_ITEMS,
+ HINT_EXIT_MEDIUM_REMAINING_TRAINERS,
+ HINT_EXIT_MEDIUM_REMAINING_ITEMS,
+ HINT_EXIT_FAR_REMAINING_TRAINERS,
+ HINT_EXIT_FAR_REMAINING_ITEMS,
+ HINT_EXIT_SHORT_REMAINING_TRAINERS,
+ HINT_EXIT_SHORT_REMAINING_ITEMS,
+};
static void (* const sBattlePyramidFunctions[])(void) =
{
- sub_81A8E9C,
- sub_81A8F38,
- sub_81A9048,
+ InitPyramidChallenge,
+ GetBattlePyramidData,
+ SetBattlePyramidData,
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,
+ SetBattlePyramidRewardItem,
+ GiveBattlePyramidRewardItem,
+ SeedPyramidFloor,
+ SetPickupItem,
+ HidePyramidItem,
+ InitPyramidFacilityTrainers,
+ ShowPostBattleHintText,
+ UpdatePyramidWinStreak,
+ GetInBattlePyramid,
+ UpdatePyramidLightRadius,
+ ClearPyramidPartyHeldItems,
+ SetPyramidFloorPalette,
sub_81A9828,
- sub_81A9834,
+ RestorePyramidPlayerParty,
};
-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 u16 sShortStreakRewardItems[] = {ITEM_HP_UP, ITEM_PROTEIN, ITEM_IRON, ITEM_CALCIUM, ITEM_CARBOS, ITEM_ZINC};
+static const u16 sLongStreakRewardItems[] = {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 sBorderedSquareIds[][4] =
+{
+ {1, 4, -1, -1},
+ {0, 2, 5, -1},
+ {1, 3, 6, -1},
+ {2, 7, -1, -1},
+ {0, 5, 8, -1},
+ {1, 4, 6, 9},
+ {2, 5, 7, 10},
+ {3, 6, 11, -1},
+ {4, 9, 12, -1},
+ {5, 8, 10, 13},
+ {6, 9, 11, 14},
+ {7, 10, 15, -1},
+ {8, 13, -1, -1},
+ {9, 12, 14, -1},
+ {10, 13, 15, -1},
+ {11, 14, -1, -1},
};
static const u8 sPickupPercentages[PICKUP_ITEMS_PER_ROUND] = {30, 40, 50, 60, 70, 80, 85, 90, 95, 100};
@@ -809,7 +865,7 @@ void CallBattlePyramidFunction(void)
sBattlePyramidFunctions[gSpecialVar_0x8004]();
}
-static void sub_81A8E9C(void)
+static void InitPyramidChallenge(void)
{
bool32 isCurrent;
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
@@ -825,22 +881,22 @@ static void sub_81A8E9C(void)
if (!isCurrent)
{
gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] = 0;
- InitBagItems(lvlMode);
+ InitPyramidBagItems(lvlMode);
}
- sub_81C4EEC();
+ InitBattlePyramidBagCursorPosition();
gTrainerBattleOpponent_A = 0;
gBattleOutcome = 0;
}
-static void sub_81A8F38(void)
+static void GetBattlePyramidData(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
switch (gSpecialVar_0x8005)
{
case 0:
- gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E18;
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.pyramidRewardItem;
break;
case 1:
gSpecialVar_Result = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode];
@@ -866,14 +922,14 @@ static void sub_81A8F38(void)
}
}
-static void sub_81A9048(void)
+static void SetBattlePyramidData(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
switch (gSpecialVar_0x8005)
{
case 0:
- gSaveBlock2Ptr->frontier.field_E18 = gSpecialVar_0x8006;
+ gSaveBlock2Ptr->frontier.pyramidRewardItem = gSpecialVar_0x8006;
break;
case 1:
gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] = gSpecialVar_0x8006;
@@ -895,7 +951,7 @@ static void sub_81A9048(void)
}
break;
case 7:
- gSaveBlock2Ptr->frontier.field_E2A = gSpecialVar_0x8006;
+ gSaveBlock2Ptr->frontier.pyramidTrainerFlags = gSpecialVar_0x8006;
break;
}
}
@@ -909,22 +965,22 @@ static void sub_81A9134(void)
TrySavingData(SAVE_LINK);
}
-static void sub_81A917C(void)
+static void SetBattlePyramidRewardItem(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] > 41)
- gSaveBlock2Ptr->frontier.field_E18 = gUnknown_08613F34[Random() % ARRAY_COUNT(gUnknown_08613F34)];
+ gSaveBlock2Ptr->frontier.pyramidRewardItem = sLongStreakRewardItems[Random() % ARRAY_COUNT(sLongStreakRewardItems)];
else
- gSaveBlock2Ptr->frontier.field_E18 = gUnknown_08613F28[Random() % ARRAY_COUNT(gUnknown_08613F28)];
+ gSaveBlock2Ptr->frontier.pyramidRewardItem = sShortStreakRewardItems[Random() % ARRAY_COUNT(sShortStreakRewardItems)];
}
-static void sub_81A91FC(void)
+static void GiveBattlePyramidRewardItem(void)
{
- if (AddBagItem(gSaveBlock2Ptr->frontier.field_E18, 1) == TRUE)
+ if (AddBagItem(gSaveBlock2Ptr->frontier.pyramidRewardItem, 1) == TRUE)
{
- CopyItemName(gSaveBlock2Ptr->frontier.field_E18, gStringVar1);
- gSaveBlock2Ptr->frontier.field_E18 = 0;
+ CopyItemName(gSaveBlock2Ptr->frontier.pyramidRewardItem, gStringVar1);
+ gSaveBlock2Ptr->frontier.pyramidRewardItem = 0;
gSpecialVar_Result = TRUE;
}
else
@@ -933,21 +989,21 @@ static void sub_81A91FC(void)
}
}
-static void sub_81A9254(void)
+static void SeedPyramidFloor(void)
{
- s32 i;
+ int i;
for (i = 0; i < 4; i++)
- gSaveBlock2Ptr->frontier.field_E22[i] = Random();
+ gSaveBlock2Ptr->frontier.pyramidRandoms[i] = Random();
- gSaveBlock2Ptr->frontier.field_E2A = 0;
+ gSaveBlock2Ptr->frontier.pyramidTrainerFlags = 0;
}
-static void sub_81A9290(void)
+static void SetPickupItem(void)
{
- s32 i;
- s32 r7;
- s32 rand;
+ int i;
+ int itemIndex;
+ int rand;
u8 id;
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u32 floor = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
@@ -956,37 +1012,39 @@ static void sub_81A9290(void)
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];
+ id = GetPyramidFloorTemplateId();
+ itemIndex = (gSpecialVar_LastTalked - sPyramidFloorTemplates[id].numTrainers) - 1;
+ rand = gSaveBlock2Ptr->frontier.pyramidRandoms[itemIndex / 2];
SeedRng2(rand);
- for (i = 0; i < r7 + 1; i++)
+ for (i = 0; i < itemIndex + 1; i++)
rand = Random2() % 100;
- for (i = gUnknown_08613B3A[floor]; i < ARRAY_COUNT(gUnknown_08613ABC); i++)
+ for (i = sPickupItemOffsets[floor]; i < ARRAY_COUNT(sPickupItemSlots); i++)
{
- if (rand < gUnknown_08613ABC[i][0])
+ if (rand < sPickupItemSlots[i][0])
break;
}
if (lvlMode != FRONTIER_LVL_50)
- gSpecialVar_0x8000 = sPickupItemsLvlOpen[round][gUnknown_08613ABC[i][1]];
+ gSpecialVar_0x8000 = sPickupItemsLvlOpen[round][sPickupItemSlots[i][1]];
else
- gSpecialVar_0x8000 = sPickupItemsLvl50[round][gUnknown_08613ABC[i][1]];
+ gSpecialVar_0x8000 = sPickupItemsLvl50[round][sPickupItemSlots[i][1]];
gSpecialVar_0x8001 = 1;
}
-static void sub_81A93C8(void)
+static void HidePyramidItem(void)
{
struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
- s32 i = 0;
+ int i = 0;
for (;;)
{
if (events[i].localId == gSpecialVar_LastTalked)
{
+ // Rather than using event flags to hide the item event object,
+ // it moves them far off the map bounds.
events[i].x = 0x7FFF;
events[i].y = 0x7FFF;
break;
@@ -997,82 +1055,82 @@ static void sub_81A93C8(void)
}
}
-static void sub_81A9414(void)
+static void InitPyramidFacilityTrainers(void)
{
gFacilityTrainers = gBattleFrontierTrainers;
}
-static void sub_81A9424(void)
+static void ShowPostBattleHintText(void)
{
- s32 i;
- s32 var_24;
+ int i;
+ int hintType;
u8 id;
- s32 class = 0;
- s32 r7 = 0;
+ int textGroup = 0;
+ int textIndex = 0;
struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
u16 trainerId = LocalIdToPyramidTrainerId(gEventObjects[gSelectedEventObject].localId);
- for (i = 0; i < ARRAY_COUNT(gUnknown_08613C1C); i++)
+ for (i = 0; i < ARRAY_COUNT(sTrainerTextGroups); i++)
{
- if (gUnknown_08613C1C[i][0] == gFacilityTrainers[trainerId].facilityClass)
+ if (sTrainerTextGroups[i][0] == gFacilityTrainers[trainerId].facilityClass)
{
- class = gUnknown_08613C1C[i][1];
+ textGroup = sTrainerTextGroups[i][1];
break;
}
}
- var_24 = gUnknown_08613ED8[gEventObjects[gSelectedEventObject].localId - 1];
+ hintType = sHintTextTypes[gEventObjects[gSelectedEventObject].localId - 1];
i = 0;
while (!i)
{
- switch (var_24)
+ switch (hintType)
{
- case 0:
- r7 = sub_81A9998(&var_24, 8, 0);
+ case HINT_EXIT_DIRECTION:
+ textIndex = GetPostBattleDirectionHintTextIndex(&hintType, 8, HINT_EXIT_DIRECTION);
i = 1;
break;
- case 1:
- for (i = 0; i < sub_81AAA40(); i++)
+ case HINT_REMAINING_ITEMS:
+ for (i = 0; i < GetNumBattlePyramidEventObjects(); i++)
{
if (events[i].graphicsId == EVENT_OBJ_GFX_ITEM_BALL && events[i].x != 0x7FFF && events[i].y != 0x7FFF)
- r7++;
+ textIndex++;
}
i = 1;
break;
- case 2:
- id = sub_81AA9E4();
- r7 = gUnknown_08613650[id].unk1;
+ case HINT_REMAINING_TRAINERS:
+ id = GetPyramidFloorTemplateId();
+ textIndex = sPyramidFloorTemplates[id].numTrainers;
for (i = 0; i < 8; i++)
{
- if (gBitTable[i] & gSaveBlock2Ptr->frontier.field_E2A)
- r7--;
+ if (gBitTable[i] & gSaveBlock2Ptr->frontier.pyramidTrainerFlags)
+ textIndex--;
}
i = 1;
break;
- case 3:
- sub_81A9998(&var_24, 8, 2);
+ case HINT_EXIT_SHORT_REMAINING_TRAINERS:
+ GetPostBattleDirectionHintTextIndex(&hintType, 8, HINT_REMAINING_TRAINERS);
break;
- case 4:
- sub_81A9998(&var_24, 8, 1);
+ case HINT_EXIT_SHORT_REMAINING_ITEMS:
+ GetPostBattleDirectionHintTextIndex(&hintType, 8, HINT_REMAINING_ITEMS);
break;
- case 5:
- sub_81A9998(&var_24, 16, 2);
+ case HINT_EXIT_MEDIUM_REMAINING_TRAINERS:
+ GetPostBattleDirectionHintTextIndex(&hintType, 16, HINT_REMAINING_TRAINERS);
break;
- case 6:
- sub_81A9998(&var_24, 16, 1);
+ case HINT_EXIT_MEDIUM_REMAINING_ITEMS:
+ GetPostBattleDirectionHintTextIndex(&hintType, 16, HINT_REMAINING_ITEMS);
break;
- case 7:
- sub_81A9998(&var_24, 24, 2);
+ case HINT_EXIT_FAR_REMAINING_TRAINERS:
+ GetPostBattleDirectionHintTextIndex(&hintType, 24, HINT_REMAINING_TRAINERS);
break;
- case 8:
- sub_81A9998(&var_24, 24, 1);
+ case HINT_EXIT_FAR_REMAINING_ITEMS:
+ GetPostBattleDirectionHintTextIndex(&hintType, 24, HINT_REMAINING_ITEMS);
break;
}
}
- ShowFieldMessage(gUnknown_08613EC0[class][var_24][r7]);
+ ShowFieldMessage(sPostBattleTexts[textGroup][hintType][textIndex]);
}
-static void sub_81A9618(void)
+static void UpdatePyramidWinStreak(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
@@ -1082,17 +1140,17 @@ static void sub_81A9618(void)
gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode] = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode];
}
-static void sub_81A966C(void)
+static void GetInBattlePyramid(void)
{
gSpecialVar_Result = InBattlePyramid();
}
-static void sub_81A9684(void)
+static void UpdatePyramidLightRadius(void)
{
switch (gSpecialVar_0x8006)
{
case 0:
- gSaveBlock2Ptr->frontier.field_E68 = gSpecialVar_0x8005;
+ gSaveBlock2Ptr->frontier.pyramidLightRadius = gSpecialVar_0x8005;
break;
case 1:
switch (gSpecialVar_Result)
@@ -1100,8 +1158,8 @@ static void sub_81A9684(void)
case 0:
if (!gPaletteFade.active)
{
- if (gSaveBlock2Ptr->frontier.field_E68 >= 120)
- gSaveBlock2Ptr->frontier.field_E68 = 120;
+ if (gSaveBlock2Ptr->frontier.pyramidLightRadius >= 120)
+ gSaveBlock2Ptr->frontier.pyramidLightRadius = 120;
else
PlaySE(gSpecialVar_0x8007);
gSpecialVar_Result++;
@@ -1111,13 +1169,13 @@ static void sub_81A9684(void)
if (gSpecialVar_0x8005 != 0)
{
gSpecialVar_0x8005--;
- gSaveBlock2Ptr->frontier.field_E68++;
- if (gSaveBlock2Ptr->frontier.field_E68 > 120)
+ gSaveBlock2Ptr->frontier.pyramidLightRadius++;
+ if (gSaveBlock2Ptr->frontier.pyramidLightRadius > 120)
{
- gSaveBlock2Ptr->frontier.field_E68 = 120;
+ gSaveBlock2Ptr->frontier.pyramidLightRadius = 120;
gSpecialVar_Result++;
}
- door_upload_tiles();
+ WriteBattlePyramidViewScanlineEffectBuffer();
}
else
{
@@ -1132,9 +1190,9 @@ static void sub_81A9684(void)
}
}
-static void sub_81A975C(void)
+static void ClearPyramidPartyHeldItems(void)
{
- s32 i, j;
+ int i, j;
u16 item = 0;
for (i = 0; i < PARTY_SIZE; i++)
@@ -1147,12 +1205,12 @@ static void sub_81A975C(void)
}
}
-static void sub_81A97C8(void)
+static void SetPyramidFloorPalette(void)
{
- CreateTask(sub_81A97DC, 0);
+ CreateTask(Task_SetPyramidFloorPalette, 0);
}
-static void sub_81A97DC(u8 taskId)
+static void Task_SetPyramidFloorPalette(u8 taskId)
{
if (gPaletteFade.active)
{
@@ -1166,29 +1224,29 @@ static void sub_81A9828(void)
sub_809FDD4();
}
-static void sub_81A9834(void)
+static void RestorePyramidPlayerParty(void)
{
- s32 i, j, k, l;
+ int i, j, k, l;
for (i = 0; i < 3; i++)
{
- s32 id = gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1;
+ int partyIndex = 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))
+ if (GetMonData(&gSaveBlock1Ptr->playerParty[partyIndex], MON_DATA_SPECIES, NULL) == GetMonData(&gPlayerParty[j], MON_DATA_SPECIES, NULL))
{
for (k = 0; k < MAX_MON_MOVES; k++)
{
for (l = 0; l < MAX_MON_MOVES; l++)
{
- if (GetMonData(&gSaveBlock1Ptr->playerParty[id], MON_DATA_MOVE1 + l, NULL) == GetMonData(&gPlayerParty[j], MON_DATA_MOVE1 + k, NULL))
+ if (GetMonData(&gSaveBlock1Ptr->playerParty[partyIndex], MON_DATA_MOVE1 + l, NULL) == GetMonData(&gPlayerParty[j], MON_DATA_MOVE1 + k, NULL))
break;
}
if (l == MAX_MON_MOVES)
SetMonMoveSlot(&gPlayerParty[j], MOVE_SKETCH, k);
}
- gSaveBlock1Ptr->playerParty[id] = gPlayerParty[j];
- gSelectedOrderFromParty[j] = id + 1;
+ gSaveBlock1Ptr->playerParty[partyIndex] = gPlayerParty[j];
+ gSelectedOrderFromParty[j] = partyIndex + 1;
break;
}
}
@@ -1198,104 +1256,108 @@ static void sub_81A9834(void)
gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gSelectedOrderFromParty[i];
}
-static u8 sub_81A9998(s32 *arg0, u8 arg1, u8 arg2)
+static u8 GetPostBattleDirectionHintTextIndex(int *hintType, u8 minDistanceForExitHint, u8 defaultHintType)
{
- s32 i, j;
- u8 ret = 0;
+ int x, y;
+ u8 textIndex = 0;
u16 *map = gBackupMapLayout.map;
map += gBackupMapLayout.width * 7 + 7;
- for (i = 0; i < 32; map += 47, i++)
+ for (y = 0; y < 32; map += 47, y++)
{
- for (j = 0; j < 32; j++)
+ for (x = 0; x < 32; x++)
{
- if ((map[j] & 0x3FF) == 0x28E)
+ if ((map[x] & METATILE_ID_MASK) == FLOOR_EXIT_METATILE)
{
- j += 7 - gEventObjects[gSelectedEventObject].initialCoords.x;
- i += 7 - gEventObjects[gSelectedEventObject].initialCoords.y;
- if (j >= arg1 || j <= -arg1 || i >= arg1 || i <= -arg1 || arg2 == 0)
+ x += 7 - gEventObjects[gSelectedEventObject].initialCoords.x;
+ y += 7 - gEventObjects[gSelectedEventObject].initialCoords.y;
+ if (x >= minDistanceForExitHint
+ || x <= -minDistanceForExitHint
+ || y >= minDistanceForExitHint
+ || y <= -minDistanceForExitHint
+ || defaultHintType == HINT_EXIT_DIRECTION)
{
- if (j > 0 && i > 0)
+ if (x > 0 && y > 0)
{
- if (j >= i)
- ret = 2;
+ if (x >= y)
+ textIndex = 2;
else
- ret = 3;
+ textIndex = 3;
}
- else if (j < 0 && i < 0)
+ else if (x < 0 && y < 0)
{
- if (j > i)
- ret = 0;
+ if (x > y)
+ textIndex = 0;
else
- ret = 1;
+ textIndex = 1;
}
- else if (j == 0)
+ else if (x == 0)
{
- if (i > 0)
- ret = 3;
+ if (y > 0)
+ textIndex = 3;
else
- ret = 0;
+ textIndex = 0;
}
- else if (i == 0)
+ else if (y == 0)
{
- if (j > 0)
- ret = 2;
+ if (x > 0)
+ textIndex = 2;
else
- ret = 1;
+ textIndex = 1;
}
- else if (j < 0)
+ else if (x < 0)
{
- if (j + i > 0)
- ret = 3;
+ if (x + y > 0)
+ textIndex = 3;
else
- ret = 1;
+ textIndex = 1;
}
else
{
- ret = (~(j + i) >= 0) ? 0 : 2;
+ textIndex = (~(x + y) >= 0) ? 0 : 2;
}
- *arg0 = 0;
+ *hintType = HINT_EXIT_DIRECTION;
}
else
{
- *arg0 = arg2;
+ *hintType = defaultHintType;
}
- return ret;
+ return textIndex;
}
}
}
- return ret;
+ return textIndex;
}
u16 LocalIdToPyramidTrainerId(u8 localId)
{
- return gSaveBlock2Ptr->frontier.field_CB4[localId - 1];
+ return gSaveBlock2Ptr->frontier.trainerIds[localId - 1];
}
bool8 GetBattlePyramidTrainerFlag(u8 eventId)
{
- return gSaveBlock2Ptr->frontier.field_E2A & gBitTable[gEventObjects[eventId].localId - 1];
+ return gSaveBlock2Ptr->frontier.pyramidTrainerFlags & gBitTable[gEventObjects[eventId].localId - 1];
}
-void sub_81A9B04(void)
+void MarkApproachingPyramidTrainersAsBattled(void)
{
- sub_81A9B44(gTrainerBattleOpponent_A);
+ MarkPyramidTrainerAsBattled(gTrainerBattleOpponent_A);
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
{
gSelectedEventObject = GetChosenApproachingTrainerEventObjectId(1);
- sub_81A9B44(gTrainerBattleOpponent_B);
+ MarkPyramidTrainerAsBattled(gTrainerBattleOpponent_B);
}
}
-static void sub_81A9B44(u16 trainerId)
+static void MarkPyramidTrainerAsBattled(u16 trainerId)
{
- s32 i;
+ int i;
for (i = 0; i < 8; i++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
- gSaveBlock2Ptr->frontier.field_E2A |= gBitTable[i];
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId)
+ gSaveBlock2Ptr->frontier.pyramidTrainerFlags |= gBitTable[i];
}
gEventObjects[gSelectedEventObject].movementType = MOVEMENT_TYPE_WANDER_AROUND;
@@ -1307,7 +1369,7 @@ static void sub_81A9B44(u16 trainerId)
void GenerateBattlePyramidWildMon(void)
{
u8 name[POKEMON_NAME_LENGTH + 1];
- s32 i;
+ int i;
const struct PyramidWildMon *wildMons;
u32 id;
u32 lvl = gSaveBlock2Ptr->frontier.lvlMode;
@@ -1363,7 +1425,8 @@ void GenerateBattlePyramidWildMon(void)
for (i = 0; i < MAX_MON_MOVES; 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.
+ // BUG: Reading outside the array as lvl was used for mon level instead of frontier lvl mode.
+ if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] >= 140)
{
id = (Random() % 17) + 15;
for (i = 0; i < NUM_STATS; i++)
@@ -1374,15 +1437,15 @@ void GenerateBattlePyramidWildMon(void)
u8 GetPyramidRunMultiplier(void)
{
- u8 id = sub_81AA9E4();
- return gUnknown_08613650[id].runMultiplier;
+ u8 id = GetPyramidFloorTemplateId();
+ return sPyramidFloorTemplates[id].runMultiplier;
}
u8 InBattlePyramid(void)
{
- if (gMapHeader.mapLayoutId == 361)
+ if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
return 1;
- else if (gMapHeader.mapLayoutId == 378)
+ else if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP)
return 2;
else
return FALSE;
@@ -1390,21 +1453,22 @@ u8 InBattlePyramid(void)
bool8 InBattlePyramid_(void)
{
- return (gMapHeader.mapLayoutId == 361 || gMapHeader.mapLayoutId == 378);
+ return gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE
+ || gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP;
}
void sub_81A9E90(void)
{
if (InBattlePyramid())
{
- sub_81A9834();
+ RestorePyramidPlayerParty();
gSaveBlock2Ptr->frontier.field_CA8 = 2;
VarSet(VAR_TEMP_E, 0);
LoadPlayerParty();
}
}
-void sub_81A9EC8(void)
+void SoftResetInBattlePyramid(void)
{
if (InBattlePyramid())
DoSoftReset();
@@ -1425,26 +1489,26 @@ void CopyPyramidTrainerLoseSpeech(u16 trainerId)
FrontierSpeechToString(gFacilityTrainers[trainerId].speechLose);
}
-u8 GetTrainerEncounterMusicIdInBattlePyramind(u16 trainerId)
+u8 GetBattlePyramindTrainerEncounterMusicId(u16 trainerId)
{
- s32 i;
+ int i;
- for (i = 0; i < ARRAY_COUNT(gUnknown_08613B44); i++)
+ for (i = 0; i < ARRAY_COUNT(sTrainerClassEncounterMusic); i++)
{
- if (gUnknown_08613B44[i].class == gFacilityClassToTrainerClass[gFacilityTrainers[trainerId].facilityClass])
- return gUnknown_08613B44[i].music;
+ if (sTrainerClassEncounterMusic[i].trainerClass == gFacilityClassToTrainerClass[gFacilityTrainers[trainerId].facilityClass])
+ return sTrainerClassEncounterMusic[i].trainerEncounterMusic;
}
- return 0;
+ return TRAINER_ENCOUNTER_MUSIC_MALE;
}
-static void sub_81A9F80(void)
+void sub_81A9F80(void)
{
ScriptContext1_SetupScript(BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88);
}
-static u16 sub_81A9F90(u8 count)
+static u16 GetUniqueTrainerId(u8 eventObjectId)
{
- s32 i;
+ int i;
u16 trainerId;
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
u32 challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7;
@@ -1454,178 +1518,178 @@ static u16 sub_81A9F90(u8 count)
do
{
trainerId = sub_8162548(challengeNum + 1, battleNum);
- for (i = 0; i < count; i++)
+ for (i = 0; i < eventObjectId; i++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId)
break;
}
- } while (i != count);
+ } while (i != eventObjectId);
}
else
{
do
{
trainerId = sub_8162548(challengeNum, battleNum);
- for (i = 0; i < count; i++)
+ for (i = 0; i < eventObjectId; i++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId)
break;
}
- } while (i != count);
+ } while (i != eventObjectId);
}
return trainerId;
}
-void sub_81AA078(u16 *mapArg, u8 arg1)
+void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPosition)
{
- s32 j, k;
- s32 i;
- u8 var0, var1;
- u8 *allocated = AllocZeroed(0x10);
+ int y, x;
+ int i;
+ u8 entranceSquareId, exitSquareId;
+ u8 *floorLayoutOffsets = AllocZeroed(16);
- sub_81AA96C(allocated);
- sub_81AA33C(&var0, &var1);
+ GetPyramidFloorLayoutOffsets(floorLayoutOffsets);
+ GetPyramidEntranceAndExitSquareIds(&entranceSquareId, &exitSquareId);
for (i = 0; i < 16; i++)
{
u16 *map;
- s32 heightAdd, widthAdd;
- const struct MapLayout *mapLayout = gMapLayouts[allocated[i] + 0x169];
+ int yOffset, xOffset;
+ const struct MapLayout *mapLayout = gMapLayouts[floorLayoutOffsets[i] + LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE];
const u16 *layoutMap = mapLayout->map;
- gBackupMapLayout.map = mapArg;
+ gBackupMapLayout.map = backupMapData;
gBackupMapLayout.width = mapLayout->width * 4 + 15;
gBackupMapLayout.height = mapLayout->height * 4 + 14;
- map = mapArg;
- heightAdd = (((i / 4 * mapLayout->height) + 7) * (gBackupMapLayout.width));
- widthAdd = ((i % 4 * mapLayout->width) + 7);
- map += heightAdd + widthAdd;
- for (j = 0; j < mapLayout->height; j++)
+ map = backupMapData;
+ yOffset = ((i / 4 * mapLayout->height) + 7) * gBackupMapLayout.width;
+ xOffset = (i % 4 * mapLayout->width) + 7;
+ map += yOffset + xOffset;
+ for (y = 0; y < mapLayout->height; y++)
{
- for (k = 0; k < mapLayout->width; k++)
+ for (x = 0; x < mapLayout->width; x++)
{
- if ((layoutMap[k] & 0x3FF) != 0x28E)
+ if ((layoutMap[x] & METATILE_ID_MASK) != FLOOR_EXIT_METATILE)
{
- map[k] = layoutMap[k];
+ map[x] = layoutMap[x];
}
- else if (i != var1)
+ else if (i != exitSquareId)
{
- if (i == var0 && arg1 == 0)
+ if (i == entranceSquareId && setPlayerPosition == FALSE)
{
- gSaveBlock1Ptr->pos.x = (mapLayout->width * (i % 4)) + k;
- gSaveBlock1Ptr->pos.y = (mapLayout->height * (i / 4)) + j;
+ gSaveBlock1Ptr->pos.x = (mapLayout->width * (i % 4)) + x;
+ gSaveBlock1Ptr->pos.y = (mapLayout->height * (i / 4)) + y;
}
- map[k] = (layoutMap[k] & 0xFC00) | 0x28D;
+ map[x] = (layoutMap[x] & 0xFC00) | FLOOR_WALKABLE_METATILE;
}
else
{
- map[k] = layoutMap[k];
+ map[x] = layoutMap[x];
}
}
map += 15 + (mapLayout->width * 4);
layoutMap += mapLayout->width;
}
}
- mapheader_run_script_with_tag_x1();
- free(allocated);
+ RunOnLoadMapScript();
+ free(floorLayoutOffsets);
}
-void sub_81AA1D8(void)
+void LoadBattlePyramidEventObjectTemplates(void)
{
- s32 i;
+ int i;
u8 id;
- u8 var0, var1;
+ u8 entranceSquareId, exitSquareId;
for (i = 0; i < 8; i++)
- gSaveBlock2Ptr->frontier.field_CB4[i] = 0xFFFF;
+ gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF;
- id = sub_81AA9E4();
- sub_81AA33C(&var0, &var1);
+ id = GetPyramidFloorTemplateId();
+ GetPyramidEntranceAndExitSquareIds(&entranceSquareId, &exitSquareId);
CpuFill32(0, gSaveBlock1Ptr->eventObjectTemplates, sizeof(gSaveBlock1Ptr->eventObjectTemplates));
for (i = 0; i < 2; i++)
{
- u8 value;
+ u8 objectPositionsType;
- if (i == 0)
- value = gUnknown_08613650[id].unk3;
- else
- value = gUnknown_08613650[id].unk2;
+ if (i == OBJ_TRAINERS)
+ objectPositionsType = sPyramidFloorTemplates[id].trainerPositions;
+ else // OBJ_ITEMS
+ objectPositionsType = sPyramidFloorTemplates[id].itemPositions;
- switch (value)
+ switch (objectPositionsType)
{
- case 0:
- sub_81AA398(i);
+ case OBJ_POSITIONS_UNIFORM:
+ SetPyramidObjectPositionsUniformly(i);
break;
- case 1:
- if (sub_81AA4D8(i, var0))
- sub_81AA398(i);
+ case OBJ_POSITIONS_IN_AND_NEAR_ENTRANCE:
+ if (SetPyramidObjectPositionsInAndNearSquare(i, entranceSquareId))
+ SetPyramidObjectPositionsUniformly(i);
break;
- case 2:
- if (sub_81AA4D8(i, var1))
- sub_81AA398(i);
+ case OBJ_POSITIONS_IN_AND_NEAR_EXIT:
+ if (SetPyramidObjectPositionsInAndNearSquare(i, exitSquareId))
+ SetPyramidObjectPositionsUniformly(i);
break;
- case 3:
- if (sub_81AA648(i, var0))
- sub_81AA398(i);
+ case OBJ_POSITIONS_NEAR_ENTRANCE:
+ if (SetPyramidObjectPositionsNearSquare(i, entranceSquareId))
+ SetPyramidObjectPositionsUniformly(i);
break;
- case 4:
- if (sub_81AA648(i, var1))
- sub_81AA398(i);
+ case OBJ_POSITIONS_NEAR_EXIT:
+ if (SetPyramidObjectPositionsNearSquare(i, exitSquareId))
+ SetPyramidObjectPositionsUniformly(i);
break;
}
}
}
-void sub_81AA2F8(void)
+void LoadBattlePyramidFloorEventObjectScripts(void)
{
- s32 i;
+ int 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;
+ events[i].script = BattlePyramid_TrainerBattle;
else
- events[i].script = BattleFrontier_BattlePyramidEmptySquare_EventScript_252C6A;
+ events[i].script = BattlePyramid_FindItemBall;
}
}
-static void sub_81AA33C(u8 *var0, u8 *var1)
+static void GetPyramidEntranceAndExitSquareIds(u8 *entranceSquareId, u8 *exitSquareId)
{
- *var0 = gSaveBlock2Ptr->frontier.field_E22[3] % 16;
- *var1 = gSaveBlock2Ptr->frontier.field_E22[0] % 16;
+ *entranceSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[3] % 16;
+ *exitSquareId = gSaveBlock2Ptr->frontier.pyramidRandoms[0] % 16;
- if (*var0 == *var1)
+ if (*entranceSquareId == *exitSquareId)
{
- *var0 = (gSaveBlock2Ptr->frontier.field_E22[3] + 1 ) % 16;
- *var1 = (gSaveBlock2Ptr->frontier.field_E22[0] + 15) % 16;
+ *entranceSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[3] + 1 ) % 16;
+ *exitSquareId = (gSaveBlock2Ptr->frontier.pyramidRandoms[0] + 15) % 16;
}
}
-static void sub_81AA398(u8 arg0)
+static void SetPyramidObjectPositionsUniformly(u8 objType)
{
- s32 i;
- s32 count;
- s32 var_28;
- s32 r4;
+ int i;
+ int numObjects;
+ int objectStartIndex;
+ int squareId;
u32 bits = 0;
- u8 id = sub_81AA9E4();
- u8 *allocated = AllocZeroed(0x10);
+ u8 id = GetPyramidFloorTemplateId();
+ u8 *floorLayoutOffsets = AllocZeroed(16);
- sub_81AA96C(allocated);
- r4 = gSaveBlock2Ptr->frontier.field_E22[2] % 16;
- if (arg0 == 0)
+ GetPyramidFloorLayoutOffsets(floorLayoutOffsets);
+ squareId = gSaveBlock2Ptr->frontier.pyramidRandoms[2] % 16;
+ if (objType == OBJ_TRAINERS)
{
- count = gUnknown_08613650[id].unk1;
- var_28 = 0;
+ numObjects = sPyramidFloorTemplates[id].numTrainers;
+ objectStartIndex = 0;
}
- else
+ else // OBJ_ITEMS
{
- count = gUnknown_08613650[id].unk0;
- var_28 = gUnknown_08613650[id].unk1;
+ numObjects = sPyramidFloorTemplates[id].numItems;
+ objectStartIndex = sPyramidFloorTemplates[id].numTrainers;
}
- for (i = 0; i < count; i++)
+ for (i = 0; i < numObjects; i++)
{
do
{
@@ -1633,18 +1697,18 @@ static void sub_81AA398(u8 arg0)
{
if (bits & 1)
{
- if (!(gBitTable[r4] & gSaveBlock2Ptr->frontier.field_E22[3]))
+ if (!(gBitTable[squareId] & gSaveBlock2Ptr->frontier.pyramidRandoms[3]))
bits |= 2;
}
else
{
- if (gBitTable[r4] & gSaveBlock2Ptr->frontier.field_E22[3])
+ if (gBitTable[squareId] & gSaveBlock2Ptr->frontier.pyramidRandoms[3])
bits |= 2;
}
- if (++r4 >= 16)
- r4 = 0;
+ if (++squareId >= 16)
+ squareId = 0;
- if (r4 == gSaveBlock2Ptr->frontier.field_E22[2] % 16)
+ if (squareId == gSaveBlock2Ptr->frontier.pyramidRandoms[2] % 16)
{
if (bits & 1)
bits |= 6;
@@ -1653,63 +1717,63 @@ static void sub_81AA398(u8 arg0)
}
} while (!(bits & 2));
- } while (!(bits & 4) && sub_81AA760(arg0, allocated, r4, var_28 + i));
+ } while (!(bits & 4) && TrySetPyramidEventObjectPositionInSquare(objType, floorLayoutOffsets, squareId, objectStartIndex + i));
bits &= 1;
}
- free(allocated);
+ free(floorLayoutOffsets);
}
-static bool8 sub_81AA4D8(u8 arg0, u8 arg1)
+static bool8 SetPyramidObjectPositionsInAndNearSquare(u8 objType, u8 squareId)
{
- 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);
+ int i;
+ int objectStartIndex;
+ int borderedIndex = 0;
+ int r7 = 0;
+ int numPlacedObjects = 0;
+ int numObjects;
+ u8 id = GetPyramidFloorTemplateId();
+ u8 *floorLayoutOffsets = AllocZeroed(16);
- sub_81AA96C(allocated);
- if (arg0 == 0)
+ GetPyramidFloorLayoutOffsets(floorLayoutOffsets);
+ if (objType == OBJ_TRAINERS)
{
- count = gUnknown_08613650[id].unk1;
- var_28 = 0;
+ numObjects = sPyramidFloorTemplates[id].numTrainers;
+ objectStartIndex = 0;
}
- else
+ else // OBJ_ITEMS
{
- count = gUnknown_08613650[id].unk0;
- var_28 = gUnknown_08613650[id].unk1;
+ numObjects = sPyramidFloorTemplates[id].numItems;
+ objectStartIndex = sPyramidFloorTemplates[id].numTrainers;
}
- for (i = 0; i < count; i++)
+ for (i = 0; i < numObjects; i++)
{
if (r7 == 0)
{
- if (sub_81AA760(arg0, allocated, arg1, var_28 + i))
+ if (TrySetPyramidEventObjectPositionInSquare(objType, floorLayoutOffsets, squareId, objectStartIndex + i))
r7 = 1;
else
- var_34++;
+ numPlacedObjects++;
}
if (r7 & 1)
{
- if (sub_81AA760(arg0, allocated, gUnknown_08613F46[arg1][r6], var_28 + i))
+ if (TrySetPyramidEventObjectPositionInSquare(objType, floorLayoutOffsets, sBorderedSquareIds[squareId][borderedIndex], objectStartIndex + i))
{
do
{
- r6++;
- if (gUnknown_08613F46[arg1][r6] == 0xFF || r6 >= 4)
- r6 = 0;
+ borderedIndex++;
+ if (sBorderedSquareIds[squareId][borderedIndex] == 0xFF || borderedIndex >= 4)
+ borderedIndex = 0;
r7 += 2;
- } while (r7 >> 1 != 4 && sub_81AA760(arg0, allocated, gUnknown_08613F46[arg1][r6], var_28 + i));
- var_34++;
+ } while (r7 >> 1 != 4 && TrySetPyramidEventObjectPositionInSquare(objType, floorLayoutOffsets, sBorderedSquareIds[squareId][borderedIndex], objectStartIndex + i));
+ numPlacedObjects++;
}
else
{
- r6++;
- if (gUnknown_08613F46[arg1][r6] == 0xFF || r6 >= 4)
- r6 = 0;
- var_34++;
+ borderedIndex++;
+ if (sBorderedSquareIds[squareId][borderedIndex] == 0xFF || borderedIndex >= 4)
+ borderedIndex = 0;
+ numPlacedObjects++;
}
}
@@ -1718,86 +1782,85 @@ static bool8 sub_81AA4D8(u8 arg0, u8 arg1)
r7 &= 1;
}
- // free(allocated); BUG: allocated memory not freed
+ // free(floorLayoutOffsets); BUG: floorLayoutOffsets memory not freed
- return (count / 2 > var_34);
+ return (numObjects / 2) > numPlacedObjects;
}
-static bool8 sub_81AA648(u8 arg0, u8 arg1)
+static bool8 SetPyramidObjectPositionsNearSquare(u8 objType, u8 squareId)
{
- s32 i;
- s32 var_28;
- s32 r4 = 0;
- s32 r7 = 0;
- s32 r8 = 0;
- s32 count;
- u8 id = sub_81AA9E4();
- u8 *allocated = AllocZeroed(0x10);
+ int i;
+ int objectStartIndex;
+ int borderOffset = 0;
+ int numPlacedObjects = 0;
+ int r8 = 0;
+ int numObjects;
+ u8 id = GetPyramidFloorTemplateId();
+ u8 *floorLayoutOffsets = AllocZeroed(16);
- sub_81AA96C(allocated);
- if (arg0 == 0)
+ GetPyramidFloorLayoutOffsets(floorLayoutOffsets);
+ if (objType == OBJ_TRAINERS)
{
- count = gUnknown_08613650[id].unk1;
- var_28 = 0;
+ numObjects = sPyramidFloorTemplates[id].numTrainers;
+ objectStartIndex = 0;
}
- else
+ else // OBJ_ITEMS
{
- count = gUnknown_08613650[id].unk0;
- var_28 = gUnknown_08613650[id].unk1;
+ numObjects = sPyramidFloorTemplates[id].numItems;
+ objectStartIndex = sPyramidFloorTemplates[id].numTrainers;
}
- for (i = 0; i < count; i++)
+ for (i = 0; i < numObjects; i++)
{
- if (sub_81AA760(arg0, allocated, gUnknown_08613F46[arg1][r4], var_28 + i))
+ if (TrySetPyramidEventObjectPositionInSquare(objType, floorLayoutOffsets, sBorderedSquareIds[squareId][borderOffset], objectStartIndex + i))
{
do
{
- r4++;
- if (gUnknown_08613F46[arg1][r4] == 0xFF || r4 >= 4)
- r4 = 0;
+ borderOffset++;
+ if (sBorderedSquareIds[squareId][borderOffset] == 0xFF || borderOffset >= 4)
+ borderOffset = 0;
r8++;
- } while (r8 != 4 && sub_81AA760(arg0, allocated, gUnknown_08613F46[arg1][r4], var_28 + i));
- r7++;
+ } while (r8 != 4 && TrySetPyramidEventObjectPositionInSquare(objType, floorLayoutOffsets, sBorderedSquareIds[squareId][borderOffset], objectStartIndex + i));
+ numPlacedObjects++;
}
else
{
- r4++;
- if (gUnknown_08613F46[arg1][r4] == 0xFF || r4 >= 4)
- r4 = 0;
- r7++;
+ borderOffset++;
+ if (sBorderedSquareIds[squareId][borderOffset] == 0xFF || borderOffset >= 4)
+ borderOffset = 0;
+ numPlacedObjects++;
}
if (r8 == 4)
break;
}
- // free(allocated); BUG: allocated memory not freed
+ // free(floorLayoutOffsets); BUG: floorLayoutOffsets memory not freed
- return (count / 2 > r7);
+ return (numObjects / 2) > numPlacedObjects;
}
-static bool8 sub_81AA760(u8 arg0, u8 *mapNums, u8 whichMap, u8 id)
+static bool8 TrySetPyramidEventObjectPositionInSquare(u8 objType, u8 *floorLayoutOffsets, u8 squareId, u8 eventObjectId)
{
- s32 i, j;
+ int x, y;
- if (gSaveBlock2Ptr->frontier.field_E22[0] & 1)
+ if (gSaveBlock2Ptr->frontier.pyramidRandoms[0] & 1)
{
- s32 minus1 = -1;
- for (i = 7; i > minus1; i--)
+ for (y = 7; y > -1; y--)
{
- for (j = 7; j >= 0; j--)
+ for (x = 7; x > -1; x--)
{
- if (!sub_81AA810(arg0, j, i, mapNums, whichMap, id))
+ if (!TrySetPyramidEventObjectPositionAtCoords(objType, x, y, floorLayoutOffsets, squareId, eventObjectId))
return FALSE;
}
}
}
else
{
- for (i = 0; i < 8; i++)
+ for (y = 0; y < 8; y++)
{
- for (j = 0; j < 8; j++)
+ for (x = 0; x < 8; x++)
{
- if (!sub_81AA810(arg0, j, i, mapNums, whichMap, id))
+ if (!TrySetPyramidEventObjectPositionAtCoords(objType, x, y, floorLayoutOffsets, squareId, eventObjectId))
return FALSE;
}
}
@@ -1806,81 +1869,83 @@ static bool8 sub_81AA760(u8 arg0, u8 *mapNums, u8 whichMap, u8 id)
return TRUE;
}
-static bool8 sub_81AA810(u8 arg0, u8 x, u8 y, u8 *mapNums, u8 whichMap, u8 id)
+static bool8 TrySetPyramidEventObjectPositionAtCoords(u8 objType, u8 x, u8 y, u8 *floorLayoutOffsets, u8 squareId, u8 eventObjectId)
{
- s32 i, j;
+ int i, j;
const struct MapHeader *mapHeader;
- struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
+ struct EventObjectTemplate *floorEvents = gSaveBlock1Ptr->eventObjectTemplates;
- mapHeader = Overworld_GetMapHeaderByGroupAndId(MAP_GROUP(BATTLE_PYRAMID_SQUARE01), mapNums[whichMap] + MAP_NUM(BATTLE_PYRAMID_SQUARE01));
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(MAP_GROUP(BATTLE_PYRAMID_SQUARE01), floorLayoutOffsets[squareId] + 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 (objType != OBJ_TRAINERS || mapHeader->events->eventObjects[i].graphicsId == EVENT_OBJ_GFX_ITEM_BALL)
{
- if (arg0 != 1 || mapHeader->events->eventObjects[i].graphicsId != EVENT_OBJ_GFX_ITEM_BALL)
+ if (objType != OBJ_ITEMS || mapHeader->events->eventObjects[i].graphicsId != EVENT_OBJ_GFX_ITEM_BALL)
continue;
}
- for (j = 0; j < id; j++)
+ // Ensure an object wasn't previously placed in the exact same position.
+ for (j = 0; j < eventObjectId; j++)
{
- if (events[j].x == x + ((whichMap % 4) * 8) && events[j].y == y + ((whichMap / 4) * 8))
+ if (floorEvents[j].x == x + ((squareId % 4) * 8) && floorEvents[j].y == y + ((squareId / 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)
+ if (j == eventObjectId)
{
- i = sub_81A9F90(id);
- events[id].graphicsId = GetBattleFacilityTrainerGfxId(i);
- gSaveBlock2Ptr->frontier.field_CB4[id] = i;
+ floorEvents[eventObjectId] = mapHeader->events->eventObjects[i];
+ floorEvents[eventObjectId].x += (squareId % 4) * 8;
+ floorEvents[eventObjectId].y += (squareId / 4) * 8;
+ floorEvents[eventObjectId].localId = eventObjectId + 1;
+ if (floorEvents[eventObjectId].graphicsId != EVENT_OBJ_GFX_ITEM_BALL)
+ {
+ i = GetUniqueTrainerId(eventObjectId);
+ floorEvents[eventObjectId].graphicsId = GetBattleFacilityTrainerGfxId(i);
+ gSaveBlock2Ptr->frontier.trainerIds[eventObjectId] = i;
+ }
+ return FALSE;
}
- return FALSE;
}
return TRUE;
}
-static void sub_81AA96C(u8 *mapNums)
+static void GetPyramidFloorLayoutOffsets(u8 *layoutOffsets)
{
- s32 i;
- s32 bits = (gSaveBlock2Ptr->frontier.field_E22[0]) | (gSaveBlock2Ptr->frontier.field_E22[1] << 16);
- u8 id = sub_81AA9E4();
+ int i;
+ int rand = (gSaveBlock2Ptr->frontier.pyramidRandoms[0]) | (gSaveBlock2Ptr->frontier.pyramidRandoms[1] << 16);
+ u8 id = GetPyramidFloorTemplateId();
for (i = 0; i < 16; i++)
{
- mapNums[i] = gUnknown_08613650[id].unk5[bits & 7];
- bits >>= 3;
+ layoutOffsets[i] = sPyramidFloorTemplates[id].layoutOffsets[rand & 0x7];
+ rand >>= 3;
if (i == 7)
{
- bits = (gSaveBlock2Ptr->frontier.field_E22[2]) | (gSaveBlock2Ptr->frontier.field_E22[3] << 16);
- bits >>= 8;
+ rand = (gSaveBlock2Ptr->frontier.pyramidRandoms[2]) | (gSaveBlock2Ptr->frontier.pyramidRandoms[3] << 16);
+ rand >>= 8;
}
}
}
-static u8 sub_81AA9E4(void)
+static u8 GetPyramidFloorTemplateId(void)
{
- s32 i;
- s32 var = gSaveBlock2Ptr->frontier.field_E22[3] % 100;
- s32 battleNum = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
+ int i;
+ int rand = gSaveBlock2Ptr->frontier.pyramidRandoms[3] % 100;
+ int floor = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
- for (i = gUnknown_08613794[battleNum]; i < ARRAY_COUNT(gUnknown_08613750); i++)
+ for (i = sFloorTemplateOffsets[floor]; i < ARRAY_COUNT(sPyramidFloorTemplateOptions); i++)
{
- if (var < gUnknown_08613750[i][0])
- return gUnknown_08613750[i][1];
+ if (rand < sPyramidFloorTemplateOptions[i][0])
+ return sPyramidFloorTemplateOptions[i][1];
}
return 0;
}
-u8 sub_81AAA40(void)
+u8 GetNumBattlePyramidEventObjects(void)
{
u8 i;
struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
@@ -1894,14 +1959,14 @@ u8 sub_81AAA40(void)
return i;
}
-static void InitBagItems(u8 lvlMode)
+static void InitPyramidBagItems(u8 lvlMode)
{
- s32 i;
+ int i;
for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++)
{
- gSaveBlock2Ptr->frontier.pyramidBag.itemId[lvlMode][i] = 0;
- gSaveBlock2Ptr->frontier.pyramidBag.quantity[lvlMode][i] = 0;
+ gSaveBlock2Ptr->frontier.pyramidBag.itemId[lvlMode][i] = ITEM_NONE;
+ gSaveBlock2Ptr->frontier.pyramidBag.quantity[lvlMode][i] = ITEM_NONE;
}
AddPyramidBagItem(ITEM_HYPER_POTION, 1);
@@ -1910,10 +1975,10 @@ static void InitBagItems(u8 lvlMode)
u16 GetBattlePyramidPickupItemId(void)
{
- s32 rand;
+ int rand;
u32 i;
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- s32 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7);
+ int round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7);
if (round >= TOTAL_ROUNDS)
round = TOTAL_ROUNDS - 1;
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index 50baf48fd..ee35ed45b 100644
--- a/src/battle_pyramid_bag.c
+++ b/src/battle_pyramid_bag.c
@@ -282,10 +282,10 @@ static const struct OamData gOamData_861F378 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -338,7 +338,7 @@ static const struct SpriteTemplate gUnknown_0861F3D4 =
};
// code
-void sub_81C4EEC(void)
+void InitBattlePyramidBagCursorPosition(void)
{
gPyramidBagCursorData.cursorPosition = 0;
gPyramidBagCursorData.scrollPosition = 0;
@@ -576,7 +576,7 @@ static void SetBagItemsListTemplate(void)
}
StringCopy(gPyramidBagResources->itemStrings[i], gText_CloseBag);
gPyramidBagResources->bagListItems[i].name = gPyramidBagResources->itemStrings[i];
- gPyramidBagResources->bagListItems[i].id = LIST_B_PRESSED;
+ gPyramidBagResources->bagListItems[i].id = LIST_CANCEL;
gMultiuseListMenuTemplate = gUnknown_0861F2C0;
gMultiuseListMenuTemplate.totalItems = gPyramidBagResources->listMenuCount;
gMultiuseListMenuTemplate.items = gPyramidBagResources->bagListItems;
@@ -607,7 +607,7 @@ static void PyramidBagMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMen
if (gPyramidBagResources->unk814 == 0xFF)
{
sub_81C6FF8(gPyramidBagResources->unk815 ^ 1);
- if (itemIndex != LIST_B_PRESSED)
+ if (itemIndex != LIST_CANCEL)
ShowItemImage(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][itemIndex], gPyramidBagResources->unk815);
else
ShowItemImage(0xFFFF, gPyramidBagResources->unk815);
@@ -619,7 +619,7 @@ static void PyramidBagMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMen
static void PrintItemQuantity(u8 windowId, s32 itemIndex, u8 y)
{
s32 xAlign;
- if (itemIndex == LIST_B_PRESSED)
+ if (itemIndex == LIST_CANCEL)
return;
if (gPyramidBagResources->unk814 != 0xFF)
@@ -641,7 +641,7 @@ static void PrintItemQuantity(u8 windowId, s32 itemIndex, u8 y)
static void PrintItemDescription(s32 listMenuId)
{
const u8 *desc;
- if (listMenuId != LIST_B_PRESSED)
+ if (listMenuId != LIST_CANCEL)
{
desc = ItemId_GetDescription(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][listMenuId]);
}
@@ -651,7 +651,7 @@ static void PrintItemDescription(s32 listMenuId)
StringExpandPlaceholders(gStringVar4, gText_ReturnToVar1);
desc = gStringVar4;
}
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
PrintOnWindow_Font1(1, desc, 3, 0, 0, 1, 0, 0);
}
@@ -804,7 +804,7 @@ static void sub_81C5A98(u8 listMenuTaskId, u8 arg1)
static void sub_81C5AB8(u8 y, u8 arg1)
{
if (arg1 == 0xFF)
- FillWindowPixelRect(0, 0, 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
+ FillWindowPixelRect(0, PIXEL_FILL(0), 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
else
PrintOnWindow_Font1(0, gText_SelectorArrow2, 0, y, 0, 0, 0, arg1);
}
@@ -853,13 +853,13 @@ static void Task_HandlePyramidBagInput(u8 taskId)
}
else
{
- s32 listId = ListMenuHandleInputGetItemId(data[0]);
+ s32 listId = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
switch (listId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
gSpecialVar_ItemId = 0;
sub_81C5B14(taskId);
@@ -911,7 +911,7 @@ static void sub_81C5D20(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
if (gPyramidBagResources->menuActionsCount == 1)
sub_81C5EAC(sub_81C6D24(0));
@@ -945,9 +945,9 @@ static void HandleFewMenuActionsInput(u8 taskId)
s32 id = Menu_ProcessInputNoWrap();
switch (id)
{
- case -2:
+ case MENU_NOTHING_CHOSEN:
break;
- case -1:
+ case MENU_B_PRESSED:
PlaySE(SE_SELECT);
sMenuActions[ACTION_CANCEL].func.void_u8(taskId);
break;
@@ -1048,7 +1048,7 @@ static void BagAction_UseOnField(u8 taskId)
else if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL)
{
sub_81C61A8();
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
schedule_bg_copy_tilemap_to_vram(0);
ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
}
@@ -1086,7 +1086,7 @@ static void BagAction_Toss(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_TossHowManyVar1s);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
sub_81C6404();
gTasks[taskId].func = sub_81C64B4;
@@ -1100,7 +1100,7 @@ static void sub_81C6350(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 2);
StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
sub_81C6DAC(taskId, &sYesNoTossFuncions);
}
@@ -1146,7 +1146,7 @@ static void sub_81C64B4(u8 taskId)
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- sub_8198070(3, 0);
+ ClearStdWindowAndFrameToTransparent(3, 0);
ClearWindowTilemap(3);
schedule_bg_copy_tilemap_to_vram(1);
sub_81C6350(taskId);
@@ -1154,7 +1154,7 @@ static void sub_81C64B4(u8 taskId)
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- sub_8198070(3, 0);
+ ClearStdWindowAndFrameToTransparent(3, 0);
ClearWindowTilemap(3);
schedule_bg_copy_tilemap_to_vram(1);
DontTossItem(taskId);
@@ -1168,7 +1168,7 @@ static void TossItem(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 2);
StringExpandPlaceholders(gStringVar4, gText_ThrewAwayVar2Var1s);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
gTasks[taskId].func = sub_81C65CC;
}
@@ -1265,7 +1265,7 @@ static void Task_BeginItemSwap(u8 taskId)
ListMenuSetUnkIndicatorsStructField(data[0], 0x10, 1);
CopyItemName(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][data[1]], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_MoveVar1Where);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
sub_81C5A98(data[0], 1);
sub_81C704C(data[1]);
@@ -1285,7 +1285,7 @@ static void Task_ItemSwapHandleInput(u8 taskId)
}
else
{
- s32 id = ListMenuHandleInputGetItemId(data[0]);
+ s32 id = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
sub_81C7028(FALSE);
sub_81C704C(gPyramidBagCursorData.cursorPosition);
@@ -1293,7 +1293,7 @@ static void Task_ItemSwapHandleInput(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
if (gMain.newKeys & A_BUTTON)
PerformItemSwap(taskId);
@@ -1395,7 +1395,7 @@ static void sub_81C6BD8(void)
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
for (i = 0; i < 5; i++)
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
PutWindowTilemap(0);
PutWindowTilemap(1);
@@ -1415,7 +1415,7 @@ static void PrintOnWindow_Font7(u8 windowId, const u8 *src, u8 x, u8 y, u8 lette
static void sub_81C6CEC(u8 windowId)
{
- SetWindowBorderStyle(windowId, 0, 1, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(windowId, 0, 1, 0xE);
schedule_bg_copy_tilemap_to_vram(1);
}
@@ -1430,7 +1430,7 @@ static u8 sub_81C6D24(u8 windowArrayId)
if (*windowId == 0xFF)
{
*windowId = AddWindow(&gUnknown_0861F350[windowArrayId]);
- SetWindowBorderStyle(*windowId, FALSE, 1, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(*windowId, FALSE, 1, 0xE);
schedule_bg_copy_tilemap_to_vram(1);
}
return *windowId;
@@ -1441,7 +1441,7 @@ static void sub_81C6D6C(u8 windowArrayId)
u8 *windowId = &gPyramidBagResources->windowIds[windowArrayId];
if (*windowId != 0xFF)
{
- sub_8198070(*windowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(*windowId, FALSE);
ClearWindowTilemap(*windowId);
RemoveWindow(*windowId);
schedule_bg_copy_tilemap_to_vram(1);
@@ -1456,14 +1456,15 @@ static void sub_81C6DAC(u8 taskId, const struct YesNoFuncTable *yesNoTable)
void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId))
{
- FillWindowPixelBuffer(2, 0x11);
+ FillWindowPixelBuffer(2, PIXEL_FILL(1));
DisplayMessageAndContinueTask(taskId, 2, 0xA, 0xD, 1, GetPlayerTextSpeedDelay(), str, callback);
schedule_bg_copy_tilemap_to_vram(1);
}
static void sub_81C6E1C(void)
{
- sub_8197DF8(2, FALSE);
+ ClearDialogWindowAndFrameToTransparent(2, FALSE);
+ // This ClearWindowTilemap call is redundant, since ClearDialogWindowAndFrameToTransparent already calls it.
ClearWindowTilemap(2);
schedule_bg_copy_tilemap_to_vram(1);
}
diff --git a/src/battle_records.c b/src/battle_records.c
index f9c40d8de..fdd915d07 100644
--- a/src/battle_records.c
+++ b/src/battle_records.c
@@ -21,8 +21,7 @@
#include "alloc.h"
#include "gpu_regs.h"
#include "constants/game_stat.h"
-
-extern void PrintOnTrainerHillRecordsWindow(void); // pokenav.s
+#include "trainer_hill.h"
// this file's functions
static void Task_CloseTrainerHillRecordsOnButton(u8 taskId);
@@ -320,8 +319,8 @@ void ShowLinkBattleRecords(void)
s32 i, x;
gRecordsWindowId = AddWindow(&sLinkBattleRecordsWindow);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
StringExpandPlaceholders(gStringVar4, gText_PlayersBattleResults);
x = GetStringCenterAlignXOffset(1, gStringVar4, 208);
@@ -342,7 +341,7 @@ void ShowLinkBattleRecords(void)
void RemoveRecordsWindow(void)
{
- sub_819746C(gRecordsWindowId, FALSE);
+ ClearStdWindowAndFrame(gRecordsWindowId, FALSE);
RemoveWindow(gRecordsWindowId);
}
@@ -383,7 +382,7 @@ static void Task_ExitTrainerHillRecords(u8 taskId)
static void RemoveTrainerHillRecordsWindow(u8 windowId)
{
- FillWindowPixelBuffer(windowId, 0);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
ClearWindowTilemap(windowId);
CopyWindowToVram(windowId, 2);
RemoveWindow(windowId);
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 6bbee842e..0eb6dfec0 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -48,17 +48,13 @@
#include "battle_pyramid.h"
#include "field_specials.h"
#include "pokemon_summary_screen.h"
+#include "pokenav.h"
+#include "menu_specialized.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const u8* const gBattleScriptsForMoveEffects[];
-// functions
-extern void sub_81D388C(struct Pokemon* mon, void* statStoreLocation); // pokenav.s
-extern void sub_81D3640(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); // pokenav.s
-extern void sub_81D3784(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4); // pokenav.s
-extern u8 sub_813B21C(void);
-
#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
// this file's functions
@@ -297,7 +293,7 @@ static void atkD7_setyawn(void);
static void atkD8_setdamagetohealthdifference(void);
static void atkD9_scaledamagebyhealthratio(void);
static void atkDA_tryswapabilities(void);
-static void atkDB_tryimprision(void);
+static void atkDB_tryimprison(void);
static void atkDC_trysetgrudge(void);
static void atkDD_weightdamagecalculation(void);
static void atkDE_asistattackselect(void);
@@ -549,7 +545,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
atkD8_setdamagetohealthdifference,
atkD9_scaledamagebyhealthratio,
atkDA_tryswapabilities,
- atkDB_tryimprision,
+ atkDB_tryimprison,
atkDC_trysetgrudge,
atkDD_weightdamagecalculation,
atkDE_asistattackselect,
@@ -735,10 +731,10 @@ static const struct OamData sOamData_MonIconOnLvlUpBox =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -4233,13 +4229,13 @@ static void atk3D_end(void)
gMoveResultFlags = 0;
gActiveBattler = 0;
- gCurrentActionFuncId = 0xB;
+ gCurrentActionFuncId = B_ACTION_TRY_FINISH;
}
static void atk3E_end2(void)
{
gActiveBattler = 0;
- gCurrentActionFuncId = 0xB;
+ gCurrentActionFuncId = B_ACTION_TRY_FINISH;
}
static void atk3F_end3(void) // pops the main function stack
@@ -6321,16 +6317,16 @@ static void sub_804F100(void)
{
struct StatsArray currentStats;
- sub_81D388C(&gPlayerParty[gBattleStruct->expGetterMonId], &currentStats);
- sub_81D3640(0xD, gBattleResources->statsBeforeLvlUp, &currentStats, 0xE, 0xD, 0xF);
+ GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], &currentStats);
+ DrawLevelUpWindowPg1(0xD, gBattleResources->statsBeforeLvlUp, &currentStats, 0xE, 0xD, 0xF);
}
static void sub_804F144(void)
{
struct StatsArray currentStats;
- sub_81D388C(&gPlayerParty[gBattleStruct->expGetterMonId], &currentStats);
- sub_81D3784(0xD, &currentStats, 0xE, 0xD, 0xF);
+ GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], &currentStats);
+ DrawLevelUpWindowPg2(0xD, &currentStats, 0xE, 0xD, 0xF);
}
static void sub_804F17C(void)
@@ -6721,10 +6717,10 @@ static void atk76_various(void)
MarkBattlerForControllerExec(gActiveBattler);
break;
case 14:
- sub_81A5BF8();
+ DrawArenaRefereeTextBox();
break;
case 15:
- sub_81A5D44();
+ RemoveArenaRefereeTextBox();
break;
case VARIOUS_ARENA_JUDGMENT_STRING:
BattleStringExpandPlaceholdersToDisplayedString(gRefereeStringsTable[gBattlescriptCurrInstr[1]]);
@@ -9611,7 +9607,7 @@ static void atkDA_tryswapabilities(void) // skill swap
}
}
-static void atkDB_tryimprision(void)
+static void atkDB_tryimprison(void)
{
if ((gStatuses3[gBattlerAttacker] & STATUS3_IMPRISONED_OTHERS))
{
@@ -9622,7 +9618,7 @@ static void atkDB_tryimprision(void)
u8 battlerId, sideAttacker;
sideAttacker = GetBattlerSide(gBattlerAttacker);
- PressurePPLoseOnUsingImprision(gBattlerAttacker);
+ PressurePPLoseOnUsingImprison(gBattlerAttacker);
for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
{
if (sideAttacker != GetBattlerSide(battlerId))
diff --git a/src/battle_setup.c b/src/battle_setup.c
index f5e9e3e9e..347486a0b 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -44,6 +44,7 @@
#include "mirage_tower.h"
#include "constants/map_types.h"
#include "constants/battle_frontier.h"
+#include "field_screen_effect.h"
enum
{
@@ -62,10 +63,6 @@ struct TrainerBattleParameter
u8 ptrType;
};
-extern void ClearPoisonStepCounter(void);
-extern void sub_808BCF4(void);
-extern void sub_80AF6F0(void);
-
// this file's functions
static void DoBattlePikeWildBattle(void);
static void DoSafariBattle(void);
@@ -641,7 +638,7 @@ u8 BattleSetup_GetTerrainId(void)
return BATTLE_TERRAIN_BUILDING;
case MAP_TYPE_UNDERWATER:
return BATTLE_TERRAIN_UNDERWATER;
- case MAP_TYPE_6:
+ case MAP_TYPE_OCEAN_ROUTE:
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
return BATTLE_TERRAIN_WATER;
return BATTLE_TERRAIN_PLAIN;
@@ -874,8 +871,8 @@ u8 sub_80B100C(s32 arg0)
return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)];
}
- var = gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum * 2 + 0]
- + gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum * 2 + 1];
+ var = gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum * 2 + 0]
+ + gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum * 2 + 1];
return sUnknown_0854FE98[var % ARRAY_COUNT(sUnknown_0854FE98)];
}
@@ -1266,7 +1263,7 @@ void BattleSetup_StartTrainerBattle(void)
ZeroMonData(&gEnemyParty[2]);
}
- sub_81A9B04();
+ MarkApproachingPyramidTrainersAsBattled();
}
else if (sub_81D5C18())
{
diff --git a/src/battle_tent.c b/src/battle_tent.c
index de4d9d374..85194417f 100644
--- a/src/battle_tent.c
+++ b/src/battle_tent.c
@@ -12,6 +12,7 @@
#include "frontier_util.h"
#include "string_util.h"
#include "constants/items.h"
+#include "constants/layouts.h"
#include "constants/region_map_sections.h"
#include "constants/species.h"
@@ -268,10 +269,10 @@ static void sub_81B9E88(void)
DoBattleFactorySwapScreen();
}
-bool8 sub_81B9E94(void)
+bool8 InSlateportBattleTent(void)
{
- return (gMapHeader.regionMapSectionId == MAPSEC_SLATEPORT_CITY
- && ((gMapHeader.mapLayoutId == 385) | (gMapHeader.mapLayoutId == 386)));
+ return gMapHeader.regionMapSectionId == MAPSEC_SLATEPORT_CITY
+ && (gMapHeader.mapLayoutId == LAYOUT_BATTLE_TENT_CORRIDOR || gMapHeader.mapLayoutId == LAYOUT_BATTLE_TENT_BATTLE_ROOM);
}
static void sub_81B9EC0(void)
@@ -328,7 +329,7 @@ static void sub_81B9EC0(void)
if (j != i + firstMonId)
continue;
- gSaveBlock2Ptr->frontier.field_E70[i].monId = monSetId;
+ gSaveBlock2Ptr->frontier.rentalMons[i].monId = monSetId;
species[i] = gFacilityTrainerMons[monSetId].species;
heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId];
monIds[i] = monSetId;
@@ -355,7 +356,7 @@ static void sub_81BA040(void)
trainerId = Random() % 30;
for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId)
break;
}
} while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum);
@@ -369,7 +370,7 @@ static void sub_81BA040(void)
}
if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 2)
- gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A;
+ gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A;
monSets = gFacilityTrainers[gTrainerBattleOpponent_A].monSets;
i = 0;
@@ -378,7 +379,7 @@ static void sub_81BA040(void)
sRandMonSetId = monSets[Random() % setsCount];
for (j = 0; j < 6; j++)
{
- if (gFacilityTrainerMons[sRandMonSetId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.field_E70[j].monId].species)
+ if (gFacilityTrainerMons[sRandMonSetId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species)
break;
}
if (j != 6)
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 088ef7972..46aab4bac 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -51,7 +51,7 @@ 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 SpriteCB_Null6(void);
static void sub_81642A0(void);
static void sub_8164828(void);
static void sub_8164B74(void);
@@ -1061,7 +1061,7 @@ static void (* const gUnknown_085DF96C[])(void) =
SaveBattleTowerProgress,
sub_8163914,
nullsub_61,
- nullsub_116,
+ SpriteCB_Null6,
sub_81642A0,
sub_8164828,
sub_8164B74,
@@ -1311,15 +1311,15 @@ static void ChooseNextBattleTowerTrainer(void)
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];
+ gTrainerBattleOpponent_A = gSaveBlock2Ptr->frontier.trainerIds[id * 2];
+ gTrainerBattleOpponent_B = gSaveBlock2Ptr->frontier.trainerIds[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;
+ gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A;
}
else
{
@@ -1331,7 +1331,7 @@ static void ChooseNextBattleTowerTrainer(void)
// Ensure trainer wasn't previously fought in this challenge.
for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[i] == id)
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == id)
break;
}
if (i == gSaveBlock2Ptr->frontier.curChallengeBattleNum)
@@ -1341,7 +1341,7 @@ static void ChooseNextBattleTowerTrainer(void)
gTrainerBattleOpponent_A = id;
SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < 7)
- gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A;
+ gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A;
}
}
}
@@ -2250,7 +2250,7 @@ void DoSpecialTrainerBattle(void)
break;
case FRONTIER_MODE_MULTIS:
FillFrontierTrainersParties(2);
- gPartnerTrainerId = gSaveBlock2Ptr->frontier.field_CB4[17];
+ gPartnerTrainerId = gSaveBlock2Ptr->frontier.trainerIds[17];
FillPartnerParty(gPartnerTrainerId);
gBattleTypeFlags |= BATTLE_TYPE_DOUBLE | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS;
break;
@@ -2401,9 +2401,9 @@ static void sub_8163EE4(void)
for (i = 0; i < 6; i++)
{
- playerRecord->greeting[i] = gSaveBlock1Ptr->unk2BBC[i];
- playerRecord->speechWon[i] = gSaveBlock1Ptr->unk2BC8[i];
- playerRecord->speechLost[i] = gSaveBlock1Ptr->unk2BD4[i];
+ playerRecord->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i];
+ playerRecord->speechWon[i] = gSaveBlock1Ptr->easyChatBattleWon[i];
+ playerRecord->speechLost[i] = gSaveBlock1Ptr->easyChatBattleLost[i];
}
for (i = 0; i < 4; i++)
@@ -2437,7 +2437,7 @@ static void nullsub_61(void)
}
-static void nullsub_116(void)
+static void SpriteCB_Null6(void)
{
}
@@ -2524,32 +2524,32 @@ static void sub_81642A0(void)
trainerId = sub_8162548(challengeNum, 0);
for (i = 0; i < j; i++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId)
break;
- if (gFacilityTrainers[gSaveBlock2Ptr->frontier.field_CB4[i]].facilityClass == gFacilityTrainers[trainerId].facilityClass)
+ if (gFacilityTrainers[gSaveBlock2Ptr->frontier.trainerIds[i]].facilityClass == gFacilityTrainers[trainerId].facilityClass)
break;
}
} while (i != j);
- gSaveBlock2Ptr->frontier.field_CB4[j] = trainerId;
+ gSaveBlock2Ptr->frontier.trainerIds[j] = trainerId;
j++;
} while (j < 6);
r10 = 8;
for (i = 0; i < 6; i++)
{
- trainerId = gSaveBlock2Ptr->frontier.field_CB4[i];
+ trainerId = gSaveBlock2Ptr->frontier.trainerIds[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)
+ if (j % 2 != 0 && gFacilityTrainerMons[gSaveBlock2Ptr->frontier.trainerIds[r10 - 1]].itemTableId == gFacilityTrainerMons[monSetId].itemTableId)
continue;
for (k = 8; k < r10; k++)
{
- if (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.field_CB4[k]].species == gFacilityTrainerMons[monSetId].species)
+ if (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.trainerIds[k]].species == gFacilityTrainerMons[monSetId].species)
break;
if (species1 == gFacilityTrainerMons[monSetId].species)
break;
@@ -2560,7 +2560,7 @@ static void sub_81642A0(void)
break;
}
- gSaveBlock2Ptr->frontier.field_CB4[r10] = monSetId;
+ gSaveBlock2Ptr->frontier.trainerIds[r10] = monSetId;
r10++;
}
}
@@ -2591,10 +2591,10 @@ static void sub_81642A0(void)
}
if (r10 != 0)
{
- gSaveBlock2Ptr->frontier.field_CB4[6] = spArray[Random() % r10];
- eventObjTemplates[7].graphicsId = GetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.field_CB4[6]);
+ gSaveBlock2Ptr->frontier.trainerIds[6] = spArray[Random() % r10];
+ eventObjTemplates[7].graphicsId = GetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.trainerIds[6]);
FlagClear(FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_1);
- sub_81640E0(gSaveBlock2Ptr->frontier.field_CB4[6]);
+ sub_81640E0(gSaveBlock2Ptr->frontier.trainerIds[6]);
}
r10 = 0;
@@ -2634,10 +2634,10 @@ static void sub_81642A0(void)
}
if (r10 != 0)
{
- gSaveBlock2Ptr->frontier.field_CB4[7] = spArray[Random() % r10];
- eventObjTemplates[8].graphicsId = GetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.field_CB4[7]);
+ gSaveBlock2Ptr->frontier.trainerIds[7] = spArray[Random() % r10];
+ eventObjTemplates[8].graphicsId = GetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.trainerIds[7]);
FlagClear(FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_2);
- sub_8164188(gSaveBlock2Ptr->frontier.field_CB4[7]);
+ sub_8164188(gSaveBlock2Ptr->frontier.trainerIds[7]);
}
}
@@ -2684,7 +2684,7 @@ static void sub_8164828(void)
u16 winStreak = GetCurrentFacilityWinStreak();
s32 challengeNum = winStreak / 7;
s32 k = gSpecialVar_LastTalked - 2;
- s32 trainerId = gSaveBlock2Ptr->frontier.field_CB4[k];
+ s32 trainerId = gSaveBlock2Ptr->frontier.trainerIds[k];
for (arrId = 0; arrId < ARRAY_COUNT(gUnknown_085DD500); arrId++)
{
@@ -2717,29 +2717,29 @@ static void sub_8164828(void)
}
break;
case 1:
- monSetId = gSaveBlock2Ptr->frontier.field_CB4[8 + k * 2];
+ monSetId = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2];
sub_81646BC(trainerId, monSetId);
break;
case 2:
- monSetId = gSaveBlock2Ptr->frontier.field_CB4[9 + k * 2];
+ monSetId = gSaveBlock2Ptr->frontier.trainerIds[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];
+ gSaveBlock2Ptr->frontier.trainerIds[18] = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2];
+ gSaveBlock2Ptr->frontier.trainerIds[19] = gSaveBlock2Ptr->frontier.trainerIds[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];
+ gSaveBlock2Ptr->frontier.trainerIds[18] = gUnknown_03006298[2];
+ gSaveBlock2Ptr->frontier.trainerIds[19] = gUnknown_03006298[3];
}
else
{
- gSaveBlock2Ptr->frontier.field_CB4[18] = gUnknown_03006298[0];
- gSaveBlock2Ptr->frontier.field_CB4[19] = gUnknown_03006298[1];
+ gSaveBlock2Ptr->frontier.trainerIds[18] = gUnknown_03006298[0];
+ gSaveBlock2Ptr->frontier.trainerIds[19] = gUnknown_03006298[1];
}
for (k = 0; k < 14; k++)
{
@@ -2751,15 +2751,15 @@ static void sub_8164828(void)
for (j = 0; j < k; j++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[j] == i)
+ if (gSaveBlock2Ptr->frontier.trainerIds[j] == i)
break;
}
if (j == k)
break;
}
- gSaveBlock2Ptr->frontier.field_CB4[k] = i;
+ gSaveBlock2Ptr->frontier.trainerIds[k] = i;
}
- gSaveBlock2Ptr->frontier.field_CB4[17] = trainerId;
+ gSaveBlock2Ptr->frontier.trainerIds[17] = trainerId;
break;
case 4:
break;
@@ -2825,12 +2825,12 @@ static void sub_8164B74(void)
trainerId = sub_8162548(challengeNum, i / 2);
for (j = 0; j < i; j++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[j] == trainerId)
+ if (gSaveBlock2Ptr->frontier.trainerIds[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;
+ gSaveBlock2Ptr->frontier.trainerIds[i] = trainerId;
}
gSpecialVar_Result = 2;
}
@@ -2838,7 +2838,7 @@ static void sub_8164B74(void)
case 2:
if (IsLinkTaskFinished())
{
- SendBlock(bitmask_all_link_players_but_self(), &gSaveBlock2Ptr->frontier.field_CB4, sizeof(gSaveBlock2Ptr->frontier.field_CB4));
+ SendBlock(bitmask_all_link_players_but_self(), &gSaveBlock2Ptr->frontier.trainerIds, sizeof(gSaveBlock2Ptr->frontier.trainerIds));
gSpecialVar_Result = 3;
}
break;
@@ -2846,9 +2846,9 @@ static void sub_8164B74(void)
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];
+ memcpy(&gSaveBlock2Ptr->frontier.trainerIds, gBlockRecvBuffer, sizeof(gSaveBlock2Ptr->frontier.trainerIds));
+ gTrainerBattleOpponent_A = gSaveBlock2Ptr->frontier.trainerIds[battleNum * 2];
+ gTrainerBattleOpponent_B = gSaveBlock2Ptr->frontier.trainerIds[battleNum * 2 + 1];
SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_B, 1);
if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType == 0)
@@ -2880,7 +2880,7 @@ static void sub_8164DCC(void)
static void sub_8164DE4(void)
{
- SetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.field_CB4[17], 0xF);
+ SetBattleFacilityTrainerGfxId(gSaveBlock2Ptr->frontier.trainerIds[17], 0xF);
}
static void sub_8164E04(void)
@@ -3059,7 +3059,7 @@ static void FillEReaderTrainerWithPlayerData(void)
j = 7;
for (i = 0; i < 6; i++)
{
- ereaderTrainer->greeting[i] = gSaveBlock1Ptr->unk2BBC[i];
+ ereaderTrainer->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i];
ereaderTrainer->farewellPlayerLost[i] = j;
ereaderTrainer->farewellPlayerWon[i] = j + 6;
j++;
@@ -3213,7 +3213,7 @@ static void FillPartnerParty(u16 trainerId)
otID = Random32();
for (i = 0; i < 2; i++)
{
- monSetId = gSaveBlock2Ptr->frontier.field_CB4[i + 18];
+ monSetId = gSaveBlock2Ptr->frontier.trainerIds[i + 18];
CreateMonWithEVSpreadNatureOTID(&gPlayerParty[3 + i],
gFacilityTrainerMons[monSetId].species,
level,
@@ -3243,7 +3243,7 @@ static void FillPartnerParty(u16 trainerId)
for (i = 0; i < 2; i++)
{
struct EmeraldBattleTowerRecord *record = &gSaveBlock2Ptr->frontier.towerRecords[trainerId];
- struct BattleTowerPokemon monData = record->party[gSaveBlock2Ptr->frontier.field_CB4[18 + i]];
+ struct BattleTowerPokemon monData = record->party[gSaveBlock2Ptr->frontier.trainerIds[18 + i]];
StringCopy(trainerName, record->name);
if (record->language == LANGUAGE_JAPANESE)
{
@@ -3269,7 +3269,7 @@ static void FillPartnerParty(u16 trainerId)
trainerId -= TRAINER_RECORD_MIXING_APPRENTICE;
for (i = 0; i < 2; i++)
{
- CreateApprenticeMon(&gPlayerParty[3 + i], &gSaveBlock2Ptr->apprentices[trainerId], gSaveBlock2Ptr->frontier.field_CB4[18 + i]);
+ CreateApprenticeMon(&gPlayerParty[3 + i], &gSaveBlock2Ptr->apprentices[trainerId], gSaveBlock2Ptr->frontier.trainerIds[18 + i]);
j = IsFrontierTrainerFemale(trainerId + TRAINER_RECORD_MIXING_APPRENTICE);
SetMonData(&gPlayerParty[3 + i], MON_DATA_OT_GENDER, &j);
}
@@ -3564,7 +3564,7 @@ static void sub_8165E18(void)
trainerId = sub_8165D40();
for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[i] == trainerId)
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId)
break;
}
} while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum);
@@ -3572,7 +3572,7 @@ static void sub_8165E18(void)
gTrainerBattleOpponent_A = trainerId;
SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
if (gSaveBlock2Ptr->frontier.curChallengeBattleNum + 1 < 3)
- gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A;
+ gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum] = gTrainerBattleOpponent_A;
}
static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount)
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 786d5e869..df6180d19 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -763,10 +763,10 @@ static const struct OamData gOamData_85C8E80 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
diff --git a/src/battle_util.c b/src/battle_util.c
index 2f583a9c7..aa88cf952 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -106,10 +106,10 @@ void PressurePPLose(u8 target, u8 attacker, u16 move)
}
}
-void PressurePPLoseOnUsingImprision(u8 attacker)
+void PressurePPLoseOnUsingImprison(u8 attacker)
{
int i, j;
- int imprisionPos = 4;
+ int imprisonPos = 4;
u8 atkSide = GetBattlerSide(attacker);
for (i = 0; i < gBattlersCount; i++)
@@ -123,19 +123,19 @@ void PressurePPLoseOnUsingImprision(u8 attacker)
}
if (j != MAX_MON_MOVES)
{
- imprisionPos = j;
+ imprisonPos = j;
if (gBattleMons[attacker].pp[j] != 0)
gBattleMons[attacker].pp[j]--;
}
}
}
- if (imprisionPos != 4
+ if (imprisonPos != 4
&& !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[attacker].mimickedMoves & gBitTable[imprisionPos]))
+ && !(gDisableStructs[attacker].mimickedMoves & gBitTable[imprisonPos]))
{
gActiveBattler = attacker;
- BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisionPos]);
+ BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisonPos]);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -224,7 +224,7 @@ bool8 WasUnableToUseMove(u8 battler)
{
if (gProtectStructs[battler].prlzImmobility
|| gProtectStructs[battler].targetNotAffected
- || gProtectStructs[battler].usedImprisionedMove
+ || gProtectStructs[battler].usedImprisonedMove
|| gProtectStructs[battler].loveImmobility
|| gProtectStructs[battler].usedDisabledMove
|| gProtectStructs[battler].usedTauntedMove
@@ -365,12 +365,12 @@ u8 TrySetCantSelectMoveBattleScript(void)
gCurrentMove = move;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisionedMoveInPalace;
+ gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisonedMoveInPalace;
gProtectStructs[gActiveBattler].palaceUnableToUseMove = 1;
}
else
{
- gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisionedMove;
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisonedMove;
limitations++;
}
}
@@ -438,7 +438,7 @@ u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check)
unusableMoves |= gBitTable[i];
if (gDisableStructs[battlerId].tauntTimer && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[battlerId].moves[i]].power == 0)
unusableMoves |= gBitTable[i];
- if (GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISION)
+ if (GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISON)
unusableMoves |= gBitTable[i];
if (gDisableStructs[battlerId].encoreTimer && gDisableStructs[battlerId].encoredMove != gBattleMons[battlerId].moves[i])
unusableMoves |= gBitTable[i];
@@ -469,7 +469,7 @@ bool8 AreAllMovesUnusable(void)
u8 GetImprisonedMovesCount(u8 battlerId, u16 move)
{
s32 i;
- u8 imprisionedMoves = 0;
+ u8 imprisonedMoves = 0;
u8 battlerSide = GetBattlerSide(battlerId);
for (i = 0; i < gBattlersCount; i++)
@@ -483,11 +483,11 @@ u8 GetImprisonedMovesCount(u8 battlerId, u16 move)
break;
}
if (j < MAX_MON_MOVES)
- imprisionedMoves++;
+ imprisonedMoves++;
}
}
- return imprisionedMoves;
+ return imprisonedMoves;
}
enum
@@ -1466,7 +1466,7 @@ u8 AtkCanceller_UnableToUseMove(void)
case CANCELLER_IMPRISONED: // imprisoned
if (GetImprisonedMovesCount(gBattlerAttacker, gCurrentMove))
{
- gProtectStructs[gBattlerAttacker].usedImprisionedMove = 1;
+ gProtectStructs[gBattlerAttacker].usedImprisonedMove = 1;
CancelMultiTurnMoves(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned;
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
@@ -1526,7 +1526,7 @@ u8 AtkCanceller_UnableToUseMove(void)
}
else
{
- BattleScriptPush(BattleScript_MoveUsedIsParalyzedCantAttack);
+ BattleScriptPush(BattleScript_MoveUsedIsInLoveCantAttack);
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
gProtectStructs[gBattlerAttacker].loveImmobility = 1;
CancelMultiTurnMoves(gBattlerAttacker);
diff --git a/src/berry.c b/src/berry.c
index bd596db7f..cbac06a3d 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -11,11 +11,9 @@
#include "text.h"
#include "constants/event_object_movement_constants.h"
#include "constants/items.h"
+#include "event_object_movement.h"
+
-extern u8 EventObjectGetBerryTreeId(u8 eventObjectId);
-extern void sub_8092EF0(u8 mapId, u8 mapNumber, u8 mapGroup);
-extern void CB2_ChooseBerry(void);
-extern bool8 IsBerryTreeSparkling(u8, u8, u8);
extern const u8 BerryTreeScript[];
diff --git a/src/berry_blender.c b/src/berry_blender.c
index ea9c6c4ff..c792b9b40 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -34,6 +34,8 @@
#include "battle_records.h"
#include "graphics.h"
#include "new_game.h"
+#include "save.h"
+#include "link.h"
#define BLENDER_SCORE_BEST 0
#define BLENDER_SCORE_GOOD 1
@@ -140,16 +142,6 @@ extern const u8 gText_Space[];
extern const u8 gText_BlenderMaxSpeedRecord[];
extern const u8 gText_234Players[];
-extern void sub_800A418(void);
-extern u8 sub_800A9D8(void);
-extern void sub_81AABF0(void (*callback)(void));
-extern void sub_800B4C0(void);
-extern void ClearLinkCallback(void);
-extern void sub_8009F8C(void);
-extern void sub_8153430(void);
-extern bool8 sub_8153474(void);
-extern void sub_80EECEC(void);
-
// this file's functions
static void BerryBlender_SetBackgroundsPos(void);
static void sub_8080EA4(u8 taskId);
@@ -412,10 +404,10 @@ static const struct OamData sOamData_8216314 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -555,10 +547,10 @@ static const struct OamData sOamData_821640C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -624,10 +616,10 @@ static const struct OamData sOamData_8216474 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -711,10 +703,10 @@ static const struct OamData sOamData_8216514 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -769,10 +761,10 @@ static const struct OamData sOamData_8216560 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(64x32),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -945,7 +937,7 @@ static void InitBerryBlenderWindows(void)
DeactivateAllTextPrinters();
for (i = 0; i < 5; i++)
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14);
sub_81978B0(0xE0);
@@ -1251,7 +1243,7 @@ static void sub_8080018(void)
case 10:
if (++sBerryBlenderData->framesToWait > 20)
{
- sub_8197DF8(4, TRUE);
+ ClearDialogWindowAndFrameToTransparent(4, TRUE);
if (GetBlockReceivedStatus() == sub_800A9D8())
{
for (i = 0; i < GetLinkPlayerCount(); i++)
@@ -1438,7 +1430,7 @@ static void Blender_SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum,
{
opponentBerryId = sOpponentBerrySets[opponentSetId][i];
var = playerBerryItemId - 163;
- if (!FlagGet(0x340) && gSpecialVar_0x8004 == 1)
+ if (!FlagGet(FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER_ONLOOKERS) && gSpecialVar_0x8004 == 1)
{
opponentSetId %= 5;
opponentBerryId = sSpecialOpponentBerrySets[opponentSetId];
@@ -2600,7 +2592,7 @@ static bool8 LinkPlayAgainHandleSaving(void)
}
break;
case 2:
- sub_8153430();
+ FullSaveGame();
sBerryBlenderData->field_1A0++;
sBerryBlenderData->framesToWait = 0;
break;
@@ -2614,7 +2606,7 @@ static bool8 LinkPlayAgainHandleSaving(void)
case 4:
if (IsLinkTaskFinished())
{
- if (sub_8153474())
+ if (CheckSaveFile())
{
sBerryBlenderData->field_1A0 = 5;
}
@@ -3104,7 +3096,7 @@ static void sub_8083170(u16 a0, u16 a1)
s32 var1, var2, var3, var4;
u16 *vram;
- vram = (u16*)(VRAM + 0x6000);
+ vram = (u16*)(BG_SCREEN_ADDR(12));
var1 = (a0 * 64) / a1;
var2 = var1 / 8;
for (var4 = 0; var4 < var2; var4++)
@@ -3325,7 +3317,7 @@ static bool8 Blender_PrintBlendingResults(void)
sBerryBlenderData->mainState++;
break;
case 5:
- sub_8198070(5, 1);
+ ClearStdWindowAndFrameToTransparent(5, 1);
for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
{
@@ -3466,7 +3458,7 @@ static bool8 Blender_PrintBlendingRanking(void)
}
break;
case 3:
- SetWindowBorderStyle(5, 0, 1, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(5, 0, 1, 0xD);
xPos = GetStringCenterAlignXOffset(1, sText_Ranking, 0xA8);
Blender_AddTextPrinter(5, sText_Ranking, xPos, 1, TEXT_SPEED_FF, 0);
@@ -3537,8 +3529,8 @@ void ShowBerryBlenderRecordWindow(void)
winTemplate = sBlenderRecordWindowTemplate;
gRecordsWindowId = AddWindow(&winTemplate);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, 0);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, 0);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
xPos = GetStringCenterAlignXOffset(1, gText_BlenderMaxSpeedRecord, 0x90);
AddTextPrinterParameterized(gRecordsWindowId, 1, gText_BlenderMaxSpeedRecord, xPos, 1, 0, NULL);
@@ -3647,7 +3639,7 @@ static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s3
if (caseId != 3)
{
- FillWindowPixelBuffer(windowId, txtColor[0] | (txtColor[0] << 4));
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(txtColor[0]));
}
AddTextPrinterParameterized4(windowId, 1, x, y, letterSpacing, 1, txtColor, speed, string);
@@ -3658,7 +3650,7 @@ static bool32 Blender_PrintText(s16 *textState, const u8 *string, s32 textSpeed)
switch (*textState)
{
case 0:
- sub_8197B1C(4, FALSE, 0x14, 0xF);
+ DrawDialogFrameWithCustomTileAndPalette(4, FALSE, 0x14, 0xF);
Blender_AddTextPrinter(4, string, 0, 1, textSpeed, 0);
PutWindowTilemap(4);
CopyWindowToVram(4, 3);
diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c
index 3631c083a..37be569f8 100644
--- a/src/berry_fix_program.c
+++ b/src/berry_fix_program.c
@@ -226,9 +226,9 @@ static void berry_fix_gpu_set(void)
DmaCopy32(3, sUnknown_08618138, BG_PLTT + 0x1E0, 0x20);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP);
- FillWindowPixelBuffer(2, 0);
- FillWindowPixelBuffer(3, 0);
- FillWindowPixelBuffer(0, 0xAA);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
+ FillWindowPixelBuffer(3, PIXEL_FILL(0));
+ FillWindowPixelBuffer(0, PIXEL_FILL(0xA));
width = GetStringWidth(0, sUnknown_08617E9B, 0);
left = (0x78 - width) / 2;
@@ -273,7 +273,7 @@ static int berry_fix_text_update(int checkval)
static void berry_fix_text_print(int scene)
{
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32);
- FillWindowPixelBuffer(1, 0xAA);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0xA));
AddTextPrinterParameterized3(1, 1, 0, 0, sUnknown_08618158, -1, gUnknown_08618160[scene]);
PutWindowTilemap(1);
CopyWindowToVram(1, 2);
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 6e968fc0a..a7cf4daf2 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -381,7 +381,7 @@ static void PrintTextInBerryTagScreen(u8 windowId, const u8 *text, u8 x, u8 y, s
static void AddBerryTagTextToBg0(void)
{
memcpy(GetBgTilemapBuffer(0), sBerryTag->tilemapBuffers[2], sizeof(sBerryTag->tilemapBuffers[2]));
- FillWindowPixelBuffer(WIN_BERRY_TAG, 0xFF);
+ FillWindowPixelBuffer(WIN_BERRY_TAG, PIXEL_FILL(15));
PrintTextInBerryTagScreen(WIN_BERRY_TAG, gText_BerryTag, GetStringCenterAlignXOffset(1, gText_BerryTag, 0x40), 1, 0, 1);
PutWindowTilemap(WIN_BERRY_TAG);
schedule_bg_copy_tilemap_to_vram(0);
@@ -598,7 +598,7 @@ static void Task_DisplayAnotherBerry(u8 taskId)
switch (data[0])
{
case 0x30:
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
break;
case 0x40:
PrintBerryNumberAndName();
@@ -608,7 +608,7 @@ static void Task_DisplayAnotherBerry(u8 taskId)
CreateBerrySprite();
break;
case 0x60:
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
break;
case 0x70:
PrintBerrySize();
@@ -620,7 +620,7 @@ static void Task_DisplayAnotherBerry(u8 taskId)
SetFlavorCirclesVisiblity();
break;
case 0xA0:
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
break;
case 0xB0:
PrintBerryDescription1();
@@ -635,7 +635,7 @@ static void Task_DisplayAnotherBerry(u8 taskId)
switch (data[0])
{
case 0x30:
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
break;
case 0x40:
PrintBerryDescription2();
@@ -647,7 +647,7 @@ static void Task_DisplayAnotherBerry(u8 taskId)
SetFlavorCirclesVisiblity();
break;
case 0x70:
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
break;
case 0x80:
PrintBerryFirmness();
@@ -660,7 +660,7 @@ static void Task_DisplayAnotherBerry(u8 taskId)
CreateBerrySprite();
break;
case 0xB0:
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
break;
case 0xC0:
PrintBerryNumberAndName();
diff --git a/src/bg.c b/src/bg.c
index f73f5998d..1826f9a28 100644
--- a/src/bg.c
+++ b/src/bg.c
@@ -1056,7 +1056,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt
for (x16 = x; x16 < (x + width); x16++)
{
CopyTileMapEntry(&firstTileNum, &((u16*)sGpuBgConfigs2[bg].tilemap)[(u16)GetTileMapIndexFromCoords(x16, y16, attribute, mode, mode2)], paletteSlot, 0, 0);
- firstTileNum = (firstTileNum & 0xFC00) + ((firstTileNum + tileNumDelta) & 0x3FF);
+ firstTileNum = (firstTileNum & (METATILE_COLLISION_MASK | METATILE_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & METATILE_ID_MASK);
}
}
break;
@@ -1067,7 +1067,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt
for (x16 = x; x16 < (x + width); x16++)
{
((u8*)sGpuBgConfigs2[bg].tilemap)[(y16 * mode3) + x16] = firstTileNum;
- firstTileNum = (firstTileNum & 0xFC00) + ((firstTileNum + tileNumDelta) & 0x3FF);
+ firstTileNum = (firstTileNum & (METATILE_COLLISION_MASK | METATILE_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & METATILE_ID_MASK);
}
}
break;
diff --git a/src/bike.c b/src/bike.c
index 1e91baab0..530742bdf 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -14,12 +14,6 @@
extern bool8 gBikeCyclingChallenge;
extern u8 gBikeCollisions;
-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 sub_808B9D4(u8 direction);
-
// this file's functions
static void MovePlayerOnMachBike(u8, u16, u16);
static u8 GetMachBikeTransition(u8 *);
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index b17ffad33..07b941f11 100644
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -10,21 +10,20 @@
#include "constants/maps.h"
#include "constants/songs.h"
#include "constants/species.h"
-
-extern void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatileId); // fieldmap
-extern u8 GetCursorSelectionMonId(void);
-extern u8 oei_task_add(void);
+#include "fieldmap.h"
+#include "party_menu.h"
+#include "fldeff.h"
// why do this, GF?
enum
{
- STRENGTH_PUZZLE,
- FLY_PUZZLE
+ REGIROCK_PUZZLE,
+ REGISTEEL_PUZZLE
};
EWRAM_DATA static u8 sBraillePuzzleCallbackFlag = 0;
-static const u8 gUnknown_085EFE74[][2] =
+static const u8 gRegicePathCoords[][2] =
{
{0x04, 0x15},
{0x05, 0x15},
@@ -65,14 +64,14 @@ static const u8 gUnknown_085EFE74[][2] =
};
void SealedChamberShakingEffect(u8);
-void sub_8179860(void);
-void sub_8179944(void);
+void DoBrailleRegirockEffect(void);
+void DoBrailleRegisteelEffect(void);
bool8 ShouldDoBrailleDigEffect(void)
{
if (!FlagGet(FLAG_SYS_BRAILLE_DIG)
- && (gSaveBlock1Ptr->location.mapGroup == 0x18
- && gSaveBlock1Ptr->location.mapNum == 0x47))
+ && (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEALED_CHAMBER_OUTER_ROOM)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEALED_CHAMBER_OUTER_ROOM)))
{
if (gSaveBlock1Ptr->pos.x == 10 && gSaveBlock1Ptr->pos.y == 3)
return TRUE;
@@ -87,12 +86,12 @@ bool8 ShouldDoBrailleDigEffect(void)
void DoBrailleDigEffect(void)
{
- MapGridSetMetatileIdAt(16, 8, 554);
- MapGridSetMetatileIdAt(17, 8, 555);
- MapGridSetMetatileIdAt(18, 8, 556);
- MapGridSetMetatileIdAt(16, 9, 3634);
- MapGridSetMetatileIdAt(17, 9, 563);
- MapGridSetMetatileIdAt(18, 9, 3636);
+ MapGridSetMetatileIdAt(16, 8, 0x22A);
+ MapGridSetMetatileIdAt(17, 8, 0x22B);
+ MapGridSetMetatileIdAt(18, 8, 0x22C);
+ MapGridSetMetatileIdAt(16, 9, 0xE32);
+ MapGridSetMetatileIdAt(17, 9, 0x233);
+ MapGridSetMetatileIdAt(18, 9, 0xE34);
DrawWholeMapView();
PlaySE(SE_BAN);
FlagSet(FLAG_SYS_BRAILLE_DIG);
@@ -115,10 +114,10 @@ bool8 CheckRelicanthWailord(void)
// THEORY: this was caused by block commenting out all of the older R/S braille functions but leaving the call to it itself, which creates the nullsub.
// the code is shown below to show what this might look like.
-void ShouldDoBrailleStrengthEffectOld(void)
+void ShouldDoBrailleRegirockEffectOld(void)
{
/*
- if (!FlagGet(FLAG_SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS))
+ if (!FlagGet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS))
{
if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23)
return TRUE;
@@ -131,7 +130,7 @@ void ShouldDoBrailleStrengthEffectOld(void)
return FALSE;
}
-void DoBrailleStrengthEffect(void)
+void DoBrailleRegirockEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
MapGridSetMetatileIdAt(14, 26, 554);
@@ -142,13 +141,13 @@ void DoBrailleStrengthEffect(void)
MapGridSetMetatileIdAt(16, 27, 3636);
DrawWholeMapView();
PlaySE(SE_BAN);
- FlagSet(FLAG_SYS_BRAILLE_STRENGTH);
+ FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED);
ScriptContext2_Disable();
}
-bool8 ShouldDoBrailleFlyEffect(void)
+bool8 ShouldDoBrailleRegisteelEffect(void)
{
- if (!FlagGet(FLAG_SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB))
+ if (!FlagGet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB))
{
if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25)
return TRUE;
@@ -157,24 +156,24 @@ bool8 ShouldDoBrailleFlyEffect(void)
return FALSE;
}
-void DoBrailleFlyEffect(void)
+void DoBrailleRegisteelEffect(void)
{
gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
- FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
+ FieldEffectStart(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
}
bool8 FldEff_UseFlyAncientTomb(void)
{
u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16;
- gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback;
+ gTasks[taskId].data[8] = (u32)UseRegisteelHm_Callback >> 16;
+ gTasks[taskId].data[9] = (u32)UseRegisteelHm_Callback;
return FALSE;
}
-void UseFlyAncientTomb_Callback(void)
+void UseRegisteelHm_Callback(void)
{
- FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
+ FieldEffectActiveListRemove(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
UseFlyAncientTomb_Finish();
}
@@ -188,7 +187,7 @@ void UseFlyAncientTomb_Finish(void)
MapGridSetMetatileIdAt(16, 27, 3636);
DrawWholeMapView();
PlaySE(SE_BAN);
- FlagSet(FLAG_SYS_BRAILLE_FLY);
+ FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED);
ScriptContext2_Disable();
}
*/
@@ -240,25 +239,25 @@ void SealedChamberShakingEffect(u8 taskId)
}
// moved later in the function because it was rewritten.
-bool8 ShouldDoBrailleStrengthEffect(void)
+bool8 ShouldDoBrailleRegirockEffect(void)
{
- if (!FlagGet(FLAG_SYS_BRAILLE_STRENGTH)
+ if (!FlagGet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED)
&& gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(DESERT_RUINS)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(DESERT_RUINS))
{
if (gSaveBlock1Ptr->pos.x == 6 && gSaveBlock1Ptr->pos.y == 23)
{
- sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
+ sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE;
return TRUE;
}
else if (gSaveBlock1Ptr->pos.x == 5 && gSaveBlock1Ptr->pos.y == 23)
{
- sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
+ sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE;
return TRUE;
}
else if (gSaveBlock1Ptr->pos.x == 7 && gSaveBlock1Ptr->pos.y == 23)
{
- sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
+ sBraillePuzzleCallbackFlag = REGIROCK_PUZZLE;
return TRUE;
}
}
@@ -266,65 +265,68 @@ bool8 ShouldDoBrailleStrengthEffect(void)
return FALSE;
}
-void sub_8179834(void)
+void SetUpPuzzleEffectRegirock(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
- FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
+ FieldEffectStart(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
}
-void UseStrengthDesertRuins_Callback(void)
+void UseRegirockHm_Callback(void)
{
- FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
- sub_8179860();
+ FieldEffectActiveListRemove(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
+ DoBrailleRegirockEffect();
}
-void sub_8179860(void)
+void DoBrailleRegirockEffect(void)
{
- MapGridSetMetatileIdAt(14, 26, 554);
- MapGridSetMetatileIdAt(15, 26, 555);
- MapGridSetMetatileIdAt(16, 26, 556);
- MapGridSetMetatileIdAt(14, 27, 3634);
- MapGridSetMetatileIdAt(15, 27, 563);
- MapGridSetMetatileIdAt(16, 27, 3636);
+ MapGridSetMetatileIdAt(14, 26, 0x22A);
+ MapGridSetMetatileIdAt(15, 26, 0x22B);
+ MapGridSetMetatileIdAt(16, 26, 0x22C);
+ MapGridSetMetatileIdAt(14, 27, 0xE32);
+ MapGridSetMetatileIdAt(15, 27, 0x233);
+ MapGridSetMetatileIdAt(16, 27, 0xE34);
DrawWholeMapView();
PlaySE(SE_BAN);
- FlagSet(FLAG_SYS_BRAILLE_STRENGTH);
+ FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED);
ScriptContext2_Disable();
}
-bool8 ShouldDoBrailleFlyEffect(void)
+bool8 ShouldDoBrailleRegisteelEffect(void)
{
- if (!FlagGet(FLAG_SYS_BRAILLE_FLY) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x44))
+ if (!FlagGet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED) && (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ANCIENT_TOMB) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ANCIENT_TOMB)))
{
if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25)
- { sBraillePuzzleCallbackFlag = FLY_PUZZLE; return TRUE; }
+ {
+ sBraillePuzzleCallbackFlag = REGISTEEL_PUZZLE;
+ return TRUE;
+ }
}
return FALSE;
}
-void sub_8179918(void)
+void SetUpPuzzleEffectRegisteel(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
- FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
+ FieldEffectStart(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
}
-void UseFlyAncientTomb_Callback(void)
+void UseRegisteelHm_Callback(void)
{
- FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
- sub_8179944();
+ FieldEffectActiveListRemove(FLDEFF_USE_TOMB_PUZZLE_EFFECT);
+ DoBrailleRegisteelEffect();
}
-void sub_8179944(void)
+void DoBrailleRegisteelEffect(void)
{
- MapGridSetMetatileIdAt(14, 26, 554);
- MapGridSetMetatileIdAt(15, 26, 555);
- MapGridSetMetatileIdAt(16, 26, 556);
- MapGridSetMetatileIdAt(14, 27, 3634);
- MapGridSetMetatileIdAt(15, 27, 563);
- MapGridSetMetatileIdAt(16, 27, 3636);
+ MapGridSetMetatileIdAt(14, 26, 0x22A);
+ MapGridSetMetatileIdAt(15, 26, 0x22B);
+ MapGridSetMetatileIdAt(16, 26, 0x22C);
+ MapGridSetMetatileIdAt(14, 27, 0xE32);
+ MapGridSetMetatileIdAt(15, 27, 0x233);
+ MapGridSetMetatileIdAt(16, 27, 0xE34);
DrawWholeMapView();
PlaySE(SE_BAN);
- FlagSet(FLAG_SYS_BRAILLE_FLY);
+ FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED);
ScriptContext2_Disable();
}
@@ -332,7 +334,7 @@ void sub_8179944(void)
void DoBrailleWait(void)
{
/*
- if (!FlagGet(FLAG_SYS_BRAILLE_WAIT))
+ if (!FlagGet(FLAG_SYS_BRAILLE_REGICE_COMPLETED))
CreateTask(Task_BrailleWait, 0x50);
}
@@ -410,15 +412,15 @@ bool8 FldEff_UsePuzzleEffect(void)
{
u8 taskId = oei_task_add();
- if (sBraillePuzzleCallbackFlag == FLY_PUZZLE)
+ if (sBraillePuzzleCallbackFlag == REGISTEEL_PUZZLE)
{
- gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16;
- gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback;
+ gTasks[taskId].data[8] = (u32)UseRegisteelHm_Callback >> 16;
+ gTasks[taskId].data[9] = (u32)UseRegisteelHm_Callback;
}
else
{
- gTasks[taskId].data[8] = (u32)UseStrengthDesertRuins_Callback >> 16;
- gTasks[taskId].data[9] = (u32)UseStrengthDesertRuins_Callback;
+ gTasks[taskId].data[8] = (u32)UseRegirockHm_Callback >> 16;
+ gTasks[taskId].data[9] = (u32)UseRegirockHm_Callback;
}
return FALSE;
}
@@ -427,10 +429,10 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
{
u8 i;
- if (gSaveBlock1Ptr->location.mapGroup == 0x18
- && gSaveBlock1Ptr->location.mapNum == 0x43)
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ISLAND_CAVE)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ISLAND_CAVE))
{
- if (FlagGet(FLAG_SYS_BRAILLE_WAIT) != FALSE)
+ if (FlagGet(FLAG_SYS_BRAILLE_REGICE_COMPLETED))
return FALSE;
if (FlagGet(FLAG_TEMP_2) == FALSE)
return FALSE;
@@ -439,35 +441,36 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
for (i = 0; i < 36; i++)
{
- u8 xPos = gUnknown_085EFE74[i][0];
- u8 yPos = gUnknown_085EFE74[i][1];
+ u8 xPos = gRegicePathCoords[i][0];
+ u8 yPos = gRegicePathCoords[i][1];
if (gSaveBlock1Ptr->pos.x == xPos && gSaveBlock1Ptr->pos.y == yPos)
{
u16 varValue;
if (i < 16)
{
- u16 val = VarGet(0x403B);
+ u16 val = VarGet(VAR_REGICE_STEPS_1);
val |= 1 << i;
- VarSet(0x403B, val);
+ VarSet(VAR_REGICE_STEPS_1, val);
}
else if (i < 32)
{
- u16 val = VarGet(0x403C);
+ u16 val = VarGet(VAR_REGICE_STEPS_2);
val |= 1 << (i - 16);
- VarSet(0x403C, val);
+ VarSet(VAR_REGICE_STEPS_2, val);
}
else
{
- u16 val = VarGet(0x403D);
+ u16 val = VarGet(VAR_REGICE_STEPS_3);
val |= 1 << (i - 32);
- VarSet(0x403D, val);
+ VarSet(VAR_REGICE_STEPS_3, val);
}
- varValue = VarGet(0x403B);
- if (varValue != 0xFFFF || VarGet(0x403C) != varValue || VarGet(0x403D) != 0xF)
+ varValue = VarGet(VAR_REGICE_STEPS_1);
+ if (varValue != 0xFFFF || VarGet(VAR_REGICE_STEPS_2) != 0xFFFF || VarGet(VAR_REGICE_STEPS_3) != 0xF)
return FALSE;
+ // This final check is redundant.
if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 21)
return TRUE;
else
diff --git a/src/bug.c b/src/bug.c
index 31d1a9740..88f93a3d5 100644
--- a/src/bug.c
+++ b/src/bug.c
@@ -433,7 +433,7 @@ static void AnimMissileArcStep(struct Sprite *sprite)
{
sprite->invisible = FALSE;
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
DestroyAnimSprite(sprite);
}
@@ -453,7 +453,7 @@ static void AnimMissileArcStep(struct Sprite *sprite)
x2 += x1;
y2 += y1;
- if (!TranslateAnimArc(sprite))
+ if (!TranslateAnimHorizontalArc(sprite))
{
u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2,
sprite->pos1.y + sprite->pos2.y - y2);
diff --git a/src/cable_car.c b/src/cable_car.c
index 207a0c22d..ab7b5726a 100755
--- a/src/cable_car.c
+++ b/src/cable_car.c
@@ -153,19 +153,22 @@ const struct SpritePalette gUnknown_085CDB74[] = {
const struct OamData gOamData_85CDB84 = {
.affineMode = ST_OAM_AFFINE_DOUBLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
.priority = 2
};
const struct OamData gOamData_85CDB8C = {
.affineMode = ST_OAM_AFFINE_DOUBLE,
- .shape = ST_OAM_H_RECTANGLE,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
.priority = 2
};
const struct OamData gOamData_85CDB94 = {
.affineMode = ST_OAM_AFFINE_DOUBLE,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 2
};
@@ -358,7 +361,7 @@ static void CleanupCableCar(void)
HideBg(3);
sub_8150B6C(0);
gSpriteCoordOffsetX = 0;
- sub_80AB130(WEATHER_NONE);
+ SetCurrentAndNextWeatherNoDelay(WEATHER_NONE);
for (i = 0; i < 20; i++)
gWeatherPtr->sprites.s2.ashSprites[i] = NULL;
@@ -394,7 +397,7 @@ static void sub_81503E4(u8 taskId)
case 0:
if (sCableCar->timer == sCableCar->unk4)
{
- ChangeWeather(sCableCar->weather);
+ SetNextWeather(sCableCar->weather);
sCableCar->state = 1;
}
break;
@@ -798,7 +801,7 @@ static void LoadCableCarSprites(void)
gSprites[spriteId].data[1] = 99;
sCableCar->weather = WEATHER_ASH;
sCableCar->unk4 = 0x15e;
- sub_80AB130(WEATHER_SUNNY);
+ SetCurrentAndNextWeatherNoDelay(WEATHER_SUNNY);
break;
case 1:
CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x24, 24, 26, 12, 3, 17);
@@ -822,7 +825,7 @@ static void LoadCableCarSprites(void)
gSprites[spriteId].data[1] = 0x41;
sCableCar->weather = WEATHER_SUNNY;
sCableCar->unk4 = 0x109;
- sub_80AB130(WEATHER_ASH);
+ SetCurrentAndNextWeatherNoDelay(WEATHER_ASH);
break;
}
for (i = 0; i < 9; i++)
diff --git a/src/cable_club.c b/src/cable_club.c
index ce9b9db05..b80e76e99 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -27,12 +27,10 @@
#include "task.h"
#include "trade.h"
#include "trainer_card.h"
+#include "party_menu.h"
#include "window.h"
#include "constants/songs.h"
-extern u8 gUnknown_02032298[2];
-extern u8 gSelectedOrderFromParty[];
-
static const struct WindowTemplate gUnknown_08550594 = {
.bg = 0,
.tilemapLeft = 16,
@@ -94,7 +92,9 @@ static void sub_80B23B0(u16 windowId, u32 value)
static void sub_80B241C(u16 windowId)
{
- sub_819746C(windowId, FALSE);
+ // Following this call with a copy-to-vram with mode 3 is identical to
+ // calling ClearStdWindowAndFrame(windowId, TRUE).
+ ClearStdWindowAndFrame(windowId, FALSE);
CopyWindowToVram(windowId, 3);
}
@@ -284,7 +284,7 @@ static void sub_80B2804(u8 taskId)
if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN)
{
- if (sub_800AA48() != GetLinkPlayerCount_2())
+ if (GetSavedPlayerCount() != GetLinkPlayerCount_2())
{
ShowFieldAutoScrollMessage(gText_ConfirmLinkWhenPlayersReady);
gTasks[taskId].func = sub_80B270C;
@@ -297,7 +297,7 @@ static void sub_80B2804(u8 taskId)
else if (gMain.heldKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gTasks[taskId].func = sub_80B28A8;
}
}
@@ -312,7 +312,7 @@ static void sub_80B28A8(u8 taskId)
|| sub_80B2D6C(taskId) == TRUE)
return;
- if (GetLinkPlayerCount_2() != sub_800AA48())
+ if (GetLinkPlayerCount_2() != GetSavedPlayerCount())
{
gTasks[taskId].func = sub_80B2D2C;
}
@@ -354,7 +354,7 @@ static void sub_80B2918(u8 taskId)
else
{
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
- gUnknown_03005DB4 = GetMultiplayerId();
+ gLocalLinkPlayerId = GetMultiplayerId();
sub_800AA04(gFieldLinkPlayerCount);
card = (struct TrainerCard *)gBlockSendBuffer;
TrainerCard_GenerateCardForPlayer(card);
@@ -401,7 +401,7 @@ static void sub_80B2A08(u8 taskId)
else
{
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
- gUnknown_03005DB4 = GetMultiplayerId();
+ gLocalLinkPlayerId = GetMultiplayerId();
sub_800AA04(gFieldLinkPlayerCount);
card = (struct TrainerCard *)gBlockSendBuffer;
TrainerCard_GenerateCardForPlayer(card);
@@ -766,9 +766,9 @@ static void sub_80B3194(u8 taskId)
static void sub_80B31E8(u8 taskId)
{
- if (sub_800AA48() == GetLinkPlayerCount_2())
+ if (GetSavedPlayerCount() == GetLinkPlayerCount_2())
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gTasks[taskId].func = sub_80B3220;
}
}
@@ -974,7 +974,7 @@ void sub_80B360C(void)
if (gSpecialVar_0x8004 == 1 || gSpecialVar_0x8004 == 2)
{
- UpdatePlayerLinkBattleRecords(gUnknown_03005DB4 ^ 1);
+ UpdatePlayerLinkBattleRecords(gLocalLinkPlayerId ^ 1);
if (gWirelessCommType)
{
switch (gBattleOutcome)
@@ -995,13 +995,13 @@ void sub_80B360C(void)
}
else
{
- gMain.savedCallback = c2_8056854;
+ gMain.savedCallback = CB2_ReturnToFieldFromMultiplayer;
}
SetMainCallback2(sub_80A0514);
}
-void sub_80B36EC(void)
+void CleanupLinkRoomState(void)
{
if (gSpecialVar_0x8004 == 1 || gSpecialVar_0x8004 == 2 || gSpecialVar_0x8004 == 5 || gSpecialVar_0x8004 == 9)
{
@@ -1011,9 +1011,9 @@ void sub_80B36EC(void)
SetWarpDestinationToDynamicWarp(0x7F);
}
-void sub_80B371C(void)
+void ExitLinkRoom(void)
{
- sub_80872B0();
+ QueueExitLinkRoomKey();
}
static void sub_80B3728(u8 taskId)
@@ -1030,7 +1030,7 @@ static void sub_80B3728(u8 taskId)
if (IsFieldMessageBoxHidden())
{
sub_8087288();
- sub_8009628(gSpecialVar_0x8005);
+ SetLocalLinkPlayerId(gSpecialVar_0x8005);
task->data[0] = 2;
}
break;
@@ -1132,7 +1132,8 @@ static void sub_80B3894(u8 taskId)
}
}
-void sub_80B3924(void)
+// Note: VAR_0x8005 is set to the ID of the trade seat.
+void PlayerEnteredTradeSeat(void)
{
if (gWirelessCommType != 0)
{
@@ -1154,7 +1155,8 @@ void nullsub_37(void)
}
-void sub_80B3968(void)
+// Note: VAR_0x8005 is set to the ID of the player spot.
+void ColosseumPlayerSpotTriggered(void)
{
gLinkType = 0x2211;
@@ -1168,6 +1170,7 @@ void sub_80B3968(void)
}
}
+// This function is never called.
static void sub_80B39A4(void)
{
u8 taskId = CreateTask(sub_80B3728, 80);
@@ -1179,14 +1182,16 @@ void sp02A_crash_sound(void)
ShowTrainerCardInLink(gSpecialVar_0x8006, CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
-bool32 sub_80B39D4(u8 linkPlayerIndex)
+// Returns FALSE if the player has no stars. Returns TRUE otherwise, and puts the name of the
+// color into gStringVar2.
+bool32 GetLinkTrainerCardColor(u8 linkPlayerIndex)
{
u32 trainerCardColorIndex;
gSpecialVar_0x8006 = linkPlayerIndex;
StringCopy(gStringVar1, gLinkPlayers[linkPlayerIndex].name);
- trainerCardColorIndex = sub_80C4904(linkPlayerIndex);
+ trainerCardColorIndex = GetTrainerCardStars(linkPlayerIndex);
if (trainerCardColorIndex == 0)
return FALSE;
@@ -1265,13 +1270,13 @@ void sub_80B3AF8(u8 taskId)
}
break;
case 2:
- if (GetLinkPlayerCount_2() >= sub_800AA48())
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
{
if (IsLinkMaster())
{
if (++data[1] > 30)
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
data[0]++;
}
}
diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c
index 72d0daf55..c1d6930c7 100644
--- a/src/clear_save_data_screen.c
+++ b/src/clear_save_data_screen.c
@@ -79,7 +79,7 @@ void CB2_InitClearSaveDataScreen(void)
static void Task_DoClearSaveDataScreenYesNo(u8 taskId)
{
- SetWindowBorderStyle(0, 0, 2, 14);
+ DrawStdFrameWithCustomTileAndPalette(0, 0, 2, 14);
AddTextPrinterParameterized(0, 1, gText_ClearAllSaveData, 0, 1, 0, 0);
CreateYesNoMenu(sClearSaveYesNo, 2, 14, 1);
gTasks[taskId].func = Task_ClearSaveDataScreenYesNoChoice;
@@ -90,7 +90,7 @@ static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId)
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
- FillWindowPixelBuffer(0, 17);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, 1, gText_ClearingData, 0, 1, 0, 0);
gTasks[taskId].func = Task_ClearSaveData;
break;
@@ -153,7 +153,7 @@ static bool8 SetupClearSaveDataScreen(void)
((u16 *)(VRAM + 0x20))[i] = 0x1111;
for (i = 0; i < 0x400; i++)
- ((u16 *)(VRAM + 0xF000))[i] = 0x0001;
+ ((u16 *)(BG_SCREEN_ADDR(30)))[i] = 0x0001;
ResetTasks();
ResetSpriteData();
ResetBgsAndClearDma3BusyFlags(0);
@@ -203,7 +203,7 @@ static void InitClearSaveDataScreenWindows(void)
{
InitWindows(sClearSaveTextWindow);
DeactivateAllTextPrinters();
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
LoadWindowGfx(0, 0, 2, 224);
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
}
diff --git a/src/clock.c b/src/clock.c
index d52fde22e..1e7c5f83e 100644
--- a/src/clock.c
+++ b/src/clock.c
@@ -41,7 +41,7 @@ static void UpdatePerDay(struct Time *localTime)
if (*days != localTime->days && *days <= localTime->days)
{
daysSince = localTime->days - *days;
- ClearUpperFlags();
+ ClearDailyFlags();
UpdateDewfordTrendPerDay(daysSince);
UpdateTVShowsPerDay(daysSince);
UpdateWeatherPerDay(daysSince);
diff --git a/src/coins.c b/src/coins.c
index 967eb92ac..b838c303e 100644
--- a/src/coins.c
+++ b/src/coins.c
@@ -27,15 +27,15 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y)
struct WindowTemplate template;
SetWindowTemplateFields(&template, 0, x, y, 8, 2, 0xF, 0x141);
sCoinsWindowId = AddWindow(&template);
- FillWindowPixelBuffer(sCoinsWindowId, 0);
+ FillWindowPixelBuffer(sCoinsWindowId, PIXEL_FILL(0));
PutWindowTilemap(sCoinsWindowId);
- SetWindowBorderStyle(sCoinsWindowId, FALSE, 0x214, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(sCoinsWindowId, FALSE, 0x214, 0xE);
PrintCoinsString(coinAmount);
}
void HideCoinsWindow(void)
{
- sub_819746C(sCoinsWindowId, TRUE);
+ ClearStdWindowAndFrame(sCoinsWindowId, TRUE);
RemoveWindow(sCoinsWindowId);
}
diff --git a/src/contest.c b/src/contest.c
index b24036f39..114a1fb69 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -45,8 +45,6 @@
#include "constants/rgb.h"
#include "contest_ai.h"
-extern void sub_80FC9F8(u8); // contest_link_80FC4F4.c
-
// This file's functions.
static void sub_80D782C(void);
static void sub_80D7C7C(u8 taskId);
@@ -214,6 +212,8 @@ EWRAM_DATA u8 gHighestRibbonRank = 0;
EWRAM_DATA struct ContestResources *gContestResources = NULL;
EWRAM_DATA u8 sContestBgCopyFlags = 0;
EWRAM_DATA struct ContestWinner gUnknown_02039F3C = {0};
+EWRAM_DATA u8 gUnknown_02039F5C = 0;
+EWRAM_DATA u8 gUnknown_02039F5D = 0;
// IWRAM common vars.
u32 gContestRngValue;
@@ -316,7 +316,7 @@ void LoadContestBgAfterMoveAnim(void)
s32 i;
LZDecompressVram(gContestMiscGfx, (void *)VRAM);
- LZDecompressVram(gContestAudienceGfx, (void *)(VRAM + 0x2000));
+ LZDecompressVram(gContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4)));
CopyToBgTilemapBuffer(3, gUnknown_08C16FA8, 0, 0);
CopyBgTilemapBufferToVram(3);
LoadCompressedPalette(gUnknown_08C16E90, 0, 0x200);
@@ -594,8 +594,8 @@ static u8 sub_80D7E44(u8 *a)
LZDecompressVram(gContestMiscGfx, (void *)VRAM);
break;
case 2:
- LZDecompressVram(gContestAudienceGfx, (void *)(VRAM + 0x2000));
- DmaCopyLarge32(3, (void *)(VRAM + 0x2000), shared15800, 0x2000, 0x1000);
+ LZDecompressVram(gContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4)));
+ DmaCopyLarge32(3, (void *)(BG_SCREEN_ADDR(4)), shared15800, 0x2000, 0x1000);
break;
case 3:
CopyToBgTilemapBuffer(3, gUnknown_08C16FA8, 0, 0);
@@ -817,7 +817,7 @@ static void sub_80D8490(u8 taskId)
}
r5 = StringCopy(r5, gMoveNames[move]);
- FillWindowPixelBuffer(i + 5, 0);
+ FillWindowPixelBuffer(i + 5, PIXEL_FILL(0));
Contest_PrintTextToBg0WindowAt(i + 5, sp8, 5, 1, 7);
}
@@ -939,7 +939,7 @@ static void sub_80D895C(u8 taskId)
for (i = 0; i < 4; i++)
{
- FillWindowPixelBuffer(5 + i, 0);
+ FillWindowPixelBuffer(5 + i, PIXEL_FILL(0));
PutWindowTilemap(5 + i);
CopyWindowToVram(5 + i, 2);
}
@@ -2256,7 +2256,7 @@ static void sub_80DAEA4(void)
for (i = 0; i < 4; i++)
{
- FillWindowPixelBuffer(gUnknown_02039F26[i], 0);
+ FillWindowPixelBuffer(gUnknown_02039F26[i], PIXEL_FILL(0));
sub_80DAF04(i);
sub_80DAF88(i);
}
@@ -2476,7 +2476,7 @@ static void prints_contest_move_description(u16 a)
ContestBG_FillBoxWithTile(0, 0x5036, 0x15, 0x20, 0x08, 0x01, 0x11);
ContestBG_FillBoxWithTile(0, 0x5014, 0x15, 0x20, numHearts, 0x01, 0x11);
- FillWindowPixelBuffer(10, 0);
+ FillWindowPixelBuffer(10, PIXEL_FILL(0));
Contest_PrintTextToBg0WindowStd(10, gContestEffectDescriptionPointers[gContestMoves[a].effect]);
Contest_PrintTextToBg0WindowStd(9, gText_Slash);
}
@@ -2619,7 +2619,7 @@ static void sub_80DB884(void)
static void sub_80DB89C(void)
{
- FillWindowPixelBuffer(4, 0);
+ FillWindowPixelBuffer(4, PIXEL_FILL(0));
CopyWindowToVram(4, 2);
Contest_SetBgCopyFlags(0);
}
@@ -3326,12 +3326,12 @@ static u8 sub_80DC9EC(u8 a)
CopySpriteTiles(0,
3,
(void *)VRAM,
- (u16 *)(VRAM + 0xE000 + gUnknown_02039F26[a] * 5 * 64 + 0x26),
+ (u16 *)(BG_SCREEN_ADDR(28) + gUnknown_02039F26[a] * 5 * 64 + 0x26),
gContestResources->field_34);
CopySpriteTiles(0,
3, (void *)VRAM,
- (u16 *)(VRAM + 0xE000 + gUnknown_02039F26[a] * 5 * 64 + 0x36),
+ (u16 *)(BG_SCREEN_ADDR(28) + gUnknown_02039F26[a] * 5 * 64 + 0x36),
gContestResources->field_38);
CpuFill32(0, gContestResources->field_34 + 0x500, 0x300);
@@ -3454,7 +3454,7 @@ static void sub_80DCD48(void)
break;
default:
for (i = 0; i < 4; i++)
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
for (i = 0; i < 4; i++)
{
value = sContestantStatus[i].unk4;
@@ -4025,11 +4025,11 @@ static void sub_80DDE30(u8 taskId)
gTasks[taskId].data[10] = 0;
if (gTasks[taskId].data[11] == 0)
{
- RequestDma3Copy(shared16800, (void *)(VRAM + 0x2000), 0x1000, 1);
+ RequestDma3Copy(shared16800, (void *)(BG_SCREEN_ADDR(4)), 0x1000, 1);
}
else
{
- RequestDma3Copy(shared15800, (void *)(VRAM + 0x2000), 0x1000, 1);
+ RequestDma3Copy(shared15800, (void *)(BG_SCREEN_ADDR(4)), 0x1000, 1);
gTasks[taskId].data[12]++;
}
@@ -4210,7 +4210,7 @@ static void sub_80DE350(void)
s32 i;
u16 bg1Cnt;
- RequestDma3Fill(0,(void *)(VRAM + 0x8000), 0x2000, 0x1);
+ RequestDma3Fill(0,(void *)(BG_CHAR_ADDR(2)), 0x2000, 0x1);
CpuFill32(0, gContestResources->field_24[1], 0x1000);
Contest_SetBgCopyFlags(1);
bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT);
@@ -5036,7 +5036,7 @@ static void sub_80DF750(void)
return;
for (i = 0; i < 4; i++)
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
if (gHeap[0x1A000] == 2)
{
diff --git a/src/contest_link_80F57C4.c b/src/contest_link_80F57C4.c
index 721a4f870..a4b88c074 100644
--- a/src/contest_link_80F57C4.c
+++ b/src/contest_link_80F57C4.c
@@ -1,9 +1,11 @@
#include "global.h"
+#include "alloc.h"
#include "battle.h"
+#include "battle_gfx_sfx_util.h"
#include "bg.h"
#include "contest.h"
#include "contest_link_80F57C4.h"
-#include "contest_painting.h"
+#include "contest_link_80FC4F4.h"
#include "decompress.h"
#include "dma3.h"
#include "event_data.h"
@@ -23,11 +25,13 @@
#include "random.h"
#include "save.h"
#include "scanline_effect.h"
+#include "script.h"
#include "sound.h"
#include "string_util.h"
#include "strings.h"
#include "task.h"
#include "text.h"
+#include "trig.h"
#include "tv.h"
#include "util.h"
#include "window.h"
@@ -35,6 +39,7 @@
#include "constants/rgb.h"
#include "constants/songs.h"
#include "constants/vars.h"
+#include "contest.h"
struct ContestLinkUnk0
{
@@ -45,32 +50,43 @@ struct ContestLinkUnk0
u8 unk4;
u8 unk5;
u8 unk6;
- u8 filler7[0x1];
+ u8 unk7;
u8 spriteId;
u8 unk9;
u8 unkA;
- u8 fillerB[0x9];
+ s16 unkC[4];
u8 unk14;
u8 filler15[0x3];
};
+struct ContestLinkUnk14
+{
+ int unk0;
+ int unk4;
+ u32 unk8;
+ u32 unkC;
+ u8 unk10;
+ u8 unk11;
+ u8 unk12;
+};
+
struct ContestLinkUnk4
{
- u8 filler0[0x50];
+ struct ContestLinkUnk14 unk0[4];
};
struct ContestLink80F57C4
{
struct ContestLinkUnk0 *unk0;
struct ContestLinkUnk4 *unk4;
- u8 filler8[0x4];
+ u8 *unk8;
u8 *unkC[4];
+ u8 *unk1C;
};
-extern const struct CompressedSpriteSheet gMonFrontPicTable[];
-
-extern struct ContestLink80F57C4 *gUnknown_0203A034;
+EWRAM_DATA struct ContestLink80F57C4 *gUnknown_0203A034 = NULL;
+extern const struct CompressedSpriteSheet gMonFrontPicTable[];
extern const struct BgTemplate gUnknown_0858D888[4];
extern const struct WindowTemplate gUnknown_0858D898[];
extern const struct CompressedSpriteSheet gUnknown_0858D878[];
@@ -82,20 +98,21 @@ extern const u8 gUnknown_0858D6D0[];
extern const struct SpriteTemplate gSpriteTemplate_858D7F8;
extern const struct SpriteSheet gUnknown_0858D810[];
extern const struct SpritePalette gUnknown_0858D850;
+extern const struct SpriteTemplate gSpriteTemplate_858D860;
static void sub_80F6A9C(void);
static void sub_80F71C8(void);
u8 sub_80F7310(u8, u8);
s8 sub_80F7364(u8, u8);
-void sub_80F7ED0(int, u8 *, int);
-void sub_80F7DF4(void);
-static void sub_80F6A64(u8, u8);
+static void sub_80F7ED0(int, u8 *, int);
+static void sub_80F7DF4(void);
+static void LoadAllContestMonIcons(u8, u8);
static void sub_80F6DC0(void);
static void sub_80F6AE8(void);
static void sub_80F5CE4(u8);
static void sub_80F5C00(void);
static void sub_80F68B4(u8);
-void sub_80F7880(void);
+static void sub_80F7880(void);
static void sub_80F5C24(void);
static void sub_80F707C(const u8 *);
static void sub_80F5ED8(u8);
@@ -107,27 +124,38 @@ static void sub_80F68F0(u8);
s16 sub_80F6B78(const u8 *, u8);
static void sub_80F6E9C(s16, u16, u16, u16);
static void sub_80F6058(u8);
-void sub_80F7A80(u8, u8);
+static void sub_80F7A80(u8, u8);
+void sub_80F7CA8(u8);
static void sub_80F6EF4(u16);
static void sub_80F60F0(u8);
static void sub_80F616C(u8);
static void sub_80F6204(u8);
-void sub_80F73DC(u8);
-void sub_80F74BC(u8);
-void sub_80F77E0(u8, u8);
+static void sub_80F73DC(u8);
+static void sub_80F74BC(u8);
+static void sub_80F753C(u8);
+static void sub_80F77E0(u8, u8);
+static void sub_80F7824(u8);
static void sub_80F6404(u8);
-void sub_80F75A8(struct Sprite *);
-void sub_80F7670(u8);
-void sub_80F7620(struct Sprite *);
+static void sub_80F75A8(struct Sprite *);
+static void sub_80F7670(u8);
+static void sub_80F7620(struct Sprite *);
static void sub_80F66B4(u8);
static void sub_80F671C(u8);
static void sub_80F677C(u8);
static void sub_80F67C4(u8);
static void sub_80F6820(u8);
-void sub_80F7E64(void);
+static void sub_80F7E64(void);
static void sub_80F6F68(struct Sprite *);
static void sub_80F7014(struct Sprite *);
static void sub_80F6FDC(struct Sprite *);
+static void sub_80F8508(u8);
+static void sub_80F8568(u8);
+static void sub_80F8584(u8);
+static void sub_80F85A0(u8);
+static void sub_80F85BC(u8);
+static void sub_80F86B8(u8);
+static void sub_80F878C(u8);
+static void sub_80F87B4(u8);
void sub_80F57C4(void)
{
@@ -138,7 +166,7 @@ void sub_80F57C4(void)
InitBgsFromTemplates(0, gUnknown_0858D888, ARRAY_COUNT(gUnknown_0858D888));
for (i = 0; i < 4; i++)
SetBgTilemapBuffer(i, gUnknown_0203A034->unkC[i]);
-
+
InitWindows(gUnknown_0858D898);
DeactivateAllTextPrinters();
SetGpuReg(REG_OFFSET_MOSAIC, 0);
@@ -267,7 +295,7 @@ void sub_80F5B00(void)
FreeAllSpritePalettes();
sub_80F591C();
sub_80F6A9C();
- sub_80F6A64(0, 1);
+ LoadAllContestMonIcons(0, 1);
sub_80F5AE0();
memset(gUnknown_0203A034->unk0, 0, sizeof(*gUnknown_0203A034->unk0));
memset(gUnknown_0203A034->unk4, 0, sizeof(*gUnknown_0203A034->unk4));
@@ -343,12 +371,12 @@ static void sub_80F5CE4(u8 taskId)
sub_80DEDA8(0xFE);
gUnknown_02039F5C = 1;
gUnknown_02039F5D = sub_80DEFA8(0xFE, 0);
- var = VarGet(VAR_0x4086);
- VarSet(VAR_0x4086, 0);
+ var = VarGet(VAR_LINK_CONTEST_ROOM_STATE);
+ VarSet(VAR_LINK_CONTEST_ROOM_STATE, 0);
SetContinueGameWarpStatusToDynamicWarp();
TrySavingData(SAVE_LINK);
ClearContinueGameWarpStatus2();
- VarSet(VAR_0x4086, var);
+ VarSet(VAR_LINK_CONTEST_ROOM_STATE, var);
gTasks[taskId].data[0]++;
break;
case 1:
@@ -720,7 +748,7 @@ static void sub_80F66B4(u8 taskId)
{
nationalDexNum = SpeciesToNationalPokedexNum(gContestMons[i].species);
GetSetPokedexFlag(nationalDexNum, FLAG_SET_SEEN);
- }
+ }
}
gTasks[taskId].data[10] = 0;
@@ -761,7 +789,7 @@ static void sub_80F67C4(u8 taskId)
{
if (!(gIsLinkContest & 0x1))
BravoTrainerPokemonProfile_BeforeInterview2(gContestFinalStandings[gContestPlayerMonIndex]);
-
+
BeginHardwarePaletteFade(0xFF, 0, 0, 16, 0);
gTasks[taskId].func = sub_80F6820;
}
@@ -829,7 +857,7 @@ static void sub_80F68F0(u8 taskId)
gUnknown_0203A034->unk0->unkA = 1;
}
-void sub_80F69B8(u16 species, u8 monIndex, u8 arg2, u8 arg3, u32 personality)
+void sub_80F69B8(u16 species, u8 monIndex, u8 srcOffset, u8 useDmaNow, u32 personality)
{
u8 frameNum;
const u8 *iconPtr;
@@ -840,8 +868,8 @@ void sub_80F69B8(u16 species, u8 monIndex, u8 arg2, u8 arg3, u32 personality)
frameNum = (monIndex == *contestPlayerMonIndex) ? 1 : 0;
iconPtr = GetMonIconPtr(species, personality, frameNum);
- iconPtr += arg2 * 0x200 + 0x80;
- if (arg3)
+ iconPtr += srcOffset * 0x200 + 0x80;
+ if (useDmaNow)
{
RequestDma3Copy(iconPtr, (void *)BG_CHAR_ADDR(1) + monIndex * 0x200, 0x180, 1);
var0 = ((monIndex + 10) << 12);
@@ -854,12 +882,12 @@ void sub_80F69B8(u16 species, u8 monIndex, u8 arg2, u8 arg3, u32 personality)
}
}
-static void sub_80F6A64(u8 arg0, u8 arg1)
+static void LoadAllContestMonIcons(u8 srcOffset, u8 useDmaNow)
{
int i;
for (i = 0; i < 4; i++)
- sub_80F69B8(gContestMons[i].species, i, arg0, arg1, gContestMons[i].personality);
+ sub_80F69B8(gContestMons[i].species, i, srcOffset, useDmaNow, gContestMons[i].personality);
}
static void sub_80F6A9C(void)
@@ -906,7 +934,7 @@ static void sub_80F6AE8(void)
// windowTemplate.width = 30;
// windowTemplate.height = 2;
// windowId = AddWindow(&windowTemplate);
-// FillWindowPixelBuffer(windowId, 0x11);
+// FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
// origWidth = GetStringWidth(1, text, 0) + 9;
// strWidth = origWidth;
// if (strWidth < 0)
@@ -1282,7 +1310,7 @@ static void sub_80F6F68(struct Sprite *sprite)
struct Sprite *sprite2 = &gSprites[sprite->data[i]];
sprite2->pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64;
}
-
+
if (sprite->pos1.x == sprite->data[4])
sprite->callback = sub_80F6FDC;
}
@@ -1348,7 +1376,7 @@ static void sub_80F7144(void)
sprite->invisible = 1;
for (i = 0; i < 3; i++)
gSprites[sprite->data[i]].invisible = 1;
-
+
gBattle_WIN0H = 0;
gBattle_WIN0V = 0;
SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H);
@@ -1441,3 +1469,1657 @@ u8 sub_80F7310(u8 monIndex, u8 arg1)
return var1;
}
+
+s8 sub_80F7364(u8 arg0, u8 arg1)
+{
+ u32 r4;
+ u32 r2;
+ s16 val;
+ s8 ret;
+
+ val = gUnknown_02039F18[arg0];
+ if (val < 0)
+ r4 = -val << 16;
+ else
+ r4 = val << 16;
+
+ r2 = r4 / 80;
+ if (r2 & 0xFFFF)
+ r2 += 0x10000;
+
+ r2 >>= 16;
+ if (r2 == 0 && r4 != 0)
+ r2 = 1;
+
+ if (arg1 != 0 && r2 > 10)
+ r2 = 10;
+
+ if (gUnknown_02039F18[arg0] < 0)
+ ret = -r2;
+ else
+ ret = r2;
+
+ return ret;
+}
+
+static void sub_80F73DC(u8 taskId)
+{
+ u16 firstTileNum;
+
+ if (gTasks[taskId].data[10] == 0)
+ {
+ gTasks[taskId].data[11] = (3 - gTasks[taskId].data[0]) * 40;
+ gTasks[taskId].data[10]++;
+ }
+ else if (gTasks[taskId].data[10] == 1)
+ {
+ if (--gTasks[taskId].data[11] == -1)
+ {
+ firstTileNum = gTasks[taskId].data[0] * 2 + 0x5043;
+ WriteSequenceToBgTilemapBuffer(2, firstTileNum, 1, gTasks[taskId].data[1] * 3 + 5, 2, 1, 17, 1);
+ WriteSequenceToBgTilemapBuffer(2, firstTileNum + 0x10, 1, gTasks[taskId].data[1] * 3 + 6, 2, 1, 17, 1);
+ gUnknown_0203A034->unk0->unk5++;
+ DestroyTask(taskId);
+ PlaySE(SE_JYUNI);
+ }
+ }
+}
+
+static void sub_80F74BC(u8 taskId)
+{
+ int i;
+ for (i = 0; i < 4 && gContestFinalStandings[i] != 0; i++)
+ ;
+
+ CopyToBgTilemapBufferRect_ChangePalette(2, i * 0xC0 + 0x100 + gUnknown_0203A034->unkC[2], 0, i * 3 + 4, 32, 3, 9);
+ gTasks[taskId].data[10] = i;
+ gTasks[taskId].data[12] = 1;
+ gTasks[taskId].func = sub_80F753C;
+ gUnknown_0203A034->unk0->unk3 = taskId;
+}
+
+static void sub_80F753C(u8 taskId)
+{
+ if (++gTasks[taskId].data[11] == 1)
+ {
+ gTasks[taskId].data[11] = 0;
+ BlendPalette(0x91, 1, gTasks[taskId].data[12], RGB(13, 28, 27));
+ if (gTasks[taskId].data[13] == 0)
+ {
+ if (++gTasks[taskId].data[12] == 16)
+ gTasks[taskId].data[13] = 1;
+ }
+ else
+ {
+ if (--gTasks[taskId].data[12] == 0)
+ gTasks[taskId].data[13] = 0;
+ }
+ }
+}
+
+static void sub_80F75A8(struct Sprite *sprite)
+{
+ if (sprite->data[0] < 10)
+ {
+ if (++sprite->data[0] == 10)
+ {
+ PlayCry1(sprite->data[1], 0);
+ sprite->data[1] = 0;
+ }
+ }
+ else
+ {
+ s16 delta = (u16)sprite->data[1] + 0x600;
+ sprite->pos1.x -= delta >> 8;
+ sprite->data[1] = (sprite->data[1] + 0x600) & 0xFF;
+ if (sprite->pos1.x < 120)
+ sprite->pos1.x = 120;
+
+ if (sprite->pos1.x == 120)
+ {
+ sprite->callback = SpriteCallbackDummy;
+ sprite->data[1] = 0;
+ gUnknown_0203A034->unk0->unk6 = 1;
+ }
+ }
+}
+
+static void sub_80F7620(struct Sprite *sprite)
+{
+ s16 delta = (u16)sprite->data[1] + 0x600;
+ sprite->pos1.x -= delta >> 8;
+ sprite->data[1] = (sprite->data[1] + 0x600) & 0xFF;
+ if (sprite->pos1.x < -32)
+ {
+ sprite->callback = SpriteCallbackDummy;
+ sprite->invisible = 1;
+ gUnknown_0203A034->unk0->unk6 = 2;
+ }
+}
+
+static void sub_80F7670(u8 taskId)
+{
+ if (++gTasks[taskId].data[0] == 5)
+ {
+ gTasks[taskId].data[0] = 0;
+ if (gUnknown_0203A034->unk0->unk7 < 40)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_858D860, (Random() % 240) - 20, 44, 5);
+ gSprites[spriteId].data[0] = Random() % 512;
+ gSprites[spriteId].data[1] = (Random() % 24) + 16;
+ gSprites[spriteId].data[2] = (Random() % 256) + 48;
+ gSprites[spriteId].oam.tileNum += Random() % 17;
+ gUnknown_0203A034->unk0->unk7++;
+ }
+ }
+
+ if (gUnknown_0203A034->unk0->unk9)
+ DestroyTask(taskId);
+}
+
+void sub_80F7768(struct Sprite *sprite)
+{
+ register s16 var0 asm("r1");
+
+ sprite->data[3] += sprite->data[0];
+ sprite->pos2.x = Sin(sprite->data[3] >> 8, sprite->data[1]);
+ var0 = sprite->data[4] + sprite->data[2];
+ sprite->pos1.x += var0 >> 8;
+ var0 = var0 & 0xFF;
+ sprite->data[4] = var0;
+ sprite->pos1.y++;
+ if (gUnknown_0203A034->unk0->unk9)
+ sprite->invisible = 1;
+
+ if (sprite->pos1.x > 248 || sprite->pos1.y > 116)
+ {
+ DestroySprite(sprite);
+ gUnknown_0203A034->unk0->unk7--;
+ }
+}
+
+static void sub_80F77E0(u8 monIndex, u8 numFrames)
+{
+ u8 taskId = CreateTask(sub_80F7824, 8);
+ gTasks[taskId].data[0] = monIndex;
+ gTasks[taskId].data[1] = numFrames;
+ gTasks[taskId].data[2] = gContestMons[monIndex].species;
+}
+
+static void sub_80F7824(u8 taskId)
+{
+ u8 monIndex = gTasks[taskId].data[0];
+ if (gTasks[taskId].data[10]++ == gTasks[taskId].data[1])
+ {
+ gTasks[taskId].data[10] = 0;
+ sub_80F69B8(gTasks[taskId].data[2], monIndex, gTasks[taskId].data[11], FALSE, gContestMons[monIndex].personality);
+ gTasks[taskId].data[11] ^= 1;
+ }
+}
+
+// static void sub_80F7880(void)
+// {
+// int i;
+// int var0;
+// int var1;
+// int var2;
+// int var3;
+// u32 var4;
+// int var5;
+// int var6;
+// s16 var7;
+// s16 var8;
+// s16 r2;
+
+// r2 = gUnknown_02039F08[0];
+// for (i = 1; i < 4; i++)
+// {
+// if (r2 < gUnknown_02039F08[i])
+// r2 = gUnknown_02039F08[i];
+// }
+
+// if (r2 < 0)
+// {
+// r2 = gUnknown_02039F08[0];
+// for (i = 1; i < 4; i++)
+// {
+// if (r2 > gUnknown_02039F08[i])
+// r2 = gUnknown_02039F08[i];
+// }
+// }
+
+// // _080F78E4
+// for (i = 0; i < 4; i++)
+// {
+// var0 = gContestMonConditions[i] * 1000;
+// var1 = r2;
+// if (r2 < 0)
+// var1 = -var1;
+
+// var2 = var0 / var1;
+// if (var2 % 10 > 4)
+// var2 += 10;
+
+// gUnknown_0203A034->unk4->unk0[i].unk0 = var2 / 10;
+// var3 = gUnknown_02039F18[i];
+// if (var3 < 0)
+// var3 = -var3;
+
+// var0 = var3 * 1000;
+// var1 = r2;
+// if (r2 < 0)
+// var1 = -var1;
+
+// var2 = var0 / var1;
+// if (var2 % 10 > 4)
+// var2 += 10;
+
+// // _080F7966
+// gUnknown_0203A034->unk4->unk0[i].unk4 = var2 / 10;
+// if (gUnknown_02039F18[i] < 0)
+// gUnknown_0203A034->unk4->unk0[i].unk10 = 1;
+
+// var4 = gUnknown_0203A034->unk4->unk0[i].unk0 * 22528 / 100;
+// if ((var4 & 0xFF) > 0x7F)
+// var4 += 0x100;
+
+// gUnknown_0203A034->unk4->unk0[i].unk8 = var4 >> 8;
+// var4 = gUnknown_0203A034->unk4->unk0[i].unk4 * 22528 / 100;
+// if ((var4 & 0xFF) > 0x7F)
+// var4 += 0x100;
+
+// gUnknown_0203A034->unk4->unk0[i].unkC = var4 >> 8;
+// gUnknown_0203A034->unk4->unk0[i].unk11 = sub_80F7310(i, 1);
+// var5 = sub_80F7364(i, 1);
+// if (var5 < 0)
+// var5 = -var5;
+
+// gUnknown_0203A034->unk4->unk0[i].unk12 = var5;
+// if (gContestFinalStandings[i])
+// {
+// var7 = gUnknown_0203A034->unk4->unk0[i].unk8;
+// var8 = gUnknown_0203A034->unk4->unk0[i].unkC;
+// if (gUnknown_0203A034->unk4->unk0[i].unk10)
+// var8 = -var8;
+
+// if (var7 + var8 == 88)
+// {
+// if (var8 > 0)
+// gUnknown_0203A034->unk4->unk0[i].unkC--;
+// else if (var7 > 0)
+// gUnknown_0203A034->unk4->unk0[i].unk8--;
+// }
+// }
+// }
+// }
+
+NAKED
+static void sub_80F7880(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, =gUnknown_02039F08\n\
+ ldrh r2, [r0]\n\
+ adds r4, r0, 0\n\
+ adds r3, r4, 0x2\n\
+ movs r0, 0x2\n\
+ mov r8, r0\n\
+_080F7898:\n\
+ lsls r0, r2, 16\n\
+ asrs r0, 16\n\
+ movs r5, 0\n\
+ ldrsh r1, [r3, r5]\n\
+ cmp r0, r1\n\
+ bge _080F78A6\n\
+ ldrh r2, [r3]\n\
+_080F78A6:\n\
+ adds r3, 0x2\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ add r8, r0\n\
+ mov r1, r8\n\
+ cmp r1, 0\n\
+ bge _080F7898\n\
+ lsls r0, r2, 16\n\
+ str r0, [sp]\n\
+ cmp r0, 0\n\
+ bge _080F78E4\n\
+ ldrh r2, [r4]\n\
+ adds r3, r4, 0x2\n\
+ movs r4, 0x2\n\
+ mov r8, r4\n\
+_080F78C4:\n\
+ lsls r0, r2, 16\n\
+ asrs r0, 16\n\
+ movs r5, 0\n\
+ ldrsh r1, [r3, r5]\n\
+ cmp r0, r1\n\
+ ble _080F78D2\n\
+ ldrh r2, [r3]\n\
+_080F78D2:\n\
+ adds r3, 0x2\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ add r8, r0\n\
+ lsls r1, r2, 16\n\
+ str r1, [sp]\n\
+ mov r4, r8\n\
+ cmp r4, 0\n\
+ bge _080F78C4\n\
+_080F78E4:\n\
+ movs r5, 0\n\
+ mov r8, r5\n\
+ mov r10, r5\n\
+_080F78EA:\n\
+ ldr r0, =gContestMonConditions\n\
+ mov r1, r8\n\
+ lsls r7, r1, 1\n\
+ adds r0, r7, r0\n\
+ movs r2, 0\n\
+ ldrsh r1, [r0, r2]\n\
+ lsls r0, r1, 5\n\
+ subs r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ ldr r4, [sp]\n\
+ asrs r5, r4, 16\n\
+ adds r1, r5, 0\n\
+ cmp r5, 0\n\
+ bge _080F790C\n\
+ negs r1, r5\n\
+_080F790C:\n\
+ bl __divsi3\n\
+ adds r4, r0, 0\n\
+ movs r1, 0xA\n\
+ bl __modsi3\n\
+ cmp r0, 0x4\n\
+ ble _080F791E\n\
+ adds r4, 0xA\n\
+_080F791E:\n\
+ ldr r0, =gUnknown_0203A034\n\
+ mov r9, r0\n\
+ ldr r0, [r0]\n\
+ ldr r0, [r0, 0x4]\n\
+ mov r1, r10\n\
+ adds r6, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ str r0, [r6]\n\
+ ldr r0, =gUnknown_02039F18\n\
+ adds r7, r0\n\
+ movs r2, 0\n\
+ ldrsh r1, [r7, r2]\n\
+ cmp r1, 0\n\
+ bge _080F7942\n\
+ negs r1, r1\n\
+_080F7942:\n\
+ lsls r0, r1, 5\n\
+ subs r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r1, r5, 0\n\
+ cmp r1, 0\n\
+ bge _080F7954\n\
+ negs r1, r1\n\
+_080F7954:\n\
+ bl __divsi3\n\
+ adds r4, r0, 0\n\
+ movs r1, 0xA\n\
+ bl __modsi3\n\
+ cmp r0, 0x4\n\
+ ble _080F7966\n\
+ adds r4, 0xA\n\
+_080F7966:\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ str r0, [r6, 0x4]\n\
+ movs r4, 0\n\
+ ldrsh r0, [r7, r4]\n\
+ cmp r0, 0\n\
+ bge _080F797C\n\
+ movs r0, 0x1\n\
+ strb r0, [r6, 0x10]\n\
+_080F797C:\n\
+ mov r5, r9\n\
+ ldr r0, [r5]\n\
+ ldr r0, [r0, 0x4]\n\
+ mov r1, r10\n\
+ adds r4, r1, r0\n\
+ ldr r1, [r4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ subs r0, r1\n\
+ lsls r0, 11\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ adds r1, r0, 0\n\
+ movs r5, 0xFF\n\
+ ands r0, r5\n\
+ cmp r0, 0x7F\n\
+ bls _080F79A8\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ adds r1, r2\n\
+_080F79A8:\n\
+ lsrs r0, r1, 8\n\
+ str r0, [r4, 0x8]\n\
+ ldr r1, [r4, 0x4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ subs r0, r1\n\
+ lsls r0, 11\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ adds r1, r0, 0\n\
+ ands r0, r5\n\
+ cmp r0, 0x7F\n\
+ bls _080F79CC\n\
+ movs r5, 0x80\n\
+ lsls r5, 1\n\
+ adds r1, r5\n\
+_080F79CC:\n\
+ lsrs r0, r1, 8\n\
+ str r0, [r4, 0xC]\n\
+ mov r0, r8\n\
+ lsls r4, r0, 24\n\
+ lsrs r4, 24\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl sub_80F7310\n\
+ mov r2, r9\n\
+ ldr r1, [r2]\n\
+ ldr r1, [r1, 0x4]\n\
+ add r1, r10\n\
+ strb r0, [r1, 0x11]\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl sub_80F7364\n\
+ mov r4, r9\n\
+ ldr r1, [r4]\n\
+ ldr r1, [r1, 0x4]\n\
+ add r1, r10\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0\n\
+ bge _080F7A02\n\
+ negs r0, r0\n\
+_080F7A02:\n\
+ strb r0, [r1, 0x12]\n\
+ ldr r0, =gContestFinalStandings\n\
+ add r0, r8\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080F7A60\n\
+ mov r5, r9\n\
+ ldr r0, [r5]\n\
+ ldr r0, [r0, 0x4]\n\
+ mov r2, r10\n\
+ adds r1, r2, r0\n\
+ ldr r5, [r1, 0x8]\n\
+ ldrh r3, [r1, 0x8]\n\
+ ldr r4, [r1, 0xC]\n\
+ ldrh r2, [r1, 0xC]\n\
+ ldrb r0, [r1, 0x10]\n\
+ cmp r0, 0\n\
+ beq _080F7A2C\n\
+ lsls r0, r2, 16\n\
+ negs r0, r0\n\
+ lsrs r2, r0, 16\n\
+_080F7A2C:\n\
+ lsls r0, r3, 16\n\
+ asrs r3, r0, 16\n\
+ lsls r0, r2, 16\n\
+ asrs r2, r0, 16\n\
+ adds r0, r3, r2\n\
+ cmp r0, 0x58\n\
+ bne _080F7A60\n\
+ cmp r2, 0\n\
+ ble _080F7A58\n\
+ subs r0, r4, 0x1\n\
+ str r0, [r1, 0xC]\n\
+ b _080F7A60\n\
+ .pool\n\
+_080F7A58:\n\
+ cmp r3, 0\n\
+ ble _080F7A60\n\
+ subs r0, r5, 0x1\n\
+ str r0, [r1, 0x8]\n\
+_080F7A60:\n\
+ movs r4, 0x14\n\
+ add r10, r4\n\
+ movs r5, 0x1\n\
+ add r8, r5\n\
+ mov r0, r8\n\
+ cmp r0, 0x3\n\
+ bgt _080F7A70\n\
+ b _080F78EA\n\
+_080F7A70:\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");
+}
+
+// static void sub_80F7A80(u8 arg0, u8 arg1)
+// {
+// int i;
+// u8 taskId;
+// u8 sp8, spC;
+
+// sp8 = 0;
+// spC = 0;
+// if (!arg0)
+// {
+// u32 var0;
+// for (i = 0; i < 4; i++)
+// {
+// int var1 = gUnknown_0203A034->unk4->unk0[i].unk11;
+// if (arg1 < var1)
+// {
+// int x = var1 + 19;
+// x -= arg1;
+// x--;
+// FillBgTilemapBufferRect_Palette0(1, 0x60B3, x, i * 3 + 5, 1, 1);
+// taskId = CreateTask(sub_80F7CA8, 10);
+// var0 = ((gUnknown_0203A034->unk4->unk0[i].unk8 << 16) / gUnknown_0203A034->unk4->unk0[i].unk11) * (arg1 + 1);
+// var0 &= 0xFFFF;
+// if (var0 > 0x7FFF)
+// var0 += 0x10000;
+
+// gTasks[taskId].data[0] = i;
+// gTasks[taskId].data[1] = var0 >> 16;
+// gUnknown_0203A034->unk0->unk14++;
+// sp8++;
+// }
+// }
+// }
+// else
+// {
+// u32 var0;
+// for (i = 0; i < 4; i++)
+// {
+// int tile;
+// s8 var1 = gUnknown_0203A034->unk4->unk0[i].unk12;
+// tile = gUnknown_0203A034->unk4->unk0[i].unk10 ? 0x60A5 : 0x60A3;
+// if (arg1 < var1)
+// {
+// int thing = ((s8)arg1 - 19);
+// int x = var1 - thing;
+// x--;
+// FillBgTilemapBufferRect_Palette0(1, tile, x, i * 3 + 6, 1, 1);
+// taskId = CreateTask(sub_80F7CA8, 10);
+// var0 = ((gUnknown_0203A034->unk4->unk0[i].unkC << 16) / gUnknown_0203A034->unk4->unk0[i].unk12) * (arg1 + 1);
+// var0 &= 0xFFFF;
+// if (var0 > 0x7FFF)
+// var0 += 0x10000;
+
+// gTasks[taskId].data[0] = i;
+// if (gUnknown_0203A034->unk4->unk0[i].unk10)
+// {
+// gTasks[taskId].data[2] = 1;
+// spC++;
+// }
+// else
+// {
+// sp8++;
+// }
+
+// if (gUnknown_0203A034->unk4->unk0[i].unk10)
+// gTasks[taskId].data[1] = gUnknown_0203A034->unk4->unk0[i].unk8 - (var0 >> 16);
+// else
+// gTasks[taskId].data[1] = gUnknown_0203A034->unk4->unk0[i].unk8 + (var0 >> 16);
+
+// gUnknown_0203A034->unk0->unk14++;
+// }
+// }
+// }
+
+// if (spC)
+// PlaySE(SE_PIN);
+
+// if (sp8)
+// PlaySE(SE_BAN);
+// }
+
+NAKED
+static void sub_80F7A80(u8 arg0, u8 arg1)
+{
+ 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, 0x14\n\
+ lsls r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r8, r1\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x8]\n\
+ movs r3, 0\n\
+ str r3, [sp, 0xC]\n\
+ cmp r0, 0\n\
+ bne _080F7B5C\n\
+ mov r9, r3\n\
+ ldr r4, =gUnknown_0203A034\n\
+ mov r10, r4\n\
+ movs r7, 0xA0\n\
+ lsls r7, 19\n\
+ movs r6, 0\n\
+_080F7AAC:\n\
+ mov r1, r10\n\
+ ldr r0, [r1]\n\
+ ldr r0, [r0, 0x4]\n\
+ adds r0, r6, r0\n\
+ ldrb r2, [r0, 0x11]\n\
+ cmp r8, r2\n\
+ bcs _080F7B2E\n\
+ adds r2, 0x13\n\
+ mov r3, r8\n\
+ subs r2, r3\n\
+ subs r2, 0x1\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ lsrs r3, r7, 24\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ str r0, [sp, 0x4]\n\
+ ldr r1, =0x000060b3\n\
+ bl FillBgTilemapBufferRect_Palette0\n\
+ ldr r0, =sub_80F7CA8\n\
+ movs r1, 0xA\n\
+ bl CreateTask\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ mov r0, r10\n\
+ ldr r4, [r0]\n\
+ ldr r1, [r4, 0x4]\n\
+ adds r1, r6, r1\n\
+ ldr r0, [r1, 0x8]\n\
+ lsls r0, 16\n\
+ ldrb r1, [r1, 0x11]\n\
+ bl __udivsi3\n\
+ mov r1, r8\n\
+ adds r1, 0x1\n\
+ adds r3, r0, 0\n\
+ muls r3, r1\n\
+ ldr r0, =0x0000ffff\n\
+ ands r0, r3\n\
+ ldr r1, =0x00007fff\n\
+ cmp r0, r1\n\
+ bls _080F7B0A\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ adds r3, r1\n\
+_080F7B0A:\n\
+ ldr r1, =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ mov r1, r9\n\
+ strh r1, [r0, 0x8]\n\
+ lsrs r1, r3, 16\n\
+ strh r1, [r0, 0xA]\n\
+ ldr r1, [r4]\n\
+ ldrb r0, [r1, 0x14]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1, 0x14]\n\
+ ldr r0, [sp, 0x8]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x8]\n\
+_080F7B2E:\n\
+ movs r3, 0xC0\n\
+ lsls r3, 18\n\
+ adds r7, r3\n\
+ adds r6, 0x14\n\
+ movs r4, 0x1\n\
+ add r9, r4\n\
+ mov r0, r9\n\
+ cmp r0, 0x3\n\
+ ble _080F7AAC\n\
+ b _080F7C7E\n\
+ .pool\n\
+_080F7B5C:\n\
+ movs r1, 0\n\
+ mov r9, r1\n\
+ mov r10, r1\n\
+ movs r3, 0xC0\n\
+ lsls r3, 19\n\
+ str r3, [sp, 0x10]\n\
+_080F7B68:\n\
+ ldr r4, =gUnknown_0203A034\n\
+ ldr r0, [r4]\n\
+ ldr r0, [r0, 0x4]\n\
+ add r0, r10\n\
+ ldrb r2, [r0, 0x12]\n\
+ ldrb r0, [r0, 0x10]\n\
+ ldr r1, =0x000060a3\n\
+ cmp r0, 0\n\
+ beq _080F7B7C\n\
+ adds r1, 0x2\n\
+_080F7B7C:\n\
+ lsls r0, r2, 24\n\
+ asrs r0, 24\n\
+ cmp r8, r0\n\
+ bge _080F7C64\n\
+ mov r3, r8\n\
+ lsls r2, r3, 24\n\
+ asrs r2, 24\n\
+ subs r2, 0x13\n\
+ subs r2, r0, r2\n\
+ subs r2, 0x1\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ ldr r4, [sp, 0x10]\n\
+ lsrs r3, r4, 24\n\
+ movs r7, 0x1\n\
+ str r7, [sp]\n\
+ str r7, [sp, 0x4]\n\
+ movs r0, 0x1\n\
+ bl FillBgTilemapBufferRect_Palette0\n\
+ ldr r0, =sub_80F7CA8\n\
+ movs r1, 0xA\n\
+ bl CreateTask\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r0, =gUnknown_0203A034\n\
+ ldr r6, [r0]\n\
+ ldr r1, [r6, 0x4]\n\
+ add r1, r10\n\
+ ldr r0, [r1, 0xC]\n\
+ lsls r0, 16\n\
+ ldrb r1, [r1, 0x12]\n\
+ bl __udivsi3\n\
+ mov r1, r8\n\
+ adds r1, 0x1\n\
+ adds r3, r0, 0\n\
+ muls r3, r1\n\
+ ldr r0, =0x0000ffff\n\
+ ands r0, r3\n\
+ ldr r1, =0x00007fff\n\
+ cmp r0, r1\n\
+ bls _080F7BDA\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ adds r3, r1\n\
+_080F7BDA:\n\
+ ldr r1, =gTasks\n\
+ lsls r2, r5, 2\n\
+ adds r0, r2, r5\n\
+ lsls r0, 3\n\
+ adds r4, r0, r1\n\
+ mov r0, r9\n\
+ strh r0, [r4, 0x8]\n\
+ ldr r0, [r6, 0x4]\n\
+ add r0, r10\n\
+ ldrb r0, [r0, 0x10]\n\
+ adds r6, r1, 0\n\
+ cmp r0, 0\n\
+ beq _080F7C1C\n\
+ strh r7, [r4, 0xC]\n\
+ ldr r0, [sp, 0xC]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0xC]\n\
+ b _080F7C26\n\
+ .pool\n\
+_080F7C1C:\n\
+ ldr r0, [sp, 0x8]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x8]\n\
+_080F7C26:\n\
+ ldr r1, =gUnknown_0203A034\n\
+ ldr r0, [r1]\n\
+ ldr r0, [r0, 0x4]\n\
+ mov r4, r10\n\
+ adds r1, r4, r0\n\
+ ldrb r0, [r1, 0x10]\n\
+ ldr r4, =gUnknown_0203A034\n\
+ cmp r0, 0\n\
+ beq _080F7C4C\n\
+ adds r0, r2, r5\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ lsrs r2, r3, 16\n\
+ ldr r1, [r1, 0x8]\n\
+ subs r1, r2\n\
+ b _080F7C58\n\
+ .pool\n\
+_080F7C4C:\n\
+ adds r0, r2, r5\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ lsrs r2, r3, 16\n\
+ ldr r1, [r1, 0x8]\n\
+ adds r1, r2\n\
+_080F7C58:\n\
+ strh r1, [r0, 0xA]\n\
+ ldr r0, [r4]\n\
+ ldr r1, [r0]\n\
+ ldrb r0, [r1, 0x14]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1, 0x14]\n\
+_080F7C64:\n\
+ movs r0, 0x14\n\
+ add r10, r0\n\
+ ldr r1, [sp, 0x10]\n\
+ movs r3, 0xC0\n\
+ lsls r3, 18\n\
+ adds r1, r3\n\
+ str r1, [sp, 0x10]\n\
+ movs r4, 0x1\n\
+ add r9, r4\n\
+ mov r0, r9\n\
+ cmp r0, 0x3\n\
+ bgt _080F7C7E\n\
+ b _080F7B68\n\
+_080F7C7E:\n\
+ ldr r1, [sp, 0xC]\n\
+ cmp r1, 0\n\
+ beq _080F7C8A\n\
+ movs r0, 0x16\n\
+ bl PlaySE\n\
+_080F7C8A:\n\
+ ldr r3, [sp, 0x8]\n\
+ cmp r3, 0\n\
+ beq _080F7C96\n\
+ movs r0, 0x15\n\
+ bl PlaySE\n\
+_080F7C96:\n\
+ add sp, 0x14\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");
+}
+
+#ifdef NONMATCHING
+void sub_80F7CA8(u8 taskId)
+{
+ register int r4 asm("r4");
+ int r9;
+ u8 r6;
+ s16 r7;
+ s16 r12;
+ int i;
+ u8 var0;
+ u16 tileNum;
+
+ r4 = 0;
+ r9 = 0;
+ r6 = gTasks[taskId].data[0];
+ r7 = gTasks[taskId].data[1];
+ r12 = gTasks[taskId].data[2];
+ if (r12)
+ {
+ if (gUnknown_0203A034->unk0->unkC[r6] <= 0)
+ r4 = 1;
+ }
+ else
+ {
+ if (gUnknown_0203A034->unk0->unkC[r6] > 87)
+ r4 = 1;
+ }
+
+ if (gUnknown_0203A034->unk0->unkC[r6] == r7)
+ r9 = 1;
+
+ if (!r9)
+ {
+ if (r4)
+ gUnknown_0203A034->unk0->unkC[r6] = r7;
+ else if (r12)
+ gUnknown_0203A034->unk0->unkC[r6] = gUnknown_0203A034->unk0->unkC[r6] - 1;
+ else
+ gUnknown_0203A034->unk0->unkC[r6] = gUnknown_0203A034->unk0->unkC[r6] + 1;
+ }
+
+ if (!r4 && !r9)
+ {
+ for (i = 0; i < 11; i++)
+ {
+ if (gUnknown_0203A034->unk0->unkC[r6] >= (i + 1) * 8)
+ {
+ var0 = 8;
+ }
+ else if (gUnknown_0203A034->unk0->unkC[r6] >= i * 8)
+ {
+ int var2 = gUnknown_0203A034->unk0->unkC[r6];
+ int var1 = var2;
+ if (var1 < 0)
+ var1 += 7;
+
+ var0 = var2 - ((var1 >> 3) << 3);
+ }
+ else
+ {
+ var0 = 0;
+ }
+
+ if (var0 < 4)
+ tileNum = 0x504C;
+ else
+ tileNum = 0x5057;
+
+ FillBgTilemapBufferRect_Palette0(2, tileNum + var0, i + 7, r6 * 3 + 6, 1, 1);
+ }
+ }
+
+ if (r9)
+ {
+ gUnknown_0203A034->unk0->unk14--;
+ DestroyTask(taskId);
+ }
+}
+#else
+NAKED
+void sub_80F7CA8(u8 taskId)
+{
+ asm_unified("\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ sub sp, 0x8\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ movs r4, 0\n\
+ mov r9, r4\n\
+ ldr r1, =gTasks\n\
+ lsls r0, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrb r6, [r0, 0x8]\n\
+ ldrh r7, [r0, 0xA]\n\
+ ldrh r1, [r0, 0xC]\n\
+ mov r12, r1\n\
+ movs r2, 0xC\n\
+ ldrsh r0, [r0, r2]\n\
+ cmp r0, 0\n\
+ beq _080F7CF8\n\
+ ldr r2, =gUnknown_0203A034\n\
+ ldr r0, [r2]\n\
+ ldr r0, [r0]\n\
+ lsls r1, r6, 1\n\
+ adds r0, 0xC\n\
+ adds r0, r1\n\
+ movs r3, 0\n\
+ ldrsh r0, [r0, r3]\n\
+ adds r5, r1, 0\n\
+ cmp r0, 0\n\
+ bgt _080F7D10\n\
+ b _080F7D0E\n\
+ .pool\n\
+_080F7CF8:\n\
+ ldr r2, =gUnknown_0203A034\n\
+ ldr r0, [r2]\n\
+ ldr r0, [r0]\n\
+ lsls r1, r6, 1\n\
+ adds r0, 0xC\n\
+ adds r0, r1\n\
+ movs r3, 0\n\
+ ldrsh r0, [r0, r3]\n\
+ adds r5, r1, 0\n\
+ cmp r0, 0x57\n\
+ ble _080F7D10\n\
+_080F7D0E:\n\
+ movs r4, 0x1\n\
+_080F7D10:\n\
+ ldr r0, [r2]\n\
+ ldr r0, [r0]\n\
+ adds r0, 0xC\n\
+ adds r2, r0, r5\n\
+ ldrh r3, [r2]\n\
+ movs r0, 0\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r7, 16\n\
+ asrs r0, 16\n\
+ cmp r1, r0\n\
+ bne _080F7D2A\n\
+ movs r1, 0x1\n\
+ mov r9, r1\n\
+_080F7D2A:\n\
+ mov r0, r9\n\
+ cmp r0, 0\n\
+ bne _080F7D4A\n\
+ cmp r4, 0\n\
+ beq _080F7D3C\n\
+ strh r7, [r2]\n\
+ b _080F7D4A\n\
+ .pool\n\
+_080F7D3C:\n\
+ mov r1, r12\n\
+ cmp r1, 0\n\
+ beq _080F7D46\n\
+ subs r0, r3, 0x1\n\
+ b _080F7D48\n\
+_080F7D46:\n\
+ adds r0, r3, 0x1\n\
+_080F7D48:\n\
+ strh r0, [r2]\n\
+_080F7D4A:\n\
+ cmp r4, 0\n\
+ bne _080F7DC4\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ bne _080F7DCA\n\
+ movs r2, 0\n\
+_080F7D56:\n\
+ ldr r0, =gUnknown_0203A034\n\
+ ldr r0, [r0]\n\
+ ldr r0, [r0]\n\
+ adds r0, 0xC\n\
+ adds r0, r5\n\
+ movs r1, 0\n\
+ ldrsh r3, [r0, r1]\n\
+ adds r0, r2, 0x1\n\
+ lsls r1, r0, 3\n\
+ adds r4, r0, 0\n\
+ cmp r3, r1\n\
+ blt _080F7D78\n\
+ movs r0, 0x8\n\
+ b _080F7D94\n\
+ .pool\n\
+_080F7D78:\n\
+ lsls r0, r2, 3\n\
+ cmp r3, r0\n\
+ blt _080F7D92\n\
+ adds r0, r3, 0\n\
+ cmp r3, 0\n\
+ bge _080F7D86\n\
+ adds r0, r3, 0x7\n\
+_080F7D86:\n\
+ asrs r0, 3\n\
+ lsls r0, 3\n\
+ subs r0, r3, r0\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ b _080F7D94\n\
+_080F7D92:\n\
+ movs r0, 0\n\
+_080F7D94:\n\
+ cmp r0, 0x3\n\
+ bhi _080F7DA0\n\
+ ldr r3, =0x0000504c\n\
+ b _080F7DA2\n\
+ .pool\n\
+_080F7DA0:\n\
+ ldr r3, =0x00005057\n\
+_080F7DA2:\n\
+ adds r1, r0, r3\n\
+ adds r2, 0x7\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ adds r3, r5, r6\n\
+ adds r3, 0x6\n\
+ lsls r3, 24\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ str r0, [sp, 0x4]\n\
+ movs r0, 0x2\n\
+ lsrs r3, 24\n\
+ bl FillBgTilemapBufferRect_Palette0\n\
+ adds r2, r4, 0\n\
+ cmp r2, 0xA\n\
+ ble _080F7D56\n\
+_080F7DC4:\n\
+ mov r0, r9\n\
+ cmp r0, 0\n\
+ beq _080F7DDC\n\
+_080F7DCA:\n\
+ ldr r0, =gUnknown_0203A034\n\
+ ldr r0, [r0]\n\
+ ldr r1, [r0]\n\
+ ldrb r0, [r1, 0x14]\n\
+ subs r0, 0x1\n\
+ strb r0, [r1, 0x14]\n\
+ mov r0, r8\n\
+ bl DestroyTask\n\
+_080F7DDC:\n\
+ add sp, 0x8\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool");
+}
+#endif // NONMATCHING
+
+static void sub_80F7DF4(void)
+{
+ gUnknown_0203A034 = AllocZeroed(sizeof(*gUnknown_0203A034));
+ gUnknown_0203A034->unk0 = AllocZeroed(sizeof(*gUnknown_0203A034->unk0));
+ gUnknown_0203A034->unk4 = AllocZeroed(sizeof(*gUnknown_0203A034->unk4));
+ gUnknown_0203A034->unk8 = AllocZeroed(BG_SCREEN_SIZE);
+ gUnknown_0203A034->unkC[0] = AllocZeroed(BG_SCREEN_SIZE);
+ gUnknown_0203A034->unkC[1] = AllocZeroed(BG_SCREEN_SIZE);
+ gUnknown_0203A034->unkC[2] = AllocZeroed(BG_SCREEN_SIZE);
+ gUnknown_0203A034->unkC[3] = AllocZeroed(BG_SCREEN_SIZE);
+ gUnknown_0203A034->unk1C = AllocZeroed(0x1000);
+ AllocateMonSpritesGfx();
+}
+
+static void sub_80F7E64(void)
+{
+ FREE_AND_SET_NULL(gUnknown_0203A034->unk0);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unk4);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unk8);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unkC[0]);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unkC[1]);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unkC[2]);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unkC[3]);
+ FREE_AND_SET_NULL(gUnknown_0203A034->unk1C);
+ FREE_AND_SET_NULL(gUnknown_0203A034);
+ FreeMonSpritesGfx();
+}
+
+static void sub_80F7ED0(int windowId, u8 *str, int arg2)
+{
+ struct TextPrinterTemplate textPrinter;
+ textPrinter.currentChar = str;
+ textPrinter.windowId = windowId;
+ textPrinter.fontId = 7;
+ textPrinter.x = arg2;
+ textPrinter.y = 2;
+ textPrinter.currentX = arg2;
+ textPrinter.currentY = 2;
+ textPrinter.letterSpacing = 0;
+ textPrinter.lineSpacing = 0;
+ textPrinter.unk = 0;
+ textPrinter.fgColor = 1;
+ textPrinter.bgColor = 0;
+ textPrinter.shadowColor = 8;
+ AddTextPrinter(&textPrinter, 0, NULL);
+ PutWindowTilemap(windowId);
+}
+
+void sub_80F7F30(void)
+{
+ u8 result = sub_80DAE0C(&gPlayerParty[gContestMonPartyIndex]);
+ if (result)
+ {
+ sub_80DAB8C(gSpecialVar_ContestCategory, gSpecialVar_ContestRank);
+ sub_80DB09C(gSpecialVar_ContestCategory);
+ }
+
+ gSpecialVar_Result = result;
+}
+
+u16 sub_80F7F7C(void)
+{
+ u16 result = 0;
+ struct Pokemon *mon = &gPlayerParty[gContestMonPartyIndex];
+ switch (gSpecialVar_ContestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ if (GetMonData(mon, MON_DATA_COOL_RIBBON) > gSpecialVar_ContestRank)
+ result = 1;
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ if (GetMonData(mon, MON_DATA_BEAUTY_RIBBON) > gSpecialVar_ContestRank)
+ result = 1;
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ if (GetMonData(mon, MON_DATA_CUTE_RIBBON) > gSpecialVar_ContestRank)
+ result = 1;
+ break;
+ case CONTEST_CATEGORY_SMART:
+ if (GetMonData(mon, MON_DATA_SMART_RIBBON) > gSpecialVar_ContestRank)
+ result = 1;
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ if (GetMonData(mon, MON_DATA_TOUGH_RIBBON) > gSpecialVar_ContestRank)
+ result = 1;
+ break;
+ }
+
+ return result;
+}
+
+void sub_80F7FFC(void)
+{
+ u8 ribbonData;
+
+ if (gContestFinalStandings[gContestPlayerMonIndex] != 0)
+ return;
+
+ switch (gSpecialVar_ContestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ ribbonData = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_COOL_RIBBON);
+ if (ribbonData <= gSpecialVar_ContestRank && ribbonData < 4)
+ {
+ ribbonData++;
+ SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_COOL_RIBBON, &ribbonData);
+ if (GetRibbonCount(&gPlayerParty[gContestMonPartyIndex]) > 4)
+ sub_80EE4DC(&gPlayerParty[gContestMonPartyIndex], MON_DATA_COOL_RIBBON);
+ }
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ ribbonData = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_BEAUTY_RIBBON);
+ if (ribbonData <= gSpecialVar_ContestRank && ribbonData < 4)
+ {
+ ribbonData++;
+ SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_BEAUTY_RIBBON, &ribbonData);
+ if (GetRibbonCount(&gPlayerParty[gContestMonPartyIndex]) > 4)
+ sub_80EE4DC(&gPlayerParty[gContestMonPartyIndex], MON_DATA_BEAUTY_RIBBON);
+ }
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ ribbonData = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_CUTE_RIBBON);
+ if (ribbonData <= gSpecialVar_ContestRank && ribbonData < 4)
+ {
+ ribbonData++;
+ SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_CUTE_RIBBON, &ribbonData);
+ if (GetRibbonCount(&gPlayerParty[gContestMonPartyIndex]) > 4)
+ sub_80EE4DC(&gPlayerParty[gContestMonPartyIndex], MON_DATA_CUTE_RIBBON);
+ }
+ break;
+ case CONTEST_CATEGORY_SMART:
+ ribbonData = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_SMART_RIBBON);
+ if (ribbonData <= gSpecialVar_ContestRank && ribbonData < 4)
+ {
+ ribbonData++;
+ SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_SMART_RIBBON, &ribbonData);
+ if (GetRibbonCount(&gPlayerParty[gContestMonPartyIndex]) > 4)
+ sub_80EE4DC(&gPlayerParty[gContestMonPartyIndex], MON_DATA_SMART_RIBBON);
+ }
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ ribbonData = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_TOUGH_RIBBON);
+ if (ribbonData <= gSpecialVar_ContestRank && ribbonData < 4)
+ {
+ ribbonData++;
+ SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_TOUGH_RIBBON, &ribbonData);
+ if (GetRibbonCount(&gPlayerParty[gContestMonPartyIndex]) > 4)
+ sub_80EE4DC(&gPlayerParty[gContestMonPartyIndex], MON_DATA_TOUGH_RIBBON);
+ }
+ break;
+ }
+}
+
+void sub_80F8264(void)
+{
+ StringCopy(gStringVar1, gContestMons[gSpecialVar_0x8006].trainerName);
+ sub_81DB5AC(gStringVar1);
+}
+
+void sub_80F8290(void)
+{
+ StringCopy(gStringVar3, gContestMons[gSpecialVar_0x8006].nickname);
+}
+
+void sub_80F82B4(void)
+{
+ u8 i;
+ u8 count;
+
+ for (i = 0, count = 0; i < 4; i++)
+ {
+ if (gContestMonConditions[gSpecialVar_0x8006] < gContestMonConditions[i])
+ count++;
+ }
+
+ gSpecialVar_0x8004 = count;
+}
+
+void sub_80F82FC(void)
+{
+ gSpecialVar_0x8004 = gContestMonConditions[gSpecialVar_0x8006];
+}
+
+void sub_80F831C(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4 && gContestFinalStandings[i] != 0; i++)
+ ;
+
+ gSpecialVar_0x8005 = i;
+}
+
+void sub_80F834C(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4 && gContestFinalStandings[i] != 0; i++)
+ ;
+
+ StringCopy(gStringVar3, gContestMons[i].trainerName);
+ sub_81DB5AC(gStringVar3);
+}
+
+void sub_80F8390(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4 && gContestFinalStandings[i] != 0; i++)
+ ;
+
+ StringCopy(gStringVar1, gContestMons[i].nickname);
+}
+
+void sub_80F83D0(void)
+{
+ SetMainCallback2(sub_80D7B24);
+}
+
+static void sub_80F83E0(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(taskId);
+ SetMainCallback2(sub_80F83D0);
+ }
+}
+
+void sub_80F840C(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(sub_80F83E0, 10);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+}
+
+void sub_80F8438(void)
+{
+ gSpecialVar_0x8004 = gContestMons[gSpecialVar_0x8006].species;
+}
+
+static void sub_80F8458(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(taskId);
+ SetMainCallback2(sub_80F5B00);
+ }
+}
+
+void sub_80F8484(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(sub_80F8458, 10);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+}
+
+void sub_80F84B0(void)
+{
+ gSpecialVar_0x8004 = gContestPlayerMonIndex;
+}
+
+void sub_80F84C4(u8 taskId)
+{
+ u8 newTaskId;
+ ScriptContext2_Enable();
+ newTaskId = CreateTask(sub_80FC580, 0);
+ SetTaskFuncWithFollowupFunc(newTaskId, sub_80FC580, sub_80F8508);
+ gTasks[newTaskId].data[9] = taskId;
+}
+
+static void sub_80F8508(u8 taskId)
+{
+ if (gIsLinkContest & 0x4)
+ {
+ sub_80DA8C8(gContestMonPartyIndex);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FC6BC, sub_80F8568);
+ }
+ else
+ {
+ sub_80DA8C8(gContestMonPartyIndex);
+ gTasks[taskId].func = sub_81D9DE4;
+ }
+}
+
+static void sub_80F8568(u8 taskId)
+{
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FC804, sub_80F8584);
+}
+
+static void sub_80F8584(u8 taskId)
+{
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FCE48, sub_80F85A0);
+}
+
+static void sub_80F85A0(u8 taskId)
+{
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FC894, sub_80F85BC);
+}
+
+#ifdef NONMATCHING
+static void sub_80F85BC(u8 taskId)
+{
+ u32 i;
+ u8 sp0[4];
+ u8 sp4[4];
+
+ memset(sp0, 0, sizeof(sp0));
+ memset(sp4, 0, sizeof(sp4));
+
+ for (i = 0; i < gNumLinkContestPlayers; i++)
+ sp0[i] = gTasks[taskId].data[i + 1];
+
+ for (i = 0; i < gNumLinkContestPlayers; i++)
+ {
+ if (sp0[0] != sp0[i + 1])
+ break;
+ }
+
+ if (i == gNumLinkContestPlayers)
+ gSpecialVar_0x8004 = 0;
+ else
+ gSpecialVar_0x8004 = 1;
+
+ for (i = 0; i < gNumLinkContestPlayers; i++)
+ sp4[i] = gTasks[taskId].data[i + 5];
+
+ gUnknown_02039F2B = sub_80F86E0(sp4);
+ sub_80DB09C(gSpecialVar_ContestCategory);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FCF40, sub_80F86B8);
+}
+#else
+NAKED
+static void sub_80F85BC(u8 taskId)
+{
+ asm_unified("\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ sub sp, 0x8\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ str r0, [sp, 0x4]\n\
+ movs r3, 0\n\
+ ldr r5, =gNumLinkContestPlayers\n\
+ mov r12, r5\n\
+ ldr r0, =gSpecialVar_0x8004\n\
+ mov r9, r0\n\
+ add r1, sp, 0x4\n\
+ mov r8, r1\n\
+ ldrb r0, [r5]\n\
+ cmp r3, r0\n\
+ bcs _080F8606\n\
+ lsls r0, r6, 2\n\
+ adds r0, r6\n\
+ lsls r4, r0, 3\n\
+ ldr r7, =gTasks + 0x8\n\
+_080F85EC:\n\
+ mov r1, sp\n\
+ adds r2, r1, r3\n\
+ adds r1, r3, 0x1\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ strb r0, [r2]\n\
+ lsls r1, 24\n\
+ lsrs r3, r1, 24\n\
+ ldrb r0, [r5]\n\
+ cmp r3, r0\n\
+ bcc _080F85EC\n\
+_080F8606:\n\
+ movs r3, 0\n\
+ mov r1, r12\n\
+ ldrb r0, [r1]\n\
+ cmp r3, r0\n\
+ bcs _080F862A\n\
+ adds r4, r0, 0\n\
+ mov r2, sp\n\
+_080F8614:\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, r4\n\
+ bcs _080F862A\n\
+ mov r0, sp\n\
+ adds r1, r0, r3\n\
+ ldrb r0, [r2]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ beq _080F8614\n\
+_080F862A:\n\
+ mov r1, r12\n\
+ ldrb r1, [r1]\n\
+ cmp r3, r1\n\
+ bne _080F8644\n\
+ movs r0, 0\n\
+ b _080F8646\n\
+ .pool\n\
+_080F8644:\n\
+ movs r0, 0x1\n\
+_080F8646:\n\
+ mov r1, r9\n\
+ strh r0, [r1]\n\
+ movs r3, 0\n\
+ mov r4, r12\n\
+ ldrb r0, [r4]\n\
+ cmp r3, r0\n\
+ bcs _080F8678\n\
+ mov r5, r8\n\
+ lsls r0, r6, 2\n\
+ adds r0, r6\n\
+ lsls r2, r0, 3\n\
+ ldr r7, =gTasks + 0x8\n\
+_080F865E:\n\
+ adds r1, r5, r3\n\
+ adds r0, r3, 0x5\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ strb r0, [r1]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ ldrb r1, [r4]\n\
+ cmp r3, r1\n\
+ bcc _080F865E\n\
+_080F8678:\n\
+ mov r0, r8\n\
+ bl sub_80F86E0\n\
+ ldr r1, =gUnknown_02039F2B\n\
+ strb r0, [r1]\n\
+ ldr r0, =gSpecialVar_ContestCategory\n\
+ ldrb r0, [r0]\n\
+ bl sub_80DB09C\n\
+ ldr r1, =sub_80FCF40\n\
+ ldr r2, =sub_80F86B8\n\
+ adds r0, r6, 0\n\
+ bl SetTaskFuncWithFollowupFunc\n\
+ add sp, 0x8\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool");
+}
+#endif // NONMATCHING
+
+static void sub_80F86B8(u8 taskId)
+{
+ sub_80DCE58(0);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FCFD0, sub_80F8714);
+}
+
+u8 sub_80F86E0(u8 *arg0)
+{
+ int i;
+ u8 result = 0;
+
+ for (i = 1; i < gNumLinkContestPlayers; i++)
+ {
+ if (arg0[result] < arg0[i])
+ result = i;
+ }
+
+ return result;
+}
+
+void sub_80F8714(u8 taskId)
+{
+ int i;
+
+ if (gSpecialVar_0x8004 == 1)
+ {
+ if (IsLinkTaskFinished())
+ gTasks[taskId].func = sub_80F878C;
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ StringGetEnd10(gContestMons[i].nickname);
+
+ DestroyTask(taskId);
+ SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
+ ScriptContext2_Disable();
+ EnableBothScriptContexts();
+ }
+}
+
+static void sub_80F878C(u8 taskId)
+{
+ sub_800AC34();
+ gTasks[taskId].func = sub_80F87B4;
+}
+
+static void sub_80F87B4(u8 taskId)
+{
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ EnableBothScriptContexts();
+ }
+}
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 0ed169a77..29f3c871d 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -20,10 +20,11 @@
#include "window.h"
#include "constants/rgb.h"
-extern u16 (*gUnknown_03006190)[][32];
-extern struct ContestWinner *gUnknown_030061C0;
-extern u16 *gContestPaintingMonPalette;
-extern struct Unk030061A0 gUnknown_030061A0;
+// IWRAM common
+u16 (*gUnknown_03006190)[][32];
+struct Unk030061A0 gUnknown_030061A0;
+struct ContestWinner *gUnknown_030061C0;
+u16 *gContestPaintingMonPalette;
// IWRAM bss
IWRAM_DATA u8 gContestPaintingState;
@@ -103,7 +104,7 @@ const u8 *const gContestRankTextPointers[] =
gContestLink,
};
-const struct BgTemplate gUnknown_085B07E8[] =
+const struct BgTemplate gUnknown_085B07E8[] =
{
{
.bg = 1,
@@ -116,7 +117,7 @@ const struct BgTemplate gUnknown_085B07E8[] =
},
};
-const struct WindowTemplate gUnknown_085B07EC =
+const struct WindowTemplate gUnknown_085B07EC =
{
.bg = 1,
.tilemapLeft = 2,
@@ -153,10 +154,10 @@ const struct OamData gUnknown_085B0830 =
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 1,
.bpp = ST_OAM_8BPP,
- .shape = ST_OAM_SQUARE,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -278,7 +279,7 @@ static void InitContestPaintingWindow(void)
SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE));
gContestPaintingWindowId = AddWindow(&gUnknown_085B07EC);
DeactivateAllTextPrinters();
- FillWindowPixelBuffer(gContestPaintingWindowId, 0);
+ FillWindowPixelBuffer(gContestPaintingWindowId, PIXEL_FILL(0));
PutWindowTilemap(gContestPaintingWindowId);
CopyWindowToVram(gContestPaintingWindowId, 3);
ShowBg(1);
@@ -553,7 +554,7 @@ static void sub_8130430(u8 arg0, u8 arg1)
break;
}
-#define VRAM_PICTURE_DATA(x, y) (((u16 *)(VRAM + 0x6000))[(y) * 32 + (x)])
+#define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)])
// Set the background
for (y = 0; y < 20; y++)
@@ -578,7 +579,7 @@ static void sub_8130430(u8 arg0, u8 arg1)
else if (arg0 < 8)
{
RLUnCompVram(gPictureFrameTiles_5, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_5, (void *)(VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTilemap_5, (void *)(BG_SCREEN_ADDR(12)));
}
else
{
@@ -586,23 +587,23 @@ static void sub_8130430(u8 arg0, u8 arg1)
{
case CONTEST_CATEGORY_COOL:
RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_0, (void *)(VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTilemap_0, (void *)(BG_SCREEN_ADDR(12)));
break;
case CONTEST_CATEGORY_BEAUTY:
RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_1, (void *)(VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTilemap_1, (void *)(BG_SCREEN_ADDR(12)));
break;
case CONTEST_CATEGORY_CUTE:
RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_2, (void *)(VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTilemap_2, (void *)(BG_SCREEN_ADDR(12)));
break;
case CONTEST_CATEGORY_SMART:
RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_3, (void *)(VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTilemap_3, (void *)(BG_SCREEN_ADDR(12)));
break;
case CONTEST_CATEGORY_TOUGH:
RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_4, (void *)(VRAM + 0x6000));
+ RLUnCompVram(gPictureFrameTilemap_4, (void *)(BG_SCREEN_ADDR(12)));
break;
}
}
diff --git a/src/contest_painting_effects.c b/src/contest_painting_effects.c
index 187a0f196..a791df65c 100644
--- a/src/contest_painting_effects.c
+++ b/src/contest_painting_effects.c
@@ -3,38 +3,62 @@
#include "contest_painting.h"
#include "constants/rgb.h"
-extern u8 gUnknown_03006164;
-extern u16 (*gUnknown_03006168)[][32];
-extern u8 gUnknown_0300616C;
-extern u8 gUnknown_03006170;
-extern u8 gUnknown_03006174;
-extern u8 gUnknown_03006178;
-extern u8 gUnknown_0300617C;
-extern u8 gUnknown_03006180;
-
-// this file's functions
-void sub_8125230(void);
-void sub_81252E8(void);
-void sub_81254E0(void);
-void sub_8125630(void);
-void sub_8125448(void);
-void sub_81257F8(void);
-void sub_81258A0(void);
-void sub_81256C8(void);
-void sub_8125250(void);
-void sub_81253A4(u8);
-void sub_81250B8(u8);
-void sub_8125170(u8);
-void sub_8125954(u16);
-u16 ConvertColorToGrayscale(u16*);
-u16 sub_8125E18(u16*, u16*, u16*);
-u16 ConvertCoolColor(u16*, u8);
-u16 ConvertToBlackOrWhite(u16*);
-u16 sub_8125C98(u16*, u16*);
-u16 InvertColor(u16*);
-u16 sub_8125F38(u16*, u16*, u16*);
-u16 sub_8125CF4(u16*, u16*);
-u16 GetCoolColorFromPersonality(u8);
+struct Unk8125954
+{
+ u8 unk0;
+ u8 unk1;
+ u16 unk2;
+};
+
+// IWRAM common
+u8 gUnknown_03006164;
+u16 (*gUnknown_03006168)[][32];
+u8 gUnknown_0300616C;
+u8 gUnknown_03006170;
+u8 gUnknown_03006174;
+u8 gUnknown_03006178;
+u8 gUnknown_0300617C;
+u8 gUnknown_03006180;
+u16 *gUnknown_03006184;
+u16 gUnknown_03006188;
+
+static void sub_8125230(void);
+static void sub_81252E8(void);
+static void sub_81254E0(void);
+static void sub_8125630(void);
+static void sub_8125448(void);
+static void sub_81257F8(void);
+static void sub_81258A0(void);
+static void sub_81256C8(void);
+static void sub_8125250(void);
+static void sub_81253A4(u8);
+static void sub_81250B8(u8);
+static void sub_8125170(u8);
+static void sub_8125954(u16);
+static u16 ConvertColorToGrayscale(u16*);
+static u16 sub_8125E18(u16*, u16*, u16*);
+static u16 ConvertCoolColor(u16*, u8);
+static u16 ConvertToBlackOrWhite(u16*);
+static u16 sub_8125C98(u16*, u16*);
+static u16 InvertColor(u16*);
+static u16 sub_8125F38(u16*, u16*, u16*);
+static u16 sub_8125CF4(u16*, u16*);
+static u16 GetCoolColorFromPersonality(u8);
+static void sub_81263A4(bool8);
+static void sub_8126270(void);
+static void sub_8126714(void);
+static void sub_8126370(void);
+static void sub_8126664(void);
+static void sub_8126334(void);
+static void sub_81265B4(void);
+static void sub_8126318(void);
+static void sub_81264FC(void);
+static u16 sub_81267C4(u16*);
+static u16 sub_8126908(u16*);
+static u16 sub_812693C(u16*);
+static u16 sub_8126838(u16*);
+
+extern const u8 gUnknown_085A1F94[][3];
void sub_8124F2C(struct Unk030061A0 *info)
{
@@ -101,7 +125,7 @@ void sub_8124F2C(struct Unk030061A0 *info)
}
}
-void sub_81250B8(u8 a0) // it changes palette someway somehow... .__.
+static void sub_81250B8(u8 a0) // it changes palette someway somehow... .__.
{
u8 i, j;
@@ -124,7 +148,7 @@ void sub_81250B8(u8 a0) // it changes palette someway somehow... .__.
}
}
-void sub_8125170(u8 a0)
+static void sub_8125170(u8 a0)
{
u8 i, j;
@@ -146,14 +170,14 @@ void sub_8125170(u8 a0)
}
}
-void sub_8125230(void)
+static void sub_8125230(void)
{
u32 i;
for (i = 0; i < 3200; i++)
sub_8125954(i);
}
-void sub_8125250(void)
+static void sub_8125250(void)
{
u8 i, j;
@@ -171,7 +195,7 @@ void sub_8125250(void)
}
}
-void sub_81252E8(void)
+static void sub_81252E8(void)
{
u8 i, j;
@@ -197,7 +221,7 @@ void sub_81252E8(void)
}
}
-void sub_81253A4(u8 arg0)
+static void sub_81253A4(u8 arg0)
{
u8 i, j;
@@ -215,7 +239,7 @@ void sub_81253A4(u8 arg0)
}
}
-void sub_8125448(void)
+static void sub_8125448(void)
{
u8 i, j;
@@ -233,7 +257,7 @@ void sub_8125448(void)
}
}
-void sub_81254E0(void)
+static void sub_81254E0(void)
{
u8 i, j;
u16 *palette;
@@ -267,7 +291,7 @@ void sub_81254E0(void)
}
}
-void sub_8125630(void)
+static void sub_8125630(void)
{
u8 i, j;
@@ -285,7 +309,7 @@ void sub_8125630(void)
}
}
-void sub_81256C8(void)
+static void sub_81256C8(void)
{
u8 i, j;
u16 *palette;
@@ -346,7 +370,7 @@ void sub_81256C8(void)
}
}
-void sub_81257F8(void)
+static void sub_81257F8(void)
{
u8 i, j;
@@ -366,7 +390,7 @@ void sub_81257F8(void)
}
}
-void sub_81258A0(void)
+static void sub_81258A0(void)
{
u8 i, j;
@@ -386,16 +410,7 @@ void sub_81258A0(void)
}
}
-struct Unk8125954
-{
- u8 unk0;
- u8 unk1;
- u16 unk2;
-};
-
-extern const u8 gUnknown_085A1F94[][3];
-
-void sub_8125954(u16 arg0)
+static void sub_8125954(u16 arg0)
{
u8 i;
u8 r5, r9;
@@ -484,7 +499,7 @@ void sub_8125954(u16 arg0)
}
}
-u16 ConvertColorToGrayscale(u16 *color)
+static u16 ConvertColorToGrayscale(u16 *color)
{
s32 clr = *color;
s32 r = clr & 0x1F;
@@ -496,7 +511,7 @@ u16 ConvertColorToGrayscale(u16 *color)
// The dark colors are the colored edges of the Cool painting effect.
// Everything else is white.
-u16 ConvertCoolColor(u16 *color, u8 personality)
+static u16 ConvertCoolColor(u16 *color, u8 personality)
{
u16 red = *color & 0x1F;
u16 green = (*color >> 5) & 0x1F;
@@ -510,7 +525,7 @@ u16 ConvertCoolColor(u16 *color, u8 personality)
// Based on the given value, which comes from the first 8 bits of
// the mon's personality value, return a color.
-u16 GetCoolColorFromPersonality(u8 personality)
+static u16 GetCoolColorFromPersonality(u8 personality)
{
u16 red = 0;
u16 green = 0;
@@ -561,7 +576,7 @@ u16 GetCoolColorFromPersonality(u8 personality)
return RGB2(red, green, blue);
}
-u16 ConvertToBlackOrWhite(u16 *color)
+static u16 ConvertToBlackOrWhite(u16 *color)
{
u16 red = *color & 0x1F;
u16 green = (*color >> 5) & 0x1F;
@@ -573,7 +588,7 @@ u16 ConvertToBlackOrWhite(u16 *color)
return RGB_WHITE;
}
-u16 sub_8125C98(u16 *colorA, u16 *colorB)
+static u16 sub_8125C98(u16 *colorA, u16 *colorB)
{
if (*colorA)
{
@@ -588,7 +603,7 @@ u16 sub_8125C98(u16 *colorA, u16 *colorB)
return RGB_BLACK;
}
-u16 InvertColor(u16 *color)
+static u16 InvertColor(u16 *color)
{
u16 red = *color & 0x1F;
u16 green = (*color >> 5) & 0x1F;
@@ -601,7 +616,7 @@ u16 InvertColor(u16 *color)
return RGB2(red, green, blue);
}
-u16 sub_8125CF4(u16 *a0, u16 *a1)
+static u16 sub_8125CF4(u16 *a0, u16 *a1)
{
u16 sp0[2][3];
u16 spC[3];
@@ -657,7 +672,7 @@ u16 sub_8125CF4(u16 *a0, u16 *a1)
return RGB2(r, g, b);
}
-u16 sub_8125E18(u16 * a0, u16 * a1, u16 * a2)
+static u16 sub_8125E18(u16 * a0, u16 * a1, u16 * a2)
{
u16 red, green, blue;
u16 avg0, avg1, avg2;
@@ -701,7 +716,7 @@ u16 sub_8125E18(u16 * a0, u16 * a1, u16 * a2)
return RGB2(red, green, blue);
}
-u16 sub_8125F38(u16 *a0, u16 *a1, u16 *a2)
+static u16 sub_8125F38(u16 *a0, u16 *a1, u16 *a2)
{
u16 red, green, blue;
u16 avg0, avg1, avg2;
@@ -769,3 +784,582 @@ void sub_8126058(struct Unk030061A0 *arg0)
}
}
*/
+
+NAKED
+void sub_8126058(struct Unk030061A0 *arg0)
+{
+ 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, 0xC\n\
+ ldrb r1, [r0, 0x1D]\n\
+ lsrs r5, r1, 3\n\
+ ldrb r1, [r0, 0x1E]\n\
+ lsrs r1, 3\n\
+ str r1, [sp, 0x8]\n\
+ ldr r1, [r0, 0x4]\n\
+ str r1, [sp]\n\
+ ldr r2, [r0, 0x10]\n\
+ str r2, [sp, 0x4]\n\
+ ldrh r0, [r0, 0x16]\n\
+ cmp r0, 0x2\n\
+ bne _08126108\n\
+ movs r1, 0\n\
+ ldr r0, [sp, 0x8]\n\
+ cmp r1, r0\n\
+ bcc _08126086\n\
+ b _08126194\n\
+_08126086:\n\
+ movs r0, 0\n\
+ adds r2, r1, 0x1\n\
+ mov r10, r2\n\
+ cmp r0, r5\n\
+ bcs _081260FA\n\
+ adds r2, r1, 0\n\
+ muls r2, r5\n\
+ mov r9, r2\n\
+ lsls r1, 3\n\
+ mov r8, r1\n\
+_0812609A:\n\
+ movs r4, 0\n\
+ lsls r6, r0, 4\n\
+ adds r7, r0, 0x1\n\
+ add r0, r9\n\
+ lsls r0, 6\n\
+ ldr r1, [sp, 0x4]\n\
+ adds r1, r0\n\
+ mov r12, r1\n\
+_081260AA:\n\
+ lsls r0, r4, 3\n\
+ mov r2, r12\n\
+ adds r3, r2, r0\n\
+ mov r1, r8\n\
+ adds r0, r1, r4\n\
+ lsls r0, 3\n\
+ muls r0, r5\n\
+ lsls r0, 1\n\
+ ldr r2, [sp]\n\
+ adds r0, r2, r0\n\
+ adds r2, r0, r6\n\
+ ldrh r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ ldrh r1, [r2]\n\
+ orrs r0, r1\n\
+ strh r0, [r3]\n\
+ ldrh r0, [r2, 0x6]\n\
+ lsls r0, 8\n\
+ ldrh r1, [r2, 0x4]\n\
+ orrs r0, r1\n\
+ strh r0, [r3, 0x2]\n\
+ ldrh r0, [r2, 0xA]\n\
+ lsls r0, 8\n\
+ ldrh r1, [r2, 0x8]\n\
+ orrs r0, r1\n\
+ strh r0, [r3, 0x4]\n\
+ ldrh r0, [r2, 0xE]\n\
+ lsls r0, 8\n\
+ ldrh r1, [r2, 0xC]\n\
+ orrs r0, r1\n\
+ strh r0, [r3, 0x6]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, 0x7\n\
+ bls _081260AA\n\
+ lsls r0, r7, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, r5\n\
+ bcc _0812609A\n\
+_081260FA:\n\
+ mov r1, r10\n\
+ lsls r0, r1, 16\n\
+ lsrs r1, r0, 16\n\
+ ldr r2, [sp, 0x8]\n\
+ cmp r1, r2\n\
+ bcc _08126086\n\
+ b _08126194\n\
+_08126108:\n\
+ movs r1, 0\n\
+ ldr r0, [sp, 0x8]\n\
+ cmp r1, r0\n\
+ bcs _08126194\n\
+_08126110:\n\
+ movs r0, 0\n\
+ adds r2, r1, 0x1\n\
+ mov r10, r2\n\
+ cmp r0, r5\n\
+ bcs _08126188\n\
+ adds r2, r1, 0\n\
+ muls r2, r5\n\
+ mov r9, r2\n\
+ lsls r1, 3\n\
+ mov r8, r1\n\
+_08126124:\n\
+ movs r4, 0\n\
+ lsls r6, r0, 4\n\
+ adds r7, r0, 0x1\n\
+ add r0, r9\n\
+ lsls r0, 5\n\
+ ldr r1, [sp, 0x4]\n\
+ adds r1, r0\n\
+ mov r12, r1\n\
+_08126134:\n\
+ lsls r0, r4, 2\n\
+ mov r2, r12\n\
+ adds r3, r2, r0\n\
+ mov r1, r8\n\
+ adds r0, r1, r4\n\
+ lsls r0, 3\n\
+ muls r0, r5\n\
+ lsls r0, 1\n\
+ ldr r2, [sp]\n\
+ adds r0, r2, r0\n\
+ adds r2, r0, r6\n\
+ ldrh r1, [r2, 0x2]\n\
+ lsls r1, 4\n\
+ ldrh r0, [r2]\n\
+ orrs r1, r0\n\
+ ldrh r0, [r2, 0x4]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrh r0, [r2, 0x6]\n\
+ lsls r0, 12\n\
+ orrs r1, r0\n\
+ strh r1, [r3]\n\
+ ldrh r1, [r2, 0xA]\n\
+ lsls r1, 4\n\
+ ldrh r0, [r2, 0x8]\n\
+ orrs r1, r0\n\
+ ldrh r0, [r2, 0xC]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrh r0, [r2, 0xE]\n\
+ lsls r0, 12\n\
+ orrs r1, r0\n\
+ strh r1, [r3, 0x2]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, 0x7\n\
+ bls _08126134\n\
+ lsls r0, r7, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, r5\n\
+ bcc _08126124\n\
+_08126188:\n\
+ mov r1, r10\n\
+ lsls r0, r1, 16\n\
+ lsrs r1, r0, 16\n\
+ ldr r2, [sp, 0x8]\n\
+ cmp r1, r2\n\
+ bcc _08126110\n\
+_08126194:\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 {r0}\n\
+ bx r0");
+}
+
+void sub_81261A4(struct Unk030061A0 *arg0)
+{
+ gUnknown_03006188 = arg0->var_18 * 16;
+ gUnknown_03006184 = &arg0->var_8[gUnknown_03006188];
+ gUnknown_03006168 = arg0->var_4;
+ gUnknown_03006164 = arg0->var_19;
+ gUnknown_03006178 = arg0->var_1A;
+ gUnknown_03006174 = arg0->var_1B;
+ gUnknown_0300616C = arg0->var_1C;
+ gUnknown_03006180 = arg0->var_1D;
+ gUnknown_03006170 = arg0->var_1E;
+
+ switch (arg0->var_14)
+ {
+ case 0:
+ sub_81263A4(FALSE);
+ break;
+ case 1:
+ sub_81263A4(TRUE);
+ break;
+ case 2:
+ sub_8126270();
+ sub_8126714();
+ break;
+ case 3:
+ sub_8126370();
+ sub_8126664();
+ break;
+ case 4:
+ sub_8126334();
+ sub_81265B4();
+ break;
+ case 5:
+ sub_8126318();
+ sub_81264FC();
+ break;
+ }
+}
+
+static void sub_8126270(void)
+{
+ gUnknown_03006184[0] = RGB2(0, 0, 0);
+ gUnknown_03006184[1] = RGB2(6, 6, 6);
+ gUnknown_03006184[2] = RGB2(29, 29, 29);
+ gUnknown_03006184[3] = RGB2(11, 11, 11);
+ gUnknown_03006184[4] = RGB2(29, 6, 6);
+ gUnknown_03006184[5] = RGB2(6, 29, 6);
+ gUnknown_03006184[6] = RGB2(6, 6, 29);
+ gUnknown_03006184[7] = RGB2(29, 29, 6);
+ gUnknown_03006184[8] = RGB2(29, 6, 29);
+ gUnknown_03006184[9] = RGB2(6, 29, 29);
+ gUnknown_03006184[10] = RGB2(29, 11, 6);
+ gUnknown_03006184[11] = RGB2(11, 29, 6);
+ gUnknown_03006184[12] = RGB2(6, 11, 29);
+ gUnknown_03006184[13] = RGB2(29, 6, 11);
+ gUnknown_03006184[14] = RGB2(6, 29, 11);
+ gUnknown_03006184[15] = RGB2(11, 6, 29);
+}
+
+static void sub_8126318(void)
+{
+ gUnknown_03006184[0] = RGB2(0, 0, 0);
+ gUnknown_03006184[1] = RGB2(0, 0, 0);
+ gUnknown_03006184[2] = RGB2(31, 31, 31);
+}
+
+static void sub_8126334(void)
+{
+ u8 i;
+
+ gUnknown_03006184[0] = RGB2(0, 0, 0);
+ gUnknown_03006184[1] = RGB2(0, 0, 0);
+ for (i = 0; i < 14; i++)
+ gUnknown_03006184[i + 2] = RGB2(2 * (i + 2), 2 * (i + 2), 2 * (i + 2));
+}
+
+static void sub_8126370(void)
+{
+ u8 i;
+
+ gUnknown_03006184[0] = RGB2(0, 0, 0);
+ for (i = 0; i < 32; i++)
+ gUnknown_03006184[i + 1] = RGB2(i, i, i);
+}
+
+static void sub_81263A4(bool8 arg0)
+{
+ u8 i, j;
+ u16 maxIndex;
+
+ maxIndex = 0xDF;
+ if (!arg0)
+ maxIndex = 0xFF;
+
+ for (j = 0; j < maxIndex; j++)
+ gUnknown_03006184[j] = 0;
+
+ gUnknown_03006184[maxIndex] = RGB2(15, 15, 15);
+ for (i = 0; i < gUnknown_0300616C; i++)
+ {
+ u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
+ u16* pal = &var2[gUnknown_03006164];
+ for (j = 0; j < gUnknown_03006174; j++, pal++)
+ {
+ if (*pal & 0x8000)
+ {
+ *pal = gUnknown_03006188;
+ }
+ else
+ {
+ u16 color = sub_81267C4(pal);
+ u8 curIndex = 1;
+ if (curIndex < maxIndex)
+ {
+ if (gUnknown_03006184[curIndex] == RGB_BLACK)
+ {
+ gUnknown_03006184[curIndex] = color;
+ *pal = gUnknown_03006188 + curIndex;
+ }
+ else
+ {
+ while (curIndex < maxIndex)
+ {
+ if (gUnknown_03006184[curIndex] == RGB_BLACK)
+ {
+ gUnknown_03006184[curIndex] = color;
+ *pal = gUnknown_03006188 + curIndex;
+ break;
+ }
+
+ if (gUnknown_03006184[curIndex] == color)
+ {
+ *pal = gUnknown_03006188 + curIndex;
+ break;
+ }
+
+ curIndex++;
+ }
+ }
+ }
+
+ if (curIndex == maxIndex)
+ {
+ curIndex = maxIndex;
+ *pal = curIndex;
+ }
+ }
+ }
+ }
+}
+
+static void sub_81264FC(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < gUnknown_0300616C; i++)
+ {
+ u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
+ u16* pal = &var2[gUnknown_03006164];
+ for (j = 0; j < gUnknown_03006174; j++, pal++)
+ {
+ if (*pal & 0x8000)
+ {
+ *pal = gUnknown_03006188;
+ }
+ else
+ {
+ if (ConvertToBlackOrWhite(pal) == RGB_BLACK)
+ *pal = gUnknown_03006188 + 1;
+ else
+ *pal = gUnknown_03006188 + 2;
+ }
+ }
+ }
+}
+
+static void sub_81265B4(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < gUnknown_0300616C; i++)
+ {
+ u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
+ u16* pal = &var2[gUnknown_03006164];
+ for (j = 0; j < gUnknown_03006174; j++, pal++)
+ {
+ if (*pal & 0x8000)
+ *pal = gUnknown_03006188;
+ else
+ *pal = sub_8126908(pal) + gUnknown_03006188;
+ }
+ }
+}
+
+static void sub_8126664(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < gUnknown_0300616C; i++)
+ {
+ u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
+ u16* pal = &var2[gUnknown_03006164];
+ for (j = 0; j < gUnknown_03006174; j++, pal++)
+ {
+ if (*pal & 0x8000)
+ *pal = gUnknown_03006188;
+ else
+ *pal = sub_812693C(pal) + gUnknown_03006188;
+ }
+ }
+}
+
+static void sub_8126714(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < gUnknown_0300616C; i++)
+ {
+ u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
+ u16* pal = &var2[gUnknown_03006164];
+ for (j = 0; j < gUnknown_03006174; j++, pal++)
+ {
+ if (*pal & 0x8000)
+ *pal = gUnknown_03006188;
+ else
+ *pal = sub_8126838(pal) + gUnknown_03006188;
+ }
+ }
+}
+
+static u16 sub_81267C4(u16 *color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+
+ if (red & 3)
+ red = (red & 0x1C) + 4;
+ if (green & 3)
+ green = (green & 0x1C) + 4;
+ if (blue & 3)
+ blue = (blue & 0x1C) + 4;
+
+ if (red < 6)
+ red = 6;
+ if (red > 30)
+ red = 30;
+
+ if (green < 6)
+ green = 6;
+ if (green > 30)
+ green = 30;
+
+ if (blue < 6)
+ blue = 6;
+ if (blue > 30)
+ blue = 30;
+
+ return RGB2(red, green, blue);
+}
+
+static u16 sub_8126838(u16* color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+
+ if (red < 12 && green < 11 && blue < 11)
+ return 1;
+
+ if (red > 19 && green > 19 && blue > 19)
+ return 2;
+
+ if (red > 19)
+ {
+ if (green > 19)
+ {
+ if (blue > 14)
+ return 2;
+ else
+ return 7;
+ }
+ else if (blue > 19)
+ {
+ if (green > 14)
+ return 2;
+ else
+ return 8;
+ }
+ }
+
+ if (green > 19 && blue > 19)
+ {
+ if (red > 14)
+ return 2;
+ else
+ return 9;
+ }
+
+ if (red > 19)
+ {
+ if (green > 11)
+ {
+ if (blue > 11)
+ {
+ if (green < blue)
+ return 8;
+ else
+ return 7;
+ }
+ else
+ {
+ return 10;
+ }
+ }
+ else if (blue > 11)
+ {
+ return 13;
+ }
+ else
+ {
+ return 4;
+ }
+ }
+
+ if (green > 19)
+ {
+ if (red > 11)
+ {
+ if (blue > 11)
+ {
+ if (red < blue)
+ return 9;
+ else
+ return 7;
+ }
+ else
+ {
+ return 11;
+ }
+ }
+ else
+ {
+ if (blue > 11)
+ return 14;
+ else
+ return 5;
+ }
+ }
+
+ if (blue > 19)
+ {
+ if (red > 11)
+ {
+ if (green > 11)
+ {
+ if (red < green)
+ return 9;
+ else
+ return 8;
+ }
+ }
+ else if (green > 11)
+ {
+ return 12;
+ }
+
+ if (blue > 11)
+ return 15;
+ else
+ return 6;
+ }
+
+ return 3;
+}
+
+static u16 sub_8126908(u16 *color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+ u16 average = ((red + green + blue) / 3) & 0x1E;
+ if (average == 0)
+ return 1;
+ else
+ return average / 2;
+}
+
+static u16 sub_812693C(u16 *color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+ u16 average = (red + green + blue) / 3;
+ return average + 1;
+}
diff --git a/src/credits.c b/src/credits.c
index 3639d36e4..1e96514b1 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -1056,10 +1056,10 @@ static const struct OamData gUnknown_085E703C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -1343,7 +1343,7 @@ static void sub_81758E4(u8 taskIdA)
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM);
- LZ77UnCompVram(gBirchGrassTilemap, (void *)(VRAM + 0x3800));
+ LZ77UnCompVram(gBirchGrassTilemap, (void *)(BG_SCREEN_ADDR(7)));
LoadPalette(gBirchBagGrassPal[0] + 1, 1, 31 * 2);
for (i = 0; i < 0x800; i++)
@@ -1592,7 +1592,7 @@ static void sub_8175DA0(u8 taskIdB)
case 5:
if (!gPaletteFade.active)
{
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
CopyWindowToVram(0, 2);
gTasks[taskIdB].data[TDB_0] = 2;
}
@@ -1869,7 +1869,7 @@ static void sub_817664C(u8 data, u8 taskIdA)
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
- gTasks[taskIdA].data[TDA_0] = sub_817B3DC(0, 0x2000, 0x20, 8);
+ gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(0, 0x2000, 0x20, 8);
break;
case 1:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
@@ -1880,7 +1880,7 @@ static void sub_817664C(u8 data, u8 taskIdA)
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
- gTasks[taskIdA].data[TDA_0] = sub_817B3DC(0, 0x2000, 0x20, 8);
+ gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(0, 0x2000, 0x20, 8);
break;
case 2:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
@@ -1891,7 +1891,7 @@ static void sub_817664C(u8 data, u8 taskIdA)
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
- gTasks[taskIdA].data[TDA_0] = sub_817B3DC(1, 0x2000, 0x200, 8);
+ gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(1, 0x2000, 0x200, 8);
break;
case 3:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
@@ -1902,7 +1902,7 @@ static void sub_817664C(u8 data, u8 taskIdA)
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
- gTasks[taskIdA].data[TDA_0] = sub_817B3DC(1, 0x2000, 0x200, 8);
+ gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(1, 0x2000, 0x200, 8);
break;
case 4:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
@@ -1913,7 +1913,7 @@ static void sub_817664C(u8 data, u8 taskIdA)
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
- gTasks[taskIdA].data[TDA_0] = sub_817B3DC(2, 0x2000, 0x200, 8);
+ gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(2, 0x2000, 0x200, 8);
break;
}
diff --git a/src/dark.c b/src/dark.c
index ecd466da8..80ce61800 100644
--- a/src/dark.c
+++ b/src/dark.c
@@ -389,14 +389,14 @@ void sub_8113A90(struct Sprite *sprite)
static void sub_8113B90(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
DestroySpriteAndMatrix(sprite);
}
void sub_8113BAC(u8 taskId)
{
struct ScanlineEffectParams scanlineParams;
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
u16 i;
u8 pos;
int var0;
@@ -420,10 +420,10 @@ void sub_8113BAC(u8 taskId)
task->data[3] = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
if (task->data[3] == 1)
{
- sub_80A6B30(&unknownStruct);
+ sub_80A6B30(&animBg);
task->data[10] = gBattle_BG1_Y;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1);
- FillPalette(0, unknownStruct.unk8 << 4, 32);
+ FillPalette(0, animBg.paletteId * 16, 32);
scanlineParams.dmaDest = &REG_BG1VOFS;
var0 = WINOUT_WIN01_BG1;
if (!IsContest())
@@ -524,7 +524,7 @@ static void sub_8113D60(u8 taskId)
void sub_8113E78(u8 taskId)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
struct ScanlineEffectParams scanlineParams;
u8 x;
u16 i;
@@ -561,14 +561,14 @@ void sub_8113E78(u8 taskId)
case 1:
if (task->data[3] == 1)
{
- sub_80A6B30(&unknownStruct);
+ sub_80A6B30(&animBg);
task->data[10] = gBattle_BG1_Y;
- FillPalette(0, unknownStruct.unk8 << 4, 32);
+ FillPalette(0, animBg.paletteId * 16, 32);
}
else
{
task->data[10] = gBattle_BG2_Y;
- FillPalette(0, 144, 32);
+ FillPalette(0, 9 * 16, 32);
}
sub_8114374(3);
@@ -809,7 +809,7 @@ void sub_81144F8(u8 taskId)
u8 spriteId;
u8 newSpriteId;
u16 paletteNum;
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
int var0 = 0;
gBattle_WIN0H = var0;
@@ -852,10 +852,10 @@ void sub_81144F8(u8 taskId)
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
newSpriteId = sub_80A89C8(gBattleAnimAttacker, spriteId, species);
- sub_80A6B30(&unknownStruct);
- sub_80A6D48(unknownStruct.bgId, gUnknown_08C1D210);
- sub_80A6CC0(unknownStruct.bgId, gUnknown_08C1D0AC, unknownStruct.tilesOffset);
- LoadCompressedPalette(gUnknown_08C1D1E8, unknownStruct.unk8 << 4, 32);
+ sub_80A6B30(&animBg);
+ AnimLoadCompressedBgTilemap(animBg.bgId, gMetalShineTilemap);
+ AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset);
+ LoadCompressedPalette(gMetalShinePalette, animBg.paletteId * 16, 32);
gBattle_BG1_X = -gSprites[spriteId].pos1.x + 96;
gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
@@ -876,7 +876,7 @@ void sub_81144F8(u8 taskId)
static void sub_8114748(u8 taskId)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
u16 paletteNum;
u8 spriteId;
u8 taskIdCopy = taskId;
@@ -896,8 +896,8 @@ static void sub_8114748(u8 taskId)
SetGreyscaleOrOriginalPalette(paletteNum, 1);
DestroySprite(&gSprites[gTasks[taskIdCopy].data[0]]);
- sub_80A6B30(&unknownStruct);
- sub_80A6C68(unknownStruct.bgId);
+ sub_80A6B30(&animBg);
+ sub_80A6C68(animBg.bgId);
if (gTasks[taskIdCopy].data[6] == 1)
gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority++;
}
diff --git a/src/data/easy_chat/easy_chat_group_actions.h b/src/data/easy_chat/easy_chat_group_actions.h
new file mode 100755
index 000000000..06a8e7303
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_actions.h
@@ -0,0 +1,471 @@
+const u8 gEasyChatWord_Meets[] = _("MEETS");
+const u8 gEasyChatWord_Concede[] = _("CONCEDE");
+const u8 gEasyChatWord_Give[] = _("GIVE");
+const u8 gEasyChatWord_Gives[] = _("GIVES");
+const u8 gEasyChatWord_Played[] = _("PLAYED");
+const u8 gEasyChatWord_Plays[] = _("PLAYS");
+const u8 gEasyChatWord_Collect[] = _("COLLECT");
+const u8 gEasyChatWord_Walking[] = _("WALKING");
+const u8 gEasyChatWord_Walks[] = _("WALKS");
+const u8 gEasyChatWord_Says[] = _("SAYS");
+const u8 gEasyChatWord_Went[] = _("WENT");
+const u8 gEasyChatWord_Said[] = _("SAID");
+const u8 gEasyChatWord_WakeUp[] = _("WAKE UP");
+const u8 gEasyChatWord_WakesUp[] = _("WAKES UP");
+const u8 gEasyChatWord_Angers[] = _("ANGERS");
+const u8 gEasyChatWord_Teach[] = _("TEACH");
+const u8 gEasyChatWord_Teaches[] = _("TEACHES");
+const u8 gEasyChatWord_Please[] = _("PLEASE");
+const u8 gEasyChatWord_Learn[] = _("LEARN");
+const u8 gEasyChatWord_Change[] = _("CHANGE");
+const u8 gEasyChatWord_Story[] = _("STORY");
+const u8 gEasyChatWord_Trust[] = _("TRUST");
+const u8 gEasyChatWord_Lavish[] = _("LAVISH");
+const u8 gEasyChatWord_Listens[] = _("LISTENS");
+const u8 gEasyChatWord_Hearing[] = _("HEARING");
+const u8 gEasyChatWord_Trains[] = _("TRAINS");
+const u8 gEasyChatWord_Choose[] = _("CHOOSE");
+const u8 gEasyChatWord_Come[] = _("COME");
+const u8 gEasyChatWord_Came[] = _("CAME");
+const u8 gEasyChatWord_Search[] = _("SEARCH");
+const u8 gEasyChatWord_Make[] = _("MAKE");
+const u8 gEasyChatWord_Cause[] = _("CAUSE");
+const u8 gEasyChatWord_Know[] = _("KNOW");
+const u8 gEasyChatWord_Knows[] = _("KNOWS");
+const u8 gEasyChatWord_Refuse[] = _("REFUSE");
+const u8 gEasyChatWord_Stores[] = _("STORES");
+const u8 gEasyChatWord_Brag[] = _("BRAG");
+const u8 gEasyChatWord_Ignorant[] = _("IGNORANT");
+const u8 gEasyChatWord_Thinks[] = _("THINKS");
+const u8 gEasyChatWord_Believe[] = _("BELIEVE");
+const u8 gEasyChatWord_Slide[] = _("SLIDE");
+const u8 gEasyChatWord_Eats[] = _("EATS");
+const u8 gEasyChatWord_Use[] = _("USE");
+const u8 gEasyChatWord_Uses[] = _("USES");
+const u8 gEasyChatWord_Using[] = _("USING");
+const u8 gEasyChatWord_Couldnt[] = _("COULDN'T");
+const u8 gEasyChatWord_Capable[] = _("CAPABLE");
+const u8 gEasyChatWord_Disappear[] = _("DISAPPEAR");
+const u8 gEasyChatWord_Appear[] = _("APPEAR");
+const u8 gEasyChatWord_Throw[] = _("THROW");
+const u8 gEasyChatWord_Worry[] = _("WORRY");
+const u8 gEasyChatWord_Slept[] = _("SLEPT");
+const u8 gEasyChatWord_Sleep[] = _("SLEEP");
+const u8 gEasyChatWord_Release[] = _("RELEASE");
+const u8 gEasyChatWord_Drinks[] = _("DRINKS");
+const u8 gEasyChatWord_Runs[] = _("RUNS");
+const u8 gEasyChatWord_Run[] = _("RUN");
+const u8 gEasyChatWord_Works[] = _("WORKS");
+const u8 gEasyChatWord_Working[] = _("WORKING");
+const u8 gEasyChatWord_Talking[] = _("TALKING");
+const u8 gEasyChatWord_Talk[] = _("TALK");
+const u8 gEasyChatWord_Sink[] = _("SINK");
+const u8 gEasyChatWord_Smack[] = _("SMACK");
+const u8 gEasyChatWord_Pretend[] = _("PRETEND");
+const u8 gEasyChatWord_Praise[] = _("PRAISE");
+const u8 gEasyChatWord_Overdo[] = _("OVERDO");
+const u8 gEasyChatWord_Show[] = _("SHOW");
+const u8 gEasyChatWord_Looks[] = _("LOOKS");
+const u8 gEasyChatWord_Sees[] = _("SEES");
+const u8 gEasyChatWord_Seek[] = _("SEEK");
+const u8 gEasyChatWord_Own[] = _("OWN");
+const u8 gEasyChatWord_Take[] = _("TAKE");
+const u8 gEasyChatWord_Allow[] = _("ALLOW");
+const u8 gEasyChatWord_Forget[] = _("FORGET");
+const u8 gEasyChatWord_Forgets[] = _("FORGETS");
+const u8 gEasyChatWord_Appears[] = _("APPEARS");
+const u8 gEasyChatWord_Faint[] = _("FAINT");
+const u8 gEasyChatWord_Fainted[] = _("FAINTED");
+
+const struct EasyChatWordInfo gEasyChatGroup_Actions[] = {
+ {
+ .text = gEasyChatWord_Meets,
+ .alphabeticalOrder = 72,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Concede,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Give,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gives,
+ .alphabeticalOrder = 75,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Played,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Plays,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Collect,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Walking,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Walks,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Says,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Went,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Said,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WakeUp,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WakesUp,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Angers,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Teach,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Teaches,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Please,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Learn,
+ .alphabeticalOrder = 76,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Change,
+ .alphabeticalOrder = 77,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Story,
+ .alphabeticalOrder = 73,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Trust,
+ .alphabeticalOrder = 74,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lavish,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Listens,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hearing,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Trains,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Choose,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Come,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Came,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Search,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Make,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cause,
+ .alphabeticalOrder = 67,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Know,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Knows,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Refuse,
+ .alphabeticalOrder = 65,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Stores,
+ .alphabeticalOrder = 70,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Brag,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ignorant,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thinks,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Believe,
+ .alphabeticalOrder = 64,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Slide,
+ .alphabeticalOrder = 63,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Eats,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Use,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Uses,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Using,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Couldnt,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Capable,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Disappear,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Appear,
+ .alphabeticalOrder = 69,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Throw,
+ .alphabeticalOrder = 68,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Worry,
+ .alphabeticalOrder = 66,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Slept,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sleep,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Release,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Drinks,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Runs,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Run,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Works,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Working,
+ .alphabeticalOrder = 71,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Talking,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Talk,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sink,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Smack,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pretend,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Praise,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Overdo,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Show,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Looks,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sees,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Seek,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Own,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Take,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Allow,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Forget,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Forgets,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Appears,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Faint,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fainted,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_adjectives.h b/src/data/easy_chat/easy_chat_group_adjectives.h
new file mode 100755
index 000000000..1c7474118
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_adjectives.h
@@ -0,0 +1,219 @@
+const u8 gEasyChatWord_Wandering[] = _("WANDERING");
+const u8 gEasyChatWord_Rickety[] = _("RICKETY");
+const u8 gEasyChatWord_RockSolid[] = _("ROCK-SOLID");
+const u8 gEasyChatWord_Hungry[] = _("HUNGRY");
+const u8 gEasyChatWord_Tight[] = _("TIGHT");
+const u8 gEasyChatWord_Ticklish[] = _("TICKLISH");
+const u8 gEasyChatWord_Twirling[] = _("TWIRLING");
+const u8 gEasyChatWord_Spiraling[] = _("SPIRALING");
+const u8 gEasyChatWord_Thirsty[] = _("THIRSTY");
+const u8 gEasyChatWord_Lolling[] = _("LOLLING");
+const u8 gEasyChatWord_Silky[] = _("SILKY");
+const u8 gEasyChatWord_Sadly[] = _("SADLY");
+const u8 gEasyChatWord_Hopeless[] = _("HOPELESS");
+const u8 gEasyChatWord_Useless[] = _("USELESS");
+const u8 gEasyChatWord_Drooling[] = _("DROOLING");
+const u8 gEasyChatWord_Exciting[] = _("EXCITING");
+const u8 gEasyChatWord_Thick[] = _("THICK");
+const u8 gEasyChatWord_Smooth[] = _("SMOOTH");
+const u8 gEasyChatWord_Slimy[] = _("SLIMY");
+const u8 gEasyChatWord_Thin[] = _("THIN");
+const u8 gEasyChatWord_Break[] = _("BREAK");
+const u8 gEasyChatWord_Voracious[] = _("VORACIOUS");
+const u8 gEasyChatWord_Scatter[] = _("SCATTER");
+const u8 gEasyChatWord_Awesome[] = _("AWESOME");
+const u8 gEasyChatWord_Wimpy[] = _("WIMPY");
+const u8 gEasyChatWord_Wobbly[] = _("WOBBLY");
+const u8 gEasyChatWord_Shaky[] = _("SHAKY");
+const u8 gEasyChatWord_Ripped[] = _("RIPPED");
+const u8 gEasyChatWord_Shredded[] = _("SHREDDED");
+const u8 gEasyChatWord_Increasing[] = _("INCREASING");
+const u8 gEasyChatWord_Yet[] = _("YET");
+const u8 gEasyChatWord_Destroyed[] = _("DESTROYED");
+const u8 gEasyChatWord_Fiery[] = _("FIERY");
+const u8 gEasyChatWord_LoveyDovey[] = _("LOVEY-DOVEY");
+const u8 gEasyChatWord_Happily[] = _("HAPPILY");
+const u8 gEasyChatWord_Anticipation[] = _("ANTICIPATION");
+
+const struct EasyChatWordInfo gEasyChatGroup_Adjectives[] = {
+ {
+ .text = gEasyChatWord_Wandering,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rickety,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_RockSolid,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hungry,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tight,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ticklish,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Twirling,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Spiraling,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thirsty,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lolling,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Silky,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sadly,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hopeless,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Useless,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Drooling,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Exciting,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thick,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Smooth,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Slimy,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thin,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Break,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Voracious,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Scatter,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Awesome,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wimpy,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wobbly,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shaky,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ripped,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shredded,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Increasing,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yet,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Destroyed,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fiery,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_LoveyDovey,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Happily,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Anticipation,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_battle.h b/src/data/easy_chat/easy_chat_group_battle.h
new file mode 100755
index 000000000..0f97f50c9
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_battle.h
@@ -0,0 +1,381 @@
+const u8 gEasyChatWord_MatchUp[] = _("MATCH UP");
+const u8 gEasyChatWord_Go[] = _("GO");
+const u8 gEasyChatWord_No1[] = _("NO. 1");
+const u8 gEasyChatWord_Decide[] = _("DECIDE");
+const u8 gEasyChatWord_LetMeWin[] = _("LET ME WIN");
+const u8 gEasyChatWord_Wins[] = _("WINS");
+const u8 gEasyChatWord_Win[] = _("WIN");
+const u8 gEasyChatWord_Won[] = _("WON");
+const u8 gEasyChatWord_IfIWin[] = _("IF I WIN");
+const u8 gEasyChatWord_WhenIWin[] = _("WHEN I WIN");
+const u8 gEasyChatWord_CantWin[] = _("CAN'T WIN");
+const u8 gEasyChatWord_CanWin[] = _("CAN WIN");
+const u8 gEasyChatWord_NoMatch[] = _("NO MATCH");
+const u8 gEasyChatWord_Spirit[] = _("SPIRIT");
+const u8 gEasyChatWord_Decided[] = _("DECIDED");
+const u8 gEasyChatWord_TrumpCard[] = _("TRUMP CARD");
+const u8 gEasyChatWord_TakeThat[] = _("TAKE THAT");
+const u8 gEasyChatWord_ComeOn[] = _("COME ON");
+const u8 gEasyChatWord_Attack[] = _("ATTACK");
+const u8 gEasyChatWord_Surrender[] = _("SURRENDER");
+const u8 gEasyChatWord_Gutsy[] = _("GUTSY");
+const u8 gEasyChatWord_Talent[] = _("TALENT");
+const u8 gEasyChatWord_Strategy[] = _("STRATEGY");
+const u8 gEasyChatWord_Smite[] = _("SMITE");
+const u8 gEasyChatWord_Match[] = _("MATCH");
+const u8 gEasyChatWord_Victory[] = _("VICTORY");
+const u8 gEasyChatWord_Offensive[] = _("OFFENSIVE");
+const u8 gEasyChatWord_Sense[] = _("SENSE");
+const u8 gEasyChatWord_Versus[] = _("VERSUS");
+const u8 gEasyChatWord_Fights[] = _("FIGHTS");
+const u8 gEasyChatWord_Power[] = _("POWER");
+const u8 gEasyChatWord_Challenge[] = _("CHALLENGE");
+const u8 gEasyChatWord_Strong[] = _("STRONG");
+const u8 gEasyChatWord_TooStrong[] = _("TOO STRONG");
+const u8 gEasyChatWord_GoEasy[] = _("GO EASY");
+const u8 gEasyChatWord_Foe[] = _("FOE");
+const u8 gEasyChatWord_Genius[] = _("GENIUS");
+const u8 gEasyChatWord_Legend[] = _("LEGEND");
+const u8 gEasyChatWord_Escape[] = _("ESCAPE");
+const u8 gEasyChatWord_Aim[] = _("AIM");
+const u8 gEasyChatWord_Battle[] = _("BATTLE");
+const u8 gEasyChatWord_Fight[] = _("FIGHT");
+const u8 gEasyChatWord_Resuscitate[] = _("RESUSCITATE");
+const u8 gEasyChatWord_Points[] = _("POINTS");
+const u8 gEasyChatWord_Serious[] = _("SERIOUS");
+const u8 gEasyChatWord_GiveUp[] = _("GIVE UP");
+const u8 gEasyChatWord_Loss[] = _("LOSS");
+const u8 gEasyChatWord_IfILose[] = _("IF I LOSE");
+const u8 gEasyChatWord_Lost[] = _("LOST");
+const u8 gEasyChatWord_Lose[] = _("LOSE");
+const u8 gEasyChatWord_Guard[] = _("GUARD");
+const u8 gEasyChatWord_Partner[] = _("PARTNER");
+const u8 gEasyChatWord_Reject[] = _("REJECT");
+const u8 gEasyChatWord_Accept[] = _("ACCEPT");
+const u8 gEasyChatWord_Invincible[] = _("INVINCIBLE");
+const u8 gEasyChatWord_Received[] = _("RECEIVED");
+const u8 gEasyChatWord_Easy[] = _("EASY");
+const u8 gEasyChatWord_Weak[] = _("WEAK");
+const u8 gEasyChatWord_TooWeak[] = _("TOO WEAK");
+const u8 gEasyChatWord_Pushover[] = _("PUSHOVER");
+const u8 gEasyChatWord_Leader[] = _("LEADER");
+const u8 gEasyChatWord_Rule[] = _("RULE");
+const u8 gEasyChatWord_Move[] = _("MOVE");
+
+const struct EasyChatWordInfo gEasyChatGroup_Battle[] = {
+ {
+ .text = gEasyChatWord_MatchUp,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Go,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_No1,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Decide,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_LetMeWin,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wins,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Win,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Won,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IfIWin,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WhenIWin,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_CantWin,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_CanWin,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_NoMatch,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Spirit,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Decided,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TrumpCard,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TakeThat,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ComeOn,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Attack,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Surrender,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gutsy,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Talent,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Strategy,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Smite,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Match,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Victory,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Offensive,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sense,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Versus,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fights,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Power,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Challenge,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Strong,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TooStrong,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_GoEasy,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Foe,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Genius,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Legend,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Escape,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Aim,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Battle,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fight,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Resuscitate,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Points,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Serious,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_GiveUp,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Loss,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IfILose,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lost,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lose,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Guard,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Partner,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Reject,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Accept,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Invincible,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Received,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Easy,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Weak,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TooWeak,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pushover,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Leader,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rule,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Move,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_conditions.h b/src/data/easy_chat/easy_chat_group_conditions.h
new file mode 100755
index 000000000..a8d8ee874
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_conditions.h
@@ -0,0 +1,417 @@
+const u8 gEasyChatWord_Hot[] = _("HOT");
+const u8 gEasyChatWord_Exists[] = _("EXISTS");
+const u8 gEasyChatWord_Excess[] = _("EXCESS");
+const u8 gEasyChatWord_Approved[] = _("APPROVED");
+const u8 gEasyChatWord_Has[] = _("HAS");
+const u8 gEasyChatWord_Good[] = _("GOOD");
+const u8 gEasyChatWord_Less[] = _("LESS");
+const u8 gEasyChatWord_Momentum[] = _("MOMENTUM");
+const u8 gEasyChatWord_Going[] = _("GOING");
+const u8 gEasyChatWord_Weird[] = _("WEIRD");
+const u8 gEasyChatWord_Busy[] = _("BUSY");
+const u8 gEasyChatWord_Together[] = _("TOGETHER");
+const u8 gEasyChatWord_Full[] = _("FULL");
+const u8 gEasyChatWord_Absent[] = _("ABSENT");
+const u8 gEasyChatWord_Being[] = _("BEING");
+const u8 gEasyChatWord_Need[] = _("NEED");
+const u8 gEasyChatWord_Tasty[] = _("TASTY");
+const u8 gEasyChatWord_Skilled[] = _("SKILLED");
+const u8 gEasyChatWord_Noisy[] = _("NOISY");
+const u8 gEasyChatWord_Big[] = _("BIG");
+const u8 gEasyChatWord_Late[] = _("LATE");
+const u8 gEasyChatWord_Close[] = _("CLOSE");
+const u8 gEasyChatWord_Docile[] = _("DOCILE");
+const u8 gEasyChatWord_Amusing[] = _("AMUSING");
+const u8 gEasyChatWord_Entertaining[] = _("ENTERTAINING");
+const u8 gEasyChatWord_Perfection[] = _("PERFECTION");
+const u8 gEasyChatWord_Pretty[] = _("PRETTY");
+const u8 gEasyChatWord_Healthy[] = _("HEALTHY");
+const u8 gEasyChatWord_Excellent[] = _("EXCELLENT");
+const u8 gEasyChatWord_UpsideDown[] = _("UPSIDE DOWN");
+const u8 gEasyChatWord_Cold[] = _("COLD");
+const u8 gEasyChatWord_Refreshing[] = _("REFRESHING");
+const u8 gEasyChatWord_Unavoidable[] = _("UNAVOIDABLE");
+const u8 gEasyChatWord_Much[] = _("MUCH");
+const u8 gEasyChatWord_Overwhelming[] = _("OVERWHELMING");
+const u8 gEasyChatWord_Fabulous[] = _("FABULOUS");
+const u8 gEasyChatWord_Else[] = _("ELSE");
+const u8 gEasyChatWord_Expensive[] = _("EXPENSIVE");
+const u8 gEasyChatWord_Correct[] = _("CORRECT");
+const u8 gEasyChatWord_Impossible[] = _("IMPOSSIBLE");
+const u8 gEasyChatWord_Small[] = _("SMALL");
+const u8 gEasyChatWord_Different[] = _("DIFFERENT");
+const u8 gEasyChatWord_Tired[] = _("TIRED");
+const u8 gEasyChatWord_Skill[] = _("SKILL");
+const u8 gEasyChatWord_Top[] = _("TOP");
+const u8 gEasyChatWord_NonStop[] = _("NON-STOP");
+const u8 gEasyChatWord_Preposterous[] = _("PREPOSTEROUS");
+const u8 gEasyChatWord_None[] = _("NONE");
+const u8 gEasyChatWord_Nothing[] = _("NOTHING");
+const u8 gEasyChatWord_Natural[] = _("NATURAL");
+const u8 gEasyChatWord_Becomes[] = _("BECOMES");
+const u8 gEasyChatWord_Lukewarm[] = _("LUKEWARM");
+const u8 gEasyChatWord_Fast[] = _("FAST");
+const u8 gEasyChatWord_Low[] = _("LOW");
+const u8 gEasyChatWord_Awful[] = _("AWFUL");
+const u8 gEasyChatWord_Alone[] = _("ALONE");
+const u8 gEasyChatWord_Bored[] = _("BORED");
+const u8 gEasyChatWord_Secret[] = _("SECRET");
+const u8 gEasyChatWord_Mystery[] = _("MYSTERY");
+const u8 gEasyChatWord_Lacks[] = _("LACKS");
+const u8 gEasyChatWord_Best[] = _("BEST");
+const u8 gEasyChatWord_Lousy[] = _("LOUSY");
+const u8 gEasyChatWord_Mistake[] = _("MISTAKE");
+const u8 gEasyChatWord_Kind[] = _("KIND");
+const u8 gEasyChatWord_Well[] = _("WELL");
+const u8 gEasyChatWord_Weakened[] = _("WEAKENED");
+const u8 gEasyChatWord_Simple[] = _("SIMPLE");
+const u8 gEasyChatWord_Seems[] = _("SEEMS");
+const u8 gEasyChatWord_Badly[] = _("BADLY");
+
+const struct EasyChatWordInfo gEasyChatGroup_Conditions[] = {
+ {
+ .text = gEasyChatWord_Hot,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Exists,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Excess,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Approved,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Has,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Good,
+ .alphabeticalOrder = 68,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Less,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Momentum,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Going,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Weird,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Busy,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Together,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Full,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Absent,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Being,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Need,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tasty,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Skilled,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Noisy,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Big,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Late,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Close,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Docile,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Amusing,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Entertaining,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Perfection,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pretty,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Healthy,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Excellent,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_UpsideDown,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cold,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Refreshing,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Unavoidable,
+ .alphabeticalOrder = 63,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Much,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Overwhelming,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fabulous,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Else,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Expensive,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Correct,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Impossible,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Small,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Different,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tired,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Skill,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Top,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_NonStop,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Preposterous,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_None,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nothing,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Natural,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Becomes,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lukewarm,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fast,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Low,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Awful,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Alone,
+ .alphabeticalOrder = 67,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Bored,
+ .alphabeticalOrder = 66,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Secret,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mystery,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lacks,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Best,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lousy,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mistake,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Kind,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Well,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Weakened,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Simple,
+ .alphabeticalOrder = 65,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Seems,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Badly,
+ .alphabeticalOrder = 64,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_endings.h b/src/data/easy_chat/easy_chat_group_endings.h
new file mode 100755
index 000000000..afaea48cb
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_endings.h
@@ -0,0 +1,417 @@
+const u8 gEasyChatWord_Will[] = _("WILL");
+const u8 gEasyChatWord_WillBeHere[] = _("WILL BE HERE");
+const u8 gEasyChatWord_Or[] = _("OR");
+const u8 gEasyChatWord_Times[] = _("TIMES");
+const u8 gEasyChatWord_Wonder[] = _("WONDER");
+const u8 gEasyChatWord_IsItQues[] = _("IS IT?");
+const u8 gEasyChatWord_Be[] = _("BE");
+const u8 gEasyChatWord_Gimme[] = _("GIMME");
+const u8 gEasyChatWord_Could[] = _("COULD");
+const u8 gEasyChatWord_LikelyTo[] = _("LIKELY TO");
+const u8 gEasyChatWord_Would[] = _("WOULD");
+const u8 gEasyChatWord_Is[] = _("IS");
+const u8 gEasyChatWord_IsntItQues[] = _("ISN'T IT?");
+const u8 gEasyChatWord_Lets[] = _("LET'S");
+const u8 gEasyChatWord_Other[] = _("OTHER");
+const u8 gEasyChatWord_Are[] = _("ARE");
+const u8 gEasyChatWord_Was[] = _("WAS");
+const u8 gEasyChatWord_Were[] = _("WERE");
+const u8 gEasyChatWord_Those[] = _("THOSE");
+const u8 gEasyChatWord_Isnt[] = _("ISN'T");
+const u8 gEasyChatWord_Wont[] = _("WON'T");
+const u8 gEasyChatWord_Cant[] = _("CAN'T");
+const u8 gEasyChatWord_Can[] = _("CAN");
+const u8 gEasyChatWord_Dont[] = _("DON'T");
+const u8 gEasyChatWord_Do[] = _("DO");
+const u8 gEasyChatWord_Does[] = _("DOES");
+const u8 gEasyChatWord_Whom[] = _("WHOM");
+const u8 gEasyChatWord_Which[] = _("WHICH");
+const u8 gEasyChatWord_Wasnt[] = _("WASN'T");
+const u8 gEasyChatWord_Werent[] = _("WEREN'T");
+const u8 gEasyChatWord_Have[] = _("HAVE");
+const u8 gEasyChatWord_Havent[] = _("HAVEN'T");
+const u8 gEasyChatWord_A[] = _("A");
+const u8 gEasyChatWord_An[] = _("AN");
+const u8 gEasyChatWord_Not[] = _("NOT");
+const u8 gEasyChatWord_There[] = _("THERE");
+const u8 gEasyChatWord_OkQues[] = _("OK?");
+const u8 gEasyChatWord_So[] = _("SO");
+const u8 gEasyChatWord_Maybe[] = _("MAYBE");
+const u8 gEasyChatWord_About[] = _("ABOUT");
+const u8 gEasyChatWord_Over[] = _("OVER");
+const u8 gEasyChatWord_It[] = _("IT");
+const u8 gEasyChatWord_All[] = _("ALL");
+const u8 gEasyChatWord_For[] = _("FOR");
+const u8 gEasyChatWord_On[] = _("ON");
+const u8 gEasyChatWord_Off[] = _("OFF");
+const u8 gEasyChatWord_As[] = _("AS");
+const u8 gEasyChatWord_To[] = _("TO");
+const u8 gEasyChatWord_With[] = _("WITH");
+const u8 gEasyChatWord_Better[] = _("BETTER");
+const u8 gEasyChatWord_Ever[] = _("EVER");
+const u8 gEasyChatWord_Since[] = _("SINCE");
+const u8 gEasyChatWord_Of[] = _("OF");
+const u8 gEasyChatWord_BelongsTo[] = _("BELONGS TO");
+const u8 gEasyChatWord_At[] = _("AT");
+const u8 gEasyChatWord_In[] = _("IN");
+const u8 gEasyChatWord_Out[] = _("OUT");
+const u8 gEasyChatWord_Too[] = _("TOO");
+const u8 gEasyChatWord_Like[] = _("LIKE");
+const u8 gEasyChatWord_Did[] = _("DID");
+const u8 gEasyChatWord_Didnt[] = _("DIDN'T");
+const u8 gEasyChatWord_Doesnt[] = _("DOESN'T");
+const u8 gEasyChatWord_Without[] = _("WITHOUT");
+const u8 gEasyChatWord_After[] = _("AFTER");
+const u8 gEasyChatWord_Before[] = _("BEFORE");
+const u8 gEasyChatWord_While[] = _("WHILE");
+const u8 gEasyChatWord_Than[] = _("THAN");
+const u8 gEasyChatWord_Once[] = _("ONCE");
+const u8 gEasyChatWord_Anywhere[] = _("ANYWHERE");
+
+const struct EasyChatWordInfo gEasyChatGroup_Endings[] = {
+ {
+ .text = gEasyChatWord_Will,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WillBeHere,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Or,
+ .alphabeticalOrder = 63,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Times,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wonder,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IsItQues,
+ .alphabeticalOrder = 68,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Be,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gimme,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Could,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_LikelyTo,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Would,
+ .alphabeticalOrder = 64,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Is,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IsntItQues,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lets,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Other,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Are,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Was,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Were,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Those,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Isnt,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wont,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cant,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Can,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dont,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Do,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Does,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Whom,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Which,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wasnt,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Werent,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Have,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Havent,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_A,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_An,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Not,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_There,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OkQues,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_So,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Maybe,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_About,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Over,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_It,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_All,
+ .alphabeticalOrder = 67,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_For,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_On,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Off,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_As,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_To,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_With,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Better,
+ .alphabeticalOrder = 66,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ever,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Since,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Of,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_BelongsTo,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_At,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_In,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Out,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Too,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Like,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Did,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Didnt,
+ .alphabeticalOrder = 65,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Doesnt,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Without,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_After,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Before,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_While,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Than,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Once,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Anywhere,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_events.h b/src/data/easy_chat/easy_chat_group_events.h
new file mode 100755
index 000000000..8d9cf7e24
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_events.h
@@ -0,0 +1,177 @@
+const u8 gEasyChatWord_Appeal[] = _("APPEAL");
+const u8 gEasyChatWord_Events[] = _("EVENTS");
+const u8 gEasyChatWord_StayAtHome[] = _("STAY-AT-HOME");
+const u8 gEasyChatWord_Berry[] = _("BERRY");
+const u8 gEasyChatWord_Contest[] = _("CONTEST");
+const u8 gEasyChatWord_Mc[] = _("MC");
+const u8 gEasyChatWord_Judge[] = _("JUDGE");
+const u8 gEasyChatWord_Super[] = _("SUPER");
+const u8 gEasyChatWord_Stage[] = _("STAGE");
+const u8 gEasyChatWord_HallOfFame[] = _("HALL OF FAME");
+const u8 gEasyChatWord_Evolution[] = _("EVOLUTION");
+const u8 gEasyChatWord_Hyper[] = _("HYPER");
+const u8 gEasyChatWord_BattleTower[] = _("BATTLE TOWER");
+const u8 gEasyChatWord_Leaders[] = _("LEADERS");
+const u8 gEasyChatWord_BattleRoom[] = _("BATTLE ROOM");
+const u8 gEasyChatWord_Hidden[] = _("HIDDEN");
+const u8 gEasyChatWord_SecretBase[] = _("SECRET BASE");
+const u8 gEasyChatWord_Blend[] = _("BLEND");
+const u8 gEasyChatWord_POKEBLOCK[] = _("{POKEBLOCK}");
+const u8 gEasyChatWord_Master[] = _("MASTER");
+const u8 gEasyChatWord_Rank[] = _("RANK");
+const u8 gEasyChatWord_Ribbon[] = _("RIBBON");
+const u8 gEasyChatWord_Crush[] = _("CRUSH");
+const u8 gEasyChatWord_Direct[] = _("DIRECT");
+const u8 gEasyChatWord_Tower[] = _("TOWER");
+const u8 gEasyChatWord_Union[] = _("UNION");
+const u8 gEasyChatWord_Room[] = _("ROOM");
+const u8 gEasyChatWord_Wireless[] = _("WIRELESS");
+const u8 gEasyChatWord_Frontier[] = _("FRONTIER");
+
+const struct EasyChatWordInfo gEasyChatGroup_Events[] = {
+ {
+ .text = gEasyChatWord_Appeal,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Events,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_StayAtHome,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Berry,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Contest,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mc,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Judge,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Super,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Stage,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HallOfFame,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Evolution,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hyper,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_BattleTower,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Leaders,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_BattleRoom,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hidden,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SecretBase,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Blend,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_POKEBLOCK,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Master,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rank,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ribbon,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Crush,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Direct,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tower,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Union,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Room,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wireless,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Frontier,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_feelings.h b/src/data/easy_chat/easy_chat_group_feelings.h
new file mode 100755
index 000000000..2dda71808
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_feelings.h
@@ -0,0 +1,417 @@
+const u8 gEasyChatWord_Meet[] = _("MEET");
+const u8 gEasyChatWord_Play[] = _("PLAY");
+const u8 gEasyChatWord_Hurried[] = _("HURRIED");
+const u8 gEasyChatWord_Goes[] = _("GOES");
+const u8 gEasyChatWord_Giddy[] = _("GIDDY");
+const u8 gEasyChatWord_Happy[] = _("HAPPY");
+const u8 gEasyChatWord_Happiness[] = _("HAPPINESS");
+const u8 gEasyChatWord_Excite[] = _("EXCITE");
+const u8 gEasyChatWord_Important[] = _("IMPORTANT");
+const u8 gEasyChatWord_Funny[] = _("FUNNY");
+const u8 gEasyChatWord_Got[] = _("GOT");
+const u8 gEasyChatWord_GoHome[] = _("GO HOME");
+const u8 gEasyChatWord_Disappointed[] = _("DISAPPOINTED");
+const u8 gEasyChatWord_Disappoints[] = _("DISAPPOINTS");
+const u8 gEasyChatWord_Sad[] = _("SAD");
+const u8 gEasyChatWord_Try[] = _("TRY");
+const u8 gEasyChatWord_Tries[] = _("TRIES");
+const u8 gEasyChatWord_Hears[] = _("HEARS");
+const u8 gEasyChatWord_Think[] = _("THINK");
+const u8 gEasyChatWord_Hear[] = _("HEAR");
+const u8 gEasyChatWord_Wants[] = _("WANTS");
+const u8 gEasyChatWord_Misheard[] = _("MISHEARD");
+const u8 gEasyChatWord_Dislike[] = _("DISLIKE");
+const u8 gEasyChatWord_Angry[] = _("ANGRY");
+const u8 gEasyChatWord_Anger[] = _("ANGER");
+const u8 gEasyChatWord_Scary[] = _("SCARY");
+const u8 gEasyChatWord_Lonesome[] = _("LONESOME");
+const u8 gEasyChatWord_Disappoint[] = _("DISAPPOINT");
+const u8 gEasyChatWord_Joy[] = _("JOY");
+const u8 gEasyChatWord_Gets[] = _("GETS");
+const u8 gEasyChatWord_Never[] = _("NEVER");
+const u8 gEasyChatWord_Darn[] = _("DARN");
+const u8 gEasyChatWord_Downcast[] = _("DOWNCAST");
+const u8 gEasyChatWord_Incredible[] = _("INCREDIBLE");
+const u8 gEasyChatWord_Likes[] = _("LIKES");
+const u8 gEasyChatWord_Dislikes[] = _("DISLIKES");
+const u8 gEasyChatWord_Boring[] = _("BORING");
+const u8 gEasyChatWord_Care[] = _("CARE");
+const u8 gEasyChatWord_Cares[] = _("CARES");
+const u8 gEasyChatWord_AllRight[] = _("ALL RIGHT");
+const u8 gEasyChatWord_Adore[] = _("ADORE");
+const u8 gEasyChatWord_Disaster[] = _("DISASTER");
+const u8 gEasyChatWord_Enjoy[] = _("ENJOY");
+const u8 gEasyChatWord_Enjoys[] = _("ENJOYS");
+const u8 gEasyChatWord_Eat[] = _("EAT");
+const u8 gEasyChatWord_Lacking[] = _("LACKING");
+const u8 gEasyChatWord_Bad[] = _("BAD");
+const u8 gEasyChatWord_Hard[] = _("HARD");
+const u8 gEasyChatWord_Terrible[] = _("TERRIBLE");
+const u8 gEasyChatWord_Should[] = _("SHOULD");
+const u8 gEasyChatWord_Nice[] = _("NICE");
+const u8 gEasyChatWord_Drink[] = _("DRINK");
+const u8 gEasyChatWord_Surprise[] = _("SURPRISE");
+const u8 gEasyChatWord_Fear[] = _("FEAR");
+const u8 gEasyChatWord_Want[] = _("WANT");
+const u8 gEasyChatWord_Wait[] = _("WAIT");
+const u8 gEasyChatWord_Satisfied[] = _("SATISFIED");
+const u8 gEasyChatWord_See[] = _("SEE");
+const u8 gEasyChatWord_Rare[] = _("RARE");
+const u8 gEasyChatWord_Negative[] = _("NEGATIVE");
+const u8 gEasyChatWord_Done[] = _("DONE");
+const u8 gEasyChatWord_Danger[] = _("DANGER");
+const u8 gEasyChatWord_Defeated[] = _("DEFEATED");
+const u8 gEasyChatWord_Beat[] = _("BEAT");
+const u8 gEasyChatWord_Great[] = _("GREAT");
+const u8 gEasyChatWord_Romantic[] = _("ROMANTIC");
+const u8 gEasyChatWord_Question[] = _("QUESTION");
+const u8 gEasyChatWord_Understand[] = _("UNDERSTAND");
+const u8 gEasyChatWord_Understands[] = _("UNDERSTANDS");
+
+const struct EasyChatWordInfo gEasyChatGroup_Feelings[] = {
+ {
+ .text = gEasyChatWord_Meet,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Play,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hurried,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Goes,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Giddy,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Happy,
+ .alphabeticalOrder = 63,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Happiness,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Excite,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Important,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Funny,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Got,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_GoHome,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Disappointed,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Disappoints,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sad,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Try,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tries,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hears,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Think,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hear,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wants,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Misheard,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dislike,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Angry,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Anger,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Scary,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lonesome,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Disappoint,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Joy,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gets,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Never,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Darn,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Downcast,
+ .alphabeticalOrder = 64,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Incredible,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Likes,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dislikes,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Boring,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Care,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cares,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_AllRight,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Adore,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Disaster,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Enjoy,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Enjoys,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Eat,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lacking,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Bad,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hard,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Terrible,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Should,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nice,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Drink,
+ .alphabeticalOrder = 66,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Surprise,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fear,
+ .alphabeticalOrder = 65,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Want,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wait,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Satisfied,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_See,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rare,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Negative,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Done,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Danger,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Defeated,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Beat,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Great,
+ .alphabeticalOrder = 67,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Romantic,
+ .alphabeticalOrder = 68,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Question,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Understand,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Understands,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_greetings.h b/src/data/easy_chat/easy_chat_group_greetings.h
new file mode 100755
index 000000000..4df08bf7d
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_greetings.h
@@ -0,0 +1,255 @@
+const u8 gEasyChatWord_Thanks[] = _("THANKS");
+const u8 gEasyChatWord_Yes[] = _("YES");
+const u8 gEasyChatWord_HereGoes[] = _("HERE GOES");
+const u8 gEasyChatWord_HereICome[] = _("HERE I COME");
+const u8 gEasyChatWord_HereItIs[] = _("HERE IT IS");
+const u8 gEasyChatWord_Yeah[] = _("YEAH");
+const u8 gEasyChatWord_Welcome[] = _("WELCOME");
+const u8 gEasyChatWord_Oi[] = _("OI");
+const u8 gEasyChatWord_HowDo[] = _("HOW DO");
+const u8 gEasyChatWord_Congrats[] = _("CONGRATS");
+const u8 gEasyChatWord_GiveMe[] = _("GIVE ME");
+const u8 gEasyChatWord_Sorry[] = _("SORRY");
+const u8 gEasyChatWord_Apologize[] = _("APOLOGIZE");
+const u8 gEasyChatWord_Forgive[] = _("FORGIVE");
+const u8 gEasyChatWord_HeyThere[] = _("HEY, THERE");
+const u8 gEasyChatWord_Hello[] = _("HELLO");
+const u8 gEasyChatWord_GoodBye[] = _("GOOD-BYE");
+const u8 gEasyChatWord_ThankYou[] = _("THANK YOU");
+const u8 gEasyChatWord_IveArrived[] = _("I'VE ARRIVED");
+const u8 gEasyChatWord_Pardon[] = _("PARDON");
+const u8 gEasyChatWord_Excuse[] = _("EXCUSE");
+const u8 gEasyChatWord_SeeYa[] = _("SEE YA");
+const u8 gEasyChatWord_ExcuseMe[] = _("EXCUSE ME");
+const u8 gEasyChatWord_WellThen[] = _("WELL, THEN");
+const u8 gEasyChatWord_GoAhead[] = _("GO AHEAD");
+const u8 gEasyChatWord_Appreciate[] = _("APPRECIATE");
+const u8 gEasyChatWord_HeyQues[] = _("HEY?");
+const u8 gEasyChatWord_WhatsUpQues[] = _("WHAT'S UP?");
+const u8 gEasyChatWord_HuhQues[] = _("HUH?");
+const u8 gEasyChatWord_No[] = _("NO");
+const u8 gEasyChatWord_Hi[] = _("HI");
+const u8 gEasyChatWord_YeahYeah[] = _("YEAH, YEAH");
+const u8 gEasyChatWord_ByeBye[] = _("BYE-BYE");
+const u8 gEasyChatWord_MeetYou[] = _("MEET YOU");
+const u8 gEasyChatWord_Hey[] = _("HEY");
+const u8 gEasyChatWord_Smell[] = _("SMELL");
+const u8 gEasyChatWord_Listening[] = _("LISTENING");
+const u8 gEasyChatWord_HooHah[] = _("HOO-HAH");
+const u8 gEasyChatWord_Yahoo[] = _("YAHOO");
+const u8 gEasyChatWord_Yo[] = _("YO");
+const u8 gEasyChatWord_ComeOver[] = _("COME OVER");
+const u8 gEasyChatWord_CountOn[] = _("COUNT ON");
+
+const struct EasyChatWordInfo gEasyChatGroup_Greetings[] = {
+ {
+ .text = gEasyChatWord_Thanks,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yes,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HereGoes,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HereICome,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HereItIs,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yeah,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Welcome,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Oi,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HowDo,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Congrats,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_GiveMe,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sorry,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Apologize,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Forgive,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HeyThere,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hello,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_GoodBye,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThankYou,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IveArrived,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pardon,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Excuse,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SeeYa,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ExcuseMe,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WellThen,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_GoAhead,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Appreciate,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HeyQues,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WhatsUpQues,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HuhQues,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_No,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hi,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_YeahYeah,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ByeBye,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_MeetYou,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hey,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Smell,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Listening,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HooHah,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yahoo,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yo,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ComeOver,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_CountOn,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_hobbies.h b/src/data/easy_chat/easy_chat_group_hobbies.h
new file mode 100755
index 000000000..fcd73d017
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_hobbies.h
@@ -0,0 +1,327 @@
+const u8 gEasyChatWord_Idol[] = _("IDOL");
+const u8 gEasyChatWord_Anime[] = _("ANIME");
+const u8 gEasyChatWord_Song[] = _("SONG");
+const u8 gEasyChatWord_Movie[] = _("MOVIE");
+const u8 gEasyChatWord_Sweets[] = _("SWEETS");
+const u8 gEasyChatWord_Chat[] = _("CHAT");
+const u8 gEasyChatWord_ChildsPlay[] = _("CHILD'S PLAY");
+const u8 gEasyChatWord_Toys[] = _("TOYS");
+const u8 gEasyChatWord_Music[] = _("MUSIC");
+const u8 gEasyChatWord_Cards[] = _("CARDS");
+const u8 gEasyChatWord_Shopping[] = _("SHOPPING");
+const u8 gEasyChatWord_Camera[] = _("CAMERA");
+const u8 gEasyChatWord_Viewing[] = _("VIEWING");
+const u8 gEasyChatWord_Spectator[] = _("SPECTATOR");
+const u8 gEasyChatWord_Gourmet[] = _("GOURMET");
+const u8 gEasyChatWord_Game[] = _("GAME");
+const u8 gEasyChatWord_Rpg[] = _("RPG");
+const u8 gEasyChatWord_Collection[] = _("COLLECTION");
+const u8 gEasyChatWord_Complete[] = _("COMPLETE");
+const u8 gEasyChatWord_Magazine[] = _("MAGAZINE");
+const u8 gEasyChatWord_Walk[] = _("WALK");
+const u8 gEasyChatWord_Bike[] = _("BIKE");
+const u8 gEasyChatWord_Hobby[] = _("HOBBY");
+const u8 gEasyChatWord_Sports[] = _("SPORTS");
+const u8 gEasyChatWord_Software[] = _("SOFTWARE");
+const u8 gEasyChatWord_Songs[] = _("SONGS");
+const u8 gEasyChatWord_Diet[] = _("DIET");
+const u8 gEasyChatWord_Treasure[] = _("TREASURE");
+const u8 gEasyChatWord_Travel[] = _("TRAVEL");
+const u8 gEasyChatWord_Dance[] = _("DANCE");
+const u8 gEasyChatWord_Channel[] = _("CHANNEL");
+const u8 gEasyChatWord_Making[] = _("MAKING");
+const u8 gEasyChatWord_Fishing[] = _("FISHING");
+const u8 gEasyChatWord_Date[] = _("DATE");
+const u8 gEasyChatWord_Design[] = _("DESIGN");
+const u8 gEasyChatWord_Locomotive[] = _("LOCOMOTIVE");
+const u8 gEasyChatWord_PlushDoll[] = _("PLUSH DOLL");
+const u8 gEasyChatWord_Pc[] = _("PC");
+const u8 gEasyChatWord_Flowers[] = _("FLOWERS");
+const u8 gEasyChatWord_Hero[] = _("HERO");
+const u8 gEasyChatWord_Nap[] = _("NAP");
+const u8 gEasyChatWord_Heroine[] = _("HEROINE");
+const u8 gEasyChatWord_Fashion[] = _("FASHION");
+const u8 gEasyChatWord_Adventure[] = _("ADVENTURE");
+const u8 gEasyChatWord_Board[] = _("BOARD");
+const u8 gEasyChatWord_Ball[] = _("BALL");
+const u8 gEasyChatWord_Book[] = _("BOOK");
+const u8 gEasyChatWord_Festival[] = _("FESTIVAL");
+const u8 gEasyChatWord_Comics[] = _("COMICS");
+const u8 gEasyChatWord_Holiday[] = _("HOLIDAY");
+const u8 gEasyChatWord_Plans[] = _("PLANS");
+const u8 gEasyChatWord_Trendy[] = _("TRENDY");
+const u8 gEasyChatWord_Vacation[] = _("VACATION");
+const u8 gEasyChatWord_Look[] = _("LOOK");
+
+const struct EasyChatWordInfo gEasyChatGroup_Hobbies[] = {
+ {
+ .text = gEasyChatWord_Idol,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Anime,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Song,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Movie,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sweets,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Chat,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ChildsPlay,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Toys,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Music,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cards,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shopping,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Camera,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Viewing,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Spectator,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gourmet,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Game,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rpg,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Collection,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Complete,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Magazine,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Walk,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Bike,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hobby,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sports,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Software,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Songs,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Diet,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Treasure,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Travel,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dance,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Channel,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Making,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fishing,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Date,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Design,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Locomotive,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_PlushDoll,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pc,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Flowers,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hero,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nap,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Heroine,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fashion,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Adventure,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Board,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ball,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Book,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Festival,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Comics,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Holiday,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Plans,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Trendy,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Vacation,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Look,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_lifestyle.h b/src/data/easy_chat/easy_chat_group_lifestyle.h
new file mode 100755
index 000000000..9ed60025d
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_lifestyle.h
@@ -0,0 +1,273 @@
+const u8 gEasyChatWord_Chores[] = _("CHORES");
+const u8 gEasyChatWord_Home[] = _("HOME");
+const u8 gEasyChatWord_Money[] = _("MONEY");
+const u8 gEasyChatWord_Allowance[] = _("ALLOWANCE");
+const u8 gEasyChatWord_Bath[] = _("BATH");
+const u8 gEasyChatWord_Conversation[] = _("CONVERSATION");
+const u8 gEasyChatWord_School[] = _("SCHOOL");
+const u8 gEasyChatWord_Commemorate[] = _("COMMEMORATE");
+const u8 gEasyChatWord_Habit[] = _("HABIT");
+const u8 gEasyChatWord_Group[] = _("GROUP");
+const u8 gEasyChatWord_Word[] = _("WORD");
+const u8 gEasyChatWord_Store[] = _("STORE");
+const u8 gEasyChatWord_Service[] = _("SERVICE");
+const u8 gEasyChatWord_Work[] = _("WORK");
+const u8 gEasyChatWord_System[] = _("SYSTEM");
+const u8 gEasyChatWord_Train[] = _("TRAIN");
+const u8 gEasyChatWord_Class[] = _("CLASS");
+const u8 gEasyChatWord_Lessons[] = _("LESSONS");
+const u8 gEasyChatWord_Information[] = _("INFORMATION");
+const u8 gEasyChatWord_Living[] = _("LIVING");
+const u8 gEasyChatWord_Teacher[] = _("TEACHER");
+const u8 gEasyChatWord_Tournament[] = _("TOURNAMENT");
+const u8 gEasyChatWord_Letter[] = _("LETTER");
+const u8 gEasyChatWord_Event[] = _("EVENT");
+const u8 gEasyChatWord_Digital[] = _("DIGITAL");
+const u8 gEasyChatWord_Test[] = _("TEST");
+const u8 gEasyChatWord_DeptStore[] = _("DEPT. STORE");
+const u8 gEasyChatWord_Television[] = _("TELEVISION");
+const u8 gEasyChatWord_Phone[] = _("PHONE");
+const u8 gEasyChatWord_Item[] = _("ITEM");
+const u8 gEasyChatWord_Name[] = _("NAME");
+const u8 gEasyChatWord_News[] = _("NEWS");
+const u8 gEasyChatWord_Popular[] = _("POPULAR");
+const u8 gEasyChatWord_Party[] = _("PARTY");
+const u8 gEasyChatWord_Study[] = _("STUDY");
+const u8 gEasyChatWord_Machine[] = _("MACHINE");
+const u8 gEasyChatWord_Mail[] = _("MAIL");
+const u8 gEasyChatWord_Message[] = _("MESSAGE");
+const u8 gEasyChatWord_Promise[] = _("PROMISE");
+const u8 gEasyChatWord_Dream[] = _("DREAM");
+const u8 gEasyChatWord_Kindergarten[] = _("KINDERGARTEN");
+const u8 gEasyChatWord_Life[] = _("LIFE");
+const u8 gEasyChatWord_Radio[] = _("RADIO");
+const u8 gEasyChatWord_Rental[] = _("RENTAL");
+const u8 gEasyChatWord_World[] = _("WORLD");
+
+const struct EasyChatWordInfo gEasyChatGroup_Lifestyle[] = {
+ {
+ .text = gEasyChatWord_Chores,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Home,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Money,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Allowance,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Bath,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Conversation,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_School,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Commemorate,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Habit,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Group,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Word,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Store,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Service,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Work,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_System,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Train,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Class,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lessons,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Information,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Living,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Teacher,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tournament,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Letter,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Event,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Digital,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Test,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_DeptStore,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Television,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Phone,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Item,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Name,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_News,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Popular,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Party,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Study,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Machine,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mail,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Message,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Promise,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dream,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Kindergarten,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Life,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Radio,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rental,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_World,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_misc.h b/src/data/easy_chat/easy_chat_group_misc.h
new file mode 100755
index 000000000..fbc9a7069
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_misc.h
@@ -0,0 +1,255 @@
+const u8 gEasyChatWord_Highs[] = _("HIGHS");
+const u8 gEasyChatWord_Lows[] = _("LOWS");
+const u8 gEasyChatWord_Um[] = _("UM");
+const u8 gEasyChatWord_Rear[] = _("REAR");
+const u8 gEasyChatWord_Things[] = _("THINGS");
+const u8 gEasyChatWord_Thing[] = _("THING");
+const u8 gEasyChatWord_Below[] = _("BELOW");
+const u8 gEasyChatWord_Above[] = _("ABOVE");
+const u8 gEasyChatWord_Back[] = _("BACK");
+const u8 gEasyChatWord_High[] = _("HIGH");
+const u8 gEasyChatWord_Here[] = _("HERE");
+const u8 gEasyChatWord_Inside[] = _("INSIDE");
+const u8 gEasyChatWord_Outside[] = _("OUTSIDE");
+const u8 gEasyChatWord_Beside[] = _("BESIDE");
+const u8 gEasyChatWord_ThisIsItExcl[] = _("THIS IS IT!");
+const u8 gEasyChatWord_This[] = _("THIS");
+const u8 gEasyChatWord_Every[] = _("EVERY");
+const u8 gEasyChatWord_These[] = _("THESE");
+const u8 gEasyChatWord_TheseWere[] = _("THESE WERE");
+const u8 gEasyChatWord_Down[] = _("DOWN");
+const u8 gEasyChatWord_That[] = _("THAT");
+const u8 gEasyChatWord_ThoseAre[] = _("THOSE ARE");
+const u8 gEasyChatWord_ThoseWere[] = _("THOSE WERE");
+const u8 gEasyChatWord_ThatsItExcl[] = _("THAT'S IT!");
+const u8 gEasyChatWord_Am[] = _("AM");
+const u8 gEasyChatWord_ThatWas[] = _("THAT WAS");
+const u8 gEasyChatWord_Front[] = _("FRONT");
+const u8 gEasyChatWord_Up[] = _("UP");
+const u8 gEasyChatWord_Choice[] = _("CHOICE");
+const u8 gEasyChatWord_Far[] = _("FAR");
+const u8 gEasyChatWord_Away[] = _("AWAY");
+const u8 gEasyChatWord_Near[] = _("NEAR");
+const u8 gEasyChatWord_Where[] = _("WHERE");
+const u8 gEasyChatWord_When[] = _("WHEN");
+const u8 gEasyChatWord_What[] = _("WHAT");
+const u8 gEasyChatWord_Deep[] = _("DEEP");
+const u8 gEasyChatWord_Shallow[] = _("SHALLOW");
+const u8 gEasyChatWord_Why[] = _("WHY");
+const u8 gEasyChatWord_Confused[] = _("CONFUSED");
+const u8 gEasyChatWord_Opposite[] = _("OPPOSITE");
+const u8 gEasyChatWord_Left[] = _("LEFT");
+const u8 gEasyChatWord_Right[] = _("RIGHT");
+
+const struct EasyChatWordInfo gEasyChatGroup_Misc[] = {
+ {
+ .text = gEasyChatWord_Highs,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lows,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Um,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rear,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Things,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thing,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Below,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Above,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Back,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_High,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Here,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Inside,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Outside,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Beside,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThisIsItExcl,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_This,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Every,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_These,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TheseWere,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Down,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_That,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThoseAre,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThoseWere,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThatsItExcl,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Am,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThatWas,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Front,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Up,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Choice,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Far,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Away,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Near,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Where,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_When,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_What,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Deep,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shallow,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Why,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Confused,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Opposite,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Left,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Right,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_move_1.h b/src/data/easy_chat/easy_chat_group_move_1.h
new file mode 100755
index 000000000..3b0e8acca
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_move_1.h
@@ -0,0 +1,158 @@
+#include "constants/moves.h"
+
+const u16 gEasyChatGroup_Move1[] = {
+ MOVE_ABSORB,
+ MOVE_AEROBLAST,
+ MOVE_AGILITY,
+ MOVE_AIR_CUTTER,
+ MOVE_ANCIENT_POWER,
+ MOVE_AROMATHERAPY,
+ MOVE_ASTONISH,
+ MOVE_AURORA_BEAM,
+ MOVE_BIDE,
+ MOVE_BIND,
+ MOVE_BITE,
+ MOVE_BRICK_BREAK,
+ MOVE_BUBBLE,
+ MOVE_CHARGE,
+ MOVE_CHARM,
+ MOVE_CLAMP,
+ MOVE_CONFUSE_RAY,
+ MOVE_CONSTRICT,
+ MOVE_COSMIC_POWER,
+ MOVE_COUNTER,
+ MOVE_CRABHAMMER,
+ MOVE_CROSS_CHOP,
+ MOVE_CRUNCH,
+ MOVE_CUT,
+ MOVE_DIG,
+ MOVE_DISABLE,
+ MOVE_DOUBLE_TEAM,
+ MOVE_DOUBLE_EDGE,
+ MOVE_DOUBLE_SLAP,
+ MOVE_EARTHQUAKE,
+ MOVE_ENCORE,
+ MOVE_ENDEAVOR,
+ MOVE_ENDURE,
+ MOVE_EXTRASENSORY,
+ MOVE_EXTREME_SPEED,
+ MOVE_FACADE,
+ MOVE_FAKE_TEARS,
+ MOVE_FISSURE,
+ MOVE_FLAIL,
+ MOVE_FLAME_WHEEL,
+ MOVE_FLAMETHROWER,
+ MOVE_FLATTER,
+ MOVE_FLY,
+ MOVE_FOCUS_ENERGY,
+ MOVE_FOCUS_PUNCH,
+ MOVE_FOLLOW_ME,
+ MOVE_GIGA_DRAIN,
+ MOVE_GRASS_WHISTLE,
+ MOVE_GROWTH,
+ MOVE_GRUDGE,
+ MOVE_GUST,
+ MOVE_HAIL,
+ MOVE_HARDEN,
+ MOVE_HAZE,
+ MOVE_HEADBUTT,
+ MOVE_HEAL_BELL,
+ MOVE_HYPNOSIS,
+ MOVE_ICE_BALL,
+ MOVE_ICY_WIND,
+ MOVE_IRON_TAIL,
+ MOVE_KARATE_CHOP,
+ MOVE_KINESIS,
+ MOVE_LEECH_LIFE,
+ MOVE_LICK,
+ MOVE_LOVELY_KISS,
+ MOVE_LOW_KICK,
+ MOVE_MEAN_LOOK,
+ MOVE_MEMENTO,
+ MOVE_METAL_SOUND,
+ MOVE_METEOR_MASH,
+ MOVE_MIND_READER,
+ MOVE_MIRROR_MOVE,
+ MOVE_MIST,
+ MOVE_MORNING_SUN,
+ MOVE_NATURE_POWER,
+ MOVE_NIGHTMARE,
+ MOVE_OCTAZOOKA,
+ MOVE_ODOR_SLEUTH,
+ MOVE_OUTRAGE,
+ MOVE_OVERHEAT,
+ MOVE_PAIN_SPLIT,
+ MOVE_POWDER_SNOW,
+ MOVE_PSYBEAM,
+ MOVE_PSYCH_UP,
+ MOVE_PSYCHIC,
+ MOVE_PSYCHO_BOOST,
+ MOVE_PSYWAVE,
+ MOVE_PURSUIT,
+ MOVE_RAGE,
+ MOVE_RAIN_DANCE,
+ MOVE_RAPID_SPIN,
+ MOVE_RAZOR_WIND,
+ MOVE_RECOVER,
+ MOVE_RETURN,
+ MOVE_REVERSAL,
+ MOVE_ROCK_SLIDE,
+ MOVE_ROCK_SMASH,
+ MOVE_ROCK_THROW,
+ MOVE_ROCK_TOMB,
+ MOVE_ROLLOUT,
+ MOVE_SACRED_FIRE,
+ MOVE_SAFEGUARD,
+ MOVE_SAND_TOMB,
+ MOVE_SAND_ATTACK,
+ MOVE_SANDSTORM,
+ MOVE_SCARY_FACE,
+ MOVE_SCREECH,
+ MOVE_SELF_DESTRUCT,
+ MOVE_SHADOW_BALL,
+ MOVE_SHADOW_PUNCH,
+ MOVE_SHARPEN,
+ MOVE_SHEER_COLD,
+ MOVE_SIGNAL_BEAM,
+ MOVE_SILVER_WIND,
+ MOVE_SING,
+ MOVE_SKETCH,
+ MOVE_SKILL_SWAP,
+ MOVE_SKY_ATTACK,
+ MOVE_SKY_UPPERCUT,
+ MOVE_SLASH,
+ MOVE_SMELLING_SALT,
+ MOVE_SMOG,
+ MOVE_SMOKESCREEN,
+ MOVE_SNORE,
+ MOVE_SOLAR_BEAM,
+ MOVE_SONIC_BOOM,
+ MOVE_SPARK,
+ MOVE_SPIDER_WEB,
+ MOVE_SPITE,
+ MOVE_SPORE,
+ MOVE_STRENGTH,
+ MOVE_STRING_SHOT,
+ MOVE_STUN_SPORE,
+ MOVE_SUBMISSION,
+ MOVE_SUPER_FANG,
+ MOVE_SWAGGER,
+ MOVE_SWEET_SCENT,
+ MOVE_SWIFT,
+ MOVE_SYNTHESIS,
+ MOVE_TAIL_WHIP,
+ MOVE_THRASH,
+ MOVE_THUNDER,
+ MOVE_THUNDERBOLT,
+ MOVE_THUNDER_PUNCH,
+ MOVE_TICKLE,
+ MOVE_TORMENT,
+ MOVE_UPROAR,
+ MOVE_VITAL_THROW,
+ MOVE_WATER_SPOUT,
+ MOVE_WEATHER_BALL,
+ MOVE_WHIRLPOOL,
+ MOVE_WILL_O_WISP,
+ MOVE_WITHDRAW,
+ MOVE_YAWN,
+};
diff --git a/src/data/easy_chat/easy_chat_group_move_2.h b/src/data/easy_chat/easy_chat_group_move_2.h
new file mode 100755
index 000000000..e0a0cd379
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_move_2.h
@@ -0,0 +1,204 @@
+#include "constants/moves.h"
+
+const u16 gEasyChatGroup_Move2[] = {
+ MOVE_ACID,
+ MOVE_ACID_ARMOR,
+ MOVE_AERIAL_ACE,
+ MOVE_AMNESIA,
+ MOVE_ARM_THRUST,
+ MOVE_ASSIST,
+ MOVE_ATTRACT,
+ MOVE_BARRAGE,
+ MOVE_BARRIER,
+ MOVE_BATON_PASS,
+ MOVE_BEAT_UP,
+ MOVE_BELLY_DRUM,
+ MOVE_BLAST_BURN,
+ MOVE_BLAZE_KICK,
+ MOVE_BLIZZARD,
+ MOVE_BLOCK,
+ MOVE_BODY_SLAM,
+ MOVE_BONE_CLUB,
+ MOVE_BONE_RUSH,
+ MOVE_BONEMERANG,
+ MOVE_BOUNCE,
+ MOVE_BUBBLE_BEAM,
+ MOVE_BULK_UP,
+ MOVE_BULLET_SEED,
+ MOVE_CALM_MIND,
+ MOVE_CAMOUFLAGE,
+ MOVE_COMET_PUNCH,
+ MOVE_CONFUSION,
+ MOVE_CONVERSION,
+ MOVE_CONVERSION_2,
+ MOVE_COTTON_SPORE,
+ MOVE_COVET,
+ MOVE_CRUSH_CLAW,
+ MOVE_CURSE,
+ MOVE_DEFENSE_CURL,
+ MOVE_DESTINY_BOND,
+ MOVE_DETECT,
+ MOVE_DIVE,
+ MOVE_DIZZY_PUNCH,
+ MOVE_DOOM_DESIRE,
+ MOVE_DOUBLE_KICK,
+ MOVE_DRAGON_CLAW,
+ MOVE_DRAGON_DANCE,
+ MOVE_DRAGON_RAGE,
+ MOVE_DRAGON_BREATH,
+ MOVE_DREAM_EATER,
+ MOVE_DRILL_PECK,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_EGG_BOMB,
+ MOVE_EMBER,
+ MOVE_ERUPTION,
+ MOVE_EXPLOSION,
+ MOVE_FAINT_ATTACK,
+ MOVE_FAKE_OUT,
+ MOVE_FALSE_SWIPE,
+ MOVE_FEATHER_DANCE,
+ MOVE_FIRE_BLAST,
+ MOVE_FIRE_PUNCH,
+ MOVE_FIRE_SPIN,
+ MOVE_FLASH,
+ MOVE_FORESIGHT,
+ MOVE_FRENZY_PLANT,
+ MOVE_FRUSTRATION,
+ MOVE_FURY_ATTACK,
+ MOVE_FURY_CUTTER,
+ MOVE_FURY_SWIPES,
+ MOVE_FUTURE_SIGHT,
+ MOVE_GLARE,
+ MOVE_GROWL,
+ MOVE_GUILLOTINE,
+ MOVE_HEAT_WAVE,
+ MOVE_HELPING_HAND,
+ MOVE_HI_JUMP_KICK,
+ MOVE_HIDDEN_POWER,
+ MOVE_HORN_ATTACK,
+ MOVE_HORN_DRILL,
+ MOVE_HOWL,
+ MOVE_HYDRO_CANNON,
+ MOVE_HYDRO_PUMP,
+ MOVE_HYPER_BEAM,
+ MOVE_HYPER_FANG,
+ MOVE_HYPER_VOICE,
+ MOVE_ICE_BEAM,
+ MOVE_ICE_PUNCH,
+ MOVE_ICICLE_SPEAR,
+ MOVE_IMPRISON,
+ MOVE_INGRAIN,
+ MOVE_IRON_DEFENSE,
+ MOVE_JUMP_KICK,
+ MOVE_KNOCK_OFF,
+ MOVE_LEAF_BLADE,
+ MOVE_LEECH_SEED,
+ MOVE_LEER,
+ MOVE_LIGHT_SCREEN,
+ MOVE_LOCK_ON,
+ MOVE_LUSTER_PURGE,
+ MOVE_MACH_PUNCH,
+ MOVE_MAGIC_COAT,
+ MOVE_MAGICAL_LEAF,
+ MOVE_MAGNITUDE,
+ MOVE_MEDITATE,
+ MOVE_MEGA_DRAIN,
+ MOVE_MEGA_KICK,
+ MOVE_MEGA_PUNCH,
+ MOVE_MEGAHORN,
+ MOVE_METAL_CLAW,
+ MOVE_METRONOME,
+ MOVE_MILK_DRINK,
+ MOVE_MIMIC,
+ MOVE_MINIMIZE,
+ MOVE_MIRROR_COAT,
+ MOVE_MIST_BALL,
+ MOVE_MOONLIGHT,
+ MOVE_MUD_SHOT,
+ MOVE_MUD_SPORT,
+ MOVE_MUD_SLAP,
+ MOVE_MUDDY_WATER,
+ MOVE_NEEDLE_ARM,
+ MOVE_NIGHT_SHADE,
+ MOVE_PAY_DAY,
+ MOVE_PECK,
+ MOVE_PERISH_SONG,
+ MOVE_PETAL_DANCE,
+ MOVE_PIN_MISSILE,
+ MOVE_POISON_FANG,
+ MOVE_POISON_GAS,
+ MOVE_POISON_STING,
+ MOVE_POISON_TAIL,
+ MOVE_POISON_POWDER,
+ MOVE_POUND,
+ MOVE_PRESENT,
+ MOVE_PROTECT,
+ MOVE_QUICK_ATTACK,
+ MOVE_RAZOR_LEAF,
+ MOVE_RECYCLE,
+ MOVE_REFLECT,
+ MOVE_REFRESH,
+ MOVE_REST,
+ MOVE_REVENGE,
+ MOVE_ROAR,
+ MOVE_ROCK_BLAST,
+ MOVE_ROLE_PLAY,
+ MOVE_ROLLING_KICK,
+ MOVE_SCRATCH,
+ MOVE_SECRET_POWER,
+ MOVE_SEISMIC_TOSS,
+ MOVE_SHOCK_WAVE,
+ MOVE_SKULL_BASH,
+ MOVE_SLACK_OFF,
+ MOVE_SLAM,
+ MOVE_SLEEP_POWDER,
+ MOVE_SLEEP_TALK,
+ MOVE_SLUDGE,
+ MOVE_SLUDGE_BOMB,
+ MOVE_SNATCH,
+ MOVE_SOFT_BOILED,
+ MOVE_SPIKE_CANNON,
+ MOVE_SPIKES,
+ MOVE_SPIT_UP,
+ MOVE_SPLASH,
+ MOVE_STEEL_WING,
+ MOVE_STOCKPILE,
+ MOVE_STOMP,
+ MOVE_STRUGGLE,
+ MOVE_SUBSTITUTE,
+ MOVE_SUNNY_DAY,
+ MOVE_SUPERPOWER,
+ MOVE_SUPERSONIC,
+ MOVE_SURF,
+ MOVE_SWALLOW,
+ MOVE_SWEET_KISS,
+ MOVE_SWORDS_DANCE,
+ MOVE_TACKLE,
+ MOVE_TAIL_GLOW,
+ MOVE_TAKE_DOWN,
+ MOVE_TAUNT,
+ MOVE_TEETER_DANCE,
+ MOVE_TELEPORT,
+ MOVE_THIEF,
+ MOVE_THUNDER_WAVE,
+ MOVE_THUNDER_SHOCK,
+ MOVE_TOXIC,
+ MOVE_TRANSFORM,
+ MOVE_TRI_ATTACK,
+ MOVE_TRICK,
+ MOVE_TRIPLE_KICK,
+ MOVE_TWINEEDLE,
+ MOVE_TWISTER,
+ MOVE_VICE_GRIP,
+ MOVE_VINE_WHIP,
+ MOVE_VOLT_TACKLE,
+ MOVE_WATER_GUN,
+ MOVE_WATER_PULSE,
+ MOVE_WATER_SPORT,
+ MOVE_WATERFALL,
+ MOVE_WHIRLWIND,
+ MOVE_WING_ATTACK,
+ MOVE_WISH,
+ MOVE_WRAP,
+ MOVE_ZAP_CANNON,
+};
diff --git a/src/data/easy_chat/easy_chat_group_people.h b/src/data/easy_chat/easy_chat_group_people.h
new file mode 100755
index 000000000..17d2d5339
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_people.h
@@ -0,0 +1,453 @@
+const u8 gEasyChatWord_Opponent[] = _("OPPONENT");
+const u8 gEasyChatWord_I[] = _("I");
+const u8 gEasyChatWord_You[] = _("YOU");
+const u8 gEasyChatWord_Yours[] = _("YOURS");
+const u8 gEasyChatWord_Son[] = _("SON");
+const u8 gEasyChatWord_Your[] = _("YOUR");
+const u8 gEasyChatWord_Youre[] = _("YOU'RE");
+const u8 gEasyChatWord_Youve[] = _("YOU'VE");
+const u8 gEasyChatWord_Mother[] = _("MOTHER");
+const u8 gEasyChatWord_Grandfather[] = _("GRANDFATHER");
+const u8 gEasyChatWord_Uncle[] = _("UNCLE");
+const u8 gEasyChatWord_Father[] = _("FATHER");
+const u8 gEasyChatWord_Boy[] = _("BOY");
+const u8 gEasyChatWord_Adult[] = _("ADULT");
+const u8 gEasyChatWord_Brother[] = _("BROTHER");
+const u8 gEasyChatWord_Sister[] = _("SISTER");
+const u8 gEasyChatWord_Grandmother[] = _("GRANDMOTHER");
+const u8 gEasyChatWord_Aunt[] = _("AUNT");
+const u8 gEasyChatWord_Parent[] = _("PARENT");
+const u8 gEasyChatWord_Man[] = _("MAN");
+const u8 gEasyChatWord_Me[] = _("ME");
+const u8 gEasyChatWord_Girl[] = _("GIRL");
+const u8 gEasyChatWord_Babe[] = _("BABE");
+const u8 gEasyChatWord_Family[] = _("FAMILY");
+const u8 gEasyChatWord_Her[] = _("HER");
+const u8 gEasyChatWord_Him[] = _("HIM");
+const u8 gEasyChatWord_He[] = _("HE");
+const u8 gEasyChatWord_Place[] = _("PLACE");
+const u8 gEasyChatWord_Daughter[] = _("DAUGHTER");
+const u8 gEasyChatWord_His[] = _("HIS");
+const u8 gEasyChatWord_Hes[] = _("HE'S");
+const u8 gEasyChatWord_Arent[] = _("AREN'T");
+const u8 gEasyChatWord_Siblings[] = _("SIBLINGS");
+const u8 gEasyChatWord_Kid[] = _("KID");
+const u8 gEasyChatWord_Children[] = _("CHILDREN");
+const u8 gEasyChatWord_Mr[] = _("MR.");
+const u8 gEasyChatWord_Mrs[] = _("MRS.");
+const u8 gEasyChatWord_Myself[] = _("MYSELF");
+const u8 gEasyChatWord_IWas[] = _("I WAS");
+const u8 gEasyChatWord_ToMe[] = _("TO ME");
+const u8 gEasyChatWord_My[] = _("MY");
+const u8 gEasyChatWord_IAm[] = _("I AM");
+const u8 gEasyChatWord_Ive[] = _("I'VE");
+const u8 gEasyChatWord_Who[] = _("WHO");
+const u8 gEasyChatWord_Someone[] = _("SOMEONE");
+const u8 gEasyChatWord_WhoWas[] = _("WHO WAS");
+const u8 gEasyChatWord_ToWhom[] = _("TO WHOM");
+const u8 gEasyChatWord_Whose[] = _("WHOSE");
+const u8 gEasyChatWord_WhoIs[] = _("WHO IS");
+const u8 gEasyChatWord_Its[] = _("IT'S");
+const u8 gEasyChatWord_Lady[] = _("LADY");
+const u8 gEasyChatWord_Friend[] = _("FRIEND");
+const u8 gEasyChatWord_Ally[] = _("ALLY");
+const u8 gEasyChatWord_Person[] = _("PERSON");
+const u8 gEasyChatWord_Dude[] = _("DUDE");
+const u8 gEasyChatWord_They[] = _("THEY");
+const u8 gEasyChatWord_TheyWere[] = _("THEY WERE");
+const u8 gEasyChatWord_ToThem[] = _("TO THEM");
+const u8 gEasyChatWord_Their[] = _("THEIR");
+const u8 gEasyChatWord_Theyre[] = _("THEY'RE");
+const u8 gEasyChatWord_Theyve[] = _("THEY'VE");
+const u8 gEasyChatWord_We[] = _("WE");
+const u8 gEasyChatWord_Been[] = _("BEEN");
+const u8 gEasyChatWord_ToUs[] = _("TO US");
+const u8 gEasyChatWord_Our[] = _("OUR");
+const u8 gEasyChatWord_WeAre[] = _("WE'RE");
+const u8 gEasyChatWord_Rival[] = _("RIVAL");
+const u8 gEasyChatWord_Weve[] = _("WE'VE");
+const u8 gEasyChatWord_Woman[] = _("WOMAN");
+const u8 gEasyChatWord_She[] = _("SHE");
+const u8 gEasyChatWord_SheWas[] = _("SHE WAS");
+const u8 gEasyChatWord_ToHer[] = _("TO HER");
+const u8 gEasyChatWord_Hers[] = _("HERS");
+const u8 gEasyChatWord_SheIs[] = _("SHE IS");
+const u8 gEasyChatWord_Some[] = _("SOME");
+
+const struct EasyChatWordInfo gEasyChatGroup_People[] = {
+ {
+ .text = gEasyChatWord_Opponent,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_I,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_You,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yours,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Son,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Your,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Youre,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Youve,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mother,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Grandfather,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Uncle,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Father,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Boy,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Adult,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Brother,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sister,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Grandmother,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Aunt,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Parent,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Man,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Me,
+ .alphabeticalOrder = 72,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Girl,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Babe,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Family,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Her,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Him,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_He,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Place,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Daughter,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_His,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hes,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Arent,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Siblings,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Kid,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Children,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mr,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mrs,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Myself,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IWas,
+ .alphabeticalOrder = 64,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ToMe,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_My,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IAm,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ive,
+ .alphabeticalOrder = 66,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Who,
+ .alphabeticalOrder = 69,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Someone,
+ .alphabeticalOrder = 73,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WhoWas,
+ .alphabeticalOrder = 70,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ToWhom,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Whose,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WhoIs,
+ .alphabeticalOrder = 74,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Its,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lady,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Friend,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ally,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Person,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dude,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_They,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TheyWere,
+ .alphabeticalOrder = 71,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ToThem,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Their,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Theyre,
+ .alphabeticalOrder = 63,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Theyve,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_We,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Been,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ToUs,
+ .alphabeticalOrder = 65,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Our,
+ .alphabeticalOrder = 67,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WeAre,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rival,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Weve,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Woman,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_She,
+ .alphabeticalOrder = 68,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SheWas,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ToHer,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hers,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SheIs,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Some,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_pokemon.h b/src/data/easy_chat/easy_chat_group_pokemon.h
new file mode 100755
index 000000000..9993a5144
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_pokemon.h
@@ -0,0 +1,206 @@
+#include "constants/species.h"
+
+const u16 gEasyChatGroup_Pokemon[] = {
+ SPECIES_ABRA,
+ SPECIES_ABSOL,
+ SPECIES_AGGRON,
+ SPECIES_ALAKAZAM,
+ SPECIES_ALTARIA,
+ SPECIES_ANORITH,
+ SPECIES_ARMALDO,
+ SPECIES_ARON,
+ SPECIES_AZUMARILL,
+ SPECIES_AZURILL,
+ SPECIES_BAGON,
+ SPECIES_BALTOY,
+ SPECIES_BANETTE,
+ SPECIES_BARBOACH,
+ SPECIES_BEAUTIFLY,
+ SPECIES_BELDUM,
+ SPECIES_BELLOSSOM,
+ SPECIES_BLAZIKEN,
+ SPECIES_BRELOOM,
+ SPECIES_CACNEA,
+ SPECIES_CACTURNE,
+ SPECIES_CAMERUPT,
+ SPECIES_CARVANHA,
+ SPECIES_CASCOON,
+ SPECIES_CASTFORM,
+ SPECIES_CHIMECHO,
+ SPECIES_CHINCHOU,
+ SPECIES_CLAMPERL,
+ SPECIES_CLAYDOL,
+ SPECIES_COMBUSKEN,
+ SPECIES_CORPHISH,
+ SPECIES_CORSOLA,
+ SPECIES_CRADILY,
+ SPECIES_CRAWDAUNT,
+ SPECIES_CROBAT,
+ SPECIES_DELCATTY,
+ SPECIES_DEOXYS,
+ SPECIES_DODRIO,
+ SPECIES_DODUO,
+ SPECIES_DONPHAN,
+ SPECIES_DUSCLOPS,
+ SPECIES_DUSKULL,
+ SPECIES_DUSTOX,
+ SPECIES_ELECTRIKE,
+ SPECIES_ELECTRODE,
+ SPECIES_EXPLOUD,
+ SPECIES_FEEBAS,
+ SPECIES_FLYGON,
+ SPECIES_GARDEVOIR,
+ SPECIES_GEODUDE,
+ SPECIES_GIRAFARIG,
+ SPECIES_GLALIE,
+ SPECIES_GLOOM,
+ SPECIES_GOLBAT,
+ SPECIES_GOLDEEN,
+ SPECIES_GOLDUCK,
+ SPECIES_GOLEM,
+ SPECIES_GOREBYSS,
+ SPECIES_GRAVELER,
+ SPECIES_GRIMER,
+ SPECIES_GROUDON,
+ SPECIES_GROVYLE,
+ SPECIES_GRUMPIG,
+ SPECIES_GULPIN,
+ SPECIES_GYARADOS,
+ SPECIES_HARIYAMA,
+ SPECIES_HERACROSS,
+ SPECIES_HORSEA,
+ SPECIES_HUNTAIL,
+ SPECIES_IGGLYBUFF,
+ SPECIES_ILLUMISE,
+ SPECIES_JIGGLYPUFF,
+ SPECIES_JIRACHI,
+ SPECIES_KADABRA,
+ SPECIES_KECLEON,
+ SPECIES_KINGDRA,
+ SPECIES_KIRLIA,
+ SPECIES_KOFFING,
+ SPECIES_KYOGRE,
+ SPECIES_LAIRON,
+ SPECIES_LANTURN,
+ SPECIES_LATIAS,
+ SPECIES_LATIOS,
+ SPECIES_LILEEP,
+ SPECIES_LINOONE,
+ SPECIES_LOMBRE,
+ SPECIES_LOTAD,
+ SPECIES_LOUDRED,
+ SPECIES_LUDICOLO,
+ SPECIES_LUNATONE,
+ SPECIES_LUVDISC,
+ SPECIES_MACHAMP,
+ SPECIES_MACHOKE,
+ SPECIES_MACHOP,
+ SPECIES_MAGCARGO,
+ SPECIES_MAGIKARP,
+ SPECIES_MAGNEMITE,
+ SPECIES_MAGNETON,
+ SPECIES_MAKUHITA,
+ SPECIES_MANECTRIC,
+ SPECIES_MARILL,
+ SPECIES_MARSHTOMP,
+ SPECIES_MASQUERAIN,
+ SPECIES_MAWILE,
+ SPECIES_MEDICHAM,
+ SPECIES_MEDITITE,
+ SPECIES_METAGROSS,
+ SPECIES_METANG,
+ SPECIES_MIGHTYENA,
+ SPECIES_MILOTIC,
+ SPECIES_MINUN,
+ SPECIES_MUDKIP,
+ SPECIES_MUK,
+ SPECIES_NATU,
+ SPECIES_NINCADA,
+ SPECIES_NINETALES,
+ SPECIES_NINJASK,
+ SPECIES_NOSEPASS,
+ SPECIES_NUMEL,
+ SPECIES_NUZLEAF,
+ SPECIES_ODDISH,
+ SPECIES_PELIPPER,
+ SPECIES_PHANPY,
+ SPECIES_PICHU,
+ SPECIES_PIKACHU,
+ SPECIES_PINSIR,
+ SPECIES_PLUSLE,
+ SPECIES_POOCHYENA,
+ SPECIES_PSYDUCK,
+ SPECIES_RAICHU,
+ SPECIES_RALTS,
+ SPECIES_RAYQUAZA,
+ SPECIES_REGICE,
+ SPECIES_REGIROCK,
+ SPECIES_REGISTEEL,
+ SPECIES_RELICANTH,
+ SPECIES_RHYDON,
+ SPECIES_RHYHORN,
+ SPECIES_ROSELIA,
+ SPECIES_SABLEYE,
+ SPECIES_SALAMENCE,
+ SPECIES_SANDSHREW,
+ SPECIES_SANDSLASH,
+ SPECIES_SCEPTILE,
+ SPECIES_SEADRA,
+ SPECIES_SEAKING,
+ SPECIES_SEALEO,
+ SPECIES_SEEDOT,
+ SPECIES_SEVIPER,
+ SPECIES_SHARPEDO,
+ SPECIES_SHEDINJA,
+ SPECIES_SHELGON,
+ SPECIES_SHIFTRY,
+ SPECIES_SHROOMISH,
+ SPECIES_SHUPPET,
+ SPECIES_SILCOON,
+ SPECIES_SKARMORY,
+ SPECIES_SKITTY,
+ SPECIES_SLAKING,
+ SPECIES_SLAKOTH,
+ SPECIES_SLUGMA,
+ SPECIES_SNORUNT,
+ SPECIES_SOLROCK,
+ SPECIES_SPHEAL,
+ SPECIES_SPINDA,
+ SPECIES_SPOINK,
+ SPECIES_STARMIE,
+ SPECIES_STARYU,
+ SPECIES_SURSKIT,
+ SPECIES_SWABLU,
+ SPECIES_SWALOT,
+ SPECIES_SWAMPERT,
+ SPECIES_SWELLOW,
+ SPECIES_TAILLOW,
+ SPECIES_TENTACOOL,
+ SPECIES_TENTACRUEL,
+ SPECIES_TORCHIC,
+ SPECIES_TORKOAL,
+ SPECIES_TRAPINCH,
+ SPECIES_TREECKO,
+ SPECIES_TROPIUS,
+ SPECIES_VIBRAVA,
+ SPECIES_VIGOROTH,
+ SPECIES_VILEPLUME,
+ SPECIES_VOLBEAT,
+ SPECIES_VOLTORB,
+ SPECIES_VULPIX,
+ SPECIES_WAILMER,
+ SPECIES_WAILORD,
+ SPECIES_WALREIN,
+ SPECIES_WEEZING,
+ SPECIES_WHISCASH,
+ SPECIES_WHISMUR,
+ SPECIES_WIGGLYTUFF,
+ SPECIES_WINGULL,
+ SPECIES_WOBBUFFET,
+ SPECIES_WURMPLE,
+ SPECIES_WYNAUT,
+ SPECIES_XATU,
+ SPECIES_ZANGOOSE,
+ SPECIES_ZIGZAGOON,
+ SPECIES_ZUBAT,
+};
diff --git a/src/data/easy_chat/easy_chat_group_pokemon2.h b/src/data/easy_chat/easy_chat_group_pokemon2.h
new file mode 100755
index 000000000..35b0a03cb
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_pokemon2.h
@@ -0,0 +1,255 @@
+#include "constants/species.h"
+
+const u16 gEasyChatGroup_Pokemon2[] = {
+ SPECIES_ABRA,
+ SPECIES_AERODACTYL,
+ SPECIES_AIPOM,
+ SPECIES_ALAKAZAM,
+ SPECIES_AMPHAROS,
+ SPECIES_ARBOK,
+ SPECIES_ARCANINE,
+ SPECIES_ARIADOS,
+ SPECIES_ARTICUNO,
+ SPECIES_AZUMARILL,
+ SPECIES_BAYLEEF,
+ SPECIES_BEEDRILL,
+ SPECIES_BELLOSSOM,
+ SPECIES_BELLSPROUT,
+ SPECIES_BLASTOISE,
+ SPECIES_BLISSEY,
+ SPECIES_BULBASAUR,
+ SPECIES_BUTTERFREE,
+ SPECIES_CATERPIE,
+ SPECIES_CELEBI,
+ SPECIES_CHANSEY,
+ SPECIES_CHARIZARD,
+ SPECIES_CHARMANDER,
+ SPECIES_CHARMELEON,
+ SPECIES_CHIKORITA,
+ SPECIES_CHINCHOU,
+ SPECIES_CLEFABLE,
+ SPECIES_CLEFAIRY,
+ SPECIES_CLEFFA,
+ SPECIES_CLOYSTER,
+ SPECIES_CORSOLA,
+ SPECIES_CROBAT,
+ SPECIES_CROCONAW,
+ SPECIES_CUBONE,
+ SPECIES_CYNDAQUIL,
+ SPECIES_DELIBIRD,
+ SPECIES_DEWGONG,
+ SPECIES_DIGLETT,
+ SPECIES_DITTO,
+ SPECIES_DODRIO,
+ SPECIES_DODUO,
+ SPECIES_DONPHAN,
+ SPECIES_DRAGONAIR,
+ SPECIES_DRAGONITE,
+ SPECIES_DRATINI,
+ SPECIES_DROWZEE,
+ SPECIES_DUGTRIO,
+ SPECIES_DUNSPARCE,
+ SPECIES_EEVEE,
+ SPECIES_EKANS,
+ SPECIES_ELECTABUZZ,
+ SPECIES_ELECTRODE,
+ SPECIES_ELEKID,
+ SPECIES_ENTEI,
+ SPECIES_ESPEON,
+ SPECIES_EXEGGCUTE,
+ SPECIES_EXEGGUTOR,
+ SPECIES_FARFETCHD,
+ SPECIES_FEAROW,
+ SPECIES_FERALIGATR,
+ SPECIES_FLAAFFY,
+ SPECIES_FLAREON,
+ SPECIES_FORRETRESS,
+ SPECIES_FURRET,
+ SPECIES_GASTLY,
+ SPECIES_GENGAR,
+ SPECIES_GEODUDE,
+ SPECIES_GIRAFARIG,
+ SPECIES_GLIGAR,
+ SPECIES_GLOOM,
+ SPECIES_GOLBAT,
+ SPECIES_GOLDEEN,
+ SPECIES_GOLDUCK,
+ SPECIES_GOLEM,
+ SPECIES_GRANBULL,
+ SPECIES_GRAVELER,
+ SPECIES_GRIMER,
+ SPECIES_GROWLITHE,
+ SPECIES_GYARADOS,
+ SPECIES_HAUNTER,
+ SPECIES_HERACROSS,
+ SPECIES_HITMONCHAN,
+ SPECIES_HITMONLEE,
+ SPECIES_HITMONTOP,
+ SPECIES_HO_OH,
+ SPECIES_HOOTHOOT,
+ SPECIES_HOPPIP,
+ SPECIES_HORSEA,
+ SPECIES_HOUNDOOM,
+ SPECIES_HOUNDOUR,
+ SPECIES_HYPNO,
+ SPECIES_IGGLYBUFF,
+ SPECIES_IVYSAUR,
+ SPECIES_JIGGLYPUFF,
+ SPECIES_JOLTEON,
+ SPECIES_JUMPLUFF,
+ SPECIES_JYNX,
+ SPECIES_KABUTO,
+ SPECIES_KABUTOPS,
+ SPECIES_KADABRA,
+ SPECIES_KAKUNA,
+ SPECIES_KANGASKHAN,
+ SPECIES_KINGDRA,
+ SPECIES_KINGLER,
+ SPECIES_KOFFING,
+ SPECIES_KRABBY,
+ SPECIES_LANTURN,
+ SPECIES_LAPRAS,
+ SPECIES_LARVITAR,
+ SPECIES_LEDIAN,
+ SPECIES_LEDYBA,
+ SPECIES_LICKITUNG,
+ SPECIES_LUGIA,
+ SPECIES_MACHAMP,
+ SPECIES_MACHOKE,
+ SPECIES_MACHOP,
+ SPECIES_MAGBY,
+ SPECIES_MAGCARGO,
+ SPECIES_MAGIKARP,
+ SPECIES_MAGMAR,
+ SPECIES_MAGNEMITE,
+ SPECIES_MAGNETON,
+ SPECIES_MANKEY,
+ SPECIES_MANTINE,
+ SPECIES_MAREEP,
+ SPECIES_MARILL,
+ SPECIES_MAROWAK,
+ SPECIES_MEGANIUM,
+ SPECIES_MEOWTH,
+ SPECIES_METAPOD,
+ SPECIES_MEW,
+ SPECIES_MEWTWO,
+ SPECIES_MILTANK,
+ SPECIES_MISDREAVUS,
+ SPECIES_MOLTRES,
+ SPECIES_MR_MIME,
+ SPECIES_MUK,
+ SPECIES_MURKROW,
+ SPECIES_NATU,
+ SPECIES_NIDOKING,
+ SPECIES_NIDOQUEEN,
+ SPECIES_NIDORAN_F,
+ SPECIES_NIDORAN_M,
+ SPECIES_NIDORINA,
+ SPECIES_NIDORINO,
+ SPECIES_NINETALES,
+ SPECIES_NOCTOWL,
+ SPECIES_OCTILLERY,
+ SPECIES_ODDISH,
+ SPECIES_OMANYTE,
+ SPECIES_OMASTAR,
+ SPECIES_ONIX,
+ SPECIES_PARAS,
+ SPECIES_PARASECT,
+ SPECIES_PERSIAN,
+ SPECIES_PHANPY,
+ SPECIES_PICHU,
+ SPECIES_PIDGEOT,
+ SPECIES_PIDGEOTTO,
+ SPECIES_PIDGEY,
+ SPECIES_PIKACHU,
+ SPECIES_PILOSWINE,
+ SPECIES_PINECO,
+ SPECIES_PINSIR,
+ SPECIES_POLITOED,
+ SPECIES_POLIWAG,
+ SPECIES_POLIWHIRL,
+ SPECIES_POLIWRATH,
+ SPECIES_PONYTA,
+ SPECIES_PORYGON,
+ SPECIES_PORYGON2,
+ SPECIES_PRIMEAPE,
+ SPECIES_PSYDUCK,
+ SPECIES_PUPITAR,
+ SPECIES_QUAGSIRE,
+ SPECIES_QUILAVA,
+ SPECIES_QWILFISH,
+ SPECIES_RAICHU,
+ SPECIES_RAIKOU,
+ SPECIES_RAPIDASH,
+ SPECIES_RATICATE,
+ SPECIES_RATTATA,
+ SPECIES_REMORAID,
+ SPECIES_RHYDON,
+ SPECIES_RHYHORN,
+ SPECIES_SANDSHREW,
+ SPECIES_SANDSLASH,
+ SPECIES_SCIZOR,
+ SPECIES_SCYTHER,
+ SPECIES_SEADRA,
+ SPECIES_SEAKING,
+ SPECIES_SEEL,
+ SPECIES_SENTRET,
+ SPECIES_SHELLDER,
+ SPECIES_SHUCKLE,
+ SPECIES_SKARMORY,
+ SPECIES_SKIPLOOM,
+ SPECIES_SLOWBRO,
+ SPECIES_SLOWKING,
+ SPECIES_SLOWPOKE,
+ SPECIES_SLUGMA,
+ SPECIES_SMEARGLE,
+ SPECIES_SMOOCHUM,
+ SPECIES_SNEASEL,
+ SPECIES_SNORLAX,
+ SPECIES_SNUBBULL,
+ SPECIES_SPEAROW,
+ SPECIES_SPINARAK,
+ SPECIES_SQUIRTLE,
+ SPECIES_STANTLER,
+ SPECIES_STARMIE,
+ SPECIES_STARYU,
+ SPECIES_STEELIX,
+ SPECIES_SUDOWOODO,
+ SPECIES_SUICUNE,
+ SPECIES_SUNFLORA,
+ SPECIES_SUNKERN,
+ SPECIES_SWINUB,
+ SPECIES_TANGELA,
+ SPECIES_TAUROS,
+ SPECIES_TEDDIURSA,
+ SPECIES_TENTACOOL,
+ SPECIES_TENTACRUEL,
+ SPECIES_TOGEPI,
+ SPECIES_TOGETIC,
+ SPECIES_TOTODILE,
+ SPECIES_TYPHLOSION,
+ SPECIES_TYRANITAR,
+ SPECIES_TYROGUE,
+ SPECIES_UMBREON,
+ SPECIES_UNOWN,
+ SPECIES_URSARING,
+ SPECIES_VAPOREON,
+ SPECIES_VENOMOTH,
+ SPECIES_VENONAT,
+ SPECIES_VENUSAUR,
+ SPECIES_VICTREEBEL,
+ SPECIES_VILEPLUME,
+ SPECIES_VOLTORB,
+ SPECIES_VULPIX,
+ SPECIES_WARTORTLE,
+ SPECIES_WEEDLE,
+ SPECIES_WEEPINBELL,
+ SPECIES_WEEZING,
+ SPECIES_WIGGLYTUFF,
+ SPECIES_WOBBUFFET,
+ SPECIES_WOOPER,
+ SPECIES_XATU,
+ SPECIES_YANMA,
+ SPECIES_ZAPDOS,
+ SPECIES_ZUBAT,
+};
diff --git a/src/data/easy_chat/easy_chat_group_speech.h b/src/data/easy_chat/easy_chat_group_speech.h
new file mode 100755
index 000000000..013b454c0
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_speech.h
@@ -0,0 +1,363 @@
+const u8 gEasyChatWord_Listen[] = _("LISTEN");
+const u8 gEasyChatWord_NotVery[] = _("NOT VERY");
+const u8 gEasyChatWord_Mean[] = _("MEAN");
+const u8 gEasyChatWord_Lie[] = _("LIE");
+const u8 gEasyChatWord_Lay[] = _("LAY");
+const u8 gEasyChatWord_Recommend[] = _("RECOMMEND");
+const u8 gEasyChatWord_Nitwit[] = _("NITWIT");
+const u8 gEasyChatWord_Quite[] = _("QUITE");
+const u8 gEasyChatWord_From[] = _("FROM");
+const u8 gEasyChatWord_Feeling[] = _("FEELING");
+const u8 gEasyChatWord_But[] = _("BUT");
+const u8 gEasyChatWord_However[] = _("HOWEVER");
+const u8 gEasyChatWord_Case[] = _("CASE");
+const u8 gEasyChatWord_The[] = _("THE");
+const u8 gEasyChatWord_Miss[] = _("MISS");
+const u8 gEasyChatWord_How[] = _("HOW");
+const u8 gEasyChatWord_Hit[] = _("HIT");
+const u8 gEasyChatWord_Enough[] = _("ENOUGH");
+const u8 gEasyChatWord_ALot[] = _("A LOT");
+const u8 gEasyChatWord_ALittle[] = _("A LITTLE");
+const u8 gEasyChatWord_Absolutely[] = _("ABSOLUTELY");
+const u8 gEasyChatWord_And[] = _("AND");
+const u8 gEasyChatWord_Only[] = _("ONLY");
+const u8 gEasyChatWord_Around[] = _("AROUND");
+const u8 gEasyChatWord_Probably[] = _("PROBABLY");
+const u8 gEasyChatWord_If[] = _("IF");
+const u8 gEasyChatWord_Very[] = _("VERY");
+const u8 gEasyChatWord_ATinyBit[] = _("A TINY BIT");
+const u8 gEasyChatWord_Wild[] = _("WILD");
+const u8 gEasyChatWord_Thats[] = _("THAT'S");
+const u8 gEasyChatWord_Just[] = _("JUST");
+const u8 gEasyChatWord_EvenSo[] = _("EVEN SO,");
+const u8 gEasyChatWord_MustBe[] = _("MUST BE");
+const u8 gEasyChatWord_Naturally[] = _("NATURALLY");
+const u8 gEasyChatWord_ForNow[] = _("FOR NOW,");
+const u8 gEasyChatWord_Understood[] = _("UNDERSTOOD");
+const u8 gEasyChatWord_Joking[] = _("JOKING");
+const u8 gEasyChatWord_Ready[] = _("READY");
+const u8 gEasyChatWord_Something[] = _("SOMETHING");
+const u8 gEasyChatWord_Somehow[] = _("SOMEHOW");
+const u8 gEasyChatWord_Although[] = _("ALTHOUGH");
+const u8 gEasyChatWord_Also[] = _("ALSO");
+const u8 gEasyChatWord_Perfect[] = _("PERFECT");
+const u8 gEasyChatWord_AsMuchAs[] = _("AS MUCH AS");
+const u8 gEasyChatWord_Really[] = _("REALLY");
+const u8 gEasyChatWord_Truly[] = _("TRULY");
+const u8 gEasyChatWord_Seriously[] = _("SERIOUSLY");
+const u8 gEasyChatWord_Totally[] = _("TOTALLY");
+const u8 gEasyChatWord_Until[] = _("UNTIL");
+const u8 gEasyChatWord_AsIf[] = _("AS IF");
+const u8 gEasyChatWord_Mood[] = _("MOOD");
+const u8 gEasyChatWord_Rather[] = _("RATHER");
+const u8 gEasyChatWord_Awfully[] = _("AWFULLY");
+const u8 gEasyChatWord_Mode[] = _("MODE");
+const u8 gEasyChatWord_More[] = _("MORE");
+const u8 gEasyChatWord_TooLate[] = _("TOO LATE");
+const u8 gEasyChatWord_Finally[] = _("FINALLY");
+const u8 gEasyChatWord_Any[] = _("ANY");
+const u8 gEasyChatWord_Instead[] = _("INSTEAD");
+const u8 gEasyChatWord_Fantastic[] = _("FANTASTIC");
+
+const struct EasyChatWordInfo gEasyChatGroup_Speech[] = {
+ {
+ .text = gEasyChatWord_Listen,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_NotVery,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mean,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lie,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lay,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Recommend,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nitwit,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Quite,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_From,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Feeling,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_But,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_However,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Case,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_The,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Miss,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_How,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hit,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Enough,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ALot,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ALittle,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Absolutely,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_And,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Only,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Around,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Probably,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_If,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Very,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ATinyBit,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wild,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thats,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Just,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_EvenSo,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_MustBe,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Naturally,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ForNow,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Understood,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Joking,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ready,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Something,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Somehow,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Although,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Also,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Perfect,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_AsMuchAs,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Really,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Truly,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Seriously,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Totally,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Until,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_AsIf,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mood,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rather,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Awfully,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mode,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_More,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TooLate,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Finally,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Any,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Instead,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fantastic,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_status.h b/src/data/easy_chat/easy_chat_group_status.h
new file mode 100755
index 000000000..d4958c3ad
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_status.h
@@ -0,0 +1,657 @@
+const u8 gEasyChatWord_Dark[] = _("DARK");
+const u8 gEasyChatWord_Stench[] = _("STENCH");
+const u8 gEasyChatWord_ThickFat[] = _("THICK FAT");
+const u8 gEasyChatWord_RainDish[] = _("RAIN DISH");
+const u8 gEasyChatWord_Drizzle[] = _("DRIZZLE");
+const u8 gEasyChatWord_ArenaTrap[] = _("ARENA TRAP");
+const u8 gEasyChatWord_Intimidate[] = _("INTIMIDATE");
+const u8 gEasyChatWord_RockHead[] = _("ROCK HEAD");
+const u8 gEasyChatWord_Color[] = _("COLOR");
+const u8 gEasyChatWord_AltColor[] = _("ALT. COLOR");
+const u8 gEasyChatWord_Rock[] = _("ROCK");
+const u8 gEasyChatWord_Beautiful[] = _("BEAUTIFUL");
+const u8 gEasyChatWord_Beauty[] = _("BEAUTY");
+const u8 gEasyChatWord_AirLock[] = _("AIR LOCK");
+const u8 gEasyChatWord_Psychic[] = _("PSYCHIC");
+const u8 gEasyChatWord_HyperCutter[] = _("HYPER CUTTER");
+const u8 gEasyChatWord_Fighting[] = _("FIGHTING");
+const u8 gEasyChatWord_ShadowTag[] = _("SHADOW TAG");
+const u8 gEasyChatWord_Smart[] = _("SMART");
+const u8 gEasyChatWord_Smartness[] = _("SMARTNESS");
+const u8 gEasyChatWord_SpeedBoost[] = _("SPEED BOOST");
+const u8 gEasyChatWord_Cool[] = _("COOL");
+const u8 gEasyChatWord_Coolness[] = _("COOLNESS");
+const u8 gEasyChatWord_BattleArmor[] = _("BATTLE ARMOR");
+const u8 gEasyChatWord_Cute[] = _("CUTE");
+const u8 gEasyChatWord_Cuteness[] = _("CUTENESS");
+const u8 gEasyChatWord_Sturdy[] = _("STURDY");
+const u8 gEasyChatWord_SuctionCups[] = _("SUCTION CUPS");
+const u8 gEasyChatWord_Grass[] = _("GRASS");
+const u8 gEasyChatWord_ClearBody[] = _("CLEAR BODY");
+const u8 gEasyChatWord_Torrent[] = _("TORRENT");
+const u8 gEasyChatWord_Ghost[] = _("GHOST");
+const u8 gEasyChatWord_Ice[] = _("ICE");
+const u8 gEasyChatWord_Guts[] = _("GUTS");
+const u8 gEasyChatWord_RoughSkin[] = _("ROUGH SKIN");
+const u8 gEasyChatWord_ShellArmor[] = _("SHELL ARMOR");
+const u8 gEasyChatWord_NaturalCure[] = _("NATURAL CURE");
+const u8 gEasyChatWord_Damp[] = _("DAMP");
+const u8 gEasyChatWord_Ground[] = _("GROUND");
+const u8 gEasyChatWord_Limber[] = _("LIMBER");
+const u8 gEasyChatWord_MagnetPull[] = _("MAGNET PULL");
+const u8 gEasyChatWord_WhiteSmoke[] = _("WHITE SMOKE");
+const u8 gEasyChatWord_Synchronize[] = _("SYNCHRONIZE");
+const u8 gEasyChatWord_Overgrow[] = _("OVERGROW");
+const u8 gEasyChatWord_SwiftSwim[] = _("SWIFT SWIM");
+const u8 gEasyChatWord_SandStream[] = _("SAND STREAM");
+const u8 gEasyChatWord_SandVeil[] = _("SAND VEIL");
+const u8 gEasyChatWord_KeenEye[] = _("KEEN EYE");
+const u8 gEasyChatWord_InnerFocus[] = _("INNER FOCUS");
+const u8 gEasyChatWord_Static[] = _("STATIC");
+const u8 gEasyChatWord_Type[] = _("TYPE");
+const u8 gEasyChatWord_Tough[] = _("TOUGH");
+const u8 gEasyChatWord_Toughness[] = _("TOUGHNESS");
+const u8 gEasyChatWord_ShedSkin[] = _("SHED SKIN");
+const u8 gEasyChatWord_HugePower[] = _("HUGE POWER");
+const u8 gEasyChatWord_VoltAbsorb[] = _("VOLT ABSORB");
+const u8 gEasyChatWord_WaterAbsorb[] = _("WATER ABSORB");
+const u8 gEasyChatWord_Electric[] = _("ELECTRIC");
+const u8 gEasyChatWord_Forecast[] = _("FORECAST");
+const u8 gEasyChatWord_SereneGrace[] = _("SERENE GRACE");
+const u8 gEasyChatWord_Poison[] = _("POISON");
+const u8 gEasyChatWord_PoisonPoint[] = _("POISON POINT");
+const u8 gEasyChatWord_Dragon[] = _("DRAGON");
+const u8 gEasyChatWord_Trace[] = _("TRACE");
+const u8 gEasyChatWord_Oblivious[] = _("OBLIVIOUS");
+const u8 gEasyChatWord_Truant[] = _("TRUANT");
+const u8 gEasyChatWord_RunAway[] = _("RUN AWAY");
+const u8 gEasyChatWord_StickyHold[] = _("STICKY HOLD");
+const u8 gEasyChatWord_CloudNine[] = _("CLOUD NINE");
+const u8 gEasyChatWord_Normal[] = _("NORMAL");
+const u8 gEasyChatWord_Steel[] = _("STEEL");
+const u8 gEasyChatWord_Illuminate[] = _("ILLUMINATE");
+const u8 gEasyChatWord_EarlyBird[] = _("EARLY BIRD");
+const u8 gEasyChatWord_Hustle[] = _("HUSTLE");
+const u8 gEasyChatWord_Shine[] = _("SHINE");
+const u8 gEasyChatWord_Flying[] = _("FLYING");
+const u8 gEasyChatWord_Drought[] = _("DROUGHT");
+const u8 gEasyChatWord_Lightningrod[] = _("LIGHTNINGROD");
+const u8 gEasyChatWord_Compoundeyes[] = _("COMPOUNDEYES");
+const u8 gEasyChatWord_MarvelScale[] = _("MARVEL SCALE");
+const u8 gEasyChatWord_WonderGuard[] = _("WONDER GUARD");
+const u8 gEasyChatWord_Insomnia[] = _("INSOMNIA");
+const u8 gEasyChatWord_Levitate[] = _("LEVITATE");
+const u8 gEasyChatWord_Plus[] = _("PLUS");
+const u8 gEasyChatWord_Pressure[] = _("PRESSURE");
+const u8 gEasyChatWord_LiquidOoze[] = _("LIQUID OOZE");
+const u8 gEasyChatWord_ColorChange[] = _("COLOR CHANGE");
+const u8 gEasyChatWord_Soundproof[] = _("SOUNDPROOF");
+const u8 gEasyChatWord_EffectSpore[] = _("EFFECT SPORE");
+const u8 gEasyChatWord_Pkrs[] = _("{PK}RS");
+const u8 gEasyChatWord_Fire[] = _("FIRE");
+const u8 gEasyChatWord_FlameBody[] = _("FLAME BODY");
+const u8 gEasyChatWord_Minus[] = _("MINUS");
+const u8 gEasyChatWord_OwnTempo[] = _("OWN TEMPO");
+const u8 gEasyChatWord_MagmaArmor[] = _("MAGMA ARMOR");
+const u8 gEasyChatWord_Water[] = _("WATER");
+const u8 gEasyChatWord_WaterVeil[] = _("WATER VEIL");
+const u8 gEasyChatWord_Bug[] = _("BUG");
+const u8 gEasyChatWord_Swarm[] = _("SWARM");
+const u8 gEasyChatWord_CuteCharm[] = _("CUTE CHARM");
+const u8 gEasyChatWord_Immunity[] = _("IMMUNITY");
+const u8 gEasyChatWord_Blaze[] = _("BLAZE");
+const u8 gEasyChatWord_Pickup[] = _("PICKUP");
+const u8 gEasyChatWord_Pattern[] = _("PATTERN");
+const u8 gEasyChatWord_FlashFire[] = _("FLASH FIRE");
+const u8 gEasyChatWord_VitalSpirit[] = _("VITAL SPIRIT");
+const u8 gEasyChatWord_Chlorophyll[] = _("CHLOROPHYLL");
+const u8 gEasyChatWord_PurePower[] = _("PURE POWER");
+const u8 gEasyChatWord_ShieldDust[] = _("SHIELD DUST");
+
+const struct EasyChatWordInfo gEasyChatGroup_Status[] = {
+ {
+ .text = gEasyChatWord_Dark,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Stench,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThickFat,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_RainDish,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Drizzle,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ArenaTrap,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Intimidate,
+ .alphabeticalOrder = 101,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_RockHead,
+ .alphabeticalOrder = 97,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Color,
+ .alphabeticalOrder = 106,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_AltColor,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rock,
+ .alphabeticalOrder = 68,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Beautiful,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Beauty,
+ .alphabeticalOrder = 86,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_AirLock,
+ .alphabeticalOrder = 78,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Psychic,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HyperCutter,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fighting,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ShadowTag,
+ .alphabeticalOrder = 99,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Smart,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Smartness,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SpeedBoost,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cool,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Coolness,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_BattleArmor,
+ .alphabeticalOrder = 76,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cute,
+ .alphabeticalOrder = 72,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cuteness,
+ .alphabeticalOrder = 88,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sturdy,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SuctionCups,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Grass,
+ .alphabeticalOrder = 90,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ClearBody,
+ .alphabeticalOrder = 91,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Torrent,
+ .alphabeticalOrder = 104,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ghost,
+ .alphabeticalOrder = 75,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ice,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Guts,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_RoughSkin,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ShellArmor,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_NaturalCure,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Damp,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ground,
+ .alphabeticalOrder = 73,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Limber,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_MagnetPull,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WhiteSmoke,
+ .alphabeticalOrder = 71,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Synchronize,
+ .alphabeticalOrder = 100,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Overgrow,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SwiftSwim,
+ .alphabeticalOrder = 81,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SandStream,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SandVeil,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_KeenEye,
+ .alphabeticalOrder = 82,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_InnerFocus,
+ .alphabeticalOrder = 77,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Static,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Type,
+ .alphabeticalOrder = 85,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tough,
+ .alphabeticalOrder = 94,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Toughness,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ShedSkin,
+ .alphabeticalOrder = 79,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HugePower,
+ .alphabeticalOrder = 92,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_VoltAbsorb,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WaterAbsorb,
+ .alphabeticalOrder = 69,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Electric,
+ .alphabeticalOrder = 64,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Forecast,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SereneGrace,
+ .alphabeticalOrder = 93,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Poison,
+ .alphabeticalOrder = 103,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_PoisonPoint,
+ .alphabeticalOrder = 102,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dragon,
+ .alphabeticalOrder = 89,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Trace,
+ .alphabeticalOrder = 83,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Oblivious,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Truant,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_RunAway,
+ .alphabeticalOrder = 84,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_StickyHold,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_CloudNine,
+ .alphabeticalOrder = 107,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Normal,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Steel,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Illuminate,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_EarlyBird,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hustle,
+ .alphabeticalOrder = 66,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shine,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Flying,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Drought,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lightningrod,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Compoundeyes,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_MarvelScale,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WonderGuard,
+ .alphabeticalOrder = 108,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Insomnia,
+ .alphabeticalOrder = 74,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Levitate,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Plus,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pressure,
+ .alphabeticalOrder = 87,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_LiquidOoze,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ColorChange,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Soundproof,
+ .alphabeticalOrder = 70,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_EffectSpore,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pkrs,
+ .alphabeticalOrder = 67,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fire,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_FlameBody,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Minus,
+ .alphabeticalOrder = 98,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OwnTempo,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_MagmaArmor,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Water,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WaterVeil,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Bug,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Swarm,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_CuteCharm,
+ .alphabeticalOrder = 63,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Immunity,
+ .alphabeticalOrder = 65,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Blaze,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pickup,
+ .alphabeticalOrder = 105,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pattern,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_FlashFire,
+ .alphabeticalOrder = 95,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_VitalSpirit,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Chlorophyll,
+ .alphabeticalOrder = 96,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_PurePower,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ShieldDust,
+ .alphabeticalOrder = 80,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_time.h b/src/data/easy_chat/easy_chat_group_time.h
new file mode 100755
index 000000000..691dde70c
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_time.h
@@ -0,0 +1,273 @@
+const u8 gEasyChatWord_Fall[] = _("FALL");
+const u8 gEasyChatWord_Morning[] = _("MORNING");
+const u8 gEasyChatWord_Tomorrow[] = _("TOMORROW");
+const u8 gEasyChatWord_Last[] = _("LAST");
+const u8 gEasyChatWord_Day[] = _("DAY");
+const u8 gEasyChatWord_Sometime[] = _("SOMETIME");
+const u8 gEasyChatWord_Always[] = _("ALWAYS");
+const u8 gEasyChatWord_Current[] = _("CURRENT");
+const u8 gEasyChatWord_Forever[] = _("FOREVER");
+const u8 gEasyChatWord_Days[] = _("DAYS");
+const u8 gEasyChatWord_End[] = _("END");
+const u8 gEasyChatWord_Tuesday[] = _("TUESDAY");
+const u8 gEasyChatWord_Yesterday[] = _("YESTERDAY");
+const u8 gEasyChatWord_Today[] = _("TODAY");
+const u8 gEasyChatWord_Friday[] = _("FRIDAY");
+const u8 gEasyChatWord_Monday[] = _("MONDAY");
+const u8 gEasyChatWord_Later[] = _("LATER");
+const u8 gEasyChatWord_Earlier[] = _("EARLIER");
+const u8 gEasyChatWord_Another[] = _("ANOTHER");
+const u8 gEasyChatWord_Time[] = _("TIME");
+const u8 gEasyChatWord_Finish[] = _("FINISH");
+const u8 gEasyChatWord_Wednesday[] = _("WEDNESDAY");
+const u8 gEasyChatWord_Soon[] = _("SOON");
+const u8 gEasyChatWord_Start[] = _("START");
+const u8 gEasyChatWord_Month[] = _("MONTH");
+const u8 gEasyChatWord_Stop[] = _("STOP");
+const u8 gEasyChatWord_Now[] = _("NOW");
+const u8 gEasyChatWord_Final[] = _("FINAL");
+const u8 gEasyChatWord_Next[] = _("NEXT");
+const u8 gEasyChatWord_Age[] = _("AGE");
+const u8 gEasyChatWord_Saturday[] = _("SATURDAY");
+const u8 gEasyChatWord_Summer[] = _("SUMMER");
+const u8 gEasyChatWord_Sunday[] = _("SUNDAY");
+const u8 gEasyChatWord_Beginning[] = _("BEGINNING");
+const u8 gEasyChatWord_Spring[] = _("SPRING");
+const u8 gEasyChatWord_Daytime[] = _("DAYTIME");
+const u8 gEasyChatWord_Winter[] = _("WINTER");
+const u8 gEasyChatWord_Daily[] = _("DAILY");
+const u8 gEasyChatWord_Olden[] = _("OLDEN");
+const u8 gEasyChatWord_Almost[] = _("ALMOST");
+const u8 gEasyChatWord_Nearly[] = _("NEARLY");
+const u8 gEasyChatWord_Thursday[] = _("THURSDAY");
+const u8 gEasyChatWord_Nighttime[] = _("NIGHTTIME");
+const u8 gEasyChatWord_Night[] = _("NIGHT");
+const u8 gEasyChatWord_Week[] = _("WEEK");
+
+const struct EasyChatWordInfo gEasyChatGroup_Time[] = {
+ {
+ .text = gEasyChatWord_Fall,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Morning,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tomorrow,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Last,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Day,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sometime,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Always,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Current,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Forever,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Days,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_End,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tuesday,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yesterday,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Today,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Friday,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Monday,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Later,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Earlier,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Another,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Time,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Finish,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wednesday,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Soon,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Start,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Month,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Stop,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Now,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Final,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Next,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Age,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Saturday,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Summer,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sunday,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Beginning,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Spring,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Daytime,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Winter,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Daily,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Olden,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Almost,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nearly,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thursday,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nighttime,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Night,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Week,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_trainer.h b/src/data/easy_chat/easy_chat_group_trainer.h
new file mode 100755
index 000000000..a4e1ddfd6
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_trainer.h
@@ -0,0 +1,165 @@
+const u8 gEasyChatWord_IChooseYou[] = _("I CHOOSE YOU");
+const u8 gEasyChatWord_Gotcha[] = _("GOTCHA");
+const u8 gEasyChatWord_Trade[] = _("TRADE");
+const u8 gEasyChatWord_Sapphire[] = _("SAPPHIRE");
+const u8 gEasyChatWord_Evolve[] = _("EVOLVE");
+const u8 gEasyChatWord_Encyclopedia[] = _("ENCYCLOPEDIA");
+const u8 gEasyChatWord_Nature[] = _("NATURE");
+const u8 gEasyChatWord_Center[] = _("CENTER");
+const u8 gEasyChatWord_Egg[] = _("EGG");
+const u8 gEasyChatWord_Link[] = _("LINK");
+const u8 gEasyChatWord_SpAbility[] = _("SP. ABILITY");
+const u8 gEasyChatWord_Trainer[] = _("TRAINER");
+const u8 gEasyChatWord_Version[] = _("VERSION");
+const u8 gEasyChatWord_Pokenav[] = _("POKéNAV");
+const u8 gEasyChatWord_Pokemon[] = _("POKéMON");
+const u8 gEasyChatWord_Get[] = _("GET");
+const u8 gEasyChatWord_Pokedex[] = _("POKéDEX");
+const u8 gEasyChatWord_Ruby[] = _("RUBY");
+const u8 gEasyChatWord_Level[] = _("LEVEL");
+const u8 gEasyChatWord_Red[] = _("RED");
+const u8 gEasyChatWord_Green[] = _("GREEN");
+const u8 gEasyChatWord_Bag[] = _("BAG");
+const u8 gEasyChatWord_Flame[] = _("FLAME");
+const u8 gEasyChatWord_Gold[] = _("GOLD");
+const u8 gEasyChatWord_Leaf[] = _("LEAF");
+const u8 gEasyChatWord_Silver[] = _("SILVER");
+const u8 gEasyChatWord_Emerald[] = _("EMERALD");
+
+const struct EasyChatWordInfo gEasyChatGroup_Trainer[] = {
+ {
+ .text = gEasyChatWord_IChooseYou,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gotcha,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Trade,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sapphire,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Evolve,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Encyclopedia,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nature,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Center,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Egg,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Link,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SpAbility,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Trainer,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Version,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pokenav,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pokemon,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Get,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pokedex,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ruby,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Level,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Red,
+ .alphabeticalOrder = 19,
+ .enabled = FALSE,
+ },
+ {
+ .text = gEasyChatWord_Green,
+ .alphabeticalOrder = 17,
+ .enabled = FALSE,
+ },
+ {
+ .text = gEasyChatWord_Bag,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Flame,
+ .alphabeticalOrder = 25,
+ .enabled = FALSE,
+ },
+ {
+ .text = gEasyChatWord_Gold,
+ .alphabeticalOrder = 10,
+ .enabled = FALSE,
+ },
+ {
+ .text = gEasyChatWord_Leaf,
+ .alphabeticalOrder = 2,
+ .enabled = FALSE,
+ },
+ {
+ .text = gEasyChatWord_Silver,
+ .alphabeticalOrder = 11,
+ .enabled = FALSE,
+ },
+ {
+ .text = gEasyChatWord_Emerald,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_trendy_saying.h b/src/data/easy_chat/easy_chat_group_trendy_saying.h
new file mode 100755
index 000000000..46ce1201a
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_trendy_saying.h
@@ -0,0 +1,201 @@
+const u8 gEasyChatWord_KthxBye[] = _("KTHX, BYE.");
+const u8 gEasyChatWord_YesSirExcl[] = _("YES, SIR!");
+const u8 gEasyChatWord_AvantGarde[] = _("AVANT GARDE");
+const u8 gEasyChatWord_Couple[] = _("COUPLE");
+const u8 gEasyChatWord_MuchObliged[] = _("MUCH OBLIGED");
+const u8 gEasyChatWord_YeehawExcl[] = _("YEEHAW!");
+const u8 gEasyChatWord_Mega[] = _("MEGA");
+const u8 gEasyChatWord_1HitKOExcl[] = _("1-HIT KO!");
+const u8 gEasyChatWord_Destiny[] = _("DESTINY");
+const u8 gEasyChatWord_Cancel[] = _("CANCEL");
+const u8 gEasyChatWord_New[] = _("NEW");
+const u8 gEasyChatWord_Flatten[] = _("FLATTEN");
+const u8 gEasyChatWord_Kidding[] = _("KIDDING");
+const u8 gEasyChatWord_Loser[] = _("LOSER");
+const u8 gEasyChatWord_Losing[] = _("LOSING");
+const u8 gEasyChatWord_Happening[] = _("HAPPENING");
+const u8 gEasyChatWord_HipAnd[] = _("HIP AND");
+const u8 gEasyChatWord_Shake[] = _("SHAKE");
+const u8 gEasyChatWord_Shady[] = _("SHADY");
+const u8 gEasyChatWord_Upbeat[] = _("UPBEAT");
+const u8 gEasyChatWord_Modern[] = _("MODERN");
+const u8 gEasyChatWord_SmellYa[] = _("SMELL YA");
+const u8 gEasyChatWord_Bang[] = _("BANG");
+const u8 gEasyChatWord_Knockout[] = _("KNOCKOUT");
+const u8 gEasyChatWord_Hassle[] = _("HASSLE");
+const u8 gEasyChatWord_Winner[] = _("WINNER");
+const u8 gEasyChatWord_Fever[] = _("FEVER");
+const u8 gEasyChatWord_Wannabe[] = _("WANNABE");
+const u8 gEasyChatWord_Baby[] = _("BABY");
+const u8 gEasyChatWord_Heart[] = _("HEART");
+const u8 gEasyChatWord_Old[] = _("OLD");
+const u8 gEasyChatWord_Young[] = _("YOUNG");
+const u8 gEasyChatWord_Ugly[] = _("UGLY");
+
+const struct EasyChatWordInfo gEasyChatGroup_TrendySaying[] = {
+ {
+ .text = gEasyChatWord_KthxBye,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_YesSirExcl,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_AvantGarde,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Couple,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_MuchObliged,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_YeehawExcl,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mega,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_1HitKOExcl,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Destiny,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cancel,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_New,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Flatten,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Kidding,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Loser,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Losing,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Happening,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HipAnd,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shake,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shady,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Upbeat,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Modern,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SmellYa,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Bang,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Knockout,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hassle,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Winner,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fever,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wannabe,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Baby,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Heart,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Old,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Young,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ugly,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_voices.h b/src/data/easy_chat/easy_chat_group_voices.h
new file mode 100755
index 000000000..6dad874ec
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_voices.h
@@ -0,0 +1,381 @@
+const u8 gEasyChatWord_Excl[] = _("!");
+const u8 gEasyChatWord_ExclExcl[] = _("!!");
+const u8 gEasyChatWord_QuesExcl[] = _("?!");
+const u8 gEasyChatWord_Ques[] = _("?");
+const u8 gEasyChatWord_Ellipsis[] = _("…");
+const u8 gEasyChatWord_EllipsisExcl[] = _("…!");
+const u8 gEasyChatWord_EllipsisEllipsisEllipsis[] = _("………");
+const u8 gEasyChatWord_Dash[] = _("-");
+const u8 gEasyChatWord_DashDashDash[] = _("- - -");
+const u8 gEasyChatWord_UhOh[] = _("UH-OH");
+const u8 gEasyChatWord_Waaah[] = _("WAAAH");
+const u8 gEasyChatWord_Ahaha[] = _("AHAHA");
+const u8 gEasyChatWord_OhQues[] = _("OH?");
+const u8 gEasyChatWord_Nope[] = _("NOPE");
+const u8 gEasyChatWord_Urgh[] = _("URGH");
+const u8 gEasyChatWord_Hmm[] = _("HMM");
+const u8 gEasyChatWord_Whoah[] = _("WHOAH");
+const u8 gEasyChatWord_WroooaarExcl[] = _("WROOOAAR!");
+const u8 gEasyChatWord_Wow[] = _("WOW");
+const u8 gEasyChatWord_Giggle[] = _("GIGGLE");
+const u8 gEasyChatWord_Sigh[] = _("SIGH");
+const u8 gEasyChatWord_Unbelievable[] = _("UNBELIEVABLE");
+const u8 gEasyChatWord_Cries[] = _("CRIES");
+const u8 gEasyChatWord_Agree[] = _("AGREE");
+const u8 gEasyChatWord_EhQues[] = _("EH?");
+const u8 gEasyChatWord_Cry[] = _("CRY");
+const u8 gEasyChatWord_Ehehe[] = _("EHEHE");
+const u8 gEasyChatWord_OiOiOi[] = _("OI, OI, OI");
+const u8 gEasyChatWord_OhYeah[] = _("OH, YEAH");
+const u8 gEasyChatWord_Oh[] = _("OH");
+const u8 gEasyChatWord_Oops[] = _("OOPS");
+const u8 gEasyChatWord_Shocked[] = _("SHOCKED");
+const u8 gEasyChatWord_Eek[] = _("EEK");
+const u8 gEasyChatWord_Graaah[] = _("GRAAAH");
+const u8 gEasyChatWord_Gwahahaha[] = _("GWAHAHAHA");
+const u8 gEasyChatWord_Way[] = _("WAY");
+const u8 gEasyChatWord_Tch[] = _("TCH");
+const u8 gEasyChatWord_Hehe[] = _("HEHE");
+const u8 gEasyChatWord_Hah[] = _("HAH");
+const u8 gEasyChatWord_Yup[] = _("YUP");
+const u8 gEasyChatWord_Hahaha[] = _("HAHAHA");
+const u8 gEasyChatWord_Aiyeeh[] = _("AIYEEH");
+const u8 gEasyChatWord_Hiyah[] = _("HIYAH");
+const u8 gEasyChatWord_Fufufu[] = _("FUFUFU");
+const u8 gEasyChatWord_Lol[] = _("LOL");
+const u8 gEasyChatWord_Snort[] = _("SNORT");
+const u8 gEasyChatWord_Humph[] = _("HUMPH");
+const u8 gEasyChatWord_Hehehe[] = _("HEHEHE");
+const u8 gEasyChatWord_Heh[] = _("HEH");
+const u8 gEasyChatWord_Hohoho[] = _("HOHOHO");
+const u8 gEasyChatWord_UhHuh[] = _("UH-HUH");
+const u8 gEasyChatWord_OhDear[] = _("OH, DEAR");
+const u8 gEasyChatWord_Arrgh[] = _("ARRGH");
+const u8 gEasyChatWord_Mufufu[] = _("MUFUFU");
+const u8 gEasyChatWord_Mmm[] = _("MMM");
+const u8 gEasyChatWord_OhKay[] = _("OH-KAY");
+const u8 gEasyChatWord_Okay[] = _("OKAY");
+const u8 gEasyChatWord_Lalala[] = _("LALALA");
+const u8 gEasyChatWord_Yay[] = _("YAY");
+const u8 gEasyChatWord_Aww[] = _("AWW");
+const u8 gEasyChatWord_Wowee[] = _("WOWEE");
+const u8 gEasyChatWord_Gwah[] = _("GWAH");
+const u8 gEasyChatWord_Wahahaha[] = _("WAHAHAHA");
+
+const struct EasyChatWordInfo gEasyChatGroup_Voices[] = {
+ {
+ .text = gEasyChatWord_Excl,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ExclExcl,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_QuesExcl,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ques,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ellipsis,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_EllipsisExcl,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_EllipsisEllipsisEllipsis,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dash,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_DashDashDash,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_UhOh,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Waaah,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ahaha,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OhQues,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nope,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Urgh,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hmm,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Whoah,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WroooaarExcl,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wow,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Giggle,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sigh,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Unbelievable,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cries,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Agree,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_EhQues,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cry,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ehehe,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OiOiOi,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OhYeah,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Oh,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Oops,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shocked,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Eek,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Graaah,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gwahahaha,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Way,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tch,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hehe,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hah,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yup,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hahaha,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Aiyeeh,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hiyah,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fufufu,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lol,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Snort,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Humph,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hehehe,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Heh,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hohoho,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_UhHuh,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OhDear,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Arrgh,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mufufu,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mmm,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OhKay,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Okay,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lalala,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yay,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Aww,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wowee,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gwah,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wahahaha,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_groups.h b/src/data/easy_chat/easy_chat_groups.h
new file mode 100755
index 000000000..df114d980
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_groups.h
@@ -0,0 +1,137 @@
+#include "easy_chat.h"
+
+#include "easy_chat_group_pokemon.h"
+#include "easy_chat_group_trainer.h"
+#include "easy_chat_group_status.h"
+#include "easy_chat_group_battle.h"
+#include "easy_chat_group_greetings.h"
+#include "easy_chat_group_people.h"
+#include "easy_chat_group_voices.h"
+#include "easy_chat_group_speech.h"
+#include "easy_chat_group_endings.h"
+#include "easy_chat_group_feelings.h"
+#include "easy_chat_group_conditions.h"
+#include "easy_chat_group_actions.h"
+#include "easy_chat_group_lifestyle.h"
+#include "easy_chat_group_hobbies.h"
+#include "easy_chat_group_time.h"
+#include "easy_chat_group_misc.h"
+#include "easy_chat_group_adjectives.h"
+#include "easy_chat_group_events.h"
+#include "easy_chat_group_move_1.h"
+#include "easy_chat_group_move_2.h"
+#include "easy_chat_group_trendy_saying.h"
+#include "easy_chat_group_pokemon2.h"
+
+const struct EasyChatGroup gEasyChatGroups[] = {
+ {
+ .wordData = {.valueList = gEasyChatGroup_Pokemon},
+ .numWords = 202,
+ .numEnabledWords = 202,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Trainer},
+ .numWords = 27,
+ .numEnabledWords = 21,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Status},
+ .numWords = 109,
+ .numEnabledWords = 109,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Battle},
+ .numWords = 63,
+ .numEnabledWords = 63,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Greetings},
+ .numWords = 42,
+ .numEnabledWords = 42,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_People},
+ .numWords = 75,
+ .numEnabledWords = 75,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Voices},
+ .numWords = 63,
+ .numEnabledWords = 63,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Speech},
+ .numWords = 60,
+ .numEnabledWords = 60,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Endings},
+ .numWords = 69,
+ .numEnabledWords = 69,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Feelings},
+ .numWords = 69,
+ .numEnabledWords = 69,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Conditions},
+ .numWords = 69,
+ .numEnabledWords = 69,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Actions},
+ .numWords = 78,
+ .numEnabledWords = 78,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Lifestyle},
+ .numWords = 45,
+ .numEnabledWords = 45,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Hobbies},
+ .numWords = 54,
+ .numEnabledWords = 54,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Time},
+ .numWords = 45,
+ .numEnabledWords = 45,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Misc},
+ .numWords = 42,
+ .numEnabledWords = 42,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Adjectives},
+ .numWords = 36,
+ .numEnabledWords = 36,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Events},
+ .numWords = 29,
+ .numEnabledWords = 29,
+ },
+ {
+ .wordData = {.valueList = gEasyChatGroup_Move1},
+ .numWords = 154,
+ .numEnabledWords = 154,
+ },
+ {
+ .wordData = {.valueList = gEasyChatGroup_Move2},
+ .numWords = 200,
+ .numEnabledWords = 200,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_TrendySaying},
+ .numWords = 33,
+ .numEnabledWords = 33,
+ },
+ {
+ .wordData = {.valueList = gEasyChatGroup_Pokemon2},
+ .numWords = 251,
+ .numEnabledWords = 251,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_words_by_letter.h b/src/data/easy_chat/easy_chat_words_by_letter.h
new file mode 100755
index 000000000..927b9db2f
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_words_by_letter.h
@@ -0,0 +1,2750 @@
+#include "easy_chat.h"
+#include "constants/easy_chat.h"
+
+const u16 gEasyChatWordsByLetter_Others[] = {
+ EC_WORD_EXCL,
+ EC_WORD_EXCL_EXCL,
+ EC_WORD_DASH,
+ EC_WORD_DASH_DASH_DASH,
+ EC_WORD_ELLIPSIS,
+ EC_WORD_ELLIPSIS_EXCL,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_1_HIT_KO_EXCL,
+ EC_WORD_QUES,
+ EC_WORD_QUES_EXCL,
+};
+
+const u16 gEasyChatWordsByLetter_A[] = {
+ EC_WORD_A,
+ EC_WORD_A_LITTLE,
+ EC_WORD_A_LOT,
+ EC_WORD_A_TINY_BIT,
+ EC_WORD_ABOUT,
+ EC_WORD_ABOVE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(ABRA),
+ EC_POKEMON2(ABRA),
+ EC_WORD_ABSENT,
+ EC_POKEMON(ABSOL),
+ EC_WORD_ABSOLUTELY,
+ EC_MOVE(ABSORB),
+ EC_WORD_ACCEPT,
+ EC_MOVE2(ACID),
+ EC_MOVE2(ACID_ARMOR),
+ EC_WORD_ADORE,
+ EC_WORD_ADULT,
+ EC_WORD_ADVENTURE,
+ EC_MOVE2(AERIAL_ACE),
+ EC_MOVE(AEROBLAST),
+ EC_POKEMON2(AERODACTYL),
+ EC_WORD_AFTER,
+ EC_WORD_AGE,
+ EC_POKEMON(AGGRON),
+ EC_MOVE(AGILITY),
+ EC_WORD_AGREE,
+ EC_WORD_AHAHA,
+ EC_WORD_AIM,
+ EC_POKEMON2(AIPOM),
+ EC_MOVE(AIR_CUTTER),
+ EC_WORD_AIR_LOCK,
+ EC_WORD_AIYEEH,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(ALAKAZAM),
+ EC_POKEMON2(ALAKAZAM),
+ EC_WORD_ALL,
+ EC_WORD_ALL_RIGHT,
+ EC_WORD_ALLOW,
+ EC_WORD_ALLOWANCE,
+ EC_WORD_ALLY,
+ EC_WORD_ALMOST,
+ EC_WORD_ALONE,
+ EC_WORD_ALSO,
+ EC_WORD_ALT_COLOR,
+ EC_POKEMON(ALTARIA),
+ EC_WORD_ALTHOUGH,
+ EC_WORD_ALWAYS,
+ EC_WORD_AM,
+ EC_MOVE2(AMNESIA),
+ EC_POKEMON2(AMPHAROS),
+ EC_WORD_AMUSING,
+ EC_WORD_AN,
+ EC_MOVE(ANCIENT_POWER),
+ EC_WORD_AND,
+ EC_WORD_ANGER,
+ EC_WORD_ANGERS,
+ EC_WORD_ANGRY,
+ EC_WORD_ANIME,
+ EC_POKEMON(ANORITH),
+ EC_WORD_ANOTHER,
+ EC_WORD_ANTICIPATION,
+ EC_WORD_ANY,
+ EC_WORD_ANYWHERE,
+ EC_WORD_APOLOGIZE,
+ EC_WORD_APPEAL,
+ EC_WORD_APPEAR,
+ EC_WORD_APPEARS,
+ EC_WORD_APPRECIATE,
+ EC_WORD_APPROVED,
+ EC_POKEMON2(ARBOK),
+ EC_POKEMON2(ARCANINE),
+ EC_WORD_ARE,
+ EC_WORD_AREN_T,
+ EC_WORD_ARENA_TRAP,
+ EC_POKEMON2(ARIADOS),
+ EC_MOVE2(ARM_THRUST),
+ EC_POKEMON(ARMALDO),
+ EC_MOVE(AROMATHERAPY),
+ EC_POKEMON(ARON),
+ EC_WORD_AROUND,
+ EC_WORD_ARRGH,
+ EC_POKEMON2(ARTICUNO),
+ EC_WORD_AS,
+ EC_WORD_AS_IF,
+ EC_WORD_AS_MUCH_AS,
+ EC_MOVE2(ASSIST),
+ EC_MOVE(ASTONISH),
+ EC_WORD_AT,
+ EC_WORD_ATTACK,
+ EC_MOVE2(ATTRACT),
+ EC_WORD_AUNT,
+ EC_MOVE(AURORA_BEAM),
+ EC_WORD_AVANT_GARDE,
+ EC_WORD_AWAY,
+ EC_WORD_AWESOME,
+ EC_WORD_AWFUL,
+ EC_WORD_AWFULLY,
+ EC_WORD_AWW,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(AZUMARILL),
+ EC_POKEMON2(AZUMARILL),
+ EC_POKEMON(AZURILL),
+};
+
+const u16 gEasyChatWordsByLetter_B[] = {
+ EC_WORD_BABE,
+ EC_WORD_BABY,
+ EC_WORD_BACK,
+ EC_WORD_BAD,
+ EC_WORD_BADLY,
+ EC_WORD_BAG,
+ EC_POKEMON(BAGON),
+ EC_WORD_BALL,
+ EC_POKEMON(BALTOY),
+ EC_POKEMON(BANETTE),
+ EC_WORD_BANG,
+ EC_POKEMON(BARBOACH),
+ EC_MOVE2(BARRAGE),
+ EC_MOVE2(BARRIER),
+ EC_WORD_BATH,
+ EC_MOVE2(BATON_PASS),
+ EC_WORD_BATTLE,
+ EC_WORD_BATTLE_ARMOR,
+ EC_WORD_BATTLE_ROOM,
+ EC_WORD_BATTLE_TOWER,
+ EC_POKEMON2(BAYLEEF),
+ EC_WORD_BE,
+ EC_WORD_BEAT,
+ EC_MOVE2(BEAT_UP),
+ EC_POKEMON(BEAUTIFLY),
+ EC_WORD_BEAUTIFUL,
+ EC_WORD_BEAUTY,
+ EC_WORD_BECOMES,
+ EC_POKEMON2(BEEDRILL),
+ EC_WORD_BEEN,
+ EC_WORD_BEFORE,
+ EC_WORD_BEGINNING,
+ EC_WORD_BEING,
+ EC_POKEMON(BELDUM),
+ EC_WORD_BELIEVE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(BELLOSSOM),
+ EC_POKEMON2(BELLOSSOM),
+ EC_POKEMON2(BELLSPROUT),
+ EC_MOVE2(BELLY_DRUM),
+ EC_WORD_BELONGS_TO,
+ EC_WORD_BELOW,
+ EC_WORD_BERRY,
+ EC_WORD_BESIDE,
+ EC_WORD_BEST,
+ EC_WORD_BETTER,
+ EC_MOVE(BIDE),
+ EC_WORD_BIG,
+ EC_WORD_BIKE,
+ EC_MOVE(BIND),
+ EC_MOVE(BITE),
+ EC_MOVE2(BLAST_BURN),
+ EC_POKEMON2(BLASTOISE),
+ EC_WORD_BLAZE,
+ EC_MOVE2(BLAZE_KICK),
+ EC_POKEMON(BLAZIKEN),
+ EC_WORD_BLEND,
+ EC_POKEMON2(BLISSEY),
+ EC_MOVE2(BLIZZARD),
+ EC_MOVE2(BLOCK),
+ EC_WORD_BOARD,
+ EC_MOVE2(BODY_SLAM),
+ EC_MOVE2(BONE_CLUB),
+ EC_MOVE2(BONE_RUSH),
+ EC_MOVE2(BONEMERANG),
+ EC_WORD_BOOK,
+ EC_WORD_BORED,
+ EC_WORD_BORING,
+ EC_MOVE2(BOUNCE),
+ EC_WORD_BOY,
+ EC_WORD_BRAG,
+ EC_WORD_BREAK,
+ EC_POKEMON(BRELOOM),
+ EC_MOVE(BRICK_BREAK),
+ EC_WORD_BROTHER,
+ EC_MOVE(BUBBLE),
+ EC_MOVE2(BUBBLE_BEAM),
+ EC_WORD_BUG,
+ EC_POKEMON2(BULBASAUR),
+ EC_MOVE2(BULK_UP),
+ EC_MOVE2(BULLET_SEED),
+ EC_WORD_BUSY,
+ EC_WORD_BUT,
+ EC_POKEMON2(BUTTERFREE),
+ EC_WORD_BYE_BYE,
+};
+
+const u16 gEasyChatWordsByLetter_C[] = {
+ EC_POKEMON(CACNEA),
+ EC_POKEMON(CACTURNE),
+ EC_MOVE2(CALM_MIND),
+ EC_WORD_CAME,
+ EC_WORD_CAMERA,
+ EC_POKEMON(CAMERUPT),
+ EC_MOVE2(CAMOUFLAGE),
+ EC_WORD_CAN,
+ EC_WORD_CAN_WIN,
+ EC_WORD_CAN_T,
+ EC_WORD_CAN_T_WIN,
+ EC_WORD_CANCEL,
+ EC_WORD_CAPABLE,
+ EC_WORD_CARDS,
+ EC_WORD_CARE,
+ EC_WORD_CARES,
+ EC_POKEMON(CARVANHA),
+ EC_POKEMON(CASCOON),
+ EC_WORD_CASE,
+ EC_POKEMON(CASTFORM),
+ EC_POKEMON2(CATERPIE),
+ EC_WORD_CAUSE,
+ EC_POKEMON2(CELEBI),
+ EC_WORD_CENTER,
+ EC_WORD_CHALLENGE,
+ EC_WORD_CHANGE,
+ EC_WORD_CHANNEL,
+ EC_POKEMON2(CHANSEY),
+ EC_MOVE(CHARGE),
+ EC_POKEMON2(CHARIZARD),
+ EC_MOVE(CHARM),
+ EC_POKEMON2(CHARMANDER),
+ EC_POKEMON2(CHARMELEON),
+ EC_WORD_CHAT,
+ EC_POKEMON2(CHIKORITA),
+ EC_WORD_CHILD_S_PLAY,
+ EC_WORD_CHILDREN,
+ EC_POKEMON(CHIMECHO),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(CHINCHOU),
+ EC_POKEMON2(CHINCHOU),
+ EC_WORD_CHLOROPHYLL,
+ EC_WORD_CHOICE,
+ EC_WORD_CHOOSE,
+ EC_WORD_CHORES,
+ EC_MOVE(CLAMP),
+ EC_POKEMON(CLAMPERL),
+ EC_WORD_CLASS,
+ EC_POKEMON(CLAYDOL),
+ EC_WORD_CLEAR_BODY,
+ EC_POKEMON2(CLEFABLE),
+ EC_POKEMON2(CLEFAIRY),
+ EC_POKEMON2(CLEFFA),
+ EC_WORD_CLOSE,
+ EC_WORD_CLOUD_NINE,
+ EC_POKEMON2(CLOYSTER),
+ EC_WORD_COLD,
+ EC_WORD_COLLECT,
+ EC_WORD_COLLECTION,
+ EC_WORD_COLOR,
+ EC_WORD_COLOR_CHANGE,
+ EC_POKEMON(COMBUSKEN),
+ EC_WORD_COME,
+ EC_WORD_COME_ON,
+ EC_WORD_COME_OVER,
+ EC_MOVE2(COMET_PUNCH),
+ EC_WORD_COMICS,
+ EC_WORD_COMMEMORATE,
+ EC_WORD_COMPLETE,
+ EC_WORD_COMPOUNDEYES,
+ EC_WORD_CONCEDE,
+ EC_MOVE(CONFUSE_RAY),
+ EC_WORD_CONFUSED,
+ EC_MOVE2(CONFUSION),
+ EC_WORD_CONGRATS,
+ EC_MOVE(CONSTRICT),
+ EC_WORD_CONTEST,
+ EC_WORD_CONVERSATION,
+ EC_MOVE2(CONVERSION),
+ EC_MOVE2(CONVERSION_2),
+ EC_WORD_COOL,
+ EC_WORD_COOLNESS,
+ EC_POKEMON(CORPHISH),
+ EC_WORD_CORRECT,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(CORSOLA),
+ EC_POKEMON2(CORSOLA),
+ EC_MOVE(COSMIC_POWER),
+ EC_MOVE2(COTTON_SPORE),
+ EC_WORD_COULD,
+ EC_WORD_COULDN_T,
+ EC_WORD_COUNT_ON,
+ EC_MOVE(COUNTER),
+ EC_WORD_COUPLE,
+ EC_MOVE2(COVET),
+ EC_MOVE(CRABHAMMER),
+ EC_POKEMON(CRADILY),
+ EC_POKEMON(CRAWDAUNT),
+ EC_WORD_CRIES,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(CROBAT),
+ EC_POKEMON2(CROBAT),
+ EC_POKEMON2(CROCONAW),
+ EC_MOVE(CROSS_CHOP),
+ EC_MOVE(CRUNCH),
+ EC_WORD_CRUSH,
+ EC_MOVE2(CRUSH_CLAW),
+ EC_WORD_CRY,
+ EC_POKEMON2(CUBONE),
+ EC_WORD_CURRENT,
+ EC_MOVE2(CURSE),
+ EC_MOVE(CUT),
+ EC_WORD_CUTE,
+ EC_WORD_CUTE_CHARM,
+ EC_WORD_CUTENESS,
+ EC_POKEMON2(CYNDAQUIL),
+};
+
+const u16 gEasyChatWordsByLetter_D[] = {
+ EC_WORD_DAILY,
+ EC_WORD_DAMP,
+ EC_WORD_DANCE,
+ EC_WORD_DANGER,
+ EC_WORD_DARK,
+ EC_WORD_DARN,
+ EC_WORD_DATE,
+ EC_WORD_DAUGHTER,
+ EC_WORD_DAY,
+ EC_WORD_DAYS,
+ EC_WORD_DAYTIME,
+ EC_WORD_DECIDE,
+ EC_WORD_DECIDED,
+ EC_WORD_DEEP,
+ EC_WORD_DEFEATED,
+ EC_MOVE2(DEFENSE_CURL),
+ EC_POKEMON(DELCATTY),
+ EC_POKEMON2(DELIBIRD),
+ EC_POKEMON(DEOXYS),
+ EC_WORD_DEPT_STORE,
+ EC_WORD_DESIGN,
+ EC_WORD_DESTINY,
+ EC_MOVE2(DESTINY_BOND),
+ EC_WORD_DESTROYED,
+ EC_MOVE2(DETECT),
+ EC_POKEMON2(DEWGONG),
+ EC_WORD_DID,
+ EC_WORD_DIDN_T,
+ EC_WORD_DIET,
+ EC_WORD_DIFFERENT,
+ EC_MOVE(DIG),
+ EC_WORD_DIGITAL,
+ EC_POKEMON2(DIGLETT),
+ EC_WORD_DIRECT,
+ EC_MOVE(DISABLE),
+ EC_WORD_DISAPPEAR,
+ EC_WORD_DISAPPOINT,
+ EC_WORD_DISAPPOINTED,
+ EC_WORD_DISAPPOINTS,
+ EC_WORD_DISASTER,
+ EC_WORD_DISLIKE,
+ EC_WORD_DISLIKES,
+ EC_POKEMON2(DITTO),
+ EC_MOVE2(DIVE),
+ EC_MOVE2(DIZZY_PUNCH),
+ EC_WORD_DO,
+ EC_WORD_DOCILE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(DODRIO),
+ EC_POKEMON2(DODRIO),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(DODUO),
+ EC_POKEMON2(DODUO),
+ EC_WORD_DOES,
+ EC_WORD_DOESN_T,
+ EC_WORD_DON_T,
+ EC_WORD_DONE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(DONPHAN),
+ EC_POKEMON2(DONPHAN),
+ EC_MOVE2(DOOM_DESIRE),
+ EC_MOVE2(DOUBLE_KICK),
+ EC_MOVE(DOUBLE_TEAM),
+ EC_MOVE(DOUBLE_EDGE),
+ EC_MOVE(DOUBLE_SLAP),
+ EC_WORD_DOWN,
+ EC_WORD_DOWNCAST,
+ EC_WORD_DRAGON,
+ EC_MOVE2(DRAGON_CLAW),
+ EC_MOVE2(DRAGON_DANCE),
+ EC_MOVE2(DRAGON_RAGE),
+ EC_POKEMON2(DRAGONAIR),
+ EC_MOVE2(DRAGON_BREATH),
+ EC_POKEMON2(DRAGONITE),
+ EC_POKEMON2(DRATINI),
+ EC_WORD_DREAM,
+ EC_MOVE2(DREAM_EATER),
+ EC_MOVE2(DRILL_PECK),
+ EC_WORD_DRINK,
+ EC_WORD_DRINKS,
+ EC_WORD_DRIZZLE,
+ EC_WORD_DROOLING,
+ EC_WORD_DROUGHT,
+ EC_POKEMON2(DROWZEE),
+ EC_WORD_DUDE,
+ EC_POKEMON2(DUGTRIO),
+ EC_POKEMON2(DUNSPARCE),
+ EC_POKEMON(DUSCLOPS),
+ EC_POKEMON(DUSKULL),
+ EC_POKEMON(DUSTOX),
+ EC_MOVE2(DYNAMIC_PUNCH),
+};
+
+const u16 gEasyChatWordsByLetter_E[] = {
+ EC_WORD_EARLIER,
+ EC_WORD_EARLY_BIRD,
+ EC_MOVE(EARTHQUAKE),
+ EC_WORD_EASY,
+ EC_WORD_EAT,
+ EC_WORD_EATS,
+ EC_WORD_EEK,
+ EC_POKEMON2(EEVEE),
+ EC_WORD_EFFECT_SPORE,
+ EC_WORD_EGG,
+ EC_MOVE2(EGG_BOMB),
+ EC_WORD_EH_QUES,
+ EC_WORD_EHEHE,
+ EC_POKEMON2(EKANS),
+ EC_POKEMON2(ELECTABUZZ),
+ EC_WORD_ELECTRIC,
+ EC_POKEMON(ELECTRIKE),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(ELECTRODE),
+ EC_POKEMON2(ELECTRODE),
+ EC_POKEMON2(ELEKID),
+ EC_WORD_ELSE,
+ EC_MOVE2(EMBER),
+ EC_WORD_EMERALD,
+ EC_MOVE(ENCORE),
+ EC_WORD_ENCYCLOPEDIA,
+ EC_WORD_END,
+ EC_MOVE(ENDEAVOR),
+ EC_MOVE(ENDURE),
+ EC_WORD_ENJOY,
+ EC_WORD_ENJOYS,
+ EC_WORD_ENOUGH,
+ EC_POKEMON2(ENTEI),
+ EC_WORD_ENTERTAINING,
+ EC_MOVE2(ERUPTION),
+ EC_WORD_ESCAPE,
+ EC_POKEMON2(ESPEON),
+ EC_WORD_EVEN_SO,
+ EC_WORD_EVENT,
+ EC_WORD_EVENTS,
+ EC_WORD_EVER,
+ EC_WORD_EVERY,
+ EC_WORD_EVOLUTION,
+ EC_WORD_EVOLVE,
+ EC_WORD_EXCELLENT,
+ EC_WORD_EXCESS,
+ EC_WORD_EXCITE,
+ EC_WORD_EXCITING,
+ EC_WORD_EXCUSE,
+ EC_WORD_EXCUSE_ME,
+ EC_POKEMON2(EXEGGCUTE),
+ EC_POKEMON2(EXEGGUTOR),
+ EC_WORD_EXISTS,
+ EC_WORD_EXPENSIVE,
+ EC_MOVE2(EXPLOSION),
+ EC_POKEMON(EXPLOUD),
+ EC_MOVE(EXTRASENSORY),
+ EC_MOVE(EXTREME_SPEED),
+};
+
+const u16 gEasyChatWordsByLetter_F[] = {
+ EC_WORD_FABULOUS,
+ EC_MOVE(FACADE),
+ EC_WORD_FAINT,
+ EC_MOVE2(FAINT_ATTACK),
+ EC_WORD_FAINTED,
+ EC_MOVE2(FAKE_OUT),
+ EC_MOVE(FAKE_TEARS),
+ EC_WORD_FALL,
+ EC_MOVE2(FALSE_SWIPE),
+ EC_WORD_FAMILY,
+ EC_WORD_FANTASTIC,
+ EC_WORD_FAR,
+ EC_POKEMON2(FARFETCHD),
+ EC_WORD_FASHION,
+ EC_WORD_FAST,
+ EC_WORD_FATHER,
+ EC_WORD_FEAR,
+ EC_POKEMON2(FEAROW),
+ EC_MOVE2(FEATHER_DANCE),
+ EC_POKEMON(FEEBAS),
+ EC_WORD_FEELING,
+ EC_POKEMON2(FERALIGATR),
+ EC_WORD_FESTIVAL,
+ EC_WORD_FEVER,
+ EC_WORD_FIERY,
+ EC_WORD_FIGHT,
+ EC_WORD_FIGHTING,
+ EC_WORD_FIGHTS,
+ EC_WORD_FINAL,
+ EC_WORD_FINALLY,
+ EC_WORD_FINISH,
+ EC_WORD_FIRE,
+ EC_MOVE2(FIRE_BLAST),
+ EC_MOVE2(FIRE_PUNCH),
+ EC_MOVE2(FIRE_SPIN),
+ EC_WORD_FISHING,
+ EC_MOVE(FISSURE),
+ EC_POKEMON2(FLAAFFY),
+ EC_MOVE(FLAIL),
+ EC_WORD_FLAME,
+ EC_WORD_FLAME_BODY,
+ EC_MOVE(FLAME_WHEEL),
+ EC_MOVE(FLAMETHROWER),
+ EC_POKEMON2(FLAREON),
+ EC_MOVE2(FLASH),
+ EC_WORD_FLASH_FIRE,
+ EC_WORD_FLATTEN,
+ EC_MOVE(FLATTER),
+ EC_WORD_FLOWERS,
+ EC_MOVE(FLY),
+ EC_POKEMON(FLYGON),
+ EC_WORD_FLYING,
+ EC_MOVE(FOCUS_ENERGY),
+ EC_MOVE(FOCUS_PUNCH),
+ EC_WORD_FOE,
+ EC_MOVE(FOLLOW_ME),
+ EC_WORD_FOR,
+ EC_WORD_FOR_NOW,
+ EC_WORD_FORECAST,
+ EC_MOVE2(FORESIGHT),
+ EC_WORD_FOREVER,
+ EC_WORD_FORGET,
+ EC_WORD_FORGETS,
+ EC_WORD_FORGIVE,
+ EC_POKEMON2(FORRETRESS),
+ EC_MOVE2(FRENZY_PLANT),
+ EC_WORD_FRIDAY,
+ EC_WORD_FRIEND,
+ EC_WORD_FROM,
+ EC_WORD_FRONT,
+ EC_WORD_FRONTIER,
+ EC_MOVE2(FRUSTRATION),
+ EC_WORD_FUFUFU,
+ EC_WORD_FULL,
+ EC_WORD_FUNNY,
+ EC_POKEMON2(FURRET),
+ EC_MOVE2(FURY_ATTACK),
+ EC_MOVE2(FURY_CUTTER),
+ EC_MOVE2(FURY_SWIPES),
+ EC_MOVE2(FUTURE_SIGHT),
+};
+
+const u16 gEasyChatWordsByLetter_G[] = {
+ EC_WORD_GAME,
+ EC_POKEMON(GARDEVOIR),
+ EC_POKEMON2(GASTLY),
+ EC_POKEMON2(GENGAR),
+ EC_WORD_GENIUS,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GEODUDE),
+ EC_POKEMON2(GEODUDE),
+ EC_WORD_GET,
+ EC_WORD_GETS,
+ EC_WORD_GHOST,
+ EC_WORD_GIDDY,
+ EC_MOVE(GIGA_DRAIN),
+ EC_WORD_GIGGLE,
+ EC_WORD_GIMME,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GIRAFARIG),
+ EC_POKEMON2(GIRAFARIG),
+ EC_WORD_GIRL,
+ EC_WORD_GIVE,
+ EC_WORD_GIVE_ME,
+ EC_WORD_GIVE_UP,
+ EC_WORD_GIVES,
+ EC_POKEMON(GLALIE),
+ EC_MOVE2(GLARE),
+ EC_POKEMON2(GLIGAR),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GLOOM),
+ EC_POKEMON2(GLOOM),
+ EC_WORD_GO,
+ EC_WORD_GO_AHEAD,
+ EC_WORD_GO_EASY,
+ EC_WORD_GO_HOME,
+ EC_WORD_GOES,
+ EC_WORD_GOING,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GOLBAT),
+ EC_POKEMON2(GOLBAT),
+ EC_WORD_GOLD,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GOLDEEN),
+ EC_POKEMON2(GOLDEEN),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GOLDUCK),
+ EC_POKEMON2(GOLDUCK),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GOLEM),
+ EC_POKEMON2(GOLEM),
+ EC_WORD_GOOD,
+ EC_WORD_GOOD_BYE,
+ EC_POKEMON(GOREBYSS),
+ EC_WORD_GOT,
+ EC_WORD_GOTCHA,
+ EC_WORD_GOURMET,
+ EC_WORD_GRAAAH,
+ EC_POKEMON2(GRANBULL),
+ EC_WORD_GRANDFATHER,
+ EC_WORD_GRANDMOTHER,
+ EC_WORD_GRASS,
+ EC_MOVE(GRASS_WHISTLE),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GRAVELER),
+ EC_POKEMON2(GRAVELER),
+ EC_WORD_GREAT,
+ EC_WORD_GREEN,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GRIMER),
+ EC_POKEMON2(GRIMER),
+ EC_POKEMON(GROUDON),
+ EC_WORD_GROUND,
+ EC_WORD_GROUP,
+ EC_POKEMON(GROVYLE),
+ EC_MOVE2(GROWL),
+ EC_POKEMON2(GROWLITHE),
+ EC_MOVE(GROWTH),
+ EC_MOVE(GRUDGE),
+ EC_POKEMON(GRUMPIG),
+ EC_WORD_GUARD,
+ EC_MOVE2(GUILLOTINE),
+ EC_POKEMON(GULPIN),
+ EC_MOVE(GUST),
+ EC_WORD_GUTS,
+ EC_WORD_GUTSY,
+ EC_WORD_GWAH,
+ EC_WORD_GWAHAHAHA,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GYARADOS),
+ EC_POKEMON2(GYARADOS),
+};
+
+const u16 gEasyChatWordsByLetter_H[] = {
+ EC_WORD_HABIT,
+ EC_WORD_HAH,
+ EC_WORD_HAHAHA,
+ EC_MOVE(HAIL),
+ EC_WORD_HALL_OF_FAME,
+ EC_WORD_HAPPENING,
+ EC_WORD_HAPPILY,
+ EC_WORD_HAPPINESS,
+ EC_WORD_HAPPY,
+ EC_WORD_HARD,
+ EC_MOVE(HARDEN),
+ EC_POKEMON(HARIYAMA),
+ EC_WORD_HAS,
+ EC_WORD_HASSLE,
+ EC_POKEMON2(HAUNTER),
+ EC_WORD_HAVE,
+ EC_WORD_HAVEN_T,
+ EC_MOVE(HAZE),
+ EC_WORD_HE,
+ EC_WORD_HE_S,
+ EC_MOVE(HEADBUTT),
+ EC_MOVE(HEAL_BELL),
+ EC_WORD_HEALTHY,
+ EC_WORD_HEAR,
+ EC_WORD_HEARING,
+ EC_WORD_HEARS,
+ EC_WORD_HEART,
+ EC_MOVE2(HEAT_WAVE),
+ EC_WORD_HEH,
+ EC_WORD_HEHE,
+ EC_WORD_HEHEHE,
+ EC_WORD_HELLO,
+ EC_MOVE2(HELPING_HAND),
+ EC_WORD_HER,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(HERACROSS),
+ EC_POKEMON2(HERACROSS),
+ EC_WORD_HERE,
+ EC_WORD_HERE_GOES,
+ EC_WORD_HERE_I_COME,
+ EC_WORD_HERE_IT_IS,
+ EC_WORD_HERO,
+ EC_WORD_HEROINE,
+ EC_WORD_HERS,
+ EC_WORD_HEY,
+ EC_WORD_HEY_THERE,
+ EC_WORD_HEY_QUES,
+ EC_WORD_HI,
+ EC_MOVE2(HI_JUMP_KICK),
+ EC_WORD_HIDDEN,
+ EC_MOVE2(HIDDEN_POWER),
+ EC_WORD_HIGH,
+ EC_WORD_HIGHS,
+ EC_WORD_HIM,
+ EC_WORD_HIP_AND,
+ EC_WORD_HIS,
+ EC_WORD_HIT,
+ EC_POKEMON2(HITMONCHAN),
+ EC_POKEMON2(HITMONLEE),
+ EC_POKEMON2(HITMONTOP),
+ EC_WORD_HIYAH,
+ EC_WORD_HMM,
+ EC_POKEMON2(HO_OH),
+ EC_WORD_HOBBY,
+ EC_WORD_HOHOHO,
+ EC_WORD_HOLIDAY,
+ EC_WORD_HOME,
+ EC_WORD_HOO_HAH,
+ EC_POKEMON2(HOOTHOOT),
+ EC_WORD_HOPELESS,
+ EC_POKEMON2(HOPPIP),
+ EC_MOVE2(HORN_ATTACK),
+ EC_MOVE2(HORN_DRILL),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(HORSEA),
+ EC_POKEMON2(HORSEA),
+ EC_WORD_HOT,
+ EC_POKEMON2(HOUNDOOM),
+ EC_POKEMON2(HOUNDOUR),
+ EC_WORD_HOW,
+ EC_WORD_HOW_DO,
+ EC_WORD_HOWEVER,
+ EC_MOVE2(HOWL),
+ EC_WORD_HUGE_POWER,
+ EC_WORD_HUH_QUES,
+ EC_WORD_HUMPH,
+ EC_WORD_HUNGRY,
+ EC_POKEMON(HUNTAIL),
+ EC_WORD_HURRIED,
+ EC_WORD_HUSTLE,
+ EC_MOVE2(HYDRO_CANNON),
+ EC_MOVE2(HYDRO_PUMP),
+ EC_WORD_HYPER,
+ EC_MOVE2(HYPER_BEAM),
+ EC_WORD_HYPER_CUTTER,
+ EC_MOVE2(HYPER_FANG),
+ EC_MOVE2(HYPER_VOICE),
+ EC_POKEMON2(HYPNO),
+ EC_MOVE(HYPNOSIS),
+};
+
+const u16 gEasyChatWordsByLetter_I[] = {
+ EC_WORD_I,
+ EC_WORD_I_AM,
+ EC_WORD_I_CHOOSE_YOU,
+ EC_WORD_I_WAS,
+ EC_WORD_I_VE,
+ EC_WORD_I_VE_ARRIVED,
+ EC_WORD_ICE,
+ EC_MOVE(ICE_BALL),
+ EC_MOVE2(ICE_BEAM),
+ EC_MOVE2(ICE_PUNCH),
+ EC_MOVE2(ICICLE_SPEAR),
+ EC_MOVE(ICY_WIND),
+ EC_WORD_IDOL,
+ EC_WORD_IF,
+ EC_WORD_IF_I_LOSE,
+ EC_WORD_IF_I_WIN,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(IGGLYBUFF),
+ EC_POKEMON2(IGGLYBUFF),
+ EC_WORD_IGNORANT,
+ EC_WORD_ILLUMINATE,
+ EC_POKEMON(ILLUMISE),
+ EC_WORD_IMMUNITY,
+ EC_WORD_IMPORTANT,
+ EC_WORD_IMPOSSIBLE,
+ EC_MOVE2(IMPRISON),
+ EC_WORD_IN,
+ EC_WORD_INCREASING,
+ EC_WORD_INCREDIBLE,
+ EC_WORD_INFORMATION,
+ EC_MOVE2(INGRAIN),
+ EC_WORD_INNER_FOCUS,
+ EC_WORD_INSIDE,
+ EC_WORD_INSOMNIA,
+ EC_WORD_INSTEAD,
+ EC_WORD_INTIMIDATE,
+ EC_WORD_INVINCIBLE,
+ EC_MOVE2(IRON_DEFENSE),
+ EC_MOVE(IRON_TAIL),
+ EC_WORD_IS,
+ EC_WORD_IS_IT_QUES,
+ EC_WORD_ISN_T,
+ EC_WORD_ISN_T_IT_QUES,
+ EC_WORD_IT,
+ EC_WORD_IT_S,
+ EC_WORD_ITEM,
+ EC_POKEMON2(IVYSAUR),
+};
+
+const u16 gEasyChatWordsByLetter_J[] = {
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(JIGGLYPUFF),
+ EC_POKEMON2(JIGGLYPUFF),
+ EC_POKEMON(JIRACHI),
+ EC_WORD_JOKING,
+ EC_POKEMON2(JOLTEON),
+ EC_WORD_JOY,
+ EC_WORD_JUDGE,
+ EC_MOVE2(JUMP_KICK),
+ EC_POKEMON2(JUMPLUFF),
+ EC_WORD_JUST,
+ EC_POKEMON2(JYNX),
+};
+
+const u16 gEasyChatWordsByLetter_K[] = {
+ EC_POKEMON2(KABUTO),
+ EC_POKEMON2(KABUTOPS),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(KADABRA),
+ EC_POKEMON2(KADABRA),
+ EC_POKEMON2(KAKUNA),
+ EC_POKEMON2(KANGASKHAN),
+ EC_MOVE(KARATE_CHOP),
+ EC_POKEMON(KECLEON),
+ EC_WORD_KEEN_EYE,
+ EC_WORD_KID,
+ EC_WORD_KIDDING,
+ EC_WORD_KIND,
+ EC_WORD_KINDERGARTEN,
+ EC_MOVE(KINESIS),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(KINGDRA),
+ EC_POKEMON2(KINGDRA),
+ EC_POKEMON2(KINGLER),
+ EC_POKEMON(KIRLIA),
+ EC_MOVE2(KNOCK_OFF),
+ EC_WORD_KNOCKOUT,
+ EC_WORD_KNOW,
+ EC_WORD_KNOWS,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(KOFFING),
+ EC_POKEMON2(KOFFING),
+ EC_POKEMON2(KRABBY),
+ EC_WORD_KTHX_BYE,
+ EC_POKEMON(KYOGRE),
+};
+
+const u16 gEasyChatWordsByLetter_L[] = {
+ EC_WORD_LACKING,
+ EC_WORD_LACKS,
+ EC_WORD_LADY,
+ EC_POKEMON(LAIRON),
+ EC_WORD_LALALA,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(LANTURN),
+ EC_POKEMON2(LANTURN),
+ EC_POKEMON2(LAPRAS),
+ EC_POKEMON2(LARVITAR),
+ EC_WORD_LAST,
+ EC_WORD_LATE,
+ EC_WORD_LATER,
+ EC_POKEMON(LATIAS),
+ EC_POKEMON(LATIOS),
+ EC_WORD_LAVISH,
+ EC_WORD_LAY,
+ EC_WORD_LEADER,
+ EC_WORD_LEADERS,
+ EC_WORD_LEAF,
+ EC_MOVE2(LEAF_BLADE),
+ EC_WORD_LEARN,
+ EC_POKEMON2(LEDIAN),
+ EC_POKEMON2(LEDYBA),
+ EC_MOVE(LEECH_LIFE),
+ EC_MOVE2(LEECH_SEED),
+ EC_MOVE2(LEER),
+ EC_WORD_LEFT,
+ EC_WORD_LEGEND,
+ EC_WORD_LESS,
+ EC_WORD_LESSONS,
+ EC_WORD_LET_ME_WIN,
+ EC_WORD_LET_S,
+ EC_WORD_LETTER,
+ EC_WORD_LEVEL,
+ EC_WORD_LEVITATE,
+ EC_MOVE(LICK),
+ EC_POKEMON2(LICKITUNG),
+ EC_WORD_LIE,
+ EC_WORD_LIFE,
+ EC_MOVE2(LIGHT_SCREEN),
+ EC_WORD_LIGHTNINGROD,
+ EC_WORD_LIKE,
+ EC_WORD_LIKELY_TO,
+ EC_WORD_LIKES,
+ EC_POKEMON(LILEEP),
+ EC_WORD_LIMBER,
+ EC_WORD_LINK,
+ EC_POKEMON(LINOONE),
+ EC_WORD_LIQUID_OOZE,
+ EC_WORD_LISTEN,
+ EC_WORD_LISTENING,
+ EC_WORD_LISTENS,
+ EC_WORD_LIVING,
+ EC_MOVE2(LOCK_ON),
+ EC_WORD_LOCOMOTIVE,
+ EC_WORD_LOL,
+ EC_WORD_LOLLING,
+ EC_POKEMON(LOMBRE),
+ EC_WORD_LONESOME,
+ EC_WORD_LOOK,
+ EC_WORD_LOOKS,
+ EC_WORD_LOSE,
+ EC_WORD_LOSER,
+ EC_WORD_LOSING,
+ EC_WORD_LOSS,
+ EC_WORD_LOST,
+ EC_POKEMON(LOTAD),
+ EC_POKEMON(LOUDRED),
+ EC_WORD_LOUSY,
+ EC_MOVE(LOVELY_KISS),
+ EC_WORD_LOVEY_DOVEY,
+ EC_WORD_LOW,
+ EC_MOVE(LOW_KICK),
+ EC_WORD_LOWS,
+ EC_POKEMON(LUDICOLO),
+ EC_POKEMON2(LUGIA),
+ EC_WORD_LUKEWARM,
+ EC_POKEMON(LUNATONE),
+ EC_MOVE2(LUSTER_PURGE),
+ EC_POKEMON(LUVDISC),
+};
+
+const u16 gEasyChatWordsByLetter_M[] = {
+ EC_MOVE2(MACH_PUNCH),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MACHAMP),
+ EC_POKEMON2(MACHAMP),
+ EC_WORD_MACHINE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MACHOKE),
+ EC_POKEMON2(MACHOKE),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MACHOP),
+ EC_POKEMON2(MACHOP),
+ EC_WORD_MAGAZINE,
+ EC_POKEMON2(MAGBY),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MAGCARGO),
+ EC_POKEMON2(MAGCARGO),
+ EC_MOVE2(MAGIC_COAT),
+ EC_MOVE2(MAGICAL_LEAF),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MAGIKARP),
+ EC_POKEMON2(MAGIKARP),
+ EC_WORD_MAGMA_ARMOR,
+ EC_POKEMON2(MAGMAR),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MAGNEMITE),
+ EC_POKEMON2(MAGNEMITE),
+ EC_WORD_MAGNET_PULL,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MAGNETON),
+ EC_POKEMON2(MAGNETON),
+ EC_MOVE2(MAGNITUDE),
+ EC_WORD_MAIL,
+ EC_WORD_MAKE,
+ EC_WORD_MAKING,
+ EC_POKEMON(MAKUHITA),
+ EC_WORD_MAN,
+ EC_POKEMON(MANECTRIC),
+ EC_POKEMON2(MANKEY),
+ EC_POKEMON2(MANTINE),
+ EC_POKEMON2(MAREEP),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MARILL),
+ EC_POKEMON2(MARILL),
+ EC_POKEMON2(MAROWAK),
+ EC_POKEMON(MARSHTOMP),
+ EC_WORD_MARVEL_SCALE,
+ EC_POKEMON(MASQUERAIN),
+ EC_WORD_MASTER,
+ EC_WORD_MATCH,
+ EC_WORD_MATCH_UP,
+ EC_POKEMON(MAWILE),
+ EC_WORD_MAYBE,
+ EC_WORD_MC,
+ EC_WORD_ME,
+ EC_WORD_MEAN,
+ EC_MOVE(MEAN_LOOK),
+ EC_POKEMON(MEDICHAM),
+ EC_MOVE2(MEDITATE),
+ EC_POKEMON(MEDITITE),
+ EC_WORD_MEET,
+ EC_WORD_MEET_YOU,
+ EC_WORD_MEETS,
+ EC_WORD_MEGA,
+ EC_MOVE2(MEGA_DRAIN),
+ EC_MOVE2(MEGA_KICK),
+ EC_MOVE2(MEGA_PUNCH),
+ EC_MOVE2(MEGAHORN),
+ EC_POKEMON2(MEGANIUM),
+ EC_MOVE(MEMENTO),
+ EC_POKEMON2(MEOWTH),
+ EC_WORD_MESSAGE,
+ EC_POKEMON(METAGROSS),
+ EC_MOVE2(METAL_CLAW),
+ EC_MOVE(METAL_SOUND),
+ EC_POKEMON(METANG),
+ EC_POKEMON2(METAPOD),
+ EC_MOVE(METEOR_MASH),
+ EC_MOVE2(METRONOME),
+ EC_POKEMON2(MEW),
+ EC_POKEMON2(MEWTWO),
+ EC_POKEMON(MIGHTYENA),
+ EC_MOVE2(MILK_DRINK),
+ EC_POKEMON(MILOTIC),
+ EC_POKEMON2(MILTANK),
+ EC_MOVE2(MIMIC),
+ EC_MOVE(MIND_READER),
+ EC_MOVE2(MINIMIZE),
+ EC_POKEMON(MINUN),
+ EC_WORD_MINUS,
+ EC_MOVE2(MIRROR_COAT),
+ EC_MOVE(MIRROR_MOVE),
+ EC_POKEMON2(MISDREAVUS),
+ EC_WORD_MISHEARD,
+ EC_WORD_MISS,
+ EC_MOVE(MIST),
+ EC_MOVE2(MIST_BALL),
+ EC_WORD_MISTAKE,
+ EC_WORD_MMM,
+ EC_WORD_MODE,
+ EC_WORD_MODERN,
+ EC_POKEMON2(MOLTRES),
+ EC_WORD_MOMENTUM,
+ EC_WORD_MONDAY,
+ EC_WORD_MONEY,
+ EC_WORD_MONTH,
+ EC_WORD_MOOD,
+ EC_MOVE2(MOONLIGHT),
+ EC_WORD_MORE,
+ EC_WORD_MORNING,
+ EC_MOVE(MORNING_SUN),
+ EC_WORD_MOTHER,
+ EC_WORD_MOVE,
+ EC_WORD_MOVIE,
+ EC_WORD_MR,
+ EC_POKEMON2(MR_MIME),
+ EC_WORD_MRS,
+ EC_WORD_MUCH,
+ EC_WORD_MUCH_OBLIGED,
+ EC_MOVE2(MUD_SHOT),
+ EC_MOVE2(MUD_SPORT),
+ EC_MOVE2(MUD_SLAP),
+ EC_MOVE2(MUDDY_WATER),
+ EC_POKEMON(MUDKIP),
+ EC_WORD_MUFUFU,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MUK),
+ EC_POKEMON2(MUK),
+ EC_POKEMON2(MURKROW),
+ EC_WORD_MUSIC,
+ EC_WORD_MUST_BE,
+ EC_WORD_MY,
+ EC_WORD_MYSELF,
+ EC_WORD_MYSTERY,
+};
+
+const u16 gEasyChatWordsByLetter_N[] = {
+ EC_WORD_NAME,
+ EC_WORD_NAP,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(NATU),
+ EC_POKEMON2(NATU),
+ EC_WORD_NATURAL,
+ EC_WORD_NATURAL_CURE,
+ EC_WORD_NATURALLY,
+ EC_WORD_NATURE,
+ EC_MOVE(NATURE_POWER),
+ EC_WORD_NEAR,
+ EC_WORD_NEARLY,
+ EC_WORD_NEED,
+ EC_MOVE2(NEEDLE_ARM),
+ EC_WORD_NEGATIVE,
+ EC_WORD_NEVER,
+ EC_WORD_NEW,
+ EC_WORD_NEWS,
+ EC_WORD_NEXT,
+ EC_WORD_NICE,
+ EC_POKEMON2(NIDOKING),
+ EC_POKEMON2(NIDOQUEEN),
+ EC_POKEMON2(NIDORAN_F),
+ EC_POKEMON2(NIDORAN_M),
+ EC_POKEMON2(NIDORINA),
+ EC_POKEMON2(NIDORINO),
+ EC_WORD_NIGHT,
+ EC_MOVE2(NIGHT_SHADE),
+ EC_MOVE(NIGHTMARE),
+ EC_WORD_NIGHTTIME,
+ EC_POKEMON(NINCADA),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(NINETALES),
+ EC_POKEMON2(NINETALES),
+ EC_POKEMON(NINJASK),
+ EC_WORD_NITWIT,
+ EC_WORD_NO,
+ EC_WORD_NO_MATCH,
+ EC_WORD_NO_1,
+ EC_POKEMON2(NOCTOWL),
+ EC_WORD_NOISY,
+ EC_WORD_NON_STOP,
+ EC_WORD_NONE,
+ EC_WORD_NOPE,
+ EC_WORD_NORMAL,
+ EC_POKEMON(NOSEPASS),
+ EC_WORD_NOT,
+ EC_WORD_NOT_VERY,
+ EC_WORD_NOTHING,
+ EC_WORD_NOW,
+ EC_POKEMON(NUMEL),
+ EC_POKEMON(NUZLEAF),
+};
+
+const u16 gEasyChatWordsByLetter_O[] = {
+ EC_WORD_OBLIVIOUS,
+ EC_MOVE(OCTAZOOKA),
+ EC_POKEMON2(OCTILLERY),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(ODDISH),
+ EC_POKEMON2(ODDISH),
+ EC_MOVE(ODOR_SLEUTH),
+ EC_WORD_OF,
+ EC_WORD_OFF,
+ EC_WORD_OFFENSIVE,
+ EC_WORD_OH,
+ EC_WORD_OH_DEAR,
+ EC_WORD_OH_YEAH,
+ EC_WORD_OH_KAY,
+ EC_WORD_OH_QUES,
+ EC_WORD_OI,
+ EC_WORD_OI_OI_OI,
+ EC_WORD_OK_QUES,
+ EC_WORD_OKAY,
+ EC_WORD_OLD,
+ EC_WORD_OLDEN,
+ EC_POKEMON2(OMANYTE),
+ EC_POKEMON2(OMASTAR),
+ EC_WORD_ON,
+ EC_WORD_ONCE,
+ EC_POKEMON2(ONIX),
+ EC_WORD_ONLY,
+ EC_WORD_OOPS,
+ EC_WORD_OPPONENT,
+ EC_WORD_OPPOSITE,
+ EC_WORD_OR,
+ EC_WORD_OTHER,
+ EC_WORD_OUR,
+ EC_WORD_OUT,
+ EC_MOVE(OUTRAGE),
+ EC_WORD_OUTSIDE,
+ EC_WORD_OVER,
+ EC_WORD_OVERDO,
+ EC_WORD_OVERGROW,
+ EC_MOVE(OVERHEAT),
+ EC_WORD_OVERWHELMING,
+ EC_WORD_OWN,
+ EC_WORD_OWN_TEMPO,
+};
+
+const u16 gEasyChatWordsByLetter_P[] = {
+ EC_MOVE(PAIN_SPLIT),
+ EC_POKEMON2(PARAS),
+ EC_POKEMON2(PARASECT),
+ EC_WORD_PARDON,
+ EC_WORD_PARENT,
+ EC_WORD_PARTNER,
+ EC_WORD_PARTY,
+ EC_WORD_PATTERN,
+ EC_MOVE2(PAY_DAY),
+ EC_WORD_PC,
+ EC_MOVE2(PECK),
+ EC_POKEMON(PELIPPER),
+ EC_WORD_PERFECT,
+ EC_WORD_PERFECTION,
+ EC_MOVE2(PERISH_SONG),
+ EC_POKEMON2(PERSIAN),
+ EC_WORD_PERSON,
+ EC_MOVE2(PETAL_DANCE),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(PHANPY),
+ EC_POKEMON2(PHANPY),
+ EC_WORD_PHONE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(PICHU),
+ EC_POKEMON2(PICHU),
+ EC_WORD_PICKUP,
+ EC_POKEMON2(PIDGEOT),
+ EC_POKEMON2(PIDGEOTTO),
+ EC_POKEMON2(PIDGEY),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(PIKACHU),
+ EC_POKEMON2(PIKACHU),
+ EC_POKEMON2(PILOSWINE),
+ EC_MOVE2(PIN_MISSILE),
+ EC_POKEMON2(PINECO),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(PINSIR),
+ EC_POKEMON2(PINSIR),
+ EC_WORD_PKRS,
+ EC_WORD_PLACE,
+ EC_WORD_PLANS,
+ EC_WORD_PLAY,
+ EC_WORD_PLAYED,
+ EC_WORD_PLAYS,
+ EC_WORD_PLEASE,
+ EC_WORD_PLUS,
+ EC_WORD_PLUSH_DOLL,
+ EC_POKEMON(PLUSLE),
+ EC_WORD_POINTS,
+ EC_WORD_POISON,
+ EC_MOVE2(POISON_FANG),
+ EC_MOVE2(POISON_GAS),
+ EC_WORD_POISON_POINT,
+ EC_MOVE2(POISON_STING),
+ EC_MOVE2(POISON_TAIL),
+ EC_MOVE2(POISON_POWDER),
+ EC_WORD_POKEBLOCK,
+ EC_WORD_POKEDEX,
+ EC_WORD_POKEMON,
+ EC_WORD_POKENAV,
+ EC_POKEMON2(POLITOED),
+ EC_POKEMON2(POLIWAG),
+ EC_POKEMON2(POLIWHIRL),
+ EC_POKEMON2(POLIWRATH),
+ EC_POKEMON2(PONYTA),
+ EC_POKEMON(POOCHYENA),
+ EC_WORD_POPULAR,
+ EC_POKEMON2(PORYGON),
+ EC_POKEMON2(PORYGON2),
+ EC_MOVE2(POUND),
+ EC_MOVE(POWDER_SNOW),
+ EC_WORD_POWER,
+ EC_WORD_PRAISE,
+ EC_WORD_PREPOSTEROUS,
+ EC_MOVE2(PRESENT),
+ EC_WORD_PRESSURE,
+ EC_WORD_PRETEND,
+ EC_WORD_PRETTY,
+ EC_POKEMON2(PRIMEAPE),
+ EC_WORD_PROBABLY,
+ EC_WORD_PROMISE,
+ EC_MOVE2(PROTECT),
+ EC_MOVE(PSYBEAM),
+ EC_MOVE(PSYCH_UP),
+ -1, 2, // Doubled pokemon species name
+ EC_WORD_PSYCHIC,
+ EC_MOVE(PSYCHIC),
+ EC_MOVE(PSYCHO_BOOST),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(PSYDUCK),
+ EC_POKEMON2(PSYDUCK),
+ EC_MOVE(PSYWAVE),
+ EC_POKEMON2(PUPITAR),
+ EC_WORD_PURE_POWER,
+ EC_MOVE(PURSUIT),
+ EC_WORD_PUSHOVER,
+};
+
+const u16 gEasyChatWordsByLetter_Q[] = {
+ EC_POKEMON2(QUAGSIRE),
+ EC_WORD_QUESTION,
+ EC_MOVE2(QUICK_ATTACK),
+ EC_POKEMON2(QUILAVA),
+ EC_WORD_QUITE,
+ EC_POKEMON2(QWILFISH),
+};
+
+const u16 gEasyChatWordsByLetter_R[] = {
+ EC_WORD_RADIO,
+ EC_MOVE(RAGE),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(RAICHU),
+ EC_POKEMON2(RAICHU),
+ EC_POKEMON2(RAIKOU),
+ EC_MOVE(RAIN_DANCE),
+ EC_WORD_RAIN_DISH,
+ EC_POKEMON(RALTS),
+ EC_WORD_RANK,
+ EC_MOVE(RAPID_SPIN),
+ EC_POKEMON2(RAPIDASH),
+ EC_WORD_RARE,
+ EC_WORD_RATHER,
+ EC_POKEMON2(RATICATE),
+ EC_POKEMON2(RATTATA),
+ EC_POKEMON(RAYQUAZA),
+ EC_MOVE2(RAZOR_LEAF),
+ EC_MOVE(RAZOR_WIND),
+ EC_WORD_READY,
+ EC_WORD_REALLY,
+ EC_WORD_REAR,
+ EC_WORD_RECEIVED,
+ EC_WORD_RECOMMEND,
+ EC_MOVE(RECOVER),
+ EC_MOVE2(RECYCLE),
+ EC_WORD_RED,
+ EC_MOVE2(REFLECT),
+ EC_MOVE2(REFRESH),
+ EC_WORD_REFRESHING,
+ EC_WORD_REFUSE,
+ EC_POKEMON(REGICE),
+ EC_POKEMON(REGIROCK),
+ EC_POKEMON(REGISTEEL),
+ EC_WORD_REJECT,
+ EC_WORD_RELEASE,
+ EC_POKEMON(RELICANTH),
+ EC_POKEMON2(REMORAID),
+ EC_WORD_RENTAL,
+ EC_MOVE2(REST),
+ EC_WORD_RESUSCITATE,
+ EC_MOVE(RETURN),
+ EC_MOVE2(REVENGE),
+ EC_MOVE(REVERSAL),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(RHYDON),
+ EC_POKEMON2(RHYDON),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(RHYHORN),
+ EC_POKEMON2(RHYHORN),
+ EC_WORD_RIBBON,
+ EC_WORD_RICKETY,
+ EC_WORD_RIGHT,
+ EC_WORD_RIPPED,
+ EC_WORD_RIVAL,
+ EC_MOVE2(ROAR),
+ EC_WORD_ROCK,
+ EC_MOVE2(ROCK_BLAST),
+ EC_WORD_ROCK_HEAD,
+ EC_MOVE(ROCK_SLIDE),
+ EC_MOVE(ROCK_SMASH),
+ EC_MOVE(ROCK_THROW),
+ EC_MOVE(ROCK_TOMB),
+ EC_WORD_ROCK_SOLID,
+ EC_MOVE2(ROLE_PLAY),
+ EC_MOVE2(ROLLING_KICK),
+ EC_MOVE(ROLLOUT),
+ EC_WORD_ROMANTIC,
+ EC_WORD_ROOM,
+ EC_POKEMON(ROSELIA),
+ EC_WORD_ROUGH_SKIN,
+ EC_WORD_RPG,
+ EC_WORD_RUBY,
+ EC_WORD_RULE,
+ EC_WORD_RUN,
+ EC_WORD_RUN_AWAY,
+ EC_WORD_RUNS,
+};
+
+const u16 gEasyChatWordsByLetter_S[] = {
+ EC_POKEMON(SABLEYE),
+ EC_MOVE(SACRED_FIRE),
+ EC_WORD_SAD,
+ EC_WORD_SADLY,
+ EC_MOVE(SAFEGUARD),
+ EC_WORD_SAID,
+ EC_POKEMON(SALAMENCE),
+ EC_WORD_SAND_STREAM,
+ EC_MOVE(SAND_TOMB),
+ EC_WORD_SAND_VEIL,
+ EC_MOVE(SAND_ATTACK),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(SANDSHREW),
+ EC_POKEMON2(SANDSHREW),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(SANDSLASH),
+ EC_POKEMON2(SANDSLASH),
+ EC_MOVE(SANDSTORM),
+ EC_WORD_SAPPHIRE,
+ EC_WORD_SATISFIED,
+ EC_WORD_SATURDAY,
+ EC_WORD_SAYS,
+ EC_WORD_SCARY,
+ EC_MOVE(SCARY_FACE),
+ EC_WORD_SCATTER,
+ EC_POKEMON(SCEPTILE),
+ EC_WORD_SCHOOL,
+ EC_POKEMON2(SCIZOR),
+ EC_MOVE2(SCRATCH),
+ EC_MOVE(SCREECH),
+ EC_POKEMON2(SCYTHER),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(SEADRA),
+ EC_POKEMON2(SEADRA),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(SEAKING),
+ EC_POKEMON2(SEAKING),
+ EC_POKEMON(SEALEO),
+ EC_WORD_SEARCH,
+ EC_WORD_SECRET,
+ EC_WORD_SECRET_BASE,
+ EC_MOVE2(SECRET_POWER),
+ EC_WORD_SEE,
+ EC_WORD_SEE_YA,
+ EC_POKEMON(SEEDOT),
+ EC_WORD_SEEK,
+ EC_POKEMON2(SEEL),
+ EC_WORD_SEEMS,
+ EC_WORD_SEES,
+ EC_MOVE2(SEISMIC_TOSS),
+ EC_MOVE(SELF_DESTRUCT),
+ EC_WORD_SENSE,
+ EC_POKEMON2(SENTRET),
+ EC_WORD_SERENE_GRACE,
+ EC_WORD_SERIOUS,
+ EC_WORD_SERIOUSLY,
+ EC_WORD_SERVICE,
+ EC_POKEMON(SEVIPER),
+ EC_MOVE(SHADOW_BALL),
+ EC_MOVE(SHADOW_PUNCH),
+ EC_WORD_SHADOW_TAG,
+ EC_WORD_SHADY,
+ EC_WORD_SHAKE,
+ EC_WORD_SHAKY,
+ EC_WORD_SHALLOW,
+ EC_POKEMON(SHARPEDO),
+ EC_MOVE(SHARPEN),
+ EC_WORD_SHE,
+ EC_WORD_SHE_IS,
+ EC_WORD_SHE_WAS,
+ EC_WORD_SHED_SKIN,
+ EC_POKEMON(SHEDINJA),
+ EC_MOVE(SHEER_COLD),
+ EC_POKEMON(SHELGON),
+ EC_WORD_SHELL_ARMOR,
+ EC_POKEMON2(SHELLDER),
+ EC_WORD_SHIELD_DUST,
+ EC_POKEMON(SHIFTRY),
+ EC_WORD_SHINE,
+ EC_MOVE2(SHOCK_WAVE),
+ EC_WORD_SHOCKED,
+ EC_WORD_SHOPPING,
+ EC_WORD_SHOULD,
+ EC_WORD_SHOW,
+ EC_WORD_SHREDDED,
+ EC_POKEMON(SHROOMISH),
+ EC_POKEMON2(SHUCKLE),
+ EC_POKEMON(SHUPPET),
+ EC_WORD_SIBLINGS,
+ EC_WORD_SIGH,
+ EC_MOVE(SIGNAL_BEAM),
+ EC_POKEMON(SILCOON),
+ EC_WORD_SILKY,
+ EC_WORD_SILVER,
+ EC_MOVE(SILVER_WIND),
+ EC_WORD_SIMPLE,
+ EC_WORD_SINCE,
+ EC_MOVE(SING),
+ EC_WORD_SINK,
+ EC_WORD_SISTER,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(SKARMORY),
+ EC_POKEMON2(SKARMORY),
+ EC_MOVE(SKETCH),
+ EC_WORD_SKILL,
+ EC_MOVE(SKILL_SWAP),
+ EC_WORD_SKILLED,
+ EC_POKEMON2(SKIPLOOM),
+ EC_POKEMON(SKITTY),
+ EC_MOVE2(SKULL_BASH),
+ EC_MOVE(SKY_ATTACK),
+ EC_MOVE(SKY_UPPERCUT),
+ EC_MOVE2(SLACK_OFF),
+ EC_POKEMON(SLAKING),
+ EC_POKEMON(SLAKOTH),
+ EC_MOVE2(SLAM),
+ EC_MOVE(SLASH),
+ EC_WORD_SLEEP,
+ EC_MOVE2(SLEEP_POWDER),
+ EC_MOVE2(SLEEP_TALK),
+ EC_WORD_SLEPT,
+ EC_WORD_SLIDE,
+ EC_WORD_SLIMY,
+ EC_POKEMON2(SLOWBRO),
+ EC_POKEMON2(SLOWKING),
+ EC_POKEMON2(SLOWPOKE),
+ EC_MOVE2(SLUDGE),
+ EC_MOVE2(SLUDGE_BOMB),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(SLUGMA),
+ EC_POKEMON2(SLUGMA),
+ EC_WORD_SMACK,
+ EC_WORD_SMALL,
+ EC_WORD_SMART,
+ EC_WORD_SMARTNESS,
+ EC_POKEMON2(SMEARGLE),
+ EC_WORD_SMELL,
+ EC_WORD_SMELL_YA,
+ EC_MOVE(SMELLING_SALT),
+ EC_WORD_SMITE,
+ EC_MOVE(SMOG),
+ EC_MOVE(SMOKESCREEN),
+ EC_POKEMON2(SMOOCHUM),
+ EC_WORD_SMOOTH,
+ EC_MOVE2(SNATCH),
+ EC_POKEMON2(SNEASEL),
+ EC_MOVE(SNORE),
+ EC_POKEMON2(SNORLAX),
+ EC_WORD_SNORT,
+ EC_POKEMON(SNORUNT),
+ EC_POKEMON2(SNUBBULL),
+ EC_WORD_SO,
+ EC_MOVE2(SOFT_BOILED),
+ EC_WORD_SOFTWARE,
+ EC_MOVE(SOLAR_BEAM),
+ EC_POKEMON(SOLROCK),
+ EC_WORD_SOME,
+ EC_WORD_SOMEHOW,
+ EC_WORD_SOMEONE,
+ EC_WORD_SOMETHING,
+ EC_WORD_SOMETIME,
+ EC_WORD_SON,
+ EC_WORD_SONG,
+ EC_WORD_SONGS,
+ EC_MOVE(SONIC_BOOM),
+ EC_WORD_SOON,
+ EC_WORD_SORRY,
+ EC_WORD_SOUNDPROOF,
+ EC_WORD_SP_ABILITY,
+ EC_MOVE(SPARK),
+ EC_POKEMON2(SPEAROW),
+ EC_WORD_SPECTATOR,
+ EC_WORD_SPEED_BOOST,
+ EC_POKEMON(SPHEAL),
+ EC_MOVE(SPIDER_WEB),
+ EC_MOVE2(SPIKE_CANNON),
+ EC_MOVE2(SPIKES),
+ EC_POKEMON2(SPINARAK),
+ EC_POKEMON(SPINDA),
+ EC_WORD_SPIRALING,
+ EC_WORD_SPIRIT,
+ EC_MOVE2(SPIT_UP),
+ EC_MOVE(SPITE),
+ EC_MOVE2(SPLASH),
+ EC_POKEMON(SPOINK),
+ EC_MOVE(SPORE),
+ EC_WORD_SPORTS,
+ EC_WORD_SPRING,
+ EC_POKEMON2(SQUIRTLE),
+ EC_WORD_STAGE,
+ EC_POKEMON2(STANTLER),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(STARMIE),
+ EC_POKEMON2(STARMIE),
+ EC_WORD_START,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(STARYU),
+ EC_POKEMON2(STARYU),
+ EC_WORD_STATIC,
+ EC_WORD_STAY_AT_HOME,
+ EC_WORD_STEEL,
+ EC_MOVE2(STEEL_WING),
+ EC_POKEMON2(STEELIX),
+ EC_WORD_STENCH,
+ EC_WORD_STICKY_HOLD,
+ EC_MOVE2(STOCKPILE),
+ EC_MOVE2(STOMP),
+ EC_WORD_STOP,
+ EC_WORD_STORE,
+ EC_WORD_STORES,
+ EC_WORD_STORY,
+ EC_WORD_STRATEGY,
+ EC_MOVE(STRENGTH),
+ EC_MOVE(STRING_SHOT),
+ EC_WORD_STRONG,
+ EC_MOVE2(STRUGGLE),
+ EC_WORD_STUDY,
+ EC_MOVE(STUN_SPORE),
+ EC_WORD_STURDY,
+ EC_MOVE(SUBMISSION),
+ EC_MOVE2(SUBSTITUTE),
+ EC_WORD_SUCTION_CUPS,
+ EC_POKEMON2(SUDOWOODO),
+ EC_POKEMON2(SUICUNE),
+ EC_WORD_SUMMER,
+ EC_WORD_SUNDAY,
+ EC_POKEMON2(SUNFLORA),
+ EC_POKEMON2(SUNKERN),
+ EC_MOVE2(SUNNY_DAY),
+ EC_WORD_SUPER,
+ EC_MOVE(SUPER_FANG),
+ EC_MOVE2(SUPERPOWER),
+ EC_MOVE2(SUPERSONIC),
+ EC_MOVE2(SURF),
+ EC_WORD_SURPRISE,
+ EC_WORD_SURRENDER,
+ EC_POKEMON(SURSKIT),
+ EC_POKEMON(SWABLU),
+ EC_MOVE(SWAGGER),
+ EC_MOVE2(SWALLOW),
+ EC_POKEMON(SWALOT),
+ EC_POKEMON(SWAMPERT),
+ EC_WORD_SWARM,
+ EC_MOVE2(SWEET_KISS),
+ EC_MOVE(SWEET_SCENT),
+ EC_WORD_SWEETS,
+ EC_POKEMON(SWELLOW),
+ EC_MOVE(SWIFT),
+ EC_WORD_SWIFT_SWIM,
+ EC_POKEMON2(SWINUB),
+ EC_MOVE2(SWORDS_DANCE),
+ EC_WORD_SYNCHRONIZE,
+ EC_MOVE(SYNTHESIS),
+ EC_WORD_SYSTEM,
+};
+
+const u16 gEasyChatWordsByLetter_T[] = {
+ EC_MOVE2(TACKLE),
+ EC_MOVE2(TAIL_GLOW),
+ EC_MOVE(TAIL_WHIP),
+ EC_POKEMON(TAILLOW),
+ EC_WORD_TAKE,
+ EC_MOVE2(TAKE_DOWN),
+ EC_WORD_TAKE_THAT,
+ EC_WORD_TALENT,
+ EC_WORD_TALK,
+ EC_WORD_TALKING,
+ EC_POKEMON2(TANGELA),
+ EC_WORD_TASTY,
+ EC_MOVE2(TAUNT),
+ EC_POKEMON2(TAUROS),
+ EC_WORD_TCH,
+ EC_WORD_TEACH,
+ EC_WORD_TEACHER,
+ EC_WORD_TEACHES,
+ EC_POKEMON2(TEDDIURSA),
+ EC_MOVE2(TEETER_DANCE),
+ EC_MOVE2(TELEPORT),
+ EC_WORD_TELEVISION,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(TENTACOOL),
+ EC_POKEMON2(TENTACOOL),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(TENTACRUEL),
+ EC_POKEMON2(TENTACRUEL),
+ EC_WORD_TERRIBLE,
+ EC_WORD_TEST,
+ EC_WORD_THAN,
+ EC_WORD_THANK_YOU,
+ EC_WORD_THANKS,
+ EC_WORD_THAT,
+ EC_WORD_THAT_WAS,
+ EC_WORD_THAT_S,
+ EC_WORD_THAT_S_IT_EXCL,
+ EC_WORD_THE,
+ EC_WORD_THEIR,
+ EC_WORD_THERE,
+ EC_WORD_THESE,
+ EC_WORD_THESE_WERE,
+ EC_WORD_THEY,
+ EC_WORD_THEY_WERE,
+ EC_WORD_THEY_RE,
+ EC_WORD_THEY_VE,
+ EC_WORD_THICK,
+ EC_WORD_THICK_FAT,
+ EC_MOVE2(THIEF),
+ EC_WORD_THIN,
+ EC_WORD_THING,
+ EC_WORD_THINGS,
+ EC_WORD_THINK,
+ EC_WORD_THINKS,
+ EC_WORD_THIRSTY,
+ EC_WORD_THIS,
+ EC_WORD_THIS_IS_IT_EXCL,
+ EC_WORD_THOSE,
+ EC_WORD_THOSE_ARE,
+ EC_WORD_THOSE_WERE,
+ EC_MOVE(THRASH),
+ EC_WORD_THROW,
+ EC_MOVE(THUNDER),
+ EC_MOVE2(THUNDER_WAVE),
+ EC_MOVE(THUNDERBOLT),
+ EC_MOVE(THUNDER_PUNCH),
+ EC_MOVE2(THUNDER_SHOCK),
+ EC_WORD_THURSDAY,
+ EC_MOVE(TICKLE),
+ EC_WORD_TICKLISH,
+ EC_WORD_TIGHT,
+ EC_WORD_TIME,
+ EC_WORD_TIMES,
+ EC_WORD_TIRED,
+ EC_WORD_TO,
+ EC_WORD_TO_HER,
+ EC_WORD_TO_ME,
+ EC_WORD_TO_THEM,
+ EC_WORD_TO_US,
+ EC_WORD_TO_WHOM,
+ EC_WORD_TODAY,
+ EC_POKEMON2(TOGEPI),
+ EC_WORD_TOGETHER,
+ EC_POKEMON2(TOGETIC),
+ EC_WORD_TOMORROW,
+ EC_WORD_TOO,
+ EC_WORD_TOO_LATE,
+ EC_WORD_TOO_STRONG,
+ EC_WORD_TOO_WEAK,
+ EC_WORD_TOP,
+ EC_POKEMON(TORCHIC),
+ EC_POKEMON(TORKOAL),
+ EC_MOVE(TORMENT),
+ EC_WORD_TORRENT,
+ EC_WORD_TOTALLY,
+ EC_POKEMON2(TOTODILE),
+ EC_WORD_TOUGH,
+ EC_WORD_TOUGHNESS,
+ EC_WORD_TOURNAMENT,
+ EC_WORD_TOWER,
+ EC_MOVE2(TOXIC),
+ EC_WORD_TOYS,
+ EC_WORD_TRACE,
+ EC_WORD_TRADE,
+ EC_WORD_TRAIN,
+ EC_WORD_TRAINER,
+ EC_WORD_TRAINS,
+ EC_MOVE2(TRANSFORM),
+ EC_POKEMON(TRAPINCH),
+ EC_WORD_TRAVEL,
+ EC_WORD_TREASURE,
+ EC_POKEMON(TREECKO),
+ EC_WORD_TRENDY,
+ EC_MOVE2(TRI_ATTACK),
+ EC_MOVE2(TRICK),
+ EC_WORD_TRIES,
+ EC_MOVE2(TRIPLE_KICK),
+ EC_POKEMON(TROPIUS),
+ EC_WORD_TRUANT,
+ EC_WORD_TRULY,
+ EC_WORD_TRUMP_CARD,
+ EC_WORD_TRUST,
+ EC_WORD_TRY,
+ EC_WORD_TUESDAY,
+ EC_MOVE2(TWINEEDLE),
+ EC_WORD_TWIRLING,
+ EC_MOVE2(TWISTER),
+ EC_WORD_TYPE,
+ EC_POKEMON2(TYPHLOSION),
+ EC_POKEMON2(TYRANITAR),
+ EC_POKEMON2(TYROGUE),
+};
+
+const u16 gEasyChatWordsByLetter_U[] = {
+ EC_WORD_UGLY,
+ EC_WORD_UH_HUH,
+ EC_WORD_UH_OH,
+ EC_WORD_UM,
+ EC_POKEMON2(UMBREON),
+ EC_WORD_UNAVOIDABLE,
+ EC_WORD_UNBELIEVABLE,
+ EC_WORD_UNCLE,
+ EC_WORD_UNDERSTAND,
+ EC_WORD_UNDERSTANDS,
+ EC_WORD_UNDERSTOOD,
+ EC_WORD_UNION,
+ EC_POKEMON2(UNOWN),
+ EC_WORD_UNTIL,
+ EC_WORD_UP,
+ EC_WORD_UPBEAT,
+ EC_MOVE(UPROAR),
+ EC_WORD_UPSIDE_DOWN,
+ EC_WORD_URGH,
+ EC_POKEMON2(URSARING),
+ EC_WORD_USE,
+ EC_WORD_USELESS,
+ EC_WORD_USES,
+ EC_WORD_USING,
+};
+
+const u16 gEasyChatWordsByLetter_V[] = {
+ EC_WORD_VACATION,
+ EC_POKEMON2(VAPOREON),
+ EC_POKEMON2(VENOMOTH),
+ EC_POKEMON2(VENONAT),
+ EC_POKEMON2(VENUSAUR),
+ EC_WORD_VERSION,
+ EC_WORD_VERSUS,
+ EC_WORD_VERY,
+ EC_POKEMON(VIBRAVA),
+ EC_MOVE2(VICE_GRIP),
+ EC_WORD_VICTORY,
+ EC_POKEMON2(VICTREEBEL),
+ EC_WORD_VIEWING,
+ EC_POKEMON(VIGOROTH),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(VILEPLUME),
+ EC_POKEMON2(VILEPLUME),
+ EC_MOVE2(VINE_WHIP),
+ EC_WORD_VITAL_SPIRIT,
+ EC_MOVE(VITAL_THROW),
+ EC_POKEMON(VOLBEAT),
+ EC_WORD_VOLT_ABSORB,
+ EC_MOVE2(VOLT_TACKLE),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(VOLTORB),
+ EC_POKEMON2(VOLTORB),
+ EC_WORD_VORACIOUS,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(VULPIX),
+ EC_POKEMON2(VULPIX),
+};
+
+const u16 gEasyChatWordsByLetter_W[] = {
+ EC_WORD_WAAAH,
+ EC_WORD_WAHAHAHA,
+ EC_POKEMON(WAILMER),
+ EC_POKEMON(WAILORD),
+ EC_WORD_WAIT,
+ EC_WORD_WAKE_UP,
+ EC_WORD_WAKES_UP,
+ EC_WORD_WALK,
+ EC_WORD_WALKING,
+ EC_WORD_WALKS,
+ EC_POKEMON(WALREIN),
+ EC_WORD_WANDERING,
+ EC_WORD_WANNABE,
+ EC_WORD_WANT,
+ EC_WORD_WANTS,
+ EC_POKEMON2(WARTORTLE),
+ EC_WORD_WAS,
+ EC_WORD_WASN_T,
+ EC_WORD_WATER,
+ EC_WORD_WATER_ABSORB,
+ EC_MOVE2(WATER_GUN),
+ EC_MOVE2(WATER_PULSE),
+ EC_MOVE2(WATER_SPORT),
+ EC_MOVE(WATER_SPOUT),
+ EC_WORD_WATER_VEIL,
+ EC_MOVE2(WATERFALL),
+ EC_WORD_WAY,
+ EC_WORD_WE,
+ EC_WORD_WE_RE,
+ EC_WORD_WE_VE,
+ EC_WORD_WEAK,
+ EC_WORD_WEAKENED,
+ EC_MOVE(WEATHER_BALL),
+ EC_WORD_WEDNESDAY,
+ EC_POKEMON2(WEEDLE),
+ EC_WORD_WEEK,
+ EC_POKEMON2(WEEPINBELL),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(WEEZING),
+ EC_POKEMON2(WEEZING),
+ EC_WORD_WEIRD,
+ EC_WORD_WELCOME,
+ EC_WORD_WELL,
+ EC_WORD_WELL_THEN,
+ EC_WORD_WENT,
+ EC_WORD_WERE,
+ EC_WORD_WEREN_T,
+ EC_WORD_WHAT,
+ EC_WORD_WHAT_S_UP_QUES,
+ EC_WORD_WHEN,
+ EC_WORD_WHEN_I_WIN,
+ EC_WORD_WHERE,
+ EC_WORD_WHICH,
+ EC_WORD_WHILE,
+ EC_MOVE(WHIRLPOOL),
+ EC_MOVE2(WHIRLWIND),
+ EC_POKEMON(WHISCASH),
+ EC_POKEMON(WHISMUR),
+ EC_WORD_WHITE_SMOKE,
+ EC_WORD_WHO,
+ EC_WORD_WHO_IS,
+ EC_WORD_WHO_WAS,
+ EC_WORD_WHOAH,
+ EC_WORD_WHOM,
+ EC_WORD_WHOSE,
+ EC_WORD_WHY,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(WIGGLYTUFF),
+ EC_POKEMON2(WIGGLYTUFF),
+ EC_WORD_WILD,
+ EC_WORD_WILL,
+ EC_WORD_WILL_BE_HERE,
+ EC_MOVE(WILL_O_WISP),
+ EC_WORD_WIMPY,
+ EC_WORD_WIN,
+ EC_MOVE2(WING_ATTACK),
+ EC_POKEMON(WINGULL),
+ EC_WORD_WINNER,
+ EC_WORD_WINS,
+ EC_WORD_WINTER,
+ EC_WORD_WIRELESS,
+ EC_MOVE2(WISH),
+ EC_WORD_WITH,
+ EC_MOVE(WITHDRAW),
+ EC_WORD_WITHOUT,
+ EC_WORD_WOBBLY,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(WOBBUFFET),
+ EC_POKEMON2(WOBBUFFET),
+ EC_WORD_WOMAN,
+ EC_WORD_WON,
+ EC_WORD_WON_T,
+ EC_WORD_WONDER,
+ EC_WORD_WONDER_GUARD,
+ EC_POKEMON2(WOOPER),
+ EC_WORD_WORD,
+ EC_WORD_WORK,
+ EC_WORD_WORKING,
+ EC_WORD_WORKS,
+ EC_WORD_WORLD,
+ EC_WORD_WORRY,
+ EC_WORD_WOULD,
+ EC_WORD_WOW,
+ EC_WORD_WOWEE,
+ EC_MOVE2(WRAP),
+ EC_WORD_WROOOAAR_EXCL,
+ EC_POKEMON(WURMPLE),
+ EC_POKEMON(WYNAUT),
+};
+
+const u16 gEasyChatWordsByLetter_X[] = {
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(XATU),
+ EC_POKEMON2(XATU),
+};
+
+const u16 gEasyChatWordsByLetter_Y[] = {
+ EC_WORD_YAHOO,
+ EC_POKEMON2(YANMA),
+ EC_MOVE(YAWN),
+ EC_WORD_YAY,
+ EC_WORD_YEAH,
+ EC_WORD_YEAH_YEAH,
+ EC_WORD_YEEHAW_EXCL,
+ EC_WORD_YES,
+ EC_WORD_YES_SIR_EXCL,
+ EC_WORD_YESTERDAY,
+ EC_WORD_YET,
+ EC_WORD_YO,
+ EC_WORD_YOU,
+ EC_WORD_YOU_RE,
+ EC_WORD_YOU_VE,
+ EC_WORD_YOUNG,
+ EC_WORD_YOUR,
+ EC_WORD_YOURS,
+ EC_WORD_YUP,
+};
+
+const u16 gEasyChatWordsByLetter_Z[] = {
+ EC_POKEMON(ZANGOOSE),
+ EC_MOVE2(ZAP_CANNON),
+ EC_POKEMON2(ZAPDOS),
+ EC_POKEMON(ZIGZAGOON),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(ZUBAT),
+ EC_POKEMON2(ZUBAT),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseHi[] = {
+ EC_POKEMON2(CLEFFA),
+ EC_WORD_AIYEEH,
+ EC_POKEMON2(WEEDLE),
+ EC_WORD_HERO,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(PIKACHU),
+ EC_POKEMON(PIKACHU),
+ EC_MOVE2(LIGHT_SCREEN),
+ EC_WORD_SHINE,
+ EC_WORD_LOW,
+ EC_POKEMON2(CLEFABLE),
+ EC_WORD_FLYING,
+ EC_POKEMON2(PIDGEOT),
+ EC_POKEMON2(PIDGEOTTO),
+ EC_WORD_LEFT,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(PICHU),
+ EC_POKEMON(PICHU),
+ EC_MOVE2(SCRATCH),
+ EC_WORD_SURPRISE,
+ EC_MOVE2(HYPER_FANG),
+ EC_POKEMON2(CLEFAIRY),
+ EC_WORD_DROUGHT,
+ EC_WORD_HIDDEN,
+ EC_WORD_PERSON,
+ EC_WORD_AWFUL,
+ EC_POKEMON2(CHARMANDER),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(STARYU),
+ EC_POKEMON(STARYU),
+ EC_WORD_ALONE,
+ EC_POKEMON2(CYNDAQUIL),
+ EC_MOVE2(EMBER),
+ EC_POKEMON(VIBRAVA),
+ EC_WORD_BORED,
+ EC_POKEMON2(SUNKERN),
+ EC_WORD_SECRET,
+ EC_WORD_SECRET_BASE,
+ EC_MOVE2(SECRET_POWER),
+ EC_POKEMON2(TEDDIURSA),
+ EC_WORD_HIYAH,
+ EC_MOVE2(DIZZY_PUNCH),
+ EC_WORD_LIGHTNINGROD,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(VOLTORB),
+ EC_POKEMON(VOLTORB),
+ EC_WORD_DAYTIME,
+ EC_MOVE2(BULK_UP),
+ EC_WORD_NAP,
+ EC_WORD_HEROINE,
+ EC_POKEMON(FEEBAS),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseFu[] = {
+ EC_WORD_FIGHT,
+ EC_POKEMON2(MOLTRES),
+ EC_WORD_FASHION,
+ EC_WORD_FEAR,
+ EC_WORD_FEVER,
+ EC_MOVE2(IMPRISON),
+ EC_POKEMON2(FLAREON),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(ALAKAZAM),
+ EC_POKEMON(ALAKAZAM),
+ EC_POKEMON2(MAGMAR),
+ EC_POKEMON(GRUMPIG),
+ EC_MOVE2(FEATHER_DANCE),
+ EC_POKEMON2(FORRETRESS),
+ EC_MOVE2(WHIRLWIND),
+ EC_WORD_COMPOUNDEYES,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(WIGGLYTUFF),
+ EC_POKEMON(WIGGLYTUFF),
+ EC_MOVE2(BEAT_UP),
+ EC_WORD_MYSTERY,
+ EC_POKEMON2(IVYSAUR),
+ EC_POKEMON2(BULBASAUR),
+ EC_WORD_MARVEL_SCALE,
+ EC_WORD_WONDER_GUARD,
+ EC_POKEMON2(VENUSAUR),
+ EC_WORD_LACKS,
+ EC_WORD_RESUSCITATE,
+ EC_WORD_SMACK,
+ EC_WORD_FUFUFU,
+ EC_POKEMON2(AERODACTYL),
+ EC_WORD_WIMPY,
+ EC_POKEMON2(MAGBY),
+ EC_WORD_LOL,
+ EC_MOVE2(BLIZZARD),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(IGGLYBUFF),
+ EC_POKEMON(IGGLYBUFF),
+ EC_WORD_SNORT,
+ EC_MOVE2(STOMP),
+ EC_WORD_INSOMNIA,
+ EC_WORD_WINTER,
+ EC_WORD_LEVITATE,
+ EC_POKEMON(FLYGON),
+ EC_WORD_PLUS,
+ EC_MOVE2(BLAST_BURN),
+ EC_POKEMON(PLUSLE),
+ EC_POKEMON2(UMBREON),
+ EC_MOVE2(FLASH),
+ EC_WORD_WOBBLY,
+ EC_MOVE2(TEETER_DANCE),
+ EC_WORD_PRETEND,
+ EC_POKEMON2(ARTICUNO),
+ EC_WORD_WANNABE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(JIGGLYPUFF),
+ EC_POKEMON(JIGGLYPUFF),
+ EC_POKEMON2(SNUBBULL),
+ EC_WORD_SHAKY,
+ EC_MOVE2(CRUSH_CLAW),
+ EC_MOVE2(BLAZE_KICK),
+ EC_MOVE2(PRESENT),
+ EC_WORD_PRESSURE,
+ EC_WORD_BLEND,
+ EC_WORD_FRONTIER,
+ EC_WORD_HUMPH,
+ EC_MOVE2(ERUPTION),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseHe[] = {
+ EC_WORD_HEY,
+ EC_POKEMON(CORPHISH),
+ EC_WORD_BABY,
+ EC_POKEMON2(BAYLEEF),
+ EC_WORD_BEST,
+ EC_WORD_LOUSY,
+ EC_WORD_HEHEHE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(GRIMER),
+ EC_POKEMON(GRIMER),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(MUK),
+ EC_POKEMON(MUK),
+ EC_WORD_LIQUID_OOZE,
+ EC_MOVE2(SLUDGE),
+ EC_MOVE2(SLUDGE_BOMB),
+ EC_MOVE2(GLARE),
+ EC_WORD_HEH,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(HERACROSS),
+ EC_POKEMON(HERACROSS),
+ EC_POKEMON(PELIPPER),
+ EC_POKEMON2(HOUNDOOM),
+ EC_POKEMON2(PERSIAN),
+ EC_WORD_RIPPED,
+ EC_POKEMON2(LICKITUNG),
+ EC_WORD_STUDY,
+ EC_WORD_COLOR_CHANGE,
+ EC_MOVE2(TRANSFORM),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseHo[] = {
+ EC_MOVE2(POISON_TAIL),
+ EC_WORD_POINTS,
+ EC_POKEMON2(HO_OH),
+ EC_WORD_SOUNDPROOF,
+ EC_WORD_ADVENTURE,
+ EC_WORD_EFFECT_SPORE,
+ EC_MOVE2(ROAR),
+ EC_POKEMON(WAILORD),
+ EC_POKEMON(WAILMER),
+ EC_WORD_DUDE,
+ EC_WORD_BOARD,
+ EC_POKEMON2(HOOTHOOT),
+ EC_POKEMON(SALAMENCE),
+ EC_WORD_BALL,
+ EC_MOVE2(BONE_RUSH),
+ EC_WORD_THEY,
+ EC_WORD_THEY_WERE,
+ EC_WORD_TO_THEM,
+ EC_WORD_THEIR,
+ EC_WORD_THEY_RE,
+ EC_WORD_THEY_VE,
+ EC_WORD_POKENAV,
+ EC_WORD_POKEMON,
+ EC_WORD_GET,
+ EC_WORD_POKEDEX,
+ EC_WORD_PKRS,
+ EC_MOVE2(CAMOUFLAGE),
+ EC_WORD_WANT,
+ EC_MOVE2(COVET),
+ EC_POKEMON(AGGRON),
+ EC_MOVE2(TAIL_GLOW),
+ EC_POKEMON(POOCHYENA),
+ EC_POKEMON2(PIDGEY),
+ EC_WORD_AS_MUCH_AS,
+ EC_POKEMON2(PONYTA),
+ EC_MOVE2(BONE_CLUB),
+ EC_MOVE2(BONEMERANG),
+ EC_WORD_FIRE,
+ EC_MOVE2(FIRE_SPIN),
+ EC_WORD_FLAME_BODY,
+ EC_MOVE2(FIRE_PUNCH),
+ EC_POKEMON2(SKIPLOOM),
+ EC_WORD_HOHOHO,
+ EC_WORD_PRAISE,
+ EC_WORD_UH_HUH,
+ EC_POKEMON2(PORYGON),
+ EC_POKEMON2(PORYGON2),
+ EC_MOVE2(VOLT_TACKLE),
+ EC_WORD_POKEBLOCK,
+ EC_MOVE2(PERISH_SONG),
+ EC_WORD_SHREDDED,
+ EC_POKEMON(CASTFORM),
+ EC_WORD_BOOK,
+ EC_WORD_SERIOUS,
+ EC_WORD_REALLY,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseMa[] = {
+ EC_WORD_OH_DEAR,
+ EC_WORD_IN,
+ EC_WORD_GIVE_UP,
+ EC_WORD_MINUS,
+ EC_POKEMON(MINUN),
+ EC_WORD_DAILY,
+ EC_WORD_OWN_TEMPO,
+ EC_MOVE2(WRAP),
+ EC_MOVE2(SPIKES),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(MAGCARGO),
+ EC_POKEMON(MAGCARGO),
+ EC_MOVE2(MAGNITUDE),
+ EC_POKEMON(MAKUHITA),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(SLUGMA),
+ EC_POKEMON(SLUGMA),
+ EC_WORD_MAGMA_ARMOR,
+ EC_POKEMON2(QUILAVA),
+ EC_WORD_OVERDO,
+ EC_WORD_LOSS,
+ EC_WORD_IF_I_LOSE,
+ EC_WORD_LOST,
+ EC_WORD_LOSE,
+ EC_WORD_TRULY,
+ EC_WORD_SERIOUSLY,
+ EC_MOVE2(MAGICAL_LEAF),
+ EC_MOVE2(MAGIC_COAT),
+ EC_WORD_MACHINE,
+ EC_WORD_OUT,
+ EC_WORD_MASTER,
+ EC_WORD_INCREASING,
+ EC_WORD_TOO,
+ EC_WORD_LIKE,
+ EC_POKEMON2(BELLSPROUT),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(WEEZING),
+ EC_POKEMON(WEEZING),
+ EC_WORD_SMELL,
+ EC_WORD_YET,
+ EC_WORD_MISTAKE,
+ EC_POKEMON(LINOONE),
+ EC_WORD_TOTALLY,
+ EC_MOVE2(MUD_SHOT),
+ EC_MOVE2(MACH_PUNCH),
+ EC_WORD_FESTIVAL,
+ EC_WORD_UNTIL,
+ EC_WORD_WAIT,
+ EC_WORD_GUARD,
+ EC_MOVE2(PROTECT),
+ EC_POKEMON(CASCOON),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(MARILL),
+ EC_POKEMON(MARILL),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(AZUMARILL),
+ EC_POKEMON(AZUMARILL),
+ EC_MOVE2(DEFENSE_CURL),
+ EC_WORD_AS_IF,
+ EC_POKEMON(SWALOT),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(ELECTRODE),
+ EC_POKEMON(ELECTRODE),
+ EC_MOVE2(ROLLING_KICK),
+ EC_WORD_COMICS,
+ EC_POKEMON2(MANKEY),
+ EC_WORD_SATISFIED,
+ EC_POKEMON2(MANTINE),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseMi[] = {
+ EC_WORD_PARTNER,
+ EC_MOVE2(SUBSTITUTE),
+ EC_WORD_RIGHT,
+ EC_MOVE2(DETECT),
+ EC_MOVE2(PIN_MISSILE),
+ EC_WORD_WATER,
+ EC_MOVE2(WATER_SPORT),
+ EC_POKEMON(MUDKIP),
+ EC_MOVE2(WATER_GUN),
+ EC_MOVE2(MIST_BALL),
+ EC_MOVE2(WATER_PULSE),
+ EC_WORD_WATER_VEIL,
+ EC_WORD_SHOW,
+ EC_WORD_SEE,
+ EC_WORD_DID,
+ EC_MOVE2(FURY_ATTACK),
+ EC_MOVE2(FURY_SWIPES),
+ EC_MOVE2(DESTINY_BOND),
+ EC_WORD_LOOKS,
+ EC_WORD_REJECT,
+ EC_WORD_ACCEPT,
+ EC_POKEMON2(DRATINI),
+ EC_MOVE2(FALSE_SWIPE),
+ EC_MOVE2(FORESIGHT),
+ EC_POKEMON2(MEW),
+ EC_POKEMON2(MEWTWO),
+ EC_MOVE2(MIRROR_COAT),
+ EC_MOVE2(FUTURE_SIGHT),
+ EC_WORD_SEES,
+ EC_MOVE2(MILK_DRINK),
+ EC_POKEMON2(MILTANK),
+ EC_POKEMON(MILOTIC),
+ EC_WORD_WE,
+ EC_WORD_BEEN,
+ EC_WORD_TO_US,
+ EC_WORD_OUR,
+ EC_WORD_WE_RE,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseMu[] = {
+ EC_WORD_MOOD,
+ EC_POKEMON2(MISDREAVUS),
+ EC_WORD_OLDEN,
+ EC_WORD_ARRGH,
+ EC_WORD_BUG,
+ EC_WORD_SWARM,
+ EC_WORD_RATHER,
+ EC_POKEMON2(SMOOCHUM),
+ EC_WORD_INVINCIBLE,
+ EC_WORD_HEART,
+ EC_WORD_MUFUFU,
+ EC_WORD_MMM,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseMe[] = {
+ EC_MOVE2(CALM_MIND),
+ EC_WORD_MAIL,
+ EC_MOVE2(MEGA_DRAIN),
+ EC_MOVE2(MEGA_KICK),
+ EC_MOVE2(MEGA_PUNCH),
+ EC_POKEMON2(MEGANIUM),
+ EC_MOVE2(MEGAHORN),
+ EC_WORD_SEEK,
+ EC_MOVE2(HIDDEN_POWER),
+ EC_WORD_RARE,
+ EC_POKEMON(METAGROSS),
+ EC_POKEMON2(DITTO),
+ EC_MOVE2(METAL_CLAW),
+ EC_POKEMON(METANG),
+ EC_WORD_DESTROYED,
+ EC_WORD_MESSAGE,
+ EC_WORD_AWFULLY,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(TENTACOOL),
+ EC_POKEMON(TENTACOOL),
+ EC_WORD_FIERY,
+ EC_POKEMON2(MAREEP),
+ EC_MOVE2(ATTRACT),
+ EC_WORD_CUTE_CHARM,
+ EC_WORD_IMMUNITY,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseMo[] = {
+ EC_WORD_ALMOST,
+ EC_WORD_BLAZE,
+ EC_WORD_NEARLY,
+ EC_WORD_MODE,
+ EC_WORD_OLD,
+ EC_WORD_THURSDAY,
+ EC_POKEMON2(FLAAFFY),
+ EC_WORD_LISTENING,
+ EC_WORD_OWN,
+ EC_WORD_MORE,
+ EC_WORD_DIDN_T,
+ EC_WORD_PICKUP,
+ EC_MOVE2(MIMIC),
+ EC_WORD_TOO_LATE,
+ EC_WORD_PATTERN,
+ EC_WORD_FLASH_FIRE,
+ EC_WORD_RECEIVED,
+ EC_POKEMON2(VENOMOTH),
+ EC_WORD_DOESN_T,
+ EC_POKEMON2(TANGELA),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseYa[] = {
+ EC_WORD_HOO_HAH,
+ EC_WORD_PROMISE,
+ EC_WORD_KIND,
+ EC_POKEMON(BALTOY),
+ EC_WORD_HOLIDAY,
+ EC_WORD_NEGATIVE,
+ EC_MOVE2(FRUSTRATION),
+ EC_WORD_DONE,
+ EC_WORD_FINALLY,
+ EC_WORD_ANY,
+ EC_WORD_YAHOO,
+ EC_POKEMON2(SLOWKING),
+ EC_POKEMON2(SLOWBRO),
+ EC_MOVE2(LEECH_SEED),
+ EC_POKEMON2(SLOWPOKE),
+ EC_WORD_DANGER,
+ EC_POKEMON2(MURKROW),
+ EC_POKEMON(SABLEYE),
+ EC_WORD_DEFEATED,
+ EC_WORD_BEAT,
+ EC_WORD_VITAL_SPIRIT,
+ EC_POKEMON(VIGOROTH),
+ EC_WORD_YOUNG,
+ EC_POKEMON2(YANMA),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseYu[] = {
+ EC_POKEMON(SNORUNT),
+ EC_WORD_TAKE,
+ EC_WORD_UNION,
+ EC_MOVE2(METRONOME),
+ EC_WORD_DREAM,
+ EC_MOVE2(DREAM_EATER),
+ EC_WORD_ALLOW,
+ EC_WORD_FORGET,
+ EC_POKEMON(CRADILY),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(KADABRA),
+ EC_POKEMON(KADABRA),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseYo[] = {
+ EC_WORD_WITHOUT,
+ EC_WORD_YO,
+ EC_MOVE2(ACID),
+ EC_WORD_COME_OVER,
+ EC_WORD_KINDERGARTEN,
+ EC_WORD_CHLOROPHYLL,
+ EC_WORD_AFTER,
+ EC_POKEMON2(LARVITAR),
+ EC_WORD_OH_KAY,
+ EC_WORD_BEFORE,
+ EC_WORD_GREAT,
+ EC_MOVE2(MEDITATE),
+ EC_WORD_PURE_POWER,
+ EC_WORD_WELL,
+ EC_MOVE2(SNATCH),
+ EC_WORD_OKAY,
+ EC_WORD_PLANS,
+ EC_WORD_NIGHTTIME,
+ EC_WORD_WHILE,
+ EC_POKEMON(DUSKULL),
+ EC_WORD_EASY,
+ EC_WORD_INSTEAD,
+ EC_WORD_NIGHT,
+ EC_POKEMON2(NOCTOWL),
+ EC_WORD_COUNT_ON,
+ EC_WORD_WEAK,
+ EC_WORD_TOO_WEAK,
+ EC_WORD_WEAKENED,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseRa[] = {
+ EC_POKEMON2(RAIKOU),
+ EC_WORD_WEEK,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(RAICHU),
+ EC_POKEMON(RAICHU),
+ EC_WORD_RIVAL,
+ EC_WORD_LIFE,
+ EC_POKEMON(MANECTRIC),
+ EC_WORD_SIMPLE,
+ EC_WORD_PUSHOVER,
+ EC_POKEMON(SWAMPERT),
+ EC_POKEMON(ELECTRIKE),
+ EC_WORD_SEEMS,
+ EC_WORD_RADIO,
+ EC_MOVE2(LUSTER_PURGE),
+ EC_POKEMON2(CHANSEY),
+ EC_POKEMON2(RATICATE),
+ EC_POKEMON(LATIAS),
+ EC_POKEMON(LATIOS),
+ EC_POKEMON(LUVDISC),
+ EC_POKEMON2(LAPRAS),
+ EC_WORD_LOVEY_DOVEY,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(VILEPLUME),
+ EC_POKEMON(VILEPLUME),
+ EC_WORD_LALALA,
+ EC_POKEMON(RALTS),
+ EC_WORD_FORGETS,
+ EC_WORD_APPEARS,
+ EC_WORD_RANK,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(LANTURN),
+ EC_POKEMON(LANTURN),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseRi[] = {
+ EC_WORD_LEADER,
+ EC_MOVE2(LEAF_BLADE),
+ EC_POKEMON2(CHARMELEON),
+ EC_POKEMON2(CHARIZARD),
+ EC_MOVE2(RECYCLE),
+ EC_MOVE2(REFLECT),
+ EC_MOVE2(REFRESH),
+ EC_MOVE2(REVENGE),
+ EC_WORD_RIBBON,
+ EC_WORD_TRENDY,
+ EC_MOVE2(DRAGON_RAGE),
+ EC_MOVE2(DRAGON_BREATH),
+ EC_MOVE2(DRAGON_DANCE),
+ EC_WORD_VACATION,
+ EC_POKEMON(LILEEP),
+ EC_POKEMON2(URSARING),
+ EC_WORD_SHIELD_DUST,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseRu[] = {
+ EC_POKEMON2(JYNX),
+ EC_WORD_ROOM,
+ EC_WORD_RULE,
+ EC_POKEMON2(LUGIA),
+ EC_WORD_LOOK,
+ EC_POKEMON(LUNATONE),
+ EC_WORD_RUBY,
+ EC_WORD_THAN,
+ EC_POKEMON(AZURILL),
+ EC_POKEMON(LUDICOLO),
+ EC_WORD_HAPPILY,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseRe[] = {
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(MAGNETON),
+ EC_POKEMON(MAGNETON),
+ EC_MOVE2(ICE_PUNCH),
+ EC_MOVE2(ICE_BEAM),
+ EC_POKEMON(REGICE),
+ EC_POKEMON(REGISTEEL),
+ EC_POKEMON(REGIROCK),
+ EC_POKEMON(RAYQUAZA),
+ EC_WORD_UGLY,
+ EC_POKEMON2(LEDIAN),
+ EC_POKEMON2(LEDYBA),
+ EC_WORD_FANTASTIC,
+ EC_WORD_LEVEL,
+ EC_MOVE2(FURY_CUTTER),
+ EC_MOVE2(COMET_PUNCH),
+ EC_WORD_RENTAL,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseRo[] = {
+ EC_MOVE2(SKULL_BASH),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(VULPIX),
+ EC_POKEMON(VULPIX),
+ EC_POKEMON(ROSELIA),
+ EC_MOVE2(LOCK_ON),
+ EC_MOVE2(ROCK_BLAST),
+ EC_WORD_ROMANTIC,
+ EC_WORD_QUESTION,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseWa[] = {
+ EC_WORD_YAY,
+ EC_WORD_WORLD,
+ EC_WORD_AWW,
+ EC_WORD_WIRELESS,
+ EC_WORD_WOWEE,
+ EC_POKEMON(COMBUSKEN),
+ EC_WORD_UNDERSTAND,
+ EC_WORD_UNDERSTANDS,
+ EC_WORD_FAINT,
+ EC_WORD_ANTICIPATION,
+ EC_WORD_ONCE,
+ EC_WORD_MOVE,
+ EC_WORD_WE_VE,
+ EC_WORD_FAINTED,
+ EC_WORD_WOMAN,
+ EC_WORD_SHE,
+ EC_WORD_SHE_WAS,
+ EC_WORD_TO_HER,
+ EC_WORD_HERS,
+ EC_WORD_SHE_IS,
+ EC_WORD_SOME,
+ EC_POKEMON2(JUMPLUFF),
+ EC_MOVE2(COTTON_SPORE),
+ EC_WORD_GWAH,
+ EC_POKEMON2(TOTODILE),
+ EC_WORD_WAHAHAHA,
+ EC_WORD_ANYWHERE,
+ EC_MOVE2(STRUGGLE),
+ EC_WORD_BADLY,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(MACHOP),
+ EC_POKEMON(MACHOP),
+};
+
+const struct EasyChatWordsByLetter gEasyChatWordsByLetterPointers[] = {
+ {
+ .words = gEasyChatWordsByLetter_Others,
+ .numWords = 10,
+ },
+ {
+ .words = gEasyChatWordsByLetter_A,
+ .numWords = 106,
+ },
+ {
+ .words = gEasyChatWordsByLetter_B,
+ .numWords = 86,
+ },
+ {
+ .words = gEasyChatWordsByLetter_C,
+ .numWords = 119,
+ },
+ {
+ .words = gEasyChatWordsByLetter_D,
+ .numWords = 94,
+ },
+ {
+ .words = gEasyChatWordsByLetter_E,
+ .numWords = 59,
+ },
+ {
+ .words = gEasyChatWordsByLetter_F,
+ .numWords = 80,
+ },
+ {
+ .words = gEasyChatWordsByLetter_G,
+ .numWords = 98,
+ },
+ {
+ .words = gEasyChatWordsByLetter_H,
+ .numWords = 101,
+ },
+ {
+ .words = gEasyChatWordsByLetter_I,
+ .numWords = 48,
+ },
+ {
+ .words = gEasyChatWordsByLetter_J,
+ .numWords = 13,
+ },
+ {
+ .words = gEasyChatWordsByLetter_K,
+ .numWords = 33,
+ },
+ {
+ .words = gEasyChatWordsByLetter_L,
+ .numWords = 82,
+ },
+ {
+ .words = gEasyChatWordsByLetter_M,
+ .numWords = 142,
+ },
+ {
+ .words = gEasyChatWordsByLetter_N,
+ .numWords = 54,
+ },
+ {
+ .words = gEasyChatWordsByLetter_O,
+ .numWords = 44,
+ },
+ {
+ .words = gEasyChatWordsByLetter_P,
+ .numWords = 102,
+ },
+ {
+ .words = gEasyChatWordsByLetter_Q,
+ .numWords = 6,
+ },
+ {
+ .words = gEasyChatWordsByLetter_R,
+ .numWords = 80,
+ },
+ {
+ .words = gEasyChatWordsByLetter_S,
+ .numWords = 262,
+ },
+ {
+ .words = gEasyChatWordsByLetter_T,
+ .numWords = 133,
+ },
+ {
+ .words = gEasyChatWordsByLetter_U,
+ .numWords = 24,
+ },
+ {
+ .words = gEasyChatWordsByLetter_V,
+ .numWords = 33,
+ },
+ {
+ .words = gEasyChatWordsByLetter_W,
+ .numWords = 111,
+ },
+ {
+ .words = gEasyChatWordsByLetter_X,
+ .numWords = 4,
+ },
+ {
+ .words = gEasyChatWordsByLetter_Y,
+ .numWords = 19,
+ },
+ {
+ .words = gEasyChatWordsByLetter_Z,
+ .numWords = 8,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseHi,
+ .numWords = 55,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseFu,
+ .numWords = 71,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseHe,
+ .numWords = 32,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseHo,
+ .numWords = 55,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseMa,
+ .numWords = 74,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseMi,
+ .numWords = 37,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseMu,
+ .numWords = 12,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseMe,
+ .numWords = 26,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseMo,
+ .numWords = 20,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseYa,
+ .numWords = 24,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseYu,
+ .numWords = 13,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseYo,
+ .numWords = 28,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseRa,
+ .numWords = 36,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseRi,
+ .numWords = 17,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseRu,
+ .numWords = 11,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseRe,
+ .numWords = 18,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseRo,
+ .numWords = 10,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseWa,
+ .numWords = 33,
+ },
+};
diff --git a/src/data/field_event_obj/base_oam.h b/src/data/field_event_obj/base_oam.h
index 543382d43..af961f492 100755
--- a/src/data/field_event_obj/base_oam.h
+++ b/src/data/field_event_obj/base_oam.h
@@ -1,47 +1,47 @@
const struct OamData gEventObjectBaseOam_8x8 = {
- .shape = 0,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.priority = 2
};
const struct OamData gEventObjectBaseOam_16x8 = {
- .shape = 1,
- .size = 0,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
.priority = 2
};
const struct OamData gEventObjectBaseOam_16x16 = {
- .shape = 0,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 2
};
const struct OamData gEventObjectBaseOam_32x8 = {
- .shape = 1,
- .size = 1,
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
.priority = 2
};
const struct OamData gEventObjectBaseOam_64x32 = {
- .shape = 1,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
.priority = 2
};
const struct OamData gEventObjectBaseOam_16x32 = {
- .shape = 2,
- .size = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
.priority = 2
};
const struct OamData gEventObjectBaseOam_32x32 = {
- .shape = 0,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 2
};
const struct OamData gEventObjectBaseOam_64x64 = {
- .shape = 0,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
.priority = 2
};
diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h
index 40ebdf9e4..07415949d 100644
--- a/src/data/graphics/pokemon.h
+++ b/src/data/graphics/pokemon.h
@@ -1,2823 +1,2823 @@
-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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 u32 gMonStillFrontPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/front.4bpp.lz");
+const u32 gMonPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/normal.gbapal.lz");
+const u32 gMonBackPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/back.4bpp.lz");
+const u32 gMonShinyPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/shiny.gbapal.lz");
+const u8 gMonIcon_Bulbasaur[] = INCBIN_U8("graphics/pokemon/bulbasaur/icon.4bpp");
+const u8 gMonFootprint_Bulbasaur[] = INCBIN_U8("graphics/pokemon/bulbasaur/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/front.4bpp.lz");
+const u32 gMonPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/normal.gbapal.lz");
+const u32 gMonBackPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/back.4bpp.lz");
+const u32 gMonShinyPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/shiny.gbapal.lz");
+const u8 gMonIcon_Ivysaur[] = INCBIN_U8("graphics/pokemon/ivysaur/icon.4bpp");
+const u8 gMonFootprint_Ivysaur[] = INCBIN_U8("graphics/pokemon/ivysaur/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/front.4bpp.lz");
+const u32 gMonPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/normal.gbapal.lz");
+const u32 gMonBackPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/back.4bpp.lz");
+const u32 gMonShinyPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/shiny.gbapal.lz");
+const u8 gMonIcon_Venusaur[] = INCBIN_U8("graphics/pokemon/venusaur/icon.4bpp");
+const u8 gMonFootprint_Venusaur[] = INCBIN_U8("graphics/pokemon/venusaur/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/front.4bpp.lz");
+const u32 gMonPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/normal.gbapal.lz");
+const u32 gMonBackPic_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/back.4bpp.lz");
+const u32 gMonShinyPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/shiny.gbapal.lz");
+const u8 gMonIcon_Charmander[] = INCBIN_U8("graphics/pokemon/charmander/icon.4bpp");
+const u8 gMonFootprint_Charmander[] = INCBIN_U8("graphics/pokemon/charmander/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/front.4bpp.lz");
+const u32 gMonPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/normal.gbapal.lz");
+const u32 gMonBackPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/back.4bpp.lz");
+const u32 gMonShinyPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/shiny.gbapal.lz");
+const u8 gMonIcon_Charmeleon[] = INCBIN_U8("graphics/pokemon/charmeleon/icon.4bpp");
+const u8 gMonFootprint_Charmeleon[] = INCBIN_U8("graphics/pokemon/charmeleon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/front.4bpp.lz");
+const u32 gMonPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/normal.gbapal.lz");
+const u32 gMonBackPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/back.4bpp.lz");
+const u32 gMonShinyPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/shiny.gbapal.lz");
+const u8 gMonIcon_Charizard[] = INCBIN_U8("graphics/pokemon/charizard/icon.4bpp");
+const u8 gMonFootprint_Charizard[] = INCBIN_U8("graphics/pokemon/charizard/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/front.4bpp.lz");
+const u32 gMonPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/normal.gbapal.lz");
+const u32 gMonBackPic_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/back.4bpp.lz");
+const u32 gMonShinyPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/shiny.gbapal.lz");
+const u8 gMonIcon_Squirtle[] = INCBIN_U8("graphics/pokemon/squirtle/icon.4bpp");
+const u8 gMonFootprint_Squirtle[] = INCBIN_U8("graphics/pokemon/squirtle/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/front.4bpp.lz");
+const u32 gMonPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/normal.gbapal.lz");
+const u32 gMonBackPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/back.4bpp.lz");
+const u32 gMonShinyPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/shiny.gbapal.lz");
+const u8 gMonIcon_Wartortle[] = INCBIN_U8("graphics/pokemon/wartortle/icon.4bpp");
+const u8 gMonFootprint_Wartortle[] = INCBIN_U8("graphics/pokemon/wartortle/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/front.4bpp.lz");
+const u32 gMonPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/normal.gbapal.lz");
+const u32 gMonBackPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/back.4bpp.lz");
+const u32 gMonShinyPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/shiny.gbapal.lz");
+const u8 gMonIcon_Blastoise[] = INCBIN_U8("graphics/pokemon/blastoise/icon.4bpp");
+const u8 gMonFootprint_Blastoise[] = INCBIN_U8("graphics/pokemon/blastoise/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/front.4bpp.lz");
+const u32 gMonPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/normal.gbapal.lz");
+const u32 gMonBackPic_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/back.4bpp.lz");
+const u32 gMonShinyPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/shiny.gbapal.lz");
+const u8 gMonIcon_Caterpie[] = INCBIN_U8("graphics/pokemon/caterpie/icon.4bpp");
+const u8 gMonFootprint_Caterpie[] = INCBIN_U8("graphics/pokemon/caterpie/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/front.4bpp.lz");
+const u32 gMonPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/normal.gbapal.lz");
+const u32 gMonBackPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/back.4bpp.lz");
+const u32 gMonShinyPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/shiny.gbapal.lz");
+const u8 gMonIcon_Metapod[] = INCBIN_U8( "graphics/pokemon/metapod/icon.4bpp");
+const u8 gMonFootprint_Metapod[] = INCBIN_U8("graphics/pokemon/metapod/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/front.4bpp.lz");
+const u32 gMonPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/normal.gbapal.lz");
+const u32 gMonBackPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/back.4bpp.lz");
+const u32 gMonShinyPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/shiny.gbapal.lz");
+const u8 gMonIcon_Butterfree[] = INCBIN_U8("graphics/pokemon/butterfree/icon.4bpp");
+const u8 gMonFootprint_Butterfree[] = INCBIN_U8("graphics/pokemon/butterfree/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/front.4bpp.lz");
+const u32 gMonPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/normal.gbapal.lz");
+const u32 gMonBackPic_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/back.4bpp.lz");
+const u32 gMonShinyPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/shiny.gbapal.lz");
+const u8 gMonIcon_Weedle[] = INCBIN_U8("graphics/pokemon/weedle/icon.4bpp");
+const u8 gMonFootprint_Weedle[] = INCBIN_U8("graphics/pokemon/weedle/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/front.4bpp.lz");
+const u32 gMonPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/normal.gbapal.lz");
+const u32 gMonBackPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/back.4bpp.lz");
+const u32 gMonShinyPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/shiny.gbapal.lz");
+const u8 gMonIcon_Kakuna[] = INCBIN_U8("graphics/pokemon/kakuna/icon.4bpp");
+const u8 gMonFootprint_Kakuna[] = INCBIN_U8("graphics/pokemon/kakuna/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/front.4bpp.lz");
+const u32 gMonPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/normal.gbapal.lz");
+const u32 gMonBackPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/back.4bpp.lz");
+const u32 gMonShinyPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/shiny.gbapal.lz");
+const u8 gMonIcon_Beedrill[] = INCBIN_U8("graphics/pokemon/beedrill/icon.4bpp");
+const u8 gMonFootprint_Beedrill[] = INCBIN_U8("graphics/pokemon/beedrill/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/front.4bpp.lz");
+const u32 gMonPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/normal.gbapal.lz");
+const u32 gMonBackPic_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/back.4bpp.lz");
+const u32 gMonShinyPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/shiny.gbapal.lz");
+const u8 gMonIcon_Pidgey[] = INCBIN_U8("graphics/pokemon/pidgey/icon.4bpp");
+const u8 gMonFootprint_Pidgey[] = INCBIN_U8("graphics/pokemon/pidgey/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/front.4bpp.lz");
+const u32 gMonPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/normal.gbapal.lz");
+const u32 gMonBackPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/back.4bpp.lz");
+const u32 gMonShinyPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/shiny.gbapal.lz");
+const u8 gMonIcon_Pidgeotto[] = INCBIN_U8("graphics/pokemon/pidgeotto/icon.4bpp");
+const u8 gMonFootprint_Pidgeotto[] = INCBIN_U8("graphics/pokemon/pidgeotto/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/front.4bpp.lz");
+const u32 gMonPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/normal.gbapal.lz");
+const u32 gMonBackPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/back.4bpp.lz");
+const u32 gMonShinyPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/shiny.gbapal.lz");
+const u8 gMonIcon_Pidgeot[] = INCBIN_U8("graphics/pokemon/pidgeot/icon.4bpp");
+const u8 gMonFootprint_Pidgeot[] = INCBIN_U8("graphics/pokemon/pidgeot/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/front.4bpp.lz");
+const u32 gMonPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/normal.gbapal.lz");
+const u32 gMonBackPic_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/back.4bpp.lz");
+const u32 gMonShinyPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/shiny.gbapal.lz");
+const u8 gMonIcon_Rattata[] = INCBIN_U8("graphics/pokemon/rattata/icon.4bpp");
+const u8 gMonFootprint_Rattata[] = INCBIN_U8("graphics/pokemon/rattata/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/front.4bpp.lz");
+const u32 gMonPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/normal.gbapal.lz");
+const u32 gMonBackPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/back.4bpp.lz");
+const u32 gMonShinyPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/shiny.gbapal.lz");
+const u8 gMonIcon_Raticate[] = INCBIN_U8("graphics/pokemon/raticate/icon.4bpp");
+const u8 gMonFootprint_Raticate[] = INCBIN_U8("graphics/pokemon/raticate/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/front.4bpp.lz");
+const u32 gMonPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/normal.gbapal.lz");
+const u32 gMonBackPic_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/back.4bpp.lz");
+const u32 gMonShinyPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/shiny.gbapal.lz");
+const u8 gMonIcon_Spearow[] = INCBIN_U8("graphics/pokemon/spearow/icon.4bpp");
+const u8 gMonFootprint_Spearow[] = INCBIN_U8("graphics/pokemon/spearow/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/front.4bpp.lz");
+const u32 gMonPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/normal.gbapal.lz");
+const u32 gMonBackPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/back.4bpp.lz");
+const u32 gMonShinyPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/shiny.gbapal.lz");
+const u8 gMonIcon_Fearow[] = INCBIN_U8("graphics/pokemon/fearow/icon.4bpp");
+const u8 gMonFootprint_Fearow[] = INCBIN_U8("graphics/pokemon/fearow/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/front.4bpp.lz");
+const u32 gMonPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/normal.gbapal.lz");
+const u32 gMonBackPic_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/back.4bpp.lz");
+const u32 gMonShinyPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/shiny.gbapal.lz");
+const u8 gMonIcon_Ekans[] = INCBIN_U8("graphics/pokemon/ekans/icon.4bpp");
+const u8 gMonFootprint_Ekans[] = INCBIN_U8("graphics/pokemon/ekans/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/front.4bpp.lz");
+const u32 gMonPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/normal.gbapal.lz");
+const u32 gMonBackPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/back.4bpp.lz");
+const u32 gMonShinyPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/shiny.gbapal.lz");
+const u8 gMonIcon_Arbok[] = INCBIN_U8("graphics/pokemon/arbok/icon.4bpp");
+const u8 gMonFootprint_Arbok[] = INCBIN_U8("graphics/pokemon/arbok/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/front.4bpp.lz");
+const u32 gMonPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/normal.gbapal.lz");
+const u32 gMonBackPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/back.4bpp.lz");
+const u32 gMonShinyPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/shiny.gbapal.lz");
+const u8 gMonIcon_Pikachu[] = INCBIN_U8("graphics/pokemon/pikachu/icon.4bpp");
+const u8 gMonFootprint_Pikachu[] = INCBIN_U8("graphics/pokemon/pikachu/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/front.4bpp.lz");
+const u32 gMonPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/normal.gbapal.lz");
+const u32 gMonBackPic_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/back.4bpp.lz");
+const u32 gMonShinyPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/shiny.gbapal.lz");
+const u8 gMonIcon_Raichu[] = INCBIN_U8("graphics/pokemon/raichu/icon.4bpp");
+const u8 gMonFootprint_Raichu[] = INCBIN_U8("graphics/pokemon/raichu/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/front.4bpp.lz");
+const u32 gMonPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/normal.gbapal.lz");
+const u32 gMonBackPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/back.4bpp.lz");
+const u32 gMonShinyPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/shiny.gbapal.lz");
+const u8 gMonIcon_Sandshrew[] = INCBIN_U8("graphics/pokemon/sandshrew/icon.4bpp");
+const u8 gMonFootprint_Sandshrew[] = INCBIN_U8("graphics/pokemon/sandshrew/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/front.4bpp.lz");
+const u32 gMonPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/normal.gbapal.lz");
+const u32 gMonBackPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/back.4bpp.lz");
+const u32 gMonShinyPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/shiny.gbapal.lz");
+const u8 gMonIcon_Sandslash[] = INCBIN_U8("graphics/pokemon/sandslash/icon.4bpp");
+const u8 gMonFootprint_Sandslash[] = INCBIN_U8("graphics/pokemon/sandslash/footprint.1bpp");
+
+const u32 gMonStillFrontPic_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/front.4bpp.lz");
+const u32 gMonPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/normal.gbapal.lz");
+const u32 gMonBackPic_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/back.4bpp.lz");
+const u32 gMonShinyPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/shiny.gbapal.lz");
+const u8 gMonIcon_NidoranF[] = INCBIN_U8("graphics/pokemon/nidoran_f/icon.4bpp");
+const u8 gMonFootprint_NidoranF[] = INCBIN_U8("graphics/pokemon/nidoran_f/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/front.4bpp.lz");
+const u32 gMonPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/normal.gbapal.lz");
+const u32 gMonBackPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/back.4bpp.lz");
+const u32 gMonShinyPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/shiny.gbapal.lz");
+const u8 gMonIcon_Nidorina[] = INCBIN_U8("graphics/pokemon/nidorina/icon.4bpp");
+const u8 gMonFootprint_Nidorina[] = INCBIN_U8("graphics/pokemon/nidorina/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/front.4bpp.lz");
+const u32 gMonPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/normal.gbapal.lz");
+const u32 gMonBackPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/back.4bpp.lz");
+const u32 gMonShinyPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/shiny.gbapal.lz");
+const u8 gMonIcon_Nidoqueen[] = INCBIN_U8("graphics/pokemon/nidoqueen/icon.4bpp");
+const u8 gMonFootprint_Nidoqueen[] = INCBIN_U8("graphics/pokemon/nidoqueen/footprint.1bpp");
+
+const u32 gMonStillFrontPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/front.4bpp.lz");
+const u32 gMonPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/normal.gbapal.lz");
+const u32 gMonBackPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/back.4bpp.lz");
+const u32 gMonShinyPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/shiny.gbapal.lz");
+const u8 gMonIcon_NidoranM[] = INCBIN_U8("graphics/pokemon/nidoran_m/icon.4bpp");
+const u8 gMonFootprint_NidoranM[] = INCBIN_U8("graphics/pokemon/nidoran_m/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/front.4bpp.lz");
+const u32 gMonPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/normal.gbapal.lz");
+const u32 gMonBackPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/back.4bpp.lz");
+const u32 gMonShinyPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/shiny.gbapal.lz");
+const u8 gMonIcon_Nidorino[] = INCBIN_U8("graphics/pokemon/nidorino/icon.4bpp");
+const u8 gMonFootprint_Nidorino[] = INCBIN_U8("graphics/pokemon/nidorino/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/front.4bpp.lz");
+const u32 gMonPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/normal.gbapal.lz");
+const u32 gMonBackPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/back.4bpp.lz");
+const u32 gMonShinyPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/shiny.gbapal.lz");
+const u8 gMonIcon_Nidoking[] = INCBIN_U8("graphics/pokemon/nidoking/icon.4bpp");
+const u8 gMonFootprint_Nidoking[] = INCBIN_U8("graphics/pokemon/nidoking/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/front.4bpp.lz");
+const u32 gMonPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/normal.gbapal.lz");
+const u32 gMonBackPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/back.4bpp.lz");
+const u32 gMonShinyPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/shiny.gbapal.lz");
+const u8 gMonIcon_Clefairy[] = INCBIN_U8("graphics/pokemon/clefairy/icon.4bpp");
+const u8 gMonFootprint_Clefairy[] = INCBIN_U8("graphics/pokemon/clefairy/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/front.4bpp.lz");
+const u32 gMonPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/normal.gbapal.lz");
+const u32 gMonBackPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/back.4bpp.lz");
+const u32 gMonShinyPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/shiny.gbapal.lz");
+const u8 gMonIcon_Clefable[] = INCBIN_U8("graphics/pokemon/clefable/icon.4bpp");
+const u8 gMonFootprint_Clefable[] = INCBIN_U8("graphics/pokemon/clefable/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/front.4bpp.lz");
+const u32 gMonPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/normal.gbapal.lz");
+const u32 gMonBackPic_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/back.4bpp.lz");
+const u32 gMonShinyPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/shiny.gbapal.lz");
+const u8 gMonIcon_Vulpix[] = INCBIN_U8("graphics/pokemon/vulpix/icon.4bpp");
+const u8 gMonFootprint_Vulpix[] = INCBIN_U8("graphics/pokemon/vulpix/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/front.4bpp.lz");
+const u32 gMonPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/normal.gbapal.lz");
+const u32 gMonBackPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/back.4bpp.lz");
+const u32 gMonShinyPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/shiny.gbapal.lz");
+const u8 gMonIcon_Ninetales[] = INCBIN_U8("graphics/pokemon/ninetales/icon.4bpp");
+const u8 gMonFootprint_Ninetales[] = INCBIN_U8("graphics/pokemon/ninetales/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/front.4bpp.lz");
+const u32 gMonPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/normal.gbapal.lz");
+const u32 gMonBackPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/back.4bpp.lz");
+const u32 gMonShinyPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/shiny.gbapal.lz");
+const u8 gMonIcon_Jigglypuff[] = INCBIN_U8("graphics/pokemon/jigglypuff/icon.4bpp");
+const u8 gMonFootprint_Jigglypuff[] = INCBIN_U8("graphics/pokemon/jigglypuff/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/front.4bpp.lz");
+const u32 gMonPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/normal.gbapal.lz");
+const u32 gMonBackPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/back.4bpp.lz");
+const u32 gMonShinyPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/shiny.gbapal.lz");
+const u8 gMonIcon_Wigglytuff[] = INCBIN_U8("graphics/pokemon/wigglytuff/icon.4bpp");
+const u8 gMonFootprint_Wigglytuff[] = INCBIN_U8("graphics/pokemon/wigglytuff/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/front.4bpp.lz");
+const u32 gMonPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/normal.gbapal.lz");
+const u32 gMonBackPic_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/back.4bpp.lz");
+const u32 gMonShinyPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/shiny.gbapal.lz");
+const u8 gMonIcon_Zubat[] = INCBIN_U8("graphics/pokemon/zubat/icon.4bpp");
+const u8 gMonFootprint_Zubat[] = INCBIN_U8("graphics/pokemon/zubat/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/front.4bpp.lz");
+const u32 gMonPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/normal.gbapal.lz");
+const u32 gMonBackPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/back.4bpp.lz");
+const u32 gMonShinyPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/shiny.gbapal.lz");
+const u8 gMonIcon_Golbat[] = INCBIN_U8("graphics/pokemon/golbat/icon.4bpp");
+const u8 gMonFootprint_Golbat[] = INCBIN_U8("graphics/pokemon/golbat/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/front.4bpp.lz");
+const u32 gMonPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/normal.gbapal.lz");
+const u32 gMonBackPic_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/back.4bpp.lz");
+const u32 gMonShinyPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/shiny.gbapal.lz");
+const u8 gMonIcon_Oddish[] = INCBIN_U8("graphics/pokemon/oddish/icon.4bpp");
+const u8 gMonFootprint_Oddish[] = INCBIN_U8("graphics/pokemon/oddish/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/front.4bpp.lz");
+const u32 gMonPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/normal.gbapal.lz");
+const u32 gMonBackPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/back.4bpp.lz");
+const u32 gMonShinyPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/shiny.gbapal.lz");
+const u8 gMonIcon_Gloom[] = INCBIN_U8("graphics/pokemon/gloom/icon.4bpp");
+const u8 gMonFootprint_Gloom[] = INCBIN_U8("graphics/pokemon/gloom/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/front.4bpp.lz");
+const u32 gMonPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/normal.gbapal.lz");
+const u32 gMonBackPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/back.4bpp.lz");
+const u32 gMonShinyPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/shiny.gbapal.lz");
+const u8 gMonIcon_Vileplume[] = INCBIN_U8("graphics/pokemon/vileplume/icon.4bpp");
+const u8 gMonFootprint_Vileplume[] = INCBIN_U8("graphics/pokemon/vileplume/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Paras[] = INCBIN_U32("graphics/pokemon/paras/front.4bpp.lz");
+const u32 gMonPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/normal.gbapal.lz");
+const u32 gMonBackPic_Paras[] = INCBIN_U32("graphics/pokemon/paras/back.4bpp.lz");
+const u32 gMonShinyPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/shiny.gbapal.lz");
+const u8 gMonIcon_Paras[] = INCBIN_U8("graphics/pokemon/paras/icon.4bpp");
+const u8 gMonFootprint_Paras[] = INCBIN_U8("graphics/pokemon/paras/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/front.4bpp.lz");
+const u32 gMonPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/normal.gbapal.lz");
+const u32 gMonBackPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/back.4bpp.lz");
+const u32 gMonShinyPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/shiny.gbapal.lz");
+const u8 gMonIcon_Parasect[] = INCBIN_U8("graphics/pokemon/parasect/icon.4bpp");
+const u8 gMonFootprint_Parasect[] = INCBIN_U8("graphics/pokemon/parasect/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/front.4bpp.lz");
+const u32 gMonPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/normal.gbapal.lz");
+const u32 gMonBackPic_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/back.4bpp.lz");
+const u32 gMonShinyPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/shiny.gbapal.lz");
+const u8 gMonIcon_Venonat[] = INCBIN_U8("graphics/pokemon/venonat/icon.4bpp");
+const u8 gMonFootprint_Venonat[] = INCBIN_U8("graphics/pokemon/venonat/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/front.4bpp.lz");
+const u32 gMonPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/normal.gbapal.lz");
+const u32 gMonBackPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/back.4bpp.lz");
+const u32 gMonShinyPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/shiny.gbapal.lz");
+const u8 gMonIcon_Venomoth[] = INCBIN_U8("graphics/pokemon/venomoth/icon.4bpp");
+const u8 gMonFootprint_Venomoth[] = INCBIN_U8("graphics/pokemon/venomoth/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/front.4bpp.lz");
+const u32 gMonPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/normal.gbapal.lz");
+const u32 gMonBackPic_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/back.4bpp.lz");
+const u32 gMonShinyPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/shiny.gbapal.lz");
+const u8 gMonIcon_Diglett[] = INCBIN_U8("graphics/pokemon/diglett/icon.4bpp");
+const u8 gMonFootprint_Diglett[] = INCBIN_U8("graphics/pokemon/diglett/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/front.4bpp.lz");
+const u32 gMonPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/normal.gbapal.lz");
+const u32 gMonBackPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/back.4bpp.lz");
+const u32 gMonShinyPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/shiny.gbapal.lz");
+const u8 gMonIcon_Dugtrio[] = INCBIN_U8("graphics/pokemon/dugtrio/icon.4bpp");
+const u8 gMonFootprint_Dugtrio[] = INCBIN_U8("graphics/pokemon/dugtrio/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/front.4bpp.lz");
+const u32 gMonPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/normal.gbapal.lz");
+const u32 gMonBackPic_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/back.4bpp.lz");
+const u32 gMonShinyPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/shiny.gbapal.lz");
+const u8 gMonIcon_Meowth[] = INCBIN_U8("graphics/pokemon/meowth/icon.4bpp");
+const u8 gMonFootprint_Meowth[] = INCBIN_U8("graphics/pokemon/meowth/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/front.4bpp.lz");
+const u32 gMonPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/normal.gbapal.lz");
+const u32 gMonBackPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/back.4bpp.lz");
+const u32 gMonShinyPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/shiny.gbapal.lz");
+const u8 gMonIcon_Persian[] = INCBIN_U8("graphics/pokemon/persian/icon.4bpp");
+const u8 gMonFootprint_Persian[] = INCBIN_U8("graphics/pokemon/persian/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/front.4bpp.lz");
+const u32 gMonPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/normal.gbapal.lz");
+const u32 gMonBackPic_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/back.4bpp.lz");
+const u32 gMonShinyPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/shiny.gbapal.lz");
+const u8 gMonIcon_Psyduck[] = INCBIN_U8("graphics/pokemon/psyduck/icon.4bpp");
+const u8 gMonFootprint_Psyduck[] = INCBIN_U8("graphics/pokemon/psyduck/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/front.4bpp.lz");
+const u32 gMonPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/normal.gbapal.lz");
+const u32 gMonBackPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/back.4bpp.lz");
+const u32 gMonShinyPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/shiny.gbapal.lz");
+const u8 gMonIcon_Golduck[] = INCBIN_U8("graphics/pokemon/golduck/icon.4bpp");
+const u8 gMonFootprint_Golduck[] = INCBIN_U8("graphics/pokemon/golduck/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/front.4bpp.lz");
+const u32 gMonPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/normal.gbapal.lz");
+const u32 gMonBackPic_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/back.4bpp.lz");
+const u32 gMonShinyPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/shiny.gbapal.lz");
+const u8 gMonIcon_Mankey[] = INCBIN_U8("graphics/pokemon/mankey/icon.4bpp");
+const u8 gMonFootprint_Mankey[] = INCBIN_U8("graphics/pokemon/mankey/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/front.4bpp.lz");
+const u32 gMonPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/normal.gbapal.lz");
+const u32 gMonBackPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/back.4bpp.lz");
+const u32 gMonShinyPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/shiny.gbapal.lz");
+const u8 gMonIcon_Primeape[] = INCBIN_U8("graphics/pokemon/primeape/icon.4bpp");
+const u8 gMonFootprint_Primeape[] = INCBIN_U8("graphics/pokemon/primeape/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/front.4bpp.lz");
+const u32 gMonPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/normal.gbapal.lz");
+const u32 gMonBackPic_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/back.4bpp.lz");
+const u32 gMonShinyPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/shiny.gbapal.lz");
+const u8 gMonIcon_Growlithe[] = INCBIN_U8("graphics/pokemon/growlithe/icon.4bpp");
+const u8 gMonFootprint_Growlithe[] = INCBIN_U8("graphics/pokemon/growlithe/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/front.4bpp.lz");
+const u32 gMonPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/normal.gbapal.lz");
+const u32 gMonBackPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/back.4bpp.lz");
+const u32 gMonShinyPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/shiny.gbapal.lz");
+const u8 gMonIcon_Arcanine[] = INCBIN_U8("graphics/pokemon/arcanine/icon.4bpp");
+const u8 gMonFootprint_Arcanine[] = INCBIN_U8("graphics/pokemon/arcanine/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/front.4bpp.lz");
+const u32 gMonPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/normal.gbapal.lz");
+const u32 gMonBackPic_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/back.4bpp.lz");
+const u32 gMonShinyPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/shiny.gbapal.lz");
+const u8 gMonIcon_Poliwag[] = INCBIN_U8("graphics/pokemon/poliwag/icon.4bpp");
+const u8 gMonFootprint_Poliwag[] = INCBIN_U8("graphics/pokemon/poliwag/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/front.4bpp.lz");
+const u32 gMonPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/normal.gbapal.lz");
+const u32 gMonBackPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/back.4bpp.lz");
+const u32 gMonShinyPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/shiny.gbapal.lz");
+const u8 gMonIcon_Poliwhirl[] = INCBIN_U8("graphics/pokemon/poliwhirl/icon.4bpp");
+const u8 gMonFootprint_Poliwhirl[] = INCBIN_U8("graphics/pokemon/poliwhirl/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/front.4bpp.lz");
+const u32 gMonPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/normal.gbapal.lz");
+const u32 gMonBackPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/back.4bpp.lz");
+const u32 gMonShinyPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/shiny.gbapal.lz");
+const u8 gMonIcon_Poliwrath[] = INCBIN_U8("graphics/pokemon/poliwrath/icon.4bpp");
+const u8 gMonFootprint_Poliwrath[] = INCBIN_U8("graphics/pokemon/poliwrath/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Abra[] = INCBIN_U32("graphics/pokemon/abra/front.4bpp.lz");
+const u32 gMonPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/normal.gbapal.lz");
+const u32 gMonBackPic_Abra[] = INCBIN_U32("graphics/pokemon/abra/back.4bpp.lz");
+const u32 gMonShinyPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/shiny.gbapal.lz");
+const u8 gMonIcon_Abra[] = INCBIN_U8("graphics/pokemon/abra/icon.4bpp");
+const u8 gMonFootprint_Abra[] = INCBIN_U8("graphics/pokemon/abra/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/front.4bpp.lz");
+const u32 gMonPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/normal.gbapal.lz");
+const u32 gMonBackPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/back.4bpp.lz");
+const u32 gMonShinyPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/shiny.gbapal.lz");
+const u8 gMonIcon_Kadabra[] = INCBIN_U8("graphics/pokemon/kadabra/icon.4bpp");
+const u8 gMonFootprint_Kadabra[] = INCBIN_U8("graphics/pokemon/kadabra/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/front.4bpp.lz");
+const u32 gMonPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/normal.gbapal.lz");
+const u32 gMonBackPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/back.4bpp.lz");
+const u32 gMonShinyPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/shiny.gbapal.lz");
+const u8 gMonIcon_Alakazam[] = INCBIN_U8("graphics/pokemon/alakazam/icon.4bpp");
+const u8 gMonFootprint_Alakazam[] = INCBIN_U8("graphics/pokemon/alakazam/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Machop[] = INCBIN_U32("graphics/pokemon/machop/front.4bpp.lz");
+const u32 gMonPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/normal.gbapal.lz");
+const u32 gMonBackPic_Machop[] = INCBIN_U32("graphics/pokemon/machop/back.4bpp.lz");
+const u32 gMonShinyPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/shiny.gbapal.lz");
+const u8 gMonIcon_Machop[] = INCBIN_U8("graphics/pokemon/machop/icon.4bpp");
+const u8 gMonFootprint_Machop[] = INCBIN_U8("graphics/pokemon/machop/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/front.4bpp.lz");
+const u32 gMonPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/normal.gbapal.lz");
+const u32 gMonBackPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/back.4bpp.lz");
+const u32 gMonShinyPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/shiny.gbapal.lz");
+const u8 gMonIcon_Machoke[] = INCBIN_U8("graphics/pokemon/machoke/icon.4bpp");
+const u8 gMonFootprint_Machoke[] = INCBIN_U8("graphics/pokemon/machoke/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/front.4bpp.lz");
+const u32 gMonPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/normal.gbapal.lz");
+const u32 gMonBackPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/back.4bpp.lz");
+const u32 gMonShinyPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/shiny.gbapal.lz");
+const u8 gMonIcon_Machamp[] = INCBIN_U8("graphics/pokemon/machamp/icon.4bpp");
+const u8 gMonFootprint_Machamp[] = INCBIN_U8("graphics/pokemon/machamp/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/front.4bpp.lz");
+const u32 gMonPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/normal.gbapal.lz");
+const u32 gMonBackPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/back.4bpp.lz");
+const u32 gMonShinyPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/shiny.gbapal.lz");
+const u8 gMonIcon_Bellsprout[] = INCBIN_U8("graphics/pokemon/bellsprout/icon.4bpp");
+const u8 gMonFootprint_Bellsprout[] = INCBIN_U8("graphics/pokemon/bellsprout/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/front.4bpp.lz");
+const u32 gMonPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/normal.gbapal.lz");
+const u32 gMonBackPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/back.4bpp.lz");
+const u32 gMonShinyPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/shiny.gbapal.lz");
+const u8 gMonIcon_Weepinbell[] = INCBIN_U8("graphics/pokemon/weepinbell/icon.4bpp");
+const u8 gMonFootprint_Weepinbell[] = INCBIN_U8("graphics/pokemon/weepinbell/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/front.4bpp.lz");
+const u32 gMonPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/normal.gbapal.lz");
+const u32 gMonBackPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/back.4bpp.lz");
+const u32 gMonShinyPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/shiny.gbapal.lz");
+const u8 gMonIcon_Victreebel[] = INCBIN_U8("graphics/pokemon/victreebel/icon.4bpp");
+const u8 gMonFootprint_Victreebel[] = INCBIN_U8("graphics/pokemon/victreebel/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/front.4bpp.lz");
+const u32 gMonPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/normal.gbapal.lz");
+const u32 gMonBackPic_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/back.4bpp.lz");
+const u32 gMonShinyPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/shiny.gbapal.lz");
+const u8 gMonIcon_Tentacool[] = INCBIN_U8("graphics/pokemon/tentacool/icon.4bpp");
+const u8 gMonFootprint_Tentacool[] = INCBIN_U8("graphics/pokemon/tentacool/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/front.4bpp.lz");
+const u32 gMonPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/normal.gbapal.lz");
+const u32 gMonBackPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/back.4bpp.lz");
+const u32 gMonShinyPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/shiny.gbapal.lz");
+const u8 gMonIcon_Tentacruel[] = INCBIN_U8("graphics/pokemon/tentacruel/icon.4bpp");
+const u8 gMonFootprint_Tentacruel[] = INCBIN_U8("graphics/pokemon/tentacruel/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/front.4bpp.lz");
+const u32 gMonPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/normal.gbapal.lz");
+const u32 gMonBackPic_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/back.4bpp.lz");
+const u32 gMonShinyPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/shiny.gbapal.lz");
+const u8 gMonIcon_Geodude[] = INCBIN_U8("graphics/pokemon/geodude/icon.4bpp");
+const u8 gMonFootprint_Geodude[] = INCBIN_U8("graphics/pokemon/geodude/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/front.4bpp.lz");
+const u32 gMonPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/normal.gbapal.lz");
+const u32 gMonBackPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/back.4bpp.lz");
+const u32 gMonShinyPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/shiny.gbapal.lz");
+const u8 gMonIcon_Graveler[] = INCBIN_U8("graphics/pokemon/graveler/icon.4bpp");
+const u8 gMonFootprint_Graveler[] = INCBIN_U8("graphics/pokemon/graveler/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/front.4bpp.lz");
+const u32 gMonPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/normal.gbapal.lz");
+const u32 gMonBackPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/back.4bpp.lz");
+const u32 gMonShinyPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/shiny.gbapal.lz");
+const u8 gMonIcon_Golem[] = INCBIN_U8("graphics/pokemon/golem/icon.4bpp");
+const u8 gMonFootprint_Golem[] = INCBIN_U8("graphics/pokemon/golem/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/front.4bpp.lz");
+const u32 gMonPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/normal.gbapal.lz");
+const u32 gMonBackPic_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/back.4bpp.lz");
+const u32 gMonShinyPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/shiny.gbapal.lz");
+const u8 gMonIcon_Ponyta[] = INCBIN_U8("graphics/pokemon/ponyta/icon.4bpp");
+const u8 gMonFootprint_Ponyta[] = INCBIN_U8("graphics/pokemon/ponyta/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/front.4bpp.lz");
+const u32 gMonPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/normal.gbapal.lz");
+const u32 gMonBackPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/back.4bpp.lz");
+const u32 gMonShinyPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/shiny.gbapal.lz");
+const u8 gMonIcon_Rapidash[] = INCBIN_U8("graphics/pokemon/rapidash/icon.4bpp");
+const u8 gMonFootprint_Rapidash[] = INCBIN_U8("graphics/pokemon/rapidash/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/front.4bpp.lz");
+const u32 gMonPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/normal.gbapal.lz");
+const u32 gMonBackPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/back.4bpp.lz");
+const u32 gMonShinyPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/shiny.gbapal.lz");
+const u8 gMonIcon_Slowpoke[] = INCBIN_U8("graphics/pokemon/slowpoke/icon.4bpp");
+const u8 gMonFootprint_Slowpoke[] = INCBIN_U8("graphics/pokemon/slowpoke/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/front.4bpp.lz");
+const u32 gMonPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/normal.gbapal.lz");
+const u32 gMonBackPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/back.4bpp.lz");
+const u32 gMonShinyPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/shiny.gbapal.lz");
+const u8 gMonIcon_Slowbro[] = INCBIN_U8("graphics/pokemon/slowbro/icon.4bpp");
+const u8 gMonFootprint_Slowbro[] = INCBIN_U8("graphics/pokemon/slowbro/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/front.4bpp.lz");
+const u32 gMonPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/normal.gbapal.lz");
+const u32 gMonBackPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/back.4bpp.lz");
+const u32 gMonShinyPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/shiny.gbapal.lz");
+const u8 gMonIcon_Magnemite[] = INCBIN_U8("graphics/pokemon/magnemite/icon.4bpp");
+const u8 gMonFootprint_Magnemite[] = INCBIN_U8("graphics/pokemon/magnemite/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/front.4bpp.lz");
+const u32 gMonPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/normal.gbapal.lz");
+const u32 gMonBackPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/back.4bpp.lz");
+const u32 gMonShinyPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/shiny.gbapal.lz");
+const u8 gMonIcon_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/icon.4bpp");
+const u8 gMonFootprint_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/front.4bpp.lz");
+const u32 gMonPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/normal.gbapal.lz");
+const u32 gMonBackPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/back.4bpp.lz");
+const u32 gMonShinyPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetch_d/shiny.gbapal.lz");
+const u8 gMonIcon_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetch_d/icon.4bpp");
+const u8 gMonFootprint_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetch_d/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/front.4bpp.lz");
+const u32 gMonPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/normal.gbapal.lz");
+const u32 gMonBackPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/back.4bpp.lz");
+const u32 gMonShinyPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/shiny.gbapal.lz");
+const u8 gMonIcon_Doduo[] = INCBIN_U8("graphics/pokemon/doduo/icon.4bpp");
+const u8 gMonFootprint_Doduo[] = INCBIN_U8("graphics/pokemon/doduo/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/front.4bpp.lz");
+const u32 gMonPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/normal.gbapal.lz");
+const u32 gMonBackPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/back.4bpp.lz");
+const u32 gMonShinyPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/shiny.gbapal.lz");
+const u8 gMonIcon_Dodrio[] = INCBIN_U8("graphics/pokemon/dodrio/icon.4bpp");
+const u8 gMonFootprint_Dodrio[] = INCBIN_U8("graphics/pokemon/dodrio/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/front.4bpp.lz");
+const u32 gMonPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/normal.gbapal.lz");
+const u32 gMonBackPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/back.4bpp.lz");
+const u32 gMonShinyPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/shiny.gbapal.lz");
+const u8 gMonIcon_Seel[] = INCBIN_U8("graphics/pokemon/seel/icon.4bpp");
+const u8 gMonFootprint_Seel[] = INCBIN_U8("graphics/pokemon/seel/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/front.4bpp.lz");
+const u32 gMonPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/normal.gbapal.lz");
+const u32 gMonBackPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/back.4bpp.lz");
+const u32 gMonShinyPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/shiny.gbapal.lz");
+const u8 gMonIcon_Dewgong[] = INCBIN_U8("graphics/pokemon/dewgong/icon.4bpp");
+const u8 gMonFootprint_Dewgong[] = INCBIN_U8("graphics/pokemon/dewgong/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/front.4bpp.lz");
+const u32 gMonPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/normal.gbapal.lz");
+const u32 gMonBackPic_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/back.4bpp.lz");
+const u32 gMonShinyPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/shiny.gbapal.lz");
+const u8 gMonIcon_Grimer[] = INCBIN_U8("graphics/pokemon/grimer/icon.4bpp");
+const u8 gMonFootprint_Grimer[] = INCBIN_U8("graphics/pokemon/grimer/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/front.4bpp.lz");
+const u32 gMonPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/normal.gbapal.lz");
+const u32 gMonBackPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/back.4bpp.lz");
+const u32 gMonShinyPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/shiny.gbapal.lz");
+const u8 gMonIcon_Muk[] = INCBIN_U8("graphics/pokemon/muk/icon.4bpp");
+const u8 gMonFootprint_Muk[] = INCBIN_U8("graphics/pokemon/muk/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/front.4bpp.lz");
+const u32 gMonPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/normal.gbapal.lz");
+const u32 gMonBackPic_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/back.4bpp.lz");
+const u32 gMonShinyPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/shiny.gbapal.lz");
+const u8 gMonIcon_Shellder[] = INCBIN_U8("graphics/pokemon/shellder/icon.4bpp");
+const u8 gMonFootprint_Shellder[] = INCBIN_U8("graphics/pokemon/shellder/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/front.4bpp.lz");
+const u32 gMonPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/normal.gbapal.lz");
+const u32 gMonBackPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/back.4bpp.lz");
+const u32 gMonShinyPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/shiny.gbapal.lz");
+const u8 gMonIcon_Cloyster[] = INCBIN_U8("graphics/pokemon/cloyster/icon.4bpp");
+const u8 gMonFootprint_Cloyster[] = INCBIN_U8("graphics/pokemon/cloyster/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/front.4bpp.lz");
+const u32 gMonPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/normal.gbapal.lz");
+const u32 gMonBackPic_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/back.4bpp.lz");
+const u32 gMonShinyPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/shiny.gbapal.lz");
+const u8 gMonIcon_Gastly[] = INCBIN_U8("graphics/pokemon/gastly/icon.4bpp");
+const u8 gMonFootprint_Gastly[] = INCBIN_U8("graphics/pokemon/gastly/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/front.4bpp.lz");
+const u32 gMonPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/normal.gbapal.lz");
+const u32 gMonBackPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/back.4bpp.lz");
+const u32 gMonShinyPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/shiny.gbapal.lz");
+const u8 gMonIcon_Haunter[] = INCBIN_U8("graphics/pokemon/haunter/icon.4bpp");
+const u8 gMonFootprint_Haunter[] = INCBIN_U8("graphics/pokemon/haunter/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/front.4bpp.lz");
+const u32 gMonPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/normal.gbapal.lz");
+const u32 gMonBackPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/back.4bpp.lz");
+const u32 gMonShinyPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/shiny.gbapal.lz");
+const u8 gMonIcon_Gengar[] = INCBIN_U8("graphics/pokemon/gengar/icon.4bpp");
+const u8 gMonFootprint_Gengar[] = INCBIN_U8("graphics/pokemon/gengar/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Onix[] = INCBIN_U32("graphics/pokemon/onix/front.4bpp.lz");
+const u32 gMonPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/normal.gbapal.lz");
+const u32 gMonBackPic_Onix[] = INCBIN_U32("graphics/pokemon/onix/back.4bpp.lz");
+const u32 gMonShinyPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/shiny.gbapal.lz");
+const u8 gMonIcon_Onix[] = INCBIN_U8("graphics/pokemon/onix/icon.4bpp");
+const u8 gMonFootprint_Onix[] = INCBIN_U8("graphics/pokemon/onix/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/front.4bpp.lz");
+const u32 gMonPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/normal.gbapal.lz");
+const u32 gMonBackPic_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/back.4bpp.lz");
+const u32 gMonShinyPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/shiny.gbapal.lz");
+const u8 gMonIcon_Drowzee[] = INCBIN_U8("graphics/pokemon/drowzee/icon.4bpp");
+const u8 gMonFootprint_Drowzee[] = INCBIN_U8("graphics/pokemon/drowzee/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/front.4bpp.lz");
+const u32 gMonPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/normal.gbapal.lz");
+const u32 gMonBackPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/back.4bpp.lz");
+const u32 gMonShinyPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/shiny.gbapal.lz");
+const u8 gMonIcon_Hypno[] = INCBIN_U8("graphics/pokemon/hypno/icon.4bpp");
+const u8 gMonFootprint_Hypno[] = INCBIN_U8("graphics/pokemon/hypno/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/front.4bpp.lz");
+const u32 gMonPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/normal.gbapal.lz");
+const u32 gMonBackPic_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/back.4bpp.lz");
+const u32 gMonShinyPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/shiny.gbapal.lz");
+const u8 gMonIcon_Krabby[] = INCBIN_U8("graphics/pokemon/krabby/icon.4bpp");
+const u8 gMonFootprint_Krabby[] = INCBIN_U8("graphics/pokemon/krabby/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/front.4bpp.lz");
+const u32 gMonPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/normal.gbapal.lz");
+const u32 gMonBackPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/back.4bpp.lz");
+const u32 gMonShinyPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/shiny.gbapal.lz");
+const u8 gMonIcon_Kingler[] = INCBIN_U8("graphics/pokemon/kingler/icon.4bpp");
+const u8 gMonFootprint_Kingler[] = INCBIN_U8("graphics/pokemon/kingler/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/front.4bpp.lz");
+const u32 gMonPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/normal.gbapal.lz");
+const u32 gMonBackPic_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/back.4bpp.lz");
+const u32 gMonShinyPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/shiny.gbapal.lz");
+const u8 gMonIcon_Voltorb[] = INCBIN_U8("graphics/pokemon/voltorb/icon.4bpp");
+const u8 gMonFootprint_Voltorb[] = INCBIN_U8("graphics/pokemon/voltorb/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/front.4bpp.lz");
+const u32 gMonPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/normal.gbapal.lz");
+const u32 gMonBackPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/back.4bpp.lz");
+const u32 gMonShinyPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/shiny.gbapal.lz");
+const u8 gMonIcon_Electrode[] = INCBIN_U8("graphics/pokemon/electrode/icon.4bpp");
+const u8 gMonFootprint_Electrode[] = INCBIN_U8("graphics/pokemon/electrode/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/front.4bpp.lz");
+const u32 gMonPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/normal.gbapal.lz");
+const u32 gMonBackPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/back.4bpp.lz");
+const u32 gMonShinyPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/shiny.gbapal.lz");
+const u8 gMonIcon_Exeggcute[] = INCBIN_U8("graphics/pokemon/exeggcute/icon.4bpp");
+const u8 gMonFootprint_Exeggcute[] = INCBIN_U8("graphics/pokemon/exeggcute/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/front.4bpp.lz");
+const u32 gMonPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/normal.gbapal.lz");
+const u32 gMonBackPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/back.4bpp.lz");
+const u32 gMonShinyPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/shiny.gbapal.lz");
+const u8 gMonIcon_Exeggutor[] = INCBIN_U8("graphics/pokemon/exeggutor/icon.4bpp");
+const u8 gMonFootprint_Exeggutor[] = INCBIN_U8("graphics/pokemon/exeggutor/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/front.4bpp.lz");
+const u32 gMonPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/normal.gbapal.lz");
+const u32 gMonBackPic_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/back.4bpp.lz");
+const u32 gMonShinyPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/shiny.gbapal.lz");
+const u8 gMonIcon_Cubone[] = INCBIN_U8("graphics/pokemon/cubone/icon.4bpp");
+const u8 gMonFootprint_Cubone[] = INCBIN_U8("graphics/pokemon/cubone/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/front.4bpp.lz");
+const u32 gMonPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/normal.gbapal.lz");
+const u32 gMonBackPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/back.4bpp.lz");
+const u32 gMonShinyPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/shiny.gbapal.lz");
+const u8 gMonIcon_Marowak[] = INCBIN_U8("graphics/pokemon/marowak/icon.4bpp");
+const u8 gMonFootprint_Marowak[] = INCBIN_U8("graphics/pokemon/marowak/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/front.4bpp.lz");
+const u32 gMonPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/normal.gbapal.lz");
+const u32 gMonBackPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/back.4bpp.lz");
+const u32 gMonShinyPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/shiny.gbapal.lz");
+const u8 gMonIcon_Hitmonlee[] = INCBIN_U8("graphics/pokemon/hitmonlee/icon.4bpp");
+const u8 gMonFootprint_Hitmonlee[] = INCBIN_U8("graphics/pokemon/hitmonlee/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/front.4bpp.lz");
+const u32 gMonPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/normal.gbapal.lz");
+const u32 gMonBackPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/back.4bpp.lz");
+const u32 gMonShinyPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/shiny.gbapal.lz");
+const u8 gMonIcon_Hitmonchan[] = INCBIN_U8("graphics/pokemon/hitmonchan/icon.4bpp");
+const u8 gMonFootprint_Hitmonchan[] = INCBIN_U8("graphics/pokemon/hitmonchan/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/front.4bpp.lz");
+const u32 gMonPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/normal.gbapal.lz");
+const u32 gMonBackPic_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/back.4bpp.lz");
+const u32 gMonShinyPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/shiny.gbapal.lz");
+const u8 gMonIcon_Lickitung[] = INCBIN_U8("graphics/pokemon/lickitung/icon.4bpp");
+const u8 gMonFootprint_Lickitung[] = INCBIN_U8("graphics/pokemon/lickitung/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/front.4bpp.lz");
+const u32 gMonPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/normal.gbapal.lz");
+const u32 gMonBackPic_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/back.4bpp.lz");
+const u32 gMonShinyPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/shiny.gbapal.lz");
+const u8 gMonIcon_Koffing[] = INCBIN_U8("graphics/pokemon/koffing/icon.4bpp");
+const u8 gMonFootprint_Koffing[] = INCBIN_U8("graphics/pokemon/koffing/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/front.4bpp.lz");
+const u32 gMonPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/normal.gbapal.lz");
+const u32 gMonBackPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/back.4bpp.lz");
+const u32 gMonShinyPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/shiny.gbapal.lz");
+const u8 gMonIcon_Weezing[] = INCBIN_U8("graphics/pokemon/weezing/icon.4bpp");
+const u8 gMonFootprint_Weezing[] = INCBIN_U8("graphics/pokemon/weezing/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/front.4bpp.lz");
+const u32 gMonPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/normal.gbapal.lz");
+const u32 gMonBackPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/back.4bpp.lz");
+const u32 gMonShinyPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/shiny.gbapal.lz");
+const u8 gMonIcon_Rhyhorn[] = INCBIN_U8("graphics/pokemon/rhyhorn/icon.4bpp");
+const u8 gMonFootprint_Rhyhorn[] = INCBIN_U8("graphics/pokemon/rhyhorn/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/front.4bpp.lz");
+const u32 gMonPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/normal.gbapal.lz");
+const u32 gMonBackPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/back.4bpp.lz");
+const u32 gMonShinyPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/shiny.gbapal.lz");
+const u8 gMonIcon_Rhydon[] = INCBIN_U8("graphics/pokemon/rhydon/icon.4bpp");
+const u8 gMonFootprint_Rhydon[] = INCBIN_U8("graphics/pokemon/rhydon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/front.4bpp.lz");
+const u32 gMonPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/normal.gbapal.lz");
+const u32 gMonBackPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/back.4bpp.lz");
+const u32 gMonShinyPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/shiny.gbapal.lz");
+const u8 gMonIcon_Chansey[] = INCBIN_U8("graphics/pokemon/chansey/icon.4bpp");
+const u8 gMonFootprint_Chansey[] = INCBIN_U8("graphics/pokemon/chansey/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/front.4bpp.lz");
+const u32 gMonPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/normal.gbapal.lz");
+const u32 gMonBackPic_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/back.4bpp.lz");
+const u32 gMonShinyPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/shiny.gbapal.lz");
+const u8 gMonIcon_Tangela[] = INCBIN_U8("graphics/pokemon/tangela/icon.4bpp");
+const u8 gMonFootprint_Tangela[] = INCBIN_U8("graphics/pokemon/tangela/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/front.4bpp.lz");
+const u32 gMonPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/normal.gbapal.lz");
+const u32 gMonBackPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/back.4bpp.lz");
+const u32 gMonShinyPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/shiny.gbapal.lz");
+const u8 gMonIcon_Kangaskhan[] = INCBIN_U8("graphics/pokemon/kangaskhan/icon.4bpp");
+const u8 gMonFootprint_Kangaskhan[] = INCBIN_U8("graphics/pokemon/kangaskhan/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/front.4bpp.lz");
+const u32 gMonPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/normal.gbapal.lz");
+const u32 gMonBackPic_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/back.4bpp.lz");
+const u32 gMonShinyPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/shiny.gbapal.lz");
+const u8 gMonIcon_Horsea[] = INCBIN_U8("graphics/pokemon/horsea/icon.4bpp");
+const u8 gMonFootprint_Horsea[] = INCBIN_U8("graphics/pokemon/horsea/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/front.4bpp.lz");
+const u32 gMonPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/normal.gbapal.lz");
+const u32 gMonBackPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/back.4bpp.lz");
+const u32 gMonShinyPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/shiny.gbapal.lz");
+const u8 gMonIcon_Seadra[] = INCBIN_U8("graphics/pokemon/seadra/icon.4bpp");
+const u8 gMonFootprint_Seadra[] = INCBIN_U8("graphics/pokemon/seadra/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/front.4bpp.lz");
+const u32 gMonPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/normal.gbapal.lz");
+const u32 gMonBackPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/back.4bpp.lz");
+const u32 gMonShinyPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/shiny.gbapal.lz");
+const u8 gMonIcon_Goldeen[] = INCBIN_U8("graphics/pokemon/goldeen/icon.4bpp");
+const u8 gMonFootprint_Goldeen[] = INCBIN_U8("graphics/pokemon/goldeen/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/front.4bpp.lz");
+const u32 gMonPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/normal.gbapal.lz");
+const u32 gMonBackPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/back.4bpp.lz");
+const u32 gMonShinyPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/shiny.gbapal.lz");
+const u8 gMonIcon_Seaking[] = INCBIN_U8("graphics/pokemon/seaking/icon.4bpp");
+const u8 gMonFootprint_Seaking[] = INCBIN_U8("graphics/pokemon/seaking/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/front.4bpp.lz");
+const u32 gMonPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/normal.gbapal.lz");
+const u32 gMonBackPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/back.4bpp.lz");
+const u32 gMonShinyPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/shiny.gbapal.lz");
+const u8 gMonIcon_Staryu[] = INCBIN_U8("graphics/pokemon/staryu/icon.4bpp");
+const u8 gMonFootprint_Staryu[] = INCBIN_U8("graphics/pokemon/staryu/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/front.4bpp.lz");
+const u32 gMonPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/normal.gbapal.lz");
+const u32 gMonBackPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/back.4bpp.lz");
+const u32 gMonShinyPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/shiny.gbapal.lz");
+const u8 gMonIcon_Starmie[] = INCBIN_U8("graphics/pokemon/starmie/icon.4bpp");
+const u8 gMonFootprint_Starmie[] = INCBIN_U8("graphics/pokemon/starmie/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Mrmime[] = INCBIN_U32("graphics/pokemon/mr_mime/front.4bpp.lz");
+const u32 gMonPalette_Mrmime[] = INCBIN_U32("graphics/pokemon/mr_mime/normal.gbapal.lz");
+const u32 gMonBackPic_Mrmime[] = INCBIN_U32("graphics/pokemon/mr_mime/back.4bpp.lz");
+const u32 gMonShinyPalette_Mrmime[] = INCBIN_U32("graphics/pokemon/mr_mime/shiny.gbapal.lz");
+const u8 gMonIcon_Mrmime[] = INCBIN_U8("graphics/pokemon/mr_mime/icon.4bpp");
+const u8 gMonFootprint_Mrmime[] = INCBIN_U8("graphics/pokemon/mr_mime/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/front.4bpp.lz");
+const u32 gMonPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/normal.gbapal.lz");
+const u32 gMonBackPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/back.4bpp.lz");
+const u32 gMonShinyPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/shiny.gbapal.lz");
+const u8 gMonIcon_Scyther[] = INCBIN_U8("graphics/pokemon/scyther/icon.4bpp");
+const u8 gMonFootprint_Scyther[] = INCBIN_U8("graphics/pokemon/scyther/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/front.4bpp.lz");
+const u32 gMonPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/normal.gbapal.lz");
+const u32 gMonBackPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/back.4bpp.lz");
+const u32 gMonShinyPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/shiny.gbapal.lz");
+const u8 gMonIcon_Jynx[] = INCBIN_U8("graphics/pokemon/jynx/icon.4bpp");
+const u8 gMonFootprint_Jynx[] = INCBIN_U8("graphics/pokemon/jynx/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/front.4bpp.lz");
+const u32 gMonPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/normal.gbapal.lz");
+const u32 gMonBackPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/back.4bpp.lz");
+const u32 gMonShinyPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/shiny.gbapal.lz");
+const u8 gMonIcon_Electabuzz[] = INCBIN_U8("graphics/pokemon/electabuzz/icon.4bpp");
+const u8 gMonFootprint_Electabuzz[] = INCBIN_U8("graphics/pokemon/electabuzz/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/front.4bpp.lz");
+const u32 gMonPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/normal.gbapal.lz");
+const u32 gMonBackPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/back.4bpp.lz");
+const u32 gMonShinyPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/shiny.gbapal.lz");
+const u8 gMonIcon_Magmar[] = INCBIN_U8("graphics/pokemon/magmar/icon.4bpp");
+const u8 gMonFootprint_Magmar[] = INCBIN_U8("graphics/pokemon/magmar/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/front.4bpp.lz");
+const u32 gMonPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/normal.gbapal.lz");
+const u32 gMonBackPic_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/back.4bpp.lz");
+const u32 gMonShinyPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/shiny.gbapal.lz");
+const u8 gMonIcon_Pinsir[] = INCBIN_U8("graphics/pokemon/pinsir/icon.4bpp");
+const u8 gMonFootprint_Pinsir[] = INCBIN_U8("graphics/pokemon/pinsir/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/front.4bpp.lz");
+const u32 gMonPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/normal.gbapal.lz");
+const u32 gMonBackPic_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/back.4bpp.lz");
+const u32 gMonShinyPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/shiny.gbapal.lz");
+const u8 gMonIcon_Tauros[] = INCBIN_U8("graphics/pokemon/tauros/icon.4bpp");
+const u8 gMonFootprint_Tauros[] = INCBIN_U8("graphics/pokemon/tauros/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/front.4bpp.lz");
+const u32 gMonPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/normal.gbapal.lz");
+const u32 gMonBackPic_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/back.4bpp.lz");
+const u32 gMonShinyPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/shiny.gbapal.lz");
+const u8 gMonIcon_Magikarp[] = INCBIN_U8("graphics/pokemon/magikarp/icon.4bpp");
+const u8 gMonFootprint_Magikarp[] = INCBIN_U8("graphics/pokemon/magikarp/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/front.4bpp.lz");
+const u32 gMonPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/normal.gbapal.lz");
+const u32 gMonBackPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/back.4bpp.lz");
+const u32 gMonShinyPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/shiny.gbapal.lz");
+const u8 gMonIcon_Gyarados[] = INCBIN_U8("graphics/pokemon/gyarados/icon.4bpp");
+const u8 gMonFootprint_Gyarados[] = INCBIN_U8("graphics/pokemon/gyarados/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/front.4bpp.lz");
+const u32 gMonPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/normal.gbapal.lz");
+const u32 gMonBackPic_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/back.4bpp.lz");
+const u32 gMonShinyPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/shiny.gbapal.lz");
+const u8 gMonIcon_Lapras[] = INCBIN_U8("graphics/pokemon/lapras/icon.4bpp");
+const u8 gMonFootprint_Lapras[] = INCBIN_U8("graphics/pokemon/lapras/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/front.4bpp.lz");
+const u32 gMonPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/normal.gbapal.lz");
+const u32 gMonBackPic_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/back.4bpp.lz");
+const u32 gMonShinyPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/shiny.gbapal.lz");
+const u8 gMonIcon_Ditto[] = INCBIN_U8("graphics/pokemon/ditto/icon.4bpp");
+const u8 gMonFootprint_Ditto[] = INCBIN_U8("graphics/pokemon/ditto/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/front.4bpp.lz");
+const u32 gMonPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/normal.gbapal.lz");
+const u32 gMonBackPic_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/back.4bpp.lz");
+const u32 gMonShinyPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/shiny.gbapal.lz");
+const u8 gMonIcon_Eevee[] = INCBIN_U8("graphics/pokemon/eevee/icon.4bpp");
+const u8 gMonFootprint_Eevee[] = INCBIN_U8("graphics/pokemon/eevee/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/front.4bpp.lz");
+const u32 gMonPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/normal.gbapal.lz");
+const u32 gMonBackPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/back.4bpp.lz");
+const u32 gMonShinyPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/shiny.gbapal.lz");
+const u8 gMonIcon_Vaporeon[] = INCBIN_U8("graphics/pokemon/vaporeon/icon.4bpp");
+const u8 gMonFootprint_Vaporeon[] = INCBIN_U8("graphics/pokemon/vaporeon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/front.4bpp.lz");
+const u32 gMonPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/normal.gbapal.lz");
+const u32 gMonBackPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/back.4bpp.lz");
+const u32 gMonShinyPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/shiny.gbapal.lz");
+const u8 gMonIcon_Jolteon[] = INCBIN_U8("graphics/pokemon/jolteon/icon.4bpp");
+const u8 gMonFootprint_Jolteon[] = INCBIN_U8("graphics/pokemon/jolteon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/front.4bpp.lz");
+const u32 gMonPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/normal.gbapal.lz");
+const u32 gMonBackPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/back.4bpp.lz");
+const u32 gMonShinyPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/shiny.gbapal.lz");
+const u8 gMonIcon_Flareon[] = INCBIN_U8("graphics/pokemon/flareon/icon.4bpp");
+const u8 gMonFootprint_Flareon[] = INCBIN_U8("graphics/pokemon/flareon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/front.4bpp.lz");
+const u32 gMonPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/normal.gbapal.lz");
+const u32 gMonBackPic_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/back.4bpp.lz");
+const u32 gMonShinyPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/shiny.gbapal.lz");
+const u8 gMonIcon_Porygon[] = INCBIN_U8("graphics/pokemon/porygon/icon.4bpp");
+const u8 gMonFootprint_Porygon[] = INCBIN_U8("graphics/pokemon/porygon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/front.4bpp.lz");
+const u32 gMonPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/normal.gbapal.lz");
+const u32 gMonBackPic_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/back.4bpp.lz");
+const u32 gMonShinyPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/shiny.gbapal.lz");
+const u8 gMonIcon_Omanyte[] = INCBIN_U8("graphics/pokemon/omanyte/icon.4bpp");
+const u8 gMonFootprint_Omanyte[] = INCBIN_U8("graphics/pokemon/omanyte/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/front.4bpp.lz");
+const u32 gMonPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/normal.gbapal.lz");
+const u32 gMonBackPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/back.4bpp.lz");
+const u32 gMonShinyPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/shiny.gbapal.lz");
+const u8 gMonIcon_Omastar[] = INCBIN_U8("graphics/pokemon/omastar/icon.4bpp");
+const u8 gMonFootprint_Omastar[] = INCBIN_U8("graphics/pokemon/omastar/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/front.4bpp.lz");
+const u32 gMonPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/normal.gbapal.lz");
+const u32 gMonBackPic_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/back.4bpp.lz");
+const u32 gMonShinyPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/shiny.gbapal.lz");
+const u8 gMonIcon_Kabuto[] = INCBIN_U8("graphics/pokemon/kabuto/icon.4bpp");
+const u8 gMonFootprint_Kabuto[] = INCBIN_U8("graphics/pokemon/kabuto/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/front.4bpp.lz");
+const u32 gMonPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/normal.gbapal.lz");
+const u32 gMonBackPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/back.4bpp.lz");
+const u32 gMonShinyPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/shiny.gbapal.lz");
+const u8 gMonIcon_Kabutops[] = INCBIN_U8("graphics/pokemon/kabutops/icon.4bpp");
+const u8 gMonFootprint_Kabutops[] = INCBIN_U8("graphics/pokemon/kabutops/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/front.4bpp.lz");
+const u32 gMonPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/normal.gbapal.lz");
+const u32 gMonBackPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/back.4bpp.lz");
+const u32 gMonShinyPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/shiny.gbapal.lz");
+const u8 gMonIcon_Aerodactyl[] = INCBIN_U8("graphics/pokemon/aerodactyl/icon.4bpp");
+const u8 gMonFootprint_Aerodactyl[] = INCBIN_U8("graphics/pokemon/aerodactyl/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/front.4bpp.lz");
+const u32 gMonPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/normal.gbapal.lz");
+const u32 gMonBackPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/back.4bpp.lz");
+const u32 gMonShinyPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/shiny.gbapal.lz");
+const u8 gMonIcon_Snorlax[] = INCBIN_U8("graphics/pokemon/snorlax/icon.4bpp");
+const u8 gMonFootprint_Snorlax[] = INCBIN_U8("graphics/pokemon/snorlax/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/front.4bpp.lz");
+const u32 gMonPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/normal.gbapal.lz");
+const u32 gMonBackPic_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/back.4bpp.lz");
+const u32 gMonShinyPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/shiny.gbapal.lz");
+const u8 gMonIcon_Articuno[] = INCBIN_U8("graphics/pokemon/articuno/icon.4bpp");
+const u8 gMonFootprint_Articuno[] = INCBIN_U8("graphics/pokemon/articuno/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/front.4bpp.lz");
+const u32 gMonPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/normal.gbapal.lz");
+const u32 gMonBackPic_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/back.4bpp.lz");
+const u32 gMonShinyPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/shiny.gbapal.lz");
+const u8 gMonIcon_Zapdos[] = INCBIN_U8("graphics/pokemon/zapdos/icon.4bpp");
+const u8 gMonFootprint_Zapdos[] = INCBIN_U8("graphics/pokemon/zapdos/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/front.4bpp.lz");
+const u32 gMonPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/normal.gbapal.lz");
+const u32 gMonBackPic_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/back.4bpp.lz");
+const u32 gMonShinyPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/shiny.gbapal.lz");
+const u8 gMonIcon_Moltres[] = INCBIN_U8("graphics/pokemon/moltres/icon.4bpp");
+const u8 gMonFootprint_Moltres[] = INCBIN_U8("graphics/pokemon/moltres/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/front.4bpp.lz");
+const u32 gMonPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/normal.gbapal.lz");
+const u32 gMonBackPic_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/back.4bpp.lz");
+const u32 gMonShinyPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/shiny.gbapal.lz");
+const u8 gMonIcon_Dratini[] = INCBIN_U8("graphics/pokemon/dratini/icon.4bpp");
+const u8 gMonFootprint_Dratini[] = INCBIN_U8("graphics/pokemon/dratini/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/front.4bpp.lz");
+const u32 gMonPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/normal.gbapal.lz");
+const u32 gMonBackPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/back.4bpp.lz");
+const u32 gMonShinyPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/shiny.gbapal.lz");
+const u8 gMonIcon_Dragonair[] = INCBIN_U8("graphics/pokemon/dragonair/icon.4bpp");
+const u8 gMonFootprint_Dragonair[] = INCBIN_U8("graphics/pokemon/dragonair/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/front.4bpp.lz");
+const u32 gMonPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/normal.gbapal.lz");
+const u32 gMonBackPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/back.4bpp.lz");
+const u32 gMonShinyPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/shiny.gbapal.lz");
+const u8 gMonIcon_Dragonite[] = INCBIN_U8("graphics/pokemon/dragonite/icon.4bpp");
+const u8 gMonFootprint_Dragonite[] = INCBIN_U8("graphics/pokemon/dragonite/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/front.4bpp.lz");
+const u32 gMonPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/normal.gbapal.lz");
+const u32 gMonBackPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/back.4bpp.lz");
+const u32 gMonShinyPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/shiny.gbapal.lz");
+const u8 gMonIcon_Mewtwo[] = INCBIN_U8("graphics/pokemon/mewtwo/icon.4bpp");
+const u8 gMonFootprint_Mewtwo[] = INCBIN_U8("graphics/pokemon/mewtwo/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Mew[] = INCBIN_U32("graphics/pokemon/mew/front.4bpp.lz");
+const u32 gMonPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/normal.gbapal.lz");
+const u32 gMonBackPic_Mew[] = INCBIN_U32("graphics/pokemon/mew/back.4bpp.lz");
+const u32 gMonShinyPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/shiny.gbapal.lz");
+const u8 gMonIcon_Mew[] = INCBIN_U8("graphics/pokemon/mew/icon.4bpp");
+const u8 gMonFootprint_Mew[] = INCBIN_U8("graphics/pokemon/mew/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/front.4bpp.lz");
+const u32 gMonPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/normal.gbapal.lz");
+const u32 gMonBackPic_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/back.4bpp.lz");
+const u32 gMonShinyPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/shiny.gbapal.lz");
+const u8 gMonIcon_Chikorita[] = INCBIN_U8("graphics/pokemon/chikorita/icon.4bpp");
+const u8 gMonFootprint_Chikorita[] = INCBIN_U8("graphics/pokemon/chikorita/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/front.4bpp.lz");
+const u32 gMonPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/normal.gbapal.lz");
+const u32 gMonBackPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/back.4bpp.lz");
+const u32 gMonShinyPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/shiny.gbapal.lz");
+const u8 gMonIcon_Bayleef[] = INCBIN_U8("graphics/pokemon/bayleef/icon.4bpp");
+const u8 gMonFootprint_Bayleef[] = INCBIN_U8("graphics/pokemon/bayleef/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/front.4bpp.lz");
+const u32 gMonPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/normal.gbapal.lz");
+const u32 gMonBackPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/back.4bpp.lz");
+const u32 gMonShinyPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/shiny.gbapal.lz");
+const u8 gMonIcon_Meganium[] = INCBIN_U8("graphics/pokemon/meganium/icon.4bpp");
+const u8 gMonFootprint_Meganium[] = INCBIN_U8("graphics/pokemon/meganium/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/front.4bpp.lz");
+const u32 gMonPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/normal.gbapal.lz");
+const u32 gMonBackPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/back.4bpp.lz");
+const u32 gMonShinyPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/shiny.gbapal.lz");
+const u8 gMonIcon_Cyndaquil[] = INCBIN_U8("graphics/pokemon/cyndaquil/icon.4bpp");
+const u8 gMonFootprint_Cyndaquil[] = INCBIN_U8("graphics/pokemon/cyndaquil/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/front.4bpp.lz");
+const u32 gMonPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/normal.gbapal.lz");
+const u32 gMonBackPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/back.4bpp.lz");
+const u32 gMonShinyPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/shiny.gbapal.lz");
+const u8 gMonIcon_Quilava[] = INCBIN_U8("graphics/pokemon/quilava/icon.4bpp");
+const u8 gMonFootprint_Quilava[] = INCBIN_U8("graphics/pokemon/quilava/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/front.4bpp.lz");
+const u32 gMonPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/normal.gbapal.lz");
+const u32 gMonBackPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/back.4bpp.lz");
+const u32 gMonShinyPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/shiny.gbapal.lz");
+const u8 gMonIcon_Typhlosion[] = INCBIN_U8("graphics/pokemon/typhlosion/icon.4bpp");
+const u8 gMonFootprint_Typhlosion[] = INCBIN_U8("graphics/pokemon/typhlosion/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/front.4bpp.lz");
+const u32 gMonPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/normal.gbapal.lz");
+const u32 gMonBackPic_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/back.4bpp.lz");
+const u32 gMonShinyPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/shiny.gbapal.lz");
+const u8 gMonIcon_Totodile[] = INCBIN_U8("graphics/pokemon/totodile/icon.4bpp");
+const u8 gMonFootprint_Totodile[] = INCBIN_U8("graphics/pokemon/totodile/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/front.4bpp.lz");
+const u32 gMonPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/normal.gbapal.lz");
+const u32 gMonBackPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/back.4bpp.lz");
+const u32 gMonShinyPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/shiny.gbapal.lz");
+const u8 gMonIcon_Croconaw[] = INCBIN_U8("graphics/pokemon/croconaw/icon.4bpp");
+const u8 gMonFootprint_Croconaw[] = INCBIN_U8("graphics/pokemon/croconaw/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/front.4bpp.lz");
+const u32 gMonPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/normal.gbapal.lz");
+const u32 gMonBackPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/back.4bpp.lz");
+const u32 gMonShinyPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/shiny.gbapal.lz");
+const u8 gMonIcon_Feraligatr[] = INCBIN_U8("graphics/pokemon/feraligatr/icon.4bpp");
+const u8 gMonFootprint_Feraligatr[] = INCBIN_U8("graphics/pokemon/feraligatr/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/front.4bpp.lz");
+const u32 gMonPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/normal.gbapal.lz");
+const u32 gMonBackPic_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/back.4bpp.lz");
+const u32 gMonShinyPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/shiny.gbapal.lz");
+const u8 gMonIcon_Sentret[] = INCBIN_U8("graphics/pokemon/sentret/icon.4bpp");
+const u8 gMonFootprint_Sentret[] = INCBIN_U8("graphics/pokemon/sentret/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/front.4bpp.lz");
+const u32 gMonPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/normal.gbapal.lz");
+const u32 gMonBackPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/back.4bpp.lz");
+const u32 gMonShinyPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/shiny.gbapal.lz");
+const u8 gMonIcon_Furret[] = INCBIN_U8("graphics/pokemon/furret/icon.4bpp");
+const u8 gMonFootprint_Furret[] = INCBIN_U8("graphics/pokemon/furret/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/front.4bpp.lz");
+const u32 gMonPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/normal.gbapal.lz");
+const u32 gMonBackPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/back.4bpp.lz");
+const u32 gMonShinyPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/shiny.gbapal.lz");
+const u8 gMonIcon_Hoothoot[] = INCBIN_U8("graphics/pokemon/hoothoot/icon.4bpp");
+const u8 gMonFootprint_Hoothoot[] = INCBIN_U8("graphics/pokemon/hoothoot/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/front.4bpp.lz");
+const u32 gMonPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/normal.gbapal.lz");
+const u32 gMonBackPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/back.4bpp.lz");
+const u32 gMonShinyPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/shiny.gbapal.lz");
+const u8 gMonIcon_Noctowl[] = INCBIN_U8("graphics/pokemon/noctowl/icon.4bpp");
+const u8 gMonFootprint_Noctowl[] = INCBIN_U8("graphics/pokemon/noctowl/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/front.4bpp.lz");
+const u32 gMonPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/normal.gbapal.lz");
+const u32 gMonBackPic_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/back.4bpp.lz");
+const u32 gMonShinyPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/shiny.gbapal.lz");
+const u8 gMonIcon_Ledyba[] = INCBIN_U8("graphics/pokemon/ledyba/icon.4bpp");
+const u8 gMonFootprint_Ledyba[] = INCBIN_U8("graphics/pokemon/ledyba/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/front.4bpp.lz");
+const u32 gMonPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/normal.gbapal.lz");
+const u32 gMonBackPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/back.4bpp.lz");
+const u32 gMonShinyPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/shiny.gbapal.lz");
+const u8 gMonIcon_Ledian[] = INCBIN_U8("graphics/pokemon/ledian/icon.4bpp");
+const u8 gMonFootprint_Ledian[] = INCBIN_U8("graphics/pokemon/ledian/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/front.4bpp.lz");
+const u32 gMonPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/normal.gbapal.lz");
+const u32 gMonBackPic_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/back.4bpp.lz");
+const u32 gMonShinyPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/shiny.gbapal.lz");
+const u8 gMonIcon_Spinarak[] = INCBIN_U8("graphics/pokemon/spinarak/icon.4bpp");
+const u8 gMonFootprint_Spinarak[] = INCBIN_U8("graphics/pokemon/spinarak/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/front.4bpp.lz");
+const u32 gMonPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/normal.gbapal.lz");
+const u32 gMonBackPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/back.4bpp.lz");
+const u32 gMonShinyPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/shiny.gbapal.lz");
+const u8 gMonIcon_Ariados[] = INCBIN_U8("graphics/pokemon/ariados/icon.4bpp");
+const u8 gMonFootprint_Ariados[] = INCBIN_U8("graphics/pokemon/ariados/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/front.4bpp.lz");
+const u32 gMonPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/normal.gbapal.lz");
+const u32 gMonBackPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/back.4bpp.lz");
+const u32 gMonShinyPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/shiny.gbapal.lz");
+const u8 gMonIcon_Crobat[] = INCBIN_U8("graphics/pokemon/crobat/icon.4bpp");
+const u8 gMonFootprint_Crobat[] = INCBIN_U8("graphics/pokemon/crobat/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/front.4bpp.lz");
+const u32 gMonPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/normal.gbapal.lz");
+const u32 gMonBackPic_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/back.4bpp.lz");
+const u32 gMonShinyPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/shiny.gbapal.lz");
+const u8 gMonIcon_Chinchou[] = INCBIN_U8("graphics/pokemon/chinchou/icon.4bpp");
+const u8 gMonFootprint_Chinchou[] = INCBIN_U8("graphics/pokemon/chinchou/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/front.4bpp.lz");
+const u32 gMonPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/normal.gbapal.lz");
+const u32 gMonBackPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/back.4bpp.lz");
+const u32 gMonShinyPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/shiny.gbapal.lz");
+const u8 gMonIcon_Lanturn[] = INCBIN_U8("graphics/pokemon/lanturn/icon.4bpp");
+const u8 gMonFootprint_Lanturn[] = INCBIN_U8("graphics/pokemon/lanturn/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/front.4bpp.lz");
+const u32 gMonPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/normal.gbapal.lz");
+const u32 gMonBackPic_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/back.4bpp.lz");
+const u32 gMonShinyPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/shiny.gbapal.lz");
+const u8 gMonIcon_Pichu[] = INCBIN_U8("graphics/pokemon/pichu/icon.4bpp");
+const u8 gMonFootprint_Pichu[] = INCBIN_U8("graphics/pokemon/pichu/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/front.4bpp.lz");
+const u32 gMonPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/normal.gbapal.lz");
+const u32 gMonBackPic_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/back.4bpp.lz");
+const u32 gMonShinyPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/shiny.gbapal.lz");
+const u8 gMonIcon_Cleffa[] = INCBIN_U8("graphics/pokemon/cleffa/icon.4bpp");
+const u8 gMonFootprint_Cleffa[] = INCBIN_U8("graphics/pokemon/cleffa/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/front.4bpp.lz");
+const u32 gMonPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/normal.gbapal.lz");
+const u32 gMonBackPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/back.4bpp.lz");
+const u32 gMonShinyPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/shiny.gbapal.lz");
+const u8 gMonIcon_Igglybuff[] = INCBIN_U8("graphics/pokemon/igglybuff/icon.4bpp");
+const u8 gMonFootprint_Igglybuff[] = INCBIN_U8("graphics/pokemon/igglybuff/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/front.4bpp.lz");
+const u32 gMonPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/normal.gbapal.lz");
+const u32 gMonBackPic_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/back.4bpp.lz");
+const u32 gMonShinyPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/shiny.gbapal.lz");
+const u8 gMonIcon_Togepi[] = INCBIN_U8("graphics/pokemon/togepi/icon.4bpp");
+const u8 gMonFootprint_Togepi[] = INCBIN_U8("graphics/pokemon/togepi/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/front.4bpp.lz");
+const u32 gMonPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/normal.gbapal.lz");
+const u32 gMonBackPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/back.4bpp.lz");
+const u32 gMonShinyPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/shiny.gbapal.lz");
+const u8 gMonIcon_Togetic[] = INCBIN_U8("graphics/pokemon/togetic/icon.4bpp");
+const u8 gMonFootprint_Togetic[] = INCBIN_U8("graphics/pokemon/togetic/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Natu[] = INCBIN_U32("graphics/pokemon/natu/front.4bpp.lz");
+const u32 gMonPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/normal.gbapal.lz");
+const u32 gMonBackPic_Natu[] = INCBIN_U32("graphics/pokemon/natu/back.4bpp.lz");
+const u32 gMonShinyPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/shiny.gbapal.lz");
+const u8 gMonIcon_Natu[] = INCBIN_U8("graphics/pokemon/natu/icon.4bpp");
+const u8 gMonFootprint_Natu[] = INCBIN_U8("graphics/pokemon/natu/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/front.4bpp.lz");
+const u32 gMonPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/normal.gbapal.lz");
+const u32 gMonBackPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/back.4bpp.lz");
+const u32 gMonShinyPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/shiny.gbapal.lz");
+const u8 gMonIcon_Xatu[] = INCBIN_U8("graphics/pokemon/xatu/icon.4bpp");
+const u8 gMonFootprint_Xatu[] = INCBIN_U8("graphics/pokemon/xatu/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/front.4bpp.lz");
+const u32 gMonPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/normal.gbapal.lz");
+const u32 gMonBackPic_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/back.4bpp.lz");
+const u32 gMonShinyPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/shiny.gbapal.lz");
+const u8 gMonIcon_Mareep[] = INCBIN_U8("graphics/pokemon/mareep/icon.4bpp");
+const u8 gMonFootprint_Mareep[] = INCBIN_U8("graphics/pokemon/mareep/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/front.4bpp.lz");
+const u32 gMonPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/normal.gbapal.lz");
+const u32 gMonBackPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/back.4bpp.lz");
+const u32 gMonShinyPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/shiny.gbapal.lz");
+const u8 gMonIcon_Flaaffy[] = INCBIN_U8("graphics/pokemon/flaaffy/icon.4bpp");
+const u8 gMonFootprint_Flaaffy[] = INCBIN_U8("graphics/pokemon/flaaffy/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/front.4bpp.lz");
+const u32 gMonPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/normal.gbapal.lz");
+const u32 gMonBackPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/back.4bpp.lz");
+const u32 gMonShinyPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/shiny.gbapal.lz");
+const u8 gMonIcon_Ampharos[] = INCBIN_U8("graphics/pokemon/ampharos/icon.4bpp");
+const u8 gMonFootprint_Ampharos[] = INCBIN_U8("graphics/pokemon/ampharos/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/front.4bpp.lz");
+const u32 gMonPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/normal.gbapal.lz");
+const u32 gMonBackPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/back.4bpp.lz");
+const u32 gMonShinyPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/shiny.gbapal.lz");
+const u8 gMonIcon_Bellossom[] = INCBIN_U8("graphics/pokemon/bellossom/icon.4bpp");
+const u8 gMonFootprint_Bellossom[] = INCBIN_U8("graphics/pokemon/bellossom/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/front.4bpp.lz");
+const u32 gMonPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/normal.gbapal.lz");
+const u32 gMonBackPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/back.4bpp.lz");
+const u32 gMonShinyPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/shiny.gbapal.lz");
+const u8 gMonIcon_Marill[] = INCBIN_U8("graphics/pokemon/marill/icon.4bpp");
+const u8 gMonFootprint_Marill[] = INCBIN_U8("graphics/pokemon/marill/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/front.4bpp.lz");
+const u32 gMonPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/normal.gbapal.lz");
+const u32 gMonBackPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/back.4bpp.lz");
+const u32 gMonShinyPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/shiny.gbapal.lz");
+const u8 gMonIcon_Azumarill[] = INCBIN_U8("graphics/pokemon/azumarill/icon.4bpp");
+const u8 gMonFootprint_Azumarill[] = INCBIN_U8("graphics/pokemon/azumarill/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/front.4bpp.lz");
+const u32 gMonPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/normal.gbapal.lz");
+const u32 gMonBackPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/back.4bpp.lz");
+const u32 gMonShinyPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/shiny.gbapal.lz");
+const u8 gMonIcon_Sudowoodo[] = INCBIN_U8("graphics/pokemon/sudowoodo/icon.4bpp");
+const u8 gMonFootprint_Sudowoodo[] = INCBIN_U8("graphics/pokemon/sudowoodo/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/front.4bpp.lz");
+const u32 gMonPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/normal.gbapal.lz");
+const u32 gMonBackPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/back.4bpp.lz");
+const u32 gMonShinyPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/shiny.gbapal.lz");
+const u8 gMonIcon_Politoed[] = INCBIN_U8("graphics/pokemon/politoed/icon.4bpp");
+const u8 gMonFootprint_Politoed[] = INCBIN_U8("graphics/pokemon/politoed/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/front.4bpp.lz");
+const u32 gMonPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/normal.gbapal.lz");
+const u32 gMonBackPic_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/back.4bpp.lz");
+const u32 gMonShinyPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/shiny.gbapal.lz");
+const u8 gMonIcon_Hoppip[] = INCBIN_U8("graphics/pokemon/hoppip/icon.4bpp");
+const u8 gMonFootprint_Hoppip[] = INCBIN_U8("graphics/pokemon/hoppip/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/front.4bpp.lz");
+const u32 gMonPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/normal.gbapal.lz");
+const u32 gMonBackPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/back.4bpp.lz");
+const u32 gMonShinyPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/shiny.gbapal.lz");
+const u8 gMonIcon_Skiploom[] = INCBIN_U8("graphics/pokemon/skiploom/icon.4bpp");
+const u8 gMonFootprint_Skiploom[] = INCBIN_U8("graphics/pokemon/skiploom/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/front.4bpp.lz");
+const u32 gMonPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/normal.gbapal.lz");
+const u32 gMonBackPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/back.4bpp.lz");
+const u32 gMonShinyPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/shiny.gbapal.lz");
+const u8 gMonIcon_Jumpluff[] = INCBIN_U8("graphics/pokemon/jumpluff/icon.4bpp");
+const u8 gMonFootprint_Jumpluff[] = INCBIN_U8("graphics/pokemon/jumpluff/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/front.4bpp.lz");
+const u32 gMonPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/normal.gbapal.lz");
+const u32 gMonBackPic_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/back.4bpp.lz");
+const u32 gMonShinyPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/shiny.gbapal.lz");
+const u8 gMonIcon_Aipom[] = INCBIN_U8("graphics/pokemon/aipom/icon.4bpp");
+const u8 gMonFootprint_Aipom[] = INCBIN_U8("graphics/pokemon/aipom/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/front.4bpp.lz");
+const u32 gMonPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/normal.gbapal.lz");
+const u32 gMonBackPic_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/back.4bpp.lz");
+const u32 gMonShinyPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/shiny.gbapal.lz");
+const u8 gMonIcon_Sunkern[] = INCBIN_U8("graphics/pokemon/sunkern/icon.4bpp");
+const u8 gMonFootprint_Sunkern[] = INCBIN_U8("graphics/pokemon/sunkern/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/front.4bpp.lz");
+const u32 gMonPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/normal.gbapal.lz");
+const u32 gMonBackPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/back.4bpp.lz");
+const u32 gMonShinyPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/shiny.gbapal.lz");
+const u8 gMonIcon_Sunflora[] = INCBIN_U8("graphics/pokemon/sunflora/icon.4bpp");
+const u8 gMonFootprint_Sunflora[] = INCBIN_U8("graphics/pokemon/sunflora/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/front.4bpp.lz");
+const u32 gMonPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/normal.gbapal.lz");
+const u32 gMonBackPic_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/back.4bpp.lz");
+const u32 gMonShinyPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/shiny.gbapal.lz");
+const u8 gMonIcon_Yanma[] = INCBIN_U8("graphics/pokemon/yanma/icon.4bpp");
+const u8 gMonFootprint_Yanma[] = INCBIN_U8("graphics/pokemon/yanma/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/front.4bpp.lz");
+const u32 gMonPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/normal.gbapal.lz");
+const u32 gMonBackPic_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/back.4bpp.lz");
+const u32 gMonShinyPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/shiny.gbapal.lz");
+const u8 gMonIcon_Wooper[] = INCBIN_U8("graphics/pokemon/wooper/icon.4bpp");
+const u8 gMonFootprint_Wooper[] = INCBIN_U8("graphics/pokemon/wooper/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/front.4bpp.lz");
+const u32 gMonPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/normal.gbapal.lz");
+const u32 gMonBackPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/back.4bpp.lz");
+const u32 gMonShinyPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/shiny.gbapal.lz");
+const u8 gMonIcon_Quagsire[] = INCBIN_U8("graphics/pokemon/quagsire/icon.4bpp");
+const u8 gMonFootprint_Quagsire[] = INCBIN_U8("graphics/pokemon/quagsire/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/front.4bpp.lz");
+const u32 gMonPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/normal.gbapal.lz");
+const u32 gMonBackPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/back.4bpp.lz");
+const u32 gMonShinyPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/shiny.gbapal.lz");
+const u8 gMonIcon_Espeon[] = INCBIN_U8("graphics/pokemon/espeon/icon.4bpp");
+const u8 gMonFootprint_Espeon[] = INCBIN_U8("graphics/pokemon/espeon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/front.4bpp.lz");
+const u32 gMonPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/normal.gbapal.lz");
+const u32 gMonBackPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/back.4bpp.lz");
+const u32 gMonShinyPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/shiny.gbapal.lz");
+const u8 gMonIcon_Umbreon[] = INCBIN_U8("graphics/pokemon/umbreon/icon.4bpp");
+const u8 gMonFootprint_Umbreon[] = INCBIN_U8("graphics/pokemon/umbreon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/front.4bpp.lz");
+const u32 gMonPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/normal.gbapal.lz");
+const u32 gMonBackPic_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/back.4bpp.lz");
+const u32 gMonShinyPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/shiny.gbapal.lz");
+const u8 gMonIcon_Murkrow[] = INCBIN_U8("graphics/pokemon/murkrow/icon.4bpp");
+const u8 gMonFootprint_Murkrow[] = INCBIN_U8("graphics/pokemon/murkrow/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/front.4bpp.lz");
+const u32 gMonPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/normal.gbapal.lz");
+const u32 gMonBackPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/back.4bpp.lz");
+const u32 gMonShinyPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/shiny.gbapal.lz");
+const u8 gMonIcon_Slowking[] = INCBIN_U8("graphics/pokemon/slowking/icon.4bpp");
+const u8 gMonFootprint_Slowking[] = INCBIN_U8("graphics/pokemon/slowking/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/front.4bpp.lz");
+const u32 gMonPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/normal.gbapal.lz");
+const u32 gMonBackPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/back.4bpp.lz");
+const u32 gMonShinyPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/shiny.gbapal.lz");
+const u8 gMonIcon_Misdreavus[] = INCBIN_U8("graphics/pokemon/misdreavus/icon.4bpp");
+const u8 gMonFootprint_Misdreavus[] = INCBIN_U8("graphics/pokemon/misdreavus/footprint.1bpp");
+
+const u32 gMonStillFrontPic_UnownA[] = INCBIN_U32("graphics/pokemon/unown/front_a.4bpp.lz");
+const u32 gMonPalette_Unown[] = INCBIN_U32("graphics/pokemon/unown/normal.gbapal.lz");
+const u32 gMonBackPic_UnownA[] = INCBIN_U32("graphics/pokemon/unown/back_a.4bpp.lz");
+const u32 gMonShinyPalette_Unown[] = INCBIN_U32("graphics/pokemon/unown/shiny.gbapal.lz");
+const u8 gMonIcon_UnownA[] = INCBIN_U8("graphics/pokemon/unown/icon_a.4bpp");
+const u8 gMonFootprint_Unown[] = INCBIN_U8("graphics/pokemon/unown/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/front.4bpp.lz");
+const u32 gMonPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/normal.gbapal.lz");
+const u32 gMonBackPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/back.4bpp.lz");
+const u32 gMonShinyPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/shiny.gbapal.lz");
+const u8 gMonIcon_Wobbuffet[] = INCBIN_U8("graphics/pokemon/wobbuffet/icon.4bpp");
+const u8 gMonFootprint_Wobbuffet[] = INCBIN_U8("graphics/pokemon/wobbuffet/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/front.4bpp.lz");
+const u32 gMonPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/normal.gbapal.lz");
+const u32 gMonBackPic_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/back.4bpp.lz");
+const u32 gMonShinyPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/shiny.gbapal.lz");
+const u8 gMonIcon_Girafarig[] = INCBIN_U8("graphics/pokemon/girafarig/icon.4bpp");
+const u8 gMonFootprint_Girafarig[] = INCBIN_U8("graphics/pokemon/girafarig/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/front.4bpp.lz");
+const u32 gMonPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/normal.gbapal.lz");
+const u32 gMonBackPic_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/back.4bpp.lz");
+const u32 gMonShinyPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/shiny.gbapal.lz");
+const u8 gMonIcon_Pineco[] = INCBIN_U8("graphics/pokemon/pineco/icon.4bpp");
+const u8 gMonFootprint_Pineco[] = INCBIN_U8("graphics/pokemon/pineco/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/front.4bpp.lz");
+const u32 gMonPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/normal.gbapal.lz");
+const u32 gMonBackPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/back.4bpp.lz");
+const u32 gMonShinyPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/shiny.gbapal.lz");
+const u8 gMonIcon_Forretress[] = INCBIN_U8("graphics/pokemon/forretress/icon.4bpp");
+const u8 gMonFootprint_Forretress[] = INCBIN_U8("graphics/pokemon/forretress/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/front.4bpp.lz");
+const u32 gMonPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/normal.gbapal.lz");
+const u32 gMonBackPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/back.4bpp.lz");
+const u32 gMonShinyPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/shiny.gbapal.lz");
+const u8 gMonIcon_Dunsparce[] = INCBIN_U8("graphics/pokemon/dunsparce/icon.4bpp");
+const u8 gMonFootprint_Dunsparce[] = INCBIN_U8("graphics/pokemon/dunsparce/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/front.4bpp.lz");
+const u32 gMonPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/normal.gbapal.lz");
+const u32 gMonBackPic_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/back.4bpp.lz");
+const u32 gMonShinyPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/shiny.gbapal.lz");
+const u8 gMonIcon_Gligar[] = INCBIN_U8("graphics/pokemon/gligar/icon.4bpp");
+const u8 gMonFootprint_Gligar[] = INCBIN_U8("graphics/pokemon/gligar/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/front.4bpp.lz");
+const u32 gMonPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/normal.gbapal.lz");
+const u32 gMonBackPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/back.4bpp.lz");
+const u32 gMonShinyPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/shiny.gbapal.lz");
+const u8 gMonIcon_Steelix[] = INCBIN_U8("graphics/pokemon/steelix/icon.4bpp");
+const u8 gMonFootprint_Steelix[] = INCBIN_U8("graphics/pokemon/steelix/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/front.4bpp.lz");
+const u32 gMonPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/normal.gbapal.lz");
+const u32 gMonBackPic_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/back.4bpp.lz");
+const u32 gMonShinyPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/shiny.gbapal.lz");
+const u8 gMonIcon_Snubbull[] = INCBIN_U8("graphics/pokemon/snubbull/icon.4bpp");
+const u8 gMonFootprint_Snubbull[] = INCBIN_U8("graphics/pokemon/snubbull/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/front.4bpp.lz");
+const u32 gMonPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/normal.gbapal.lz");
+const u32 gMonBackPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/back.4bpp.lz");
+const u32 gMonShinyPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/shiny.gbapal.lz");
+const u8 gMonIcon_Granbull[] = INCBIN_U8("graphics/pokemon/granbull/icon.4bpp");
+const u8 gMonFootprint_Granbull[] = INCBIN_U8("graphics/pokemon/granbull/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/front.4bpp.lz");
+const u32 gMonPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/normal.gbapal.lz");
+const u32 gMonBackPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/back.4bpp.lz");
+const u32 gMonShinyPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/shiny.gbapal.lz");
+const u8 gMonIcon_Qwilfish[] = INCBIN_U8("graphics/pokemon/qwilfish/icon.4bpp");
+const u8 gMonFootprint_Qwilfish[] = INCBIN_U8("graphics/pokemon/qwilfish/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/front.4bpp.lz");
+const u32 gMonPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/normal.gbapal.lz");
+const u32 gMonBackPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/back.4bpp.lz");
+const u32 gMonShinyPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/shiny.gbapal.lz");
+const u8 gMonIcon_Scizor[] = INCBIN_U8("graphics/pokemon/scizor/icon.4bpp");
+const u8 gMonFootprint_Scizor[] = INCBIN_U8("graphics/pokemon/scizor/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/front.4bpp.lz");
+const u32 gMonPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/normal.gbapal.lz");
+const u32 gMonBackPic_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/back.4bpp.lz");
+const u32 gMonShinyPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/shiny.gbapal.lz");
+const u8 gMonIcon_Shuckle[] = INCBIN_U8("graphics/pokemon/shuckle/icon.4bpp");
+const u8 gMonFootprint_Shuckle[] = INCBIN_U8("graphics/pokemon/shuckle/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/front.4bpp.lz");
+const u32 gMonPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/normal.gbapal.lz");
+const u32 gMonBackPic_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/back.4bpp.lz");
+const u32 gMonShinyPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/shiny.gbapal.lz");
+const u8 gMonIcon_Heracross[] = INCBIN_U8("graphics/pokemon/heracross/icon.4bpp");
+const u8 gMonFootprint_Heracross[] = INCBIN_U8("graphics/pokemon/heracross/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/front.4bpp.lz");
+const u32 gMonPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/normal.gbapal.lz");
+const u32 gMonBackPic_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/back.4bpp.lz");
+const u32 gMonShinyPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/shiny.gbapal.lz");
+const u8 gMonIcon_Sneasel[] = INCBIN_U8("graphics/pokemon/sneasel/icon.4bpp");
+const u8 gMonFootprint_Sneasel[] = INCBIN_U8("graphics/pokemon/sneasel/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/front.4bpp.lz");
+const u32 gMonPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/normal.gbapal.lz");
+const u32 gMonBackPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/back.4bpp.lz");
+const u32 gMonShinyPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/shiny.gbapal.lz");
+const u8 gMonIcon_Teddiursa[] = INCBIN_U8("graphics/pokemon/teddiursa/icon.4bpp");
+const u8 gMonFootprint_Teddiursa[] = INCBIN_U8("graphics/pokemon/teddiursa/footprint.1bpp");
+const u32 gMonStillFrontPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/front.4bpp.lz");
+const u32 gMonPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/normal.gbapal.lz");
+const u32 gMonBackPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/back.4bpp.lz");
+const u32 gMonShinyPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/shiny.gbapal.lz");
+const u8 gMonIcon_Ursaring[] = INCBIN_U8("graphics/pokemon/ursaring/icon.4bpp");
+const u8 gMonFootprint_Ursaring[] = INCBIN_U8("graphics/pokemon/ursaring/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/front.4bpp.lz");
+const u32 gMonPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/normal.gbapal.lz");
+const u32 gMonBackPic_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/back.4bpp.lz");
+const u32 gMonShinyPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/shiny.gbapal.lz");
+const u8 gMonIcon_Slugma[] = INCBIN_U8("graphics/pokemon/slugma/icon.4bpp");
+const u8 gMonFootprint_Slugma[] = INCBIN_U8("graphics/pokemon/slugma/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/front.4bpp.lz");
+const u32 gMonPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/normal.gbapal.lz");
+const u32 gMonBackPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/back.4bpp.lz");
+const u32 gMonShinyPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/shiny.gbapal.lz");
+const u8 gMonIcon_Magcargo[] = INCBIN_U8("graphics/pokemon/magcargo/icon.4bpp");
+const u8 gMonFootprint_Magcargo[] = INCBIN_U8("graphics/pokemon/magcargo/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/front.4bpp.lz");
+const u32 gMonPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/normal.gbapal.lz");
+const u32 gMonBackPic_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/back.4bpp.lz");
+const u32 gMonShinyPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/shiny.gbapal.lz");
+const u8 gMonIcon_Swinub[] = INCBIN_U8("graphics/pokemon/swinub/icon.4bpp");
+const u8 gMonFootprint_Swinub[] = INCBIN_U8("graphics/pokemon/swinub/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/front.4bpp.lz");
+const u32 gMonPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/normal.gbapal.lz");
+const u32 gMonBackPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/back.4bpp.lz");
+const u32 gMonShinyPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/shiny.gbapal.lz");
+const u8 gMonIcon_Piloswine[] = INCBIN_U8("graphics/pokemon/piloswine/icon.4bpp");
+const u8 gMonFootprint_Piloswine[] = INCBIN_U8("graphics/pokemon/piloswine/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/front.4bpp.lz");
+const u32 gMonPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/normal.gbapal.lz");
+const u32 gMonBackPic_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/back.4bpp.lz");
+const u32 gMonShinyPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/shiny.gbapal.lz");
+const u8 gMonIcon_Corsola[] = INCBIN_U8("graphics/pokemon/corsola/icon.4bpp");
+const u8 gMonFootprint_Corsola[] = INCBIN_U8("graphics/pokemon/corsola/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/front.4bpp.lz");
+const u32 gMonPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/normal.gbapal.lz");
+const u32 gMonBackPic_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/back.4bpp.lz");
+const u32 gMonShinyPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/shiny.gbapal.lz");
+const u8 gMonIcon_Remoraid[] = INCBIN_U8("graphics/pokemon/remoraid/icon.4bpp");
+const u8 gMonFootprint_Remoraid[] = INCBIN_U8("graphics/pokemon/remoraid/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/front.4bpp.lz");
+const u32 gMonPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/normal.gbapal.lz");
+const u32 gMonBackPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/back.4bpp.lz");
+const u32 gMonShinyPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/shiny.gbapal.lz");
+const u8 gMonIcon_Octillery[] = INCBIN_U8("graphics/pokemon/octillery/icon.4bpp");
+const u8 gMonFootprint_Octillery[] = INCBIN_U8("graphics/pokemon/octillery/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/front.4bpp.lz");
+const u32 gMonPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/normal.gbapal.lz");
+const u32 gMonBackPic_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/back.4bpp.lz");
+const u32 gMonShinyPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/shiny.gbapal.lz");
+const u8 gMonIcon_Delibird[] = INCBIN_U8("graphics/pokemon/delibird/icon.4bpp");
+const u8 gMonFootprint_Delibird[] = INCBIN_U8("graphics/pokemon/delibird/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/front.4bpp.lz");
+const u32 gMonPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/normal.gbapal.lz");
+const u32 gMonBackPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/back.4bpp.lz");
+const u32 gMonShinyPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/shiny.gbapal.lz");
+const u8 gMonIcon_Mantine[] = INCBIN_U8("graphics/pokemon/mantine/icon.4bpp");
+const u8 gMonFootprint_Mantine[] = INCBIN_U8("graphics/pokemon/mantine/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/front.4bpp.lz");
+const u32 gMonPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/normal.gbapal.lz");
+const u32 gMonBackPic_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/back.4bpp.lz");
+const u32 gMonShinyPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/shiny.gbapal.lz");
+const u8 gMonIcon_Skarmory[] = INCBIN_U8("graphics/pokemon/skarmory/icon.4bpp");
+const u8 gMonFootprint_Skarmory[] = INCBIN_U8("graphics/pokemon/skarmory/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/front.4bpp.lz");
+const u32 gMonPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/normal.gbapal.lz");
+const u32 gMonBackPic_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/back.4bpp.lz");
+const u32 gMonShinyPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/shiny.gbapal.lz");
+const u8 gMonIcon_Houndour[] = INCBIN_U8("graphics/pokemon/houndour/icon.4bpp");
+const u8 gMonFootprint_Houndour[] = INCBIN_U8("graphics/pokemon/houndour/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/front.4bpp.lz");
+const u32 gMonPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/normal.gbapal.lz");
+const u32 gMonBackPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/back.4bpp.lz");
+const u32 gMonShinyPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/shiny.gbapal.lz");
+const u8 gMonIcon_Houndoom[] = INCBIN_U8("graphics/pokemon/houndoom/icon.4bpp");
+const u8 gMonFootprint_Houndoom[] = INCBIN_U8("graphics/pokemon/houndoom/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/front.4bpp.lz");
+const u32 gMonPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/normal.gbapal.lz");
+const u32 gMonBackPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/back.4bpp.lz");
+const u32 gMonShinyPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/shiny.gbapal.lz");
+const u8 gMonIcon_Kingdra[] = INCBIN_U8("graphics/pokemon/kingdra/icon.4bpp");
+const u8 gMonFootprint_Kingdra[] = INCBIN_U8("graphics/pokemon/kingdra/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/front.4bpp.lz");
+const u32 gMonPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/normal.gbapal.lz");
+const u32 gMonBackPic_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/back.4bpp.lz");
+const u32 gMonShinyPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/shiny.gbapal.lz");
+const u8 gMonIcon_Phanpy[] = INCBIN_U8("graphics/pokemon/phanpy/icon.4bpp");
+const u8 gMonFootprint_Phanpy[] = INCBIN_U8("graphics/pokemon/phanpy/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/front.4bpp.lz");
+const u32 gMonPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/normal.gbapal.lz");
+const u32 gMonBackPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/back.4bpp.lz");
+const u32 gMonShinyPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/shiny.gbapal.lz");
+const u8 gMonIcon_Donphan[] = INCBIN_U8("graphics/pokemon/donphan/icon.4bpp");
+const u8 gMonFootprint_Donphan[] = INCBIN_U8("graphics/pokemon/donphan/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/front.4bpp.lz");
+const u32 gMonPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/normal.gbapal.lz");
+const u32 gMonBackPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/back.4bpp.lz");
+const u32 gMonShinyPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/shiny.gbapal.lz");
+const u8 gMonIcon_Porygon2[] = INCBIN_U8("graphics/pokemon/porygon2/icon.4bpp");
+const u8 gMonFootprint_Porygon2[] = INCBIN_U8("graphics/pokemon/porygon2/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/front.4bpp.lz");
+const u32 gMonPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/normal.gbapal.lz");
+const u32 gMonBackPic_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/back.4bpp.lz");
+const u32 gMonShinyPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/shiny.gbapal.lz");
+const u8 gMonIcon_Stantler[] = INCBIN_U8("graphics/pokemon/stantler/icon.4bpp");
+const u8 gMonFootprint_Stantler[] = INCBIN_U8("graphics/pokemon/stantler/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/front.4bpp.lz");
+const u32 gMonPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/normal.gbapal.lz");
+const u32 gMonBackPic_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/back.4bpp.lz");
+const u32 gMonShinyPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/shiny.gbapal.lz");
+const u8 gMonIcon_Smeargle[] = INCBIN_U8("graphics/pokemon/smeargle/icon.4bpp");
+const u8 gMonFootprint_Smeargle[] = INCBIN_U8("graphics/pokemon/smeargle/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/front.4bpp.lz");
+const u32 gMonPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/normal.gbapal.lz");
+const u32 gMonBackPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/back.4bpp.lz");
+const u32 gMonShinyPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/shiny.gbapal.lz");
+const u8 gMonIcon_Tyrogue[] = INCBIN_U8("graphics/pokemon/tyrogue/icon.4bpp");
+const u8 gMonFootprint_Tyrogue[] = INCBIN_U8("graphics/pokemon/tyrogue/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/front.4bpp.lz");
+const u32 gMonPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/normal.gbapal.lz");
+const u32 gMonBackPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/back.4bpp.lz");
+const u32 gMonShinyPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/shiny.gbapal.lz");
+const u8 gMonIcon_Hitmontop[] = INCBIN_U8("graphics/pokemon/hitmontop/icon.4bpp");
+const u8 gMonFootprint_Hitmontop[] = INCBIN_U8("graphics/pokemon/hitmontop/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/front.4bpp.lz");
+const u32 gMonPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/normal.gbapal.lz");
+const u32 gMonBackPic_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/back.4bpp.lz");
+const u32 gMonShinyPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/shiny.gbapal.lz");
+const u8 gMonIcon_Smoochum[] = INCBIN_U8("graphics/pokemon/smoochum/icon.4bpp");
+const u8 gMonFootprint_Smoochum[] = INCBIN_U8("graphics/pokemon/smoochum/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/front.4bpp.lz");
+const u32 gMonPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/normal.gbapal.lz");
+const u32 gMonBackPic_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/back.4bpp.lz");
+const u32 gMonShinyPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/shiny.gbapal.lz");
+const u8 gMonIcon_Elekid[] = INCBIN_U8("graphics/pokemon/elekid/icon.4bpp");
+const u8 gMonFootprint_Elekid[] = INCBIN_U8("graphics/pokemon/elekid/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Magby[] = INCBIN_U32("graphics/pokemon/magby/front.4bpp.lz");
+const u32 gMonPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/normal.gbapal.lz");
+const u32 gMonBackPic_Magby[] = INCBIN_U32("graphics/pokemon/magby/back.4bpp.lz");
+const u32 gMonShinyPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/shiny.gbapal.lz");
+const u8 gMonIcon_Magby[] = INCBIN_U8("graphics/pokemon/magby/icon.4bpp");
+const u8 gMonFootprint_Magby[] = INCBIN_U8("graphics/pokemon/magby/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/front.4bpp.lz");
+const u32 gMonPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/normal.gbapal.lz");
+const u32 gMonBackPic_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/back.4bpp.lz");
+const u32 gMonShinyPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/shiny.gbapal.lz");
+const u8 gMonIcon_Miltank[] = INCBIN_U8("graphics/pokemon/miltank/icon.4bpp");
+const u8 gMonFootprint_Miltank[] = INCBIN_U8("graphics/pokemon/miltank/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/front.4bpp.lz");
+const u32 gMonPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/normal.gbapal.lz");
+const u32 gMonBackPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/back.4bpp.lz");
+const u32 gMonShinyPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/shiny.gbapal.lz");
+const u8 gMonIcon_Blissey[] = INCBIN_U8("graphics/pokemon/blissey/icon.4bpp");
+const u8 gMonFootprint_Blissey[] = INCBIN_U8("graphics/pokemon/blissey/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/front.4bpp.lz");
+const u32 gMonPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/normal.gbapal.lz");
+const u32 gMonBackPic_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/back.4bpp.lz");
+const u32 gMonShinyPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/shiny.gbapal.lz");
+const u8 gMonIcon_Raikou[] = INCBIN_U8("graphics/pokemon/raikou/icon.4bpp");
+const u8 gMonFootprint_Raikou[] = INCBIN_U8("graphics/pokemon/raikou/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Entei[] = INCBIN_U32("graphics/pokemon/entei/front.4bpp.lz");
+const u32 gMonPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/normal.gbapal.lz");
+const u32 gMonBackPic_Entei[] = INCBIN_U32("graphics/pokemon/entei/back.4bpp.lz");
+const u32 gMonShinyPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/shiny.gbapal.lz");
+const u8 gMonIcon_Entei[] = INCBIN_U8("graphics/pokemon/entei/icon.4bpp");
+const u8 gMonFootprint_Entei[] = INCBIN_U8("graphics/pokemon/entei/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/front.4bpp.lz");
+const u32 gMonPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/normal.gbapal.lz");
+const u32 gMonBackPic_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/back.4bpp.lz");
+const u32 gMonShinyPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/shiny.gbapal.lz");
+const u8 gMonIcon_Suicune[] = INCBIN_U8("graphics/pokemon/suicune/icon.4bpp");
+const u8 gMonFootprint_Suicune[] = INCBIN_U8("graphics/pokemon/suicune/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/front.4bpp.lz");
+const u32 gMonPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/normal.gbapal.lz");
+const u32 gMonBackPic_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/back.4bpp.lz");
+const u32 gMonShinyPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/shiny.gbapal.lz");
+const u8 gMonIcon_Larvitar[] = INCBIN_U8("graphics/pokemon/larvitar/icon.4bpp");
+const u8 gMonFootprint_Larvitar[] = INCBIN_U8("graphics/pokemon/larvitar/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/front.4bpp.lz");
+const u32 gMonPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/normal.gbapal.lz");
+const u32 gMonBackPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/back.4bpp.lz");
+const u32 gMonShinyPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/shiny.gbapal.lz");
+const u8 gMonIcon_Pupitar[] = INCBIN_U8("graphics/pokemon/pupitar/icon.4bpp");
+const u8 gMonFootprint_Pupitar[] = INCBIN_U8("graphics/pokemon/pupitar/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/front.4bpp.lz");
+const u32 gMonPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/normal.gbapal.lz");
+const u32 gMonBackPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/back.4bpp.lz");
+const u32 gMonShinyPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/shiny.gbapal.lz");
+const u8 gMonIcon_Tyranitar[] = INCBIN_U8("graphics/pokemon/tyranitar/icon.4bpp");
+const u8 gMonFootprint_Tyranitar[] = INCBIN_U8("graphics/pokemon/tyranitar/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/front.4bpp.lz");
+const u32 gMonPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/normal.gbapal.lz");
+const u32 gMonBackPic_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/back.4bpp.lz");
+const u32 gMonShinyPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/shiny.gbapal.lz");
+const u8 gMonIcon_Lugia[] = INCBIN_U8("graphics/pokemon/lugia/icon.4bpp");
+const u8 gMonFootprint_Lugia[] = INCBIN_U8("graphics/pokemon/lugia/footprint.1bpp");
+
+const u32 gMonStillFrontPic_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/front.4bpp.lz");
+const u32 gMonPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/normal.gbapal.lz");
+const u32 gMonBackPic_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/back.4bpp.lz");
+const u32 gMonShinyPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/shiny.gbapal.lz");
+const u8 gMonIcon_HoOh[] = INCBIN_U8("graphics/pokemon/ho_oh/icon.4bpp");
+const u8 gMonFootprint_HoOh[] = INCBIN_U8("graphics/pokemon/ho_oh/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/front.4bpp.lz");
+const u32 gMonPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/normal.gbapal.lz");
+const u32 gMonBackPic_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/back.4bpp.lz");
+const u32 gMonShinyPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/shiny.gbapal.lz");
+const u8 gMonIcon_Celebi[] = INCBIN_U8("graphics/pokemon/celebi/icon.4bpp");
+const u8 gMonFootprint_Celebi[] = INCBIN_U8("graphics/pokemon/celebi/footprint.1bpp");
+
+const u32 gMonStillFrontPic_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/double_question_mark/front.4bpp.lz");
+const u32 gMonPalette_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/double_question_mark/normal.gbapal.lz");
+const u32 gMonBackPic_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/double_question_mark/back.4bpp.lz");
+const u32 gMonShinyPalette_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/double_question_mark/shiny.gbapal.lz");
+
+const u32 gMonStillFrontPic_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/front.4bpp.lz");
+const u32 gMonPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/normal.gbapal.lz");
+const u32 gMonBackPic_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/back.4bpp.lz");
+const u32 gMonShinyPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/shiny.gbapal.lz");
+const u8 gMonIcon_Treecko[] = INCBIN_U8("graphics/pokemon/treecko/icon.4bpp");
+const u8 gMonFootprint_Treecko[] = INCBIN_U8("graphics/pokemon/treecko/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/front.4bpp.lz");
+const u32 gMonPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/normal.gbapal.lz");
+const u32 gMonBackPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/back.4bpp.lz");
+const u32 gMonShinyPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/shiny.gbapal.lz");
+const u8 gMonIcon_Grovyle[] = INCBIN_U8("graphics/pokemon/grovyle/icon.4bpp");
+const u8 gMonFootprint_Grovyle[] = INCBIN_U8("graphics/pokemon/grovyle/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/front.4bpp.lz");
+const u32 gMonPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/normal.gbapal.lz");
+const u32 gMonBackPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/back.4bpp.lz");
+const u32 gMonShinyPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/shiny.gbapal.lz");
+const u8 gMonIcon_Sceptile[] = INCBIN_U8("graphics/pokemon/sceptile/icon.4bpp");
+const u8 gMonFootprint_Sceptile[] = INCBIN_U8("graphics/pokemon/sceptile/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/front.4bpp.lz");
+const u32 gMonPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/normal.gbapal.lz");
+const u32 gMonBackPic_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/back.4bpp.lz");
+const u32 gMonShinyPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/shiny.gbapal.lz");
+const u8 gMonIcon_Torchic[] = INCBIN_U8("graphics/pokemon/torchic/icon.4bpp");
+const u8 gMonFootprint_Torchic[] = INCBIN_U8("graphics/pokemon/torchic/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/front.4bpp.lz");
+const u32 gMonPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/normal.gbapal.lz");
+const u32 gMonBackPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/back.4bpp.lz");
+const u32 gMonShinyPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/shiny.gbapal.lz");
+const u8 gMonIcon_Combusken[] = INCBIN_U8("graphics/pokemon/combusken/icon.4bpp");
+const u8 gMonFootprint_Combusken[] = INCBIN_U8("graphics/pokemon/combusken/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/front.4bpp.lz");
+const u32 gMonPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/normal.gbapal.lz");
+const u32 gMonBackPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/back.4bpp.lz");
+const u32 gMonShinyPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/shiny.gbapal.lz");
+const u8 gMonIcon_Blaziken[] = INCBIN_U8("graphics/pokemon/blaziken/icon.4bpp");
+const u8 gMonFootprint_Blaziken[] = INCBIN_U8("graphics/pokemon/blaziken/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/front.4bpp.lz");
+const u32 gMonPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/normal.gbapal.lz");
+const u32 gMonBackPic_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/back.4bpp.lz");
+const u32 gMonShinyPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/shiny.gbapal.lz");
+const u8 gMonIcon_Mudkip[] = INCBIN_U8("graphics/pokemon/mudkip/icon.4bpp");
+const u8 gMonFootprint_Mudkip[] = INCBIN_U8("graphics/pokemon/mudkip/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/front.4bpp.lz");
+const u32 gMonPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/normal.gbapal.lz");
+const u32 gMonBackPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/back.4bpp.lz");
+const u32 gMonShinyPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/shiny.gbapal.lz");
+const u8 gMonIcon_Marshtomp[] = INCBIN_U8("graphics/pokemon/marshtomp/icon.4bpp");
+const u8 gMonFootprint_Marshtomp[] = INCBIN_U8("graphics/pokemon/marshtomp/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/front.4bpp.lz");
+const u32 gMonPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/normal.gbapal.lz");
+const u32 gMonBackPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/back.4bpp.lz");
+const u32 gMonShinyPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/shiny.gbapal.lz");
+const u8 gMonIcon_Swampert[] = INCBIN_U8("graphics/pokemon/swampert/icon.4bpp");
+const u8 gMonFootprint_Swampert[] = INCBIN_U8("graphics/pokemon/swampert/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/front.4bpp.lz");
+const u32 gMonPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/normal.gbapal.lz");
+const u32 gMonBackPic_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/back.4bpp.lz");
+const u32 gMonShinyPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/shiny.gbapal.lz");
+const u8 gMonIcon_Poochyena[] = INCBIN_U8("graphics/pokemon/poochyena/icon.4bpp");
+const u8 gMonFootprint_Poochyena[] = INCBIN_U8("graphics/pokemon/poochyena/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/front.4bpp.lz");
+const u32 gMonPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/normal.gbapal.lz");
+const u32 gMonBackPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/back.4bpp.lz");
+const u32 gMonShinyPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/shiny.gbapal.lz");
+const u8 gMonIcon_Mightyena[] = INCBIN_U8("graphics/pokemon/mightyena/icon.4bpp");
+const u8 gMonFootprint_Mightyena[] = INCBIN_U8("graphics/pokemon/mightyena/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/front.4bpp.lz");
+const u32 gMonPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/normal.gbapal.lz");
+const u32 gMonBackPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/back.4bpp.lz");
+const u32 gMonShinyPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/shiny.gbapal.lz");
+const u8 gMonIcon_Zigzagoon[] = INCBIN_U8("graphics/pokemon/zigzagoon/icon.4bpp");
+const u8 gMonFootprint_Zigzagoon[] = INCBIN_U8("graphics/pokemon/zigzagoon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/front.4bpp.lz");
+const u32 gMonPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/normal.gbapal.lz");
+const u32 gMonBackPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/back.4bpp.lz");
+const u32 gMonShinyPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/shiny.gbapal.lz");
+const u8 gMonIcon_Linoone[] = INCBIN_U8("graphics/pokemon/linoone/icon.4bpp");
+const u8 gMonFootprint_Linoone[] = INCBIN_U8("graphics/pokemon/linoone/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/front.4bpp.lz");
+const u32 gMonPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/normal.gbapal.lz");
+const u32 gMonBackPic_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/back.4bpp.lz");
+const u32 gMonShinyPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/shiny.gbapal.lz");
+const u8 gMonIcon_Wurmple[] = INCBIN_U8("graphics/pokemon/wurmple/icon.4bpp");
+const u8 gMonFootprint_Wurmple[] = INCBIN_U8("graphics/pokemon/wurmple/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/front.4bpp.lz");
+const u32 gMonPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/normal.gbapal.lz");
+const u32 gMonBackPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/back.4bpp.lz");
+const u32 gMonShinyPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/shiny.gbapal.lz");
+const u8 gMonIcon_Silcoon[] = INCBIN_U8("graphics/pokemon/silcoon/icon.4bpp");
+const u8 gMonFootprint_Silcoon[] = INCBIN_U8("graphics/pokemon/silcoon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/front.4bpp.lz");
+const u32 gMonPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/normal.gbapal.lz");
+const u32 gMonBackPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/back.4bpp.lz");
+const u32 gMonShinyPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/shiny.gbapal.lz");
+const u8 gMonIcon_Beautifly[] = INCBIN_U8("graphics/pokemon/beautifly/icon.4bpp");
+const u8 gMonFootprint_Beautifly[] = INCBIN_U8("graphics/pokemon/beautifly/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/front.4bpp.lz");
+const u32 gMonPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/normal.gbapal.lz");
+const u32 gMonBackPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/back.4bpp.lz");
+const u32 gMonShinyPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/shiny.gbapal.lz");
+const u8 gMonIcon_Cascoon[] = INCBIN_U8("graphics/pokemon/cascoon/icon.4bpp");
+const u8 gMonFootprint_Cascoon[] = INCBIN_U8("graphics/pokemon/cascoon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/front.4bpp.lz");
+const u32 gMonPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/normal.gbapal.lz");
+const u32 gMonBackPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/back.4bpp.lz");
+const u32 gMonShinyPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/shiny.gbapal.lz");
+const u8 gMonIcon_Dustox[] = INCBIN_U8("graphics/pokemon/dustox/icon.4bpp");
+const u8 gMonFootprint_Dustox[] = INCBIN_U8("graphics/pokemon/dustox/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/front.4bpp.lz");
+const u32 gMonPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/normal.gbapal.lz");
+const u32 gMonBackPic_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/back.4bpp.lz");
+const u32 gMonShinyPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/shiny.gbapal.lz");
+const u8 gMonIcon_Lotad[] = INCBIN_U8("graphics/pokemon/lotad/icon.4bpp");
+const u8 gMonFootprint_Lotad[] = INCBIN_U8("graphics/pokemon/lotad/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/front.4bpp.lz");
+const u32 gMonPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/normal.gbapal.lz");
+const u32 gMonBackPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/back.4bpp.lz");
+const u32 gMonShinyPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/shiny.gbapal.lz");
+const u8 gMonIcon_Lombre[] = INCBIN_U8("graphics/pokemon/lombre/icon.4bpp");
+const u8 gMonFootprint_Lombre[] = INCBIN_U8("graphics/pokemon/lombre/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/front.4bpp.lz");
+const u32 gMonPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/normal.gbapal.lz");
+const u32 gMonBackPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/back.4bpp.lz");
+const u32 gMonShinyPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/shiny.gbapal.lz");
+const u8 gMonIcon_Ludicolo[] = INCBIN_U8("graphics/pokemon/ludicolo/icon.4bpp");
+const u8 gMonFootprint_Ludicolo[] = INCBIN_U8("graphics/pokemon/ludicolo/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/front.4bpp.lz");
+const u32 gMonPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/normal.gbapal.lz");
+const u32 gMonBackPic_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/back.4bpp.lz");
+const u32 gMonShinyPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/shiny.gbapal.lz");
+const u8 gMonIcon_Seedot[] = INCBIN_U8("graphics/pokemon/seedot/icon.4bpp");
+const u8 gMonFootprint_Seedot[] = INCBIN_U8("graphics/pokemon/seedot/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/front.4bpp.lz");
+const u32 gMonPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/normal.gbapal.lz");
+const u32 gMonBackPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/back.4bpp.lz");
+const u32 gMonShinyPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/shiny.gbapal.lz");
+const u8 gMonIcon_Nuzleaf[] = INCBIN_U8("graphics/pokemon/nuzleaf/icon.4bpp");
+const u8 gMonFootprint_Nuzleaf[] = INCBIN_U8("graphics/pokemon/nuzleaf/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/front.4bpp.lz");
+const u32 gMonPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/normal.gbapal.lz");
+const u32 gMonBackPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/back.4bpp.lz");
+const u32 gMonShinyPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/shiny.gbapal.lz");
+const u8 gMonIcon_Shiftry[] = INCBIN_U8("graphics/pokemon/shiftry/icon.4bpp");
+const u8 gMonFootprint_Shiftry[] = INCBIN_U8("graphics/pokemon/shiftry/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/front.4bpp.lz");
+const u32 gMonPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/normal.gbapal.lz");
+const u32 gMonBackPic_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/back.4bpp.lz");
+const u32 gMonShinyPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/shiny.gbapal.lz");
+const u8 gMonIcon_Nincada[] = INCBIN_U8("graphics/pokemon/nincada/icon.4bpp");
+const u8 gMonFootprint_Nincada[] = INCBIN_U8("graphics/pokemon/nincada/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/front.4bpp.lz");
+const u32 gMonPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/normal.gbapal.lz");
+const u32 gMonBackPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/back.4bpp.lz");
+const u32 gMonShinyPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/shiny.gbapal.lz");
+const u8 gMonIcon_Ninjask[] = INCBIN_U8("graphics/pokemon/ninjask/icon.4bpp");
+const u8 gMonFootprint_Ninjask[] = INCBIN_U8("graphics/pokemon/ninjask/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/front.4bpp.lz");
+const u32 gMonPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/normal.gbapal.lz");
+const u32 gMonBackPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/back.4bpp.lz");
+const u32 gMonShinyPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/shiny.gbapal.lz");
+const u8 gMonIcon_Shedinja[] = INCBIN_U8("graphics/pokemon/shedinja/icon.4bpp");
+const u8 gMonFootprint_Shedinja[] = INCBIN_U8("graphics/pokemon/shedinja/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/front.4bpp.lz");
+const u32 gMonPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/normal.gbapal.lz");
+const u32 gMonBackPic_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/back.4bpp.lz");
+const u32 gMonShinyPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/shiny.gbapal.lz");
+const u8 gMonIcon_Taillow[] = INCBIN_U8("graphics/pokemon/taillow/icon.4bpp");
+const u8 gMonFootprint_Taillow[] = INCBIN_U8("graphics/pokemon/taillow/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/front.4bpp.lz");
+const u32 gMonPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/normal.gbapal.lz");
+const u32 gMonBackPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/back.4bpp.lz");
+const u32 gMonShinyPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/shiny.gbapal.lz");
+const u8 gMonIcon_Swellow[] = INCBIN_U8("graphics/pokemon/swellow/icon.4bpp");
+const u8 gMonFootprint_Swellow[] = INCBIN_U8("graphics/pokemon/swellow/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/front.4bpp.lz");
+const u32 gMonPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/normal.gbapal.lz");
+const u32 gMonBackPic_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/back.4bpp.lz");
+const u32 gMonShinyPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/shiny.gbapal.lz");
+const u8 gMonIcon_Shroomish[] = INCBIN_U8("graphics/pokemon/shroomish/icon.4bpp");
+const u8 gMonFootprint_Shroomish[] = INCBIN_U8("graphics/pokemon/shroomish/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/front.4bpp.lz");
+const u32 gMonPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/normal.gbapal.lz");
+const u32 gMonBackPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/back.4bpp.lz");
+const u32 gMonShinyPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/shiny.gbapal.lz");
+const u8 gMonIcon_Breloom[] = INCBIN_U8("graphics/pokemon/breloom/icon.4bpp");
+const u8 gMonFootprint_Breloom[] = INCBIN_U8("graphics/pokemon/breloom/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/front.4bpp.lz");
+const u32 gMonPalette_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/normal.gbapal.lz");
+const u32 gMonBackPic_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/back.4bpp.lz");
+const u32 gMonShinyPalette_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/shiny.gbapal.lz");
+const u8 gMonIcon_Spinda[] = INCBIN_U8("graphics/pokemon/spinda/icon.4bpp");
+const u8 gMonFootprint_Spinda[] = INCBIN_U8("graphics/pokemon/spinda/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/front.4bpp.lz");
+const u32 gMonPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/normal.gbapal.lz");
+const u32 gMonBackPic_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/back.4bpp.lz");
+const u32 gMonShinyPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/shiny.gbapal.lz");
+const u8 gMonIcon_Wingull[] = INCBIN_U8("graphics/pokemon/wingull/icon.4bpp");
+const u8 gMonFootprint_Wingull[] = INCBIN_U8("graphics/pokemon/wingull/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/front.4bpp.lz");
+const u32 gMonPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/normal.gbapal.lz");
+const u32 gMonBackPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/back.4bpp.lz");
+const u32 gMonShinyPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/shiny.gbapal.lz");
+const u8 gMonIcon_Pelipper[] = INCBIN_U8("graphics/pokemon/pelipper/icon.4bpp");
+const u8 gMonFootprint_Pelipper[] = INCBIN_U8("graphics/pokemon/pelipper/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/front.4bpp.lz");
+const u32 gMonPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/normal.gbapal.lz");
+const u32 gMonBackPic_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/back.4bpp.lz");
+const u32 gMonShinyPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/shiny.gbapal.lz");
+const u8 gMonIcon_Surskit[] = INCBIN_U8("graphics/pokemon/surskit/icon.4bpp");
+const u8 gMonFootprint_Surskit[] = INCBIN_U8("graphics/pokemon/surskit/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/front.4bpp.lz");
+const u32 gMonPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/normal.gbapal.lz");
+const u32 gMonBackPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/back.4bpp.lz");
+const u32 gMonShinyPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/shiny.gbapal.lz");
+const u8 gMonIcon_Masquerain[] = INCBIN_U8("graphics/pokemon/masquerain/icon.4bpp");
+const u8 gMonFootprint_Masquerain[] = INCBIN_U8("graphics/pokemon/masquerain/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/front.4bpp.lz");
+const u32 gMonPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/normal.gbapal.lz");
+const u32 gMonBackPic_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/back.4bpp.lz");
+const u32 gMonShinyPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/shiny.gbapal.lz");
+const u8 gMonIcon_Wailmer[] = INCBIN_U8("graphics/pokemon/wailmer/icon.4bpp");
+const u8 gMonFootprint_Wailmer[] = INCBIN_U8("graphics/pokemon/wailmer/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/front.4bpp.lz");
+const u32 gMonPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/normal.gbapal.lz");
+const u32 gMonBackPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/back.4bpp.lz");
+const u32 gMonShinyPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/shiny.gbapal.lz");
+const u8 gMonIcon_Wailord[] = INCBIN_U8("graphics/pokemon/wailord/icon.4bpp");
+const u8 gMonFootprint_Wailord[] = INCBIN_U8("graphics/pokemon/wailord/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/front.4bpp.lz");
+const u32 gMonPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/normal.gbapal.lz");
+const u32 gMonBackPic_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/back.4bpp.lz");
+const u32 gMonShinyPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/shiny.gbapal.lz");
+const u8 gMonIcon_Skitty[] = INCBIN_U8("graphics/pokemon/skitty/icon.4bpp");
+const u8 gMonFootprint_Skitty[] = INCBIN_U8("graphics/pokemon/skitty/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/front.4bpp.lz");
+const u32 gMonPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/normal.gbapal.lz");
+const u32 gMonBackPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/back.4bpp.lz");
+const u32 gMonShinyPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/shiny.gbapal.lz");
+const u8 gMonIcon_Delcatty[] = INCBIN_U8("graphics/pokemon/delcatty/icon.4bpp");
+const u8 gMonFootprint_Delcatty[] = INCBIN_U8("graphics/pokemon/delcatty/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/front.4bpp.lz");
+const u32 gMonPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/normal.gbapal.lz");
+const u32 gMonBackPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/back.4bpp.lz");
+const u32 gMonShinyPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/shiny.gbapal.lz");
+const u8 gMonIcon_Kecleon[] = INCBIN_U8("graphics/pokemon/kecleon/icon.4bpp");
+const u8 gMonFootprint_Kecleon[] = INCBIN_U8("graphics/pokemon/kecleon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/front.4bpp.lz");
+const u32 gMonPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/normal.gbapal.lz");
+const u32 gMonBackPic_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/back.4bpp.lz");
+const u32 gMonShinyPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/shiny.gbapal.lz");
+const u8 gMonIcon_Baltoy[] = INCBIN_U8("graphics/pokemon/baltoy/icon.4bpp");
+const u8 gMonFootprint_Baltoy[] = INCBIN_U8("graphics/pokemon/baltoy/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/front.4bpp.lz");
+const u32 gMonPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/normal.gbapal.lz");
+const u32 gMonBackPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/back.4bpp.lz");
+const u32 gMonShinyPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/shiny.gbapal.lz");
+const u8 gMonIcon_Claydol[] = INCBIN_U8("graphics/pokemon/claydol/icon.4bpp");
+const u8 gMonFootprint_Claydol[] = INCBIN_U8("graphics/pokemon/claydol/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/front.4bpp.lz");
+const u32 gMonPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/normal.gbapal.lz");
+const u32 gMonBackPic_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/back.4bpp.lz");
+const u32 gMonShinyPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/shiny.gbapal.lz");
+const u8 gMonIcon_Nosepass[] = INCBIN_U8("graphics/pokemon/nosepass/icon.4bpp");
+const u8 gMonFootprint_Nosepass[] = INCBIN_U8("graphics/pokemon/nosepass/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/front.4bpp.lz");
+const u32 gMonPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/normal.gbapal.lz");
+const u32 gMonBackPic_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/back.4bpp.lz");
+const u32 gMonShinyPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/shiny.gbapal.lz");
+const u8 gMonIcon_Torkoal[] = INCBIN_U8("graphics/pokemon/torkoal/icon.4bpp");
+const u8 gMonFootprint_Torkoal[] = INCBIN_U8("graphics/pokemon/torkoal/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/front.4bpp.lz");
+const u32 gMonPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/normal.gbapal.lz");
+const u32 gMonBackPic_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/back.4bpp.lz");
+const u32 gMonShinyPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/shiny.gbapal.lz");
+const u8 gMonIcon_Sableye[] = INCBIN_U8("graphics/pokemon/sableye/icon.4bpp");
+const u8 gMonFootprint_Sableye[] = INCBIN_U8("graphics/pokemon/sableye/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/front.4bpp.lz");
+const u32 gMonPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/normal.gbapal.lz");
+const u32 gMonBackPic_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/back.4bpp.lz");
+const u32 gMonShinyPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/shiny.gbapal.lz");
+const u8 gMonIcon_Barboach[] = INCBIN_U8("graphics/pokemon/barboach/icon.4bpp");
+const u8 gMonFootprint_Barboach[] = INCBIN_U8("graphics/pokemon/barboach/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/front.4bpp.lz");
+const u32 gMonPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/normal.gbapal.lz");
+const u32 gMonBackPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/back.4bpp.lz");
+const u32 gMonShinyPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/shiny.gbapal.lz");
+const u8 gMonIcon_Whiscash[] = INCBIN_U8("graphics/pokemon/whiscash/icon.4bpp");
+const u8 gMonFootprint_Whiscash[] = INCBIN_U8("graphics/pokemon/whiscash/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/front.4bpp.lz");
+const u32 gMonPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/normal.gbapal.lz");
+const u32 gMonBackPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/back.4bpp.lz");
+const u32 gMonShinyPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/shiny.gbapal.lz");
+const u8 gMonIcon_Luvdisc[] = INCBIN_U8("graphics/pokemon/luvdisc/icon.4bpp");
+const u8 gMonFootprint_Luvdisc[] = INCBIN_U8("graphics/pokemon/luvdisc/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/front.4bpp.lz");
+const u32 gMonPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/normal.gbapal.lz");
+const u32 gMonBackPic_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/back.4bpp.lz");
+const u32 gMonShinyPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/shiny.gbapal.lz");
+const u8 gMonIcon_Corphish[] = INCBIN_U8("graphics/pokemon/corphish/icon.4bpp");
+const u8 gMonFootprint_Corphish[] = INCBIN_U8("graphics/pokemon/corphish/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/front.4bpp.lz");
+const u32 gMonPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/normal.gbapal.lz");
+const u32 gMonBackPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/back.4bpp.lz");
+const u32 gMonShinyPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/shiny.gbapal.lz");
+const u8 gMonIcon_Crawdaunt[] = INCBIN_U8("graphics/pokemon/crawdaunt/icon.4bpp");
+const u8 gMonFootprint_Crawdaunt[] = INCBIN_U8("graphics/pokemon/crawdaunt/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/front.4bpp.lz");
+const u32 gMonPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/normal.gbapal.lz");
+const u32 gMonBackPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/back.4bpp.lz");
+const u32 gMonShinyPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/shiny.gbapal.lz");
+const u8 gMonIcon_Feebas[] = INCBIN_U8("graphics/pokemon/feebas/icon.4bpp");
+const u8 gMonFootprint_Feebas[] = INCBIN_U8("graphics/pokemon/feebas/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/front.4bpp.lz");
+const u32 gMonPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/normal.gbapal.lz");
+const u32 gMonBackPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/back.4bpp.lz");
+const u32 gMonShinyPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/shiny.gbapal.lz");
+const u8 gMonIcon_Milotic[] = INCBIN_U8("graphics/pokemon/milotic/icon.4bpp");
+const u8 gMonFootprint_Milotic[] = INCBIN_U8("graphics/pokemon/milotic/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/front.4bpp.lz");
+const u32 gMonPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/normal.gbapal.lz");
+const u32 gMonBackPic_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/back.4bpp.lz");
+const u32 gMonShinyPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/shiny.gbapal.lz");
+const u8 gMonIcon_Carvanha[] = INCBIN_U8("graphics/pokemon/carvanha/icon.4bpp");
+const u8 gMonFootprint_Carvanha[] = INCBIN_U8("graphics/pokemon/carvanha/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/front.4bpp.lz");
+const u32 gMonPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/normal.gbapal.lz");
+const u32 gMonBackPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/back.4bpp.lz");
+const u32 gMonShinyPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/shiny.gbapal.lz");
+const u8 gMonIcon_Sharpedo[] = INCBIN_U8("graphics/pokemon/sharpedo/icon.4bpp");
+const u8 gMonFootprint_Sharpedo[] = INCBIN_U8("graphics/pokemon/sharpedo/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/front.4bpp.lz");
+const u32 gMonPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/normal.gbapal.lz");
+const u32 gMonBackPic_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/back.4bpp.lz");
+const u32 gMonShinyPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/shiny.gbapal.lz");
+const u8 gMonIcon_Trapinch[] = INCBIN_U8("graphics/pokemon/trapinch/icon.4bpp");
+const u8 gMonFootprint_Trapinch[] = INCBIN_U8("graphics/pokemon/trapinch/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/front.4bpp.lz");
+const u32 gMonPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/normal.gbapal.lz");
+const u32 gMonBackPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/back.4bpp.lz");
+const u32 gMonShinyPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/shiny.gbapal.lz");
+const u8 gMonIcon_Vibrava[] = INCBIN_U8("graphics/pokemon/vibrava/icon.4bpp");
+const u8 gMonFootprint_Vibrava[] = INCBIN_U8("graphics/pokemon/vibrava/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/front.4bpp.lz");
+const u32 gMonPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/normal.gbapal.lz");
+const u32 gMonBackPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/back.4bpp.lz");
+const u32 gMonShinyPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/shiny.gbapal.lz");
+const u8 gMonIcon_Flygon[] = INCBIN_U8("graphics/pokemon/flygon/icon.4bpp");
+const u8 gMonFootprint_Flygon[] = INCBIN_U8("graphics/pokemon/flygon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/front.4bpp.lz");
+const u32 gMonPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/normal.gbapal.lz");
+const u32 gMonBackPic_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/back.4bpp.lz");
+const u32 gMonShinyPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/shiny.gbapal.lz");
+const u8 gMonIcon_Makuhita[] = INCBIN_U8("graphics/pokemon/makuhita/icon.4bpp");
+const u8 gMonFootprint_Makuhita[] = INCBIN_U8("graphics/pokemon/makuhita/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/front.4bpp.lz");
+const u32 gMonPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/normal.gbapal.lz");
+const u32 gMonBackPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/back.4bpp.lz");
+const u32 gMonShinyPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/shiny.gbapal.lz");
+const u8 gMonIcon_Hariyama[] = INCBIN_U8("graphics/pokemon/hariyama/icon.4bpp");
+const u8 gMonFootprint_Hariyama[] = INCBIN_U8("graphics/pokemon/hariyama/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/front.4bpp.lz");
+const u32 gMonPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/normal.gbapal.lz");
+const u32 gMonBackPic_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/back.4bpp.lz");
+const u32 gMonShinyPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/shiny.gbapal.lz");
+const u8 gMonIcon_Electrike[] = INCBIN_U8("graphics/pokemon/electrike/icon.4bpp");
+const u8 gMonFootprint_Electrike[] = INCBIN_U8("graphics/pokemon/electrike/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/front.4bpp.lz");
+const u32 gMonPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/normal.gbapal.lz");
+const u32 gMonBackPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/back.4bpp.lz");
+const u32 gMonShinyPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/shiny.gbapal.lz");
+const u8 gMonIcon_Manectric[] = INCBIN_U8("graphics/pokemon/manectric/icon.4bpp");
+const u8 gMonFootprint_Manectric[] = INCBIN_U8("graphics/pokemon/manectric/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Numel[] = INCBIN_U32("graphics/pokemon/numel/front.4bpp.lz");
+const u32 gMonPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/normal.gbapal.lz");
+const u32 gMonBackPic_Numel[] = INCBIN_U32("graphics/pokemon/numel/back.4bpp.lz");
+const u32 gMonShinyPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/shiny.gbapal.lz");
+const u8 gMonIcon_Numel[] = INCBIN_U8("graphics/pokemon/numel/icon.4bpp");
+const u8 gMonFootprint_Numel[] = INCBIN_U8("graphics/pokemon/numel/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/front.4bpp.lz");
+const u32 gMonPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/normal.gbapal.lz");
+const u32 gMonBackPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/back.4bpp.lz");
+const u32 gMonShinyPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/shiny.gbapal.lz");
+const u8 gMonIcon_Camerupt[] = INCBIN_U8("graphics/pokemon/camerupt/icon.4bpp");
+const u8 gMonFootprint_Camerupt[] = INCBIN_U8("graphics/pokemon/camerupt/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/front.4bpp.lz");
+const u32 gMonPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/normal.gbapal.lz");
+const u32 gMonBackPic_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/back.4bpp.lz");
+const u32 gMonShinyPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/shiny.gbapal.lz");
+const u8 gMonIcon_Spheal[] = INCBIN_U8("graphics/pokemon/spheal/icon.4bpp");
+const u8 gMonFootprint_Spheal[] = INCBIN_U8("graphics/pokemon/spheal/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/front.4bpp.lz");
+const u32 gMonPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/normal.gbapal.lz");
+const u32 gMonBackPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/back.4bpp.lz");
+const u32 gMonShinyPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/shiny.gbapal.lz");
+const u8 gMonIcon_Sealeo[] = INCBIN_U8("graphics/pokemon/sealeo/icon.4bpp");
+const u8 gMonFootprint_Sealeo[] = INCBIN_U8("graphics/pokemon/sealeo/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/front.4bpp.lz");
+const u32 gMonPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/normal.gbapal.lz");
+const u32 gMonBackPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/back.4bpp.lz");
+const u32 gMonShinyPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/shiny.gbapal.lz");
+const u8 gMonIcon_Walrein[] = INCBIN_U8("graphics/pokemon/walrein/icon.4bpp");
+const u8 gMonFootprint_Walrein[] = INCBIN_U8("graphics/pokemon/walrein/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/front.4bpp.lz");
+const u32 gMonPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/normal.gbapal.lz");
+const u32 gMonBackPic_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/back.4bpp.lz");
+const u32 gMonShinyPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/shiny.gbapal.lz");
+const u8 gMonIcon_Cacnea[] = INCBIN_U8("graphics/pokemon/cacnea/icon.4bpp");
+const u8 gMonFootprint_Cacnea[] = INCBIN_U8("graphics/pokemon/cacnea/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/front.4bpp.lz");
+const u32 gMonPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/normal.gbapal.lz");
+const u32 gMonBackPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/back.4bpp.lz");
+const u32 gMonShinyPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/shiny.gbapal.lz");
+const u8 gMonIcon_Cacturne[] = INCBIN_U8("graphics/pokemon/cacturne/icon.4bpp");
+const u8 gMonFootprint_Cacturne[] = INCBIN_U8("graphics/pokemon/cacturne/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/front.4bpp.lz");
+const u32 gMonPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/normal.gbapal.lz");
+const u32 gMonBackPic_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/back.4bpp.lz");
+const u32 gMonShinyPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/shiny.gbapal.lz");
+const u8 gMonIcon_Snorunt[] = INCBIN_U8("graphics/pokemon/snorunt/icon.4bpp");
+const u8 gMonFootprint_Snorunt[] = INCBIN_U8("graphics/pokemon/snorunt/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/front.4bpp.lz");
+const u32 gMonPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/normal.gbapal.lz");
+const u32 gMonBackPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/back.4bpp.lz");
+const u32 gMonShinyPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/shiny.gbapal.lz");
+const u8 gMonIcon_Glalie[] = INCBIN_U8("graphics/pokemon/glalie/icon.4bpp");
+const u8 gMonFootprint_Glalie[] = INCBIN_U8("graphics/pokemon/glalie/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/front.4bpp.lz");
+const u32 gMonPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/normal.gbapal.lz");
+const u32 gMonBackPic_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/back.4bpp.lz");
+const u32 gMonShinyPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/shiny.gbapal.lz");
+const u8 gMonIcon_Lunatone[] = INCBIN_U8("graphics/pokemon/lunatone/icon.4bpp");
+const u8 gMonFootprint_Lunatone[] = INCBIN_U8("graphics/pokemon/lunatone/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/front.4bpp.lz");
+const u32 gMonPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/normal.gbapal.lz");
+const u32 gMonBackPic_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/back.4bpp.lz");
+const u32 gMonShinyPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/shiny.gbapal.lz");
+const u8 gMonIcon_Solrock[] = INCBIN_U8("graphics/pokemon/solrock/icon.4bpp");
+const u8 gMonFootprint_Solrock[] = INCBIN_U8("graphics/pokemon/solrock/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/front.4bpp.lz");
+const u32 gMonPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/normal.gbapal.lz");
+const u32 gMonBackPic_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/back.4bpp.lz");
+const u32 gMonShinyPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/shiny.gbapal.lz");
+const u8 gMonIcon_Azurill[] = INCBIN_U8("graphics/pokemon/azurill/icon.4bpp");
+const u8 gMonFootprint_Azurill[] = INCBIN_U8("graphics/pokemon/azurill/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/front.4bpp.lz");
+const u32 gMonPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/normal.gbapal.lz");
+const u32 gMonBackPic_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/back.4bpp.lz");
+const u32 gMonShinyPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/shiny.gbapal.lz");
+const u8 gMonIcon_Spoink[] = INCBIN_U8("graphics/pokemon/spoink/icon.4bpp");
+const u8 gMonFootprint_Spoink[] = INCBIN_U8("graphics/pokemon/spoink/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/front.4bpp.lz");
+const u32 gMonPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/normal.gbapal.lz");
+const u32 gMonBackPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/back.4bpp.lz");
+const u32 gMonShinyPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/shiny.gbapal.lz");
+const u8 gMonIcon_Grumpig[] = INCBIN_U8("graphics/pokemon/grumpig/icon.4bpp");
+const u8 gMonFootprint_Grumpig[] = INCBIN_U8("graphics/pokemon/grumpig/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/front.4bpp.lz");
+const u32 gMonPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/normal.gbapal.lz");
+const u32 gMonBackPic_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/back.4bpp.lz");
+const u32 gMonShinyPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/shiny.gbapal.lz");
+const u8 gMonIcon_Plusle[] = INCBIN_U8("graphics/pokemon/plusle/icon.4bpp");
+const u8 gMonFootprint_Plusle[] = INCBIN_U8("graphics/pokemon/plusle/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Minun[] = INCBIN_U32("graphics/pokemon/minun/front.4bpp.lz");
+const u32 gMonPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/normal.gbapal.lz");
+const u32 gMonBackPic_Minun[] = INCBIN_U32("graphics/pokemon/minun/back.4bpp.lz");
+const u32 gMonShinyPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/shiny.gbapal.lz");
+const u8 gMonIcon_Minun[] = INCBIN_U8("graphics/pokemon/minun/icon.4bpp");
+const u8 gMonFootprint_Minun[] = INCBIN_U8("graphics/pokemon/minun/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/front.4bpp.lz");
+const u32 gMonPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/normal.gbapal.lz");
+const u32 gMonBackPic_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/back.4bpp.lz");
+const u32 gMonShinyPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/shiny.gbapal.lz");
+const u8 gMonIcon_Mawile[] = INCBIN_U8("graphics/pokemon/mawile/icon.4bpp");
+const u8 gMonFootprint_Mawile[] = INCBIN_U8("graphics/pokemon/mawile/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/front.4bpp.lz");
+const u32 gMonPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/normal.gbapal.lz");
+const u32 gMonBackPic_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/back.4bpp.lz");
+const u32 gMonShinyPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/shiny.gbapal.lz");
+const u8 gMonIcon_Meditite[] = INCBIN_U8("graphics/pokemon/meditite/icon.4bpp");
+const u8 gMonFootprint_Meditite[] = INCBIN_U8("graphics/pokemon/meditite/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/front.4bpp.lz");
+const u32 gMonPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/normal.gbapal.lz");
+const u32 gMonBackPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/back.4bpp.lz");
+const u32 gMonShinyPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/shiny.gbapal.lz");
+const u8 gMonIcon_Medicham[] = INCBIN_U8("graphics/pokemon/medicham/icon.4bpp");
+const u8 gMonFootprint_Medicham[] = INCBIN_U8("graphics/pokemon/medicham/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/front.4bpp.lz");
+const u32 gMonPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/normal.gbapal.lz");
+const u32 gMonBackPic_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/back.4bpp.lz");
+const u32 gMonShinyPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/shiny.gbapal.lz");
+const u8 gMonIcon_Swablu[] = INCBIN_U8("graphics/pokemon/swablu/icon.4bpp");
+const u8 gMonFootprint_Swablu[] = INCBIN_U8("graphics/pokemon/swablu/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/front.4bpp.lz");
+const u32 gMonPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/normal.gbapal.lz");
+const u32 gMonBackPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/back.4bpp.lz");
+const u32 gMonShinyPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/shiny.gbapal.lz");
+const u8 gMonIcon_Altaria[] = INCBIN_U8("graphics/pokemon/altaria/icon.4bpp");
+const u8 gMonFootprint_Altaria[] = INCBIN_U8("graphics/pokemon/altaria/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/front.4bpp.lz");
+const u32 gMonPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/normal.gbapal.lz");
+const u32 gMonBackPic_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/back.4bpp.lz");
+const u32 gMonShinyPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/shiny.gbapal.lz");
+const u8 gMonIcon_Wynaut[] = INCBIN_U8("graphics/pokemon/wynaut/icon.4bpp");
+const u8 gMonFootprint_Wynaut[] = INCBIN_U8("graphics/pokemon/wynaut/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/front.4bpp.lz");
+const u32 gMonPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/normal.gbapal.lz");
+const u32 gMonBackPic_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/back.4bpp.lz");
+const u32 gMonShinyPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/shiny.gbapal.lz");
+const u8 gMonIcon_Duskull[] = INCBIN_U8("graphics/pokemon/duskull/icon.4bpp");
+const u8 gMonFootprint_Duskull[] = INCBIN_U8("graphics/pokemon/duskull/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/front.4bpp.lz");
+const u32 gMonPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/normal.gbapal.lz");
+const u32 gMonBackPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/back.4bpp.lz");
+const u32 gMonShinyPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/shiny.gbapal.lz");
+const u8 gMonIcon_Dusclops[] = INCBIN_U8("graphics/pokemon/dusclops/icon.4bpp");
+const u8 gMonFootprint_Dusclops[] = INCBIN_U8("graphics/pokemon/dusclops/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/front.4bpp.lz");
+const u32 gMonPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/normal.gbapal.lz");
+const u32 gMonBackPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/back.4bpp.lz");
+const u32 gMonShinyPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/shiny.gbapal.lz");
+const u8 gMonIcon_Roselia[] = INCBIN_U8("graphics/pokemon/roselia/icon.4bpp");
+const u8 gMonFootprint_Roselia[] = INCBIN_U8("graphics/pokemon/roselia/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/front.4bpp.lz");
+const u32 gMonPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/normal.gbapal.lz");
+const u32 gMonBackPic_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/back.4bpp.lz");
+const u32 gMonShinyPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/shiny.gbapal.lz");
+const u8 gMonIcon_Slakoth[] = INCBIN_U8("graphics/pokemon/slakoth/icon.4bpp");
+const u8 gMonFootprint_Slakoth[] = INCBIN_U8("graphics/pokemon/slakoth/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/front.4bpp.lz");
+const u32 gMonPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/normal.gbapal.lz");
+const u32 gMonBackPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/back.4bpp.lz");
+const u32 gMonShinyPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/shiny.gbapal.lz");
+const u8 gMonIcon_Vigoroth[] = INCBIN_U8("graphics/pokemon/vigoroth/icon.4bpp");
+const u8 gMonFootprint_Vigoroth[] = INCBIN_U8("graphics/pokemon/vigoroth/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/front.4bpp.lz");
+const u32 gMonPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/normal.gbapal.lz");
+const u32 gMonBackPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/back.4bpp.lz");
+const u32 gMonShinyPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/shiny.gbapal.lz");
+const u8 gMonIcon_Slaking[] = INCBIN_U8("graphics/pokemon/slaking/icon.4bpp");
+const u8 gMonFootprint_Slaking[] = INCBIN_U8("graphics/pokemon/slaking/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/front.4bpp.lz");
+const u32 gMonPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/normal.gbapal.lz");
+const u32 gMonBackPic_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/back.4bpp.lz");
+const u32 gMonShinyPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/shiny.gbapal.lz");
+const u8 gMonIcon_Gulpin[] = INCBIN_U8("graphics/pokemon/gulpin/icon.4bpp");
+const u8 gMonFootprint_Gulpin[] = INCBIN_U8("graphics/pokemon/gulpin/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/front.4bpp.lz");
+const u32 gMonPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/normal.gbapal.lz");
+const u32 gMonBackPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/back.4bpp.lz");
+const u32 gMonShinyPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/shiny.gbapal.lz");
+const u8 gMonIcon_Swalot[] = INCBIN_U8("graphics/pokemon/swalot/icon.4bpp");
+const u8 gMonFootprint_Swalot[] = INCBIN_U8("graphics/pokemon/swalot/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/front.4bpp.lz");
+const u32 gMonPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/normal.gbapal.lz");
+const u32 gMonBackPic_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/back.4bpp.lz");
+const u32 gMonShinyPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/shiny.gbapal.lz");
+const u8 gMonIcon_Tropius[] = INCBIN_U8("graphics/pokemon/tropius/icon.4bpp");
+const u8 gMonFootprint_Tropius[] = INCBIN_U8("graphics/pokemon/tropius/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/front.4bpp.lz");
+const u32 gMonPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/normal.gbapal.lz");
+const u32 gMonBackPic_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/back.4bpp.lz");
+const u32 gMonShinyPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/shiny.gbapal.lz");
+const u8 gMonIcon_Whismur[] = INCBIN_U8("graphics/pokemon/whismur/icon.4bpp");
+const u8 gMonFootprint_Whismur[] = INCBIN_U8("graphics/pokemon/whismur/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/front.4bpp.lz");
+const u32 gMonPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/normal.gbapal.lz");
+const u32 gMonBackPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/back.4bpp.lz");
+const u32 gMonShinyPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/shiny.gbapal.lz");
+const u8 gMonIcon_Loudred[] = INCBIN_U8("graphics/pokemon/loudred/icon.4bpp");
+const u8 gMonFootprint_Loudred[] = INCBIN_U8("graphics/pokemon/loudred/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/front.4bpp.lz");
+const u32 gMonPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/normal.gbapal.lz");
+const u32 gMonBackPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/back.4bpp.lz");
+const u32 gMonShinyPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/shiny.gbapal.lz");
+const u8 gMonIcon_Exploud[] = INCBIN_U8("graphics/pokemon/exploud/icon.4bpp");
+const u8 gMonFootprint_Exploud[] = INCBIN_U8("graphics/pokemon/exploud/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/front.4bpp.lz");
+const u32 gMonPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/normal.gbapal.lz");
+const u32 gMonBackPic_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/back.4bpp.lz");
+const u32 gMonShinyPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/shiny.gbapal.lz");
+const u8 gMonIcon_Clamperl[] = INCBIN_U8("graphics/pokemon/clamperl/icon.4bpp");
+const u8 gMonFootprint_Clamperl[] = INCBIN_U8("graphics/pokemon/clamperl/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/front.4bpp.lz");
+const u32 gMonPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/normal.gbapal.lz");
+const u32 gMonBackPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/back.4bpp.lz");
+const u32 gMonShinyPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/shiny.gbapal.lz");
+const u8 gMonIcon_Huntail[] = INCBIN_U8("graphics/pokemon/huntail/icon.4bpp");
+const u8 gMonFootprint_Huntail[] = INCBIN_U8("graphics/pokemon/huntail/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/front.4bpp.lz");
+const u32 gMonPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/normal.gbapal.lz");
+const u32 gMonBackPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/back.4bpp.lz");
+const u32 gMonShinyPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/shiny.gbapal.lz");
+const u8 gMonIcon_Gorebyss[] = INCBIN_U8("graphics/pokemon/gorebyss/icon.4bpp");
+const u8 gMonFootprint_Gorebyss[] = INCBIN_U8("graphics/pokemon/gorebyss/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Absol[] = INCBIN_U32("graphics/pokemon/absol/front.4bpp.lz");
+const u32 gMonPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/normal.gbapal.lz");
+const u32 gMonBackPic_Absol[] = INCBIN_U32("graphics/pokemon/absol/back.4bpp.lz");
+const u32 gMonShinyPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/shiny.gbapal.lz");
+const u8 gMonIcon_Absol[] = INCBIN_U8("graphics/pokemon/absol/icon.4bpp");
+const u8 gMonFootprint_Absol[] = INCBIN_U8("graphics/pokemon/absol/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/front.4bpp.lz");
+const u32 gMonPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/normal.gbapal.lz");
+const u32 gMonBackPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/back.4bpp.lz");
+const u32 gMonShinyPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/shiny.gbapal.lz");
+const u8 gMonIcon_Shuppet[] = INCBIN_U8("graphics/pokemon/shuppet/icon.4bpp");
+const u8 gMonFootprint_Shuppet[] = INCBIN_U8("graphics/pokemon/shuppet/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/front.4bpp.lz");
+const u32 gMonPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/normal.gbapal.lz");
+const u32 gMonBackPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/back.4bpp.lz");
+const u32 gMonShinyPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/shiny.gbapal.lz");
+const u8 gMonIcon_Banette[] = INCBIN_U8("graphics/pokemon/banette/icon.4bpp");
+const u8 gMonFootprint_Banette[] = INCBIN_U8("graphics/pokemon/banette/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/front.4bpp.lz");
+const u32 gMonPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/normal.gbapal.lz");
+const u32 gMonBackPic_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/back.4bpp.lz");
+const u32 gMonShinyPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/shiny.gbapal.lz");
+const u8 gMonIcon_Seviper[] = INCBIN_U8("graphics/pokemon/seviper/icon.4bpp");
+const u8 gMonFootprint_Seviper[] = INCBIN_U8("graphics/pokemon/seviper/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/front.4bpp.lz");
+const u32 gMonPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/normal.gbapal.lz");
+const u32 gMonBackPic_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/back.4bpp.lz");
+const u32 gMonShinyPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/shiny.gbapal.lz");
+const u8 gMonIcon_Zangoose[] = INCBIN_U8("graphics/pokemon/zangoose/icon.4bpp");
+const u8 gMonFootprint_Zangoose[] = INCBIN_U8("graphics/pokemon/zangoose/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/front.4bpp.lz");
+const u32 gMonPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/normal.gbapal.lz");
+const u32 gMonBackPic_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/back.4bpp.lz");
+const u32 gMonShinyPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/shiny.gbapal.lz");
+const u8 gMonIcon_Relicanth[] = INCBIN_U8("graphics/pokemon/relicanth/icon.4bpp");
+const u8 gMonFootprint_Relicanth[] = INCBIN_U8("graphics/pokemon/relicanth/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Aron[] = INCBIN_U32("graphics/pokemon/aron/front.4bpp.lz");
+const u32 gMonPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/normal.gbapal.lz");
+const u32 gMonBackPic_Aron[] = INCBIN_U32("graphics/pokemon/aron/back.4bpp.lz");
+const u32 gMonShinyPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/shiny.gbapal.lz");
+const u8 gMonIcon_Aron[] = INCBIN_U8("graphics/pokemon/aron/icon.4bpp");
+const u8 gMonFootprint_Aron[] = INCBIN_U8("graphics/pokemon/aron/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/front.4bpp.lz");
+const u32 gMonPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/normal.gbapal.lz");
+const u32 gMonBackPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/back.4bpp.lz");
+const u32 gMonShinyPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/shiny.gbapal.lz");
+const u8 gMonIcon_Lairon[] = INCBIN_U8("graphics/pokemon/lairon/icon.4bpp");
+const u8 gMonFootprint_Lairon[] = INCBIN_U8("graphics/pokemon/lairon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/front.4bpp.lz");
+const u32 gMonPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/normal.gbapal.lz");
+const u32 gMonBackPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/back.4bpp.lz");
+const u32 gMonShinyPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/shiny.gbapal.lz");
+const u8 gMonIcon_Aggron[] = INCBIN_U8("graphics/pokemon/aggron/icon.4bpp");
+const u8 gMonFootprint_Aggron[] = INCBIN_U8("graphics/pokemon/aggron/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Castform[] = INCBIN_U32("graphics/pokemon/castform/front.4bpp.lz");
+const u32 gMonPalette_Castform[] = INCBIN_U32("graphics/pokemon/castform/normal.gbapal.lz");
+const u32 gMonBackPic_Castform[] = INCBIN_U32("graphics/pokemon/castform/back.4bpp.lz");
+const u32 gMonShinyPalette_Castform[] = INCBIN_U32("graphics/pokemon/castform/shiny.gbapal.lz");
+const u8 gMonIcon_Castform[] = INCBIN_U8("graphics/pokemon/castform/icon.4bpp");
+const u8 gMonFootprint_Castform[] = INCBIN_U8("graphics/pokemon/castform/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/front.4bpp.lz");
+const u32 gMonPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/normal.gbapal.lz");
+const u32 gMonBackPic_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/back.4bpp.lz");
+const u32 gMonShinyPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/shiny.gbapal.lz");
+const u8 gMonIcon_Volbeat[] = INCBIN_U8("graphics/pokemon/volbeat/icon.4bpp");
+const u8 gMonFootprint_Volbeat[] = INCBIN_U8("graphics/pokemon/volbeat/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/front.4bpp.lz");
+const u32 gMonPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/normal.gbapal.lz");
+const u32 gMonBackPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/back.4bpp.lz");
+const u32 gMonShinyPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/shiny.gbapal.lz");
+const u8 gMonIcon_Illumise[] = INCBIN_U8("graphics/pokemon/illumise/icon.4bpp");
+const u8 gMonFootprint_Illumise[] = INCBIN_U8("graphics/pokemon/illumise/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/front.4bpp.lz");
+const u32 gMonPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/normal.gbapal.lz");
+const u32 gMonBackPic_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/back.4bpp.lz");
+const u32 gMonShinyPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/shiny.gbapal.lz");
+const u8 gMonIcon_Lileep[] = INCBIN_U8("graphics/pokemon/lileep/icon.4bpp");
+const u8 gMonFootprint_Lileep[] = INCBIN_U8("graphics/pokemon/lileep/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/front.4bpp.lz");
+const u32 gMonPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/normal.gbapal.lz");
+const u32 gMonBackPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/back.4bpp.lz");
+const u32 gMonShinyPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/shiny.gbapal.lz");
+const u8 gMonIcon_Cradily[] = INCBIN_U8("graphics/pokemon/cradily/icon.4bpp");
+const u8 gMonFootprint_Cradily[] = INCBIN_U8("graphics/pokemon/cradily/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/front.4bpp.lz");
+const u32 gMonPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/normal.gbapal.lz");
+const u32 gMonBackPic_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/back.4bpp.lz");
+const u32 gMonShinyPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/shiny.gbapal.lz");
+const u8 gMonIcon_Anorith[] = INCBIN_U8("graphics/pokemon/anorith/icon.4bpp");
+const u8 gMonFootprint_Anorith[] = INCBIN_U8("graphics/pokemon/anorith/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/front.4bpp.lz");
+const u32 gMonPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/normal.gbapal.lz");
+const u32 gMonBackPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/back.4bpp.lz");
+const u32 gMonShinyPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/shiny.gbapal.lz");
+const u8 gMonIcon_Armaldo[] = INCBIN_U8("graphics/pokemon/armaldo/icon.4bpp");
+const u8 gMonFootprint_Armaldo[] = INCBIN_U8("graphics/pokemon/armaldo/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/front.4bpp.lz");
+const u32 gMonPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/normal.gbapal.lz");
+const u32 gMonBackPic_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/back.4bpp.lz");
+const u32 gMonShinyPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/shiny.gbapal.lz");
+const u8 gMonIcon_Ralts[] = INCBIN_U8("graphics/pokemon/ralts/icon.4bpp");
+const u8 gMonFootprint_Ralts[] = INCBIN_U8("graphics/pokemon/ralts/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/front.4bpp.lz");
+const u32 gMonPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/normal.gbapal.lz");
+const u32 gMonBackPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/back.4bpp.lz");
+const u32 gMonShinyPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/shiny.gbapal.lz");
+const u8 gMonIcon_Kirlia[] = INCBIN_U8("graphics/pokemon/kirlia/icon.4bpp");
+const u8 gMonFootprint_Kirlia[] = INCBIN_U8("graphics/pokemon/kirlia/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/front.4bpp.lz");
+const u32 gMonPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/normal.gbapal.lz");
+const u32 gMonBackPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/back.4bpp.lz");
+const u32 gMonShinyPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/shiny.gbapal.lz");
+const u8 gMonIcon_Gardevoir[] = INCBIN_U8("graphics/pokemon/gardevoir/icon.4bpp");
+const u8 gMonFootprint_Gardevoir[] = INCBIN_U8("graphics/pokemon/gardevoir/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/front.4bpp.lz");
+const u32 gMonPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/normal.gbapal.lz");
+const u32 gMonBackPic_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/back.4bpp.lz");
+const u32 gMonShinyPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/shiny.gbapal.lz");
+const u8 gMonIcon_Bagon[] = INCBIN_U8("graphics/pokemon/bagon/icon.4bpp");
+const u8 gMonFootprint_Bagon[] = INCBIN_U8("graphics/pokemon/bagon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/front.4bpp.lz");
+const u32 gMonPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/normal.gbapal.lz");
+const u32 gMonBackPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/back.4bpp.lz");
+const u32 gMonShinyPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/shiny.gbapal.lz");
+const u8 gMonIcon_Shelgon[] = INCBIN_U8("graphics/pokemon/shelgon/icon.4bpp");
+const u8 gMonFootprint_Shelgon[] = INCBIN_U8("graphics/pokemon/shelgon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/front.4bpp.lz");
+const u32 gMonPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/normal.gbapal.lz");
+const u32 gMonBackPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/back.4bpp.lz");
+const u32 gMonShinyPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/shiny.gbapal.lz");
+const u8 gMonIcon_Salamence[] = INCBIN_U8("graphics/pokemon/salamence/icon.4bpp");
+const u8 gMonFootprint_Salamence[] = INCBIN_U8("graphics/pokemon/salamence/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/front.4bpp.lz");
+const u32 gMonPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/normal.gbapal.lz");
+const u32 gMonBackPic_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/back.4bpp.lz");
+const u32 gMonShinyPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/shiny.gbapal.lz");
+const u8 gMonIcon_Beldum[] = INCBIN_U8("graphics/pokemon/beldum/icon.4bpp");
+const u8 gMonFootprint_Beldum[] = INCBIN_U8("graphics/pokemon/beldum/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/front.4bpp.lz");
+const u32 gMonPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/normal.gbapal.lz");
+const u32 gMonBackPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/back.4bpp.lz");
+const u32 gMonShinyPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/shiny.gbapal.lz");
+const u8 gMonIcon_Metang[] = INCBIN_U8("graphics/pokemon/metang/icon.4bpp");
+const u8 gMonFootprint_Metang[] = INCBIN_U8("graphics/pokemon/metang/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/front.4bpp.lz");
+const u32 gMonPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/normal.gbapal.lz");
+const u32 gMonBackPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/back.4bpp.lz");
+const u32 gMonShinyPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/shiny.gbapal.lz");
+const u8 gMonIcon_Metagross[] = INCBIN_U8("graphics/pokemon/metagross/icon.4bpp");
+const u8 gMonFootprint_Metagross[] = INCBIN_U8("graphics/pokemon/metagross/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/front.4bpp.lz");
+const u32 gMonPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/normal.gbapal.lz");
+const u32 gMonBackPic_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/back.4bpp.lz");
+const u32 gMonShinyPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/shiny.gbapal.lz");
+const u8 gMonIcon_Regirock[] = INCBIN_U8("graphics/pokemon/regirock/icon.4bpp");
+const u8 gMonFootprint_Regirock[] = INCBIN_U8("graphics/pokemon/regirock/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Regice[] = INCBIN_U32("graphics/pokemon/regice/front.4bpp.lz");
+const u32 gMonPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/normal.gbapal.lz");
+const u32 gMonBackPic_Regice[] = INCBIN_U32("graphics/pokemon/regice/back.4bpp.lz");
+const u32 gMonShinyPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/shiny.gbapal.lz");
+const u8 gMonIcon_Regice[] = INCBIN_U8("graphics/pokemon/regice/icon.4bpp");
+const u8 gMonFootprint_Regice[] = INCBIN_U8("graphics/pokemon/regice/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/front.4bpp.lz");
+const u32 gMonPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/normal.gbapal.lz");
+const u32 gMonBackPic_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/back.4bpp.lz");
+const u32 gMonShinyPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/shiny.gbapal.lz");
+const u8 gMonIcon_Registeel[] = INCBIN_U8("graphics/pokemon/registeel/icon.4bpp");
+const u8 gMonFootprint_Registeel[] = INCBIN_U8("graphics/pokemon/registeel/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/front.4bpp.lz");
+const u32 gMonPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/normal.gbapal.lz");
+const u32 gMonBackPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/back.4bpp.lz");
+const u32 gMonShinyPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/shiny.gbapal.lz");
+const u8 gMonIcon_Kyogre[] = INCBIN_U8("graphics/pokemon/kyogre/icon.4bpp");
+const u8 gMonFootprint_Kyogre[] = INCBIN_U8("graphics/pokemon/kyogre/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/front.4bpp.lz");
+const u32 gMonPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/normal.gbapal.lz");
+const u32 gMonBackPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/back.4bpp.lz");
+const u32 gMonShinyPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/shiny.gbapal.lz");
+const u8 gMonIcon_Groudon[] = INCBIN_U8("graphics/pokemon/groudon/icon.4bpp");
+const u8 gMonFootprint_Groudon[] = INCBIN_U8("graphics/pokemon/groudon/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/front.4bpp.lz");
+const u32 gMonPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/normal.gbapal.lz");
+const u32 gMonBackPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/back.4bpp.lz");
+const u32 gMonShinyPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/shiny.gbapal.lz");
+const u8 gMonIcon_Rayquaza[] = INCBIN_U8("graphics/pokemon/rayquaza/icon.4bpp");
+const u8 gMonFootprint_Rayquaza[] = INCBIN_U8("graphics/pokemon/rayquaza/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Latias[] = INCBIN_U32("graphics/pokemon/latias/front.4bpp.lz");
+const u32 gMonPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/normal.gbapal.lz");
+const u32 gMonBackPic_Latias[] = INCBIN_U32("graphics/pokemon/latias/back.4bpp.lz");
+const u32 gMonShinyPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/shiny.gbapal.lz");
+const u8 gMonIcon_Latias[] = INCBIN_U8("graphics/pokemon/latias/icon.4bpp");
+const u8 gMonFootprint_Latias[] = INCBIN_U8("graphics/pokemon/latias/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Latios[] = INCBIN_U32("graphics/pokemon/latios/front.4bpp.lz");
+const u32 gMonPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/normal.gbapal.lz");
+const u32 gMonBackPic_Latios[] = INCBIN_U32("graphics/pokemon/latios/back.4bpp.lz");
+const u32 gMonShinyPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/shiny.gbapal.lz");
+const u8 gMonIcon_Latios[] = INCBIN_U8("graphics/pokemon/latios/icon.4bpp");
+const u8 gMonFootprint_Latios[] = INCBIN_U8("graphics/pokemon/latios/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/front.4bpp.lz");
+const u32 gMonPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/normal.gbapal.lz");
+const u32 gMonBackPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/back.4bpp.lz");
+const u32 gMonShinyPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/shiny.gbapal.lz");
+const u8 gMonIcon_Jirachi[] = INCBIN_U8("graphics/pokemon/jirachi/icon.4bpp");
+const u8 gMonFootprint_Jirachi[] = INCBIN_U8("graphics/pokemon/jirachi/footprint.1bpp");
+
+const u32 gMonStillFrontPic_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/front.4bpp.lz");
+const u32 gMonPalette_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/normal.gbapal.lz");
+const u32 gMonBackPic_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/back.4bpp.lz");
+const u32 gMonShinyPalette_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/shiny.gbapal.lz");
+const u8 gMonIcon_Deoxys[] = INCBIN_U8("graphics/pokemon/deoxys/icon.4bpp");
+const u8 gMonIcon_DeoxysSpeed[] = INCBIN_U8("graphics/pokemon/deoxys/icon_speed.4bpp");
const u8 gMonIcon_DeoxysSpeedWide[] = INCBIN_U8("graphics/unused/deoxys_speed_icon_wide.4bpp");
asm(".space 0x6800");
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 gMonFootprint_Deoxys[] = INCBIN_U8("graphics/pokemon/deoxys/footprint.1bpp");
-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 u32 gMonStillFrontPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/front.4bpp.lz");
+const u32 gMonPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/normal.gbapal.lz");
+const u32 gMonBackPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/back.4bpp.lz");
+const u32 gMonShinyPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/shiny.gbapal.lz");
+const u8 gMonIcon_Chimecho[] = INCBIN_U8("graphics/pokemon/chimecho/icon.4bpp");
+const u8 gMonFootprint_Chimecho[] = INCBIN_U8("graphics/pokemon/chimecho/footprint.1bpp");
-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 u32 gMonStillFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/front.4bpp.lz");
+const u32 gMonPalette_Egg[] = INCBIN_U32("graphics/pokemon/egg/normal.gbapal.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 u32 gMonStillFrontPic_UnownB[] = INCBIN_U32("graphics/pokemon/unown/front_b.4bpp.lz");
+const u32 gMonBackPic_UnownB[] = INCBIN_U32("graphics/pokemon/unown/back_b.4bpp.lz");
+const u8 gMonIcon_UnownB[] = INCBIN_U8("graphics/pokemon/unown/icon_b.4bpp");
-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 u32 gMonStillFrontPic_UnownC[] = INCBIN_U32("graphics/pokemon/unown/front_c.4bpp.lz");
+const u32 gMonBackPic_UnownC[] = INCBIN_U32("graphics/pokemon/unown/back_c.4bpp.lz");
+const u8 gMonIcon_UnownC[] = INCBIN_U8("graphics/pokemon/unown/icon_c.4bpp");
-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 u32 gMonStillFrontPic_UnownD[] = INCBIN_U32("graphics/pokemon/unown/front_d.4bpp.lz");
+const u32 gMonBackPic_UnownD[] = INCBIN_U32("graphics/pokemon/unown/back_d.4bpp.lz");
+const u8 gMonIcon_UnownD[] = INCBIN_U8("graphics/pokemon/unown/icon_d.4bpp");
-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 u32 gMonStillFrontPic_UnownE[] = INCBIN_U32("graphics/pokemon/unown/front_e.4bpp.lz");
+const u32 gMonBackPic_UnownE[] = INCBIN_U32("graphics/pokemon/unown/back_e.4bpp.lz");
+const u8 gMonIcon_UnownE[] = INCBIN_U8("graphics/pokemon/unown/icon_e.4bpp");
-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 u32 gMonStillFrontPic_UnownF[] = INCBIN_U32("graphics/pokemon/unown/front_f.4bpp.lz");
+const u32 gMonBackPic_UnownF[] = INCBIN_U32("graphics/pokemon/unown/back_f.4bpp.lz");
+const u8 gMonIcon_UnownF[] = INCBIN_U8("graphics/pokemon/unown/icon_f.4bpp");
-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 u32 gMonStillFrontPic_UnownG[] = INCBIN_U32("graphics/pokemon/unown/front_g.4bpp.lz");
+const u32 gMonBackPic_UnownG[] = INCBIN_U32("graphics/pokemon/unown/back_g.4bpp.lz");
+const u8 gMonIcon_UnownG[] = INCBIN_U8("graphics/pokemon/unown/icon_g.4bpp");
-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 u32 gMonStillFrontPic_UnownH[] = INCBIN_U32("graphics/pokemon/unown/front_h.4bpp.lz");
+const u32 gMonBackPic_UnownH[] = INCBIN_U32("graphics/pokemon/unown/back_h.4bpp.lz");
+const u8 gMonIcon_UnownH[] = INCBIN_U8("graphics/pokemon/unown/icon_h.4bpp");
-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 u32 gMonStillFrontPic_UnownI[] = INCBIN_U32("graphics/pokemon/unown/front_i.4bpp.lz");
+const u32 gMonBackPic_UnownI[] = INCBIN_U32("graphics/pokemon/unown/back_i.4bpp.lz");
+const u8 gMonIcon_UnownI[] = INCBIN_U8("graphics/pokemon/unown/icon_i.4bpp");
-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 u32 gMonStillFrontPic_UnownJ[] = INCBIN_U32("graphics/pokemon/unown/front_j.4bpp.lz");
+const u32 gMonBackPic_UnownJ[] = INCBIN_U32("graphics/pokemon/unown/back_j.4bpp.lz");
+const u8 gMonIcon_UnownJ[] = INCBIN_U8("graphics/pokemon/unown/icon_j.4bpp");
-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 u32 gMonStillFrontPic_UnownK[] = INCBIN_U32("graphics/pokemon/unown/front_k.4bpp.lz");
+const u32 gMonBackPic_UnownK[] = INCBIN_U32("graphics/pokemon/unown/back_k.4bpp.lz");
+const u8 gMonIcon_UnownK[] = INCBIN_U8("graphics/pokemon/unown/icon_k.4bpp");
-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 u32 gMonStillFrontPic_UnownL[] = INCBIN_U32("graphics/pokemon/unown/front_l.4bpp.lz");
+const u32 gMonBackPic_UnownL[] = INCBIN_U32("graphics/pokemon/unown/back_l.4bpp.lz");
+const u8 gMonIcon_UnownL[] = INCBIN_U8("graphics/pokemon/unown/icon_l.4bpp");
-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 u32 gMonStillFrontPic_UnownM[] = INCBIN_U32("graphics/pokemon/unown/front_m.4bpp.lz");
+const u32 gMonBackPic_UnownM[] = INCBIN_U32("graphics/pokemon/unown/back_m.4bpp.lz");
+const u8 gMonIcon_UnownM[] = INCBIN_U8("graphics/pokemon/unown/icon_m.4bpp");
-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 u32 gMonStillFrontPic_UnownN[] = INCBIN_U32("graphics/pokemon/unown/front_n.4bpp.lz");
+const u32 gMonBackPic_UnownN[] = INCBIN_U32("graphics/pokemon/unown/back_n.4bpp.lz");
+const u8 gMonIcon_UnownN[] = INCBIN_U8("graphics/pokemon/unown/icon_n.4bpp");
-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 u32 gMonStillFrontPic_UnownO[] = INCBIN_U32("graphics/pokemon/unown/front_o.4bpp.lz");
+const u32 gMonBackPic_UnownO[] = INCBIN_U32("graphics/pokemon/unown/back_o.4bpp.lz");
+const u8 gMonIcon_UnownO[] = INCBIN_U8("graphics/pokemon/unown/icon_o.4bpp");
-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 u32 gMonStillFrontPic_UnownP[] = INCBIN_U32("graphics/pokemon/unown/front_p.4bpp.lz");
+const u32 gMonBackPic_UnownP[] = INCBIN_U32("graphics/pokemon/unown/back_p.4bpp.lz");
+const u8 gMonIcon_UnownP[] = INCBIN_U8("graphics/pokemon/unown/icon_p.4bpp");
-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 u32 gMonStillFrontPic_UnownQ[] = INCBIN_U32("graphics/pokemon/unown/front_q.4bpp.lz");
+const u32 gMonBackPic_UnownQ[] = INCBIN_U32("graphics/pokemon/unown/back_q.4bpp.lz");
+const u8 gMonIcon_UnownQ[] = INCBIN_U8("graphics/pokemon/unown/icon_q.4bpp");
-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 u32 gMonStillFrontPic_UnownR[] = INCBIN_U32("graphics/pokemon/unown/front_r.4bpp.lz");
+const u32 gMonBackPic_UnownR[] = INCBIN_U32("graphics/pokemon/unown/back_r.4bpp.lz");
+const u8 gMonIcon_UnownR[] = INCBIN_U8("graphics/pokemon/unown/icon_r.4bpp");
-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 u32 gMonStillFrontPic_UnownS[] = INCBIN_U32("graphics/pokemon/unown/front_s.4bpp.lz");
+const u32 gMonBackPic_UnownS[] = INCBIN_U32("graphics/pokemon/unown/back_s.4bpp.lz");
+const u8 gMonIcon_UnownS[] = INCBIN_U8("graphics/pokemon/unown/icon_s.4bpp");
-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 u32 gMonStillFrontPic_UnownT[] = INCBIN_U32("graphics/pokemon/unown/front_t.4bpp.lz");
+const u32 gMonBackPic_UnownT[] = INCBIN_U32("graphics/pokemon/unown/back_t.4bpp.lz");
+const u8 gMonIcon_UnownT[] = INCBIN_U8("graphics/pokemon/unown/icon_t.4bpp");
-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 u32 gMonStillFrontPic_UnownU[] = INCBIN_U32("graphics/pokemon/unown/front_u.4bpp.lz");
+const u32 gMonBackPic_UnownU[] = INCBIN_U32("graphics/pokemon/unown/back_u.4bpp.lz");
+const u8 gMonIcon_UnownU[] = INCBIN_U8("graphics/pokemon/unown/icon_u.4bpp");
-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 u32 gMonStillFrontPic_UnownV[] = INCBIN_U32("graphics/pokemon/unown/front_v.4bpp.lz");
+const u32 gMonBackPic_UnownV[] = INCBIN_U32("graphics/pokemon/unown/back_v.4bpp.lz");
+const u8 gMonIcon_UnownV[] = INCBIN_U8("graphics/pokemon/unown/icon_v.4bpp");
-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 u32 gMonStillFrontPic_UnownW[] = INCBIN_U32("graphics/pokemon/unown/front_w.4bpp.lz");
+const u32 gMonBackPic_UnownW[] = INCBIN_U32("graphics/pokemon/unown/back_w.4bpp.lz");
+const u8 gMonIcon_UnownW[] = INCBIN_U8("graphics/pokemon/unown/icon_w.4bpp");
-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 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 u32 gMonStillFrontPic_UnownX[] = INCBIN_U32("graphics/pokemon/unown/front_x.4bpp.lz");
+const u32 gMonBackPic_UnownX[] = INCBIN_U32("graphics/pokemon/unown/back_x.4bpp.lz");
+const u8 gMonIcon_UnownX[] = INCBIN_U8("graphics/pokemon/unown/icon_x.4bpp");
+
+const u32 gMonStillFrontPic_UnownY[] = INCBIN_U32("graphics/pokemon/unown/front_y.4bpp.lz");
+const u32 gMonBackPic_UnownY[] = INCBIN_U32("graphics/pokemon/unown/back_y.4bpp.lz");
+const u8 gMonIcon_UnownY[] = INCBIN_U8("graphics/pokemon/unown/icon_y.4bpp");
-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 u32 gMonStillFrontPic_UnownZ[] = INCBIN_U32("graphics/pokemon/unown/front_z.4bpp.lz");
+const u32 gMonBackPic_UnownZ[] = INCBIN_U32("graphics/pokemon/unown/back_z.4bpp.lz");
+const u8 gMonIcon_UnownZ[] = INCBIN_U8("graphics/pokemon/unown/icon_z.4bpp");
-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 u32 gMonStillFrontPic_UnownExclamationMark[] = INCBIN_U32("graphics/pokemon/unown/front_exclamation_mark.4bpp.lz");
+const u32 gMonBackPic_UnownExclamationMark[] = INCBIN_U32("graphics/pokemon/unown/back_exclamation_mark.4bpp.lz");
+const u8 gMonIcon_UnownExclamationMark[] = INCBIN_U8("graphics/pokemon/unown/icon_exclamation_mark.4bpp");
-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");
+const u32 gMonStillFrontPic_UnownQuestionMark[] = INCBIN_U32("graphics/pokemon/unown/front_question_mark.4bpp.lz");
+const u32 gMonBackPic_UnownQuestionMark[] = INCBIN_U32("graphics/pokemon/unown/back_question_mark.4bpp.lz");
+const u8 gMonIcon_UnownQuestionMark[] = INCBIN_U8("graphics/pokemon/unown/icon_question_mark.4bpp");
diff --git a/src/data/pokemon/trainer_class_lookups.h b/src/data/pokemon/trainer_class_lookups.h
index 6e8474c12..04c7ab3c4 100644
--- a/src/data/pokemon/trainer_class_lookups.h
+++ b/src/data/pokemon/trainer_class_lookups.h
@@ -146,10 +146,10 @@ const u8 gFacilityClassToTrainerClass[] =
[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] = 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] = 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,
diff --git a/src/data/trainer_graphics/back_pic_anims.h b/src/data/trainer_graphics/back_pic_anims.h
index 21dbda597..0cc4bb203 100644
--- a/src/data/trainer_graphics/back_pic_anims.h
+++ b/src/data/trainer_graphics/back_pic_anims.h
@@ -70,13 +70,13 @@ const union AnimCmd gAnimCmd_RubySapphireMay_1[] =
const union AnimCmd *const gTrainerBackAnims_Brendan[] =
{
- AnimCmd_82FF540,
+ gAnimCmd_General_Frame3,
gAnimCmd_Brendan_1,
};
const union AnimCmd *const gTrainerBackAnims_May[] =
{
- AnimCmd_82FF540,
+ gAnimCmd_General_Frame3,
gAnimCmd_May_Steven_1,
};
@@ -94,25 +94,25 @@ const union AnimCmd *const gTrainerBackAnims_Leaf[] =
const union AnimCmd *const gTrainerBackAnims_RubySapphireBrendan[] =
{
- AnimCmd_82FF540,
+ gAnimCmd_General_Frame3,
gAnimCmd_RubySapphireBrendan_1,
};
const union AnimCmd *const gTrainerBackAnims_RubySapphireMay[] =
{
- AnimCmd_82FF540,
+ gAnimCmd_General_Frame3,
gAnimCmd_RubySapphireMay_1,
};
const union AnimCmd *const gTrainerBackAnims_Wally[] =
{
- AnimCmd_82FF540,
+ gAnimCmd_General_Frame3,
gAnimCmd_Wally_1,
};
const union AnimCmd *const gTrainerBackAnims_Steven[] =
{
- AnimCmd_82FF540,
+ gAnimCmd_General_Frame3,
gAnimCmd_May_Steven_1,
};
diff --git a/src/data/trainer_graphics/back_pic_tables.h b/src/data/trainer_graphics/back_pic_tables.h
index 920ecbb39..0f6b0cb91 100644
--- a/src/data/trainer_graphics/back_pic_tables.h
+++ b/src/data/trainer_graphics/back_pic_tables.h
@@ -15,24 +15,24 @@ const struct MonCoords gTrainerBackPicCoords[] =
// the casts are so they'll play nice with the strict struct definition
const struct CompressedSpriteSheet gTrainerBackPicTable[] =
{
- (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 u32 *)gTrainerBackPic_Brendan, 0x2000, TRAINER_BACK_PIC_BRENDAN,
+ (const u32 *)gTrainerBackPic_May, 0x2000, TRAINER_BACK_PIC_MAY,
+ (const u32 *)gTrainerBackPic_Red, 0x2800, TRAINER_BACK_PIC_RED,
+ (const u32 *)gTrainerBackPic_Leaf, 0x2800, TRAINER_BACK_PIC_LEAF,
+ (const u32 *)gTrainerBackPic_RubySapphireBrendan, 0x2000, TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN,
+ (const u32 *)gTrainerBackPic_RubySapphireMay, 0x2000, TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY,
+ (const u32 *)gTrainerBackPic_Wally, 0x2000, TRAINER_BACK_PIC_WALLY,
+ (const u32 *)gTrainerBackPic_Steven, 0x2000, TRAINER_BACK_PIC_STEVEN,
};
const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] =
{
- gTrainerPalette_Brendan, 0,
- gTrainerPalette_May, 1,
- gTrainerBackPicPalette_Red, 2,
- gTrainerBackPicPalette_Leaf, 3,
- gTrainerPalette_RubySapphireBrendan, 4,
- gTrainerPalette_RubySapphireMay, 5,
- gTrainerPalette_Wally, 6,
- gTrainerPalette_Steven, 7,
+ gTrainerPalette_Brendan, TRAINER_BACK_PIC_BRENDAN,
+ gTrainerPalette_May, TRAINER_BACK_PIC_MAY,
+ gTrainerBackPicPalette_Red, TRAINER_BACK_PIC_RED,
+ gTrainerBackPicPalette_Leaf, TRAINER_BACK_PIC_LEAF,
+ gTrainerPalette_RubySapphireBrendan, TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN,
+ gTrainerPalette_RubySapphireMay, TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY,
+ gTrainerPalette_Wally, TRAINER_BACK_PIC_WALLY,
+ gTrainerPalette_Steven, TRAINER_BACK_PIC_STEVEN,
};
diff --git a/src/data2b.c b/src/data2b.c
index bb1baa266..af76390a4 100644
--- a/src/data2b.c
+++ b/src/data2b.c
@@ -40,7 +40,7 @@ const struct SpriteFrameImage gUnknown_082FF408[] =
gHeap + 0xF800, 0x800,
};
-const struct SpriteFrameImage gUnknown_082FF428[] =
+const struct SpriteFrameImage gTrainerBackPicTable_Brendan[] =
{
gTrainerBackPic_Brendan, 0x0800,
gTrainerBackPic_Brendan + 0x0800, 0x0800,
@@ -48,7 +48,7 @@ const struct SpriteFrameImage gUnknown_082FF428[] =
gTrainerBackPic_Brendan + 0x1800, 0x0800,
};
-const struct SpriteFrameImage gUnknown_082FF448[] =
+const struct SpriteFrameImage gTrainerBackPicTable_May[] =
{
gTrainerBackPic_May, 0x0800,
gTrainerBackPic_May + 0x0800, 0x0800,
@@ -56,7 +56,7 @@ const struct SpriteFrameImage gUnknown_082FF448[] =
gTrainerBackPic_May + 0x1800, 0x0800,
};
-const struct SpriteFrameImage gUnknown_082FF468[] =
+const struct SpriteFrameImage gTrainerBackPicTable_Red[] =
{
gTrainerBackPic_Red, 0x0800,
gTrainerBackPic_Red + 0x0800, 0x0800,
@@ -65,7 +65,7 @@ const struct SpriteFrameImage gUnknown_082FF468[] =
gTrainerBackPic_Red + 0x2000, 0x0800,
};
-const struct SpriteFrameImage gUnknown_082FF490[] =
+const struct SpriteFrameImage gTrainerBackPicTable_Leaf[] =
{
gTrainerBackPic_Leaf, 0x0800,
gTrainerBackPic_Leaf + 0x0800, 0x0800,
@@ -74,7 +74,7 @@ const struct SpriteFrameImage gUnknown_082FF490[] =
gTrainerBackPic_Leaf + 0x2000, 0x0800,
};
-const struct SpriteFrameImage gUnknown_082FF4B8[] =
+const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[] =
{
gTrainerBackPic_RubySapphireBrendan, 0x0800,
gTrainerBackPic_RubySapphireBrendan + 0x0800, 0x0800,
@@ -82,7 +82,7 @@ const struct SpriteFrameImage gUnknown_082FF4B8[] =
gTrainerBackPic_RubySapphireBrendan + 0x1800, 0x0800,
};
-const struct SpriteFrameImage gUnknown_082FF4D8[] =
+const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[] =
{
gTrainerBackPic_RubySapphireMay, 0x0800,
gTrainerBackPic_RubySapphireMay + 0x0800, 0x0800,
@@ -90,7 +90,7 @@ const struct SpriteFrameImage gUnknown_082FF4D8[] =
gTrainerBackPic_RubySapphireMay + 0x1800, 0x0800,
};
-const struct SpriteFrameImage gUnknown_082FF4F8[] =
+const struct SpriteFrameImage gTrainerBackPicTable_Wally[] =
{
gTrainerBackPic_Wally, 0x0800,
gTrainerBackPic_Wally + 0x0800, 0x0800,
@@ -98,7 +98,7 @@ const struct SpriteFrameImage gUnknown_082FF4F8[] =
gTrainerBackPic_Wally + 0x1800, 0x0800,
};
-const struct SpriteFrameImage gUnknown_082FF518[] =
+const struct SpriteFrameImage gTrainerBackPicTable_Steven[] =
{
gTrainerBackPic_Steven, 0x0800,
gTrainerBackPic_Steven + 0x0800, 0x0800,
@@ -112,7 +112,7 @@ const union AnimCmd gAnimCmd_General_Frame0[] =
ANIMCMD_END,
};
-const union AnimCmd AnimCmd_82FF540[] =
+const union AnimCmd gAnimCmd_General_Frame3[] =
{
ANIMCMD_FRAME(3, 0),
ANIMCMD_END,
diff --git a/src/daycare.c b/src/daycare.c
index 6bdbd987e..885ac31a1 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -1244,22 +1244,22 @@ static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
static void Task_HandleDaycareLevelMenuInput(u8 taskId)
{
- u32 var = ListMenuHandleInputGetItemId(gTasks[taskId].tMenuListTaskId);
+ u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuListTaskId);
if (gMain.newKeys & A_BUTTON)
{
- switch (var)
+ switch (input)
{
case 0:
case 1:
- gSpecialVar_Result = var;
+ gSpecialVar_Result = input;
break;
case 5:
gSpecialVar_Result = 2;
break;
}
DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
- sub_819746C(gTasks[taskId].tWindowId, TRUE);
+ ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
RemoveWindow(gTasks[taskId].tWindowId);
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -1268,7 +1268,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
{
gSpecialVar_Result = 2;
DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
- sub_819746C(gTasks[taskId].tWindowId, TRUE);
+ ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
RemoveWindow(gTasks[taskId].tWindowId);
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -1283,7 +1283,7 @@ void ShowDaycareLevelMenu(void)
u8 daycareMenuTaskId;
windowId = AddWindow(&sDaycareLevelMenuWindowTemplate);
- NewMenuHelpers_DrawStdWindowFrame(windowId, FALSE);
+ DrawStdWindowFrame(windowId, FALSE);
menuTemplate = sDaycareListMenuLevelTemplate;
menuTemplate.windowId = windowId;
diff --git a/src/decoration.c b/src/decoration.c
index c4c3d6171..3c8809c6a 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -392,7 +392,9 @@ const struct SpritePalette gUnknown_085A73E0 = {
};
const struct OamData Unknown_085A73E8 = {
- .size = 1, .priority = 1
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
+ .priority = 1
};
const union AnimCmd Unknown_085A73F0[] = {
@@ -463,14 +465,14 @@ u8 sub_81269D4(u8 idx)
{
*winidx = AddWindow(&gUnknown_085A6B90[idx]);
}
- SetWindowBorderStyle(*winidx, 0, 0x214, 0xe);
+ DrawStdFrameWithCustomTileAndPalette(*winidx, 0, 0x214, 0xe);
schedule_bg_copy_tilemap_to_vram(0);
return *winidx;
}
void sub_8126A58(u8 idx)
{
- sub_8198070(sDecorMenuWindowIndices[idx], FALSE);
+ ClearStdWindowAndFrameToTransparent(sDecorMenuWindowIndices[idx], FALSE);
ClearWindowTilemap(sDecorMenuWindowIndices[idx]);
RemoveWindow(sDecorMenuWindowIndices[idx]);
schedule_bg_copy_tilemap_to_vram(0);
@@ -526,14 +528,14 @@ void sub_8126B80(u8 taskId)
PlaySE(SE_SELECT);
sSecretBasePCMenuActions[sSecretBasePCMenuCursorPos].func.void_u8(taskId);
break;
- case -2:
+ case MENU_NOTHING_CHOSEN:
sSecretBasePCMenuCursorPos = Menu_GetCursorPos();
if ((s8)menuPos != sSecretBasePCMenuCursorPos)
{
sub_8126C08();
}
break;
- case -1:
+ case MENU_B_PRESSED:
PlaySE(SE_SELECT);
SecretBasePC_Cancel(taskId);
break;
@@ -543,7 +545,7 @@ void sub_8126B80(u8 taskId)
void sub_8126C08(void)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, sSecretBasePCMenuItemDescriptions[sSecretBasePCMenuCursorPos], 0, 0, 2, 1, 3);
}
@@ -572,7 +574,7 @@ void SecretBasePC_PutAway(u8 taskId)
else
{
sub_8126A58(0);
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
FadeScreen(1, 0);
gTasks[taskId].data[2] = 0;
gTasks[taskId].func = sub_8129ABC;
@@ -617,7 +619,7 @@ void sub_8126DA4(u8 taskId)
void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId)
{
LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20);
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
sub_8126A58(0);
sub_8126DFC(taskId);
}
@@ -634,7 +636,7 @@ void sub_8126DFC(u8 taskId)
void sub_8126E44(u8 taskId)
{
- FillWindowPixelBuffer(sDecorMenuWindowIndices[1], 0x11);
+ FillWindowPixelBuffer(sDecorMenuWindowIndices[1], PIXEL_FILL(1));
sub_8126E8C(taskId);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sDecorMenuWindowIndices[1], 9, sCurDecorationCategory);
gTasks[taskId].func = sub_8127088;
@@ -713,12 +715,12 @@ void sub_8127088(u8 taskId)
input = Menu_ProcessInput();
switch (input)
{
- case -1:
+ case MENU_B_PRESSED:
case 8:
PlaySE(SE_SELECT);
sub_812719C(taskId);
break;
- case -2:
+ case MENU_NOTHING_CHOSEN:
break;
default:
PlaySE(SE_SELECT);
@@ -751,7 +753,7 @@ void sub_81270E8(u8 taskId)
void sub_8127180(u8 taskId)
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
sub_8126DFC(taskId);
}
@@ -771,7 +773,7 @@ void sub_81271CC(u8 taskId)
{
sub_8126A58(1);
sub_8126A88();
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
sub_8126C08();
gTasks[taskId].func = sub_8126B80;
}
@@ -779,7 +781,7 @@ void sub_81271CC(u8 taskId)
void sub_8127208(u8 taskId)
{
LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20);
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
gTasks[taskId].data[11] = 2;
sCurDecorationCategory = DECORCAT_DESK;
sub_8126DFC(taskId);
@@ -933,13 +935,13 @@ void sub_812764C(u8 taskId)
data = gTasks[taskId].data;
if (!gPaletteFade.active)
{
- input = ListMenuHandleInputGetItemId(data[13]);
+ input = ListMenu_ProcessInput(data[13]);
ListMenuGetScrollAndRow(data[13], &sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo);
switch (input)
{
- case -1:
+ case LIST_NOTHING_CHOSEN:
break;
- case -2:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
SecretBasePC_SelectedDecorActions[data[11]][1](taskId);
break;
@@ -968,7 +970,7 @@ void sub_8127744(u32 a0)
const u8 *txt;
winidx = sDecorMenuWindowIndices[3];
- FillWindowPixelBuffer(winidx, 0x11);
+ FillWindowPixelBuffer(winidx, PIXEL_FILL(1));
if (a0 >= sCurDecorCatCount)
{
txt = gText_GoBackPrevMenu;
@@ -1095,7 +1097,7 @@ void sub_8127A14(u8 taskId)
void sub_8127A30(u8 taskId)
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
gTasks[taskId].func = sub_8127A14;
}
@@ -1103,7 +1105,7 @@ void sub_8127A5C(u8 taskId)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
sub_81269D4(1);
sub_8127620(taskId);
}
@@ -1158,7 +1160,7 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
u16 i;
u16 j;
u16 behavior;
- u16 flags;
+ u16 impassableFlag;
u16 v0;
u16 v1;
s16 decLeft;
@@ -1173,11 +1175,11 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decor].tiles[i * decWidth + j]);
if (MetatileBehavior_IsSecretBaseImpassable(behavior) == TRUE || (gDecorations[decor].permission != DECORPERM_PASS_FLOOR && (behavior >> 12)))
{
- flags = 0xc00;
+ impassableFlag = METATILE_COLLISION_MASK;
}
else
{
- flags = 0x000;
+ impassableFlag = 0x000;
}
if (gDecorations[decor].permission != DECORPERM_NA_WALL && MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(decLeft, decBottom)) == TRUE)
{
@@ -1190,11 +1192,11 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
v1 = sub_8127B54(gDecorations[decor].id, i * decWidth + j);
if (v1 != 0xFFFF)
{
- MapGridSetMetatileEntryAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | flags | v1);
+ MapGridSetMetatileEntryAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | impassableFlag | v1);
}
else
{
- MapGridSetMetatileIdAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | flags);
+ MapGridSetMetatileIdAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | impassableFlag);
}
}
}
@@ -1244,17 +1246,17 @@ void sub_8127E18(void)
for (i = 0; i < 14; i ++)
{
- if (FlagGet(0xAE + i) == TRUE)
+ if (FlagGet(FLAG_DECORATION_1 + i) == TRUE)
{
- FlagClear(0xAE + i);
+ FlagClear(FLAG_DECORATION_1 + i);
for (j = 0; j < gMapHeader.events->eventObjectCount; j ++)
{
- if (gMapHeader.events->eventObjects[j].flagId == 0xAE + i)
+ if (gMapHeader.events->eventObjects[j].flagId == FLAG_DECORATION_1 + i)
{
break;
}
}
- VarSet(0x3F20 + gMapHeader.events->eventObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
+ VarSet(UNKNOWN_VAR_OFFSET_3F20 + gMapHeader.events->eventObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
gSpecialVar_0x8005 = gMapHeader.events->eventObjects[j].localId;
gSpecialVar_0x8006 = sCurDecorMapX;
gSpecialVar_0x8007 = sCurDecorMapY;
@@ -1502,7 +1504,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000;
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
if (!sub_81284F4(behaviorAt, decoration))
{
return FALSE;
@@ -1527,7 +1529,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000;
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
if (!MetatileBehavior_IsNormal(behaviorAt) && !sub_8128484(behaviorAt, behaviorBy))
{
return FALSE;
@@ -1547,7 +1549,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & 0xf000;
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & METATILE_ELEVATION_MASK;
if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsSecretBaseNorthWall(behaviorAt))
{
return FALSE;
@@ -1628,13 +1630,13 @@ void sub_8128950(u8 taskId)
void sub_81289D0(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &gUnknown_085A72C4);
}
void sub_81289F0(u8 taskId)
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
sub_8128AAC(taskId);
if (gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]].permission != DECORPERM_SOLID_MAT)
{
@@ -1693,13 +1695,13 @@ void sub_8128AAC(u8 taskId)
void sub_8128B80(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &gUnknown_085A72CC);
}
void sub_8128BA0(u8 taskId)
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
sub_8128BBC(taskId);
}
@@ -1887,7 +1889,7 @@ void sub_8128E18(u8 taskId)
void sub_8128FD8(u8 taskId)
{
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0;
gTasks[taskId].data[10] = 0;
gTasks[taskId].func = sub_8128E18;
@@ -2251,7 +2253,7 @@ void sub_81298EC(u8 taskId)
if (!gPaletteFade.active) {
DrawWholeMapView();
ScriptContext1_SetupScript(EventScript_275D2E);
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
gTasks[taskId].data[2] = 2;
}
break;
@@ -2343,7 +2345,7 @@ void sub_8129ABC(u8 taskId)
void sub_8129B34(u8 taskId)
{
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
gSprites[sDecor_CameraSpriteObjectIdx1].callback = sub_812A36C;
@@ -2588,7 +2590,7 @@ void sub_812A0E8(u8 taskId)
void sub_812A1A0(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &gUnknown_085A7348);
}
@@ -2601,13 +2603,13 @@ void sub_812A1C0(u8 taskId)
void sub_812A1F0(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &gUnknown_085A7350);
}
void sub_812A210(u8 taskId)
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
sub_812A22C(taskId);
}
@@ -2671,7 +2673,7 @@ void sub_812A334(void)
u8 taskId;
pal_fill_black();
- NewMenuHelpers_DrawDialogueFrame(0, 1);
+ DrawDialogueFrame(0, 1);
sub_8126ABC();
taskId = CreateTask(sub_812A2C4, 8);
gTasks[taskId].data[2] = 0;
@@ -2725,7 +2727,7 @@ void sub_812A3D4(u8 taskId)
void sub_812A458(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &gUnknown_085A741C);
}
diff --git a/src/dewford_trend.c b/src/dewford_trend.c
index cad5ef9c2..ee310af04 100644
--- a/src/dewford_trend.c
+++ b/src/dewford_trend.c
@@ -159,7 +159,7 @@ static void sub_8122804(struct EasyChatPair *s, u16 b, u8 c)
}
}
-void ReceiveEasyChatPairsData(void *a, u32 b, u8 unused)
+void ReceiveEasyChatPairsData(struct EasyChatPair *a, size_t size, u8 unused)
{
u16 i, j, r3, players;
struct EasyChatPair *buffer1, *buffer2, *src, *dst, *foo_of_buffer2;
@@ -176,7 +176,7 @@ void ReceiveEasyChatPairsData(void *a, u32 b, u8 unused)
{
players = GetLinkPlayerCount();
for (i = 0; i < players; i++)
- memcpy(&(buffer1[i * 5]), (u8 *)a + i * b, 40);
+ memcpy(&(buffer1[i * 5]), (u8 *)a + i * size, 40);
src = buffer1;
dst = buffer2;
r3 = 0;
diff --git a/src/diploma.c b/src/diploma.c
index b3d5a48fa..2113b09ed 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -13,8 +13,7 @@
#include "text.h"
#include "overworld.h"
#include "menu.h"
-
-extern bool16 sub_80C0944(void);
+#include "pokedex.h"
extern const u8 gText_DexNational[];
extern const u8 gText_DexHoenn[];
@@ -197,7 +196,7 @@ static void InitDiplomaWindow(void)
InitWindows(sDiplomaWinTemplates);
DeactivateAllTextPrinters();
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
}
diff --git a/src/dragon.c b/src/dragon.c
index 4a2ac1c51..befaf52e7 100644
--- a/src/dragon.c
+++ b/src/dragon.c
@@ -5,8 +5,6 @@
#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 *);
@@ -17,6 +15,8 @@ static void sub_81134B8(u8);
static void sub_8113574(struct Task *);
static void sub_811369C(struct Sprite *);
+EWRAM_DATA static u16 gUnknown_0203A100[7] = {0};
+
const union AnimCmd gUnknown_08596E60[] =
{
ANIMCMD_FRAME(0, 4),
@@ -209,7 +209,7 @@ void sub_8113064(struct Sprite *sprite)
sprite->data[5] = gBattleAnimArgs[5];
sprite->invisible = 1;
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
- sprite->callback = sub_80A66DC;
+ sprite->callback = TranslateSpriteLinearAndFlicker;
}
static void sub_8113100(struct Sprite *sprite)
diff --git a/src/easy_chat.c b/src/easy_chat.c
index c84895df5..4cc8b9c5b 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -1,129 +1,1097 @@
-
-// Includes
#include "global.h"
#include "alloc.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "overworld.h"
-#include "task.h"
-#include "main.h"
-#include "link.h"
+#include "bard_music.h"
+#include "bg.h"
+#include "data2.h"
+#include "decompress.h"
+#include "dewford_trend.h"
+#include "dynamic_placeholder_text_util.h"
+#include "easy_chat.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "field_message_box.h"
#include "field_weather.h"
-#include "window.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "international_string_util.h"
+#include "link.h"
+#include "main.h"
+#include "menu.h"
+#include "overworld.h"
#include "palette.h"
-#include "event_data.h"
-#include "easy_chat.h"
+#include "pokedex.h"
+#include "random.h"
+#include "sound.h"
#include "string_util.h"
-
-// Static type declarations
+#include "strings.h"
+#include "task.h"
+#include "text_window.h"
+#include "window.h"
+#include "constants/easy_chat.h"
+#include "constants/event_objects.h"
+#include "constants/flags.h"
+#include "constants/songs.h"
+#include "constants/species.h"
#define EZCHAT_TASK_STATE 0
-#define EZCHAT_TASK_KIND 1
+#define EZCHAT_TASK_TYPE 1
#define EZCHAT_TASK_WORDS 2
#define EZCHAT_TASK_MAINCALLBACK 4
#define EZCHAT_TASK_UNK06 6
#define EZCHAT_TASK_SIZE 7
-// Static RAM declarations
-
-EWRAM_DATA struct
-{
- u8 kind;
- u8 unk_01;
- u8 unk_02;
- u8 unk_03;
- u8 unk_04;
- s8 unk_05;
- s8 unk_06;
- u8 unk_07;
- u8 unk_08;
- u8 unk_09;
- u8 unk_0a;
- u8 unk_0b;
- u8 unk_0c;
- u8 unk_0d;
- u8 unk_0e[0x4];
- u8 sizeParam;
- u8 unk_13;
- u8 unk_14[0x20];
- const u8 *src;
- const u16 *words;
- u16 ecWordBuffer[9];
-} *gUnknown_0203A118 = NULL;
-
-EWRAM_DATA void *gUnknown_0203A11C = 0;
-EWRAM_DATA void *gUnknown_0203A120 = 0;
-
-// Static ROM declarations
+static EWRAM_DATA struct EasyChatScreen *sEasyChatScreen = NULL;
+static EWRAM_DATA struct Unk203A11C *sUnknown_0203A11C = NULL;
+static EWRAM_DATA struct Unk203A120 *sUnknown_0203A120 = NULL;
static void sub_811A2C0(u8);
-static void sub_811A278(void);
+static void MainCallback_EasyChatScreen(void);
static bool8 sub_811A428(u8);
static void sub_811A2FC(u8);
static void sub_811A4D0(MainCallback);
static bool32 sub_811A88C(u16);
static void sub_811A8A4(u16);
-void sub_811A8F0(void);
static bool8 EasyChat_AllocateResources(u8, u16 *, u8);
static void EasyChat_FreeResources(void);
static u16 sub_811AAAC(void);
static u16 sub_811AB68(void);
-u16 sub_811ACDC(void);
-u16 sub_811AE44(void);
-u16 sub_811AF00(void);
-u16 sub_811AF8C(void);
-u16 sub_811AFEC(void);
-u16 sub_811B040(void);
-u16 sub_811B08C(void);
-u16 sub_811B0BC(void);
-u16 sub_811B0E8(void);
-u16 sub_811B0F8(void);
-u16 sub_811B150(void);
-u16 sub_811B1B4(void);
-u8 sub_811BA68(void);
-u8 sub_811BCC8(u8);
-void sub_811BDF0(u8 *);
-void sub_811BF78(void);
-bool8 sub_811BF8C(void);
-bool8 sub_811BFA4(void);
-void sub_811C13C(void);
-/*static*/ void sub_811C158(u16);
-/*static*/ bool8 sub_811C170(void);
-bool8 sub_811F28C(void);
-void sub_811F2B8(void);
-u8 sub_811F3AC(void);
-
-// .rodata
-
-extern const struct {
+static u16 sub_811ACDC(void);
+static u16 sub_811AE44(void);
+static u16 sub_811AF00(void);
+static u16 sub_811AF8C(void);
+static u16 sub_811AFEC(void);
+static u16 sub_811B040(void);
+static u16 sub_811B08C(void);
+static u16 sub_811B0BC(void);
+static u16 sub_811B0E8(void);
+static u16 sub_811B0F8(void);
+static u16 sub_811B150(void);
+static u16 sub_811B1B4(void);
+static u8 GetEasyChatScreenFrameId(void);
+static u8 GetEachChatScreenTemplateId(u8);
+static void sub_811BDF0(u8 *);
+static void sub_811BF78(void);
+static bool8 sub_811BF8C(void);
+static bool8 sub_811BFA4(void);
+static void sub_811C13C(void);
+static void sub_811C158(u16);
+static bool8 sub_811C170(void);
+static bool8 sub_811F28C(void);
+static void sub_811F2B8(void);
+static u8 sub_811F3AC(void);
+static int FooterHasFourOptions(void);
+static int sub_811B184(void);
+static int sub_811B264(void);
+static int sub_811B32C(void);
+static int sub_811B2B0(void);
+static int sub_811B33C(void);
+static int sub_811B368(void);
+static u16 sub_811B528(int);
+static u16 sub_811B794(u32);
+static int sub_811B394(void);
+static u8 sub_811B2A4(void);
+static void sub_811B3E4(void);
+static void sub_811BE9C(void);
+static int sub_811B4EC(void);
+static void sub_811B418(void);
+static void sub_811B454(void);
+static int sub_811BD64(void);
+static int sub_811BDB0(void);
+static int sub_811BD2C(void);
+static int sub_811BCF4(void);
+static u16 sub_811B8E8(void);
+static u8 sub_811F3B8(u8);
+static void sub_811F548(int, u16);
+static int sub_811B908(void);
+static u16 sub_811F5B0(void);
+static void sub_811B488(u16);
+static u16 sub_811B940(void);
+static u16 sub_811F578(u16);
+static int sub_811BF88(int);
+static u16 sub_811B8C8(void);
+static int sub_811B568(u32);
+static int sub_811B634(u32);
+static int sub_811B6C4(u32);
+static void sub_811B978(void);
+static void sub_811B744(void);
+static u8 sub_811B9C8(void);
+static void sub_811B768(void);
+static u8 sub_811B960(u8);
+static void sub_811B9A0(void);
+static u8 sub_811BA1C(void);
+static int sub_811BF20(void);
+static u16 sub_811BF40(void);
+static bool8 sub_811CE94(void);
+static void sub_811CF64(void);
+static void sub_811CF04(void);
+static void sub_811D60C(void);
+static void sub_811D424(u16 *);
+static void sub_811D230(void);
+static void sub_811E948(void);
+static void sub_811CFCC(void);
+static void sub_811D0BC(void);
+static void sub_811D2C8(void);
+static void sub_811D684(void);
+static void sub_811DE90(void);
+static void sub_811DEC4(void);
+static void sub_811DF28(struct Sprite *);
+static void sub_811DE5C(u8, u8, u8, u8);
+static void sub_811E5D4(void);
+static void sub_811E720(void);
+static void sub_811E828(void);
+static bool8 sub_811C2D4(void);
+static bool8 sub_811C30C(void);
+static bool8 sub_811C3E4(void);
+static bool8 sub_811C48C(void);
+static bool8 sub_811C404(void);
+static bool8 sub_811C448(void);
+static bool8 sub_811C4D0(void);
+static bool8 sub_811C518(void);
+static bool8 sub_811C554(void);
+static bool8 sub_811C620(void);
+static bool8 sub_811C830(void);
+static bool8 sub_811C8F0(void);
+static bool8 sub_811C99C(void);
+static bool8 sub_811CA5C(void);
+static bool8 sub_811C780(void);
+static bool8 sub_811C78C(void);
+static bool8 sub_811C7D4(void);
+static bool8 sub_811CB18(void);
+static bool8 sub_811CB98(void);
+static bool8 sub_811CB24(void);
+static bool8 sub_811CC90(void);
+static bool8 sub_811CC08(void);
+static bool8 sub_811C6C0(void);
+static bool8 sub_811CD14(void);
+static bool8 sub_811CD54(void);
+static bool8 sub_811CD94(void);
+static bool8 sub_811CDD4(void);
+static bool8 sub_811CE14(void);
+static bool8 sub_811CE54(void);
+static void sub_811DF60(u8, u8);
+static int GetFooterOptionXOffset(int);
+static void sub_811DF90(void);
+static void sub_811D104(u8);
+static void sub_811D214(u8);
+static void sub_811DFB0(void);
+static void sub_811D6D4(void);
+static void sub_811D9CC(int);
+static void sub_811E3AC(void);
+static bool8 sub_811E418(void);
+static void sub_811DFC8(void);
+static void sub_811E6E0(int);
+static bool8 sub_811DAA4(void);
+static void sub_811E64C(void);
+static void sub_811E050(void);
+static void sub_811E4AC(void);
+static void sub_811E6B0(void);
+static void sub_811E55C(void);
+static bool8 sub_811E4D0(void);
+static bool8 sub_811E5B8(void);
+static void sub_811E578(void);
+static void sub_811E088(void);
+static void sub_811DDAC(s16, u8);
+static bool8 sub_811DE10(void);
+static void sub_811D9B4(void);
+static void sub_811D698(u32);
+static void sub_811E288(void);
+static void sub_811E794(void);
+static void sub_811E380(void);
+static void sub_811E7F8(void);
+static void sub_811E30C(void);
+static void sub_811D7A4(void);
+static void sub_811D7C8(void);
+static int sub_811DE48(void);
+static void sub_811D7EC(void);
+static void sub_811D830(void);
+static void sub_811D058(u8, u8, const u8 *, u8, u8, u8, u8, u8, u8);
+static void sub_811DD84(void);
+static void sub_811D6F4(void);
+static void sub_811D758(void);
+static void sub_811D794(void);
+static const u8 *GetEasyChatWordGroupName(u8);
+static void sub_811D864(u8, u8);
+static void sub_811D950(u8, u8);
+static void sub_811DADC(u8);
+static void sub_811DC28(int, int, int, int);
+static void sub_811E0EC(s8, s8);
+static void sub_811E1A4(s8, s8);
+static void sub_811E2DC(struct Sprite *);
+static void sub_811E34C(u8, u8);
+static bool8 sub_811F0F8(void);
+static u16 sub_811F108(void);
+static void sub_811F2D4(void);
+static void sub_811F46C(void);
+static u8 *CopyEasyChatWordPadded(u8 *, u16, u16);
+static u8 sub_811F860(u16);
+static u16 sub_811F5C4(u16);
+static u16 sub_811F6B8(u16);
+static bool8 sub_811F764(u16, u8);
+static int sub_811F838(u16);
+static void DoQuizAnswerEasyChatScreen(void);
+static void DoQuizQuestionEasyChatScreen(void);
+static void DoQuizSetAnswerEasyChatScreen(void);
+static void DoQuizSetQuestionEasyChatScreen(void);
+
+struct Unk8597530
+{
u16 word;
MainCallback callback;
-} gUnknown_08597530[4];
-extern const struct {
- u8 unk_00;
- u8 unk_01;
- u8 unk_02;
- u8 unk_03;
- u8 *data;
- u8 filler_08[16];
-} gUnknown_08597550[];
+};
+
+static const struct Unk8597530 sUnknown_08597530[] = {
+ {
+ .word = 26,
+ .callback = DoQuizAnswerEasyChatScreen,
+ },
+ {
+ .word = 25,
+ .callback = DoQuizQuestionEasyChatScreen,
+ },
+ {
+ .word = 28,
+ .callback = DoQuizSetAnswerEasyChatScreen,
+ },
+ {
+ .word = 27,
+ .callback = DoQuizSetQuestionEasyChatScreen,
+ },
+};
+
+static const struct EasyChatScreenTemplate sEasyChatScreenTemplates[] = {
+ {
+ .type = EASY_CHAT_TYPE_PROFILE,
+ .numColumns = 2,
+ .numRows = 2,
+ .frameId = 0,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Profile,
+ .instructionsText1 = gText_CombineFourWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeYourProfile,
+ .confirmText1 = gText_YourProfile,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_BATTLE_START,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_AtTheBattlesStart,
+ .instructionsText1 = gText_CombineSixWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeAMessage,
+ .confirmText1 = gText_YourFeelingAtTheBattlesStart,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_BATTLE_WON,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_UponWinningABattle,
+ .instructionsText1 = gText_CombineSixWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeAMessage,
+ .confirmText1 = gText_WhatYouSayIfYouWin,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_BATTLE_LOST,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_UponLosingABattle,
+ .instructionsText1 = gText_CombineSixWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeAMessage,
+ .confirmText1 = gText_WhatYouSayIfYouLose,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_MAIL,
+ .numColumns = 2,
+ .numRows = 5,
+ .frameId = 2,
+ .fourFooterOptions = FALSE,
+ .titleText = NULL,
+ .instructionsText1 = gText_CombineNineWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeAMessage2,
+ .confirmText1 = gText_TheMailMessage,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_INTERVIEW,
+ .numColumns = 2,
+ .numRows = 2,
+ .frameId = 5,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_CombineFourWordsOrPhrases,
+ .instructionsText2 = gText_LetsReplyToTheInterview,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_BARD_SONG,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_TheBardsSong,
+ .instructionsText1 = gText_ChangeJustOneWordOrPhrase,
+ .instructionsText2 = gText_AndImproveTheBardsSong,
+ .confirmText1 = gText_TheBardsSong2,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_FAN_CLUB,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_FindWordsThatDescribeYour,
+ .instructionsText2 = gText_FeelingsRightNow,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_TRENDY_PHRASE,
+ .numColumns = 2,
+ .numRows = 1,
+ .frameId = 3,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_WhatsHipAndHappening,
+ .instructionsText1 = gText_CombineTwoWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeATrendySaying,
+ .confirmText1 = gText_TheTrendySaying,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_QUIZ_QUESTION,
+ .numColumns = 2,
+ .numRows = 5,
+ .frameId = 7,
+ .fourFooterOptions = TRUE,
+ .titleText = NULL,
+ .instructionsText1 = gText_AfterYouHaveReadTheQuiz,
+ .instructionsText2 = gText_QuestionPressTheAButton,
+ .confirmText1 = NULL,
+ .confirmText2 = NULL,
+ },
+ {
+ .type = EASY_CHAT_TYPE_QUIZ_ANSWER,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 6,
+ .fourFooterOptions = TRUE,
+ .titleText = gText_TheQuizAnswerIs,
+ .instructionsText1 = gText_OutOfTheListedChoices,
+ .instructionsText2 = gText_SelectTheAnswerToTheQuiz,
+ .confirmText1 = gText_TheAnswerColon,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_QUIZ_SET_QUESTION,
+ .numColumns = 2,
+ .numRows = 5,
+ .frameId = 8,
+ .fourFooterOptions = TRUE,
+ .titleText = NULL,
+ .instructionsText1 = gText_CombineNineWordsOrPhrases,
+ .instructionsText2 = gText_AndCreateAQuiz,
+ .confirmText1 = gText_IsThisQuizOK,
+ .confirmText2 = NULL,
+ },
+ {
+ .type = EASY_CHAT_TYPE_QUIZ_SET_ANSWER,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 6,
+ .fourFooterOptions = TRUE,
+ .titleText = gText_TheQuizAnswerIs,
+ .instructionsText1 = gText_PickAWordOrPhraseAnd,
+ .instructionsText2 = gText_SetTheQuizAnswer,
+ .confirmText1 = gText_IsThisQuizOK,
+ .confirmText2 = NULL,
+ },
+ {
+ .type = EASY_CHAT_TYPE_BARD_SONG,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_TheBardsSong,
+ .instructionsText1 = gText_ChangeJustOneWordOrPhrase,
+ .instructionsText2 = gText_AndImproveTheBardsSong,
+ .confirmText1 = gText_TheBardsSong2,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_APPRENTICE,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_ApprenticesPhrase,
+ .instructionsText1 = gText_FindWordsWhichFit,
+ .instructionsText2 = gText_TheTrainersImage,
+ .confirmText1 = gText_ApprenticePhrase,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_GOOD_SAYING,
+ .numColumns = 2,
+ .numRows = 1,
+ .frameId = 3,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_GoodSaying,
+ .instructionsText1 = gText_CombineTwoWordsOrPhrases2,
+ .instructionsText2 = gText_ToTeachHerAGoodSaying,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_GABBY_AND_TY,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_FindWordsThatDescribeYour,
+ .instructionsText2 = gText_FeelingsRightNow,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_FindWordsThatDescribeYour,
+ .instructionsText2 = gText_FeelingsRightNow,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_CONTEST_INTERVIEW,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_FindWordsThatDescribeYour,
+ .instructionsText2 = gText_FeelingsRightNow,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_FAN_QUESTION,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_FansQuestion,
+ .instructionsText1 = gText_FindWordsWhichFit,
+ .instructionsText2 = gText_TheTrainersImage,
+ .confirmText1 = gText_TheImage,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_QUESTIONNAIRE,
+ .numColumns = 2,
+ .numRows = 2,
+ .frameId = 0,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Questionnaire,
+ .instructionsText1 = gText_CombineFourWordsOrPhrases,
+ .instructionsText2 = gText_AndFillOutTheQuestionnaire,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+};
+
+static const u8 sUnknown_08597748[][7] = {
+ { 1, 2, 3, 4, 5, 6, 0},
+ { 7, 8, 9, 10, 11, 12, 0},
+ {13, 14, 15, 16, 17, 18, 19},
+ {20, 21, 22, 23, 24, 25, 26},
+};
+
+static const u16 sMysteryGiftPhrase[] = {
+ EC_WORD_LINK,
+ EC_WORD_TOGETHER,
+ EC_WORD_WITH,
+ EC_WORD_ALL,
+};
+
+static const u16 sBerryMasterWifePhrases[][2] = {
+ {EC_WORD_GREAT, EC_WORD_BATTLE},
+ {EC_WORD_CHALLENGE, EC_WORD_CONTEST},
+ {EC_WORD_OVERWHELMING, EC_POKEMON(LATIAS)},
+ {EC_WORD_COOL, EC_POKEMON(LATIOS)},
+ {EC_WORD_SUPER, EC_WORD_HUSTLE},
+};
+
+static const u16 sEasyChatTriangleCursorPalette[] = INCBIN_U16("graphics/easy_chat/triangle_cursor.gbapal");
+static const u32 sEasyChatTriangleCursorGfx[] = INCBIN_U32("graphics/easy_chat/triangle_cursor.4bpp");
+static const u32 sEasyChatScrollIndicatorGfx[] = INCBIN_U32("graphics/easy_chat/scroll_indicator.4bpp");
+static const u32 sEasyChatStartSelectButtonsGfx[] = INCBIN_U32("graphics/easy_chat/start_select_buttons.4bpp");
+static const u16 sUnknown_085979C0[] = INCBIN_U16("graphics/misc/interview_frame.gbapal");
+static const u32 sUnknown_085979E0[] = INCBIN_U32("graphics/misc/interview_frame.4bpp.lz");
+static const u16 sUnknown_08597B14[] = INCBIN_U16("graphics/misc/interview_frame_orange.gbapal");
+static const u16 sUnknown_08597B34[] = INCBIN_U16("graphics/misc/interview_frame_green.gbapal");
+static const u32 sUnknown_08597B54[] = INCBIN_U32("graphics/misc/interview_frame_2.4bpp.lz");
+static const u16 sUnknown_08597C1C[] = INCBIN_U16("graphics/misc/8597C1C.gbapal");
+static const u16 sUnknown_08597C24[] = INCBIN_U16("graphics/misc/8597C24.gbapal");
+
+static const struct EasyChatPhraseFrameDimensions sPhraseFrameDimensions[] = {
+ {
+ .left = 3,
+ .top = 4,
+ .width = 24,
+ .height = 4,
+ .footerId = 0,
+ },
+ {
+ .left = 3,
+ .top = 3,
+ .width = 24,
+ .height = 6,
+ .footerId = 0,
+ },
+ {
+ .left = 3,
+ .top = 0,
+ .width = 24,
+ .height = 10,
+ .footerId = 0,
+ },
+ {
+ .left = 3,
+ .top = 5,
+ .width = 24,
+ .height = 2,
+ .footerId = 0,
+ },
+ {
+ .left = 16,
+ .top = 5,
+ .width = 12,
+ .height = 2,
+ .footerId = 0,
+ },
+ {
+ .left = 3,
+ .top = 4,
+ .width = 24,
+ .height = 4,
+ .footerId = 0,
+ },
+ {
+ .left = 9,
+ .top = 4,
+ .width = 12,
+ .height = 2,
+ .footerId = 1,
+ },
+ {
+ .left = 5,
+ .top = 3,
+ .width = 0x14,
+ .height = 10,
+ .footerId = 3,
+ },
+ {
+ .left = 3,
+ .top = 0,
+ .width = 24,
+ .height = 10,
+ .footerId = 2,
+ },
+};
+
+static const struct BgTemplate sEasyChatBgTemplates[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 28,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0,
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0,
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x80,
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0,
+ },
+};
+
+static const struct WindowTemplate sEasyChatWindowTemplates[] = {
+ {
+ .bg = 1,
+ .tilemapLeft = 6,
+ .tilemapTop = 0,
+ .width = 18,
+ .height = 2,
+ .paletteNum = 10,
+ .baseBlock = 0x10,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 3,
+ .tilemapTop = 15,
+ .width = 24,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0xA,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 0,
+ .width = 28,
+ .height = 32,
+ .paletteNum = 3,
+ .baseBlock = 0,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+static const struct WindowTemplate sEasyChatYesNoWindowTemplate = {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 9,
+ .width = 5,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x6A,
+};
+
+static const u8 sText_Clear17[] = _("{CLEAR 17}");
+
+static const u8 *const sUnknown_08597C90[] = {
+ gUnknown_862B810,
+ gUnknown_862B832,
+ gUnknown_862B84B,
+ gUnknown_862B86C,
+};
+
+static const struct SpriteSheet sEasyChatSpriteSheets[] = {
+ {
+ .data = sEasyChatTriangleCursorGfx,
+ .size = 0x0020,
+ .tag = 0
+ },
+ {
+ .data = sEasyChatScrollIndicatorGfx,
+ .size = 0x0100,
+ .tag = 2
+ },
+ {
+ .data = sEasyChatStartSelectButtonsGfx,
+ .size = 0x0100,
+ .tag = 3
+ },
+ {0}
+};
+
+static const struct SpritePalette sEasyChatSpritePalettes[] = {
+ {
+ .data = sEasyChatTriangleCursorPalette,
+ .tag = 0,
+ },
+ {
+ .data = gEasyChatCursor_Pal,
+ .tag = 1,
+ },
+ {
+ .data = gEasyChatRightWindow_Pal,
+ .tag = 2,
+ },
+ {
+ .data = sUnknown_085979C0,
+ .tag = 3,
+ },
+ {0}
+};
+
+static const struct CompressedSpriteSheet sUnknown_08597CE8[] = {
+ {
+ .data = sUnknown_085979E0,
+ .size = 0x0800,
+ .tag = 5,
+ },
+ {
+ .data = gEasyChatCursor_Gfx,
+ .size = 0x1000,
+ .tag = 1,
+ },
+ {
+ .data = gEasyChatRightWindow_Gfx,
+ .size = 0x0800,
+ .tag = 6,
+ },
+ {
+ .data = gEasyChatMode_Gfx,
+ .size = 0x1000,
+ .tag = 4,
+ },
+};
+
+static const u8 sUnknown_08597D08[] = {0, 12, 24, 56, 68, 80, 92};
+
+static const struct OamData sOamData_8597D10 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x8),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(8x8),
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteTemplate sUnknown_08597D18 = {
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &sOamData_8597D10,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_811DF28,
+};
+
+static const struct OamData sUnknown_08597D30 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x32),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(64x32),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sUnknown_08597D38[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597D40[] = {
+ ANIMCMD_FRAME(32, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597D48[] = {
+ ANIMCMD_FRAME(64, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597D50[] = {
+ ANIMCMD_FRAME(96, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sUnknown_08597D58[] = {
+ sUnknown_08597D38,
+ sUnknown_08597D40,
+ sUnknown_08597D48,
+ sUnknown_08597D50,
+};
+
+static const struct SpriteTemplate sUnknown_08597D68 = {
+ .tileTag = 1,
+ .paletteTag = 1,
+ .oam = &sUnknown_08597D30,
+ .anims = sUnknown_08597D58,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_811DF28,
+};
+
+static const struct OamData sUnknown_08597D80 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x32),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(64x32),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sUnknown_08597D88[] = {
+ ANIMCMD_FRAME(96, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597D90[] = {
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597D9C[] = {
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597DA8[] = {
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_FRAME(96, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597DB4[] = {
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sUnknown_08597DBC[] = {
+ sUnknown_08597D88,
+ sUnknown_08597D90,
+ sUnknown_08597D9C,
+ sUnknown_08597DA8,
+ sUnknown_08597DB4,
+};
+
+static const struct SpriteTemplate sUnknown_08597DD0 = {
+ .tileTag = 4,
+ .paletteTag = 2,
+ .oam = &sUnknown_08597D80,
+ .anims = sUnknown_08597DBC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct OamData sUnknown_08597DE8 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteTemplate sUnknown_08597DF0 = {
+ .tileTag = 6,
+ .paletteTag = 2,
+ .oam = &sUnknown_08597DE8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct OamData sUnknown_08597E08 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x8),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(32x8),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData gUnknown_08597E10 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sUnknown_08597E18[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597E20[] = {
+ ANIMCMD_FRAME(4, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sUnknown_08597E28[] = {
+ sUnknown_08597E18,
+ sUnknown_08597E20,
+};
+
+static const struct SpriteTemplate sUnknown_08597E30 = {
+ .tileTag = 3,
+ .paletteTag = 2,
+ .oam = &sUnknown_08597E08,
+ .anims = sUnknown_08597E28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct SpriteTemplate sUnknown_08597E48 = {
+ .tileTag = 2,
+ .paletteTag = 2,
+ .oam = &gUnknown_08597E10,
+ .anims = sUnknown_08597E28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const u8 sFooterOptionXOffsets[][4] = {
+ {16, 111, 196, 0},
+ {16, 78, 130, 160},
+ {16, 80, 134, 170},
+};
+
+static const u8 *const sFooterTextOptions[][4] = {
+ {gText_DelAll, gText_Cancel5, gText_Ok2, NULL},
+ {gText_DelAll, gText_Cancel5, gText_Ok2, gText_Quiz},
+ {gText_DelAll, gText_Cancel5, gText_Ok2, gText_Answer},
+};
+
+#include "data/easy_chat/easy_chat_groups.h"
+#include "data/easy_chat/easy_chat_words_by_letter.h"
+
+const u8 *const gEasyChatGroupNamePointers[] = {
+ [EC_GROUP_POKEMON] = gEasyChatGroupName_Pokemon,
+ [EC_GROUP_TRAINER] = gEasyChatGroupName_Trainer,
+ [EC_GROUP_STATUS] = gEasyChatGroupName_Status,
+ [EC_GROUP_BATTLE] = gEasyChatGroupName_Battle,
+ [EC_GROUP_GREETINGS] = gEasyChatGroupName_Greetings,
+ [EC_GROUP_PEOPLE] = gEasyChatGroupName_People,
+ [EC_GROUP_VOICES] = gEasyChatGroupName_Voices,
+ [EC_GROUP_SPEECH] = gEasyChatGroupName_Speech,
+ [EC_GROUP_ENDINGS] = gEasyChatGroupName_Endings,
+ [EC_GROUP_FEELINGS] = gEasyChatGroupName_Feelings,
+ [EC_GROUP_CONDITIONS] = gEasyChatGroupName_Conditions,
+ [EC_GROUP_ACTIONS] = gEasyChatGroupName_Actions,
+ [EC_GROUP_LIFESTYLE] = gEasyChatGroupName_Lifestyle,
+ [EC_GROUP_HOBBIES] = gEasyChatGroupName_Hobbies,
+ [EC_GROUP_TIME] = gEasyChatGroupName_Time,
+ [EC_GROUP_MISC] = gEasyChatGroupName_Misc,
+ [EC_GROUP_ADJECTIVES] = gEasyChatGroupName_Adjectives,
+ [EC_GROUP_EVENTS] = gEasyChatGroupName_Events,
+ [EC_GROUP_MOVE_1] = gEasyChatGroupName_Move1,
+ [EC_GROUP_MOVE_2] = gEasyChatGroupName_Move2,
+ [EC_GROUP_TRENDY_SAYING] = gEasyChatGroupName_TrendySaying,
+ [EC_GROUP_POKEMON_2] = gEasyChatGroupName_Pokemon2,
+};
+
+static const u16 sDefaultProfileWords[] = {
+ EC_WORD_I_AM,
+ EC_WORD_A,
+ EC_WORD_POKEMON,
+ EC_WORD_FRIEND,
+};
+
+static const u16 sDefaultBattleStartWords[] = {
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_READY,
+ EC_WORD_QUES,
+ EC_WORD_HERE_I_COME,
+ EC_WORD_EXCL,
+};
+
+static const u16 sUnknown_0859E640[] = {
+ EC_WORD_YAY,
+ EC_WORD_YAY,
+ EC_WORD_EXCL_EXCL,
+ EC_WORD_I_VE,
+ EC_WORD_WON,
+ EC_WORD_EXCL_EXCL,
+};
+
+static const u16 sUnknown_0859E64C[] = {
+ EC_WORD_TOO,
+ EC_WORD_BAD,
+ EC_WORD_ELLIPSIS,
+ EC_WORD_WE,
+ EC_WORD_LOST,
+ EC_WORD_ELLIPSIS,
+};
-// .text
+static const u16 sUnknown_0859E658[] = {
+ SPECIES_DEOXYS,
+};
-void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam)
+void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType)
{
u8 taskId;
ResetTasks();
taskId = CreateTask(sub_811A2C0, 0);
- gTasks[taskId].data[EZCHAT_TASK_KIND] = kind;
- gTasks[taskId].data[EZCHAT_TASK_SIZE] = sizeParam;
+ gTasks[taskId].data[EZCHAT_TASK_TYPE] = type;
+ gTasks[taskId].data[EZCHAT_TASK_SIZE] = displayedPersonType;
SetWordTaskArg(taskId, EZCHAT_TASK_WORDS, (u32)words);
SetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK, (u32)callback);
- SetMainCallback2(sub_811A278);
+ SetMainCallback2(MainCallback_EasyChatScreen);
}
-static void sub_811A278(void)
+static void MainCallback_EasyChatScreen(void)
{
RunTasks();
AnimateSprites();
@@ -131,7 +1099,7 @@ static void sub_811A278(void)
UpdatePaletteFade();
}
-static void sub_811A290(void)
+static void VBlankCallback_EasyChatScreen(void)
{
TransferPlttBuffer();
LoadOam();
@@ -146,7 +1114,7 @@ static void sub_811A2A4(u8 taskId, TaskFunc taskFunc)
static void sub_811A2C0(u8 taskId)
{
- if (!is_c1_link_related_active())
+ if (!IsUpdateLinkStateCBActive())
{
while (sub_811A428(taskId));
}
@@ -169,22 +1137,22 @@ static void sub_811A2FC(u8 taskId)
switch (data[EZCHAT_TASK_STATE])
{
case 0:
- SetVBlankCallback(sub_811A290);
+ SetVBlankCallback(VBlankCallback_EasyChatScreen);
BlendPalettes(0xFFFFFFFF, 16, 0);
- BeginNormalPaletteFade(-1, -1, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, 0);
data[EZCHAT_TASK_STATE] = 5;
break;
case 1:
v0 = sub_811AAAC();
if (sub_811A88C(v0))
{
- BeginNormalPaletteFade(-1, -2, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, 0);
data[EZCHAT_TASK_STATE] = 3;
data[EZCHAT_TASK_UNK06] = v0;
}
else if (v0 == 0x18)
{
- BeginNormalPaletteFade(-1, -1, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, 0);
data[EZCHAT_TASK_STATE] = 4;
}
else if (v0 != 0)
@@ -196,27 +1164,19 @@ static void sub_811A2FC(u8 taskId)
break;
case 2:
if (!sub_811C170())
- {
data[EZCHAT_TASK_STATE] = 1;
- }
break;
case 3:
if (!gPaletteFade.active)
- {
sub_811A8A4(data[EZCHAT_TASK_UNK06]);
- }
break;
case 4:
if (!gPaletteFade.active)
- {
sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
- }
break;
case 5:
if (!gPaletteFade.active)
- {
data[EZCHAT_TASK_STATE] = 1;
- }
break;
}
}
@@ -241,7 +1201,7 @@ static bool8 sub_811A428(u8 taskId)
}
break;
case 2:
- if (!EasyChat_AllocateResources(data[EZCHAT_TASK_KIND], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS), data[EZCHAT_TASK_SIZE]))
+ if (!EasyChat_AllocateResources(data[EZCHAT_TASK_TYPE], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS), data[EZCHAT_TASK_SIZE]))
{
sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
}
@@ -274,98 +1234,98 @@ static void sub_811A4D0(MainCallback callback)
SetMainCallback2(callback);
}
-void easy_chat_input_maybe(void)
+void ShowEasyChatScreen(void)
{
int i;
u16 *words;
struct MauvilleManBard *bard;
- u8 sizeParam = 3;
+ u8 displayedPersonType = EASY_CHAT_PERSON_DISPLAY_NONE;
switch (gSpecialVar_0x8004)
{
- case 0:
- words = gSaveBlock1Ptr->unk2BB0;
+ case EASY_CHAT_TYPE_PROFILE:
+ words = gSaveBlock1Ptr->easyChatProfile;
break;
- case 1:
- words = gSaveBlock1Ptr->unk2BBC;
+ case EASY_CHAT_TYPE_BATTLE_START:
+ words = gSaveBlock1Ptr->easyChatBattleStart;
break;
- case 2:
- words = gSaveBlock1Ptr->unk2BC8;
+ case EASY_CHAT_TYPE_BATTLE_WON:
+ words = gSaveBlock1Ptr->easyChatBattleWon;
break;
- case 3:
- words = gSaveBlock1Ptr->unk2BD4;
+ case EASY_CHAT_TYPE_BATTLE_LOST:
+ words = gSaveBlock1Ptr->easyChatBattleLost;
break;
- case 4:
+ case EASY_CHAT_TYPE_MAIL:
words = gSaveBlock1Ptr->mail[gSpecialVar_0x8005].words;
break;
- case 6:
+ case EASY_CHAT_TYPE_BARD_SONG:
bard = &gSaveBlock1Ptr->oldMan.bard;
for (i = 0; i < 6; i ++)
- {
bard->temporaryLyrics[i] = bard->songLyrics[i];
- }
+
words = bard->temporaryLyrics;
break;
- case 5:
+ case EASY_CHAT_TYPE_INTERVIEW:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words;
- sizeParam = gSpecialVar_0x8006;
+ displayedPersonType = gSpecialVar_0x8006;
break;
- case 7:
+ case EASY_CHAT_TYPE_FAN_CLUB:
words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words[gSpecialVar_0x8006];
- sizeParam = 1;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
break;
- case 8:
+ case EASY_CHAT_TYPE_UNK_8:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].unkShow04.words;
- sizeParam = 0;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE;
break;
- case 9:
+ case EASY_CHAT_TYPE_TRENDY_PHRASE:
words = (u16 *)gStringVar3;
words[0] = gSaveBlock1Ptr->easyChatPairs[0].words[0];
words[1] = gSaveBlock1Ptr->easyChatPairs[0].words[1];
break;
- case 10:
+ case EASY_CHAT_TYPE_GABBY_AND_TY:
words = gSaveBlock1Ptr->gabbyAndTyData.quote;
*words = -1;
- sizeParam = 1;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
break;
- case 11:
+ case EASY_CHAT_TYPE_CONTEST_INTERVIEW:
words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words[gSpecialVar_0x8006];
- sizeParam = 0;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE;
break;
- case 12:
+ case EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words18;
- sizeParam = 1;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
break;
- case 13:
+ case EASY_CHAT_TYPE_GOOD_SAYING:
words = (u16 *)gStringVar3;
InitializeEasyChatWordArray(words, 2);
break;
- case 14:
+ case EASY_CHAT_TYPE_FAN_QUESTION:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanClubSpecial.words;
words[0] = -1;
- sizeParam = 2;
+ displayedPersonType = EASY_CHAT_PERSON_BOY;
break;
- case 15:
+ case EASY_CHAT_TYPE_QUIZ_ANSWER:
words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016;
break;
- case 16:
+ case EASY_CHAT_TYPE_QUIZ_QUESTION:
return;
- case 17:
+ case EASY_CHAT_TYPE_QUIZ_SET_QUESTION:
words = gSaveBlock1Ptr->lilycoveLady.quiz.unk_002;
break;
- case 18:
+ case EASY_CHAT_TYPE_QUIZ_SET_ANSWER:
words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014;
break;
- case 19:
+ case EASY_CHAT_TYPE_APPRENTICE:
words = gSaveBlock2Ptr->apprentices[0].easyChatWords;
break;
- case 20:
- words = sub_801B058();
+ case EASY_CHAT_TYPE_QUESTIONNAIRE:
+ words = GetSaveBlock1Field3564();
break;
default:
return;
}
+
CleanupOverworldWindowsAndTilemaps();
- sub_811A20C(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, sizeParam);
+ DoEasyChatScreen(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, displayedPersonType);
}
static void sub_811A7E4(void)
@@ -384,7 +1344,7 @@ static void sub_811A7E4(void)
lilycoveLady = &gSaveBlock1Ptr->lilycoveLady;
lilycoveLady->quiz.unk_016 = -1;
CleanupOverworldWindowsAndTilemaps();
- sub_811A8F0();
+ DoQuizQuestionEasyChatScreen();
}
return;
}
@@ -400,9 +1360,9 @@ static int sub_811A868(u16 word)
{
int i;
- for (i = 0; i < ARRAY_COUNT(gUnknown_08597530); i ++)
+ for (i = 0; i < ARRAY_COUNT(sUnknown_08597530); i ++)
{
- if (word == gUnknown_08597530[i].word)
+ if (word == sUnknown_08597530[i].word)
return i;
}
return -1;
@@ -419,91 +1379,103 @@ static void sub_811A8A4(u16 word)
i = sub_811A868(word);
ResetTasks();
- sub_811A4D0(gUnknown_08597530[i].callback);
+ sub_811A4D0(sUnknown_08597530[i].callback);
}
-void sub_811A8CC(void)
+static void DoQuizAnswerEasyChatScreen(void)
{
- sub_811A20C(0xF, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016, CB2_ReturnToFieldContinueScript, 3);
+ DoEasyChatScreen(
+ EASY_CHAT_TYPE_QUIZ_ANSWER,
+ &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016,
+ CB2_ReturnToFieldContinueScript,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
-void sub_811A8F0(void)
+static void DoQuizQuestionEasyChatScreen(void)
{
- sub_811A20C(0x10, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3);
+ DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_QUESTION,
+ gSaveBlock1Ptr->lilycoveLady.quiz.unk_002,
+ CB2_ReturnToFieldContinueScript,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
-void sub_811A914(void)
+static void DoQuizSetAnswerEasyChatScreen(void)
{
- sub_811A20C(0x12, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014, CB2_ReturnToFieldContinueScript, 3);
+ DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_ANSWER,
+ &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014,
+ CB2_ReturnToFieldContinueScript,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
-void sub_811A938(void)
+static void DoQuizSetQuestionEasyChatScreen(void)
{
- sub_811A20C(0x11, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3);
+ DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_QUESTION,
+ gSaveBlock1Ptr->lilycoveLady.quiz.unk_002,
+ CB2_ReturnToFieldContinueScript,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
-static bool8 EasyChat_AllocateResources(u8 kind, u16 *words, u8 sizeParam)
+static bool8 EasyChat_AllocateResources(u8 type, u16 *words, u8 displayedPersonType)
{
- u8 r6;
+ u8 templateId;
int i;
- gUnknown_0203A118 = malloc(sizeof(*gUnknown_0203A118));
- if (gUnknown_0203A118 == NULL)
- {
+ sEasyChatScreen = malloc(sizeof(*sEasyChatScreen));
+ if (sEasyChatScreen == NULL)
return FALSE;
- }
- gUnknown_0203A118->kind = kind;
- gUnknown_0203A118->words = words;
- gUnknown_0203A118->unk_05 = 0;
- gUnknown_0203A118->unk_06 = 0;
- gUnknown_0203A118->unk_09 = 0;
- gUnknown_0203A118->sizeParam = sizeParam;
- gUnknown_0203A118->unk_13 = 0;
- r6 = sub_811BCC8(kind);
- if (kind == 0x10)
+
+ sEasyChatScreen->type = type;
+ sEasyChatScreen->words = words;
+ sEasyChatScreen->mainCursorColumn = 0;
+ sEasyChatScreen->mainCursorRow = 0;
+ sEasyChatScreen->unk_09 = 0;
+ sEasyChatScreen->displayedPersonType = displayedPersonType;
+ sEasyChatScreen->unk_13 = 0;
+ templateId = GetEachChatScreenTemplateId(type);
+ if (type == EASY_CHAT_TYPE_QUIZ_QUESTION)
{
- sub_811BDF0(gUnknown_0203A118->unk_14);
- gUnknown_0203A118->src = gUnknown_0203A118->unk_14;
- gUnknown_0203A118->unk_04 = 7;
+ sub_811BDF0(sEasyChatScreen->unk_14);
+ sEasyChatScreen->titleText = sEasyChatScreen->unk_14;
+ sEasyChatScreen->state = 7;
}
else
{
- gUnknown_0203A118->unk_04 = 0;
- gUnknown_0203A118->src = gUnknown_08597550[r6].data;
- }
- gUnknown_0203A118->unk_02 = gUnknown_08597550[r6].unk_01;
- gUnknown_0203A118->unk_03 = gUnknown_08597550[r6].unk_02;
- gUnknown_0203A118->unk_07 = gUnknown_0203A118->unk_02 * gUnknown_0203A118->unk_03;
- gUnknown_0203A118->unk_01 = r6;
- if (gUnknown_0203A118->unk_07 > 9)
- {
- gUnknown_0203A118->unk_07 = 9;
+ sEasyChatScreen->state = 0;
+ sEasyChatScreen->titleText = sEasyChatScreenTemplates[templateId].titleText;
}
+
+ sEasyChatScreen->numColumns = sEasyChatScreenTemplates[templateId].numColumns;
+ sEasyChatScreen->numRows = sEasyChatScreenTemplates[templateId].numRows;
+ sEasyChatScreen->unk_07 = sEasyChatScreen->numColumns * sEasyChatScreen->numRows;
+ sEasyChatScreen->templateId = templateId;
+ if (sEasyChatScreen->unk_07 > 9)
+ sEasyChatScreen->unk_07 = 9;
+
if (words != NULL)
{
- CpuCopy16(words, gUnknown_0203A118->ecWordBuffer, gUnknown_0203A118->unk_07 * sizeof(u16));
+ CpuCopy16(words, sEasyChatScreen->ecWordBuffer, sEasyChatScreen->unk_07 * sizeof(u16));
}
else
{
- for (i = 0; i < gUnknown_0203A118->unk_07; i ++)
- {
- gUnknown_0203A118->ecWordBuffer[i] = -1;
- }
- gUnknown_0203A118->words = gUnknown_0203A118->ecWordBuffer;
+ for (i = 0; i < sEasyChatScreen->unk_07; i ++)
+ sEasyChatScreen->ecWordBuffer[i] = -1;
+
+ sEasyChatScreen->words = sEasyChatScreen->ecWordBuffer;
}
- gUnknown_0203A118->unk_0d = (sub_811F3AC() - 1) / 2 + 1;
+
+ sEasyChatScreen->unk_0d = (sub_811F3AC() - 1) / 2 + 1;
return TRUE;
}
static void EasyChat_FreeResources(void)
{
- if (gUnknown_0203A118 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203A118);
+ if (sEasyChatScreen != NULL)
+ FREE_AND_SET_NULL(sEasyChatScreen);
}
static u16 sub_811AAAC(void)
{
- switch (gUnknown_0203A118->unk_04)
+ switch (sEasyChatScreen->state)
{
case 0:
return sub_811AB68();
@@ -533,7 +1505,7 @@ static u16 sub_811AAAC(void)
bool32 sub_811AB44(void)
{
- switch (sub_811BA68())
+ switch (GetEasyChatScreenFrameId())
{
case 2:
case 7:
@@ -543,269 +1515,4034 @@ bool32 sub_811AB44(void)
return FALSE;
}
-#ifdef NONMATCHING
static u16 sub_811AB68(void)
{
+ do
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ sub_811BF78();
+ sEasyChatScreen->state = 2;
+ sEasyChatScreen->unk_0a = 0;
+ sEasyChatScreen->unk_0b = 0;
+ sEasyChatScreen->unk_0c = 0;
+ return 9;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ return sub_811B150();
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ return sub_811B1B4();
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ sEasyChatScreen->mainCursorRow--;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ sEasyChatScreen->mainCursorColumn--;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ sEasyChatScreen->mainCursorRow++;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ sEasyChatScreen->mainCursorColumn++;
+ break;
+ }
+
+ return 0;
+ } while (0);
+
+ if (sEasyChatScreen->mainCursorRow < 0)
+ sEasyChatScreen->mainCursorRow = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows;
+
+ if (sEasyChatScreen->mainCursorRow > sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
+ sEasyChatScreen->mainCursorRow = 0;
+
+ if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
+ {
+ if (sEasyChatScreen->mainCursorColumn > 2)
+ sEasyChatScreen->mainCursorColumn = 2;
+
+ sEasyChatScreen->state = 1;
+ return 3;
+ }
+
+ if (sEasyChatScreen->mainCursorColumn < 0)
+ sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1;
+
+ if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns)
+ sEasyChatScreen->mainCursorColumn = 0;
+
+ if (sub_811AB44() && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4)
+ sEasyChatScreen->mainCursorColumn = 0;
+
+ return 2;
+}
+
+static u16 sub_811ACDC(void)
+{
+ do
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ switch (sEasyChatScreen->mainCursorColumn)
+ {
+ case 0:
+ return sub_811B184();
+ case 1:
+ return sub_811B150();
+ case 2:
+ return sub_811B1B4();
+ case 3:
+ return sub_811B264();
+ }
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ return sub_811B150();
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ return sub_811B1B4();
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ sEasyChatScreen->mainCursorRow--;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ sEasyChatScreen->mainCursorColumn--;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ sEasyChatScreen->mainCursorRow = 0;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ sEasyChatScreen->mainCursorColumn++;
+ break;
+ }
+
+ return 0;
+ } while (0);
+
+ if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
+ {
+ int numFooterColumns = FooterHasFourOptions() ? 4 : 3;
+ if (sEasyChatScreen->mainCursorColumn < 0)
+ sEasyChatScreen->mainCursorColumn = numFooterColumns - 1;
+
+ if (sEasyChatScreen->mainCursorColumn >= numFooterColumns)
+ sEasyChatScreen->mainCursorColumn = 0;
+
+ return 3;
+ }
+
+ if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns)
+ sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1;
+
+ if (sub_811AB44() && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4)
+ sEasyChatScreen->mainCursorColumn = 0;
+
+ sEasyChatScreen->state = 0;
+ return 2;
+}
+
+static u16 sub_811AE44(void)
+{
+ if (gMain.newKeys & B_BUTTON)
+ return sub_811B32C();
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (sEasyChatScreen->unk_0a != -1)
+ return sub_811B2B0();
+
+ switch (sEasyChatScreen->unk_0b)
+ {
+ case 0:
+ return sub_811B33C();
+ case 1:
+ return sub_811B368();
+ case 2:
+ return sub_811B32C();
+ }
+ }
+
+ if (gMain.newKeys & SELECT_BUTTON)
+ return sub_811B33C();
+
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ return sub_811B528(2);
+
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ return sub_811B528(3);
+
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ return sub_811B528(1);
+
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ return sub_811B528(0);
+
+ return 0;
+}
+
+static u16 sub_811AF00(void)
+{
+ if (gMain.newKeys & B_BUTTON)
+ {
+ sEasyChatScreen->state = 2;
+ return 14;
+ }
+
if (gMain.newKeys & A_BUTTON)
+ return sub_811B394();
+
+ if (gMain.newKeys & START_BUTTON)
+ return sub_811B794(4);
+
+ if (gMain.newKeys & SELECT_BUTTON)
+ return sub_811B794(5);
+
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ return sub_811B794(2);
+
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ return sub_811B794(3);
+
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ return sub_811B794(1);
+
+ if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ return sub_811B794(0);
+
+ return 0;
+}
+
+static u16 sub_811AF8C(void)
+{
+ u8 var0;
+
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case MENU_B_PRESSED: // B Button
+ case 1: // No
+ sEasyChatScreen->state = sub_811B2A4();
+ return 7;
+ case 0: // Yes
+ gSpecialVar_Result = 0;
+ var0 = sEasyChatScreen->type - EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
+ if (var0 < 2)
+ sub_811B3E4();
+
+ return 24;
+ default:
+ return 0;
+ }
+}
+
+static u16 sub_811AFEC(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case MENU_B_PRESSED: // B Button
+ case 1: // No
+ sEasyChatScreen->state = sub_811B2A4();
+ return 7;
+ case 0: // Yes
+ sub_811BE9C();
+ gSpecialVar_Result = sub_811B4EC();
+ sub_811B3E4();
+ return 24;
+ default:
+ return 0;
+ }
+}
+
+static u16 sub_811B040(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- sub_811BF78();
- gUnknown_0203A118->unk_04 = 2;
- gUnknown_0203A118->unk_0a = 0;
- gUnknown_0203A118->unk_0b = 0;
- gUnknown_0203A118->unk_0c = 0;
- return 9;
+ case MENU_B_PRESSED: // B Button
+ case 1: // No
+ sEasyChatScreen->state = 1;
+ return 7;
+ case 0: // Yes
+ sub_811B418();
+ sEasyChatScreen->state = 1;
+ return 8;
+ default:
+ return 0;
}
- else if (gMain.newKeys & B_BUTTON)
- { // FIXME: See note below
+}
+
+static u16 sub_811B08C(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ return 26;
+
+ if (gMain.newKeys & B_BUTTON)
return sub_811B150();
+
+ return 0;
+}
+
+static u16 sub_811B0BC(void)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sEasyChatScreen->state = sub_811B2A4();
+ return 7;
+ }
+
+ return 0;
+}
+
+static u16 sub_811B0E8(void)
+{
+ sEasyChatScreen->state = 10;
+ return 6;
+}
+
+static u16 sub_811B0F8(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case MENU_B_PRESSED: // B Button
+ case 1: // No
+ sub_811B454();
+ sEasyChatScreen->stateBackup = 0;
+ sEasyChatScreen->state = 8;
+ return 31;
+ case 0: // Yes
+ gSpecialVar_Result = sub_811B4EC();
+ sub_811B3E4();
+ return 24;
+ default:
+ return 0;
+ }
+}
+
+static u16 sub_811B150(void)
+{
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_APPRENTICE
+ || sEasyChatScreen->type == EASY_CHAT_TYPE_CONTEST_INTERVIEW)
+ {
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ sEasyChatScreen->state = 8;
+ return 34;
+ }
+ else
+ {
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ sEasyChatScreen->state = 4;
+ return 5;
+ }
+}
+
+static int sub_811B184(void)
+{
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ if (sEasyChatScreen->type != EASY_CHAT_TYPE_BARD_SONG)
+ {
+ sEasyChatScreen->state = 5;
+ return 4;
+ }
+ else
+ {
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ sEasyChatScreen->state = 8;
+ return 32;
+ }
+}
+
+static u16 sub_811B1B4(void)
+{
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_QUESTION)
+ {
+ if (sub_811BD64())
+ {
+ sEasyChatScreen->state = 8;
+ return 29;
+ }
+
+ if (sub_811BDB0())
+ {
+ sEasyChatScreen->state = 8;
+ return 30;
+ }
+
+ sEasyChatScreen->state = 6;
+ return 6;
+ }
+ else if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_ANSWER)
+ {
+ if (sub_811BDB0())
+ {
+ sEasyChatScreen->state = 8;
+ return 30;
+ }
+
+ if (sub_811BD64())
+ {
+ sEasyChatScreen->state = 8;
+ return 29;
+ }
+
+ sEasyChatScreen->state = 6;
+ return 6;
+ }
+ else if (sEasyChatScreen->type == EASY_CHAT_TYPE_TRENDY_PHRASE
+ || sEasyChatScreen->type == EASY_CHAT_TYPE_GOOD_SAYING)
+ {
+ if (!sub_811BD2C())
+ {
+ sEasyChatScreen->state = 8;
+ return 33;
+ }
+
+ sEasyChatScreen->state = 6;
+ return 6;
+ }
+ else if (sEasyChatScreen->type == EASY_CHAT_TYPE_APPRENTICE
+ || sEasyChatScreen->type == EASY_CHAT_TYPE_CONTEST_INTERVIEW)
+ {
+ if (sub_811BCF4())
+ {
+ sEasyChatScreen->state = 8;
+ return 34;
+ }
+
+ sEasyChatScreen->state = 6;
+ return 6;
+ }
+ else if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUESTIONNAIRE)
+ {
+ sEasyChatScreen->state = 6;
+ return 6;
+ }
+ else
+ {
+ if (sub_811BCF4() == 1 || !sub_811B4EC())
+ {
+ sEasyChatScreen->state = 4;
+ return 5;
+ }
+
+ sEasyChatScreen->state = 6;
+ return 6;
+ }
+}
+
+static int sub_811B264(void)
+{
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ switch (sEasyChatScreen->type)
+ {
+ case EASY_CHAT_TYPE_QUIZ_ANSWER:
+ return 25;
+ case EASY_CHAT_TYPE_QUIZ_SET_QUESTION:
+ sub_811B3E4();
+ return 28;
+ case EASY_CHAT_TYPE_QUIZ_SET_ANSWER:
+ sub_811B3E4();
+ return 27;
+ default:
+ return 0;
+ }
+}
+
+static u8 sub_811B2A4(void)
+{
+ return sEasyChatScreen->stateBackup;
+}
+
+static int sub_811B2B0(void)
+{
+ u16 var1;
+
+ if (sEasyChatScreen->unk_09 == 0)
+ {
+ u8 groupId = sub_811F3B8(sub_811B8E8());
+ sub_811F548(0, groupId);
+ }
+ else
+ {
+ sub_811F548(1, sub_811B908());
+ }
+
+ var1 = sub_811F5B0();
+ if (var1 == 0)
+ return 0;
+
+ sEasyChatScreen->unk_0f = (var1 - 1) / 2;
+ sEasyChatScreen->unk_0e = 0;
+ sEasyChatScreen->unk_10 = 0;
+ sEasyChatScreen->unk_11 = 0;
+ sEasyChatScreen->state = 3;
+ return 11;
+}
+
+static int sub_811B32C(void)
+{
+ sEasyChatScreen->state = 0;
+ return 10;
+}
+
+static int sub_811B33C(void)
+{
+ sEasyChatScreen->unk_0a = 0;
+ sEasyChatScreen->unk_0b = 0;
+ sEasyChatScreen->unk_0c = 0;
+ if (!sEasyChatScreen->unk_09)
+ sEasyChatScreen->unk_09 = 1;
+ else
+ sEasyChatScreen->unk_09 = 0;
+
+ return 23;
+}
+
+static int sub_811B368(void)
+{
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_BARD_SONG)
+ {
+ PlaySE(SE_HAZURE);
+ return 0;
+ }
+ else
+ {
+ sub_811B488(0xFFFF);
+ return 1;
+ }
+}
+
+static int sub_811B394(void)
+{
+ u16 easyChatWord = sub_811F578(sub_811B940());
+ if (sub_811BF88(easyChatWord))
+ {
+ PlaySE(SE_HAZURE);
+ return 0;
+ }
+ else
+ {
+ sub_811B488(easyChatWord);
+ if (sEasyChatScreen->type != EASY_CHAT_TYPE_BARD_SONG)
+ {
+ sEasyChatScreen->state = 0;
+ return 12;
+ }
+ else
+ {
+ sEasyChatScreen->state = 9;
+ return 13;
+ }
+ }
+}
+
+static void sub_811B3E4(void)
+{
+ int i;
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ sEasyChatScreen->words[i] = sEasyChatScreen->ecWordBuffer[i];
+}
+
+static void sub_811B418(void)
+{
+ int i;
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ sEasyChatScreen->ecWordBuffer[i] = 0xFFFF;
+}
+
+static void sub_811B454(void)
+{
+ int i;
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ sEasyChatScreen->ecWordBuffer[i] = sEasyChatScreen->words[i];
+}
+
+static void sub_811B488(u16 easyChatWord)
+{
+ u16 index = sub_811B8C8();
+ sEasyChatScreen->ecWordBuffer[index] = easyChatWord;
+}
+
+static u8 sub_811B4AC(void)
+{
+ u16 i;
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ {
+ if (sEasyChatScreen->ecWordBuffer[i] != sEasyChatScreen->words[i])
+ return 1;
+ }
+
+ return 0;
+}
+
+static int sub_811B4EC(void)
+{
+ u8 var0 = sEasyChatScreen->type - EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
+ if (var0 < 2)
+ {
+ if (sub_811BD64())
+ return 0;
+
+ if (sub_811BDB0())
+ return 0;
+
+ return 1;
+ }
+ else
+ {
+ return sub_811B4AC();
+ }
+}
+
+static u16 sub_811B528(int arg0)
+{
+ if (sEasyChatScreen->unk_0a != -1)
+ {
+ if (sEasyChatScreen->unk_09 == 0)
+ return sub_811B568(arg0);
+ else
+ return sub_811B634(arg0);
+ }
+ else
+ {
+ return sub_811B6C4(arg0);
+ }
+}
+
+static int sub_811B568(u32 arg0)
+{
+ switch (arg0)
+ {
+ case 2:
+ if (sEasyChatScreen->unk_0b != -sEasyChatScreen->unk_0c)
+ {
+ if (sEasyChatScreen->unk_0b)
+ {
+ sEasyChatScreen->unk_0b--;
+ return 15;
+ }
+ else
+ {
+ sEasyChatScreen->unk_0c--;
+ return 17;
+ }
+ }
+ break;
+ case 3:
+ if (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c < sEasyChatScreen->unk_0d - 1)
+ {
+ int var0;
+ if (sEasyChatScreen->unk_0b < 3)
+ {
+ sEasyChatScreen->unk_0b++;
+ var0 = 15;
+ }
+ else
+ {
+ sEasyChatScreen->unk_0c++;
+ var0 = 16;
+ }
+
+ sub_811B978();
+ return var0;
+ }
+ break;
+ case 1:
+ if (sEasyChatScreen->unk_0a)
+ sEasyChatScreen->unk_0a--;
+ else
+ sub_811B744();
+
+ return 15;
+ case 0:
+ if (sEasyChatScreen->unk_0a < 1)
+ {
+ sEasyChatScreen->unk_0a++;
+ if (sub_811B9C8())
+ sub_811B744();
+ }
+ else
+ {
+ sub_811B744();
+ }
+ return 15;
+ }
+
+ return 0;
+}
+
+static int sub_811B634(u32 arg0)
+{
+ switch (arg0)
+ {
+ case 2:
+ if (sEasyChatScreen->unk_0b > 0)
+ sEasyChatScreen->unk_0b--;
+ else
+ sEasyChatScreen->unk_0b = 3;
+
+ sub_811B978();
+ return 15;
+ case 3:
+ if (sEasyChatScreen->unk_0b < 3)
+ sEasyChatScreen->unk_0b++;
+ else
+ sEasyChatScreen->unk_0b = 0;
+
+ sub_811B978();
+ return 15;
+ case 0:
+ sEasyChatScreen->unk_0a++;
+ if (sub_811B9C8())
+ sub_811B744();
+
+ return 15;
+ case 1:
+ sEasyChatScreen->unk_0a--;
+ if (sEasyChatScreen->unk_0a < 0)
+ sub_811B744();
+
+ return 15;
+ }
+
+ return 0;
+}
+
+static int sub_811B6C4(u32 arg0)
+{
+ switch (arg0)
+ {
+ case 2:
+ if (sEasyChatScreen->unk_0b)
+ sEasyChatScreen->unk_0b--;
+ else
+ sEasyChatScreen->unk_0b = 2;
+
+ return 15;
+ case 3:
+ if (sEasyChatScreen->unk_0b < 2)
+ sEasyChatScreen->unk_0b++;
+ else
+ sEasyChatScreen->unk_0b = 0;
+
+ return 15;
+ case 1:
+ sEasyChatScreen->unk_0b++;
+ sub_811B768();
+ return 15;
+ case 0:
+ sEasyChatScreen->unk_0a = 0;
+ sEasyChatScreen->unk_0b++;
+ return 15;
+ }
+
+ return 0;
+}
+
+static void sub_811B744(void)
+{
+ sEasyChatScreen->unk_0a = 0xFF;
+ if (sEasyChatScreen->unk_0b)
+ sEasyChatScreen->unk_0b--;
+}
+
+static void sub_811B768(void)
+{
+ if (sEasyChatScreen->unk_09 == 0)
+ {
+ sEasyChatScreen->unk_0a = 1;
+ sub_811B978();
+ }
+ else
+ {
+ sEasyChatScreen->unk_0a = sub_811B960(sEasyChatScreen->unk_0b);
+ }
+}
+
+static u16 sub_811B794(u32 arg0)
+{
+ u16 result;
+ switch (arg0)
+ {
+ case 2:
+ if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e > 0)
+ {
+ if (sEasyChatScreen->unk_11 > 0)
+ {
+ sEasyChatScreen->unk_11--;
+ result = 18;
+ }
+ else
+ {
+ sEasyChatScreen->unk_0e--;
+ result = 19;
+ }
+
+ sub_811B9A0();
+ return result;
+ }
+ break;
+ case 3:
+ if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e < sEasyChatScreen->unk_0f)
+ {
+ if (sEasyChatScreen->unk_11 < 3)
+ {
+ sEasyChatScreen->unk_11++;
+ result = 18;
+ }
+ else
+ {
+ sEasyChatScreen->unk_0e++;
+ result = 20;
+ }
+
+ sub_811B9A0();
+ return result;
+ }
+ break;
+ case 1:
+ if (sEasyChatScreen->unk_10 > 0)
+ sEasyChatScreen->unk_10--;
+ else
+ sEasyChatScreen->unk_10 = 1;
+
+ sub_811B9A0();
+ return 18;
+ case 0:
+ if (sEasyChatScreen->unk_10 < 1)
+ {
+ sEasyChatScreen->unk_10++;
+ if (sub_811BA1C())
+ sEasyChatScreen->unk_10 = 0;
+ }
+ else
+ {
+ sEasyChatScreen->unk_10 = 0;
+ }
+ return 18;
+ case 4:
+ if (sEasyChatScreen->unk_0e)
+ {
+ if (sEasyChatScreen->unk_0e > 3)
+ sEasyChatScreen->unk_0e -= 4;
+ else
+ sEasyChatScreen->unk_0e = 0;
+
+ return 21;
+ }
+ break;
+ case 5:
+ if (sEasyChatScreen->unk_0e <= sEasyChatScreen->unk_0f - 4)
+ {
+ sEasyChatScreen->unk_0e += 4;
+ if (sEasyChatScreen->unk_0e > sEasyChatScreen->unk_0f - 3)
+ sEasyChatScreen->unk_0e = sEasyChatScreen->unk_0f + 0xFD;
+
+ sub_811B9A0();
+ return 22;
+ }
+ break;
+ }
+
+ return 0;
+}
+
+static u16 sub_811B8C8(void)
+{
+ return (sEasyChatScreen->mainCursorRow * sEasyChatScreen->numColumns) + sEasyChatScreen->mainCursorColumn;
+}
+
+static u16 sub_811B8E8(void)
+{
+ return 2 * (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c) + sEasyChatScreen->unk_0a;
+}
+
+static int sub_811B908(void)
+{
+ int var0 = (u8)sEasyChatScreen->unk_0a < 7 ? sEasyChatScreen->unk_0a : 0;
+ int var1 = (u8)sEasyChatScreen->unk_0b < 4 ? sEasyChatScreen->unk_0b : 0;
+ return sUnknown_08597748[var1][var0];
+}
+
+static u16 sub_811B940(void)
+{
+ return 2 * (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e) + sEasyChatScreen->unk_10;
+}
+
+static u8 sub_811B960(u8 arg0)
+{
+ switch (arg0)
+ {
+ case 0:
+ default:
+ return 6;
+ case 1:
+ return 5;
+ }
+}
+
+static void sub_811B978(void)
+{
+ while (sub_811B9C8())
+ {
+ if (sEasyChatScreen->unk_0a)
+ sEasyChatScreen->unk_0a--;
+ else
+ break;
+ }
+}
+
+static void sub_811B9A0(void)
+{
+ while (sub_811BA1C())
+ {
+ if (sEasyChatScreen->unk_10)
+ sEasyChatScreen->unk_10--;
+ else
+ break;
+ }
+}
+
+static u8 sub_811B9C8(void)
+{
+ if (sEasyChatScreen->unk_09 == 0)
+ return sub_811B8E8() >= sub_811F3AC() ? 1 : 0;
+ else
+ return sEasyChatScreen->unk_0a > sub_811B960(sEasyChatScreen->unk_0b) ? 1 : 0;
+}
+
+static u8 sub_811BA1C(void)
+{
+ return sub_811B940() >= sub_811F5B0() ? 1 : 0;
+}
+
+static int FooterHasFourOptions(void)
+{
+ return sEasyChatScreenTemplates[sEasyChatScreen->templateId].fourFooterOptions;
+}
+
+static u8 GetEasyChatScreenType(void)
+{
+ return sEasyChatScreen->type;
+}
+
+static u8 GetEasyChatScreenFrameId(void)
+{
+ return sEasyChatScreenTemplates[sEasyChatScreen->templateId].frameId;
+}
+
+const u8 *GetTitleText(void)
+{
+ return sEasyChatScreen->titleText;
+}
+
+static u16 *GetEasyChatWordBuffer(void)
+{
+ return sEasyChatScreen->ecWordBuffer;
+}
+
+static u8 GetNumRows(void)
+{
+ return sEasyChatScreen->numRows;
+}
+
+static u8 GetNumColumns(void)
+{
+ return sEasyChatScreen->numColumns;
+}
+
+static u8 GetMainCursorColumn(void)
+{
+ return sEasyChatScreen->mainCursorColumn;
+}
+
+static u8 GetMainCursorRow(void)
+{
+ return sEasyChatScreen->mainCursorRow;
+}
+
+static void GetEasyChatInstructionsText(const u8 **str1, const u8 **str2)
+{
+ *str1 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].instructionsText1;
+ *str2 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].instructionsText2;
+}
+
+static void GetEasyChatConfirmText(const u8 **str1, const u8 **str2)
+{
+ *str1 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].confirmText1;
+ *str2 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].confirmText2;
+}
+
+static void sub_811BB40(const u8 **str1, const u8 **str2)
+{
+ switch (sEasyChatScreen->type)
+ {
+ case EASY_CHAT_TYPE_MAIL:
+ *str1 = gText_StopGivingPkmnMail;
+ *str2 = NULL;
+ break;
+ case EASY_CHAT_TYPE_QUIZ_ANSWER:
+ case EASY_CHAT_TYPE_QUIZ_QUESTION:
+ *str1 = gText_LikeToQuitQuiz;
+ *str2 = gText_ChallengeQuestionMark;
+ break;
+ default:
+ *str1 = gText_QuitEditing;
+ *str2 = NULL;
+ break;
+ }
+
+}
+
+static void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2)
+{
+ *str1 = gText_AllTextBeingEditedWill;
+ *str2 = gText_BeDeletedThatOkay;
+}
+
+void sub_811BB9C(u8 *arg0, u8 *arg1)
+{
+ *arg0 = sEasyChatScreen->unk_0a;
+ *arg1 = sEasyChatScreen->unk_0b;
+}
+
+u8 sub_811BBB0(void)
+{
+ return sEasyChatScreen->unk_09;
+}
+
+u8 sub_811BBBC(void)
+{
+ return sEasyChatScreen->unk_0c;
+}
+
+void sub_811BBC8(u8 *arg0, u8 *arg1)
+{
+ *arg0 = sEasyChatScreen->unk_10;
+ *arg1 = sEasyChatScreen->unk_11;
+}
+
+u8 sub_811BBDC(void)
+{
+ return sEasyChatScreen->unk_0e;
+}
+
+u8 sub_811BBE8(void)
+{
+ return sEasyChatScreen->unk_0f;
+}
+
+static u8 unref_sub_811BBF4(void)
+{
+ return 0;
+}
+
+int sub_811BBF8(void)
+{
+ switch (sEasyChatScreen->state)
+ {
+ case 2:
+ if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c)
+ return 1;
+ break;
+ case 3:
+ if (sEasyChatScreen->unk_0e)
+ return 1;
+ break;
}
- else if (gMain.newKeys & START_BUTTON)
- { // FIXME: See note below
- return sub_811B1B4();
+
+ return 0;
+}
+
+int sub_811BC2C(void)
+{
+ switch (sEasyChatScreen->state)
+ {
+ case 2:
+ if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c + 4 <= sEasyChatScreen->unk_0d - 1)
+ return 1;
+ break;
+ case 3:
+ if (sEasyChatScreen->unk_0e + 4 <= sEasyChatScreen->unk_0f)
+ return 1;
+ break;
}
- else if (gMain.newKeys & DPAD_UP)
+
+ return 0;
+}
+
+static int FooterHasFourOptions_(void)
+{
+ return FooterHasFourOptions();
+}
+
+u8 sub_811BC7C(const u16 *arg0, u8 arg1)
+{
+ u8 i;
+
+ for (i = 0; i < arg1; i++)
{
- gUnknown_0203A118->unk_06--;
+ if (arg0[i] != sEasyChatScreen->ecWordBuffer[i])
+ return 1;
}
- else if (gMain.newKeys & DPAD_LEFT)
- { // FIXME: See note below
- gUnknown_0203A118->unk_05--;
+
+ return 0;
+}
+
+static u8 GetDisplayedPersonType(void)
+{
+ return sEasyChatScreen->displayedPersonType;
+}
+
+static u8 GetEachChatScreenTemplateId(u8 type)
+{
+ u32 i;
+
+ for (i = 0; i < ARRAY_COUNT(sEasyChatScreenTemplates); i++)
+ {
+ if (sEasyChatScreenTemplates[i].type == type)
+ return i;
}
- else if (gMain.newKeys & DPAD_DOWN)
- { // FIXME: See note below
- gUnknown_0203A118->unk_06++;
+
+ return 0;
+}
+
+static int sub_811BCF4(void)
+{
+ int i;
+
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ {
+ if (sEasyChatScreen->ecWordBuffer[i] != 0xFFFF)
+ return 0;
}
- else if (gMain.newKeys & DPAD_RIGHT)
- { // FIXME: See note below
- gUnknown_0203A118->unk_05++;
+
+ return 1;
+}
+
+static int sub_811BD2C(void)
+{
+ int i;
+
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ {
+ if (sEasyChatScreen->ecWordBuffer[i] == 0xFFFF)
+ return 0;
+ }
+
+ return 1;
+}
+
+static int sub_811BD64(void)
+{
+ int i;
+ struct SaveBlock1 *saveBlock1;
+
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_QUESTION)
+ return sub_811BCF4();
+
+ saveBlock1 = gSaveBlock1Ptr;
+ for (i = 0; i < 9; i++)
+ {
+ if (saveBlock1->lilycoveLady.quiz.unk_002[i] != 0xFFFF)
+ return 0;
+ }
+
+ return 1;
+}
+
+static int sub_811BDB0(void)
+{
+ struct LilycoveLadyQuiz *quiz;
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_ANSWER)
+ return sub_811BCF4();
+
+ quiz = &gSaveBlock1Ptr->lilycoveLady.quiz;
+ return quiz->unk_014 == 0xFFFF ? 1 : 0;
+}
+
+static void sub_811BDF0(u8 *arg0)
+{
+ u8 name[32];
+ struct SaveBlock1 *saveBlock1 = gSaveBlock1Ptr;
+ DynamicPlaceholderTextUtil_Reset();
+ if (StringLength(saveBlock1->lilycoveLady.quiz.playerName) != 0)
+ {
+ TVShowConvertInternationalString(name, saveBlock1->lilycoveLady.quiz.playerName, saveBlock1->lilycoveLady.quiz.language);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, name);
}
else
{
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gText_Lady);
+ }
+
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg0, gText_F700sQuiz);
+}
+
+static void sub_811BE54(void)
+{
+ int i;
+ u16 *ecWord;
+ u8 *str;
+
+ ecWord = sEasyChatScreen->ecWordBuffer;
+ str = gStringVar2;
+ i = 0;
+ while (i < sEasyChatScreen->unk_07)
+ {
+ str = CopyEasyChatWordPadded(str, *ecWord, 0);
+ *str = 0;
+ str++;
+ ecWord++;
+ i++;
+ }
+
+ str--;
+ str[0] = 0xFF;
+}
+
+static void sub_811BE9C(void)
+{
+ switch (sEasyChatScreen->type)
+ {
+ case EASY_CHAT_TYPE_PROFILE:
+ FlagSet(FLAG_SYS_CHAT_USED);
+ break;
+ case EASY_CHAT_TYPE_QUESTIONNAIRE:
+ if (sub_811BF20())
+ gSpecialVar_0x8004 = 2;
+ else
+ gSpecialVar_0x8004 = 0;
+ break;
+ case EASY_CHAT_TYPE_TRENDY_PHRASE:
+ sub_811BE54();
+ gSpecialVar_0x8004 = sub_81226D8(sEasyChatScreen->ecWordBuffer);
+ break;
+ case EASY_CHAT_TYPE_GOOD_SAYING:
+ gSpecialVar_0x8004 = sub_811BF40();
+ break;
+ }
+}
+
+static int sub_811BF20(void)
+{
+ return sub_811BC7C(sMysteryGiftPhrase, ARRAY_COUNT(sMysteryGiftPhrase)) == 0;
+}
+
+static u16 sub_811BF40(void)
+{
+ int i;
+ for (i = 0; i < 5; i++)
+ {
+ if (!sub_811BC7C(sBerryMasterWifePhrases[i], ARRAY_COUNT(*sBerryMasterWifePhrases)))
+ return i + 1;
+ }
+
+ return 0;
+}
+
+static void sub_811BF78(void)
+{
+ sEasyChatScreen->unk_13 = 0;
+}
+
+static int sub_811BF88(int easyChatWord)
+{
+ return 0;
+}
+
+static bool8 sub_811BF8C(void)
+{
+ if (!sub_811CE94())
return 0;
+ else
+ return 1;
+}
+
+static bool8 sub_811BFA4(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sEasyChatBgTemplates, ARRAY_COUNT(sEasyChatBgTemplates));
+ SetBgTilemapBuffer(3, sUnknown_0203A11C->unkB00);
+ SetBgTilemapBuffer(1, sUnknown_0203A11C->unk300);
+ InitWindows(sEasyChatWindowTemplates);
+ DeactivateAllTextPrinters();
+ sub_811CF64();
+ sub_811CF04();
+ CpuFastFill(0, (void *)VRAM + 0x1000000, 0x400);
+ break;
+ case 1:
+ DecompressAndLoadBgGfxUsingHeap(3, gEasyChatWindow_Gfx, 0, 0, 0);
+ CopyToBgTilemapBuffer(3, gEasyChatWindow_Tilemap, 0, 0);
+ sub_811D60C();
+ sub_811D424(sUnknown_0203A11C->unk300);
+ sub_811D230();
+ sub_811E948();
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 2:
+ DecompressAndLoadBgGfxUsingHeap(1, sUnknown_08597B54, 0, 0, 0);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 3:
+ sub_811CFCC();
+ sub_811D0BC();
+ sub_811D2C8();
+ sub_811D684();
+ break;
+ case 4:
+ sub_811DE90();
+ if (GetEasyChatScreenType() != EASY_CHAT_TYPE_QUIZ_QUESTION)
+ sub_811DEC4();
+ break;
+ case 5:
+ if (IsDma3ManagerBusyWithBgCopy())
+ {
+ return TRUE;
+ }
+ else
+ {
+ sub_811DE5C(0, 0, 0, 0);
+ SetGpuReg(REG_OFFSET_WININ, WIN_RANGE(0, 63));
+ SetGpuReg(REG_OFFSET_WINOUT, WIN_RANGE(0, 59));
+ ShowBg(3);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(0);
+ sub_811E5D4();
+ sub_811E720();
+ sub_811E828();
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ sUnknown_0203A11C->unk0++;
+ return TRUE;
+}
+
+static void sub_811C13C(void)
+{
+ if (sUnknown_0203A11C)
+ FREE_AND_SET_NULL(sUnknown_0203A11C);
+}
+
+static void sub_811C158(u16 arg0)
+{
+ sUnknown_0203A11C->unk4 = arg0;
+ sUnknown_0203A11C->unk0 = 0;
+ sub_811C170();
+}
+
+static bool8 sub_811C170(void)
+{
+ switch (sUnknown_0203A11C->unk4)
+ {
+ case 0: return FALSE;
+ case 1: return sub_811C2D4();
+ case 2: return sub_811C30C();
+ case 3: return sub_811C3E4();
+ case 4: return sub_811C48C();
+ case 5: return sub_811C404();
+ case 6: return sub_811C448();
+ case 7: return sub_811C4D0();
+ case 8: return sub_811C518();
+ case 9: return sub_811C554();
+ case 10: return sub_811C620();
+ case 11: return sub_811C830();
+ case 12: return sub_811C8F0();
+ case 13: return sub_811C99C();
+ case 14: return sub_811CA5C();
+ case 15: return sub_811C780();
+ case 16: return sub_811C78C();
+ case 17: return sub_811C7D4();
+ case 18: return sub_811CB18();
+ case 19: return sub_811CB98();
+ case 20: return sub_811CB24();
+ case 21: return sub_811CC90();
+ case 22: return sub_811CC08();
+ case 23: return sub_811C6C0();
+ case 24: return FALSE;
+ case 25: return FALSE;
+ case 26: return FALSE;
+ case 27: return FALSE;
+ case 28: return FALSE;
+ case 29: return sub_811CD14();
+ case 30: return sub_811CD54();
+ case 31: return sub_811CD94();
+ case 32: return sub_811CDD4();
+ case 33: return sub_811CE14();
+ case 34: return sub_811CE54();
+ default: return FALSE;
+ }
+}
+
+static bool8 sub_811C2D4(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D2C8();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C30C(void)
+{
+ u8 i;
+ u16 *ecWordBuffer;
+ u16 *ecWord;
+ u8 frameId;
+ u8 cursorColumn, cursorRow, numColumns;
+ s16 var1;
+ int stringWidth;
+ int trueStringWidth;
+ u8 var2;
+ u8 str[64];
+
+ ecWordBuffer = GetEasyChatWordBuffer();
+ frameId = GetEasyChatScreenFrameId();
+ cursorColumn = GetMainCursorColumn();
+ cursorRow = GetMainCursorRow();
+ numColumns = GetNumColumns();
+ ecWord = &ecWordBuffer[cursorRow * numColumns];
+ var1 = 8 * sPhraseFrameDimensions[frameId].left + 13;
+ for (i = 0; i < cursorColumn; i++)
+ {
+ if (*ecWord == 0xFFFF)
+ {
+ stringWidth = 72;
+ }
+ else
+ {
+ CopyEasyChatWord(str, *ecWord);
+ stringWidth = GetStringWidth(1, str, 0);
+ }
+
+ trueStringWidth = stringWidth + 17;
+ var1 += trueStringWidth;
+ ecWord++;
+ }
+
+ var2 = 8 * (sPhraseFrameDimensions[frameId].top + cursorRow * 2);
+ sub_811DF60(var1, var2 + 8);
+ return FALSE;
+}
+
+static bool8 sub_811C3E4(void)
+{
+ u8 xOffset = GetFooterOptionXOffset(GetMainCursorColumn());
+ sub_811DF60(xOffset, 96);
+ return FALSE;
+}
+
+static bool8 sub_811C404(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(2);
+ sub_811D214(1);
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C448(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(3);
+ sub_811D214(0);
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C48C(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(1);
+ sub_811D214(1);
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C4D0(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DFB0();
+ sub_811D104(0);
+ sub_811D2C8();
+ ShowBg(0);
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C518(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DFB0();
+ sub_811D104(0);
+ sub_811D2C8();
+ sUnknown_0203A11C->unk0++;
+ // Fall through
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C554(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ HideBg(0);
+ sub_811DE5C(0, 0, 0, 0);
+ sub_811D6D4();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(0);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy() && !sub_811DAA4())
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811E3AC();
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!sub_811E418())
+ {
+ sub_811DFC8();
+ sub_811E6E0(0);
+ sub_811E64C();
+ sUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C620(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811E050();
+ sub_811E4AC();
+ sub_811E6B0();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (sub_811E4D0() == TRUE)
+ break;
+
+ sub_811D9CC(1);
+ sUnknown_0203A11C->unk0++;
+ // Fall through
+ case 2:
+ if (!sub_811DAA4())
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DFB0();
+ ShowBg(0);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C6C0(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811E050();
+ sub_811E6B0();
+ sub_811E55C();
+ sub_811D9CC(5);
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!sub_811DAA4() && !sub_811E5B8())
+ {
+ sub_811D6D4();
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(6);
+ sub_811E578();
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_811DAA4() && !sub_811E5B8())
+ {
+ sub_811E64C();
+ sub_811DFC8();
+ sUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 4:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C780(void)
+{
+ sub_811E088();
+ return FALSE;
+}
+
+static bool8 sub_811C78C(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DDAC(1, 4);
+ sUnknown_0203A11C->unk0++;
+ // Fall through
+ case 1:
+ if (!sub_811DE10())
+ {
+ sub_811E088();
+ sub_811E64C();
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C7D4(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DDAC(-1, 4);
+ sUnknown_0203A11C->unk0++;
+ // Fall through
+ case 1:
+ if (!sub_811DE10())
+ {
+ sub_811E64C();
+ sUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C830(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811E050();
+ sub_811E4AC();
+ sub_811E6B0();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!sub_811E4D0())
+ {
+ sub_811D9B4();
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(2);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_811DAA4())
+ {
+ sub_811D698(2);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811E288();
+ sub_811E6E0(1);
+ sub_811E64C();
+ sub_811E794();
+ sUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 5:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C8F0(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D2C8();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ sub_811E380();
+ sub_811E6B0();
+ sub_811E7F8();
+ sub_811D9B4();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(3);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_811DAA4())
+ {
+ ShowBg(0);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DFB0();
+ sUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 5:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C99C(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D2C8();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ sub_811E380();
+ sub_811E6B0();
+ sub_811E7F8();
+ sub_811D9B4();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(3);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_811DAA4())
+ {
+ sub_811D104(3);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ ShowBg(0);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 5:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DFB0();
+ sUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 6:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CA5C(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811E380();
+ sub_811E6B0();
+ sub_811E7F8();
+ sub_811D9B4();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(4);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DAA4())
+ {
+ sub_811D6D4();
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811E3AC();
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!sub_811E418())
+ {
+ sub_811DFC8();
+ sub_811E6E0(0);
+ sub_811E64C();
+ sUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CB18(void)
+{
+ sub_811E30C();
+ return FALSE;
+}
+
+static bool8 sub_811CB24(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D7A4();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DDAC(1, 4);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DE10())
+ {
+ sub_811E30C();
+ sub_811E64C();
+ sub_811E794();
+ sUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CB98(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D7C8();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DDAC(-1, 4);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DE10())
+ {
+ sub_811E64C();
+ sub_811E794();
+ sUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CC08(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D7EC();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ s16 var0 = sub_811BBDC() - sub_811DE48();
+ sub_811DDAC(var0, 8);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DE10())
+ {
+ sub_811E30C();
+ sub_811E64C();
+ sub_811E794();
+ sUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CC90(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D830();
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ s16 var0 = sub_811BBDC() - sub_811DE48();
+ sub_811DDAC(var0, 8);
+ sUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DE10())
+ {
+ sub_811E64C();
+ sub_811E794();
+ sUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CD14(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(4);
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CD54(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(5);
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CD94(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(6);
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CDD4(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(7);
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CE14(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(8);
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CE54(void)
+{
+ switch (sUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(9);
+ sUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CE94(void)
+{
+ sUnknown_0203A11C = Alloc(sizeof(*sUnknown_0203A11C));
+ if (!sUnknown_0203A11C)
+ return FALSE;
+
+ sUnknown_0203A11C->unk0 = 0;
+ sUnknown_0203A11C->unk2D8 = NULL;
+ sUnknown_0203A11C->unk2DC = NULL;
+ sUnknown_0203A11C->unk2E0 = NULL;
+ sUnknown_0203A11C->unk2E4 = NULL;
+ sUnknown_0203A11C->unk2E8 = NULL;
+ sUnknown_0203A11C->unk2EC = NULL;
+ sUnknown_0203A11C->unk2F0 = NULL;
+ sUnknown_0203A11C->unk2F4 = NULL;
+ sUnknown_0203A11C->unk2F8 = NULL;
+ sUnknown_0203A11C->unk2FC = NULL;
+ sUnknown_0203A11C->unkA = FooterHasFourOptions_();
+ return TRUE;
+}
+
+static void sub_811CF04(void)
+{
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON);
+}
+
+static void sub_811CF64(void)
+{
+ ResetPaletteFade();
+ LoadPalette(gEasyChatMode_Pal, 0, 32);
+ LoadPalette(sUnknown_08597B14, 1 * 16, 32);
+ LoadPalette(sUnknown_08597B34, 4 * 16, 32);
+ LoadPalette(sUnknown_08597C1C, 10 * 16, 8);
+ LoadPalette(sUnknown_08597C24, 11 * 16, 12);
+ LoadPalette(sUnknown_08597C24, 15 * 16, 12);
+ LoadPalette(sUnknown_08597C24, 3 * 16, 12);
+}
+
+static void sub_811CFCC(void)
+{
+ int xOffset;
+ const u8 *titleText = GetTitleText();
+ if (!titleText)
+ return;
+
+ xOffset = GetStringCenterAlignXOffset(1, titleText, 144);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ sub_811D058(0, 1, titleText, xOffset, 1, 0xFF, 0, 2, 3);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+}
+
+void sub_811D028(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16))
+{
+ AddTextPrinterParameterized(windowId, fontId, str, x, y, speed, callback);
+}
+
+static void sub_811D058(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, u8 red, u8 green, u8 blue)
+{
+ u8 color[3];
+ color[0] = red;
+ color[1] = green;
+ color[2] = blue;
+ AddTextPrinterParameterized3(windowId, fontId, left, top, color, speed, str);
+}
+
+static void sub_811D0BC(void)
+{
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17);
+ LoadUserWindowBorderGfx(1, 1, 0xE0);
+ sub_8098858(1, 1, 14);
+ sub_811D104(0);
+ PutWindowTilemap(1);
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void sub_811D104(u8 arg0)
+{
+ const u8 *text2 = NULL;
+ const u8 *text1 = NULL;
+ switch (arg0)
+ {
+ case 0:
+ GetEasyChatInstructionsText(&text1, &text2);
+ break;
+ case 2:
+ sub_811BB40(&text1, &text2);
+ break;
+ case 3:
+ GetEasyChatConfirmText(&text1, &text2);
+ break;
+ case 1:
+ GetEasyChatConfirmDeletionText(&text1, &text2);
+ break;
+ case 4:
+ text1 = gText_CreateAQuiz;
+ break;
+ case 5:
+ text1 = gText_SelectTheAnswer;
+ break;
+ case 6:
+ text1 = gText_OnlyOnePhrase;
+ text2 = gText_OriginalSongWillBeUsed;
+ break;
+ case 7:
+ text1 = gText_LyricsCantBeDeleted;
+ break;
+ case 8:
+ text1 = gText_CombineTwoWordsOrPhrases3;
+ break;
+ case 9:
+ text1 = gText_YouCannotQuitHere;
+ text2 = gText_SectionMustBeCompleted;
+ break;
+ }
+
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
+ if (text1)
+ sub_811D028(1, 1, text1, 0, 1, 0xFF, 0);
+
+ if (text2)
+ sub_811D028(1, 1, text2, 0, 17, 0xFF, 0);
+
+ CopyWindowToVram(1, 3);
+}
+
+static void sub_811D214(u8 initialCursorPos)
+{
+ CreateYesNoMenu(&sEasyChatYesNoWindowTemplate, 1, 14, initialCursorPos);
+}
+
+static void sub_811D230(void)
+{
+ u8 frameId;
+ struct WindowTemplate template;
+
+ frameId = GetEasyChatScreenFrameId();
+ template.bg = 3;
+ template.tilemapLeft = sPhraseFrameDimensions[frameId].left;
+ template.tilemapTop = sPhraseFrameDimensions[frameId].top;
+ template.width = sPhraseFrameDimensions[frameId].width;
+ template.height = sPhraseFrameDimensions[frameId].height;
+ template.paletteNum = 11;
+ template.baseBlock = 0x6C;
+ sUnknown_0203A11C->windowId = AddWindow(&template);
+ PutWindowTilemap(sUnknown_0203A11C->windowId);
+}
+
+static void sub_811D2C8(void)
+{
+ u8 spC[4];
+ u16 *ecWord;
+ u8 numColumns, numRows;
+ u8 *str;
+ int frameId;
+ int var1;
+ int i, j, k;
+
+ ecWord = GetEasyChatWordBuffer();
+ numColumns = GetNumColumns();
+ numRows = GetNumRows();
+ frameId = GetEasyChatScreenFrameId();
+ var1 = 0;
+ if (frameId == 7)
+ var1 = 1;
+
+ FillWindowPixelBuffer(sUnknown_0203A11C->windowId, PIXEL_FILL(1));
+ for (i = 0; i < numRows; i++)
+ {
+ memcpy(spC, sText_Clear17, sizeof(sText_Clear17));
+ if (var1)
+ spC[2] = 6;
+
+ str = sUnknown_0203A11C->unkB;
+ sUnknown_0203A11C->unkB[0] = EOS;
+ str = StringAppend(str, spC);
+ for (j = 0; j < numColumns; j++)
+ {
+ if (*ecWord != 0xFFFF)
+ {
+ str = CopyEasyChatWord(str, *ecWord);
+ ecWord++;
+ }
+ else
+ {
+ ecWord++;
+ if (!var1)
+ {
+ str = WriteColorChangeControlCode(str, 0, 4);
+ for (k = 0; k < 12; k++)
+ {
+ *str = CHAR_HYPHEN;
+ str++;
+ }
+
+ str = WriteColorChangeControlCode(str, 0, 2);
+ }
+ }
+
+ if (var1)
+ spC[2] = 3;
+
+ str = StringAppend(str, spC);
+ if (frameId == 2 || frameId == 7 || frameId == 8)
+ {
+ if (j == 0 && i == 4)
+ break;
+ }
+ }
+
+ *str = EOS;
+ sub_811D028(sUnknown_0203A11C->windowId, 1, sUnknown_0203A11C->unkB, 0, i * 16 + 1, 0xFF, 0);
+ }
+
+ CopyWindowToVram(sUnknown_0203A11C->windowId, 3);
+}
+
+static void sub_811D424(u16 *tilemap)
+{
+ u8 frameId;
+ int right, bottom;
+ int x, y;
+
+ frameId = GetEasyChatScreenFrameId();
+ CpuFastFill(0, tilemap, BG_SCREEN_SIZE);
+ if (frameId == 2 || frameId == 8)
+ {
+ right = sPhraseFrameDimensions[frameId].left + sPhraseFrameDimensions[frameId].width;
+ bottom = sPhraseFrameDimensions[frameId].top + sPhraseFrameDimensions[frameId].height;
+ for (y = sPhraseFrameDimensions[frameId].top; y < bottom; y++)
+ {
+ x = sPhraseFrameDimensions[frameId].left - 1;
+ tilemap[y * 32 + x] = 0x1005;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x1000;
+
+ tilemap[y* 32 + x] = 0x1007;
+ }
+ }
+ else
+ {
+ y = sPhraseFrameDimensions[frameId].top - 1;
+ x = sPhraseFrameDimensions[frameId].left - 1;
+ right = sPhraseFrameDimensions[frameId].left + sPhraseFrameDimensions[frameId].width;
+ bottom = sPhraseFrameDimensions[frameId].top + sPhraseFrameDimensions[frameId].height;
+ tilemap[y * 32 + x] = 0x1001;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x1002;
+
+ tilemap[y * 32 + x] = 0x1003;
+ y++;
+ for (; y < bottom; y++)
+ {
+ x = sPhraseFrameDimensions[frameId].left - 1;
+ tilemap[y * 32 + x] = 0x1005;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x1000;
+
+ tilemap[y* 32 + x] = 0x1007;
+ }
+
+ x = sPhraseFrameDimensions[frameId].left - 1;
+ tilemap[y * 32 + x] = 0x1009;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x100A;
+
+ tilemap[y * 32 + x] = 0x100B;
+ }
+}
+
+static void sub_811D60C(void)
+{
+ u8 frameId;
+ u16 *tilemap;
+
+ tilemap = GetBgTilemapBuffer(3);
+ frameId = GetEasyChatScreenFrameId();
+ switch (sPhraseFrameDimensions[frameId].footerId)
+ {
+ case 2:
+ tilemap += 0x2A0;
+ CopyToBgTilemapBufferRect(3, tilemap, 0, 11, 32, 2);
+ break;
+ case 1:
+ tilemap += 0x300;
+ CopyToBgTilemapBufferRect(3, tilemap, 0, 11, 32, 2);
+ break;
+ case 3:
+ CopyToBgTilemapBufferRect(3, tilemap, 0, 10, 32, 4);
+ break;
+ }
+}
+
+static void sub_811D684(void)
+{
+ PutWindowTilemap(2);
+ CopyBgTilemapBufferToVram(2);
+}
+
+static void sub_811D698(u32 arg0)
+{
+ sub_811DD84();
+ FillWindowPixelBuffer(2, PIXEL_FILL(1));
+ switch (arg0)
+ {
+ case 0:
+ sub_811D6F4();
+ break;
+ case 1:
+ sub_811D758();
+ break;
+ case 2:
+ sub_811D794();
+ break;
+ }
+
+ CopyWindowToVram(2, 2);
+}
+
+static void sub_811D6D4(void)
+{
+ if (!sub_811BBB0())
+ sub_811D698(0);
+ else
+ sub_811D698(1);
+}
+
+static void sub_811D6F4(void)
+{
+ int i;
+ int x, y;
+
+ i = 0;
+ y = 97;
+ while (1)
+ {
+ for (x = 0; x < 2; x++)
+ {
+ u8 groupId = sub_811F3B8(i++);
+ if (groupId == EC_NUM_GROUPS)
+ {
+ sub_811DDAC(sub_811BBBC(), 0);
+ return;
+ }
+
+ sub_811D028(2, 1, GetEasyChatWordGroupName(groupId), x * 84 + 10, y, 0xFF, NULL);
+ }
+
+ y += 16;
+ }
+}
+
+static void sub_811D758(void)
+{
+ u32 i;
+
+ for (i = 0; i < ARRAY_COUNT(sUnknown_08597C90); i++)
+ sub_811D028(2, 1, sUnknown_08597C90[i], 10, 97 + i * 16, 0xFF, NULL);
+}
+
+static void sub_811D794(void)
+{
+ sub_811D864(0, 4);
+}
+
+static void sub_811D7A4(void)
+{
+ u8 var0 = sub_811BBDC() + 3;
+ sub_811D950(var0, 1);
+ sub_811D864(var0, 1);
+}
+
+static void sub_811D7C8(void)
+{
+ u8 var0 = sub_811BBDC();
+ sub_811D950(var0, 1);
+ sub_811D864(var0, 1);
+}
+
+static void sub_811D7EC(void)
+{
+ u8 var0 = sub_811BBDC();
+ u8 var1 = var0 + 4;
+ u8 var2 = sub_811BBE8() + 1;
+ if (var1 > var2)
+ var1 = var2;
+
+ if (var0 < var1)
+ {
+ u8 var3 = var1 - var0;
+ sub_811D950(var0, var3);
+ sub_811D864(var0, var3);
+ }
+}
+
+static void sub_811D830(void)
+{
+ u8 var0 = sub_811BBDC();
+ u8 var1 = sub_811DE48();
+ if (var0 < var1)
+ {
+ u8 var2 = var1 - var0;
+ sub_811D950(var0, var2);
+ sub_811D864(var0, var2);
+ }
+}
+
+static void sub_811D864(u8 arg0, u8 arg1)
+{
+ int i, j;
+ u16 easyChatWord;
+ u8 *str;
+ int y;
+ int var0;
+
+ var0 = arg0 * 2;
+ y = (arg0 * 16 + 96) & 0xFF;
+ y++;
+ for (i = 0; i < arg1; i++)
+ {
+ for (j = 0; j < 2; j++)
+ {
+ easyChatWord = sub_811F578(var0++);
+ if (easyChatWord != 0xFFFF)
+ {
+ CopyEasyChatWordPadded(sUnknown_0203A11C->unkCC, easyChatWord, 0);
+ if (!sub_811BF88(easyChatWord))
+ sub_811D028(2, 1, sUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, NULL);
+ else
+ sub_811D058(2, 1, sUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, 1, 5, 3);
+ }
+ }
+
+ y += 16;
+ }
+
+ CopyWindowToVram(2, 2);
+}
+
+static void sub_811D950(u8 arg0, u8 arg1)
+{
+ int y;
+ int var0;
+ int var1;
+ int var2;
+
+ y = (arg0 * 16 + 96) & 0xFF;
+ var2 = arg1 * 16;
+ var0 = y + var2;
+ if (var0 > 255)
+ {
+ var1 = var0 - 256;
+ var2 = 256 - y;
+ }
+ else
+ {
+ var1 = 0;
+ }
+
+ FillWindowPixelRect(2, PIXEL_FILL(1), 0, y, 224, var2);
+ if (var1)
+ FillWindowPixelRect(2, PIXEL_FILL(1), 0, 0, 224, var1);
+}
+
+static void sub_811D9B4(void)
+{
+ FillWindowPixelBuffer(2, PIXEL_FILL(1));
+ CopyWindowToVram(2, 2);
+}
+
+static void sub_811D9CC(int arg0)
+{
+ switch (arg0)
+ {
+ case 0:
+ sUnknown_0203A11C->unk6 = 0;
+ sUnknown_0203A11C->unk7 = 10;
+ break;
+ case 1:
+ sUnknown_0203A11C->unk6 = 9;
+ sUnknown_0203A11C->unk7 = 0;
+ break;
+ case 2:
+ sUnknown_0203A11C->unk6 = 11;
+ sUnknown_0203A11C->unk7 = 17;
+ break;
+ case 3:
+ sUnknown_0203A11C->unk6 = 17;
+ sUnknown_0203A11C->unk7 = 0;
+ break;
+ case 4:
+ sUnknown_0203A11C->unk6 = 17;
+ sUnknown_0203A11C->unk7 = 10;
+ break;
+ case 5:
+ sUnknown_0203A11C->unk6 = 18;
+ sUnknown_0203A11C->unk7 = 22;
+ break;
+ case 6:
+ sUnknown_0203A11C->unk6 = 22;
+ sUnknown_0203A11C->unk7 = 18;
+ break;
+ }
+
+ sUnknown_0203A11C->unk8 = sUnknown_0203A11C->unk6 < sUnknown_0203A11C->unk7 ? 1 : -1;
+}
+
+static bool8 sub_811DAA4(void)
+{
+ u8 var0, var1;
+ if (sUnknown_0203A11C->unk6 == sUnknown_0203A11C->unk7)
+ return FALSE;
+
+ sUnknown_0203A11C->unk6 += sUnknown_0203A11C->unk8;
+ sub_811DADC(sUnknown_0203A11C->unk6);
+ var0 = sUnknown_0203A11C->unk6;
+ var1 = sUnknown_0203A11C->unk7;
+ return (var0 ^ var1) > 0;
+}
+
+static void sub_811DADC(u8 arg0)
+{
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 10, 30, 10);
+ switch (arg0)
+ {
+ case 0:
+ break;
+ case 1:
+ sub_811DC28(11, 14, 3, 2);
+ break;
+ case 2:
+ sub_811DC28(9, 14, 7, 2);
+ break;
+ case 3:
+ sub_811DC28(7, 14, 11, 2);
+ break;
+ case 4:
+ sub_811DC28(5, 14, 15, 2);
+ break;
+ case 5:
+ sub_811DC28(3, 14, 19, 2);
+ break;
+ case 6:
+ sub_811DC28(1, 14, 23, 2);
+ break;
+ case 11:
+ sub_811DC28(1, 10, 24, 10);
+ break;
+ case 12:
+ sub_811DC28(1, 10, 25, 10);
+ break;
+ case 13:
+ sub_811DC28(1, 10, 26, 10);
+ break;
+ case 14:
+ sub_811DC28(1, 10, 27, 10);
+ break;
+ case 15:
+ sub_811DC28(1, 10, 28, 10);
+ break;
+ case 16:
+ sub_811DC28(1, 10, 29, 10);
+ break;
+ case 17:
+ sub_811DC28(0, 10, 30, 10);
+ break;
+ case 10:
+ case 18:
+ sub_811DC28(1, 10, 23, 10);
+ break;
+ case 9:
+ case 19:
+ sub_811DC28(1, 11, 23, 8);
+ break;
+ case 8:
+ case 20:
+ sub_811DC28(1, 12, 23, 6);
+ break;
+ case 7:
+ case 21:
+ sub_811DC28(1, 13, 23, 4);
+ break;
+ case 22:
+ sub_811DC28(1, 14, 23, 2);
+ break;
+ }
+
+ CopyBgTilemapBufferToVram(1);
+}
+
+static void sub_811DC28(int left, int top, int width, int height)
+{
+ u16 *tilemap;
+ int right;
+ int bottom;
+ int x, y;
+
+ tilemap = sUnknown_0203A11C->unk300;
+ right = left + width - 1;
+ bottom = top + height - 1;
+ x = left;
+ y = top;
+ tilemap[y * 32 + x] = 0x4001;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x4002;
+
+ tilemap[y * 32 + x] = 0x4003;
+ y++;
+ for (; y < bottom; y++)
+ {
+ tilemap[y * 32 + left] = 0x4005;
+ x = left + 1;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x4000;
+
+ tilemap[y * 32 + x] = 0x4007;
+ }
+
+ tilemap[y * 32 + left] = 0x4009;
+ x = left + 1;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x400A;
+
+ tilemap[y * 32 + x] = 0x400B;
+ sub_811DE5C((left + 1) * 8, (top + 1) * 8, (width - 2) * 8, (height - 2) * 8);
+}
+
+static void sub_811DD84(void)
+{
+ ChangeBgY(2, 0x800, 0);
+ sUnknown_0203A11C->unk2CE = 0;
+}
+
+static void sub_811DDAC(s16 arg0, u8 arg1)
+{
+ int bgY;
+ s16 var0;
+
+ bgY = GetBgY(2);
+ sUnknown_0203A11C->unk2CE += arg0;
+ var0 = arg0 * 16;
+ bgY += var0 << 8;
+ if (arg1)
+ {
+ sUnknown_0203A11C->unk2D0 = bgY;
+ sUnknown_0203A11C->unk2D4 = arg1 * 256;
+ if (var0 < 0)
+ sUnknown_0203A11C->unk2D4 = -sUnknown_0203A11C->unk2D4;
+ }
+ else
+ {
+ ChangeBgY(2, bgY, 0);
+ }
+}
+
+static bool8 sub_811DE10(void)
+{
+ int bgY;
+
+ bgY = GetBgY(2);
+ if (bgY == sUnknown_0203A11C->unk2D0)
+ {
+ return FALSE;
+ }
+ else
+ {
+ ChangeBgY(2, sUnknown_0203A11C->unk2D4, 1);
+ return TRUE;
+ }
+}
+
+static int sub_811DE48(void)
+{
+ return sUnknown_0203A11C->unk2CE;
+}
+
+static void sub_811DE5C(u8 left, u8 top, u8 width, u8 height)
+{
+ u16 horizontalDimensions = WIN_RANGE(left, left + width);
+ u16 verticalDimensions = WIN_RANGE(top, top + height);
+ SetGpuReg(REG_OFFSET_WIN0H, horizontalDimensions);
+ SetGpuReg(REG_OFFSET_WIN0V, verticalDimensions);
+}
+
+static void sub_811DE90(void)
+{
+ u32 i;
+
+ LoadSpriteSheets(sEasyChatSpriteSheets);
+ LoadSpritePalettes(sEasyChatSpritePalettes);
+ for (i = 0; i < ARRAY_COUNT(sUnknown_08597CE8); i++)
+ LoadCompressedSpriteSheet(&sUnknown_08597CE8[i]);
+}
+
+static void sub_811DEC4(void)
+{
+ u8 frameId = GetEasyChatScreenFrameId();
+ int x = sPhraseFrameDimensions[frameId].left * 8 + 13;
+ int y = sPhraseFrameDimensions[frameId].top * 8 + 8;
+ u8 spriteId = CreateSprite(&sUnknown_08597D18, x, y, 2);
+ sUnknown_0203A11C->unk2D8 = &gSprites[spriteId];
+ gSprites[spriteId].data[1] = 1;
+}
+
+static void sub_811DF28(struct Sprite *sprite)
+{
+ if (sprite->data[1])
+ {
+ if (++sprite->data[0] > 2)
+ {
+ sprite->data[0] = 0;
+ if (++sprite->pos2.x > 0)
+ sprite->pos2.x = -6;
+ }
+ }
+}
+
+static void sub_811DF60(u8 x, u8 y)
+{
+ sUnknown_0203A11C->unk2D8->pos1.x = x;
+ sUnknown_0203A11C->unk2D8->pos1.y = y;
+ sUnknown_0203A11C->unk2D8->pos2.x = 0;
+ sUnknown_0203A11C->unk2D8->data[0] = 0;
+}
+
+static void sub_811DF90(void)
+{
+ sUnknown_0203A11C->unk2D8->data[0] = 0;
+ sUnknown_0203A11C->unk2D8->data[1] = 0;
+ sUnknown_0203A11C->unk2D8->pos2.x = 0;
+}
+
+static void sub_811DFB0(void)
+{
+ sUnknown_0203A11C->unk2D8->data[1] = 1;
+}
+
+static void sub_811DFC8(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597D68, 0, 0, 3);
+ sUnknown_0203A11C->unk2DC = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2DC->pos2.x = 32;
+
+ spriteId = CreateSprite(&sUnknown_08597D68, 0, 0, 3);
+ sUnknown_0203A11C->unk2E0 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2E0->pos2.x = -32;
+
+ sUnknown_0203A11C->unk2DC->hFlip = 1;
+ sub_811E088();
+}
+
+static void sub_811E050(void)
+{
+ DestroySprite(sUnknown_0203A11C->unk2DC);
+ sUnknown_0203A11C->unk2DC = NULL;
+ DestroySprite(sUnknown_0203A11C->unk2E0);
+ sUnknown_0203A11C->unk2E0 = NULL;
+}
+
+static void sub_811E088(void)
+{
+ u8 var0;
+ u8 var1;
+
+ if (sUnknown_0203A11C->unk2DC && sUnknown_0203A11C->unk2E0)
+ {
+ sub_811BB9C(&var0, &var1);
+ if (!sub_811BBB0())
+ sub_811E0EC(var0, var1);
+ else
+ sub_811E1A4(var0, var1);
}
- if (gUnknown_0203A118->unk_06 < 0)
+}
+
+static void sub_811E0EC(s8 arg0, s8 arg1)
+{
+ if (arg0 != -1)
{
- gUnknown_0203A118->unk_06 = gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02;
+ StartSpriteAnim(sUnknown_0203A11C->unk2DC, 0);
+ sUnknown_0203A11C->unk2DC->pos1.x = arg0 * 84 + 58;
+ sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 96;
+
+ StartSpriteAnim(sUnknown_0203A11C->unk2E0, 0);
+ sUnknown_0203A11C->unk2E0->pos1.x = arg0 * 84 + 58;
+ sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 96;
}
- if (gUnknown_0203A118->unk_06 > gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02)
+ else
{
- gUnknown_0203A118->unk_06 = 0;
+ StartSpriteAnim(sUnknown_0203A11C->unk2DC, 1);
+ sUnknown_0203A11C->unk2DC->pos1.x = 216;
+ sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112;
+
+ StartSpriteAnim(sUnknown_0203A11C->unk2E0, 1);
+ sUnknown_0203A11C->unk2E0->pos1.x = 216;
+ sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112;
}
- if (gUnknown_0203A118->unk_06 == gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02)
+}
+
+static void sub_811E1A4(s8 arg0, s8 arg1)
+{
+ int anim;
+ int x, y;
+
+ if (arg0 != -1)
{
- if (gUnknown_0203A118->unk_05 > 2)
+ y = arg1 * 16 + 96;
+ x = 32;
+ if (arg0 == 6 && arg1 == 0)
+ {
+ x = 158;
+ anim = 2;
+ }
+ else
{
- gUnknown_0203A118->unk_05 = 2;
+ x += sUnknown_08597D08[arg0 < ARRAY_COUNT(sUnknown_08597D08) ? arg0 : 0];
+ anim = 3;
}
- gUnknown_0203A118->unk_04 = 1;
+
+ StartSpriteAnim(sUnknown_0203A11C->unk2DC, anim);
+ sUnknown_0203A11C->unk2DC->pos1.x = x;
+ sUnknown_0203A11C->unk2DC->pos1.y = y;
+
+ StartSpriteAnim(sUnknown_0203A11C->unk2E0, anim);
+ sUnknown_0203A11C->unk2E0->pos1.x = x;
+ sUnknown_0203A11C->unk2E0->pos1.y = y;
+ }
+ else
+ {
+ StartSpriteAnim(sUnknown_0203A11C->unk2DC, 1);
+ sUnknown_0203A11C->unk2DC->pos1.x = 216;
+ sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112;
+
+ StartSpriteAnim(sUnknown_0203A11C->unk2E0, 1);
+ sUnknown_0203A11C->unk2E0->pos1.x = 216;
+ sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112;
+ }
+}
+
+static void sub_811E288(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597D18, 0, 0, 4);
+ sUnknown_0203A11C->unk2E4 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2E4->callback = sub_811E2DC;
+ sUnknown_0203A11C->unk2E4->oam.priority = 2;
+ sub_811E30C();
+}
+
+static void sub_811E2DC(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 2)
+ {
+ sprite->data[0] = 0;
+ if (++sprite->pos2.x > 0)
+ sprite->pos2.x = -6;
+ }
+}
+
+static void sub_811E30C(void)
+{
+ s8 var0, var1, x, y;
+
+ sub_811BBC8(&var0, &var1);
+ x = var0 * 13;
+ x = x * 8 + 28;
+ y = var1 * 16 + 96;
+ sub_811E34C(x, y);
+}
+
+static void sub_811E34C(u8 x, u8 y)
+{
+ if (sUnknown_0203A11C->unk2E4)
+ {
+ sUnknown_0203A11C->unk2E4->pos1.x = x;
+ sUnknown_0203A11C->unk2E4->pos1.y = y;
+ sUnknown_0203A11C->unk2E4->pos2.x = 0;
+ sUnknown_0203A11C->unk2E4->data[0] = 0;
+ }
+}
+
+static void sub_811E380(void)
+{
+ if (sUnknown_0203A11C->unk2E4)
+ {
+ DestroySprite(sUnknown_0203A11C->unk2E4);
+ sUnknown_0203A11C->unk2E4 = NULL;
+ }
+}
+
+static void sub_811E3AC(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597DF0, 208, 128, 6);
+ sUnknown_0203A11C->unk2E8 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2E8->pos2.x = -64;
+
+ spriteId = CreateSprite(&sUnknown_08597DD0, 208, 80, 5);
+ sUnknown_0203A11C->unk2EC = &gSprites[spriteId];
+ sUnknown_0203A11C->unk9 = 0;
+}
+
+static bool8 sub_811E418(void)
+{
+ switch (sUnknown_0203A11C->unk9)
+ {
+ default:
+ return FALSE;
+ case 0:
+ sUnknown_0203A11C->unk2E8->pos2.x += 8;
+ if (sUnknown_0203A11C->unk2E8->pos2.x >= 0)
+ {
+ sUnknown_0203A11C->unk2E8->pos2.x = 0;
+ if (!sub_811BBB0())
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 1);
+ else
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 2);
+
+ sUnknown_0203A11C->unk9++;
+ }
+ break;
+ case 1:
+ if (sUnknown_0203A11C->unk2EC->animEnded)
+ {
+ sUnknown_0203A11C->unk9 = 2;
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static void sub_811E4AC(void)
+{
+ sUnknown_0203A11C->unk9 = 0;
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 3);
+}
+
+static bool8 sub_811E4D0(void)
+{
+ switch (sUnknown_0203A11C->unk9)
+ {
+ default:
+ return FALSE;
+ case 0:
+ if (sUnknown_0203A11C->unk2EC->animEnded)
+ sUnknown_0203A11C->unk9 = 1;
+ break;
+ case 1:
+ sUnknown_0203A11C->unk2E8->pos2.x -= 8;
+ if (sUnknown_0203A11C->unk2E8->pos2.x <= -64)
+ {
+ DestroySprite(sUnknown_0203A11C->unk2EC);
+ DestroySprite(sUnknown_0203A11C->unk2E8);
+ sUnknown_0203A11C->unk2EC = NULL;
+ sUnknown_0203A11C->unk2E8 = NULL;
+ sUnknown_0203A11C->unk9++;
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static void sub_811E55C(void)
+{
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 4);
+}
+
+static void sub_811E578(void)
+{
+ if (!sub_811BBB0())
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 1);
+ else
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 2);
+}
+
+static bool8 sub_811E5B8(void)
+{
+ return !sUnknown_0203A11C->unk2EC->animEnded;
+}
+
+static void sub_811E5D4(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597E48, 96, 80, 0);
+ if (spriteId != MAX_SPRITES)
+ sUnknown_0203A11C->unk2F0 = &gSprites[spriteId];
+
+ spriteId = CreateSprite(&sUnknown_08597E48, 96, 156, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sUnknown_0203A11C->unk2F4 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2F4->vFlip = 1;
+ }
+
+ sub_811E6B0();
+}
+
+static void sub_811E64C(void)
+{
+ sUnknown_0203A11C->unk2F0->invisible = !sub_811BBF8();
+ sUnknown_0203A11C->unk2F4->invisible = !sub_811BC2C();
+}
+
+static void sub_811E6B0(void)
+{
+ sUnknown_0203A11C->unk2F0->invisible = 1;
+ sUnknown_0203A11C->unk2F4->invisible = 1;
+}
+
+static void sub_811E6E0(int arg0)
+{
+ if (!arg0)
+ {
+ sUnknown_0203A11C->unk2F0->pos1.x = 96;
+ sUnknown_0203A11C->unk2F4->pos1.x = 96;
+ }
+ else
+ {
+ sUnknown_0203A11C->unk2F0->pos1.x = 120;
+ sUnknown_0203A11C->unk2F4->pos1.x = 120;
+ }
+}
+
+static void sub_811E720(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597E30, 220, 84, 1);
+ if (spriteId != MAX_SPRITES)
+ sUnknown_0203A11C->unk2F8 = &gSprites[spriteId];
+
+ spriteId = CreateSprite(&sUnknown_08597E30, 220, 156, 1);
+ if (spriteId != MAX_SPRITES)
+ {
+ sUnknown_0203A11C->unk2FC = &gSprites[spriteId];
+ StartSpriteAnim(sUnknown_0203A11C->unk2FC, 1);
+ }
+
+ sub_811E7F8();
+}
+
+static void sub_811E794(void)
+{
+ sUnknown_0203A11C->unk2F8->invisible = !sub_811BBF8();
+ sUnknown_0203A11C->unk2FC->invisible = !sub_811BC2C();
+}
+
+static void sub_811E7F8(void)
+{
+ sUnknown_0203A11C->unk2F8->invisible = 1;
+ sUnknown_0203A11C->unk2FC->invisible = 1;
+}
+
+static void sub_811E828(void)
+{
+ int graphicsId;
+ u8 spriteId;
+
+ switch (GetDisplayedPersonType())
+ {
+ case EASY_CHAT_PERSON_REPORTER_MALE:
+ graphicsId = EVENT_OBJ_GFX_REPORTER_M;
+ break;
+ case EASY_CHAT_PERSON_REPORTER_FEMALE:
+ graphicsId = EVENT_OBJ_GFX_REPORTER_F;
+ break;
+ case EASY_CHAT_PERSON_BOY:
+ graphicsId = EVENT_OBJ_GFX_BOY_1;
+ break;
+ default:
+ return;
+ }
+
+ if (GetEasyChatScreenFrameId() != 4)
+ return;
+
+ spriteId = AddPseudoEventObject(graphicsId, SpriteCallbackDummy, 76, 40, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.priority = 0;
+ StartSpriteAnim(&gSprites[spriteId], 2);
+ }
+
+ spriteId = AddPseudoEventObject(
+ gSaveBlock2Ptr->playerGender == MALE ? EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL : EVENT_OBJ_GFX_RIVAL_MAY_NORMAL,
+ SpriteCallbackDummy,
+ 52,
+ 40,
+ 0);
+
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.priority = 0;
+ StartSpriteAnim(&gSprites[spriteId], 3);
+ }
+}
+
+int GetFooterIndex(void)
+{
+ u8 frameId = GetEasyChatScreenFrameId();
+ switch (sPhraseFrameDimensions[frameId].footerId)
+ {
+ case 1:
+ return 1;
+ case 2:
+ return 2;
+ case 0:
+ return 0;
+ default:
return 3;
}
- /*
- * FIXME: right, down, left, b, and start
- * should be inserted here, but aren't
- */
- if (gUnknown_0203A118->unk_05 < 0)
+}
+
+static int GetFooterOptionXOffset(int option)
+{
+ int footerIndex = GetFooterIndex();
+ if (footerIndex < 3)
+ return sFooterOptionXOffsets[footerIndex][option] + 4;
+ else
+ return 0;
+}
+
+static void sub_811E948(void)
+{
+ int i;
+ u16 windowId;
+ struct WindowTemplate template;
+ int footerId = GetFooterIndex();
+ if (footerId == 3)
+ return;
+
+ template.bg = 3;
+ template.tilemapLeft = 1;
+ template.tilemapTop = 11;
+ template.width = 28;
+ template.height = 2;
+ template.paletteNum = 11;
+ template.baseBlock = 0x34;
+ windowId = AddWindow(&template);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ for (i = 0; i < 4; i++)
{
- gUnknown_0203A118->unk_05 = gUnknown_08597550[gUnknown_0203A118->unk_01].unk_01 - 1;
+ const u8 *str = sFooterTextOptions[footerId][i];
+ if (str)
+ {
+ int x = sFooterOptionXOffsets[footerId][i];
+ sub_811D028(windowId, 1, str, x, 1, 0, NULL);
+ }
}
- if (gUnknown_0203A118->unk_05 >= gUnknown_08597550[gUnknown_0203A118->unk_01].unk_01)
+
+ PutWindowTilemap(windowId);
+}
+
+static bool8 sub_811EA28(u8 groupId)
+{
+ switch (groupId)
{
- gUnknown_0203A118->unk_05 = 0;
+ case EC_GROUP_TRENDY_SAYING:
+ return FlagGet(FLAG_SYS_HIPSTER_MEET);
+ case EC_GROUP_EVENTS:
+ case EC_GROUP_MOVE_1:
+ case EC_GROUP_MOVE_2:
+ return FlagGet(FLAG_SYS_GAME_CLEAR);
+ case EC_GROUP_POKEMON_2:
+ return sub_811F0F8();
+ default:
+ return TRUE;
}
- if (sub_811AB44() && gUnknown_0203A118->unk_05 == 1 && gUnknown_0203A118->unk_06 == 4)
+}
+
+u16 EasyChat_GetNumWordsInGroup(u8 groupId)
+{
+ if (groupId == EC_GROUP_POKEMON)
+ return GetNationalPokedexCount(FLAG_GET_SEEN);
+
+ if (sub_811EA28(groupId))
+ return gEasyChatGroups[groupId].numEnabledWords;
+
+ return 0;
+}
+
+bool8 sub_811EAA4(u16 easyChatWord)
+{
+ u16 i;
+ u8 groupId;
+ u32 index;
+ u16 numWords;
+ const u16 *list;
+ if (easyChatWord == 0xFFFF)
+ return FALSE;
+
+ groupId = EC_GROUP(easyChatWord);
+ index = EC_INDEX(easyChatWord);
+ if (groupId >= EC_NUM_GROUPS)
+ return TRUE;
+
+ numWords = gEasyChatGroups[groupId].numWords;
+ switch (groupId)
{
- gUnknown_0203A118->unk_05 = 0;
+ case EC_GROUP_POKEMON:
+ case EC_GROUP_POKEMON_2:
+ case EC_GROUP_MOVE_1:
+ case EC_GROUP_MOVE_2:
+ list = gEasyChatGroups[groupId].wordData.valueList;
+ for (i = 0; i < numWords; i++)
+ {
+ if (index == list[i])
+ return FALSE;
+ }
+ return TRUE;
+ default:
+ if (index >= numWords)
+ return TRUE;
+ else
+ return FALSE;
}
- return 2;
}
-#else
-__attribute__((naked)) static u16 sub_811AB68(void)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tldr r0, =gMain\n"
- "\tldrh r1, [r0, 0x2E]\n"
- "\tmovs r0, 0x1\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbeq _0811ABB8\n"
- "\tbl sub_811BF78\n"
- "\tldr r1, =gUnknown_0203A118\n"
- "\tldr r3, [r1]\n"
- "\tmovs r2, 0\n"
- "\tmovs r0, 0x2\n"
- "\tstrb r0, [r3, 0x4]\n"
- "\tldr r0, [r1]\n"
- "\tstrb r2, [r0, 0xA]\n"
- "\tldr r0, [r1]\n"
- "\tstrb r2, [r0, 0xB]\n"
- "\tldr r0, [r1]\n"
- "\tstrb r2, [r0, 0xC]\n"
- "\tmovs r0, 0x9\n"
- "\tb _0811ACCC_return_r0\n"
- "\t.pool\n"
- "_0811AB9C:\n"
- "\tmovs r0, 0x20\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _0811AC68_dpad_left\n"
- "\tmovs r0, 0x80\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _0811AC58_dpad_down\n"
- "\tmovs r0, 0x10\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _0811AC48_dpad_right\n"
- "\tmovs r0, 0\n"
- "\tb _0811ACCC_return_r0\n"
- "_0811ABB8:\n"
- "\tmovs r0, 0x2\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _0811AC78_b_button\n"
- "\tmovs r0, 0x8\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _0811AC7E_start_button\n"
- "\tmovs r0, 0x40\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbeq _0811AB9C\n"
- "\tldr r2, =gUnknown_0203A118\n"
- "\tldr r1, [r2]\n"
- "\tldrb r0, [r1, 0x6]\n"
- "\tsubs r0, 0x1\n"
- "_0811ABD8:\n"
- "\tstrb r0, [r1, 0x6]\n"
- "_0811ABDA:\n"
- "\tadds r7, r2, 0\n"
- "\tadds r4, r7, 0\n"
- "\tldr r2, [r4]\n"
- "\tmovs r0, 0x6\n"
- "\tldrsb r0, [r2, r0]\n"
- "\tldr r6, =gUnknown_08597550\n"
- "\tcmp r0, 0\n"
- "\tbge _0811ABF8\n"
- "\tldrb r0, [r2, 0x1]\n"
- "\tlsls r1, r0, 1\n"
- "\tadds r1, r0\n"
- "\tlsls r1, 3\n"
- "\tadds r1, r6\n"
- "\tldrb r0, [r1, 0x2]\n"
- "\tstrb r0, [r2, 0x6]\n"
- "_0811ABF8:\n"
- "\tldr r3, [r4]\n"
- "\tmovs r2, 0x6\n"
- "\tldrsb r2, [r3, r2]\n"
- "\tadds r5, r6, 0\n"
- "\tldrb r1, [r3, 0x1]\n"
- "\tlsls r0, r1, 1\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 3\n"
- "\tadds r0, r5\n"
- "\tldrb r0, [r0, 0x2]\n"
- "\tcmp r2, r0\n"
- "\tble _0811AC14\n"
- "\tmovs r0, 0\n"
- "\tstrb r0, [r3, 0x6]\n"
- "_0811AC14:\n"
- "\tldr r3, [r4]\n"
- "\tmovs r2, 0x6\n"
- "\tldrsb r2, [r3, r2]\n"
- "\tldrb r1, [r3, 0x1]\n"
- "\tlsls r0, r1, 1\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 3\n"
- "\tadds r1, r0, r5\n"
- "\tldrb r0, [r1, 0x2]\n"
- "\tcmp r2, r0\n"
- "\tbne _0811AC88\n"
- "\tmovs r0, 0x5\n"
- "\tldrsb r0, [r3, r0]\n"
- "\tcmp r0, 0x2\n"
- "\tble _0811AC36\n"
- "\tmovs r0, 0x2\n"
- "\tstrb r0, [r3, 0x5]\n"
- "_0811AC36:\n"
- "\tldr r1, [r4]\n"
- "\tmovs r0, 0x1\n"
- "\tstrb r0, [r1, 0x4]\n"
- "\tmovs r0, 0x3\n"
- "\tb _0811ACCC_return_r0\n"
- "\t.pool\n"
- "_0811AC48_dpad_right:\n"
- "\tldr r2, =gUnknown_0203A118\n"
- "\tldr r1, [r2]\n"
- "\tldrb r0, [r1, 0x5]\n"
- "\tadds r0, 0x1\n"
- "\tstrb r0, [r1, 0x5]\n"
- "\tb _0811ABDA\n"
- "\t.pool\n"
- "_0811AC58_dpad_down:\n"
- "\tldr r2, =gUnknown_0203A118\n"
- "\tldr r1, [r2]\n"
- "\tldrb r0, [r1, 0x6]\n"
- "\tadds r0, 0x1\n"
- "\tb _0811ABD8\n"
- "\t.pool\n"
- "_0811AC68_dpad_left:\n"
- "\tldr r2, =gUnknown_0203A118\n"
- "\tldr r1, [r2]\n"
- "\tldrb r0, [r1, 0x5]\n"
- "\tsubs r0, 0x1\n"
- "\tstrb r0, [r1, 0x5]\n"
- "\tb _0811ABDA\n"
- "\t.pool\n"
- "_0811AC78_b_button:\n"
- "\tbl sub_811B150\n"
- "\tb _0811AC82\n"
- "_0811AC7E_start_button:\n"
- "\tbl sub_811B1B4\n"
- "_0811AC82:\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tb _0811ACCC_return_r0\n"
- "_0811AC88:\n"
- "\tmovs r0, 0x5\n"
- "\tldrsb r0, [r3, r0]\n"
- "\tcmp r0, 0\n"
- "\tbge _0811AC96\n"
- "\tldrb r0, [r1, 0x1]\n"
- "\tsubs r0, 0x1\n"
- "\tstrb r0, [r3, 0x5]\n"
- "_0811AC96:\n"
- "\tldr r3, [r4]\n"
- "\tmovs r2, 0x5\n"
- "\tldrsb r2, [r3, r2]\n"
- "\tldrb r1, [r3, 0x1]\n"
- "\tlsls r0, r1, 1\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 3\n"
- "\tadds r0, r6\n"
- "\tldrb r0, [r0, 0x1]\n"
- "\tcmp r2, r0\n"
- "\tblt _0811ACB0\n"
- "\tmovs r0, 0\n"
- "\tstrb r0, [r3, 0x5]\n"
- "_0811ACB0:\n"
- "\tbl sub_811AB44\n"
- "\tcmp r0, 0\n"
- "\tbeq _0811ACCA\n"
- "\tldr r2, [r7]\n"
- "\tldr r0, [r2, 0x4]\n"
- "\tldr r1, =0x00ffff00\n"
- "\tands r0, r1\n"
- "\tldr r1, =0x00040100\n"
- "\tcmp r0, r1\n"
- "\tbne _0811ACCA\n"
- "\tmovs r0, 0\n"
- "\tstrb r0, [r2, 0x5]\n"
- "_0811ACCA:\n"
- "\tmovs r0, 0x2\n"
- "_0811ACCC_return_r0:\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- "\t.pool");
-}
-#endif
+
+bool8 ECWord_CheckIfOutsideOfValidRange(u16 easyChatWord)
+{
+ int numWordsInGroup;
+ u8 groupId = EC_GROUP(easyChatWord);
+ u32 index = EC_INDEX(easyChatWord);
+ if (groupId >= EC_NUM_GROUPS)
+ return TRUE;
+
+ switch (groupId)
+ {
+ case EC_GROUP_POKEMON:
+ case EC_GROUP_POKEMON_2:
+ numWordsInGroup = gUnknown_085F5490;
+ break;
+ case EC_GROUP_MOVE_1:
+ case EC_GROUP_MOVE_2:
+ numWordsInGroup = gUnknown_085FA1D4;
+ break;
+ default:
+ numWordsInGroup = gEasyChatGroups[groupId].numWords;
+ break;
+ }
+
+ if (numWordsInGroup <= index)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+const u8 *GetEasyChatWord(u8 groupId, u16 index)
+{
+ switch (groupId)
+ {
+ case EC_GROUP_POKEMON:
+ case EC_GROUP_POKEMON_2:
+ return gSpeciesNames[index];
+ case EC_GROUP_MOVE_1:
+ case EC_GROUP_MOVE_2:
+ return gMoveNames[index];
+ default:
+ return gEasyChatGroups[groupId].wordData.words[index].text;
+ }
+}
+
+u8 *CopyEasyChatWord(u8 *dest, u16 easyChatWord)
+{
+ u8 *resultStr;
+ if (sub_811EAA4(easyChatWord))
+ {
+ resultStr = StringCopy(dest, gText_ThreeQuestionMarks);
+ }
+ else if (easyChatWord != 0xFFFF)
+ {
+ u16 index = EC_INDEX(easyChatWord);
+ u8 groupId = EC_GROUP(easyChatWord);
+ resultStr = StringCopy(dest, GetEasyChatWord(groupId, index));
+ }
+ else
+ {
+ *dest = EOS;
+ resultStr = dest;
+ }
+
+ return resultStr;
+}
+
+u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows)
+{
+ u16 i, j;
+ u16 numColumns = columns - 1;
+
+ for (i = 0; i < rows; i++)
+ {
+ for (j = 0; j < numColumns; j++)
+ {
+ dest = CopyEasyChatWord(dest, *src);
+ if (*src != 0xFFFF)
+ {
+ *dest = CHAR_SPACE;
+ dest++;
+ }
+
+ src++;
+ }
+
+ dest = CopyEasyChatWord(dest, *(src++));
+ *dest = CHAR_NEWLINE;
+ dest++;
+ }
+
+ dest--;
+ *dest = EOS;
+ return dest;
+}
+
+u8 *unref_sub_811EC98(u8 *dest, const u16 *src, u16 columns, u16 rows)
+{
+ u16 i, j, k;
+ u16 numColumns;
+ int var0, var1;
+
+ numColumns = columns;
+ var1 = 0;
+ columns--;
+ for (i = 0; i < rows; i++)
+ {
+ const u16 *var2 = src;
+ var0 = 0;
+ for (j = 0; j < numColumns; j++)
+ {
+ if (var2[j] != 0xFFFF)
+ var0 = 1;
+ }
+
+ if (!var0)
+ {
+ src += numColumns;
+ continue;
+ }
+
+ for (k = 0; k < columns; k++)
+ {
+ dest = CopyEasyChatWord(dest, *src);
+ if (*src != 0xFFFF)
+ {
+ *dest = CHAR_SPACE;
+ dest++;
+ }
+
+ src++;
+ }
+
+ dest = CopyEasyChatWord(dest, *(src++));
+ if (var1 == 0)
+ *dest = CHAR_NEWLINE;
+ else
+ *dest = CHAR_PROMPT_SCROLL;
+
+ dest++;
+ var1++;
+ }
+
+ dest--;
+ *dest = EOS;
+ return dest;
+}
+
+static u16 GetEasyChatWordStringLength(u16 easyChatWord)
+{
+ if (easyChatWord == 0xFFFF)
+ return 0;
+
+ if (sub_811EAA4(easyChatWord))
+ {
+ return StringLength(gText_ThreeQuestionMarks);
+ }
+ else
+ {
+ u16 index = EC_INDEX(easyChatWord);
+ u8 groupId = EC_GROUP(easyChatWord);
+ return StringLength(GetEasyChatWord(groupId, index));
+ }
+}
+
+bool8 sub_811EDC4(const u16 *easyChatWords, u8 arg1, u8 arg2, u16 arg3)
+{
+ u8 i, j;
+
+ for (i = 0; i < arg2; i++)
+ {
+ u16 totalLength = arg1 - 1;
+ for (j = 0; j < arg1; j++)
+ totalLength += GetEasyChatWordStringLength(*(easyChatWords++));
+
+ if (totalLength > arg3)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+u16 sub_811EE38(u16 groupId)
+{
+ u16 index = Random() % gEasyChatGroups[groupId].numWords;
+ if (groupId == EC_GROUP_POKEMON
+ || groupId == EC_GROUP_POKEMON_2
+ || groupId == EC_GROUP_MOVE_1
+ || groupId == EC_GROUP_MOVE_2)
+ {
+ index = gEasyChatGroups[groupId].wordData.valueList[index];
+ }
+
+ return EC_WORD(groupId, index);
+}
+
+u16 sub_811EE90(u16 groupId)
+{
+ if (!sub_811EA28(groupId))
+ return 0xFFFF;
+
+ if (groupId == EC_GROUP_POKEMON)
+ return sub_811F108();
+
+ return sub_811EE38(groupId);
+}
+
+void sub_811EECC(void)
+{
+ u16 *easyChatWords;
+ int columns, rows;
+ switch (gSpecialVar_0x8004)
+ {
+ case 0:
+ easyChatWords = gSaveBlock1Ptr->easyChatProfile;
+ columns = 2;
+ rows = 2;
+ break;
+ case 1:
+ easyChatWords = gSaveBlock1Ptr->easyChatBattleStart;
+ if (sub_811EDC4(gSaveBlock1Ptr->easyChatBattleStart, 3, 2, 18))
+ {
+ columns = 2;
+ rows = 3;
+ }
+ else
+ {
+ columns = 3;
+ rows = 2;
+ }
+ break;
+ case 2:
+ easyChatWords = gSaveBlock1Ptr->easyChatBattleWon;
+ columns = 3;
+ rows = 2;
+ break;
+ case 3:
+ easyChatWords = gSaveBlock1Ptr->easyChatBattleLost;
+ columns = 3;
+ rows = 2;
+ break;
+ default:
+ return;
+ }
+
+ ConvertEasyChatWordsToString(gStringVar4, easyChatWords, columns, rows);
+ ShowFieldAutoScrollMessage(gStringVar4);
+}
+
+void sub_811EF6C(void)
+{
+ int groupId = Random() & 1 ? EC_GROUP_HOBBIES : EC_GROUP_LIFESTYLE;
+ u16 easyChatWord = sub_811EE90(groupId);
+ CopyEasyChatWord(gStringVar2, easyChatWord);
+}
+
+static bool8 sub_811EF98(u8 additionalPhraseId)
+{
+ int byteOffset = additionalPhraseId / 8;
+ int shift = additionalPhraseId % 8;
+ return (gSaveBlock1Ptr->additionalPhrases[byteOffset] >> shift) & 1;
+}
+
+void sub_811EFC0(u8 additionalPhraseId)
+{
+ if (additionalPhraseId < 33)
+ {
+ int byteOffset = additionalPhraseId / 8;
+ int shift = additionalPhraseId % 8;
+ gSaveBlock1Ptr->additionalPhrases[byteOffset] |= 1 << shift;
+ }
+}
+
+u8 sub_811EFF0(void)
+{
+ u8 i;
+ u8 numAdditionalPhrasesUnlocked;
+
+ for (i = 0, numAdditionalPhrasesUnlocked = 0; i < 33; i++)
+ {
+ if (sub_811EF98(i))
+ numAdditionalPhrasesUnlocked++;
+ }
+
+ return numAdditionalPhrasesUnlocked;
+}
+
+u16 sub_811F01C(void)
+{
+ u16 i;
+ u16 additionalPhraseId;
+ u8 numAdditionalPhrasesUnlocked = sub_811EFF0();
+ if (numAdditionalPhrasesUnlocked == 33)
+ return 0xFFFF;
+
+ additionalPhraseId = Random() % (33 - numAdditionalPhrasesUnlocked);
+ for (i = 0; i < 33; i++)
+ {
+ if (!sub_811EF98(i))
+ {
+ if (additionalPhraseId)
+ {
+ additionalPhraseId--;
+ }
+ else
+ {
+ sub_811EFC0(i);
+ return EC_WORD(EC_GROUP_TRENDY_SAYING, i);
+ }
+ }
+ }
+
+ return 0xFFFF;
+}
+
+u16 sub_811F090(void)
+{
+ u16 i;
+ u16 additionalPhraseId = sub_811EFF0();
+ if (additionalPhraseId == 0)
+ return 0xFFFF;
+
+ additionalPhraseId = Random() % additionalPhraseId;
+ for (i = 0; i < 33; i++)
+ {
+ if (sub_811EF98(i))
+ {
+ if (additionalPhraseId)
+ additionalPhraseId--;
+ else
+ return EC_WORD(EC_GROUP_TRENDY_SAYING, i);
+ }
+ }
+
+ return 0xFFFF;
+}
+
+static bool8 sub_811F0F8(void)
+{
+ return IsNationalPokedexEnabled();
+}
+
+static u16 sub_811F108(void)
+{
+ u16 i;
+ u16 numWords;
+ const u16 *species;
+ u16 index = EasyChat_GetNumWordsInGroup(EC_GROUP_POKEMON);
+ if (index == 0)
+ return 0xFFFF;
+
+ index = Random() % index;
+ species = gEasyChatGroups[EC_GROUP_POKEMON].wordData.valueList;
+ numWords = gEasyChatGroups[EC_GROUP_POKEMON].numWords;
+ for (i = 0; i < numWords; i++)
+ {
+ u16 dexNum = SpeciesToNationalPokedexNum(*species);
+ if (GetSetPokedexFlag(dexNum, FLAG_GET_SEEN))
+ {
+ if (index)
+ index--;
+ else
+ return EC_WORD(EC_GROUP_POKEMON, *species);
+ }
+
+ species++;
+ }
+
+ return 0xFFFF;
+}
+
+void InitEasyChatPhrases(void)
+{
+ u16 i, j;
+
+ for (i = 0; i < 4; i++)
+ gSaveBlock1Ptr->easyChatProfile[i] = sDefaultProfileWords[i];
+
+ for (i = 0; i < 6; i++)
+ gSaveBlock1Ptr->easyChatBattleStart[i] = sDefaultBattleStartWords[i];
+
+ for (i = 0; i < 6; i++)
+ gSaveBlock1Ptr->easyChatBattleWon[i] = sUnknown_0859E640[i];
+
+ for (i = 0; i < 6; i++)
+ gSaveBlock1Ptr->easyChatBattleLost[i] = sUnknown_0859E64C[i];
+
+ for (i = 0; i < MAIL_COUNT; i++)
+ {
+ for (j = 0; j < MAIL_WORDS_COUNT; j++)
+ gSaveBlock1Ptr->mail[i].words[j] = 0xFFFF;
+ }
+
+ // BUG: This is supposed to clear 64 bits, but this loop is clearing 64 bytes.
+ // However, this bug has no resulting effect on gameplay because only the
+ // Mauville old man data is corrupted, which is initialized directly after
+ // this function is called when starting a new game.
+ for (i = 0; i < 64; i++)
+ gSaveBlock1Ptr->additionalPhrases[i] = 0;
+}
+
+static bool8 sub_811F28C(void)
+{
+ sUnknown_0203A120 = Alloc(sizeof(*sUnknown_0203A120));
+ if (!sUnknown_0203A120)
+ return FALSE;
+
+ sub_811F2D4();
+ sub_811F46C();
+ return TRUE;
+}
+
+static void sub_811F2B8(void)
+{
+ if (sUnknown_0203A120)
+ FREE_AND_SET_NULL(sUnknown_0203A120);
+}
+
+static void sub_811F2D4(void)
+{
+ int i;
+
+ sUnknown_0203A120->unk0 = 0;
+ if (GetNationalPokedexCount(FLAG_GET_SEEN))
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_POKEMON;
+
+ for (i = EC_GROUP_TRAINER; i <= EC_GROUP_ADJECTIVES; i++)
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = i;
+
+ if (FlagGet(FLAG_SYS_GAME_CLEAR))
+ {
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_EVENTS;
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_MOVE_1;
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_MOVE_2;
+ }
+
+ if (FlagGet(FLAG_SYS_HIPSTER_MEET))
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_TRENDY_SAYING;
+
+ if (IsNationalPokedexEnabled())
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_POKEMON_2;
+}
+
+static u8 sub_811F3AC(void)
+{
+ return sUnknown_0203A120->unk0;
+}
+
+static u8 sub_811F3B8(u8 index)
+{
+ if (index >= sUnknown_0203A120->unk0)
+ return EC_NUM_GROUPS;
+ else
+ return sUnknown_0203A120->unk2[index];
+}
+
+u8 *unref_sub_811F3E0(u8 *dest, u8 groupId, u16 totalChars)
+{
+ u16 i;
+ u8 *str = StringCopy(dest, gEasyChatGroupNamePointers[groupId]);
+ for (i = str - dest; i < totalChars; i++)
+ {
+ *str = CHAR_SPACE;
+ str++;
+ }
+
+ *str = EOS;
+ return str;
+}
+
+static const u8 *GetEasyChatWordGroupName(u8 groupId)
+{
+ return gEasyChatGroupNamePointers[groupId];
+}
+
+static u8 *CopyEasyChatWordPadded(u8 *dest, u16 easyChatWord, u16 totalChars)
+{
+ u16 i;
+ u8 *str = CopyEasyChatWord(dest, easyChatWord);
+ for (i = str - dest; i < totalChars; i++)
+ {
+ *str = CHAR_SPACE;
+ str++;
+ }
+
+ *str = EOS;
+ return str;
+}
+
+static void sub_811F46C(void)
+{
+ int i, j, k;
+ int numWords;
+ const u16 *words;
+ u16 numToProcess;
+ int index;
+
+ for (i = 0; i < 27; i++)
+ {
+ numWords = gEasyChatWordsByLetterPointers[i].numWords;
+ words = gEasyChatWordsByLetterPointers[i].words;
+ sUnknown_0203A120->unk2E[i] = 0;
+ index = 0;
+ for (j = 0; j < numWords; j++)
+ {
+ if (*words == 0xFFFF)
+ {
+ words++;
+ numToProcess = *words;
+ words++;
+ j += 1 + numToProcess;
+ }
+ else
+ {
+ numToProcess = 1;
+ }
+
+ for (k = 0; k < numToProcess; k++)
+ {
+ if (sub_811F860(words[k]))
+ {
+ sUnknown_0203A120->unk64[i][index++] = words[k];
+ sUnknown_0203A120->unk2E[i]++;
+ break;
+ }
+ }
+
+ words += numToProcess;
+ }
+ }
+}
+
+static void sub_811F548(int arg0, u16 groupId)
+{
+ if (!arg0)
+ sUnknown_0203A120->unk3BA0 = sub_811F5C4(groupId);
+ else
+ sUnknown_0203A120->unk3BA0 = sub_811F6B8(groupId);
+}
+
+static u16 sub_811F578(u16 arg0)
+{
+ if (arg0 >= sUnknown_0203A120->unk3BA0)
+ return 0xFFFF;
+ else
+ return sUnknown_0203A120->unk3984[arg0];
+}
+
+static u16 sub_811F5B0(void)
+{
+ return sUnknown_0203A120->unk3BA0;
+}
+
+static u16 sub_811F5C4(u16 groupId)
+{
+ u32 i;
+ int totalWords;
+ const u16 *list;
+ const struct EasyChatWordInfo *wordInfo;
+ u16 numWords = gEasyChatGroups[groupId].numWords;
+
+ if (groupId == EC_GROUP_POKEMON || groupId == EC_GROUP_POKEMON_2
+ || groupId == EC_GROUP_MOVE_1 || groupId == EC_GROUP_MOVE_2)
+ {
+ list = gEasyChatGroups[groupId].wordData.valueList;
+ for (i = 0, totalWords = 0; i < numWords; i++)
+ {
+ if (sub_811F764(list[i], groupId))
+ sUnknown_0203A120->unk3984[totalWords++] = EC_WORD(groupId, list[i]);
+ }
+
+ return totalWords;
+ }
+ else
+ {
+ wordInfo = gEasyChatGroups[groupId].wordData.words;
+ for (i = 0, totalWords = 0; i < numWords; i++)
+ {
+ u16 alphabeticalOrder = wordInfo[i].alphabeticalOrder;
+ if (sub_811F764(alphabeticalOrder, groupId))
+ sUnknown_0203A120->unk3984[totalWords++] = EC_WORD(groupId, alphabeticalOrder);
+ }
+
+ return totalWords;
+ }
+}
+
+static u16 sub_811F6B8(u16 alphabeticalGroup)
+{
+ u16 i;
+ u16 totalWords;
+
+ for (i = 0, totalWords = 0; i < sUnknown_0203A120->unk2E[alphabeticalGroup]; i++)
+ sUnknown_0203A120->unk3984[totalWords++] = sUnknown_0203A120->unk64[alphabeticalGroup][i];
+
+ return totalWords;
+}
+
+static bool8 sub_811F72C(u8 arg0)
+{
+ int i;
+ for (i = 0; i < sUnknown_0203A120->unk0; i++)
+ {
+ if (sUnknown_0203A120->unk2[i] == arg0)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 sub_811F764(u16 wordIndex, u8 groupId)
+{
+ switch (groupId)
+ {
+ case EC_GROUP_POKEMON:
+ return GetSetPokedexFlag(SpeciesToNationalPokedexNum(wordIndex), FLAG_GET_SEEN);
+ case EC_GROUP_POKEMON_2:
+ if (sub_811F838(wordIndex))
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(wordIndex), FLAG_GET_SEEN);
+ return TRUE;
+ case EC_GROUP_MOVE_1:
+ case EC_GROUP_MOVE_2:
+ return TRUE;
+ case EC_GROUP_TRENDY_SAYING:
+ return sub_811EF98(wordIndex);
+ default:
+ return gEasyChatGroups[groupId].wordData.words[wordIndex].enabled;
+ }
+}
+
+static int sub_811F838(u16 species)
+{
+ u32 i;
+ for (i = 0; i < ARRAY_COUNT(sUnknown_0859E658); i++)
+ {
+ if (sUnknown_0859E658[i] == species)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u8 sub_811F860(u16 easyChatWord)
+{
+ u8 groupId = EC_GROUP(easyChatWord);
+ u32 index = EC_INDEX(easyChatWord);
+ if (!sub_811F72C(groupId))
+ return FALSE;
+ else
+ return sub_811F764(index, groupId);
+}
+
+void InitializeEasyChatWordArray(u16 *words, u16 length)
+{
+ u16 i;
+ for (i = length - 1; i != 0xFFFF; i--)
+ *(words++) = 0xFFFF;
+}
+
+void sub_811F8BC(void)
+{
+ int i;
+ u16 *words = GetSaveBlock1Field3564();
+ for (i = 0; i < 4; i++)
+ words[i] = 0xFFFF;
+}
+
+bool32 sub_811F8D8(int easyChatWord)
+{
+ int groupId = EC_GROUP(easyChatWord);
+ int mask = 0x7F;
+ int index = EC_INDEX(easyChatWord);
+ if (!sub_811EA28(groupId & mask))
+ return FALSE;
+ else
+ return sub_811F764(index, groupId & mask);
+}
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index e1d94889a..fc559e001 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -75,7 +75,7 @@ static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8
static IWRAM_DATA struct EggHatchData *sEggHatchData;
// rom data
-static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/palettes/egg_palette.gbapal");
+static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/egg/normal.gbapal");
static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp");
static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp");
@@ -86,10 +86,10 @@ static const struct OamData sOamData_EggHatch =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -166,10 +166,10 @@ static const struct OamData sOamData_EggShard =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -469,7 +469,7 @@ static void Task_EggHatch(u8 taskID)
{
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_EggHatch_0);
- gFieldCallback = sub_80AF168;
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
DestroyTask(taskID);
}
}
@@ -574,7 +574,7 @@ static void Task_EggHatchPlayBGM(u8 taskID)
if (gTasks[taskID].data[0] == 0)
{
StopMapMusic();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
}
if (gTasks[taskID].data[0] == 1)
PlayBGM(MUS_ME_SHINKA);
@@ -606,7 +606,7 @@ static void CB2_EggHatch_1(void)
case 1:
if (!gPaletteFade.active)
{
- FillWindowPixelBuffer(sEggHatchData->windowId, 0);
+ FillWindowPixelBuffer(sEggHatchData->windowId, PIXEL_FILL(0));
sEggHatchData->CB2_PalCounter = 0;
sEggHatchData->CB2_state++;
}
@@ -857,7 +857,7 @@ static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8
static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed)
{
- FillWindowPixelBuffer(windowId, 0xFF);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(15));
sEggHatchData->textColor[0] = 0;
sEggHatchData->textColor[1] = 5;
sEggHatchData->textColor[2] = 6;
diff --git a/src/electric.c b/src/electric.c
index 142a9ca09..5e7729842 100644
--- a/src/electric.c
+++ b/src/electric.c
@@ -5,9 +5,6 @@
#include "constants/songs.h"
#include "sound.h"
-extern void sub_810E2C8(struct Sprite *);
-extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *);
-
static void sub_810A1A8(struct Sprite *);
static void sub_810A1F8(struct Sprite *);
static void sub_810A214(struct Sprite *);
diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c
new file mode 100755
index 000000000..6c92b676f
--- /dev/null
+++ b/src/ereader_helpers.c
@@ -0,0 +1,553 @@
+#include "global.h"
+#include "alloc.h"
+#include "decompress.h"
+#include "ereader_helpers.h"
+#include "link.h"
+#include "main.h"
+#include "rom_8011DC0.h"
+#include "save.h"
+#include "sprite.h"
+#include "task.h"
+#include "util.h"
+
+struct Unknown030012C8
+{
+ u8 unk0[8];
+ u32 *unk8;
+ int unkC;
+ int unk10;
+ int unk14;
+};
+
+static void sub_81D4170(void);
+static u16 sub_81D3EE8(u8);
+static void sub_81D413C(void);
+static void sub_81D414C(void);
+static void sub_81D3F1C(u32, u32*, u32*);
+static void sub_81D3F68(void);
+
+extern struct Unknown030012C8 gUnknown_030012C8;
+extern u16 gUnknown_030012E0;
+extern u16 gUnknown_030012E2;
+extern u16 gUnknown_030012E4;
+extern u16 gUnknown_030012E6;
+extern u32 gUnknown_030012E8;
+extern u16 gUnknown_030012EC;
+extern u16 gUnknown_030012EE;
+extern u16 gUnknown_030012F0;
+extern u16 gUnknown_030012F2;
+extern u16 gUnknown_030012F4;
+
+extern const u8 gUnknown_08625B6C[];
+
+static u8 sub_81D38D4(void)
+{
+ return (gSaveBlock1Ptr->trainerHill.unused + 1) % 256;
+}
+
+static bool32 sub_81D38FC(struct Unk81D38FC *arg0)
+{
+ int checksum = CalcByteArraySum(arg0->unk0, 0x270);
+ if (checksum != arg0->checksum)
+ return FALSE;
+
+ return TRUE;
+}
+
+bool8 sub_81D3920(u8 *buffer)
+{
+ u32 i;
+ u32 checksum;
+ int var0 = buffer[0];
+ if (var0 < 1 || var0 > 8)
+ return FALSE;
+
+ for (i = 0; i < var0; i++)
+ {
+ struct Unk81D38FC *var1 = (struct Unk81D38FC *)(&buffer[i * (sizeof(struct Unk81D38FC)) + 8]);
+ if (!sub_81D38FC(var1))
+ return FALSE;
+ }
+
+ checksum = CalcByteArraySum(buffer + 8, var0 * 0x274);
+ if (checksum != ((int *)buffer)[1])
+ return FALSE;
+
+ return TRUE;
+}
+
+static bool32 sub_81D396C(u8 *buffer)
+{
+ u32 checksum;
+ int var0 = buffer[0];
+ if (var0 < 1 || var0 > 8)
+ return FALSE;
+
+ checksum = CalcByteArraySum(buffer + 8, 0xEE0);
+ if (checksum != ((int *)buffer)[1])
+ return FALSE;
+
+ return TRUE;
+}
+
+static bool32 sub_81D3998(struct Unk81D38FC *arg0, u8 *buffer2)
+{
+ int i;
+ const u8 *ereaderVals;
+
+ memset(buffer2, 0, 0x1000);
+ buffer2[0] = arg0->unk0[0];
+ buffer2[1] = sub_81D38D4();
+ buffer2[2] = (arg0->unk0[0] + 1) / 2;
+
+ for (i = 0; i < arg0->unk0[0]; i++)
+ {
+ if (!(i & 1))
+ {
+ u8 *var0 = &buffer2[(i / 2) * 0x3B8];
+ u8 *var1 = arg0[i].unk0;
+ var0[8] = var1[8];
+ memcpy(&var0[0x29C], &var1[0x154], 0x124);
+ var0 += 0xC;
+ var1 += 0xC;
+ memcpy(var0, var1, 0x148);
+ }
+ else
+ {
+ u8 *var0 = &buffer2[(i / 2) * 0x3B8];
+ u8 *var1 = arg0[i].unk0;
+ var0[9] = var1[8];
+ memcpy(&var0[0x154], &var1[0xC], 0x148);
+ }
+ }
+
+ if (i & 1)
+ {
+ u8 *var0 = &buffer2[(i / 2) * 0x3B8];
+ var0 += 0x154;
+
+ ereaderVals = gUnknown_08625B6C;
+ memcpy(var0, &ereaderVals[(i / 2) * 0x148], 0x148);
+ }
+
+ ((int *)buffer2)[1] = CalcByteArraySum(buffer2 + 8, 0xEE0);
+ if (sub_8153634(SECTOR_ID_TRAINER_HILL, buffer2) != 1)
+ return FALSE;
+
+ return TRUE;
+}
+
+bool32 sub_81D3AB0(struct Unk81D38FC *arg0)
+{
+ u8 *var0 = AllocZeroed(0x1000);
+ bool32 result = sub_81D3998(arg0, var0);
+ Free(var0);
+ return result;
+}
+
+static bool32 sub_81D3AD8(u8 *arg0, u8 *arg1)
+{
+ if (TryCopySpecialSaveSection(SECTOR_ID_TRAINER_HILL, arg1) != 1)
+ return FALSE;
+
+ memcpy(arg0, arg1, 0xEE8);
+ if (!sub_81D396C(arg0))
+ return FALSE;
+
+ return TRUE;
+}
+
+static bool32 sub_81D3B0C(u8 *arg0)
+{
+ u8 *var0 = AllocZeroed(0x1000);
+ bool32 result = sub_81D3AD8(arg0, var0);
+ Free(var0);
+ return result;
+}
+
+bool32 sub_81D3B34(void)
+{
+ u8 *var0 = AllocZeroed(0x1000);
+ bool32 result = sub_81D3B0C(var0);
+ Free(var0);
+ return result;
+}
+
+static int unref_sub_81D3B54(int arg0, u32 *arg1)
+{
+ int result;
+ u16 var0;
+ int var1;
+
+ sub_81D41A0();
+ while (1)
+ {
+ sub_81D4170();
+ if (gUnknown_030012E2 & 2)
+ gShouldAdvanceLinkState = 2;
+
+ var1 = sub_81D3D70(1, arg0, arg1, NULL);
+ gUnknown_030012E4 = var1;
+ if ((gUnknown_030012E4 & 0x13) == 0x10)
+ {
+ result = 0;
+ break;
+ }
+
+ if (gUnknown_030012E4 & 0x8)
+ {
+ result = 1;
+ break;
+ }
+
+ var0 = gUnknown_030012E4 & 0x4;
+ if (var0)
+ {
+ result = 2;
+ break;
+ }
+
+ gShouldAdvanceLinkState = var0;
+ VBlankIntrWait();
+ }
+
+ CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
+ sub_81D41F4();
+ return result;
+}
+
+static int unref_sub_81D3BE8(u32 *arg0)
+{
+ int result;
+ u16 var0;
+ int var1;
+
+ sub_81D41A0();
+ while (1)
+ {
+ sub_81D4170();
+ if (gUnknown_030012E2 & 2)
+ gShouldAdvanceLinkState = 2;
+
+ var1 = sub_81D3D70(0, 0, NULL, arg0);
+ gUnknown_030012E4 = var1;
+ if ((gUnknown_030012E4 & 0x13) == 0x10)
+ {
+ result = 0;
+ break;
+ }
+
+ if (gUnknown_030012E4 & 0x8)
+ {
+ result = 1;
+ break;
+ }
+
+ var0 = gUnknown_030012E4 & 0x4;
+ if (var0)
+ {
+ result = 2;
+ break;
+ }
+
+ gShouldAdvanceLinkState = var0;
+ VBlankIntrWait();
+ }
+
+ CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
+ sub_81D41F4();
+ return result;
+}
+
+static void sub_81D3C7C(void)
+{
+ REG_IME = 0;
+ REG_IE &= ~(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
+ REG_IME = 1;
+ REG_SIOCNT = 0;
+ REG_TM3CNT_H = 0;
+ REG_IF = INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL;
+}
+
+static void sub_81D3CBC(void)
+{
+ REG_IME = 0;
+ REG_IE &= ~(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
+ REG_IME = 1;
+ REG_RCNT = 0;
+ REG_SIOCNT = SIO_MULTI_MODE;
+ REG_SIOCNT |= SIO_INTR_ENABLE | SIO_115200_BPS;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_SERIAL;
+ REG_IME = 1;
+
+ if (!gUnknown_030012C8.unk0[1])
+ CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
+}
+
+static void sub_81D3D34(void)
+{
+ REG_RCNT = 0;
+ REG_SIOCNT = SIO_32BIT_MODE | SIO_INTR_ENABLE;
+ REG_SIOCNT |= SIO_MULTI_SD;
+ gShouldAdvanceLinkState = 0;
+ gUnknown_030012E6 = 0;
+ gUnknown_030012E8 = 0;
+}
+
+int sub_81D3D70(u8 arg0, u32 arg1, u32 *arg2, u32 *arg3)
+{
+ switch (gUnknown_030012C8.unk0[1])
+ {
+ case 0:
+ sub_81D3CBC();
+ gUnknown_030012C8.unk0[2] = 1;
+ gUnknown_030012C8.unk0[1] = 1;
+ break;
+ case 1:
+ if (sub_81D3EE8(arg0))
+ sub_81D413C();
+
+ if (gShouldAdvanceLinkState == 2)
+ {
+ gUnknown_030012C8.unk0[4] = 2;
+ gUnknown_030012C8.unk0[1] = 6;
+ }
+ break;
+ case 2:
+ sub_81D3D34();
+ sub_81D3F1C(arg1, arg2, arg3);
+ gUnknown_030012C8.unk0[1] = 3;
+ // fall through
+ case 3:
+ if (gShouldAdvanceLinkState == 2)
+ {
+ gUnknown_030012C8.unk0[4] = 2;
+ gUnknown_030012C8.unk0[1] = 6;
+ }
+ else
+ {
+ gUnknown_030012E6++;
+ gUnknown_030012E8++;
+ if (!gUnknown_030012C8.unk0[0] && gUnknown_030012E8 > 60)
+ {
+ gUnknown_030012C8.unk0[4] = 1;
+ gUnknown_030012C8.unk0[1] = 6;
+ }
+
+ if (gUnknown_030012C8.unk0[2] != 2)
+ {
+ if (gUnknown_030012C8.unk0[0] && gUnknown_030012E6 > 2)
+ {
+ sub_81D413C();
+ gUnknown_030012C8.unk0[2] = 2;
+ }
+ else
+ {
+ sub_81D413C();
+ gUnknown_030012C8.unk0[2] = 2;
+ }
+ }
+ }
+ break;
+ case 4:
+ sub_81D3CBC();
+ gUnknown_030012C8.unk0[1] = 5;
+ break;
+ case 5:
+ if (gUnknown_030012C8.unk0[0] == 1 && gUnknown_030012E6 > 2)
+ sub_81D413C();
+
+ if (++gUnknown_030012E6 > 60)
+ {
+ gUnknown_030012C8.unk0[4] = 1;
+ gUnknown_030012C8.unk0[1] = 6;
+ }
+ break;
+ case 6:
+ if (gUnknown_030012C8.unk0[2])
+ {
+ sub_81D3C7C();
+ gUnknown_030012C8.unk0[2] = 0;
+ }
+ break;
+ }
+
+ return gUnknown_030012C8.unk0[2] | (gUnknown_030012C8.unk0[4] << 2) | (gUnknown_030012C8.unk0[3] << 4);
+}
+
+static u16 sub_81D3EE8(u8 arg0)
+{
+ u16 terminal = (*(vu32 *)REG_ADDR_SIOCNT) & (SIO_MULTI_SI | SIO_MULTI_SD);
+ if (terminal == SIO_MULTI_SD && arg0)
+ {
+ gUnknown_030012C8.unk0[0] = 1;
+ return 1;
+ }
+ else
+ {
+ gUnknown_030012C8.unk0[0] = 0;
+ return 0;
+ }
+}
+
+static void sub_81D3F1C(u32 arg0, u32 *arg1, u32 *arg2)
+{
+ if (gUnknown_030012C8.unk0[0])
+ {
+ REG_SIOCNT |= SIO_38400_BPS;
+ gUnknown_030012C8.unk8 = arg1;
+ REG_SIODATA32 = arg0;
+ gUnknown_030012C8.unk10 = arg0 / 4 + 1;
+ sub_81D3F68();
+ }
+ else
+ {
+ REG_SIOCNT = REG_SIOCNT;
+ gUnknown_030012C8.unk8 = arg2;
+ }
+}
+
+static void sub_81D3F68(void)
+{
+ REG_TM3CNT_L = 0xFDA7;
+ REG_TM3CNT_H = TIMER_INTR_ENABLE;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_TIMER3;
+ REG_IME = 1;
+}
+
+void sub_81D3F9C(void)
+{
+ sub_81D414C();
+ sub_81D413C();
+}
+
+void sub_81D3FAC(void)
+{
+ u16 i, playerCount, k;
+ u32 value;
+ u16 var0;
+ u16 recvBuffer[4];
+
+ switch (gUnknown_030012C8.unk0[1])
+ {
+ case 1:
+ REG_SIOMLT_SEND = 0xCCD0; // Handshake id
+ *(u64 *)recvBuffer = REG_SIOMLT_RECV;
+ for (i = 0, playerCount = 0, k = 0; i < 4; i++)
+ {
+ if (recvBuffer[i] == 0xCCD0)
+ playerCount++;
+ else if (recvBuffer[i] != 0xFFFF)
+ k++;
+ }
+
+ if (playerCount == 2 && k == 0)
+ gUnknown_030012C8.unk0[1] = 2;
+ break;
+ case 3:
+ value = REG_SIODATA32;
+ if (!gUnknown_030012C8.unkC && !gUnknown_030012C8.unk0[0])
+ gUnknown_030012C8.unk10 = value / 4 + 1;
+
+ if (gUnknown_030012C8.unk0[0] == 1)
+ {
+ if (gUnknown_030012C8.unkC < gUnknown_030012C8.unk10)
+ {
+ REG_SIODATA32 = gUnknown_030012C8.unk8[gUnknown_030012C8.unkC];
+ gUnknown_030012C8.unk14 += gUnknown_030012C8.unk8[gUnknown_030012C8.unkC];
+ }
+ else
+ {
+ REG_SIODATA32 = gUnknown_030012C8.unk14;
+ }
+ }
+ else
+ {
+ if (gUnknown_030012C8.unkC > 0 && gUnknown_030012C8.unkC < gUnknown_030012C8.unk10 + 1)
+ {
+ gUnknown_030012C8.unk8[gUnknown_030012C8.unkC - 1] = value;
+ gUnknown_030012C8.unk14 += value;
+ }
+ else if (gUnknown_030012C8.unkC)
+ {
+ if (gUnknown_030012C8.unk14 == value)
+ gUnknown_030012C8.unk0[3] = 1;
+ else
+ gUnknown_030012C8.unk0[3] = 2;
+ }
+
+ gUnknown_030012E8 = 0;
+ }
+
+ if (++gUnknown_030012C8.unkC < gUnknown_030012C8.unk10 + 2)
+ {
+ if (gUnknown_030012C8.unk0[0])
+ REG_TM3CNT_H |= TIMER_ENABLE;
+ else
+ sub_81D413C();
+ }
+ else
+ {
+ gUnknown_030012C8.unk0[1] = 4;
+ gUnknown_030012E6 = 0;
+ }
+ break;
+ case 5:
+ if (!gUnknown_030012C8.unk0[0])
+ REG_SIOMLT_SEND = gUnknown_030012C8.unk0[3];
+
+ *(u64 *)recvBuffer = REG_SIOMLT_RECV;
+ var0 = recvBuffer[1] - 1;
+ if (var0 < 2)
+ {
+ if (gUnknown_030012C8.unk0[0] == 1)
+ gUnknown_030012C8.unk0[3] = recvBuffer[1];
+
+ gUnknown_030012C8.unk0[1] = 6;
+ }
+ break;
+ }
+}
+
+static void sub_81D413C(void)
+{
+ REG_SIOCNT |= SIO_ENABLE;
+}
+
+static void sub_81D414C(void)
+{
+ REG_TM3CNT_H &= ~TIMER_ENABLE;
+ REG_TM3CNT_L = 0xFDA7;
+}
+
+static void sub_81D4170(void)
+{
+ int keysMask = REG_KEYINPUT ^ KEYS_MASK;
+ gUnknown_030012E2 = keysMask & ~gUnknown_030012E0;
+ gUnknown_030012E0 = keysMask;
+}
+
+void sub_81D41A0(void)
+{
+ gUnknown_030012EC = REG_IME;
+ gUnknown_030012EE = REG_IE;
+ gUnknown_030012F0 = REG_TM3CNT_H;
+ gUnknown_030012F2 = REG_SIOCNT;
+ gUnknown_030012F4 = REG_RCNT;
+}
+
+void sub_81D41F4(void)
+{
+ REG_IME = gUnknown_030012EC;
+ REG_IE = gUnknown_030012EE;
+ REG_TM3CNT_H = gUnknown_030012F0;
+ REG_SIOCNT = gUnknown_030012F2;
+ REG_RCNT = gUnknown_030012F4;
+}
+
+void sub_81D4238(void)
+{
+ CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
+}
diff --git a/src/ereader_screen.c b/src/ereader_screen.c
new file mode 100755
index 000000000..b15c1fd0c
--- /dev/null
+++ b/src/ereader_screen.c
@@ -0,0 +1,464 @@
+#include "global.h"
+#include "alloc.h"
+#include "decompress.h"
+#include "ereader_helpers.h"
+#include "link.h"
+#include "main.h"
+#include "rom_8011DC0.h"
+#include "save.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "strings.h"
+#include "util.h"
+#include "constants/songs.h"
+
+struct Unk81D5014
+{
+ u16 unk0;
+ u16 unk2;
+ u16 unk4;
+ u16 unk6;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA;
+ u8 unkB;
+ u8 unkC;
+ u8 unkD;
+ u8 unkE;
+ u8 *unk10;
+};
+
+struct Unk03006370
+{
+ u16 unk0;
+ u32 unk4;
+ u32 *unk8;
+};
+
+static void sub_81D5084(u8);
+
+extern struct Unk03006370 gUnknown_03006370;
+
+extern const u8 gUnknown_089A3470[];
+extern const u8 gMultiBootProgram_BerryGlitchFix_Start[];
+
+static void sub_81D4D50(struct Unk03006370 *arg0, int arg1, u32 *arg2)
+{
+ volatile u16 backupIME = REG_IME;
+ REG_IME = 0;
+ gIntrTable[1] = sub_81D3FAC;
+ gIntrTable[2] = sub_81D3F9C;
+ sub_81D41A0();
+ sub_81D4238();
+ REG_IE |= INTR_FLAG_VCOUNT;
+ REG_IME = backupIME;
+ arg0->unk0 = 0;
+ arg0->unk4 = arg1;
+ arg0->unk8 = arg2;
+}
+
+static void sub_81D4DB8(struct Unk03006370 *arg0)
+{
+ volatile u16 backupIME = REG_IME;
+ REG_IME = 0;
+ sub_81D4238();
+ sub_81D41F4();
+ RestoreSerialTimer3IntrHandlers();
+ REG_IME = backupIME;
+}
+
+static u8 sub_81D4DE8(struct Unk03006370 *arg0)
+{
+ u8 var0 = 0;
+ arg0->unk0 = sub_81D3D70(1, arg0->unk4, arg0->unk8, NULL);
+ if ((arg0->unk0 & 0x13) == 0x10)
+ var0 = 1;
+
+ if (arg0->unk0 & 0x8)
+ var0 = 2;
+
+ if (arg0->unk0 & 0x4)
+ var0 = 3;
+
+ gShouldAdvanceLinkState = 0;
+ return var0;
+}
+
+static void sub_81D4E30(void)
+{
+ memset(gDecompressionBuffer, 0, 0x2000);
+ gLinkType = 0x5503;
+ OpenLink();
+ SetSuppressLinkErrorMessage(TRUE);
+}
+
+static bool32 sub_81D4E60(void)
+{
+ volatile u16 backupIME;
+ u16 sp4[4];
+
+ backupIME = REG_IME;
+ REG_IME = 0;
+ *(u64 *)sp4 = *(u64 *)gLink.tempRecvBuffer;
+ REG_IME = backupIME;
+ if (sp4[0] == 0xB9A0 && sp4[1] == 0xCCD0
+ && sp4[2] == 0xFFFF && sp4[3] == 0xFFFF)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool32 sub_81D4EC0(void)
+{
+ if (IsLinkMaster() && GetLinkPlayerCount_2() == 2)
+ return TRUE;
+
+ return FALSE;
+}
+
+static u32 sub_81D4EE4(u8 *arg0, u16 *arg1)
+{
+ u8 var0;
+
+ var0 = *arg0 - 3;
+ if (var0 < 3 && HasLinkErrorOccurred())
+ {
+ *arg0 = 0;
+ return 3;
+ }
+
+ switch (*arg0)
+ {
+ case 0:
+ if (IsLinkMaster() && GetLinkPlayerCount_2() > 1)
+ {
+ *arg0 = 1;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ *arg0 = 0;
+ return 1;
+ }
+ break;
+ case 1:
+ if (++(*arg1) > 5)
+ {
+ *arg1 = 0;
+ *arg0 = 2;
+ }
+ break;
+ case 2:
+ if (GetLinkPlayerCount_2() == 2)
+ {
+ PlaySE(SE_PINPON);
+ CheckShouldAdvanceLinkState();
+ *arg1 = 0;
+ *arg0 = 3;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ *arg0 = 0;
+ return 1;
+ }
+ break;
+ case 3:
+ if (++(*arg1) > 30)
+ {
+ *arg0 = 0;
+ return 5;
+ }
+
+ if (IsLinkConnectionEstablished())
+ {
+ if (gReceivedRemoteLinkPlayers)
+ {
+ if (IsLinkPlayerDataExchangeComplete())
+ {
+ *arg0 = 0;
+ return 2;
+ }
+ else
+ {
+ *arg0 = 4;
+ }
+ }
+ else
+ {
+ *arg0 = 3;
+ }
+ }
+ break;
+ case 4:
+ sub_800ABF4(0);
+ *arg0 = 5;
+ break;
+ case 5:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ *arg0 = 0;
+ return 4;
+ }
+ break;
+ default:
+ return 0;
+ }
+
+ return 0;
+}
+
+void sub_81D5014(void)
+{
+ int value;
+ struct Unk81D5014 *data;
+ u8 taskId = CreateTask(sub_81D5084, 0);
+ data = (struct Unk81D5014 *)gTasks[taskId].data;
+ data->unk8 = 0;
+ data->unk9 = 0;
+ data->unkA = 0;
+ data->unkB = 0;
+ data->unkC = 0;
+ data->unkD = 0;
+ data->unk0 = 0;
+ data->unk2 = 0;
+ data->unk4 = 0;
+ data->unk6 = 0;
+ data->unkE = 0;
+ data->unk10 = AllocZeroed(0x40);
+}
+
+static void sub_81D505C(u16 *arg0)
+{
+ *arg0 = 0;
+}
+
+static bool32 sub_81D5064(u16 *arg0, u16 arg1)
+{
+ if (++(*arg0) > arg1)
+ {
+ *arg0 = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void sub_81D5084(u8 taskId)
+{
+ struct Unk81D5014 *data = (struct Unk81D5014 *)gTasks[taskId].data;
+ switch (data->unk8)
+ {
+ case 0:
+ if (mevent_0814257C(&data->unk9, gUnknown_085EDFD6))
+ data->unk8 = 1;
+ break;
+ case 1:
+ sub_81D4E30();
+ sub_81D505C(&data->unk0);
+ data->unk8 = 2;
+ break;
+ case 2:
+ if (sub_81D5064(&data->unk0, 10))
+ data->unk8 = 3;
+ break;
+ case 3:
+ if (!sub_81D4EC0())
+ {
+ CloseLink();
+ data->unk8 = 4;
+ }
+ else
+ {
+ data->unk8 = 13;
+ }
+ break;
+ case 4:
+ if (mevent_0814257C(&data->unk9, gUnknown_085EDFF5))
+ {
+ sub_8018884(gUnknown_085EE014);
+ sub_81D505C(&data->unk0);
+ data->unk8 = 5;
+ }
+ break;
+ case 5:
+ if (sub_81D5064(&data->unk0, 90))
+ {
+ sub_81D4E30();
+ data->unk8 = 6;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ sub_81D505C(&data->unk0);
+ PlaySE(SE_SELECT);
+ data->unk8 = 23;
+ }
+ break;
+ case 6:
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ CloseLink();
+ sub_81D505C(&data->unk0);
+ data->unk8 = 23;
+ }
+ else if (GetLinkPlayerCount_2() > 1)
+ {
+ sub_81D505C(&data->unk0);
+ CloseLink();
+ data->unk8 = 7;
+ }
+ else if (sub_81D4E60())
+ {
+ PlaySE(SE_SELECT);
+ CloseLink();
+ sub_81D505C(&data->unk0);
+ data->unk8 = 8;
+ }
+ else if (sub_81D5064(&data->unk0, 10))
+ {
+ CloseLink();
+ sub_81D4E30();
+ sub_81D505C(&data->unk0);
+ }
+ break;
+ case 7:
+ if (mevent_0814257C(&data->unk9, gUnknown_085EE05C))
+ data->unk8 = 4;
+ break;
+ case 8:
+ sub_8018884(gUnknown_085EE097);
+ // XXX: This (u32*) cast is discarding the const qualifier from gUnknown_089A3470
+ sub_81D4D50(&gUnknown_03006370, gMultiBootProgram_BerryGlitchFix_Start - gUnknown_089A3470, (u32*)gUnknown_089A3470);
+ data->unk8 = 9;
+ break;
+ case 9:
+ data->unkE = sub_81D4DE8(&gUnknown_03006370);
+ if (data->unkE)
+ data->unk8 = 10;
+ break;
+ case 10:
+ sub_81D4DB8(&gUnknown_03006370);
+ if (data->unkE == 3)
+ {
+ data->unk8 = 20;
+ }
+ else if (data->unkE == 1)
+ {
+ sub_81D505C(&data->unk0);
+ sub_8018884(gUnknown_085EE120);
+ data->unk8 = 11;
+ }
+ else
+ {
+ data->unk8 = 0;
+ }
+ break;
+ case 11:
+ if (sub_81D5064(&data->unk0, 840))
+ data->unk8 = 12;
+ break;
+ case 12:
+ sub_81D4E30();
+ sub_8018884(gUnknown_085EE0DC);
+ data->unk8 = 13;
+ break;
+ case 13:
+ switch (sub_81D4EE4(&data->unk9, &data->unk0))
+ {
+ case 0:
+ break;
+ case 2:
+ sub_8018884(gUnknown_085EE097);
+ data->unk8 = 14;
+ break;
+ case 1:
+ PlaySE(SE_SELECT);
+ CloseLink();
+ data->unk8 = 23;
+ break;
+ case 5:
+ CloseLink();
+ data->unk8 = 21;
+ break;
+ case 3:
+ case 4:
+ CloseLink();
+ data->unk8 = 20;
+ break;
+ }
+ break;
+ case 14:
+ if (HasLinkErrorOccurred())
+ {
+ CloseLink();
+ data->unk8 = 20;
+ }
+ else if (GetBlockReceivedStatus())
+ {
+ ResetBlockReceivedFlags();
+ data->unk8 = 15;
+ }
+ break;
+ case 15:
+ data->unkE = sub_81D3920(gDecompressionBuffer);
+ sub_800ABF4(data->unkE);
+ data->unk8 = 16;
+ break;
+ case 16:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ if (data->unkE == 1)
+ data->unk8 = 17;
+ else
+ data->unk8 = 20;
+ }
+ break;
+ case 17:
+ if (sub_81D3AB0((struct Unk81D38FC *)&gDecompressionBuffer))
+ {
+ sub_8018884(gUnknown_085EE0FA);
+ sub_81D505C(&data->unk0);
+ data->unk8 = 18;
+ }
+ else
+ {
+ data->unk8 = 22;
+ }
+ break;
+ case 18:
+ if (sub_81D5064(&data->unk0, 120))
+ {
+ sub_8018884(gUnknown_085EE107);
+ PlayFanfare(MUS_FANFA4);
+ data->unk8 = 19;
+ }
+ break;
+ case 19:
+ if (IsFanfareTaskInactive() && (gMain.newKeys & (A_BUTTON | B_BUTTON)))
+ data->unk8 = 26;
+ break;
+ case 23:
+ if (mevent_0814257C(&data->unk9,gUnknown_085EE06B))
+ data->unk8 = 26;
+ break;
+ case 20:
+ if (mevent_0814257C(&data->unk9, gUnknown_085EE0A3))
+ data->unk8 = 0;
+ break;
+ case 21:
+ if (mevent_0814257C(&data->unk9, gUnknown_085EE0BF))
+ data->unk8 = 0;
+ break;
+ case 22:
+ if (mevent_0814257C(&data->unk9, gUnknown_085EE12D))
+ data->unk8 = 0;
+ break;
+ case 26:
+ Free(data->unk10);
+ DestroyTask(taskId);
+ SetMainCallback2(sub_80186A4);
+ break;
+ }
+}
diff --git a/src/event_data.c b/src/event_data.c
index df289c538..50628f984 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -3,7 +3,7 @@
#include "pokedex.h"
#define TEMP_FLAGS_SIZE 0x4
-#define TEMP_UPPER_FLAGS_SIZE 0x8
+#define DAILY_FLAGS_SIZE 0x8
#define TEMP_VARS_SIZE 0x20
EWRAM_DATA u16 gSpecialVar_0x8000 = 0;
@@ -23,18 +23,16 @@ EWRAM_DATA u16 gSpecialVar_LastTalked = 0;
EWRAM_DATA u16 gSpecialVar_Facing = 0;
EWRAM_DATA u16 gSpecialVar_MonBoxId = 0;
EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0;
-EWRAM_DATA u16 gSpecialVar_0x8014 = 0;
-EWRAM_DATA static u8 gUnknown_020375FC[16] = {0};
+EWRAM_DATA u16 gSpecialVar_Unused_0x8014 = 0;
+EWRAM_DATA static u8 gSpecialFlags[16] = {0};
extern u16 *const gSpecialVars[];
-extern void sub_80BB358(void);
-
void InitEventData(void)
{
memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags));
memset(gSaveBlock1Ptr->vars, 0, sizeof(gSaveBlock1Ptr->vars));
- memset(gUnknown_020375FC, 0, sizeof(gUnknown_020375FC));
+ memset(gSpecialFlags, 0, sizeof(gSpecialFlags));
}
void ClearTempFieldEventData(void)
@@ -48,10 +46,9 @@ void ClearTempFieldEventData(void)
FlagClear(FLAG_NURSE_UNION_ROOM_REMINDER);
}
-// Probably had different flag splits at one point.
-void ClearUpperFlags(void)
+void ClearDailyFlags(void)
{
- memset(gSaveBlock1Ptr->flags + 0x124, 0, TEMP_UPPER_FLAGS_SIZE);
+ memset(gSaveBlock1Ptr->flags + 0x124, 0, DAILY_FLAGS_SIZE);
}
void DisableNationalPokedex(void)
@@ -70,7 +67,7 @@ void EnableNationalPokedex(void)
FlagSet(FLAG_SYS_NATIONAL_DEX);
gSaveBlock2Ptr->pokedex.mode = DEX_MODE_NATIONAL;
gSaveBlock2Ptr->pokedex.order = 0;
- sub_80BB358();
+ ResetPokedexScrollPositions();
}
bool32 IsNationalPokedexEnabled(void)
@@ -134,13 +131,13 @@ void sub_809D4D8(void)
void sub_809D570(void)
{
VarSet(VAR_EVENT_PICHU_SLOT, 0);
- VarSet(VAR_0x40DE, 0);
- VarSet(VAR_0x40DF, 0);
- VarSet(VAR_0x40E0, 0);
- VarSet(VAR_0x40E1, 0);
- VarSet(VAR_0x40E2, 0);
- VarSet(VAR_0x40E3, 0);
- VarSet(VAR_0x40E4, 0);
+ VarSet(VAR_NEVER_READ_0x40DE, 0);
+ VarSet(VAR_NEVER_READ_0x40DF, 0);
+ VarSet(VAR_NEVER_READ_0x40E0, 0);
+ VarSet(VAR_NEVER_READ_0x40E1, 0);
+ VarSet(VAR_NEVER_READ_0x40E2, 0);
+ VarSet(VAR_NEVER_READ_0x40E3, 0);
+ VarSet(VAR_NEVER_READ_0x40E4, 0);
}
void DisableResetRTC(void)
@@ -202,7 +199,7 @@ u8 *GetFlagPointer(u16 id)
else if (id < SPECIAL_FLAGS_START)
return &gSaveBlock1Ptr->flags[id / 8];
else
- return &gUnknown_020375FC[(id - SPECIAL_FLAGS_START) / 8];
+ return &gSpecialFlags[(id - SPECIAL_FLAGS_START) / 8];
}
u8 FlagSet(u16 id)
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 6e1bae31e..30dffd8d7 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -1,22 +1,22 @@
#include "global.h"
+#include "alloc.h"
+#include "battle_pyramid.h"
#include "berry.h"
#include "decoration.h"
#include "event_data.h"
#include "event_object_movement.h"
#include "event_scripts.h"
+#include "faraway_island.h"
#include "field_camera.h"
#include "field_effect.h"
#include "field_effect_helpers.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
-#include "alloc.h"
#include "mauville_old_man.h"
#include "metatile_behavior.h"
#include "overworld.h"
#include "palette.h"
-#include "pokenav.h"
#include "random.h"
-#include "rom_818CFC8.h"
#include "sprite.h"
#include "task.h"
#include "trainer_see.h"
@@ -1420,7 +1420,7 @@ u8 Unref_TryInitLocalEventObject(u8 localId)
{
if (InBattlePyramid())
{
- eventObjectCount = sub_81AAA40();
+ eventObjectCount = GetNumBattlePyramidEventObjects();
}
else if (InTrainerHill())
{
@@ -1746,7 +1746,7 @@ void TrySpawnEventObjects(s16 cameraX, s16 cameraY)
if (InBattlePyramid())
{
- objectCount = sub_81AAA40();
+ objectCount = GetNumBattlePyramidEventObjects();
}
else if (InTrainerHill())
{
diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c
index bfd46978c..e36d47c2b 100644
--- a/src/evolution_graphics.c
+++ b/src/evolution_graphics.c
@@ -53,10 +53,10 @@ static const struct OamData sOamData_EvoSparkle =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index c97e2d10f..4bf7701be 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -9,6 +9,7 @@
#include "evolution_graphics.h"
#include "gpu_regs.h"
#include "link.h"
+#include "link_rfu.h"
#include "m4a.h"
#include "main.h"
#include "menu.h"
@@ -16,10 +17,12 @@
#include "palette.h"
#include "pokedex.h"
#include "pokemon.h"
+#include "pokemon_summary_screen.h"
#include "scanline_effect.h"
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings.h"
#include "task.h"
#include "text.h"
#include "text_window.h"
@@ -39,22 +42,18 @@ struct EvoInfo
u16 savedPalette[48];
};
+// EWRAM vars
static EWRAM_DATA struct EvoInfo *sEvoStructPtr = NULL;
static EWRAM_DATA u16 *sEvoMovingBgPtr = NULL;
+// IWRAM common
+void (*gCB2_AfterEvolution)(void);
+
#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
#define sEvoGraphicsTaskID gBattleCommunication[2]
-extern const struct WindowTemplate gUnknown_0833900C;
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
-// strings
-extern const u8 gText_CommunicationStandby5[];
-
-extern void ShowSelectMovePokemonSummaryScreen(struct Pokemon *party, u8 monId, u8 partyCount, void *CB2_ptr, u16 move);
-extern u8 sub_81C1B94(void);
-extern void sub_800E084(void);
-
// this file's functions
static void Task_EvolutionScene(u8 taskID);
static void Task_TradeEvolutionScene(u8 taskID);
diff --git a/src/faraway_island.c b/src/faraway_island.c
new file mode 100755
index 000000000..1c8dff14e
--- /dev/null
+++ b/src/faraway_island.c
@@ -0,0 +1,445 @@
+#include "global.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "field_weather.h"
+#include "fieldmap.h"
+#include "metatile_behavior.h"
+#include "sprite.h"
+#include "constants/event_objects.h"
+#include "constants/flags.h"
+#include "constants/maps.h"
+#include "constants/metatile_behaviors.h"
+#include "constants/vars.h"
+
+static u8 sub_81D4890(u8);
+static bool8 sub_81D4C14(struct EventObject*, u8);
+static u8 sub_81D4C9C(struct EventObject*, u8);
+static u8 sub_81D4C58(struct EventObject*, u8);
+static u8 sub_81D4CE0(struct EventObject*, u8);
+static u8 sub_81D4D24(u8);
+static bool8 sub_81D4834(s16, s16);
+
+extern u8 gUnknown_0203CF50;
+extern s16 gUnknown_030012F8;
+extern s16 gUnknown_030012FA;
+extern u8 gUnknown_030012FC[4];
+
+extern const struct SpritePalette gFieldEffectObjectPaletteInfo1;
+extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
+
+static const s16 sFarawayIslandRockCoords[4][2] =
+{
+ {21, 16},
+ {25, 16},
+ {16, 17},
+ {20, 20},
+};
+
+static u8 sub_81D4258(void)
+{
+ u8 eventObjectId;
+ TryGetEventObjectIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &eventObjectId);
+ return eventObjectId;
+}
+
+u32 sub_81D427C(void)
+{
+ u8 i;
+ int skip;
+ struct EventObject *mew = &gEventObjects[sub_81D4258()];
+
+ gUnknown_030012F8 = gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.x - mew->currentCoords.x;
+ gUnknown_030012FA = gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.y - mew->currentCoords.y;
+ for (i = 0; i < ARRAY_COUNT(gUnknown_030012FC); i++)
+ gUnknown_030012FC[i] = DIR_NONE;
+
+ if (gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.x == gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.x
+ && gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.y == gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.y)
+ {
+ return DIR_NONE;
+ }
+
+ if (VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) % 8 == 0)
+ mew->invisible = 0;
+ else
+ mew->invisible = 1;
+
+ if (VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) % 9 == 0)
+ return DIR_NONE;
+
+ for (i = 0; i < ARRAY_COUNT(sFarawayIslandRockCoords); i++)
+ {
+ if (gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.x == sFarawayIslandRockCoords[i][0])
+ {
+ skip = 0;
+ if (gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.y < sFarawayIslandRockCoords[i][1])
+ {
+ if (mew->currentCoords.y <= sFarawayIslandRockCoords[i][1])
+ skip = 1;
+ }
+ else
+ {
+ if (mew->currentCoords.y >= sFarawayIslandRockCoords[i][1])
+ skip = 1;
+ }
+
+ if (!skip)
+ {
+ if (gUnknown_030012F8 > 0)
+ {
+ if (mew->currentCoords.x + 1 == gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.x)
+ {
+ if (sub_81D4834(mew->currentCoords.x + 1, mew->currentCoords.y))
+ return DIR_EAST;
+ }
+ }
+ else if (gUnknown_030012F8 < 0)
+ {
+ if (mew->currentCoords.x - 1 == gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.x)
+ {
+ if (sub_81D4834(mew->currentCoords.x - 1, mew->currentCoords.y))
+ return DIR_WEST;
+ }
+ }
+
+ if (mew->currentCoords.x == gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.x)
+ {
+ if (gUnknown_030012FA > 0)
+ {
+ if (sub_81D4834(mew->currentCoords.x, mew->currentCoords.y - 1))
+ return DIR_NORTH;
+ }
+ else
+ {
+ if (sub_81D4834(mew->currentCoords.x, mew->currentCoords.y + 1))
+ return DIR_SOUTH;
+ }
+ }
+ }
+ }
+
+ if (gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.y == sFarawayIslandRockCoords[i][1])
+ {
+ skip = 0;
+ if (gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.x < sFarawayIslandRockCoords[i][0])
+ {
+ if (mew->currentCoords.x <= sFarawayIslandRockCoords[i][0])
+ skip = 1;
+ }
+ else
+ {
+ if (mew->currentCoords.x >= sFarawayIslandRockCoords[i][0])
+ skip = 1;
+ }
+
+ if (!skip)
+ {
+ if (gUnknown_030012FA > 0)
+ {
+ if (mew->currentCoords.y + 1 == gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.y)
+ {
+ if (sub_81D4834(mew->currentCoords.x, mew->currentCoords.y + 1))
+ return DIR_SOUTH;
+ }
+ }
+ else if (gUnknown_030012FA < 0)
+ {
+ if (mew->currentCoords.y - 1 == gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.y)
+ {
+ if (sub_81D4834(mew->currentCoords.x, mew->currentCoords.y - 1))
+ return DIR_NORTH;
+ }
+ }
+
+ if (mew->currentCoords.y == gEventObjects[gPlayerAvatar.eventObjectId].previousCoords.y)
+ {
+ if (gUnknown_030012F8 > 0)
+ {
+ if (sub_81D4834(mew->currentCoords.x - 1, mew->currentCoords.y))
+ return DIR_WEST;
+ }
+ else
+ {
+ if (sub_81D4834(mew->currentCoords.x + 1, mew->currentCoords.y))
+ return DIR_EAST;
+ }
+ }
+ }
+ }
+ }
+
+ if (sub_81D4C14(mew, 0))
+ {
+ if (sub_81D4C58(mew, 1))
+ return sub_81D4D24(2);
+ else if (sub_81D4CE0(mew, 1))
+ return sub_81D4D24(2);
+ else
+ return DIR_NORTH;
+ }
+
+ if (sub_81D4C9C(mew, 0))
+ {
+ if (sub_81D4C58(mew, 1))
+ return sub_81D4D24(2);
+ else if (sub_81D4CE0(mew, 1))
+ return sub_81D4D24(2);
+ else
+ return DIR_SOUTH;
+ }
+
+ if (sub_81D4C58(mew, 0))
+ {
+ if (sub_81D4C14(mew, 1))
+ return sub_81D4D24(2);
+ else if (sub_81D4C9C(mew, 1))
+ return sub_81D4D24(2);
+ else
+ return DIR_EAST;
+ }
+
+ if (sub_81D4CE0(mew, 0))
+ {
+ if (sub_81D4C14(mew, 1))
+ return sub_81D4D24(2);
+ else if (sub_81D4C9C(mew, 1))
+ return sub_81D4D24(2);
+ else
+ return DIR_WEST;
+ }
+
+ if (gUnknown_030012FA == 0)
+ {
+ if (gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.y > mew->currentCoords.y)
+ {
+ if (sub_81D4834(mew->currentCoords.x, mew->currentCoords.y - 1))
+ return DIR_NORTH;
+ }
+
+ if (gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.y < mew->currentCoords.y)
+ {
+ if (sub_81D4834(mew->currentCoords.x, mew->currentCoords.y + 1))
+ return DIR_SOUTH;
+ }
+
+ if (sub_81D4834(mew->currentCoords.x, mew->currentCoords.y - 1))
+ return DIR_NORTH;
+
+ if (sub_81D4834(mew->currentCoords.x, mew->currentCoords.y + 1))
+ return DIR_SOUTH;
+ }
+
+ if (gUnknown_030012F8 == 0)
+ {
+ if (gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.x > mew->currentCoords.x)
+ {
+ if (sub_81D4834(mew->currentCoords.x - 1, mew->currentCoords.y))
+ return DIR_WEST;
+ }
+
+ if (gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.x < mew->currentCoords.x)
+ {
+ if (sub_81D4834(mew->currentCoords.x + 1, mew->currentCoords.y))
+ return DIR_EAST;
+ }
+
+ if (sub_81D4834(mew->currentCoords.x + 1, mew->currentCoords.y))
+ return DIR_EAST;
+
+ if (sub_81D4834(mew->currentCoords.x - 1, mew->currentCoords.y))
+ return DIR_WEST;
+ }
+
+ return sub_81D4890(DIR_NONE);
+}
+
+static bool8 sub_81D4834(s16 x, s16 y)
+{
+ if (gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.x == x
+ && gEventObjects[gPlayerAvatar.eventObjectId].currentCoords.y == y)
+ {
+ return FALSE;
+ }
+
+ return MetatileBehavior_IsPokeGrass(MapGridGetMetatileBehaviorAt(x, y));
+}
+
+static u8 sub_81D4890(u8 ignoredDir)
+{
+ u8 i;
+ u8 count = 0;
+ struct EventObject *mew = &gEventObjects[sub_81D4258()];
+
+ for (i = 0; i < ARRAY_COUNT(gUnknown_030012FC); i++)
+ gUnknown_030012FC[i] = DIR_NONE;
+
+ if (sub_81D4834(mew->currentCoords.x, mew->currentCoords.y - 1) == TRUE && ignoredDir != DIR_NORTH)
+ {
+ gUnknown_030012FC[count] = DIR_NORTH;
+ count++;
+ }
+
+ if (sub_81D4834(mew->currentCoords.x + 1, mew->currentCoords.y) == TRUE && ignoredDir != DIR_EAST)
+ {
+ gUnknown_030012FC[count] = DIR_EAST;
+ count++;
+ }
+
+ if (sub_81D4834(mew->currentCoords.x, mew->currentCoords.y + 1) == TRUE && ignoredDir != DIR_SOUTH)
+ {
+ gUnknown_030012FC[count] = DIR_SOUTH;
+ count++;
+ }
+
+ if (sub_81D4834(mew->currentCoords.x - 1, mew->currentCoords.y) == TRUE && ignoredDir != DIR_WEST)
+ {
+ gUnknown_030012FC[count] = DIR_WEST;
+ count++;
+ }
+
+ if (count > 1)
+ return gUnknown_030012FC[VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) % count];
+ else
+ return gUnknown_030012FC[0];
+}
+
+void UpdateFarawayIslandStepCounter(void)
+{
+ u16 steps = VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER);
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(FARAWAY_ISLAND_INTERIOR)
+ && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(FARAWAY_ISLAND_INTERIOR))
+ {
+ steps++;
+ if (steps >= 9999)
+ VarSet(VAR_FARAWAY_ISLAND_STEP_COUNTER, 0);
+ else
+ VarSet(VAR_FARAWAY_ISLAND_STEP_COUNTER, steps);
+ }
+}
+
+bool8 EventObjectIsFarawayIslandMew(struct EventObject *eventObject)
+{
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(FARAWAY_ISLAND_INTERIOR)
+ && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(FARAWAY_ISLAND_INTERIOR))
+ {
+ if (eventObject->graphicsId == EVENT_OBJ_GFX_MEW)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 IsMewPlayingHideAndSeek(void)
+{
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(FARAWAY_ISLAND_INTERIOR)
+ && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(FARAWAY_ISLAND_INTERIOR))
+ {
+ if (FlagGet(FLAG_CAUGHT_MEW) != TRUE && FlagGet(FLAG_HIDE_MEW) != TRUE)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 sub_81D4A58(struct EventObject *eventObject)
+{
+ if (VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) != 0xFFFF
+ && VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) % 4 == 0)
+ return TRUE;
+
+ return FALSE;
+}
+
+void sub_81D4A90(void)
+{
+ s16 x;
+ s16 y;
+ u8 spriteId;
+ struct EventObject *mew = &gEventObjects[sub_81D4258()];
+
+ mew->invisible = 0;
+ if (gSpecialVar_0x8004 == 1)
+ {
+ mew->fixedPriority = 1;
+ gSprites[mew->spriteId].subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
+ gSprites[mew->spriteId].subpriority = 1;
+ }
+ else
+ {
+ VarSet(VAR_FARAWAY_ISLAND_STEP_COUNTER, 0xFFFF);
+ mew->fixedPriority = 1;
+ gSprites[mew->spriteId].subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
+ if (gSpecialVar_Facing != DIR_NORTH)
+ gSprites[mew->spriteId].subpriority = 1;
+
+ LoadSpritePalette(&gFieldEffectObjectPaletteInfo1);
+ UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(gFieldEffectObjectPaletteInfo1.tag));
+
+ x = mew->currentCoords.x;
+ y = mew->currentCoords.y;
+ sub_80930E0(&x, &y, 8, 8);
+ gUnknown_0203CF50 = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, gSprites[mew->spriteId].subpriority - 1);
+ if (gUnknown_0203CF50 != MAX_SPRITES)
+ {
+ struct Sprite *sprite = &gSprites[gUnknown_0203CF50];
+ sprite->coordOffsetEnabled = 1;
+ sprite->oam.priority = 2;
+ sprite->callback = SpriteCallbackDummy;
+ }
+ }
+}
+
+void sub_81D4BEC(void)
+{
+ if (gUnknown_0203CF50 != MAX_SPRITES)
+ DestroySprite(&gSprites[gUnknown_0203CF50]);
+}
+
+static bool8 sub_81D4C14(struct EventObject *mew, u8 index)
+{
+ if (gUnknown_030012FA > 0 && sub_81D4834(mew->currentCoords.x, mew->currentCoords.y - 1))
+ {
+ gUnknown_030012FC[index] = DIR_NORTH;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u8 sub_81D4C58(struct EventObject *mew, u8 index)
+{
+ if (gUnknown_030012F8 < 0 && sub_81D4834(mew->currentCoords.x + 1, mew->currentCoords.y))
+ {
+ gUnknown_030012FC[index] = DIR_EAST;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u8 sub_81D4C9C(struct EventObject *mew, u8 index)
+{
+ if (gUnknown_030012FA < 0 && sub_81D4834(mew->currentCoords.x, mew->currentCoords.y + 1))
+ {
+ gUnknown_030012FC[index] = DIR_SOUTH;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u8 sub_81D4CE0(struct EventObject *mew, u8 index)
+{
+ if (gUnknown_030012F8 > 0 && sub_81D4834(mew->currentCoords.x - 1, mew->currentCoords.y))
+ {
+ gUnknown_030012FC[index] = DIR_WEST;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u8 sub_81D4D24(u8 mod)
+{
+ return gUnknown_030012FC[VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) % mod];
+}
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index 00dce4c7d..6735df3a0 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -3,6 +3,7 @@
#include "bike.h"
#include "coord_event_weather.h"
#include "daycare.h"
+#include "faraway_island.h"
#include "event_data.h"
#include "event_object_movement.h"
#include "event_scripts.h"
@@ -18,7 +19,6 @@
#include "metatile_behavior.h"
#include "overworld.h"
#include "pokemon.h"
-#include "pokenav.h"
#include "safari_zone.h"
#include "script.h"
#include "secret_base.h"
@@ -32,8 +32,7 @@
#include "constants/map_types.h"
#include "constants/maps.h"
#include "constants/songs.h"
-
-extern bool32 TryStartMatchCall(void);
+#include "match_call.h"
static EWRAM_DATA u8 sWildEncounterImmunitySteps = 0;
static EWRAM_DATA u16 sPreviousPlayerMetatileBehavior = 0;
@@ -147,7 +146,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input)
if (CheckForTrainersWantingBattle() == TRUE)
return TRUE;
- if (mapheader_run_first_tag2_script_list_match() == 1)
+ if (TryRunOnFrameMapScript() == TRUE)
return TRUE;
if (input->pressedBButton && TrySetupDiveEmergeScript() == TRUE)
@@ -542,7 +541,7 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
IncrementRematchStepCounter();
UpdateHappinessStepCounter();
- sub_81D4998();
+ UpdateFarawayIslandStepCounter();
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_6) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior))
{
@@ -557,9 +556,9 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
ScriptContext1_SetupScript(EventScript_EggHatch);
return TRUE;
}
- if (sub_813B3B0() == TRUE)
+ if (UnusualWeatherHasExpired() == TRUE)
{
- ScriptContext1_SetupScript(gUnknown_08273D1F);
+ ScriptContext1_SetupScript(UnusualWeather_EventScript_EndEventAndCleanup_1);
return TRUE;
}
if (ShouldDoBrailleRegicePuzzle() == TRUE)
@@ -567,27 +566,27 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
ScriptContext1_SetupScript(IslandCave_EventScript_238EAF);
return TRUE;
}
- if (is_tile_that_overrides_player_control() == TRUE)
+ if (ShouldDoWallyCall() == TRUE)
{
ScriptContext1_SetupScript(MauvilleCity_EventScript_1DF7BA);
return TRUE;
}
- if (sub_8138120() == TRUE)
+ if (ShouldDoWinonaCall() == TRUE)
{
ScriptContext1_SetupScript(Route119_EventScript_1F49EC);
return TRUE;
}
- if (sub_8138168() == TRUE)
+ if (ShouldDoScottCall() == TRUE)
{
ScriptContext1_SetupScript(LittlerootTown_ProfessorBirchsLab_EventScript_1FA4D6);
return TRUE;
}
- if (sub_81381B0() == TRUE)
+ if (ShouldDoRoxanneCall() == TRUE)
{
ScriptContext1_SetupScript(RustboroCity_Gym_EventScript_21307B);
return TRUE;
}
- if (sub_81381F8() == TRUE)
+ if (ShouldDoRivalRayquazaCall() == TRUE)
{
ScriptContext1_SetupScript(MossdeepCity_SpaceCenter_2F_EventScript_224175);
return TRUE;
diff --git a/src/field_effect.c b/src/field_effect.c
index badf57b16..825efc380 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -240,12 +240,6 @@ static IWRAM_DATA u8 sActiveList[32];
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 WarpFadeScreen(void);
// .rodata
const u32 gNewGameBirchPic[] = INCBIN_U32("graphics/birch_speech/birch.4bpp");
@@ -276,7 +270,8 @@ const u8 gUnknown_0855C190[] = INCBIN_U8("graphics/unknown/unknown_55C190.4bpp")
const u8 gUnknown_0855C1B0[] = INCBIN_U8("graphics/unknown/unknown_55C1B0.4bpp");
const u8 gUnknown_0855C1D0[] = INCBIN_U8("graphics/unknown/unknown_55C1D0.4bpp");
-bool8 (*const gFieldEffectScriptFuncs[])(u8 **, u32 *) = {
+bool8 (*const gFieldEffectScriptFuncs[])(u8 **, u32 *) =
+{
FieldEffectCmd_loadtiles,
FieldEffectCmd_loadfadedpal,
FieldEffectCmd_loadpal,
@@ -287,25 +282,48 @@ bool8 (*const gFieldEffectScriptFuncs[])(u8 **, u32 *) = {
FieldEffectCmd_loadfadedpal_callnative,
};
-const struct OamData gNewGameBirchOamAttributes = {.size = 3};
-const struct OamData gOamData_855C218 = {.size = 0};
-const struct OamData gOamData_855C220 = {.size = 1};
+const struct OamData gNewGameBirchOamAttributes =
+{
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64)
+};
-const struct SpriteFrameImage gNewGameBirchPicTable[] = {
+const struct OamData gOamData_855C218 =
+{
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8)
+};
+
+const struct OamData gOamData_855C220 =
+{
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16)
+};
+
+const struct SpriteFrameImage gNewGameBirchPicTable[] =
+{
obj_frame_tiles(gNewGameBirchPic)
};
-const struct SpritePalette gNewGameBirchObjectPaletteInfo = {.data = gNewGameBirchPalette, .tag = 0x1006};
-const union AnimCmd gNewGameBirchImageAnim[] = {
+const struct SpritePalette gNewGameBirchObjectPaletteInfo =
+{
+ .data = gNewGameBirchPalette,
+ .tag = 0x1006
+};
+
+const union AnimCmd gNewGameBirchImageAnim[] =
+{
ANIMCMD_FRAME(.imageValue = 0, .duration = 1),
ANIMCMD_END
};
-const union AnimCmd *const gNewGameBirchImageAnimTable[] = {
+const union AnimCmd *const gNewGameBirchImageAnimTable[] =
+{
gNewGameBirchImageAnim
};
-const struct SpriteTemplate gNewGameBirchObjectTemplate = {
+const struct SpriteTemplate gNewGameBirchObjectTemplate =
+{
.tileTag = 0xFFFF,
.paletteTag = 4102,
.oam = &gNewGameBirchOamAttributes,
@@ -315,31 +333,47 @@ const struct SpriteTemplate gNewGameBirchObjectTemplate = {
.callback = SpriteCallbackDummy
};
-const struct SpritePalette gFieldEffectObjectPaletteInfo4 = {.data = gFieldEffectObjectPalette4, .tag = 0x1007};
-const struct SpritePalette gFieldEffectObjectPaletteInfo5 = {.data = gFieldEffectObjectPalette5, .tag = 0x1010};
-const struct OamData gOamData_855C26C = {
- .shape = 1,
- .size = 2
+const struct SpritePalette gFieldEffectObjectPaletteInfo4 =
+{
+ .data = gFieldEffectObjectPalette4,
+ .tag = 0x1007
+};
+
+const struct SpritePalette gFieldEffectObjectPaletteInfo5 =
+{
+ .data = gFieldEffectObjectPalette5,
+ .tag = 0x1010
+};
+
+const struct OamData gOamData_855C26C =
+{
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16)
};
-const struct SpriteFrameImage gSpriteImageTable_855C274[] = {
+const struct SpriteFrameImage gSpriteImageTable_855C274[] =
+{
obj_frame_tiles(gSpriteImage_855A970)
};
-const struct SpriteFrameImage gSpriteImageTable_855C27C[] = {
+const struct SpriteFrameImage gSpriteImageTable_855C27C[] =
+{
obj_frame_tiles(gSpriteImage_855A9B0),
obj_frame_tiles(gSpriteImage_855AA70)
};
-const struct SpriteFrameImage gSpriteImageTable_855C28C[] = {
+const struct SpriteFrameImage gSpriteImageTable_855C28C[] =
+{
obj_frame_tiles(gSpriteImage_855AB30)
};
-const struct SpriteFrameImage gSpriteImageTable_855C294[] = {
+const struct SpriteFrameImage gSpriteImageTable_855C294[] =
+{
{.data = gSpriteImage_855AD30, .size = 0x200} // the macro breaks down here
};
-const struct Subsprite gSubspriteTable_855C29C[] = {
+const struct Subsprite gSubspriteTable_855C29C[] =
+{
{.x = -12, .y = -8, .priority = 2, .tileOffset = 0, .shape = 1, .size = 0},
{.x = 4, .y = -8, .priority = 2, .tileOffset = 2, .shape = 0, .size = 0},
{.x = -12, .y = 0, .priority = 2, .tileOffset = 3, .shape = 1, .size = 0},
@@ -348,7 +382,8 @@ const struct Subsprite gSubspriteTable_855C29C[] = {
const struct SubspriteTable gUnknown_0855C2AC = subsprite_table(gSubspriteTable_855C29C);
-const struct Subsprite gSubspriteTable_855C2B4[] = {
+const struct Subsprite gSubspriteTable_855C2B4[] =
+{
{.x = -32, .y = -8, .priority = 2, .tileOffset = 0, .shape = 1, .size = 1},
{.x = 0, .y = -8, .priority = 2, .tileOffset = 4, .shape = 1, .size = 1},
{.x = -32, .y = 0, .priority = 2, .tileOffset = 8, .shape = 1, .size = 1},
@@ -357,12 +392,14 @@ const struct Subsprite gSubspriteTable_855C2B4[] = {
const struct SubspriteTable gUnknown_0855C2C4 = subsprite_table(gSubspriteTable_855C2B4);
-const union AnimCmd gSpriteAnim_855C2CC[] = {
+const union AnimCmd gSpriteAnim_855C2CC[] =
+{
ANIMCMD_FRAME(.imageValue = 0, .duration = 1),
ANIMCMD_JUMP(0)
};
-const union AnimCmd gSpriteAnim_855C2D4[] = {
+const union AnimCmd gSpriteAnim_855C2D4[] =
+{
ANIMCMD_FRAME(.imageValue = 0, .duration = 16),
ANIMCMD_FRAME(.imageValue = 1, .duration = 16),
ANIMCMD_FRAME(.imageValue = 0, .duration = 16),
@@ -374,16 +411,19 @@ const union AnimCmd gSpriteAnim_855C2D4[] = {
ANIMCMD_END
};
-const union AnimCmd *const gSpriteAnimTable_855C2F8[] = {
+const union AnimCmd *const gSpriteAnimTable_855C2F8[] =
+{
gSpriteAnim_855C2CC,
gSpriteAnim_855C2D4
};
-const union AnimCmd *const gSpriteAnimTable_855C300[] = {
+const union AnimCmd *const gSpriteAnimTable_855C300[] =
+{
gSpriteAnim_855C2CC
};
-const struct SpriteTemplate gSpriteTemplate_855C304 = {
+const struct SpriteTemplate gSpriteTemplate_855C304 =
+{
.tileTag = 0xFFFF,
.paletteTag = 4103,
.oam = &gOamData_855C218,
@@ -393,7 +433,8 @@ const struct SpriteTemplate gSpriteTemplate_855C304 = {
.callback = SpriteCB_PokeballGlow
};
-const struct SpriteTemplate gSpriteTemplate_855C31C = {
+const struct SpriteTemplate gSpriteTemplate_855C31C =
+{
.tileTag = 0xFFFF,
.paletteTag = 4100,
.oam = &gOamData_855C220,
@@ -403,7 +444,8 @@ const struct SpriteTemplate gSpriteTemplate_855C31C = {
.callback = SpriteCB_PokecenterMonitor
};
-const struct SpriteTemplate gSpriteTemplate_855C334 = {
+const struct SpriteTemplate gSpriteTemplate_855C334 =
+{
.tileTag = 0xFFFF,
.paletteTag = 4112,
.oam = &gOamData_855C220,
@@ -413,7 +455,8 @@ const struct SpriteTemplate gSpriteTemplate_855C334 = {
.callback = SpriteCB_HallOfFameMonitor
};
-const struct SpriteTemplate gSpriteTemplate_855C34C = {
+const struct SpriteTemplate gSpriteTemplate_855C34C =
+{
.tileTag = 0xFFFF,
.paletteTag = 4112,
.oam = &gOamData_855C26C,
@@ -423,21 +466,24 @@ const struct SpriteTemplate gSpriteTemplate_855C34C = {
.callback = SpriteCB_HallOfFameMonitor
};
-void (*const gUnknown_0855C364[])(struct Task *) = {
+void (*const gUnknown_0855C364[])(struct Task *) =
+{
PokecenterHealEffect_0,
PokecenterHealEffect_1,
PokecenterHealEffect_2,
PokecenterHealEffect_3
};
-void (*const gUnknown_0855C374[])(struct Task *) = {
+void (*const gUnknown_0855C374[])(struct Task *) =
+{
HallOfFameRecordEffect_0,
HallOfFameRecordEffect_1,
HallOfFameRecordEffect_2,
HallOfFameRecordEffect_3
};
-void (*const gUnknown_0855C384[])(struct Sprite *) = {
+void (*const gUnknown_0855C384[])(struct Sprite *) =
+{
PokeballGlowEffect_0,
PokeballGlowEffect_1,
PokeballGlowEffect_2,
@@ -448,7 +494,8 @@ void (*const gUnknown_0855C384[])(struct Sprite *) = {
PokeballGlowEffect_7
};
-const struct Coords16 gUnknown_0855C3A4[] = {
+const struct Coords16 gUnknown_0855C3A4[] =
+{
{.x = 0, .y = 0},
{.x = 6, .y = 0},
{.x = 0, .y = 4},
@@ -461,7 +508,8 @@ const u8 gUnknown_0855C3BC[] = {16, 12, 8, 0};
const u8 gUnknown_0855C3C0[] = {16, 12, 8, 0};
const u8 gUnknown_0855C3C4[] = { 0, 0, 0, 0};
-bool8 (*const gUnknown_0855C3C8[])(struct Task *) = {
+bool8 (*const gUnknown_0855C3C8[])(struct Task *) =
+{
sub_80B6BCC,
sub_80B6C74,
sub_80B6C90,
@@ -471,7 +519,8 @@ bool8 (*const gUnknown_0855C3C8[])(struct Task *) = {
sub_80B6E18,
};
-bool8 (*const gUnknown_0855C3E4[])(struct Task *) = {
+bool8 (*const gUnknown_0855C3E4[])(struct Task *) =
+{
sub_80B6EC0,
sub_80B6EE0,
sub_80B6F50,
@@ -480,7 +529,8 @@ bool8 (*const gUnknown_0855C3E4[])(struct Task *) = {
sub_80B6FA8,
};
-bool8 (*const gUnknown_0855C3FC[])(struct Task *) = {
+bool8 (*const gUnknown_0855C3FC[])(struct Task *) =
+{
sub_80B7114,
sub_80B7190,
sub_80B71D0,
@@ -490,7 +540,8 @@ bool8 (*const gUnknown_0855C3FC[])(struct Task *) = {
sub_80B72F4,
};
-bool8 (*const gUnknown_0855C418[])(struct Task *, struct EventObject *) = {
+bool8 (*const gUnknown_0855C418[])(struct Task *, struct EventObject *) =
+{
sub_80B73D0,
waterfall_1_do_anim_probably,
waterfall_2_wait_anim_finish_probably,
@@ -498,13 +549,15 @@ bool8 (*const gUnknown_0855C418[])(struct Task *, struct EventObject *) = {
sub_80B7478,
};
-bool8 (*const gUnknown_0855C42C[])(struct Task *) = {
+bool8 (*const gUnknown_0855C42C[])(struct Task *) =
+{
dive_1_lock,
dive_2_unknown,
dive_3_unknown,
};
-bool8 (*const gUnknown_0855C438[])(struct Task *, struct EventObject *, struct Sprite *) = {
+bool8 (*const gUnknown_0855C438[])(struct Task *, struct EventObject *, struct Sprite *) =
+{
sub_80B764C,
sub_80B7684,
sub_80B76B8,
@@ -513,14 +566,16 @@ bool8 (*const gUnknown_0855C438[])(struct Task *, struct EventObject *, struct S
sub_80B7814,
};
-bool8 (*const gUnknown_0855C450[])(struct Task *, struct EventObject *, struct Sprite *) = {
+bool8 (*const gUnknown_0855C450[])(struct Task *, struct EventObject *, struct Sprite *) =
+{
sub_80B78EC,
sub_80B791C,
sub_80B7968,
sub_80B79BC,
};
-bool8 (*const gUnknown_0855C460[])(struct Task *, struct EventObject *, struct Sprite *) = {
+bool8 (*const gUnknown_0855C460[])(struct Task *, struct EventObject *, struct Sprite *) =
+{
sub_80B7AE8,
sub_80B7B18,
sub_80B7B94,
@@ -528,7 +583,8 @@ bool8 (*const gUnknown_0855C460[])(struct Task *, struct EventObject *, struct S
sub_80B7BF4,
};
-void (*const gEscapeRopeFieldEffectFuncs[])(struct Task *) = {
+void (*const gEscapeRopeFieldEffectFuncs[])(struct Task *) =
+{
EscapeRopeFieldEffect_Step0,
EscapeRopeFieldEffect_Step1,
};
@@ -2443,7 +2499,7 @@ static void sub_80B8410(struct Task *task)
bool8 FldEff_FieldMoveShowMon(void)
{
u8 taskId;
- if (is_map_type_1_2_3_5_or_6(GetCurrentMapType()) == TRUE)
+ if (IsMapTypeOutdoors(GetCurrentMapType()) == TRUE)
{
taskId = CreateTask(sub_80B8554, 0xff);
} else
@@ -2620,7 +2676,7 @@ static void sub_80B8874(u16 offs)
dest = (u16 *)(VRAM + 0x140 + offs);
for (i = 0; i < 0x140; i++, dest++)
{
- *dest = gFieldMoveStreaksTilemap[i] | 0xf000;
+ *dest = gFieldMoveStreaksTilemap[i] | METATILE_ELEVATION_MASK;
}
}
@@ -2953,15 +3009,15 @@ u8 sub_80B8F98(void)
{
for (j = 12; j < 18; j++)
{
- ((u16*)(VRAM + 0xF800))[i * 32 + j] = 0xBFF4 + i * 6 + j + 1;
+ ((u16*)(BG_SCREEN_ADDR(31)))[i * 32 + j] = 0xBFF4 + i * 6 + j + 1;
}
}
for (k = 0; k < 90; k++)
{
for (i = 0; i < 8; i++)
{
- *(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];
+ *(u16*)(BG_CHAR_ADDR(2) + (k + 1) * 32 + i * 4) = (gUnknown_0855B630[k * 32 + i * 4 + 1] << 8) + gUnknown_0855B630[k * 32 + i * 4];
+ *(u16*)(BG_CHAR_ADDR(2) + (k + 1) * 32 + i * 4 + 2) = (gUnknown_0855B630[k * 32 + i * 4 + 3] << 8) + gUnknown_0855B630[k * 32 + i * 4 + 2];
}
}
return spriteId;
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 53fd87e61..651b2baca 100755
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -1418,7 +1418,7 @@ void sub_8155F80(struct Sprite *sprite)
{
for (j = 12; j < 18; j++)
{
- ((u16*)(VRAM + 0xF800))[i * 32 + j] = 0xBFF4 + i * 6 + j + 1;
+ ((u16*)(BG_SCREEN_ADDR(31)))[i * 32 + j] = 0xBFF4 + i * 6 + j + 1;
}
}
}
@@ -1504,7 +1504,7 @@ void sub_8155F80(struct Sprite *sprite)
{
for (j = 12; j < 18; j++)
{
- ((u16*)(VRAM + 0xF800))[i * 32 + j] = 0;
+ ((u16*)(BG_SCREEN_ADDR(31)))[i * 32 + j] = 0;
}
}
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
diff --git a/src/field_message_box.c b/src/field_message_box.c
index 299aafaf2..1c554b6c6 100755
--- a/src/field_message_box.c
+++ b/src/field_message_box.c
@@ -4,9 +4,7 @@
#include "string_util.h"
#include "task.h"
#include "text.h"
-
-extern bool32 IsMatchCallTaskActive(void);
-extern void StartMatchCallFromScript(u8*);
+#include "match_call.h"
static EWRAM_DATA u8 sFieldMessageBoxMode = 0;
@@ -33,7 +31,7 @@ static void sub_8098154(u8 taskId)
task->data[0]++;
break;
case 1:
- NewMenuHelpers_DrawDialogueFrame(0, 1);
+ DrawDialogueFrame(0, 1);
task->data[0]++;
break;
case 2:
@@ -127,7 +125,7 @@ static void textbox_auto_and_task_add(void)
void HideFieldMessageBox(void)
{
task_del_textbox();
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
sFieldMessageBoxMode = 0;
}
@@ -146,7 +144,7 @@ bool8 IsFieldMessageBoxHidden(void)
void sub_8098358(void)
{
task_del_textbox();
- NewMenuHelpers_DrawStdWindowFrame(0, 1);
+ DrawStdWindowFrame(0, 1);
sFieldMessageBoxMode = 0;
}
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index b1291f0ce..a070fe0e1 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -1918,7 +1918,7 @@ static bool8 Fishing9(struct Task *task)
static bool8 Fishing10(struct Task *task)
{
AlignFishingAnimationFrames();
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gText_PokemonOnHook, 1, 0, 2, 1, 3);
task->tStep++;
task->tFrameCounter = 0;
@@ -1944,7 +1944,7 @@ static bool8 Fishing11(struct Task *task)
sub_8155604(gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId, 0, 0);
gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
task->tFrameCounter++;
return FALSE;
}
@@ -1966,7 +1966,7 @@ static bool8 Fishing12(struct Task *task)
{
AlignFishingAnimationFrames();
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection()));
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gText_NotEvenANibble, 1, 0, 2, 1, 3);
task->tStep = FISHING_SHOW_RESULT;
return TRUE;
@@ -1977,7 +1977,7 @@ static bool8 Fishing13(struct Task *task)
{
AlignFishingAnimationFrames();
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection()));
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gText_ItGotAway, 1, 0, 2, 1, 3);
task->tStep++;
return TRUE;
@@ -2017,7 +2017,7 @@ static bool8 Fishing16(struct Task *task)
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
UnfreezeEventObjects();
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
sub_80ED950(0);
DestroyTask(FindTaskIdByFunc(Task_Fishing));
}
@@ -2125,7 +2125,7 @@ void sub_808D194(void)
sub_808D1FC(CreateTask(sub_808D1FC, 0));
}
-bool8 sub_808D1B4(void)
+bool32 sub_808D1B4(void)
{
return FuncIsActiveTask(sub_808D1FC);
}
@@ -2135,7 +2135,7 @@ void sub_808D1C8(void)
sub_808D094(CreateTask(sub_808D094, 0));
}
-bool8 sub_808D1E8(void)
+bool32 sub_808D1E8(void)
{
return FuncIsActiveTask(sub_808D094);
}
diff --git a/src/field_poison.c b/src/field_poison.c
index 89cd02728..532c7f027 100644
--- a/src/field_poison.c
+++ b/src/field_poison.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_pike.h"
+#include "battle_pyramid.h"
#include "event_data.h"
#include "field_message_box.h"
#include "field_poison.h"
@@ -8,7 +9,6 @@
#include "frontier_util.h"
#include "party_menu.h"
#include "pokenav.h"
-#include "rom_818CFC8.h"
#include "script.h"
#include "string_util.h"
#include "strings.h"
diff --git a/src/field_region_map.c b/src/field_region_map.c
index d49ce3a4e..1d54333fb 100644
--- a/src/field_region_map.c
+++ b/src/field_region_map.c
@@ -139,11 +139,11 @@ static void FieldUpdateRegionMap(void)
sFieldRegionMapHandler->state++;
break;
case 1:
- SetWindowBorderStyle(1, 0, 0x27, 0xd);
+ DrawStdFrameWithCustomTileAndPalette(1, 0, 0x27, 0xd);
offset = GetStringCenterAlignXOffset(1, gText_Hoenn, 0x38);
AddTextPrinterParameterized(1, 1, gText_Hoenn, offset, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
- SetWindowBorderStyle(0, 0, 0x27, 0xd);
+ DrawStdFrameWithCustomTileAndPalette(0, 0, 0x27, 0xd);
PrintRegionMapSecName();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
sFieldRegionMapHandler->state++;
@@ -196,13 +196,13 @@ static void PrintRegionMapSecName(void)
{
if (sFieldRegionMapHandler->regionMap.iconDrawType != MAPSECTYPE_NONE)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, 1, sFieldRegionMapHandler->regionMap.mapSecName, 0, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
}
else
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
CopyWindowToVram(0, 3);
}
}
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index b9e9272d4..5769f44af 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -10,7 +10,6 @@
#include "field_screen_effect.h"
#include "field_special_scene.h"
#include "field_weather.h"
-// #include "fldeff_flash.h"
#include "gpu_regs.h"
#include "link.h"
#include "link_rfu.h"
@@ -31,22 +30,9 @@
#include "constants/event_object_movement_constants.h"
#include "constants/songs.h"
#include "constants/rgb.h"
-
-extern bool32 sub_81D6534(void);
-extern bool8 walkrun_is_standing_still(void);
-extern void ScriptUnfreezeEventObjects(void);
-extern void sub_80FB768(void);
-extern void sub_808D194(void);
-extern void sub_808D1C8(void);
-extern bool32 sub_808D1B4(void);
-extern bool32 sub_808D1E8(void);
-extern void sub_80B6B68(void);
-extern void sub_80B6E4C(u8, u8);
-extern void sub_80B75D8(u8);
-extern void sub_80B7A74(u8);
-extern void sub_808C0A8(u8);
-extern u8 GetMapPairFadeToType(u8, u8);
-extern u8 GetMapPairFadeFromType(u8, u8);
+#include "trainer_hill.h"
+#include "event_obj_lock.h"
+#include "fldeff.h"
extern const u16 gUnknown_82EC7CC[];
@@ -58,7 +44,7 @@ static void task0A_fade_n_map_maybe(u8);
static void sub_808115C(u8);
static void palette_bg_faded_fill_white(void);
static void sub_80AF438(u8);
-static bool32 sub_80AF71C(void);
+static bool32 WaitForWeatherFadeIn(void);
static void task0A_mpl_807E31C(u8 taskId);
static void sub_80AFA0C(u8 taskId);
static void sub_80AFA88(u8 taskId);
@@ -133,7 +119,7 @@ static void sub_80AF0F4(u8 arg)
static void task0A_nop_for_a_while(u8 taskId)
{
- if (sub_80AF71C() == TRUE)
+ if (WaitForWeatherFadeIn() == TRUE)
DestroyTask(taskId);
}
@@ -147,14 +133,14 @@ void sub_80AF128(void)
static void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID)
{
- if (sub_80AF71C() == TRUE)
+ if (WaitForWeatherFadeIn() == TRUE)
{
DestroyTask(taskID);
EnableBothScriptContexts();
}
}
-void sub_80AF168(void)
+void FieldCallback_ReturnToEventScript2(void)
{
ScriptContext2_Enable();
Overworld_PlaySpecialMapMusic();
@@ -187,7 +173,7 @@ static void task_mpl_807DD60(u8 taskId)
}
break;
case 2:
- if (sub_80AF71C() == TRUE)
+ if (WaitForWeatherFadeIn() == TRUE)
{
ScriptContext2_Disable();
DestroyTask(taskId);
@@ -227,7 +213,7 @@ static void sub_80AF234(u8 taskId)
}
break;
case 2:
- if (sub_80AF71C() == TRUE)
+ if (WaitForWeatherFadeIn() == TRUE)
{
sub_8009F18();
ScriptContext2_Disable();
@@ -255,7 +241,7 @@ void sub_80AF2B4(u8 taskId)
break;
case 2:
sub_8009F18();
- sub_8086C2C();
+ ResetAllMultiplayerState();
ScriptContext2_Disable();
DestroyTask(taskId);
break;
@@ -347,7 +333,7 @@ static void sub_80AF438(u8 taskId)
task->data[0] = 1;
break;
case 1:
- if (sub_80AF71C())
+ if (WaitForWeatherFadeIn())
{
u8 eventObjId;
sub_80AF0F4(1);
@@ -395,7 +381,7 @@ static void task_map_chg_seq_0807E20C(u8 taskId)
task->data[0] = 1;
break;
case 1:
- if (sub_80AF71C())
+ if (WaitForWeatherFadeIn())
{
u8 eventObjId;
sub_80AF0F4(1);
@@ -428,7 +414,7 @@ static void task_map_chg_seq_0807E2CC(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 1:
- if (sub_80AF71C())
+ if (WaitForWeatherFadeIn())
{
UnfreezeEventObjects();
ScriptContext2_Disable();
@@ -440,7 +426,7 @@ static void task_map_chg_seq_0807E2CC(u8 taskId)
static void sub_80AF660(u8 taskId)
{
- if (sub_80AF71C() == TRUE)
+ if (WaitForWeatherFadeIn() == TRUE)
{
DestroyTask(taskId);
CreateTask(sub_809FA34, 80);
@@ -462,7 +448,7 @@ bool8 sub_80AF6A4(void)
static void task_mpl_807E3C8(u8 taskId)
{
- if (sub_80AF71C() == 1)
+ if (WaitForWeatherFadeIn() == 1)
{
ScriptContext2_Disable();
DestroyTask(taskId);
@@ -490,7 +476,7 @@ static bool32 PaletteFadeActive(void)
return gPaletteFade.active;
}
-static bool32 sub_80AF71C(void)
+static bool32 WaitForWeatherFadeIn(void)
{
if (IsWeatherNotFadingIn() == TRUE)
return TRUE;
@@ -503,7 +489,7 @@ void DoWarp(void)
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
WarpFadeScreen();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
PlaySE(SE_KAIDAN);
gFieldCallback = mapldr_default;
CreateTask(sub_80AFA0C, 10);
@@ -514,7 +500,7 @@ void DoDiveWarp(void)
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
WarpFadeScreen();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
gFieldCallback = mapldr_default;
CreateTask(sub_80AFA0C, 10);
}
@@ -524,7 +510,7 @@ void sub_80AF79C(void)
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
FadeScreen(FADE_TO_WHITE, 8);
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
gFieldCallback = sub_80AF3B0;
CreateTask(sub_80AFA0C, 10);
}
@@ -621,7 +607,7 @@ void sub_80AF948(void)
CreateTask(sub_80AF8E0, 10);
}
-static void sub_80AF96C(u8 taskId)
+static void Task_ReturnToWorldFromLinkRoom(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -654,7 +640,7 @@ static void sub_80AF96C(u8 taskId)
void sub_80AF9F8(void)
{
- CreateTask(sub_80AF96C, 10);
+ CreateTask(Task_ReturnToWorldFromLinkRoom, 10);
}
static void sub_80AFA0C(u8 taskId)
@@ -734,7 +720,7 @@ static void sub_80AFA88(u8 taskId)
case 4:
TryFadeOutOldMapMusic();
WarpFadeScreen();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
task->data[0] = 0;
task->func = sub_80AFA0C;
break;
@@ -771,7 +757,7 @@ void sub_80AFC60(void)
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
WarpFadeScreen();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
PlaySE(SE_KAIDAN);
gFieldCallback = sub_80AF3C8;
CreateTask(task0A_fade_n_map_maybe, 10);
@@ -1004,9 +990,9 @@ void WriteFlashScanlineEffectBuffer(u8 flashLevel)
}
}
-void door_upload_tiles(void)
+void WriteBattlePyramidViewScanlineEffectBuffer(void)
{
- SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], 120, 80, gSaveBlock2Ptr->frontier.field_E68);
+ SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], 120, 80, gSaveBlock2Ptr->frontier.pyramidLightRadius);
CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
}
@@ -1021,7 +1007,7 @@ static void task0A_mpl_807E31C(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 1:
- if (sub_80AF71C() && sub_808D1B4() != TRUE)
+ if (WaitForWeatherFadeIn() && sub_808D1B4() != TRUE)
{
UnfreezeEventObjects();
ScriptContext2_Disable();
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index 579188f36..e059e6ef8 100644
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -300,8 +300,8 @@ void Task_HandlePorthole(u8 taskId)
}
break;
case EXIT_PORTHOLE: // exit porthole.
- FlagClear(0x4001);
- FlagClear(0x4000);
+ FlagClear(FLAG_SPECIAL_FLAG_0x4001);
+ FlagClear(FLAG_HIDE_MAP_NAME_POPUP);
SetWarpDestinationToDynamicWarp(0);
DoDiveWarp();
DestroyTask(taskId);
@@ -315,7 +315,7 @@ void sub_80FB6EC(void)
gSprites[spriteId].coordOffsetEnabled = FALSE;
- if (VarGet(0x40B4) == 2)
+ if (VarGet(VAR_PORTHOLE_STATE) == 2)
{
StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(4));
}
@@ -337,8 +337,8 @@ void sub_80FB768(void)
void sub_80FB7A4(void)
{
FlagSet(FLAG_SYS_CRUISE_MODE);
- FlagSet(0x4001);
- FlagSet(0x4000);
+ FlagSet(FLAG_SPECIAL_FLAG_0x4001);
+ FlagSet(FLAG_HIDE_MAP_NAME_POPUP);
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
sub_80FB59C();
sub_80AF8B8();
diff --git a/src/field_specials.c b/src/field_specials.c
index 0dc1bf18b..2ae494dad 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -54,6 +54,8 @@
#include "constants/moves.h"
#include "constants/vars.h"
#include "constants/battle_frontier.h"
+#include "constants/weather.h"
+#include "palette.h"
EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE;
EWRAM_DATA u8 gBikeCollisions = 0;
@@ -79,9 +81,6 @@ extern const u16 gEventObjectPalette17[];
extern const u16 gEventObjectPalette33[];
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);
@@ -359,17 +358,17 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
return 0;
}
-bool32 is_tile_that_overrides_player_control(void)
+bool32 ShouldDoWallyCall(void)
{
if (FlagGet(FLAG_ENABLE_FIRST_WALLY_POKENAV_CALL))
{
switch (gMapHeader.mapType)
{
- case 1:
- case 2:
- case 3:
- case 6:
- if (++(*GetVarPointer(VAR_0x40F2)) < 0xFA)
+ case MAP_TYPE_TOWN:
+ case MAP_TYPE_CITY:
+ case MAP_TYPE_ROUTE:
+ case MAP_TYPE_OCEAN_ROUTE:
+ if (++(*GetVarPointer(VAR_WALLY_CALL_STEP_COUNTER)) < 250)
{
return FALSE;
}
@@ -386,7 +385,7 @@ bool32 is_tile_that_overrides_player_control(void)
return TRUE;
}
-bool32 sub_8138120(void)
+bool32 ShouldDoWinonaCall(void)
{
if (FlagGet(FLAG_REGISTER_WINONA_POKENAV))
{
@@ -395,8 +394,8 @@ bool32 sub_8138120(void)
case MAP_TYPE_TOWN:
case MAP_TYPE_CITY:
case MAP_TYPE_ROUTE:
- case MAP_TYPE_6:
- if (++(*GetVarPointer(VAR_0x40F3)) < 10)
+ case MAP_TYPE_OCEAN_ROUTE:
+ if (++(*GetVarPointer(VAR_WINONA_CALL_STEP_COUNTER)) < 10)
{
return FALSE;
}
@@ -413,7 +412,7 @@ bool32 sub_8138120(void)
return TRUE;
}
-bool32 sub_8138168(void)
+bool32 ShouldDoScottCall(void)
{
if (FlagGet(FLAG_SCOTT_CALL_NATIONAL_DEX))
{
@@ -423,7 +422,7 @@ bool32 sub_8138168(void)
case 2:
case 3:
case 6:
- if (++(*GetVarPointer(VAR_0x40F5)) < 0xA)
+ if (++(*GetVarPointer(VAR_SCOTT_CALL_STEP_COUNTER)) < 10)
{
return FALSE;
}
@@ -440,7 +439,7 @@ bool32 sub_8138168(void)
return TRUE;
}
-bool32 sub_81381B0(void)
+bool32 ShouldDoRoxanneCall(void)
{
if (FlagGet(FLAG_ENABLE_ROXANNE_FIRST_CALL))
{
@@ -450,7 +449,7 @@ bool32 sub_81381B0(void)
case 2:
case 3:
case 6:
- if (++(*GetVarPointer(VAR_0x40F4)) < 0xFA)
+ if (++(*GetVarPointer(VAR_ROXANNE_CALL_STEP_COUNTER)) < 250)
{
return FALSE;
}
@@ -467,7 +466,7 @@ bool32 sub_81381B0(void)
return TRUE;
}
-bool32 sub_81381F8(void)
+bool32 ShouldDoRivalRayquazaCall(void)
{
if (FlagGet(FLAG_DEFEATED_MAGMA_SPACE_CENTER))
{
@@ -477,7 +476,7 @@ bool32 sub_81381F8(void)
case 2:
case 3:
case 6:
- if (++(*GetVarPointer(VAR_0x40F6)) < 0xFA)
+ if (++(*GetVarPointer(VAR_RIVAL_RAYQUAZA_CALL_STEP_COUNTER)) < 250)
{
return FALSE;
}
@@ -590,7 +589,9 @@ void SpawnLinkPartnerEventObject(void)
static void LoadLinkPartnerEventObjectSpritePalette(u8 graphicsId, u8 localEventId, u8 paletteNum)
{
- paletteNum += 6;
+ u8 adjustedPaletteNum;
+ // Note: This temp var is necessary; paletteNum += 6 doesn't match.
+ adjustedPaletteNum = paletteNum + 6;
if (graphicsId == EVENT_OBJ_GFX_LINK_RS_BRENDAN ||
graphicsId == EVENT_OBJ_GFX_LINK_RS_MAY ||
graphicsId == EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL ||
@@ -601,21 +602,21 @@ static void LoadLinkPartnerEventObjectSpritePalette(u8 graphicsId, u8 localEvent
{
u8 spriteId = gEventObjects[obj].spriteId;
struct Sprite *sprite = &gSprites[spriteId];
- sprite->oam.paletteNum = paletteNum;
+ sprite->oam.paletteNum = adjustedPaletteNum;
switch (graphicsId)
{
case EVENT_OBJ_GFX_LINK_RS_BRENDAN:
- LoadPalette(gEventObjectPalette33, 0x100 + paletteNum * 16, 0x20);
+ LoadPalette(gEventObjectPalette33, 0x100 + (adjustedPaletteNum << 4), 0x20);
break;
case EVENT_OBJ_GFX_LINK_RS_MAY:
- LoadPalette(gEventObjectPalette34, 0x100 + paletteNum * 16, 0x20);
+ LoadPalette(gEventObjectPalette34, 0x100 + (adjustedPaletteNum << 4), 0x20);
break;
case EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL:
- LoadPalette(gEventObjectPalette8, 0x100 + paletteNum * 16, 0x20);
+ LoadPalette(gEventObjectPalette8, 0x100 + (adjustedPaletteNum << 4), 0x20);
break;
case EVENT_OBJ_GFX_RIVAL_MAY_NORMAL:
- LoadPalette(gEventObjectPalette17, 0x100 + paletteNum * 16, 0x20);
+ LoadPalette(gEventObjectPalette17, 0x100 + (adjustedPaletteNum << 4), 0x20);
break;
}
}
@@ -886,8 +887,8 @@ static void PetalburgGymFunc(u8 a0, u16 a1)
}
for (i = 0; i < nDoors; i++)
{
- MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | 0xc00);
- MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | 0xc00);
+ MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | METATILE_COLLISION_MASK);
}
DrawWholeMapView();
}
@@ -1099,7 +1100,7 @@ static void PCTurnOnEffect_1(s16 flag, s8 dx, s8 dy)
tileId = 0x27e;
}
}
- MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | 0xc00);
+ MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | METATILE_COLLISION_MASK);
}
void DoPCTurnOffEffect(void)
@@ -1140,7 +1141,7 @@ static void PCTurnOffEffect(void)
{
tileId = 0x259;
}
- MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | 0xc00);
+ MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | METATILE_COLLISION_MASK);
DrawWholeMapView();
}
@@ -1515,7 +1516,7 @@ bool8 FoundBlackGlasses(void)
void SetRoute119Weather(void)
{
- if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE)
+ if (IsMapTypeOutdoors(GetLastUsedWarpMapType()) != TRUE)
{
SetSav1Weather(20);
}
@@ -1523,7 +1524,7 @@ void SetRoute119Weather(void)
void SetRoute123Weather(void)
{
- if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE)
+ if (IsMapTypeOutdoors(GetLastUsedWarpMapType()) != TRUE)
{
SetSav1Weather(21);
}
@@ -1859,7 +1860,7 @@ void sub_8139B60(void)
void sub_8139C10(void)
{
- sub_8198070(gUnknown_0203AB5E, TRUE);
+ ClearStdWindowAndFrameToTransparent(gUnknown_0203AB5E, TRUE);
RemoveWindow(gUnknown_0203AB5E);
}
@@ -1891,7 +1892,7 @@ static void sub_8139C80(u8 taskId)
{
for (x = 0; x < 3; x++)
{
- MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y][data[0] % 3] | 0xC00);
+ MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y][data[0] % 3] | METATILE_COLLISION_MASK);
}
}
}
@@ -1901,7 +1902,7 @@ static void sub_8139C80(u8 taskId)
{
for (x = 0; x < 3; x++)
{
- MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y][data[0] % 3] | 0xC00);
+ MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y][data[0] % 3] | METATILE_COLLISION_MASK);
}
}
}
@@ -1956,7 +1957,7 @@ void sub_8139D98(void)
}
}
-bool32 warp0_in_pokecenter(void)
+bool8 warp0_in_pokecenter(void)
{
static const u16 gUnknown_085B2C2A[] = { 0x0202, 0x0301, 0x0405, 0x0504, 0x0604, 0x0700, 0x0804, 0x090b, 0x0a05, 0x0b05, 0x0c02, 0x0d06, 0x0e03, 0x0f02, 0x100c, 0x100a, 0x1a35, 0x193c, 0xFFFF };
@@ -2603,25 +2604,25 @@ static void sub_813A46C(s32 itemIndex, bool8 onInit, struct ListMenu *list)
static void sub_813A4EC(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- s32 itemId = ListMenuHandleInputGetItemId(task->data[14]);
+ s32 input = ListMenu_ProcessInput(task->data[14]);
- switch (itemId)
+ switch (input)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
gSpecialVar_Result = 0x7F;
PlaySE(SE_SELECT);
sub_813A570(taskId);
break;
default:
- gSpecialVar_Result = itemId;
+ gSpecialVar_Result = input;
PlaySE(SE_SELECT);
if (!task->data[6])
{
sub_813A570(taskId);
}
- else if (itemId == task->data[1] - 1)
+ else if (input == task->data[1] - 1)
{
sub_813A570(taskId);
}
@@ -2644,8 +2645,8 @@ static void sub_813A570(u8 taskId)
sub_813A738(taskId);
DestroyListMenuTask(task->data[14], NULL, NULL);
Free(gUnknown_0203AB64);
- sub_8198070(task->data[13], 1);
- FillWindowPixelBuffer(task->data[13], 0);
+ ClearStdWindowAndFrameToTransparent(task->data[13], 1);
+ FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0));
CopyWindowToVram(task->data[13], 2);
RemoveWindow(task->data[13]);
DestroyTask(taskId);
@@ -2689,10 +2690,10 @@ static void sub_813A664(u8 taskId)
static void sub_813A694(u8 taskId)
{
static const struct ScrollArrowsTemplate gUnknown_085B3030 = {
- .firstArrowType = 2,
+ .firstArrowType = SCROLL_ARROW_UP,
.firstX = 0,
.firstY = 0,
- .secondArrowType = 3,
+ .secondArrowType = SCROLL_ARROW_DOWN,
.secondX = 0,
.secondY = 0,
.fullyUpThreshold = 0,
@@ -2889,7 +2890,7 @@ void sub_813A958(void)
void sub_813A988(void)
{
- sub_8198070(gUnknown_0203AB6D, TRUE);
+ ClearStdWindowAndFrameToTransparent(gUnknown_0203AB6D, TRUE);
RemoveWindow(gUnknown_0203AB6D);
}
@@ -2941,7 +2942,7 @@ void sub_813AA18(void)
void sub_813AA44(void)
{
- sub_8198070(gUnknown_0203AB6E, TRUE);
+ ClearStdWindowAndFrameToTransparent(gUnknown_0203AB6E, TRUE);
RemoveWindow(gUnknown_0203AB6E);
}
@@ -3000,7 +3001,7 @@ static void sub_813AA60(u16 a0, u16 a1)
if (a0 > 2 && a0 < 7)
{
- FillWindowPixelRect(0, 0x11, 0, 0, 216, 32);
+ FillWindowPixelRect(0, PIXEL_FILL(1), 0, 0, 216, 32);
switch (a0)
{
case 3:
@@ -3139,7 +3140,7 @@ static void sub_813AD34(u8 a0, u16 a1)
if (a0 == 9 || a0 == 10)
{
- FillWindowPixelRect(gUnknown_0203AB5E, 0x11, 0, 0, 96, 48);
+ FillWindowPixelRect(gUnknown_0203AB5E, PIXEL_FILL(1), 0, 0, 96, 48);
if (a0 == 10)
{
AddTextPrinterParameterized(gUnknown_0203AB5E, 1, gUnknown_085B3254[a1], 0, 1, 0, NULL);
@@ -3153,7 +3154,7 @@ static void sub_813AD34(u8 a0, u16 a1)
void sub_813ADB8(void)
{
- sub_8198070(gUnknown_0203AB5E, TRUE);
+ ClearStdWindowAndFrameToTransparent(gUnknown_0203AB5E, TRUE);
RemoveWindow(gUnknown_0203AB5E);
}
@@ -3225,8 +3226,8 @@ void sub_813AF48(void)
struct Task *task = &gTasks[taskId];
DestroyListMenuTask(task->data[14], NULL, NULL);
Free(gUnknown_0203AB64);
- sub_8198070(task->data[13], TRUE);
- FillWindowPixelBuffer(task->data[13], 0);
+ ClearStdWindowAndFrameToTransparent(task->data[13], TRUE);
+ FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0));
ClearWindowTilemap(task->data[13]);
CopyWindowToVram(task->data[13], 2);
RemoveWindow(task->data[13]);
@@ -3378,7 +3379,7 @@ u16 get_unknown_box_id(void)
return gUnknown_0203AB6F;
}
-bool32 sub_813B21C(void)
+bool8 sub_813B21C(void)
{
if (FlagGet(FLAG_SYS_STORAGE_UNKNOWN_FLAG) == FALSE)
{
@@ -3420,40 +3421,59 @@ bool8 sub_813B260(void)
return FALSE;
}
-void sub_813B2E4(void)
+void CreateUnusualWeatherEvent(void)
{
u16 randomValue = Random();
- VarSet(VAR_0x4038, 0);
+ VarSet(VAR_UNUSUAL_WEATHER_STEP_COUNTER, 0);
if (FlagGet(FLAG_DEFEATED_KYOGRE) == TRUE)
{
- VarSet(VAR_0x4037, (randomValue & 7) + 1);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_GROUDON_LOCATIONS_START);
}
else if (FlagGet(FLAG_DEFEATED_GROUDON) == TRUE)
{
- VarSet(VAR_0x4037, (randomValue & 7) + 9);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START);
}
else if ((randomValue & 1) == 0)
{
randomValue = Random();
- VarSet(VAR_0x4037, (randomValue & 7) + 1);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_GROUDON_LOCATIONS_START);
}
else
{
randomValue = Random();
- VarSet(VAR_0x4037, (randomValue & 7) + 9);
- }
-}
-
-bool32 sub_813B374(void)
-{
- static const u8 gUnknown_085B3400[] = { 0x1d, 0x1d, 0x1e, 0x1e, 0x1f, 0x1f, 0x21, 0x21, 0x14, 0x14, 0x28, 0x28, 0x2a, 0x2a, 0x2c, 0x2c };
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START);
+ }
+}
+
+// Saves the map name for the current unusual weather location in gStringVar1, then
+// returns TRUE if the weather is for Kyogre, and FALSE if it's for Groudon.
+bool32 GetUnusualWeatherMapNameAndType(void)
+{
+ static const u8 sUnusualWeatherMapNumbers[] = {
+ MAP_NUM(ROUTE114),
+ MAP_NUM(ROUTE114),
+ MAP_NUM(ROUTE115),
+ MAP_NUM(ROUTE115),
+ MAP_NUM(ROUTE116),
+ MAP_NUM(ROUTE116),
+ MAP_NUM(ROUTE118),
+ MAP_NUM(ROUTE118),
+ MAP_NUM(ROUTE105),
+ MAP_NUM(ROUTE105),
+ MAP_NUM(ROUTE125),
+ MAP_NUM(ROUTE125),
+ MAP_NUM(ROUTE127),
+ MAP_NUM(ROUTE127),
+ MAP_NUM(ROUTE129),
+ MAP_NUM(ROUTE129)
+ };
- u16 var = VarGet(VAR_0x4037);
+ u16 unusualWeather = VarGet(VAR_UNUSUAL_WEATHER_LOCATION);
- GetMapName(gStringVar1, gUnknown_085B3400[var - 1], 0);
+ GetMapName(gStringVar1, sUnusualWeatherMapNumbers[unusualWeather - 1], 0);
- if (var < 9)
+ if (unusualWeather < UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START)
{
return FALSE;
}
@@ -3463,21 +3483,39 @@ bool32 sub_813B374(void)
}
}
-bool8 sub_813B3B0(void)
-{
- static const u8 gUnknown_085B3410[] = { 0x1d, 0x1d, 0x1e, 0x1e, 0x1f, 0x1f, 0x21, 0x21, 0x14, 0x14, 0x28, 0x28, 0x2a, 0x2a, 0x2c, 0x2c };
+bool8 UnusualWeatherHasExpired(void)
+{
+ // Duplicate array.
+ static const u8 sUnusualWeatherMapNumbers_2[] = {
+ MAP_NUM(ROUTE114),
+ MAP_NUM(ROUTE114),
+ MAP_NUM(ROUTE115),
+ MAP_NUM(ROUTE115),
+ MAP_NUM(ROUTE116),
+ MAP_NUM(ROUTE116),
+ MAP_NUM(ROUTE118),
+ MAP_NUM(ROUTE118),
+ MAP_NUM(ROUTE105),
+ MAP_NUM(ROUTE105),
+ MAP_NUM(ROUTE125),
+ MAP_NUM(ROUTE125),
+ MAP_NUM(ROUTE127),
+ MAP_NUM(ROUTE127),
+ MAP_NUM(ROUTE129),
+ MAP_NUM(ROUTE129)
+ };
- u16 var1 = VarGet(VAR_0x4038);
- u16 var2 = VarGet(VAR_0x4037);
+ u16 steps = VarGet(VAR_UNUSUAL_WEATHER_STEP_COUNTER);
+ u16 unusualWeather = VarGet(VAR_UNUSUAL_WEATHER_LOCATION);
- if (!var2)
+ if (unusualWeather == UNUSUAL_WEATHER_NONE)
{
return FALSE;
}
- if (++var1 > 999)
+ if (++steps > 999)
{
- VarSet(VAR_0x4038, 0);
+ VarSet(VAR_UNUSUAL_WEATHER_STEP_COUNTER, 0);
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNDERWATER_MARINE_CAVE))
{
switch (gSaveBlock1Ptr->location.mapNum)
@@ -3487,7 +3525,7 @@ bool8 sub_813B3B0(void)
case MAP_NUM(MARINE_CAVE_END):
case MAP_NUM(TERRA_CAVE_ENTRANCE):
case MAP_NUM(TERRA_CAVE_END):
- VarSet(VAR_0x4039, 1);
+ VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 1);
return FALSE;
default:
break;
@@ -3502,34 +3540,34 @@ bool8 sub_813B3B0(void)
case MAP_NUM(UNDERWATER5):
case MAP_NUM(UNDERWATER6):
case MAP_NUM(UNDERWATER7):
- VarSet(VAR_0x4039, 1);
+ VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 1);
return FALSE;
default:
break;
}
}
- if (gSaveBlock1Ptr->location.mapNum == gUnknown_085B3410[var2 - 1] &&
+ if (gSaveBlock1Ptr->location.mapNum == sUnusualWeatherMapNumbers_2[unusualWeather - 1] &&
gSaveBlock1Ptr->location.mapGroup == 0)
{
return TRUE;
}
else
{
- VarSet(VAR_0x4037, 0);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, UNUSUAL_WEATHER_NONE);
return FALSE;
}
}
else
{
- VarSet(VAR_0x4038, var1);
+ VarSet(VAR_UNUSUAL_WEATHER_STEP_COUNTER, steps);
return FALSE;
}
}
-void sub_813B484(void)
+void Unused_SetWeatherSunny(void)
{
- sub_80AB104(2);
+ SetCurrentAndNextWeather(WEATHER_SUNNY);
}
bool32 sub_813B490(void)
@@ -3576,7 +3614,7 @@ bool32 sub_813B4E0(void)
bool32 sub_813B514(void)
{
- if (!VarGet(VAR_0x403F))
+ if (!VarGet(VAR_ALWAYS_ZERO_0x403F))
{
return FALSE;
}
diff --git a/src/field_weather.c b/src/field_weather.c
index 0db635c60..9913e9a61 100644
--- a/src/field_weather.c
+++ b/src/field_weather.c
@@ -186,11 +186,11 @@ void StartWeather(void)
}
}
-void ChangeWeather(u8 weather)
+void SetNextWeather(u8 weather)
{
if (weather != WEATHER_RAIN_LIGHT && weather != WEATHER_RAIN_MED && weather != WEATHER_RAIN_HEAVY)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
}
if (gWeatherPtr->nextWeather != weather && gWeatherPtr->currWeather == weather)
@@ -203,18 +203,19 @@ void ChangeWeather(u8 weather)
gWeatherPtr->finishStep = 0;
}
-void sub_80AB104(u8 weather)
+void SetCurrentAndNextWeather(u8 weather)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
gWeatherPtr->currWeather = weather;
gWeatherPtr->nextWeather = weather;
}
-void sub_80AB130(u8 weather)
+void SetCurrentAndNextWeatherNoDelay(u8 weather)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
gWeatherPtr->currWeather = weather;
gWeatherPtr->nextWeather = weather;
+ // Overrides the normal delay during screen fading.
gWeatherPtr->readyForInit = TRUE;
}
@@ -1053,7 +1054,7 @@ void SetRainStrengthFromSoundEffect(u16 soundEffect)
}
}
-void PlayRainSoundEffect(void)
+void PlayRainStoppingSoundEffect(void)
{
if (IsSpecialSEPlaying())
{
diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c
index 2ec51a722..6ec83f1a0 100644
--- a/src/field_weather_effect.c
+++ b/src/field_weather_effect.c
@@ -16,8 +16,8 @@
void sub_80AC6B4(struct Sprite *);
// EWRAM
-EWRAM_DATA static u8 gUnknown_02038BC4 = 0;
-EWRAM_DATA static u16 gUnknown_02038BC6 = 0;
+EWRAM_DATA static u8 gCurrentAlternatingWeather = 0;
+EWRAM_DATA static u16 gUnusedWeatherRelated = 0;
// CONST
const u16 gUnknown_0854C290[] = INCBIN_U16("graphics/weather/1.gbapal");
@@ -48,10 +48,10 @@ static const struct OamData gOamData_839A9DC =
.objMode = 1,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 3,
.paletteNum = 0,
@@ -577,10 +577,10 @@ static const struct OamData gOamData_839AA68 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 2,
+ .shape = SPRITE_SHAPE(16x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(16x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 2,
@@ -648,10 +648,10 @@ static const struct OamData gOamData_839AAD4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -704,10 +704,10 @@ static const struct OamData gOamData_839AB2C =
.objMode = 1,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -1517,10 +1517,10 @@ const struct OamData gOamData_839ABB8 =
.objMode = 1,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 1,
.paletteNum = 15,
@@ -1754,10 +1754,10 @@ const struct OamData gOamData_839ABF0 =
.objMode = 1,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -1953,10 +1953,10 @@ const struct OamData gOamData_839AC1C =
.objMode = 1,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -2286,13 +2286,14 @@ void unc_0807DAB4(struct Sprite *sprite)
//------------------------------------------------------------------------------
-static void sub_80AEC94(u32 a0, u32 a1)
+// Unused function.
+static void UnusedSetCurrentAlternatingWeather(u32 a0, u32 a1)
{
- gUnknown_02038BC4 = a0;
- gUnknown_02038BC6 = a1;
+ gCurrentAlternatingWeather = a0;
+ gUnusedWeatherRelated = a1;
}
-static void sub_80AECA8(u8 taskId)
+static void Task_DoAlternatingWeather(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -2301,8 +2302,8 @@ static void sub_80AECA8(u8 taskId)
case 0:
if (data[15]-- <= 0)
{
- ChangeWeather(data[1]);
- gUnknown_02038BC4 = data[1];
+ SetNextWeather(data[1]);
+ gCurrentAlternatingWeather = data[1];
data[15] = 600;
data[0]++;
}
@@ -2310,8 +2311,8 @@ static void sub_80AECA8(u8 taskId)
case 1:
if (data[15]-- <= 0)
{
- ChangeWeather(data[2]);
- gUnknown_02038BC4 = data[2];
+ SetNextWeather(data[2]);
+ gCurrentAlternatingWeather = data[2];
data[15] = 600;
data[0] = 0;
}
@@ -2319,25 +2320,25 @@ static void sub_80AECA8(u8 taskId)
}
}
-static void sub_80AED28(void)
+static void CreateAlternatingWeatherTask(void)
{
- u8 taskId = CreateTask(sub_80AECA8, 0);
+ u8 taskId = CreateTask(Task_DoAlternatingWeather, 0);
s16 *data = gTasks[taskId].data;
data[15] = 600;
- if (gUnknown_02038BC4 == WEATHER_RAIN_HEAVY)
+ if (gCurrentAlternatingWeather == WEATHER_RAIN_HEAVY)
{
data[1] = WEATHER_DROUGHT;
data[2] = WEATHER_RAIN_HEAVY;
}
- else if (gUnknown_02038BC4 == WEATHER_DROUGHT)
+ else if (gCurrentAlternatingWeather == WEATHER_DROUGHT)
{
data[1] = WEATHER_RAIN_HEAVY;
data[2] = WEATHER_DROUGHT;
}
else
{
- gUnknown_02038BC4 = WEATHER_RAIN_HEAVY;
+ gCurrentAlternatingWeather = WEATHER_RAIN_HEAVY;
data[1] = WEATHER_DROUGHT;
data[2] = WEATHER_RAIN_HEAVY;
}
@@ -2368,51 +2369,51 @@ void SetSav1WeatherFromCurrMapHeader(void)
void SetWeather(u32 weather)
{
SetSav1Weather(weather);
- ChangeWeather(GetSav1Weather());
+ SetNextWeather(GetSav1Weather());
}
void SetWeather_Unused(u32 weather)
{
SetSav1Weather(weather);
- sub_80AB104(GetSav1Weather());
+ SetCurrentAndNextWeather(GetSav1Weather());
}
void DoCurrentWeather(void)
{
u8 weather = GetSav1Weather();
- if (weather == WEATHER_15)
+ if (weather == WEATHER_ALTERNATING)
{
- if (!FuncIsActiveTask(sub_80AECA8))
- sub_80AED28();
- weather = gUnknown_02038BC4;
+ if (!FuncIsActiveTask(Task_DoAlternatingWeather))
+ CreateAlternatingWeatherTask();
+ weather = gCurrentAlternatingWeather;
}
else
{
- if (FuncIsActiveTask(sub_80AECA8))
- DestroyTask(FindTaskIdByFunc(sub_80AECA8));
- gUnknown_02038BC4 = WEATHER_RAIN_HEAVY;
+ if (FuncIsActiveTask(Task_DoAlternatingWeather))
+ DestroyTask(FindTaskIdByFunc(Task_DoAlternatingWeather));
+ gCurrentAlternatingWeather = WEATHER_RAIN_HEAVY;
}
- ChangeWeather(weather);
+ SetNextWeather(weather);
}
-void sub_80AEE84(void)
+void ResumePausedWeather(void)
{
u8 weather = GetSav1Weather();
- if (weather == WEATHER_15)
+ if (weather == WEATHER_ALTERNATING)
{
- if (!FuncIsActiveTask(sub_80AECA8))
- sub_80AED28();
- weather = gUnknown_02038BC4;
+ if (!FuncIsActiveTask(Task_DoAlternatingWeather))
+ CreateAlternatingWeatherTask();
+ weather = gCurrentAlternatingWeather;
}
else
{
- if (FuncIsActiveTask(sub_80AECA8))
- DestroyTask(FindTaskIdByFunc(sub_80AECA8));
- gUnknown_02038BC4 = WEATHER_RAIN_HEAVY;
+ if (FuncIsActiveTask(Task_DoAlternatingWeather))
+ DestroyTask(FindTaskIdByFunc(Task_DoAlternatingWeather));
+ gCurrentAlternatingWeather = WEATHER_RAIN_HEAVY;
}
- sub_80AB104(weather);
+ SetCurrentAndNextWeather(weather);
}
static const u8 sWeatherCycleRoute119[] =
@@ -2434,25 +2435,25 @@ static u8 TranslateWeatherNum(u8 weather)
{
switch (weather)
{
- case WEATHER_NONE: return WEATHER_NONE;
- case WEATHER_CLOUDS: return WEATHER_CLOUDS;
- case WEATHER_SUNNY: return WEATHER_SUNNY;
- case WEATHER_RAIN_LIGHT: return WEATHER_RAIN_LIGHT;
- case WEATHER_SNOW: return WEATHER_SNOW;
- case WEATHER_RAIN_MED: return WEATHER_RAIN_MED;
- case WEATHER_FOG_1: return WEATHER_FOG_1;
- case WEATHER_ASH: return WEATHER_ASH;
- case WEATHER_SANDSTORM: return WEATHER_SANDSTORM;
- case WEATHER_FOG_2: return WEATHER_FOG_2;
- case WEATHER_FOG_3: return WEATHER_FOG_3;
- case WEATHER_SHADE: return WEATHER_SHADE;
- case WEATHER_DROUGHT: return WEATHER_DROUGHT;
- case WEATHER_RAIN_HEAVY: return WEATHER_RAIN_HEAVY;
- case WEATHER_BUBBLES: return WEATHER_BUBBLES;
- case WEATHER_15: return WEATHER_15;
+ case WEATHER_NONE: return WEATHER_NONE;
+ case WEATHER_CLOUDS: return WEATHER_CLOUDS;
+ case WEATHER_SUNNY: return WEATHER_SUNNY;
+ case WEATHER_RAIN_LIGHT: return WEATHER_RAIN_LIGHT;
+ case WEATHER_SNOW: return WEATHER_SNOW;
+ case WEATHER_RAIN_MED: return WEATHER_RAIN_MED;
+ case WEATHER_FOG_1: return WEATHER_FOG_1;
+ case WEATHER_ASH: return WEATHER_ASH;
+ case WEATHER_SANDSTORM: return WEATHER_SANDSTORM;
+ case WEATHER_FOG_2: return WEATHER_FOG_2;
+ case WEATHER_FOG_3: return WEATHER_FOG_3;
+ case WEATHER_SHADE: return WEATHER_SHADE;
+ case WEATHER_DROUGHT: return WEATHER_DROUGHT;
+ case WEATHER_RAIN_HEAVY: return WEATHER_RAIN_HEAVY;
+ case WEATHER_BUBBLES: return WEATHER_BUBBLES;
+ case WEATHER_ALTERNATING: return WEATHER_ALTERNATING;
case WEATHER_ROUTE119_CYCLE: return sWeatherCycleRoute119[gSaveBlock1Ptr->weatherCycleStage];
case WEATHER_ROUTE123_CYCLE: return sWeatherCycleRoute123[gSaveBlock1Ptr->weatherCycleStage];
- default: return WEATHER_NONE;
+ default: return WEATHER_NONE;
}
}
diff --git a/src/fieldmap.c b/src/fieldmap.c
index f67f61ede..a96b71c0f 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "battle_pyramid.h"
#include "bg.h"
#include "fieldmap.h"
#include "fldeff.h"
@@ -15,8 +16,6 @@
#include "tv.h"
#include "constants/rgb.h"
-extern void sub_81AA078(u16*, u8);
-
struct ConnectionFlags
{
u8 south:1;
@@ -54,7 +53,7 @@ void InitMap(void)
{
InitMapLayoutData(&gMapHeader);
sub_80E8EE0(gMapHeader.events);
- mapheader_run_script_with_tag_x1();
+ RunOnLoadMapScript();
}
void InitMapFromSavedGame(void)
@@ -63,14 +62,14 @@ void InitMapFromSavedGame(void)
sub_80E9238(0);
sub_80E8EE0(gMapHeader.events);
LoadSavedMapView();
- mapheader_run_script_with_tag_x1();
+ RunOnLoadMapScript();
UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height);
}
-void InitBattlePyramidMap(u8 a0)
+void InitBattlePyramidMap(bool8 setPlayerPosition)
{
CpuFastFill(0x03ff03ff, gBackupMapData, sizeof(gBackupMapData));
- sub_81AA078(gBackupMapData, a0);
+ GenerateBattlePyramidFloorLayout(gBackupMapData, setPlayerPosition);
}
void InitTrainerHillMap(void)
@@ -384,15 +383,15 @@ u8 MapGridGetZCoordAt(int x, int y)
i = (x + 1) & 1;
i += ((y + 1) & 1) * 2;
block = gMapHeader.mapLayout->border[i];
- block |= 0xc00;
+ block |= METATILE_COLLISION_MASK;
}
- if (block == 0x3ff)
+ if (block == METATILE_ID_UNDEFINED)
{
return 0;
}
- return block >> 12;
+ return block >> METATILE_ELEVATION_SHIFT;
}
u8 MapGridIsImpassableAt(int x, int y)
@@ -412,13 +411,13 @@ u8 MapGridIsImpassableAt(int x, int y)
i = (x + 1) & 1;
i += ((y + 1) & 1) * 2;
block = gMapHeader.mapLayout->border[i];
- block |= 0xc00;
+ block |= METATILE_COLLISION_MASK;
}
- if (block == 0x3ff)
+ if (block == METATILE_ID_UNDEFINED)
{
return 1;
}
- return (block & 0xc00) >> 10;
+ return (block & METATILE_COLLISION_MASK) >> METATILE_COLLISION_SHIFT;
}
u32 MapGridGetMetatileIdAt(int x, int y)
@@ -440,18 +439,19 @@ u32 MapGridGetMetatileIdAt(int x, int y)
mapLayout = gMapHeader.mapLayout;
i = (x + 1) & 1;
i += ((y + 1) & 1) * 2;
- block = mapLayout->border[i] | 0xc00;
+ block = mapLayout->border[i] | METATILE_COLLISION_MASK;
}
- if (block == 0x3ff)
+ if (block == METATILE_ID_UNDEFINED)
{
border = gMapHeader.mapLayout->border;
j = (x + 1) & 1;
j += ((y + 1) & 1) * 2;
block2 = gMapHeader.mapLayout->border[j];
- block2 |= 0xc00;
- return block2 & block;
+ // This OR is completely pointless.
+ block2 |= METATILE_COLLISION_MASK;
+ return block2 & METATILE_ID_MASK;
}
- return block & 0x3ff;
+ return block & METATILE_ID_MASK;
}
u32 MapGridGetMetatileBehaviorAt(int x, int y)
@@ -465,7 +465,7 @@ u8 MapGridGetMetatileLayerTypeAt(int x, int y)
{
u16 metatile;
metatile = MapGridGetMetatileIdAt(x, y);
- return (GetBehaviorByMetatileId(metatile) & 0xf000) >> 12;
+ return (GetBehaviorByMetatileId(metatile) & METATILE_ELEVATION_MASK) >> METATILE_ELEVATION_SHIFT;
}
void MapGridSetMetatileIdAt(int x, int y, u16 metatile)
@@ -475,7 +475,7 @@ void MapGridSetMetatileIdAt(int x, int y, u16 metatile)
&& y >= 0 && y < gBackupMapLayout.height)
{
i = x + y * gBackupMapLayout.width;
- gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & 0xf000) | (metatile & 0xfff);
+ gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & METATILE_ELEVATION_MASK) | (metatile & ~METATILE_ELEVATION_MASK);
}
}
@@ -655,7 +655,7 @@ int GetMapBorderIdAt(int x, int y)
i = gBackupMapLayout.width;
i *= y;
block = gBackupMapLayout.map[x + i];
- if (block == 0x3ff)
+ if (block == METATILE_ID_UNDEFINED)
{
goto fail;
}
@@ -665,8 +665,8 @@ int GetMapBorderIdAt(int x, int y)
mapLayout = gMapHeader.mapLayout;
j = (x + 1) & 1;
j += ((y + 1) & 1) * 2;
- block2 = 0xc00 | mapLayout->border[j];
- if (block2 == 0x3ff)
+ block2 = METATILE_COLLISION_MASK | mapLayout->border[j];
+ if (block2 == METATILE_ID_UNDEFINED)
{
goto fail;
}
@@ -776,7 +776,7 @@ bool8 CameraMove(int x, int y)
old_y = gSaveBlock1Ptr->pos.y;
connection = sub_8088950(direction, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y);
sub_80887F8(connection, direction, x, y);
- mliX_load_map(connection->mapGroup, connection->mapNum);
+ LoadMapFromCameraTransition(connection->mapGroup, connection->mapNum);
gCamera.active = TRUE;
gCamera.x = old_x - gSaveBlock1Ptr->pos.x;
gCamera.y = old_y - gSaveBlock1Ptr->pos.y;
@@ -922,9 +922,9 @@ void sub_8088B94(int x, int y, int a2)
if (x >= 0 && x < gBackupMapLayout.width && y >= 0 && y < gBackupMapLayout.height)
{
if (a2 != 0)
- gBackupMapLayout.map[x + gBackupMapLayout.width * y] |= 0xC00;
+ gBackupMapLayout.map[x + gBackupMapLayout.width * y] |= METATILE_COLLISION_MASK;
else
- gBackupMapLayout.map[x + gBackupMapLayout.width * y] &= 0xF3FF;
+ gBackupMapLayout.map[x + gBackupMapLayout.width * y] &= ~METATILE_COLLISION_MASK;
}
}
@@ -938,7 +938,7 @@ static bool8 SkipCopyingMetatileFromSavedMap(u16* mapMetatilePtr, u16 mapWidth,
else
mapMetatilePtr += mapWidth;
- if (sub_80FADE4(*mapMetatilePtr & 0x3FF, yMode) == 1)
+ if (sub_80FADE4(*mapMetatilePtr & METATILE_ID_MASK, yMode) == 1)
return TRUE;
return FALSE;
}
diff --git a/src/fire.c b/src/fire.c
index 5f501a340..d428dc13b 100644
--- a/src/fire.c
+++ b/src/fire.c
@@ -479,7 +479,7 @@ static void sub_8108F08(struct Sprite *sprite)
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[2] = gBattleAnimArgs[3];
- sprite->callback = AnimTranslateLinearSimple;
+ sprite->callback = TranslateSpriteLinearFixedPoint;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -726,7 +726,7 @@ static void AnimFireCross(struct Sprite *sprite)
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
- sprite->callback = TranslateSpriteOverDuration;
+ sprite->callback = TranslateSpriteLinear;
}
static void sub_81093A4(struct Sprite *sprite)
@@ -1280,9 +1280,9 @@ static void sub_8109E2C(u8 taskId)
// arg 1: color code
void AnimTask_BlendBackground(u8 taskId)
{
- struct UnknownAnimStruct2 unk;
- sub_80A6B30(&unk);
- BlendPalette(unk.unk8 << 4, 16, gBattleAnimArgs[0], gBattleAnimArgs[1]); // u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor
+ struct BattleAnimBgData animBg;
+ sub_80A6B30(&animBg);
+ BlendPalette(animBg.paletteId * 16, 16, gBattleAnimArgs[0], gBattleAnimArgs[1]); // u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor
DestroyAnimVisualTask(taskId);
}
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index 348a1f46c..3da1a9217 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "event_obj_lock.h"
#include "event_object_movement.h"
+#include "faraway_island.h"
#include "field_camera.h"
#include "field_effect.h"
#include "field_player_avatar.h"
@@ -20,9 +21,6 @@
#include "constants/field_effects.h"
#include "constants/songs.h"
-extern void ScriptUnfreezeEventObjects(void);
-extern bool8 IsMewPlayingHideAndSeek(void);
-
extern struct MapPosition gPlayerFacingPosition;
extern const u8 Route103_EventScript_290705[];
@@ -133,10 +131,10 @@ static const struct OamData sOamData_CutGrass =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 1,
.priority = 1,
.paletteNum = 1,
diff --git a/src/fldeff_escalator.c b/src/fldeff_escalator.c
index 3d00fb162..7ab2db4db 100644
--- a/src/fldeff_escalator.c
+++ b/src/fldeff_escalator.c
@@ -7,7 +7,7 @@
static EWRAM_DATA u8 sEscalatorAnim_TaskId = 0;
-static void sub_80E12E8(u8 taskId, const s16 *list, u16 c)
+static void sub_80E12E8(u8 taskId, const s16 *list, u16 isImpassableFlag)
{
s16 r5 = gTasks[taskId].data[4] - 1;
s16 r3 = gTasks[taskId].data[5] - 1;
@@ -26,9 +26,9 @@ static void sub_80E12E8(u8 taskId, const s16 *list, u16 c)
if (list[r4] == metatileId)
{
if (r4 != 2)
- MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]);
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[r4 + 1]);
else
- MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]);
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[0]);
}
}
}
@@ -44,9 +44,9 @@ static void sub_80E12E8(u8 taskId, const s16 *list, u16 c)
if (list[2 - r4] == metatileId)
{
if (r4 != 2)
- MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]);
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[1 - r4]);
else
- MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]);
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[2]);
}
}
}
@@ -76,13 +76,13 @@ static void sub_80E1444(u8 taskId)
sub_80E12E8(taskId, gUnknown_08589AC0, 0);
break;
case 2:
- sub_80E12E8(taskId, gUnknown_08589AC6, 0xC00);
+ sub_80E12E8(taskId, gUnknown_08589AC6, METATILE_COLLISION_MASK);
break;
case 3:
sub_80E12E8(taskId, gUnknown_08589ACC, 0);
break;
case 4:
- sub_80E12E8(taskId, gUnknown_08589AD2, 0xC00);
+ sub_80E12E8(taskId, gUnknown_08589AD2, METATILE_COLLISION_MASK);
break;
case 5:
sub_80E12E8(taskId, gUnknown_08589AD8, 0);
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
index f3bd76cbf..c002f700f 100644
--- a/src/fldeff_flash.c
+++ b/src/fldeff_flash.c
@@ -74,11 +74,13 @@ static const u32 gCaveTransitionTiles[] = INCBIN_U32("graphics/misc/cave_transit
// text
bool8 SetUpFieldMove_Flash(void)
{
- if (ShouldDoBrailleFlyEffect())
+ // In Ruby and Sapphire, Registeel's tomb is opened by using Fly. In Emerald,
+ // Flash is used instead.
+ if (ShouldDoBrailleRegisteelEffect())
{
gSpecialVar_Result = GetCursorSelectionMonId();
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
- gPostMenuFieldCallback = sub_8179918;
+ gPostMenuFieldCallback = SetUpPuzzleEffectRegisteel;
return TRUE;
}
else if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH))
diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c
index df4576a7f..5d1920aac 100644
--- a/src/fldeff_misc.c
+++ b/src/fldeff_misc.c
@@ -93,8 +93,8 @@ static const struct OamData gOamData_858E4D8 =
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.bpp = ST_OAM_4BPP,
- .shape = ST_OAM_SQUARE,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 2,
};
@@ -246,8 +246,8 @@ static const struct OamData gOamData_858E658 =
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.bpp = ST_OAM_4BPP,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
.priority = 2,
};
@@ -1126,7 +1126,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x10);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x10);
break;
case 734:
ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEFT_ALIGN, 2);
@@ -1137,7 +1137,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x20);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x20);
break;
case 756:
gSpecialVar_Result = 1;
@@ -1145,7 +1145,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80);
break;
case 757:
gSpecialVar_Result = 2;
@@ -1153,7 +1153,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80);
break;
case 758:
gSpecialVar_Result = 3;
@@ -1161,7 +1161,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80);
break;
}
}
diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c
index 9181b5532..86df8e943 100644
--- a/src/fldeff_rocksmash.c
+++ b/src/fldeff_rocksmash.c
@@ -119,11 +119,13 @@ static void sub_813561C(u8 taskId)
bool8 SetUpFieldMove_RockSmash(void)
{
- if (ShouldDoBrailleStrengthEffect())
+ // In Ruby and Sapphire, Regirock's tomb is opened by using Strength. In Emerald,
+ // it is opened by using Rock Smash.
+ if (ShouldDoBrailleRegirockEffect())
{
gSpecialVar_Result = GetCursorSelectionMonId();
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
- gPostMenuFieldCallback = sub_8179834;
+ gPostMenuFieldCallback = SetUpPuzzleEffectRegirock;
return TRUE;
}
else if (CheckObjectGraphicsInFrontOfPlayer(EVENT_OBJ_GFX_BREAKABLE_ROCK) == TRUE)
diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c
index adec780b3..eca7d045b 100644
--- a/src/fldeff_softboiled.c
+++ b/src/fldeff_softboiled.c
@@ -86,7 +86,7 @@ static void sub_8161724(u8 taskId)
sub_81B0FCC(gUnknown_0203CEC8.unk9, 0);
gUnknown_0203CEC8.unk9 = gUnknown_0203CEC8.unkA;
sub_81B0FCC(gUnknown_0203CEC8.unkA, 1);
- sub_8198070(0x6, FALSE);
+ ClearStdWindowAndFrameToTransparent(0x6, FALSE);
ClearWindowTilemap(0x6);
display_pokemon_menu_message(0);
gTasks[taskId].func = sub_81B1370;
diff --git a/src/flying.c b/src/flying.c
index d3ea3f11b..a157582e9 100644
--- a/src/flying.c
+++ b/src/flying.c
@@ -1,22 +1,42 @@
#include "global.h"
#include "battle_anim.h"
+#include "palette.h"
+#include "trig.h"
+#include "constants/battle_anim.h"
#include "constants/rgb.h"
+#include "random.h"
+
+extern const struct SpriteTemplate gUnknown_085973E8;
+
+void sub_810DE70(struct Sprite *);
+void sub_810DFA8(struct Sprite *);
+void sub_810E044(struct Sprite *);
+void sub_810E13C(struct Sprite *);
+void sub_810E1C8(struct Sprite *);
+void sub_810E314(struct Sprite *);
+void sub_810E520(struct Sprite *);
+void sub_810EB40(struct Sprite *);
+void sub_810EA4C(struct Sprite *);
+void sub_810EAA0(struct Sprite *);
+void sub_810EC34(struct Sprite *);
+void sub_810EC94(struct Sprite *);
+void sub_810ED28(struct Sprite *);
+void sub_810ED70(struct Sprite *);
+void sub_810EDD0(struct Sprite *);
+void sub_810EE14(struct Sprite *);
+void sub_810EEF8(struct Sprite *);
+void sub_810EFA8(struct Sprite *);
+void sub_810F004(struct Sprite *);
+void sub_810F018(struct Sprite *);
+void sub_810F084(struct Sprite *);
+void sub_810F140(struct Sprite *);
+
+static void sub_810DE98(struct Sprite *);
+static void sub_810DF18(u8);
+static void sub_810E028(struct Sprite *);
+static void sub_810E184(struct Sprite *);
+static void sub_810E24C(struct Sprite *);
-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 =
{
@@ -88,7 +108,7 @@ const union AffineAnimCmd gUnknown_085962EC[] =
const union AffineAnimCmd *const gUnknown_08596314[] =
{
- gUnknown_085962EC,
+ gUnknown_085962EC,
};
const union AffineAnimCmd gUnknown_08596318[] =
@@ -326,3 +346,1572 @@ const struct SpriteTemplate gUnknown_08596514 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810F084,
};
+
+
+void sub_810DE70(struct Sprite *sprite)
+{
+ InitSpritePosToAnimTarget(sprite, FALSE);
+ sprite->pos1.y += 20;
+ sprite->data[1] = 191;
+ sprite->callback = sub_810DE98;
+ sprite->callback(sprite);
+}
+
+static void sub_810DE98(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[1], 32);
+ sprite->pos2.y = Cos(sprite->data[1], 8);
+ sprite->data[1] += 5;
+ sprite->data[1] &= 0xFF;
+ if (++sprite->data[0] == 71)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810DED8(u8 taskId)
+{
+ gTasks[taskId].data[0] = gBattleAnimArgs[1];
+ gTasks[taskId].data[1] = gBattleAnimArgs[0];
+ gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_GUST);
+ gTasks[taskId].func = sub_810DF18;
+}
+
+static void sub_810DF18(u8 taskId)
+{
+ u8 data2;
+ u16 temp;
+ int i, base;
+
+ if (gTasks[taskId].data[10]++ == gTasks[taskId].data[1])
+ {
+ gTasks[taskId].data[10] = 0;
+ data2 = gTasks[taskId].data[2];
+ temp = gPlttBufferFaded[16 * data2 + 0x108];
+ i = 7;
+ base = data2 * 16;
+
+ do
+ {
+ gPlttBufferFaded[base + 0x101 + i] = gPlttBufferFaded[base + 0x100 + i];
+ i--;
+ } while (i > 0);
+
+ gPlttBufferFaded[base + 0x101] = temp;
+ }
+
+ if (--gTasks[taskId].data[0] == 0)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_810DFA8(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
+ StoreSpriteCallbackInData6(sprite, sub_810E028);
+}
+
+static void sub_810E028(struct Sprite *sprite)
+{
+ if (AnimTranslateLinear(sprite))
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810E044(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+
+ if (IsContest())
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = gBattleAnimArgs[4];
+
+ if (gBattleAnimArgs[6] == 0)
+ {
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ }
+ else
+ {
+ SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]);
+ }
+
+ sprite->data[2] = sprite->data[2] + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->data[4] + gBattleAnimArgs[3];
+ sprite->callback = StartAnimLinearTranslation;
+
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ SeekSpriteAnim(sprite, gBattleAnimArgs[5]);
+}
+
+void sub_810E13C(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, TRUE);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->callback = sub_810E184;
+ gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = 1;
+}
+
+static void sub_810E184(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ sprite->data[0]--;
+ }
+ else
+ {
+ sprite->data[2] += sprite->data[1];
+ sprite->pos2.y -= (sprite->data[2] >> 8);
+ }
+
+ if (sprite->pos1.y + sprite->pos2.y < -32)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810E1C8(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x = 272;
+ sprite->pos1.y = -32;
+ StartSpriteAffineAnim(sprite, 1);
+ }
+ else
+ {
+ sprite->pos1.x = -32;
+ sprite->pos1.y = -32;
+ }
+
+ sprite->data[0] = gBattleAnimArgs[0];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = sub_810E24C;
+}
+
+static void sub_810E24C(struct Sprite *sprite)
+{
+ sprite->data[0] = 1;
+ AnimTranslateLinear(sprite);
+ if (((u16)sprite->data[3] >> 8) > 200)
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos2.x = 0;
+ sprite->data[3] &= 0xFF;
+ }
+
+ if (sprite->pos1.x + sprite->pos2.x < -32
+ || sprite->pos1.x + sprite->pos2.x > 272
+ || sprite->pos1.y + sprite->pos2.y > 160)
+ {
+ gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = 0;
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_810E2C8(struct Sprite *sprite)
+{
+ if (sprite->data[0]-- <= 0)
+ {
+ if (sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)
+ {
+ FreeOamMatrix(sprite->oam.matrixNum);
+ sprite->oam.affineMode = 0;
+ }
+
+ DestroySprite(sprite);
+ gAnimVisualTaskCount--;
+ }
+}
+
+struct FeatherDanceData
+{
+ u8 unk0_0a:1;
+ u8 unk0_0b:1;
+ u8 unk0_0c:1;
+ u8 unk0_0d:1;
+ u8 unk0_1:4;
+ u8 unk1;
+ u16 unk2;
+ s16 unk4;
+ u16 unk6;
+ u16 unk8;
+ u16 unkA;
+ u8 unkC[2];
+ u16 unkE_0:1;
+ u16 unkE_1:15;
+};
+
+void sub_810E314(struct Sprite *sprite)
+{
+ u8 battler, matrixNum, sinIndex;
+ s16 spriteCoord, sinVal;
+
+ struct FeatherDanceData *data = (struct FeatherDanceData *)sprite->data;
+
+ if (gBattleAnimArgs[7] & 0x100)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
+
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0];
+ spriteCoord = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_WIDTH);
+ sprite->pos1.y = spriteCoord + gBattleAnimArgs[1];
+
+ data->unk8 = sprite->pos1.y << 8;
+ data->unkE_1 = spriteCoord + gBattleAnimArgs[6];
+ data->unk0_0c = 1;
+ data->unk2 = gBattleAnimArgs[2] & 0xFF;
+ data->unkA = (gBattleAnimArgs[2] >> 8) & 0xFF;
+ data->unk4 = gBattleAnimArgs[3];
+ data->unk6 = gBattleAnimArgs[4];
+ *(u16*)(data->unkC) = gBattleAnimArgs[5];
+
+ if (data->unk2 >= 64 && data->unk2 <= 191)
+ {
+ if (!IsContest())
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1;
+ else
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler);
+
+ data->unkE_0 = 0;
+
+ if (!(data->unk4 & 0x8000))
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+
+ sprite->animBeginning = 1;
+ sprite->animEnded = 0;
+ }
+ }
+ else
+ {
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler);
+ data->unkE_0 = 1;
+
+ if (data->unk4 & 0x8000)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+
+ sprite->animBeginning = 1;
+ sprite->animEnded = 0;
+ }
+ }
+
+ data->unk0_1 = data->unk2 >> 6;
+ sprite->pos2.x = (gSineTable[data->unk2] * data->unkC[0]) >> 8;
+ matrixNum = sprite->oam.matrixNum;
+
+ sinIndex = (-sprite->pos2.x >> 1) + data->unkA;
+ sinVal = gSineTable[sinIndex];
+
+ gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
+ // The comparison below is completely pointless. 'sprite' is sure to be a valid pointer and
+ // both the 'if' and 'else' parts are exactly the same.
+ // The only reason for this is making sure the compiler generates the exact ASM.
+ if (sprite)
+ {
+ gOamMatrices[matrixNum].b = sinVal;
+ gOamMatrices[matrixNum].c = -sinVal;
+ }
+ else
+ {
+ gOamMatrices[matrixNum].b = sinVal;
+ gOamMatrices[matrixNum].c = -sinVal;
+ }
+
+ sprite->callback = sub_810E520;
+}
+
+#ifdef NONMATCHING
+/*
+Things I can't get to match:
+1. data->unk0_1 bitfield behaviour. The way bits are read is different.
+2. sprite->oam.priority--; sprite->oam.priority++; Nonmatching version tail-merges these, original does not.
+3. sprite->pos2.x = (gSineTable[data->unk2] * var) >> 8; data->unk2 is very weirdly read at seemingly random moments inside the switch.
+4. sinVal r6/r7 mismatch.
+*/
+void sub_810E520(struct Sprite *sprite)
+{
+ u8 matrixNum, sinIndex, var;
+ s16 sinVal = 0;
+ struct FeatherDanceData *data = (struct FeatherDanceData *)sprite->data;
+
+ if (data->unk0_0a)
+ {
+ if (data->unk1-- % 256 == 0)
+ {
+ data->unk0_0a = 0;
+ data->unk1 = 0;
+ }
+ }
+ else
+ {
+ switch (data->unk2 >> 6)
+ {
+ case 0:
+ if (data->unk0_1 == 1)
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_1 == 3)
+ {
+ data->unk0_0b ^= 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = 1;
+ sprite->animEnded = 0;
+ if (data->unk0_0c)
+ {
+ if (!IsContest())
+ {
+ if (!data->unkE_0)
+ sprite->oam.priority--;
+ else
+ sprite->oam.priority++;
+ }
+ else
+ {
+ if (!data->unkE_0)
+ sprite->subpriority -= 12;
+ else
+ sprite->subpriority += 12;
+ }
+ data->unkE_0 ^= 1;
+ }
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 0;
+ break;
+ case 1:
+ if (data->unk0_1 == 0)
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_1 == 2)
+ {
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = 1;
+ sprite->animEnded = 0;
+ if (data->unk0_0c)
+ {
+ if (!IsContest())
+ {
+ if (!data->unkE_0)
+ sprite->oam.priority--;
+ else
+ sprite->oam.priority++;
+ }
+ else
+ {
+ if (!data->unkE_0)
+ sprite->subpriority -= 12;
+ else
+ sprite->subpriority += 12;
+ }
+ data->unkE_0 ^= 1;
+ }
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 1;
+ break;
+ case 2:
+ if (data->unk0_1 == 0)
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_1 == 2)
+ {
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = 1;
+ sprite->animEnded = 0;
+ if (data->unk0_0c)
+ {
+ if (!IsContest())
+ {
+ if (!data->unkE_0)
+ sprite->oam.priority--;
+ else
+ sprite->oam.priority++;
+ }
+ else
+ {
+ if (!data->unkE_0)
+ sprite->subpriority -= 12;
+ else
+ sprite->subpriority += 12;
+ }
+ data->unkE_0 ^= 1;
+ }
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 2;
+ break;
+ case 3:
+ if (data->unk0_1 == 2)
+ {
+ data->unk0_0d = 1;
+ }
+ else if (data->unk0_1 == 0)
+ {
+ data->unk0_0b ^= 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = 1;
+ sprite->animEnded = 0;
+ if (data->unk0_0c)
+ {
+ if (!IsContest())
+ {
+ if (!data->unkE_0)
+ sprite->oam.priority--;
+ else
+ sprite->oam.priority++;
+ }
+ else
+ {
+ if (!data->unkE_0)
+ sprite->subpriority -= 12;
+ else
+ sprite->subpriority += 12;
+ }
+ data->unkE_0 ^= 1;
+ }
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 3;
+ break;
+ }
+
+ var = data->unkC[data->unk0_0b];
+ sprite->pos2.x = (gSineTable[data->unk2] * var) >> 8;
+ matrixNum = sprite->oam.matrixNum;
+
+ sinIndex = (-sprite->pos2.x >> 1) + data->unkA;
+ sinVal = gSineTable[sinIndex];
+
+ gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
+ gOamMatrices[matrixNum].b = sinVal;
+ gOamMatrices[matrixNum].c = -sinVal;
+
+ data->unk8 += data->unk6;
+ sprite->pos1.y = data->unk8 >> 8;
+ if (data->unk4 & 0x8000)
+ data->unk2 = (data->unk2 - (data->unk4 & 0x7FFF)) & 0xFF;
+ else
+ data->unk2 = (data->unk2 + (data->unk4 & 0x7FFF)) & 0xFF;
+
+ if (sprite->pos1.y + sprite->pos2.y > data->unkE_1)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_810E2C8;
+ }
+ }
+}
+#else
+NAKED
+void sub_810E520(struct Sprite *sprite)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ adds r5, r0, 0\n\
+ movs r6, 0\n\
+ adds r4, r5, 0\n\
+ adds r4, 0x2E\n\
+ ldrb r2, [r4]\n\
+ movs r7, 0x1\n\
+ movs r0, 0x1\n\
+ mov r9, r0\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0810E55A\n\
+ ldrb r0, [r4, 0x1]\n\
+ adds r1, r0, 0\n\
+ adds r1, 0xFF\n\
+ strb r1, [r4, 0x1]\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0810E54E\n\
+ b _0810EA36\n\
+_0810E54E:\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ strb r0, [r4]\n\
+ strb r6, [r4, 0x1]\n\
+ b _0810EA36\n\
+_0810E55A:\n\
+ ldrh r0, [r4, 0x2]\n\
+ lsrs r1, r0, 6\n\
+ mov r12, r0\n\
+ cmp r1, 0x1\n\
+ bne _0810E566\n\
+ b _0810E68A\n\
+_0810E566:\n\
+ cmp r1, 0x1\n\
+ bgt _0810E570\n\
+ cmp r1, 0\n\
+ beq _0810E57E\n\
+ b _0810E97C\n\
+_0810E570:\n\
+ cmp r1, 0x2\n\
+ bne _0810E576\n\
+ b _0810E77E\n\
+_0810E576:\n\
+ cmp r1, 0x3\n\
+ bne _0810E57C\n\
+ b _0810E872\n\
+_0810E57C:\n\
+ b _0810E97C\n\
+_0810E57E:\n\
+ lsls r1, r2, 24\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0x1\n\
+ bne _0810E592\n\
+ movs r0, 0x8\n\
+ orrs r0, r2\n\
+ orrs r0, r7\n\
+ strb r0, [r4]\n\
+ strb r6, [r4, 0x1]\n\
+ b _0810E680\n\
+_0810E592:\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0x3\n\
+ bne _0810E5B4\n\
+ lsls r0, r2, 30\n\
+ lsrs r0, 31\n\
+ movs r1, 0x1\n\
+ eors r0, r1\n\
+ ands r0, r7\n\
+ lsls r0, 1\n\
+ movs r1, 0x3\n\
+ negs r1, r1\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ orrs r1, r7\n\
+ strb r1, [r4]\n\
+ strb r6, [r4, 0x1]\n\
+ b _0810E680\n\
+_0810E5B4:\n\
+ movs r0, 0x8\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0810E680\n\
+ adds r3, r5, 0\n\
+ adds r3, 0x3F\n\
+ ldrb r2, [r3]\n\
+ lsls r1, r2, 31\n\
+ lsrs r1, 31\n\
+ movs r6, 0x1\n\
+ eors r1, r6\n\
+ ands r1, r7\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ mov r8, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ lsls r0, 31\n\
+ lsrs r0, 31\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x2A\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ movs r1, 0x11\n\
+ negs r1, r1\n\
+ ands r0, r1\n\
+ strb r0, [r3]\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0810E672\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0810E642\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E628\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ subs r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E660\n\
+_0810E628:\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ adds r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E660\n\
+_0810E642:\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E656\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0xC\n\
+ b _0810E65E\n\
+_0810E656:\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0xC\n\
+_0810E65E:\n\
+ strb r0, [r1]\n\
+_0810E660:\n\
+ ldrb r2, [r4, 0xE]\n\
+ lsls r0, r2, 31\n\
+ lsrs r0, 31\n\
+ eors r0, r6\n\
+ ands r0, r7\n\
+ mov r1, r8\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ strb r1, [r4, 0xE]\n\
+_0810E672:\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x9\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r4]\n\
+ ldrh r1, [r4, 0x2]\n\
+ mov r12, r1\n\
+_0810E680:\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ strb r0, [r4]\n\
+ b _0810E97C\n\
+_0810E68A:\n\
+ lsls r1, r2, 24\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0\n\
+ bne _0810E698\n\
+ movs r0, 0x8\n\
+ orrs r0, r2\n\
+ b _0810E6A0\n\
+_0810E698:\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0x2\n\
+ bne _0810E6A8\n\
+ adds r0, r2, 0\n\
+_0810E6A0:\n\
+ orrs r0, r7\n\
+ strb r0, [r4]\n\
+ strb r6, [r4, 0x1]\n\
+ b _0810E774\n\
+_0810E6A8:\n\
+ movs r0, 0x8\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0810E774\n\
+ adds r3, r5, 0\n\
+ adds r3, 0x3F\n\
+ ldrb r2, [r3]\n\
+ lsls r1, r2, 31\n\
+ lsrs r1, 31\n\
+ movs r6, 0x1\n\
+ eors r1, r6\n\
+ ands r1, r7\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ mov r8, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ lsls r0, 31\n\
+ lsrs r0, 31\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x2A\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ movs r1, 0x11\n\
+ negs r1, r1\n\
+ ands r0, r1\n\
+ strb r0, [r3]\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0810E766\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0810E736\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E71C\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ subs r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E754\n\
+_0810E71C:\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ adds r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E754\n\
+_0810E736:\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E74A\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0xC\n\
+ b _0810E752\n\
+_0810E74A:\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0xC\n\
+_0810E752:\n\
+ strb r0, [r1]\n\
+_0810E754:\n\
+ ldrb r2, [r4, 0xE]\n\
+ lsls r0, r2, 31\n\
+ lsrs r0, 31\n\
+ eors r0, r6\n\
+ ands r0, r7\n\
+ mov r1, r8\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ strb r1, [r4, 0xE]\n\
+_0810E766:\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x9\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r4]\n\
+ ldrh r1, [r4, 0x2]\n\
+ mov r12, r1\n\
+_0810E774:\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0xF\n\
+ ands r1, r0\n\
+ movs r0, 0x10\n\
+ b _0810E978\n\
+_0810E77E:\n\
+ lsls r1, r2, 24\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0x3\n\
+ bne _0810E78C\n\
+ movs r0, 0x8\n\
+ orrs r0, r2\n\
+ b _0810E794\n\
+_0810E78C:\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0x1\n\
+ bne _0810E79C\n\
+ adds r0, r2, 0\n\
+_0810E794:\n\
+ orrs r0, r7\n\
+ strb r0, [r4]\n\
+ strb r6, [r4, 0x1]\n\
+ b _0810E868\n\
+_0810E79C:\n\
+ movs r0, 0x8\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0810E868\n\
+ adds r3, r5, 0\n\
+ adds r3, 0x3F\n\
+ ldrb r2, [r3]\n\
+ lsls r1, r2, 31\n\
+ lsrs r1, 31\n\
+ movs r6, 0x1\n\
+ eors r1, r6\n\
+ ands r1, r7\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ mov r8, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ lsls r0, 31\n\
+ lsrs r0, 31\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x2A\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ movs r1, 0x11\n\
+ negs r1, r1\n\
+ ands r0, r1\n\
+ strb r0, [r3]\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0810E85A\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0810E82A\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E810\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ subs r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E848\n\
+_0810E810:\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ adds r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E848\n\
+_0810E82A:\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E83E\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0xC\n\
+ b _0810E846\n\
+_0810E83E:\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0xC\n\
+_0810E846:\n\
+ strb r0, [r1]\n\
+_0810E848:\n\
+ ldrb r2, [r4, 0xE]\n\
+ lsls r0, r2, 31\n\
+ lsrs r0, 31\n\
+ eors r0, r6\n\
+ ands r0, r7\n\
+ mov r1, r8\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ strb r1, [r4, 0xE]\n\
+_0810E85A:\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x9\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r4]\n\
+ ldrh r1, [r4, 0x2]\n\
+ mov r12, r1\n\
+_0810E868:\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0xF\n\
+ ands r1, r0\n\
+ movs r0, 0x20\n\
+ b _0810E978\n\
+_0810E872:\n\
+ lsls r1, r2, 24\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0x2\n\
+ bne _0810E882\n\
+ movs r0, 0x8\n\
+ orrs r0, r2\n\
+ strb r0, [r4]\n\
+ b _0810E970\n\
+_0810E882:\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0\n\
+ bne _0810E8A4\n\
+ lsls r0, r2, 30\n\
+ lsrs r0, 31\n\
+ movs r1, 0x1\n\
+ eors r0, r1\n\
+ ands r0, r7\n\
+ lsls r0, 1\n\
+ movs r1, 0x3\n\
+ negs r1, r1\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ orrs r1, r7\n\
+ strb r1, [r4]\n\
+ strb r6, [r4, 0x1]\n\
+ b _0810E970\n\
+_0810E8A4:\n\
+ movs r0, 0x8\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0810E970\n\
+ adds r3, r5, 0\n\
+ adds r3, 0x3F\n\
+ ldrb r2, [r3]\n\
+ lsls r1, r2, 31\n\
+ lsrs r1, 31\n\
+ movs r6, 0x1\n\
+ eors r1, r6\n\
+ ands r1, r7\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ mov r8, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ lsls r0, 31\n\
+ lsrs r0, 31\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x2A\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ movs r1, 0x11\n\
+ negs r1, r1\n\
+ ands r0, r1\n\
+ strb r0, [r3]\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0810E962\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0810E932\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E918\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ subs r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E950\n\
+_0810E918:\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ adds r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E950\n\
+_0810E932:\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E946\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0xC\n\
+ b _0810E94E\n\
+_0810E946:\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0xC\n\
+_0810E94E:\n\
+ strb r0, [r1]\n\
+_0810E950:\n\
+ ldrb r2, [r4, 0xE]\n\
+ lsls r0, r2, 31\n\
+ lsrs r0, 31\n\
+ eors r0, r6\n\
+ ands r0, r7\n\
+ mov r1, r8\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ strb r1, [r4, 0xE]\n\
+_0810E962:\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x9\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r4]\n\
+ ldrh r1, [r4, 0x2]\n\
+ mov r12, r1\n\
+_0810E970:\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0xF\n\
+ ands r1, r0\n\
+ movs r0, 0x30\n\
+_0810E978:\n\
+ orrs r1, r0\n\
+ strb r1, [r4]\n\
+_0810E97C:\n\
+ ldrb r1, [r4]\n\
+ lsls r1, 30\n\
+ lsrs r1, 31\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ ldr r3, =gSineTable\n\
+ mov r2, r12\n\
+ lsls r0, r2, 1\n\
+ adds r0, r3\n\
+ movs r2, 0\n\
+ ldrsh r0, [r0, r2]\n\
+ muls r0, r1\n\
+ asrs r0, 8\n\
+ strh r0, [r5, 0x24]\n\
+ ldrb r2, [r5, 0x3]\n\
+ lsls r2, 26\n\
+ lsrs r2, 27\n\
+ movs r1, 0x24\n\
+ ldrsh r0, [r5, r1]\n\
+ negs r0, r0\n\
+ asrs r0, 1\n\
+ ldrb r1, [r4, 0xA]\n\
+ adds r0, r1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r1, r0, 1\n\
+ adds r1, r3\n\
+ ldrh r6, [r1]\n\
+ ldr r1, =gOamMatrices\n\
+ lsls r2, 3\n\
+ adds r2, r1\n\
+ adds r0, 0x40\n\
+ lsls r0, 1\n\
+ adds r0, r3\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r2, 0x6]\n\
+ strh r0, [r2]\n\
+ strh r6, [r2, 0x2]\n\
+ lsls r0, r6, 16\n\
+ asrs r0, 16\n\
+ negs r0, r0\n\
+ strh r0, [r2, 0x4]\n\
+ ldrh r0, [r4, 0x6]\n\
+ ldrh r2, [r4, 0x8]\n\
+ adds r0, r2\n\
+ strh r0, [r4, 0x8]\n\
+ lsls r0, 16\n\
+ lsrs r0, 24\n\
+ strh r0, [r5, 0x22]\n\
+ movs r1, 0x4\n\
+ ldrsh r0, [r4, r1]\n\
+ movs r1, 0x80\n\
+ lsls r1, 8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0810EA0C\n\
+ ldrh r0, [r4, 0x4]\n\
+ subs r1, 0x1\n\
+ ands r1, r0\n\
+ ldrh r0, [r4, 0x2]\n\
+ subs r0, r1\n\
+ movs r1, 0xFF\n\
+ ands r0, r1\n\
+ strh r0, [r4, 0x2]\n\
+ b _0810EA1C\n\
+ .pool\n\
+_0810EA0C:\n\
+ ldrh r0, [r4, 0x4]\n\
+ ldr r1, =0x00007fff\n\
+ ands r1, r0\n\
+ ldrh r2, [r4, 0x2]\n\
+ adds r1, r2\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r4, 0x2]\n\
+_0810EA1C:\n\
+ movs r0, 0x22\n\
+ ldrsh r1, [r5, r0]\n\
+ movs r2, 0x26\n\
+ ldrsh r0, [r5, r2]\n\
+ adds r1, r0\n\
+ ldrh r0, [r4, 0xE]\n\
+ lsrs r0, 1\n\
+ cmp r1, r0\n\
+ blt _0810EA36\n\
+ movs r0, 0\n\
+ strh r0, [r5, 0x2E]\n\
+ ldr r0, =sub_810E2C8\n\
+ str r0, [r5, 0x1C]\n\
+_0810EA36:\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ ");
+}
+#endif
+
+void sub_810EA4C(struct Sprite *sprite)
+{
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->callback = TranslateAnimSpriteToTargetMonLocation;
+}
+
+void sub_810EAA0(struct Sprite * sprite)
+{
+ u16 arg;
+ u8 mult;
+
+ if (!gBattleAnimArgs[2])
+ InitSpritePosToAnimAttacker(sprite, 0);
+ else
+ InitSpritePosToAnimTarget(sprite, FALSE);
+
+ if ((!gBattleAnimArgs[2] && !GetBattlerSide(gBattleAnimAttacker))
+ || (gBattleAnimArgs[2] == 1 && !GetBattlerSide(gBattleAnimTarget)))
+ {
+ sprite->pos1.x += 8;
+ }
+
+ SeekSpriteAnim(sprite, gBattleAnimArgs[4]);
+ sprite->pos1.x -= 32;
+ sprite->data[1] = 0x0ccc;
+
+ arg = gBattleAnimArgs[4];
+ mult = 12;
+ sprite->pos2.x += mult * arg;
+ sprite->data[0] = arg;
+ sprite->data[7] = gBattleAnimArgs[3];
+ sprite->callback = sub_810EB40;
+}
+
+void sub_810EB40(struct Sprite *sprite)
+{
+ sprite->pos2.x += sprite->data[1] >> 8;
+
+ if (++sprite->data[0] == 6)
+ {
+ sprite->data[0] = 0;
+ sprite->pos2.x = 0;
+ StartSpriteAnim(sprite, 0);
+ }
+
+ if (--sprite->data[7] == -1)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810EB88(u8 task)
+{
+ if (!(gTasks[task].data[0] % 32))
+ {
+ gAnimVisualTaskCount++;
+
+ gBattleAnimArgs[0] = Sin(gTasks[task].data[0], -13);
+ gBattleAnimArgs[1] = Cos(gTasks[task].data[0], -13);
+ gBattleAnimArgs[2] = 1;
+ gBattleAnimArgs[3] = 3;
+
+ CreateSpriteAndAnimate(&gUnknown_085973E8,
+ GetBattlerSpriteCoord(gBattleAnimTarget, 2),
+ GetBattlerSpriteCoord(gBattleAnimTarget, 3),
+ 3);
+ }
+
+ gTasks[task].data[0] += 8;
+
+ if (gTasks[task].data[0] > 255)
+ DestroyAnimVisualTask(task);
+}
+
+void sub_810EC34(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ InitSpritePosToAnimAttacker(sprite, 1);
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = 1;
+ ++sprite->data[0];
+ break;
+ case 1:
+ if (sprite->affineAnimEnded)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_810EC94(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->pos2.y = -sprite->pos1.y - 32;
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->pos2.y += 10;
+ if (sprite->pos2.y >= 0)
+ ++sprite->data[0];
+ break;
+ case 2:
+ sprite->pos2.y -= 10;
+ if (sprite->pos1.y + sprite->pos2.y < -32)
+ {
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = 0;
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_810ED28(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->callback = sub_810ED70;
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = 1;
+}
+
+void sub_810ED70(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ sprite->data[0]--;
+ }
+ else if (sprite->pos1.y + sprite->pos2.y > -32)
+ {
+ sprite->data[2] += sprite->data[1];
+ sprite->pos2.y -= (sprite->data[2] >> 8);
+ }
+ else
+ {
+ sprite->invisible = 1;
+ if (sprite->data[3]++ > 20)
+ sprite->callback = sub_810EDD0;
+ }
+}
+
+void sub_810EDD0(struct Sprite *sprite)
+{
+ sprite->pos2.y += sprite->data[2] >> 8;
+
+ if (sprite->pos1.y + sprite->pos2.y > -32)
+ sprite->invisible = 0;
+
+ if (sprite->pos2.y > 0)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810EE14(struct Sprite *sprite)
+{
+ u32 matrixNum;
+ int t1, t2;
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (!gBattleAnimArgs[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->data[1] = 512;
+
+ TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0);
+ sprite->data[0]++;
+ break;
+ case 1:
+ if (sprite->data[2] <= 11)
+ sprite->data[1] -= 40;
+ else
+ sprite->data[1] += 40;
+
+ sprite->data[2]++;
+
+ TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0);
+
+ matrixNum = sprite->oam.matrixNum;
+
+ t1 = 15616;
+ t2 = t1 / gOamMatrices[matrixNum].d + 1;
+
+ if (t2 > 128)
+ t2 = 128;
+
+ t2 = (64 - t2) / 2;
+ sprite->pos2.y = t2;
+
+ if (sprite->data[2] == 24)
+ {
+ sub_80A749C(sprite);
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_810EEF8(struct Sprite *sprite)
+{
+ int v1 = 0x1ff & Random2();
+ int v2 = 0x7f & Random2();
+
+ if (v1 % 2)
+ sprite->data[0] = 736 + v1;
+ else
+ sprite->data[0] = 736 - v1;
+
+ if (v2 % 2)
+ sprite->data[1] = 896 + v2;
+ else
+ sprite->data[1] = 896 - v2;
+
+ sprite->data[2] = gBattleAnimArgs[0];
+
+ if (sprite->data[2])
+ sprite->oam.matrixNum = 8;
+
+ if (gBattleAnimArgs[1] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32;
+ }
+
+ sprite->callback = sub_810EFA8;
+}
+
+void sub_810EFA8(struct Sprite *sprite)
+{
+ if (sprite->data[2] == 0)
+ {
+ sprite->pos2.x += sprite->data[0] >> 8;
+ sprite->pos2.y -= sprite->data[1] >> 8;
+ }
+ else
+ {
+ sprite->pos2.x -= sprite->data[0] >> 8;
+ sprite->pos2.y -= sprite->data[1] >> 8;
+ }
+
+ sprite->data[0] = sprite->data[0];
+ sprite->data[1] -= 32;
+
+ if (sprite->data[0] < 0)
+ sprite->data[0] = 0;
+
+ if (++sprite->data[3] == 31)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810F004(struct Sprite *sprite)
+{
+ sprite->data[6] = 0;
+ sprite->data[7] = 64;
+ sprite->callback = sub_810F018;
+}
+
+void sub_810F018(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[1] > 8)
+ {
+ sprite->data[1] = 0;
+ sprite->invisible ^= 1;
+ if (++sprite->data[2] > 5 && sprite->invisible)
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_810F084(struct Sprite *sprite)
+{
+ u16 rotation;
+ s16 posx = sprite->pos1.x;
+ s16 posy = sprite->pos1.y;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+
+ sprite->data[6] = ((posx - sprite->pos1.x) << 4) / 12;
+ sprite->data[7] = ((posy - sprite->pos1.y) << 4) / 12;
+
+ rotation = ArcTan2Neg(posx - sprite->pos1.x, posy - sprite->pos1.y);
+ rotation += 49152;
+
+ TrySetSpriteRotScale(sprite, 1, 0x100, 0x100, rotation);
+
+ sprite->callback = sub_810F140;
+}
+
+void sub_810F140(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+
+ if (sprite->pos1.x > 285 || sprite->pos1.x < -45
+ || sprite->pos1.y > 157 || sprite->pos1.y < -45)
+ DestroySpriteAndMatrix(sprite);
+}
+
+void unref_sub_810F184(u8 taskId)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+ gSprites[spriteId].invisible = 1;
+ }
+ else
+ {
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+ gSprites[spriteId].invisible = 0;
+ }
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/frontier_pass.c b/src/frontier_pass.c
index 0db546c4d..fff93c3c7 100644
--- a/src/frontier_pass.c
+++ b/src/frontier_pass.c
@@ -1090,7 +1090,7 @@ static void ShowAndPrintWindows(void)
for (i = 0; i < WINDOW_COUNT; i++)
{
PutWindowTilemap(i);
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
}
x = GetStringCenterAlignXOffset(1, gText_SymbolsEarned, 96);
@@ -1116,7 +1116,7 @@ static void ShowAndPrintWindows(void)
static void PrintAreaDescription(u8 cursorArea)
{
- FillWindowPixelBuffer(WINDOW_DESCRIPTION, 0);
+ FillWindowPixelBuffer(WINDOW_DESCRIPTION, PIXEL_FILL(0));
if (cursorArea == CURSOR_AREA_RECORD && !sPassData->hasBattleRecord)
AddTextPrinterParameterized3(WINDOW_DESCRIPTION, 1, 2, 0, sTextColors[1], 0, sPassAreaDescriptions[0]);
else if (cursorArea != CURSOR_AREA_NOTHING)
@@ -1656,7 +1656,7 @@ static void PrintOnFrontierMap(void)
for (i = 0; i < MAP_WINDOW_COUNT; i++)
{
PutWindowTilemap(i);
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
}
for (i = 0; i < NUM_FRONTIER_FACILITIES; i++)
@@ -1698,7 +1698,7 @@ static void HandleFrontierMapCursorMove(u8 direction)
StartSpriteAnim(sMapData->mapIndicatorSprite, sMapLandmarks[sMapData->cursorPos].animNum);
sMapData->mapIndicatorSprite->pos1.x = sMapLandmarks[sMapData->cursorPos].x;
sMapData->mapIndicatorSprite->pos1.y = sMapLandmarks[sMapData->cursorPos].y;
- FillWindowPixelBuffer(MAP_WINDOW_DESCRIPTION, 0);
+ FillWindowPixelBuffer(MAP_WINDOW_DESCRIPTION, PIXEL_FILL(0));
AddTextPrinterParameterized3(MAP_WINDOW_DESCRIPTION, 1, 4, 0, sTextColors[0], 0, sMapLandmarks[sMapData->cursorPos].description);
for (i = 0; i < 3; i++)
diff --git a/src/frontier_util.c b/src/frontier_util.c
index 742b73858..bce7b926f 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -35,8 +35,7 @@
#include "constants/moves.h"
#include "constants/items.h"
#include "constants/event_objects.h"
-
-extern u8 gSelectedOrderFromParty[];
+#include "party_menu.h"
struct FrontierBrainMon
{
@@ -48,8 +47,6 @@ struct FrontierBrainMon
u16 moves[4];
};
-extern void sub_81B8558(void);
-
// This file's functions.
static void sub_81A17A0(void);
static void sub_81A1830(void);
@@ -1044,8 +1041,8 @@ static void TowerPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x
static void ShowTowerResultsWindow(u8 battleMode)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
if (battleMode == FRONTIER_MODE_SINGLES)
StringExpandPlaceholders(gStringVar4, gText_SingleBattleRoomResults);
else if (battleMode == FRONTIER_MODE_DOUBLES)
@@ -1115,8 +1112,8 @@ static void DomePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2
static void ShowDomeResultsWindow(u8 battleMode)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
if (battleMode == FRONTIER_MODE_SINGLES)
StringExpandPlaceholders(gStringVar4, gText_SingleBattleTourneyResults);
else
@@ -1191,8 +1188,8 @@ static void PalacePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8
static void ShowPalaceResultsWindow(u8 battleMode)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
if (battleMode == FRONTIER_MODE_SINGLES)
StringExpandPlaceholders(gStringVar4, gText_SingleBattleHallResults);
else
@@ -1247,8 +1244,8 @@ static void PikePrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
static void ShowPikeResultsWindow(void)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
StringExpandPlaceholders(gStringVar4, gText_BattleChoiceResults);
PrintAligned(gStringVar4, 0);
AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 33, TEXT_SPEED_FF, NULL);
@@ -1309,8 +1306,8 @@ static void ArenaPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
static void ShowArenaResultsWindow(void)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
PrintHyphens(10);
StringExpandPlaceholders(gStringVar4, gText_SetKOTourneyResults);
PrintAligned(gStringVar4, 2);
@@ -1395,8 +1392,8 @@ static void FactoryPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8
static void ShowFactoryResultsWindow(u8 battleMode)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
if (battleMode == FRONTIER_MODE_SINGLES)
StringExpandPlaceholders(gStringVar4, gText_BattleSwapSingleResults);
else
@@ -1460,8 +1457,8 @@ static void PyramidPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
static void ShowPyramidResultsWindow(void)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
StringExpandPlaceholders(gStringVar4, gText_BattleQuestResults);
PrintAligned(gStringVar4, 2);
AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 49, TEXT_SPEED_FF, NULL);
@@ -1483,8 +1480,8 @@ static void ShowLinkContestResultsWindow(void)
s32 x;
gRecordsWindowId = AddWindow(&gUnknown_08611C7C);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
StringExpandPlaceholders(gStringVar4, gText_LinkContestResults);
x = GetStringCenterAlignXOffset(1, gStringVar4, 208);
@@ -1528,7 +1525,7 @@ static void ShowLinkContestResultsWindow(void)
static void sub_81A31FC(void)
{
- u8 text[32];
+ u8 name[32];
s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
s32 facility = VarGet(VAR_FRONTIER_FACILITY);
s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
@@ -1541,9 +1538,9 @@ static void sub_81A31FC(void)
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);
+ StringCopy(name, gLinkPlayers[gBattleScripting.multiplayerId ^ 1].name);
+ StripExtCtrlCodes(name);
+ StringCopy(gSaveBlock2Ptr->frontier.opponentName[lvlMode], name);
SetTrainerId(gLinkPlayers[gBattleScripting.multiplayerId ^ 1].trainerId, gSaveBlock2Ptr->frontier.field_EF1[lvlMode]);
}
if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] > 1
@@ -1827,7 +1824,7 @@ void sub_81A3ACC(void)
s32 i;
for (i = 0; i < 20; i++)
- gSaveBlock2Ptr->frontier.field_CB4[i] = 0xFFFF;
+ gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF;
}
static void sub_81A3B00(void)
@@ -2336,8 +2333,8 @@ static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode)
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;
+ gSaveBlock2Ptr->frontier.opponentName[0][PLAYER_NAME_LENGTH] = EOS;
+ gSaveBlock2Ptr->frontier.opponentName[1][PLAYER_NAME_LENGTH] = EOS;
Fill2PRecords(records2P, lvlMode);
for (i = 0; i < 3; i++)
Print2PRecord(i, 1, 4, &records2P[i]);
@@ -2353,8 +2350,8 @@ static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode)
void ShowRankingHallRecordsWindow(void)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C84);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_50);
PutWindowTilemap(gRecordsWindowId);
CopyWindowToVram(gRecordsWindowId, 3);
@@ -2362,7 +2359,7 @@ void ShowRankingHallRecordsWindow(void)
void ScrollRankingHallRecordsWindow(void)
{
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_OPEN);
CopyWindowToVram(gRecordsWindowId, 2);
}
diff --git a/src/ghost.c b/src/ghost.c
index d26a4d1cb..998be0caa 100644
--- a/src/ghost.c
+++ b/src/ghost.c
@@ -275,7 +275,7 @@ static void sub_81116E8(struct Sprite *sprite)
if (sprite->data[6] == 0)
{
sprite->invisible = TRUE;
- sprite->callback = sub_80A67F4;
+ sprite->callback = DestroyAnimSpriteAndDisableBlend;
}
else
sub_8111764(sprite);
@@ -536,7 +536,7 @@ void sub_8111C50(u8 taskId)
gSprites[task->data[0]].data[3] = 0;
gSprites[task->data[0]].data[4] = 0;
StoreSpriteCallbackInData6(&gSprites[task->data[0]], SpriteCallbackDummy);
- gSprites[task->data[0]].callback = AnimTranslateLinearSimple;
+ gSprites[task->data[0]].callback = TranslateSpriteLinearFixedPoint;
task->func = sub_8111D78;
}
diff --git a/src/graphics.c b/src/graphics.c
index 90b705d2f..c243c64a5 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -4,10 +4,10 @@ const u32 gBattleTextboxTiles[] = INCBIN_U32("graphics/battle_interface/textbox.
const u32 gBattleTextboxPalette[] = INCBIN_U32("graphics/battle_interface/textbox.gbapal.lz");
const u32 gBattleTextboxTilemap[] = INCBIN_U32("graphics/battle_interface/textbox_map.bin.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 u32 gMonStillFrontPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/circled_question_mark/front.4bpp.lz");
+const u32 gMonBackPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/circled_question_mark/back.4bpp.lz");
+const u32 gMonPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/circled_question_mark/normal.gbapal.lz");
+const u32 gMonShinyPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/circled_question_mark/shiny.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");
@@ -592,9 +592,9 @@ const u32 gBattleAnimBackgroundImage_00[] = INCBIN_U32("graphics/battle_anims/ba
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 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 u32 gMetalShineGfx[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.4bpp.lz");
+const u32 gMetalShinePalette[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.gbapal.lz");
+const u32 gMetalShineTilemap[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.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");
@@ -953,8 +953,8 @@ const u32 gUnknownPal_C2F9E0[] = INCBIN_U32("graphics/unknown/unknown_C2F9E0.gba
#include "data/graphics/pokemon.h"
#include "data/graphics/trainers.h"
-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 gMonIcon_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/icon.4bpp");
+const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/footprint.1bpp");
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");
@@ -984,8 +984,8 @@ const u32 gUnknown_08D85358[] = INCBIN_U32("graphics/battle_frontier/options_pal
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 u32 gUnknown_08D854E8[] = INCBIN_U32("graphics/battle_frontier/symbols.4bpp.lz");
-const u32 gUnknown_08D855E8[] = INCBIN_U32("graphics/battle_frontier/symbols.gbapal.lz");
+const u32 gBattleArenaJudgementSymbolsGfx[] = INCBIN_U32("graphics/battle_frontier/arena_judgement_symbols.4bpp.lz");
+const u32 gBattleArenaJudgementSymbolsPalette[] = INCBIN_U32("graphics/battle_frontier/arena_judgement_symbols.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");
@@ -1064,7 +1064,7 @@ const u32 gEnemyMonShadow_Gfx[] = INCBIN_U32("graphics/battle_interface/enemy_mo
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 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/egg/icon.4bpp");
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");
@@ -1152,16 +1152,16 @@ const u32 gStatusPal_Icons[] = INCBIN_U32("graphics/interface/status_icons.gbapa
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 u32 gUnknown_08D97BEC[] = INCBIN_U32("graphics/interface/summary_frames.4bpp.lz");
+const u32 gMoveSelectorBitmap[] = INCBIN_U32("graphics/interface/summary_frames.4bpp.lz");
const u32 gUnknown_08D97CF4[] = INCBIN_U32("graphics/interface/summary_frames.gbapal.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 u32 gStatusScreenBitmap[] = INCBIN_U32("graphics/interface/status_screen.4bpp.lz");
+const u32 gStatusScreenPalette[] = INCBIN_U32("graphics/interface/status_screen.gbapal.lz");
+const u32 gPageInfoTilemap[] = INCBIN_U32("graphics/interface/status_screen.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 gPageSkillsTilemap[] = INCBIN_U32("graphics/interface/status_tilemap1.bin.lz");
+const u32 gPageBattleMovesTilemap[] = INCBIN_U32("graphics/interface/status_tilemap2.bin.lz");
+const u32 gPageContestMovesTilemap[] = INCBIN_U32("graphics/interface/status_tilemap3.bin.lz");
const u32 gUnknown_08D98CC8[] = INCBIN_U32("graphics/interface/status_tilemap0.bin.lz");
const u32 gBagMaleTiles[] = INCBIN_U32("graphics/misc/bag_male.4bpp.lz");
diff --git a/src/ground.c b/src/ground.c
index 807205ad8..ae3cf6c3e 100644
--- a/src/ground.c
+++ b/src/ground.c
@@ -153,7 +153,7 @@ void AnimBonemerangProjectile(struct Sprite *sprite)
static void AnimBonemerangProjectileStep(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
@@ -170,7 +170,7 @@ static void AnimBonemerangProjectileStep(struct Sprite *sprite)
static void AnimBonemerangProjectileEnd(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
DestroyAnimSprite(sprite);
}
@@ -530,7 +530,7 @@ void AnimFissureDirtPlumeParticle(struct Sprite *sprite)
static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
DestroyAnimSprite(sprite);
}
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 3f217b782..8eba90d96 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -66,8 +66,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
#define HALL_OF_FAME_MAX_TEAMS 50
-extern void ReturnFromHallOfFamePC(void);
-
// this file's functions
static void ClearVramOamPltt_LoadHofPal(void);
static void sub_8174F70(void);
@@ -180,10 +178,10 @@ static const struct OamData sOamData_85E53FC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -490,7 +488,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId)
}
*lastSavedTeam = *sHofMonPtr;
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized2(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
gTasks[taskId].func = Task_Hof_TrySaveData;
@@ -570,7 +568,7 @@ static void Task_Hof_DisplayMon(u8 taskId)
gSprites[spriteId].tSpecies = currMon->species;
gSprites[spriteId].callback = SpriteCB_GetOnScreenAndAnimate;
gTasks[taskId].tMonSpriteId(currMonId) = spriteId;
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
gTasks[taskId].func = Task_Hof_PrintMonInfoAfterAnimating;
}
@@ -649,7 +647,7 @@ static void sub_8173DC0(u8 taskId)
gSprites[gTasks[taskId].tMonSpriteId(i)].oam.priority = 1;
}
BeginNormalPaletteFade(sUnknown_0203BCD4, 0, 12, 12, RGB(16, 29, 24));
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
CopyWindowToVram(0, 3);
gTasks[taskId].tFrameCount = 7;
gTasks[taskId].func = sub_8173EA4;
@@ -697,7 +695,7 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId)
{
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
HallOfFame_PrintPlayerInfo(1, 2);
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized2(0, 1, gText_LeagueChamp, 0, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
gTasks[taskId].func = Task_Hof_ExitOnKeyPressed;
@@ -1066,7 +1064,7 @@ static void Task_HofPC_HandleExit(u8 taskId)
static void Task_HofPC_PrintDataIsCorrupted(u8 taskId)
{
sub_8198180(gText_UnkCtrlF800Exit, 8, TRUE);
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized2(0, 1, gText_HOFCorrupted, 0, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
gTasks[taskId].func = Task_HofPC_ExitOnButtonPress;
@@ -1086,7 +1084,7 @@ static void Task_HofPC_ExitOnButtonPress(u8 taskId)
static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2)
{
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
AddTextPrinterParameterized3(0, 1, GetStringCenterAlignXOffset(1, gText_WelcomeToHOF, 0xD0), 1, sUnknown_085E5388, 0, gText_WelcomeToHOF);
CopyWindowToVram(0, 3);
@@ -1099,7 +1097,7 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u
s32 dexNumber;
s32 width;
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
// dex number
@@ -1180,9 +1178,9 @@ static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2)
u32 width;
u16 trainerId;
- FillWindowPixelBuffer(1, 0x11);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
PutWindowTilemap(1);
- SetWindowBorderStyle(1, FALSE, 0x21D, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(1, FALSE, 0x21D, 0xD);
AddTextPrinterParameterized3(1, 1, 0, 1, sUnknown_085E538C, -1, gText_Name);
width = GetStringRightAlignXOffset(1, gSaveBlock2Ptr->playerName, 0x70);
diff --git a/src/hof_pc.c b/src/hof_pc.c
index 2cea5540a..d76f04372 100644
--- a/src/hof_pc.c
+++ b/src/hof_pc.c
@@ -7,10 +7,6 @@
#include "script_menu.h"
#include "task.h"
-extern void Overworld_PlaySpecialMapMusic(void);
-extern bool16 ScrSpecial_CreatePCMenu(void);
-extern void ScriptMenu_DisplayPCStartupPrompt(void);
-
static void ReshowPCMenuAfterHallOfFamePC(void);
static void Task_WaitForPaletteFade(u8);
diff --git a/src/ice.c b/src/ice.c
index d354fce7e..fa1913b96 100644
--- a/src/ice.c
+++ b/src/ice.c
@@ -21,30 +21,29 @@ struct HailStruct {
};
static void sub_810B6C4(struct Sprite *);
-extern void sub_810B848(struct Sprite *);
-extern void AnimIcePunchSwirlingParticle(struct Sprite *);
-extern void AnimIceBeamParticle(struct Sprite *);
-extern void AnimIceEffectParticle(struct Sprite *);
-extern void AnimFlickerIceEffectParticle(struct Sprite *);
-extern void AnimSwirlingSnowball_Step1(struct Sprite *);
-extern void AnimSwirlingSnowball_Step2(struct Sprite *);
-extern void AnimSwirlingSnowball_Step3(struct Sprite *);
-extern void AnimSwirlingSnowball_End(struct Sprite *);
-extern void AnimMoveParticleBeyondTarget(struct Sprite *);
-extern void AnimWiggleParticleTowardsTarget(struct Sprite *);
-extern void AnimWaveFromCenterOfTarget(struct Sprite *);
-extern void InitSwirlingFogAnim(struct Sprite *);
-extern void AnimSwirlingFogAnim(struct Sprite *);
-extern void AnimThrowMistBall(struct Sprite *);
-extern void InitPoisonGasCloudAnim(struct Sprite *);
-extern void MovePoisonGasCloud(struct Sprite *);
-extern void AnimHailBegin(struct Sprite *);
-extern void AnimHailContinue(struct Sprite *);
-extern void sub_80A8EE4(struct Sprite *);
-extern void InitIceBallAnim(struct Sprite *);
-extern void AnimThrowIceBall(struct Sprite *);
-extern void InitIceBallParticle(struct Sprite *);
-extern void AnimIceBallParticle(struct Sprite *);
+void sub_810B848(struct Sprite *);
+void AnimIcePunchSwirlingParticle(struct Sprite *);
+void AnimIceBeamParticle(struct Sprite *);
+void AnimIceEffectParticle(struct Sprite *);
+void AnimFlickerIceEffectParticle(struct Sprite *);
+void AnimSwirlingSnowball_Step1(struct Sprite *);
+void AnimSwirlingSnowball_Step2(struct Sprite *);
+void AnimSwirlingSnowball_Step3(struct Sprite *);
+void AnimSwirlingSnowball_End(struct Sprite *);
+void AnimMoveParticleBeyondTarget(struct Sprite *);
+void AnimWiggleParticleTowardsTarget(struct Sprite *);
+void AnimWaveFromCenterOfTarget(struct Sprite *);
+void InitSwirlingFogAnim(struct Sprite *);
+void AnimSwirlingFogAnim(struct Sprite *);
+void AnimThrowMistBall(struct Sprite *);
+void InitPoisonGasCloudAnim(struct Sprite *);
+void MovePoisonGasCloud(struct Sprite *);
+void AnimHailBegin(struct Sprite *);
+void AnimHailContinue(struct Sprite *);
+void InitIceBallAnim(struct Sprite *);
+void AnimThrowIceBall(struct Sprite *);
+void InitIceBallParticle(struct Sprite *);
+void AnimIceBallParticle(struct Sprite *);
void AnimTask_Haze2(u8);
void AnimTask_OverlayFogTiles(u8);
void AnimTask_Hail2(u8);
@@ -1176,7 +1175,7 @@ void AnimSwirlingFogAnim(struct Sprite *sprite)
// Fades mons to black and places foggy overlay in Haze.
void AnimTask_Haze1(u8 taskId)
{
- struct UnknownAnimStruct2 subStruct;
+ struct BattleAnimBgData animBg;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
@@ -1191,17 +1190,17 @@ void AnimTask_Haze1(u8 taskId)
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
- sub_80A6B30(&subStruct);
- LoadBgTiles(subStruct.bgId, gWeatherFog1Tiles, 0x800, subStruct.tilesOffset);
- sub_80A6D60(&subStruct, gBattleAnimFogTilemap, 0);
- LoadPalette(&gUnknown_083970E8, subStruct.unk8 * 16, 32);
+ sub_80A6B30(&animBg);
+ LoadBgTiles(animBg.bgId, gWeatherFog1Tiles, 0x800, animBg.tilesOffset);
+ sub_80A6D60(&animBg, gBattleAnimFogTilemap, 0);
+ LoadPalette(&gUnknown_083970E8, animBg.paletteId * 16, 32);
gTasks[taskId].func = AnimTask_Haze2;
}
void AnimTask_Haze2(u8 taskId)
{
- struct UnknownAnimStruct2 subStruct;
+ struct BattleAnimBgData animBg;
gBattle_BG1_X += -1;
gBattle_BG1_Y += 0;
@@ -1245,7 +1244,7 @@ void AnimTask_Haze2(u8 taskId)
}
break;
case 3:
- sub_80A6B30(&subStruct);
+ sub_80A6B30(&animBg);
sub_80A6C68(1);
sub_80A6C68(2);
@@ -1283,7 +1282,7 @@ void AnimThrowMistBall(struct Sprite *sprite)
// Displays misty background in Mist Ball.
void AnimTask_LoadMistTiles(u8 taskId)
{
- struct UnknownAnimStruct2 subStruct;
+ struct BattleAnimBgData animBg;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
@@ -1298,10 +1297,10 @@ void AnimTask_LoadMistTiles(u8 taskId)
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
- sub_80A6B30(&subStruct);
- LoadBgTiles(subStruct.bgId, gWeatherFog1Tiles, 0x800, subStruct.tilesOffset);
- sub_80A6D60(&subStruct, gBattleAnimFogTilemap, 0);
- LoadPalette(&gUnknown_083970E8, subStruct.unk8 * 16, 32);
+ sub_80A6B30(&animBg);
+ LoadBgTiles(animBg.bgId, gWeatherFog1Tiles, 0x800, animBg.tilesOffset);
+ sub_80A6D60(&animBg, gBattleAnimFogTilemap, 0);
+ LoadPalette(&gUnknown_083970E8, animBg.paletteId * 16, 32);
gTasks[taskId].data[15] = -1;
gTasks[taskId].func = AnimTask_OverlayFogTiles;
@@ -1309,7 +1308,7 @@ void AnimTask_LoadMistTiles(u8 taskId)
void AnimTask_OverlayFogTiles(u8 taskId)
{
- struct UnknownAnimStruct2 subStruct;
+ struct BattleAnimBgData animBg;
gBattle_BG1_X += gTasks[taskId].data[15];
gBattle_BG1_Y += 0;
@@ -1347,7 +1346,7 @@ void AnimTask_OverlayFogTiles(u8 taskId)
}
break;
case 3:
- sub_80A6B30(&subStruct);
+ sub_80A6B30(&animBg);
sub_80A6C68(1);
sub_80A6C68(2);
@@ -1887,7 +1886,7 @@ void InitIceBallAnim(struct Sprite *sprite)
// Throws the ball of ice in Ice Ball.
void AnimThrowIceBall(struct Sprite *sprite)
{
- if (!TranslateAnimArc(sprite))
+ if (!TranslateAnimHorizontalArc(sprite))
return;
StartSpriteAnim(sprite, 1);
diff --git a/src/intro.c b/src/intro.c
index 18a899fb0..e97fbedb0 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -27,14 +27,75 @@
#include "constants/rgb.h"
#include "constants/battle_anim.h"
+/*
+ * Intro animation sequence state machine
+ * --------------------------------------
+ *
+ * Entry Point: CB2_InitCopyrightScreenAfterBootup
+ *
+ * Note: States advance sequentially unless otherwise stated.
+ *
+ * CB2_InitCopyrightScreenAfterBootup
+ * - Registers a serial interrupt handler that listens for a GameCube.
+ * - Waits for 140 frames, and then until palette fading completes.
+ * - Stops looking for a GameCube for dualboot.
+ * - Check the save file for corruption
+ * - Setup global pointers to save file
+ * - Initialize gHeap
+ *
+ * MainCB2_Intro
+ * - Spawn Task_IntroLoadPart1Graphics
+ * - If any keys are pressed during the intro, advance to
+ * MainCB2_EndIntro (which will then kill all tasks).
+ *
+ * Task_IntroLoadPart1Graphics
+ * Task_IntroFadeIn (frame counter starts at 0 here)
+ * Task_IntroWaterDrops
+ * - At frame 128 of this state, spawn Task_IntroWaterDrops_1
+ * - At frame 256 of this state, spawn Task_IntroWaterDrops_2
+ * - At frame 560 of this state, spawn Task_IntroWaterDrops_3
+ * Task_IntroScrollDownAndShowFlygon
+ * Task_IntroWaitToSetupPart2
+ * Task_IntroLoadPart2Graphics
+ * Task_IntroStartBikeRide
+ * - Spawn Task_AdvanceBicycleAnimation
+ * Task_IntroHandleBikeAndFlygonMovement
+ * - At frame 1856, kills the bicycle animation task
+ * Task_IntroWaitToSetupPart3
+ * Task_IntroLoadPart3Graphics (frame counter resets to 0 here)
+ * Task_IntroSpinAndZoomPokeball
+ * - Continues until the zoom reaches a certain point
+ * Task_IntroWaitToSetupPart3LegendsFight
+ * Task_IntroLoadGroudonScene
+ * Task_IntroLoadPart3Graphics1
+ * Task_IntroLoadPart3Graphics2
+ * Task_IntroLoadPart3Graphics3
+ * Task_IntroLoadPart3Graphics4
+ * Task_IntroGroudonScene
+ * Task_IntroLoadKyogreScene
+ * Task_IntroKyogreScene
+ * Task_IntroLoadClouds1
+ * Task_IntroLoadClouds2
+ * Task_IntroLoadClouds3
+ * Task_IntroCloudsScene
+ * Task_IntroLoadRayquazaLightningScene
+ * Task_IntroRayquazaLightningScene
+ * Task_IntroLoadRayquazaGlowScene
+ * Task_IntroRayquazaGlowScene_0
+ * - Runs concurrently with Task_IntroRayquazaGlowScene_1
+ * Task_EndIntroMovie
+ * MainCB2_EndIntro
+ * - Advances to CB2_InitTitleScreen
+ */
+
extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
extern const struct SpriteTemplate gUnknown_08596C10[];
//ewram
-EWRAM_DATA u16 gUnknown_0203BCC8 = 0;
+EWRAM_DATA u16 gIntroCharacterGender = 0;
EWRAM_DATA u16 gUnknown_0203BCCA = 0;
-EWRAM_DATA u16 gUnknown_0203BCCC = 0;
+EWRAM_DATA u16 gIntroGraphicsFlygonYOffset = 0;
//iwram
u32 gIntroFrameCounter;
@@ -67,12 +128,12 @@ static const u8 sUnknownBytes[] = {
0x10, 0x11, 0x12, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x02, 0x0D, 0x0E, 0x0F, 0x10,
0x11, 0x12, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x00
};
-static const struct CompressedSpriteSheet gUnknown_085E4A74[] =
+static const struct CompressedSpriteSheet gIntroSpriteSheet_Sparkle[] =
{
{gIntro1SparkleGfx, 0x400, 1505},
{NULL},
};
-static const struct SpritePalette gUnknown_085E4A84[] =
+static const struct SpritePalette gIntroPalette_Lightning[] =
{
{gIntro3LightningPal, 1505},
{NULL},
@@ -84,10 +145,10 @@ static const struct OamData gUnknown_085E4A94 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -132,14 +193,14 @@ static const u8 gUnknown_085E4AD0[][2] =
{0xD0, 0x26},
{0x00, 0x00},
};
-static const struct CompressedSpriteSheet gUnknown_085E4AE8[] =
+static const struct CompressedSpriteSheet gIntroPokemonRunningSpriteSheet[] =
{
{gIntro2VolbeatGfx, 0x400, 1500},
{gIntro2TorchicGfx, 0xC00, 1501},
{gIntro2ManectricGfx, 0x2000, 1502},
{NULL},
};
-static const struct SpritePalette gUnknown_085E4B08[] =
+static const struct SpritePalette gIntroPokemonRunningPalette[] =
{
{gIntro2VolbeatPal, 1500},
{gIntro2TorchicPal, 1501},
@@ -153,10 +214,10 @@ static const struct OamData gUnknown_085E4B28 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -190,10 +251,10 @@ static const struct OamData gUnknown_085E4B58 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -246,10 +307,10 @@ static const struct OamData gUnknown_085E4BBC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -278,12 +339,12 @@ static const struct SpriteTemplate gUnknown_085E4BDC =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_816DAE8,
};
-static const struct CompressedSpriteSheet gUnknown_085E4BF4[] =
+static const struct CompressedSpriteSheet gIntroRayquazaLightningSpriteSheet[] =
{
{gIntro3LightningGfx, 0xC00, 1503},
{NULL},
};
-static const struct SpritePalette gUnknown_085E4C04[] =
+static const struct SpritePalette gIntroRayquazaLightningPalette[] =
{
{gIntro3LightningPal, 1503},
{NULL},
@@ -295,10 +356,10 @@ static const struct OamData gUnknown_085E4C14 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -328,8 +389,8 @@ static const union AnimCmd *const gUnknown_085E4C40[] =
gUnknown_085E4C28,
gUnknown_085E4C34,
};
-static void sub_816EC6C(struct Sprite *sprite);
-static const struct SpriteTemplate gUnknown_085E4C4C =
+static void SpriteCB_IntroRayquazaLightning(struct Sprite *sprite);
+static const struct SpriteTemplate gIntroLightningSprite =
{
.tileTag = 1503,
.paletteTag = 1503,
@@ -337,9 +398,9 @@ static const struct SpriteTemplate gUnknown_085E4C4C =
.anims = gUnknown_085E4C40,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_816EC6C,
+ .callback = SpriteCB_IntroRayquazaLightning,
};
-static const s16 gUnknown_085E4C64[][3] =
+static const s16 gIntroGroudonRockData[][3] =
{
{0x68, 0x00, 0x0C0},
{0x8E, 0x03, 0x280},
@@ -358,7 +419,7 @@ static const struct SpritePalette gUnknown_085E4C98[] =
{gIntro2BubblesPal, 1504},
{NULL},
};
-static const s16 gUnknown_085E4CA8[][3] =
+static const s16 gIntroKyogreBubbleData[][3] =
{
{0x42, 0x40, 0x1},
{0x60, 0x60, 0x8},
@@ -380,10 +441,10 @@ static const struct OamData gUnknown_085E4CF0 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 2,
+ .shape = SPRITE_SHAPE(16x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(16x32),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -402,7 +463,7 @@ static const union AnimCmd *const gUnknown_085E4D10[] =
{
gUnknown_085E4CF8,
};
-static void sub_816E7B4(struct Sprite *sprite);
+static void SpriteCB_IntroKyogreBubbles(struct Sprite *sprite);
static const struct SpriteTemplate gUnknown_085E4D14 =
{
.tileTag = 1504,
@@ -411,7 +472,7 @@ static const struct SpriteTemplate gUnknown_085E4D14 =
.anims = gUnknown_085E4D10,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_816E7B4,
+ .callback = SpriteCB_IntroKyogreBubbles,
};
static const struct OamData gUnknown_085E4D2C =
{
@@ -420,10 +481,10 @@ static const struct OamData gUnknown_085E4D2C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -457,7 +518,7 @@ static const union AnimCmd *const gUnknown_085E4D54[] =
gUnknown_085E4D4C,
};
static void sub_816F454(struct Sprite *sprite);
-static const struct SpriteTemplate gUnknown_085E4D64 =
+static const struct SpriteTemplate gIntroWaterDropSprite =
{
.tileTag = 2000,
.paletteTag = 2000,
@@ -497,7 +558,7 @@ static const union AnimCmd gUnknown_085E4DB4[] =
ANIMCMD_FRAME(256, 16),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085E4DC4[] =
+static const union AnimCmd *const gIntroBicycleAnimationCommands[] =
{
gUnknown_085E4D7C,
gUnknown_085E4D90,
@@ -511,10 +572,10 @@ static const struct OamData gUnknown_085E4DD4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -527,10 +588,10 @@ static const struct OamData gUnknown_085E4DDC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -543,10 +604,10 @@ static const struct OamData gUnknown_085E4DE4 =
.objMode = 1,
.mosaic = 0,
.bpp = 0,
- .shape = 2,
+ .shape = SPRITE_SHAPE(32x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(32x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -743,10 +804,10 @@ static const struct OamData gUnknown_085E4FB0 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(64x32),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x32),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -772,17 +833,17 @@ static const struct SpriteTemplate gUnknown_085E4FC4 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_816FEDC,
};
-static const struct CompressedSpriteSheet gUnknown_085E4FDC[] =
+static const struct CompressedSpriteSheet gIntroSpriteSheet_WaterDropAndLogo[] =
{
{gIntroTiles, 0x1400, 2000},
{NULL},
};
-static const struct CompressedSpriteSheet gUnknown_085E4FEC[] =
+static const struct CompressedSpriteSheet gIntroSpriteSheet_Flygon[] =
{
{gIntro1FlygonGfx, 0x400, 2002},
{NULL},
};
-static const struct SpritePalette gUnknown_085E4FFC[] =
+static const struct SpritePalette gIntroPalette_DropLogoFlygon[] =
{
{gIntro1DropsPal, 2000},
{gIntro1GFLogoPal, 2001},
@@ -796,10 +857,10 @@ static const struct OamData gUnknown_085E501C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -814,8 +875,8 @@ static const union AnimCmd *const gUnknown_085E502C[] =
{
gUnknown_085E5024,
};
-static void sub_8170040(struct Sprite *sprite);
-static const struct SpriteTemplate gUnknown_085E5030 =
+static void SpriteCB_IntroRayquazaHyperbeam(struct Sprite *sprite);
+static const struct SpriteTemplate gIntroRayquazaHyperbeamSprite =
{
.tileTag = 2003,
.paletteTag = 2003,
@@ -823,14 +884,14 @@ static const struct SpriteTemplate gUnknown_085E5030 =
.anims = gUnknown_085E502C,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8170040,
+ .callback = SpriteCB_IntroRayquazaHyperbeam,
};
-static const struct CompressedSpriteSheet gUnknown_085E5048[] =
+static const struct CompressedSpriteSheet gIntroRayquazaGlowSpriteSheet[] =
{
{gIntro3MiscTiles, 0xA00, 2003},
{NULL},
};
-static const struct SpritePalette gUnknown_085E5058[] =
+static const struct SpritePalette gIntroRayquazaGlowPalette[] =
{
{gIntro3Misc1Palette, 2003},
{NULL},
@@ -855,36 +916,36 @@ static void Task_IntroWaitToSetupPart3(u8);
static void Task_IntroLoadPart3Graphics(u8);
static void Task_IntroSpinAndZoomPokeball(u8);
static void Task_IntroWaitToSetupPart3LegendsFight(u8);
-static void Task_IntroLoadPart1Graphics3(u8);
-static void Task_IntroLoadPart1Graphics4(u8);
-static void Task_IntroLoadPart1Graphics5(u8);
-static void Task_IntroLoadPart1Graphics6(u8);
-static void Task_IntroLoadPart1Graphics7(u8);
-static void Task_IntroLoadPart1Graphics8(u8);
-static void Task_IntroLoadPart1Graphics9(u8);
-static void Task_IntroFadeIn0(u8);
-static void Task_IntroFadeIn1(u8);
-static void Task_IntroFadeIn2(u8);
-static void Task_IntroFadeIn3(u8);
-static void Task_IntroFadeIn4(u8);
-static void Task_IntroFadeIn5(u8);
-static void Task_IntroFadeIn6(u8);
-static void Task_IntroFadeIn7(u8);
-static void Task_IntroFadeIn8(u8);
-static void Task_IntroFadeIn9(u8);
-static void sub_816E190(u8);
-static void sub_816E1F8(struct Sprite *);
-static void sub_816E6D4(u8);
-static void sub_816E74C(void);
-static void sub_816EEA8(u8);
+static void Task_IntroLoadGroudonScene(u8);
+static void Task_IntroLoadPart3Graphics1(u8);
+static void Task_IntroLoadPart3Graphics2(u8);
+static void Task_IntroLoadPart3Graphics3(u8);
+static void Task_IntroLoadPart3Graphics4(u8);
+static void Task_IntroGroudonScene(u8);
+static void Task_IntroLoadKyogreScene(u8);
+static void Task_IntroKyogreScene(u8);
+static void Task_IntroLoadClouds1(u8);
+static void Task_IntroLoadClouds2(u8);
+static void Task_IntroLoadClouds3(u8);
+static void Task_IntroCloudScene(u8);
+static void Task_IntroLoadRayquazaLightningScene(u8);
+static void Task_IntroRayquazaLightningScene(u8);
+static void Task_IntroLoadRayquazaGlowScene(u8);
+static void Task_IntroRayquazaGlowScene_0(u8);
+static void Task_EndIntroMovie(u8);
+static void CreateGroudonRockSprites(u8);
+static void SpriteCB_IntroGroudonRocks(struct Sprite *);
+static void CreateKyogreBubbleSprites_0(u8);
+static void CreateKyogreBubbleSprites_1(void);
+static void Task_IntroRayquazaGlowScene_1(u8);
static void sub_816F46C(struct Sprite *);
static void sub_816F5B4(struct Sprite *);
static void sub_816F660(struct Sprite *);
static void SpriteCB_WaterDropFall(struct Sprite *);
static void sub_816F318(struct Sprite *);
-static void sub_816F9D4(struct Sprite *);
-static void sub_816FAB0(struct Sprite *);
-static u8 sub_816FDB8(s16, s16, s16);
+static void SpriteCB_IntroGraphicsBicycle(struct Sprite *);
+static void SpriteCB_IntroGraphicsFlygon(struct Sprite *);
+static u8 CreatePart1Animations(s16, s16, s16);
static void VBlankCB_Intro(void)
{
@@ -1006,7 +1067,7 @@ void CB2_InitCopyrightScreenAfterBootup(void)
if (!SetUpCopyrightScreen())
{
SetSaveBlocksPointers(sub_815355C());
- sub_808447C();
+ ResetMenuAndMonGlobals();
Save_ResetSaveCounters();
Save_LoadGameData(SAVE_NORMAL);
if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
@@ -1024,31 +1085,31 @@ void CB2_InitCopyrightScreenAfterTitleScreen(void)
static void Task_IntroLoadPart1Graphics(u8 taskId)
{
SetVBlankCallback(NULL);
- gUnknown_0203BCC8 = Random() & 1;
+ gIntroCharacterGender = Random() & 1;
intro_reset_and_hide_bgs();
SetGpuReg(REG_OFFSET_BG3VOFS, 0);
SetGpuReg(REG_OFFSET_BG2VOFS, 0x50);
SetGpuReg(REG_OFFSET_BG1VOFS, 0x18);
SetGpuReg(REG_OFFSET_BG0VOFS, 0x28);
LZ77UnCompVram(gIntro1BGLeavesGfx, (void *)VRAM);
- LZ77UnCompVram(gIntro1BG0_Tilemap, (void *)(VRAM + 0x8000));
- DmaClear16(3, VRAM + 0x8800, 0x800);
- LZ77UnCompVram(gIntro1BG1_Tilemap, (void *)(VRAM + 0x9000));
- DmaClear16(3, VRAM + 0x9800, 0x800);
- LZ77UnCompVram(gIntro1BG2_Tilemap, (void *)(VRAM + 0xA000));
- DmaClear16(3, VRAM + 0xA800, 0x800);
- LZ77UnCompVram(gIntro1BG3_Tilemap, (void *)(VRAM + 0xB000));
- DmaClear16(3, VRAM + 0xB800, 0x800);
+ LZ77UnCompVram(gIntro1BG0_Tilemap, (void *)(BG_CHAR_ADDR(2)));
+ DmaClear16(3, BG_SCREEN_ADDR(17), 0x800);
+ LZ77UnCompVram(gIntro1BG1_Tilemap, (void *)(BG_SCREEN_ADDR(18)));
+ DmaClear16(3, BG_SCREEN_ADDR(19), 0x800);
+ LZ77UnCompVram(gIntro1BG2_Tilemap, (void *)(BG_SCREEN_ADDR(20)));
+ DmaClear16(3, BG_SCREEN_ADDR(21), 0x800);
+ LZ77UnCompVram(gIntro1BG3_Tilemap, (void *)(BG_SCREEN_ADDR(22)));
+ DmaClear16(3, BG_SCREEN_ADDR(23), 0x800);
LoadPalette(gIntro1BGPals, 0, sizeof(gIntro1BGPals));
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(22) | BGCNT_16COLOR | BGCNT_TXT256x512);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(20) | BGCNT_16COLOR | BGCNT_TXT256x512);
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(18) | BGCNT_16COLOR | BGCNT_TXT256x512);
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(16) | BGCNT_16COLOR | BGCNT_TXT256x512);
- LoadCompressedSpriteSheet(gUnknown_085E4FDC);
- LoadCompressedSpriteSheet(gUnknown_085E4FEC);
- LoadSpritePalettes(gUnknown_085E4FFC);
- LoadCompressedSpriteSheet(gUnknown_085E4A74);
- LoadSpritePalettes(gUnknown_085E4A84);
+ LoadCompressedSpriteSheet(gIntroSpriteSheet_WaterDropAndLogo);
+ LoadCompressedSpriteSheet(gIntroSpriteSheet_Flygon);
+ LoadSpritePalettes(gIntroPalette_DropLogoFlygon);
+ LoadCompressedSpriteSheet(gIntroSpriteSheet_Sparkle);
+ LoadSpritePalettes(gIntroPalette_Lightning);
CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1F0, 0x20);
CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1E1, 0x1E);
CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1D2, 0x1C);
@@ -1056,7 +1117,7 @@ static void Task_IntroLoadPart1Graphics(u8 taskId)
CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1B4, 0x18);
CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1A5, 0x16);
CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x196, 0x14);
- sub_816FDB8(0x78, 0x50, 0);
+ CreatePart1Animations(0x78, 0x50, 0);
gTasks[taskId].data[0] = CreateWaterDrop(236, -14, 0x200, 1, 0x78, FALSE);
gTasks[taskId].func = Task_IntroFadeIn;
}
@@ -1194,7 +1255,7 @@ static void Task_IntroLoadPart2Graphics(u8 taskId)
FreeAllSpritePalettes();
gUnknown_0203BD24 = 0;
gUnknown_0203BD26 = 0;
- gUnknown_0203BCCC = 0;
+ gIntroGraphicsFlygonYOffset = 0;
load_intro_part2_graphics(1);
gTasks[taskId].func = Task_IntroStartBikeRide;
}
@@ -1203,7 +1264,7 @@ static void Task_IntroStartBikeRide(u8 taskId)
{
u8 spriteId;
- if (gUnknown_0203BCC8 == 0)
+ if (gIntroCharacterGender == 0)
LoadCompressedSpriteSheet(gIntro2BrendanSpriteSheet);
else
LoadCompressedSpriteSheet(gIntro2MaySpriteSheet);
@@ -1213,29 +1274,29 @@ static void Task_IntroStartBikeRide(u8 taskId)
for (spriteId = 0; spriteId < 3; spriteId++)
{
- LoadCompressedSpriteSheet(&gUnknown_085E4AE8[spriteId]);
+ LoadCompressedSpriteSheet(&gIntroPokemonRunningSpriteSheet[spriteId]);
}
- LoadSpritePalettes(gUnknown_085F530C);
- LoadSpritePalettes(gUnknown_085E4B08);
+ LoadSpritePalettes(gIntroBikeAndFlygonPalette);
+ LoadSpritePalettes(gIntroPokemonRunningPalette);
CreateSprite(&gUnknown_085E4BDC, 0x110, 0x80, 0);
CreateSprite(&gUnknown_085E4BA4, 0x120, 0x6E, 1);
- if (gUnknown_0203BCC8 == 0)
+ if (gIntroCharacterGender == 0)
spriteId = intro_create_brendan_sprite(0x110, 100);
else
spriteId = intro_create_may_sprite(0x110, 100);
- gSprites[spriteId].callback = sub_816F9D4;
- gSprites[spriteId].anims = gUnknown_085E4DC4;
+ gSprites[spriteId].callback = SpriteCB_IntroGraphicsBicycle;
+ gSprites[spriteId].anims = gIntroBicycleAnimationCommands;
gTasks[taskId].data[1] = spriteId;
CreateSprite(&gUnknown_085E4B40, 0x110, 0x50, 0x4);
spriteId = intro_create_flygon_sprite(-0x40, 0x3C);
- gSprites[spriteId].callback = sub_816FAB0;
+ gSprites[spriteId].callback = SpriteCB_IntroGraphicsFlygon;
gTasks[taskId].data[2] = spriteId;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_WHITEALPHA);
SetVBlankCallback(VBlankCB_Intro);
- gTasks[taskId].data[0] = sub_817B3DC(1, 0x4000, 0x400, 0x10);
+ gTasks[taskId].data[0] = CreateBicycleAnimationTask(1, 0x4000, 0x400, 0x10);
sub_817B150(1);
gTasks[taskId].func = Task_IntroHandleBikeAndFlygonMovement;
}
@@ -1243,11 +1304,12 @@ static void Task_IntroStartBikeRide(u8 taskId)
static void Task_IntroHandleBikeAndFlygonMovement(u8 taskId)
{
s16 a;
- u16 sine;
+ u16 offset;
if (gIntroFrameCounter == 1856)
{
gUnknown_0203BD28 = 2;
+ // Destroys the CreateBicycleAnimationTask created earlier.
DestroyTask(gTasks[taskId].data[0]);
}
if (gIntroFrameCounter > 1946)
@@ -1268,8 +1330,8 @@ static void Task_IntroHandleBikeAndFlygonMovement(u8 taskId)
if (gIntroFrameCounter == 1727)
gSprites[gTasks[taskId].data[1]].data[0] = 4;
- sine = Sin(gTasks[taskId].data[3] >> 2 & 0x7F, 48);
- gUnknown_0203BCCC = sine;
+ offset = Sin(gTasks[taskId].data[3] >> 2 & 0x7F, 48);
+ gIntroGraphicsFlygonYOffset = offset;
if (gTasks[taskId].data[3] < 512)
gTasks[taskId].data[3]++;
sub_817B540(0);
@@ -1487,13 +1549,13 @@ static void Task_IntroLoadPart3Graphics(u8 taskId)
{
intro_reset_and_hide_bgs();
LZ77UnCompVram(gIntro3Pokeball_Gfx, (void *)VRAM);
- LZ77UnCompVram(gIntro3Pokeball_Tilemap, (void *)(VRAM + 0x4000));
+ LZ77UnCompVram(gIntro3Pokeball_Tilemap, (void *)(BG_CHAR_ADDR(1)));
LoadPalette(gIntro3PokeballPal, 0, 0x200);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[3] = 0;
- sub_816F2A8(0x78, 0x50, 0, 0);
+ PanFadeAndZoomScreen(0x78, 0x50, 0, 0);
ResetSpriteData();
FreeAllSpritePalettes();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_WHITEALPHA);
@@ -1518,7 +1580,7 @@ static void Task_IntroSpinAndZoomPokeball(u8 taskId)
gTasks[taskId].func = Task_IntroWaitToSetupPart3LegendsFight;
}
- sub_816F2A8(0x78, 0x50, 0x10000 / gTasks[taskId].data[1], gTasks[taskId].data[0]);
+ PanFadeAndZoomScreen(0x78, 0x50, 0x10000 / gTasks[taskId].data[1], gTasks[taskId].data[0]);
if (gIntroFrameCounter == 28)
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_WHITEALPHA);
@@ -1527,10 +1589,10 @@ static void Task_IntroSpinAndZoomPokeball(u8 taskId)
static void Task_IntroWaitToSetupPart3LegendsFight(u8 taskId)
{
if (gIntroFrameCounter > 43)
- gTasks[taskId].func = Task_IntroLoadPart1Graphics3;
+ gTasks[taskId].func = Task_IntroLoadGroudonScene;
}
-static void Task_IntroLoadPart1Graphics3(u8 taskId)
+static void Task_IntroLoadGroudonScene(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -1539,17 +1601,17 @@ static void Task_IntroLoadPart1Graphics3(u8 taskId)
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
LZDecompressVram(gIntro3GroudonGfx, (void *)VRAM);
- LZDecompressVram(gIntro3GroudonTilemap, (void *)(VRAM + 0xC000));
- LZDecompressVram(gIntro3LegendBgGfx, (void *)(VRAM + 0x4000));
- LZDecompressVram(gIntro3GroudonBgTilemap, (void *)(VRAM + 0xE000));
+ LZDecompressVram(gIntro3GroudonTilemap, (void *)(BG_CHAR_ADDR(3)));
+ LZDecompressVram(gIntro3LegendBgGfx, (void *)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gIntro3GroudonBgTilemap, (void *)(BG_SCREEN_ADDR(28)));
LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]);
LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]);
CpuCopy16(gIntro3BgPal, gPlttBufferUnfaded, sizeof(gIntro3BgPal));
- gTasks[taskId].func = Task_IntroLoadPart1Graphics4;
+ gTasks[taskId].func = Task_IntroLoadPart3Graphics1;
}
}
-static void Task_IntroLoadPart1Graphics4(u8 taskId)
+static void Task_IntroLoadPart3Graphics1(u8 taskId)
{
SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
SetGpuReg(REG_OFFSET_WIN0V, 0xA0);
@@ -1577,11 +1639,11 @@ static void Task_IntroLoadPart1Graphics4(u8 taskId)
gTasks[taskId].data[1] = 0xFFA0;
gTasks[taskId].data[2] = 0xFF51;
gTasks[taskId].data[3] = 0x100;
- sub_816F2A8(0xFFA0, 0xFF51, 0x100, 0);
- gTasks[taskId].func = Task_IntroLoadPart1Graphics5;
+ PanFadeAndZoomScreen(0xFFA0, 0xFF51, 0x100, 0);
+ gTasks[taskId].func = Task_IntroLoadPart3Graphics2;
}
-static void Task_IntroLoadPart1Graphics5(u8 taskId)
+static void Task_IntroLoadPart3Graphics2(u8 taskId)
{
if (gTasks[taskId].data[0] != 32)
{
@@ -1591,30 +1653,30 @@ static void Task_IntroLoadPart1Graphics5(u8 taskId)
else
{
SetGpuReg(REG_OFFSET_WIN0V, 0x2080);
- gTasks[taskId].func = Task_IntroLoadPart1Graphics6;
+ gTasks[taskId].func = Task_IntroLoadPart3Graphics3;
}
}
-static void Task_IntroLoadPart1Graphics6(u8 taskId)
+static void Task_IntroLoadPart3Graphics3(u8 taskId)
{
- gTasks[taskId].func = Task_IntroLoadPart1Graphics7;
+ gTasks[taskId].func = Task_IntroLoadPart3Graphics4;
}
-static void Task_IntroLoadPart1Graphics7(u8 taskId)
+static void Task_IntroLoadPart3Graphics4(u8 taskId)
{
gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = Task_IntroLoadPart1Graphics8;
+ gTasks[taskId].func = Task_IntroGroudonScene;
ScanlineEffect_InitWave(0, 0xA0, 0x4, 4, 1, 4, 0);
}
-static void Task_IntroLoadPart1Graphics8(u8 taskId)
+static void Task_IntroGroudonScene(u8 taskId)
{
s16 *data = gTasks[taskId].data;
data[5]++;
if ((u16)(data[0] - 1) < 7 && data[5] % 2 == 0)
data[4] ^= 3;
- sub_816F2A8(data[1], data[2] + data[4], data[3], 0);
+ PanFadeAndZoomScreen(data[1], data[2] + data[4], data[3], 0);
switch (data[0])
{
case 0:
@@ -1624,7 +1686,7 @@ static void Task_IntroLoadPart1Graphics8(u8 taskId)
data[0]++;
data[6] = 2;
data[7] = 0x1E2;
- sub_816E190(taskId);
+ CreateGroudonRockSprites(taskId);
}
break;
case 1:
@@ -1706,30 +1768,30 @@ static void Task_IntroLoadPart1Graphics8(u8 taskId)
case 9:
if (!gPaletteFade.active)
{
- gTasks[taskId].func = Task_IntroLoadPart1Graphics9;
+ gTasks[taskId].func = Task_IntroLoadKyogreScene;
gScanlineEffect.state = 3;
}
break;
}
}
-static void sub_816E190(u8 a0)
+static void CreateGroudonRockSprites(u8 a0)
{
int i;
u8 spriteId;
for (i = 0; i < 6; i++)
{
- spriteId = CreateSprite(gUnknown_08596C10, gUnknown_085E4C64[i][0], 0xA0, i);
- gSprites[spriteId].callback = sub_816E1F8;
+ spriteId = CreateSprite(gUnknown_08596C10, gIntroGroudonRockData[i][0], 0xA0, i);
+ gSprites[spriteId].callback = SpriteCB_IntroGroudonRocks;
gSprites[spriteId].oam.priority = 0;
gSprites[spriteId].data[1] = i;
gSprites[spriteId].data[4] = a0;
- StartSpriteAnim(&gSprites[spriteId], gUnknown_085E4C64[i][1]);
+ StartSpriteAnim(&gSprites[spriteId], gIntroGroudonRockData[i][1]);
}
}
-static void sub_816E1F8(struct Sprite *sprite)
+static void SpriteCB_IntroGroudonRocks(struct Sprite *sprite)
{
sprite->data[3]++;
if (sprite->data[3] % 2 == 0)
@@ -1738,7 +1800,7 @@ static void sub_816E1F8(struct Sprite *sprite)
switch(sprite->data[0])
{
case 0:
- sprite->data[2] += gUnknown_085E4C64[sprite->data[1]][2];
+ sprite->data[2] += gIntroGroudonRockData[sprite->data[1]][2];
sprite->pos1.y -= (sprite->data[2] & 0xFF00) >> 8;
sprite->data[2] &= 0xFF;
if (gTasks[sprite->data[4]].data[0] > 7)
@@ -1758,30 +1820,30 @@ static void sub_816E1F8(struct Sprite *sprite)
}
}
-static void Task_IntroLoadPart1Graphics9(u8 taskId)
+static void Task_IntroLoadKyogreScene(u8 taskId)
{
ResetSpriteData();
LZDecompressVram(gIntro3KyogreGfx, (void *)VRAM);
- LZDecompressVram(gIntro3KyogreTilemap, (void *)(VRAM + 0xC000));
- LZDecompressVram(gIntro3KyogreBgTilemap, (void *)(VRAM + 0xE000));
+ LZDecompressVram(gIntro3KyogreTilemap, (void *)(BG_CHAR_ADDR(3)));
+ LZDecompressVram(gIntro3KyogreBgTilemap, (void *)(BG_SCREEN_ADDR(28)));
LoadCompressedSpriteSheet(gUnknown_085E4C88);
LoadSpritePalette(gUnknown_085E4C98);
BeginNormalPaletteFade(0xFFFFFFFE, 0, 0x10, 0, RGB_WHITEALPHA);
- gTasks[taskId].func = Task_IntroFadeIn0;
+ gTasks[taskId].func = Task_IntroKyogreScene;
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0x150;
gTasks[taskId].data[2] = 0x50;
gTasks[taskId].data[6] = 0x10;
gTasks[taskId].data[3] = 0x100;
- sub_816F2A8(0x150, 0x50, 0x100, 0);
+ PanFadeAndZoomScreen(0x150, 0x50, 0x100, 0);
ScanlineEffect_InitWave(0, 0xA0, 4, 4, 1, 6, 0);
}
-static void Task_IntroFadeIn0(u8 taskId)
+static void Task_IntroKyogreScene(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_816F2A8(data[1], data[2], data[3], 0);
+ PanFadeAndZoomScreen(data[1], data[2], data[3], 0);
switch (data[0])
{
@@ -1798,7 +1860,7 @@ static void Task_IntroFadeIn0(u8 taskId)
data[6] = 0x19;
data[7] = 1;
data[0]++;
- sub_816E6D4(0);
+ CreateKyogreBubbleSprites_0(0);
}
break;
case 2:
@@ -1808,8 +1870,8 @@ static void Task_IntroFadeIn0(u8 taskId)
gTasks[taskId].data[2] -= 0x102;
data[6] = 8;
data[0]++;
- sub_816E6D4(0);
- sub_816E74C();
+ CreateKyogreBubbleSprites_0(0);
+ CreateKyogreBubbleSprites_1();
}
break;
case 3:
@@ -1891,7 +1953,7 @@ static void Task_IntroFadeIn0(u8 taskId)
{
data[6] = 0;
data[0]++;
- sub_816E6D4(taskId);
+ CreateKyogreBubbleSprites_0(taskId);
}
break;
case 11:
@@ -1914,43 +1976,43 @@ static void Task_IntroFadeIn0(u8 taskId)
case 13:
if (!gPaletteFade.active)
{
- gTasks[taskId].func = Task_IntroFadeIn1;
+ gTasks[taskId].func = Task_IntroLoadClouds1;
gScanlineEffect.state = 3;
}
break;
}
}
-static void sub_816E6D4(u8 a0)
+static void CreateKyogreBubbleSprites_0(u8 taskId)
{
int i;
u8 spriteId;
for (i = 0; i < 6; i++)
{
- spriteId = CreateSprite(&gUnknown_085E4D14, gUnknown_085E4CA8[i][0], gUnknown_085E4CA8[i][1], i);
+ spriteId = CreateSprite(&gUnknown_085E4D14, gIntroKyogreBubbleData[i][0], gIntroKyogreBubbleData[i][1], i);
gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].data[5] = a0;
- gSprites[spriteId].data[6] = gUnknown_085E4CA8[i][2];
+ gSprites[spriteId].data[5] = taskId;
+ gSprites[spriteId].data[6] = gIntroKyogreBubbleData[i][2];
gSprites[spriteId].data[7] = 0x40;
}
}
-static void sub_816E74C(void)
+static void CreateKyogreBubbleSprites_1(void)
{
int i;
u8 spriteId;
for (i = 0; i < 6; i++)
{
- spriteId = CreateSprite(&gUnknown_085E4D14, gUnknown_085E4CA8[i + 6][0], gUnknown_085E4CA8[i + 6][1], i);
+ spriteId = CreateSprite(&gUnknown_085E4D14, gIntroKyogreBubbleData[i + 6][0], gIntroKyogreBubbleData[i + 6][1], i);
gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].data[6] = gUnknown_085E4CA8[i][2];
+ gSprites[spriteId].data[6] = gIntroKyogreBubbleData[i][2];
gSprites[spriteId].data[7] = 0x40;
}
}
-static void sub_816E7B4(struct Sprite *sprite)
+static void SpriteCB_IntroKyogreBubbles(struct Sprite *sprite)
{
switch(sprite->data[0])
{
@@ -1988,7 +2050,7 @@ static void sub_816E7B4(struct Sprite *sprite)
}
}
-static void Task_IntroFadeIn1(u8 taskId)
+static void Task_IntroLoadClouds1(u8 taskId)
{
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0
| BLDCNT_TGT1_BG1
@@ -2025,29 +2087,29 @@ static void Task_IntroFadeIn1(u8 taskId)
SetGpuReg(REG_OFFSET_BG2HOFS, 0);
SetGpuReg(REG_OFFSET_BG2VOFS, 0);
LZDecompressVram(gIntro3CloudsGfx, (void *)VRAM);
- LZDecompressVram(gIntro3CloudsGfx, (void *)(VRAM + 0x4000));
- LZDecompressVram(gIntro3Clouds3Tilemap, (void *)(VRAM + 0xE000));
- gTasks[taskId].func = Task_IntroFadeIn2;
+ LZDecompressVram(gIntro3CloudsGfx, (void *)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gIntro3Clouds3Tilemap, (void *)(BG_SCREEN_ADDR(28)));
+ gTasks[taskId].func = Task_IntroLoadClouds2;
}
-static void Task_IntroFadeIn2(u8 taskId)
+static void Task_IntroLoadClouds2(u8 taskId)
{
- LZDecompressVram(gIntro3Clouds1Tilemap, (void *)(VRAM + 0xC000));
- LZDecompressVram(gIntro3Clouds2Tilemap, (void *)(VRAM + 0xD000));
- gTasks[taskId].func = Task_IntroFadeIn3;
+ LZDecompressVram(gIntro3Clouds1Tilemap, (void *)(BG_CHAR_ADDR(3)));
+ LZDecompressVram(gIntro3Clouds2Tilemap, (void *)(BG_SCREEN_ADDR(26)));
+ gTasks[taskId].func = Task_IntroLoadClouds3;
}
-static void Task_IntroFadeIn3(u8 taskId)
+static void Task_IntroLoadClouds3(u8 taskId)
{
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
- gTasks[taskId].func = Task_IntroFadeIn4;
+ gTasks[taskId].func = Task_IntroCloudScene;
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[6] = 16;
}
-static void Task_IntroFadeIn4(u8 taskId)
+static void Task_IntroCloudScene(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -2071,16 +2133,16 @@ static void Task_IntroFadeIn4(u8 taskId)
if (data[6] != 0)
data[6] -= 0x80;
else if (!gPaletteFade.active)
- gTasks[taskId].func = Task_IntroFadeIn5;
+ gTasks[taskId].func = Task_IntroLoadRayquazaLightningScene;
break;
}
}
-static void Task_IntroFadeIn5(u8 taskId)
+static void Task_IntroLoadRayquazaLightningScene(u8 taskId)
{
- LZDecompressVram(gIntro3RayquazaTilemap, (void *)(VRAM + 0xE000));
- LZDecompressVram(gIntro3Clouds4Tilemap, (void *)(VRAM + 0xC000));
- LZDecompressVram(gIntro3RayquazaGfx, (void *)(VRAM + 0x4000));
+ LZDecompressVram(gIntro3RayquazaTilemap, (void *)(BG_SCREEN_ADDR(28)));
+ LZDecompressVram(gIntro3Clouds4Tilemap, (void *)(BG_CHAR_ADDR(3)));
+ LZDecompressVram(gIntro3RayquazaGfx, (void *)(BG_CHAR_ADDR(1)));
LZDecompressVram(gIntro3Clouds2Gfx, (void *)VRAM);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
| DISPCNT_OBJ_1D_MAP
@@ -2088,15 +2150,15 @@ static void Task_IntroFadeIn5(u8 taskId)
| DISPCNT_BG2_ON
| DISPCNT_OBJ_ON
| DISPCNT_WIN0_ON);
- gTasks[taskId].func = Task_IntroFadeIn6;
+ gTasks[taskId].func = Task_IntroRayquazaLightningScene;
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[6] = 1;
gTasks[taskId].data[7] = 0;
- LoadCompressedSpriteSheetUsingHeap(gUnknown_085E4BF4);
- LoadSpritePalettes(gUnknown_085E4C04);
+ LoadCompressedSpriteSheetUsingHeap(gIntroRayquazaLightningSpriteSheet);
+ LoadSpritePalettes(gIntroRayquazaLightningPalette);
}
-static void Task_IntroFadeIn6(u8 taskId)
+static void Task_IntroRayquazaLightningScene(u8 taskId)
{
s16 *data = gTasks[taskId].data;
u8 spriteId;
@@ -2106,10 +2168,10 @@ static void Task_IntroFadeIn6(u8 taskId)
case 0:
if (--data[6] == 0)
{
- CreateSprite(&gUnknown_085E4C4C, 200, 48, 0);
- spriteId = CreateSprite(&gUnknown_085E4C4C, 200, 80, 1);
+ CreateSprite(&gIntroLightningSprite, 200, 48, 0);
+ spriteId = CreateSprite(&gIntroLightningSprite, 200, 80, 1);
StartSpriteAnim(&gSprites[spriteId], 1);
- spriteId = CreateSprite(&gUnknown_085E4C4C, 200, 112, 2);
+ spriteId = CreateSprite(&gIntroLightningSprite, 200, 112, 2);
StartSpriteAnim(&gSprites[spriteId], 2);
data[0]++;
data[6] = 72;
@@ -2118,10 +2180,10 @@ static void Task_IntroFadeIn6(u8 taskId)
case 1:
if (--data[6] == 0)
{
- CreateSprite(&gUnknown_085E4C4C, 40, 48, 0);
- spriteId = CreateSprite(&gUnknown_085E4C4C, 40, 80, 1);
+ CreateSprite(&gIntroLightningSprite, 40, 48, 0);
+ spriteId = CreateSprite(&gIntroLightningSprite, 40, 80, 1);
StartSpriteAnim(&gSprites[spriteId], 1);
- spriteId = CreateSprite(&gUnknown_085E4C4C, 40, 112, 2);
+ spriteId = CreateSprite(&gIntroLightningSprite, 40, 112, 2);
StartSpriteAnim(&gSprites[spriteId], 2);
data[0]++;
data[6] = 48;
@@ -2129,12 +2191,12 @@ static void Task_IntroFadeIn6(u8 taskId)
break;
case 2:
if (--data[6] == 0)
- gTasks[taskId].func = Task_IntroFadeIn7;
+ gTasks[taskId].func = Task_IntroLoadRayquazaGlowScene;
break;
}
}
-static void sub_816EC6C(struct Sprite *sprite)
+static void SpriteCB_IntroRayquazaLightning(struct Sprite *sprite)
{
if (sprite->animEnded)
sprite->invisible = TRUE;
@@ -2165,30 +2227,30 @@ static void sub_816EC6C(struct Sprite *sprite)
}
}
-static void Task_IntroFadeIn7(u8 taskId)
+static void Task_IntroLoadRayquazaGlowScene(u8 taskId)
{
u8 newTaskId;
- LoadCompressedSpriteSheet(gUnknown_085E5048);
- LoadSpritePalettes(gUnknown_085E5058);
+ LoadCompressedSpriteSheet(gIntroRayquazaGlowSpriteSheet);
+ LoadSpritePalettes(gIntroRayquazaGlowPalette);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG0_ON
| DISPCNT_BG2_ON
| DISPCNT_OBJ_ON
| DISPCNT_WIN0_ON);
- gTasks[taskId].func = Task_IntroFadeIn8;
+ gTasks[taskId].func = Task_IntroRayquazaGlowScene_0;
BeginNormalPaletteFade(0x0000FFDE, 0, 16, 0, RGB(9, 10, 10));
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0xA8;
gTasks[taskId].data[2] = -0x10;
gTasks[taskId].data[3] = -0x88;
gTasks[taskId].data[4] = -0x10;
- newTaskId = CreateTask(sub_816EEA8, 0);
+ newTaskId = CreateTask(Task_IntroRayquazaGlowScene_1, 0);
gTasks[newTaskId].data[4] = taskId;
}
-static void Task_IntroFadeIn8(u8 taskId)
+static void Task_IntroRayquazaGlowScene_0(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -2230,22 +2292,22 @@ static void Task_IntroFadeIn8(u8 taskId)
break;
case 3:
if (--data[5] == 0)
- gTasks[taskId].func = Task_IntroFadeIn9;
+ gTasks[taskId].func = Task_EndIntroMovie;
break;
}
}
-static void Task_IntroFadeIn9(u8 taskId)
+static void Task_EndIntroMovie(u8 taskId)
{
DestroyTask(taskId);
SetMainCallback2(MainCB2_EndIntro);
}
-static void sub_816EEA8(u8 taskId)
+static void Task_IntroRayquazaGlowScene_1(u8 taskId)
{
+ // Note: data[4] contains the taskId of Task_IntroRayquazaGlowScene_0
u8 spriteId;
s16 *data = gTasks[taskId].data;
-
data[2]++;
switch(data[0])
@@ -2292,7 +2354,7 @@ static void sub_816EEA8(u8 taskId)
}
if (data[1] == 6)
{
- spriteId = CreateSprite(&gUnknown_085E5030, 120, 88, 15);
+ spriteId = CreateSprite(&gIntroRayquazaHyperbeamSprite, 120, 88, 15);
PlaySE(SE_OP_BASYU);
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].data[3] = data[4];
@@ -2365,7 +2427,7 @@ static void Task_IntroWaterDrops_1(u8 taskId)
| BLDCNT_TGT2_BG3
| BLDCNT_TGT2_OBJ
| BLDCNT_TGT2_BD);
- SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[31]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[31]);
SetGpuReg(REG_OFFSET_BLDY, 0);
gTasks[taskId].data[1] = 0x40;
gTasks[taskId].data[0]++;
@@ -2377,11 +2439,11 @@ static void Task_IntroWaterDrops_1(u8 taskId)
gTasks[taskId].data[1]--;
tmp = gTasks[taskId].data[1] / 2;
- SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[tmp]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[tmp]);
}
else
{
- SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[0]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[0]);
gTasks[taskId].data[1] = 0x10;
gTasks[taskId].data[0]++;
}
@@ -2408,7 +2470,7 @@ static void Task_IntroWaterDrops_2(u8 taskId)
| BLDCNT_TGT2_BG3
| BLDCNT_TGT2_OBJ
| BLDCNT_TGT2_BD);
- SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[0]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[0]);
SetGpuReg(REG_OFFSET_BLDY, 0);
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[0]++;
@@ -2420,11 +2482,11 @@ static void Task_IntroWaterDrops_2(u8 taskId)
gTasks[taskId].data[1]++;
tmp = gTasks[taskId].data[1] / 2;
- SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[tmp]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[tmp]);
}
else
{
- SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[31]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[31]);
gTasks[taskId].data[1] = 0x10;
gTasks[taskId].data[0]++;
}
@@ -2445,15 +2507,15 @@ static void Task_IntroWaterDrops_2(u8 taskId)
}
}
-void sub_816F2A8(u16 scrX, u16 scrY, u16 zoom, u16 alpha)
+void PanFadeAndZoomScreen(u16 screenX, u16 screenY, u16 zoom, u16 alpha)
{
struct BgAffineSrcData src;
struct BgAffineDstData dest;
src.texX = 0x8000;
src.texY = 0x8000;
- src.scrX = scrX;
- src.scrY = scrY;
+ src.scrX = screenX;
+ src.scrY = screenY;
src.sx = zoom;
src.sy = zoom;
src.alpha = alpha;
@@ -2662,7 +2724,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
u8 spriteId;
u8 oldSpriteId;
- spriteId = CreateSprite(&gUnknown_085E4D64, x, y, 1);
+ spriteId = CreateSprite(&gIntroWaterDropSprite, x, y, 1);
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[7] = 0;
gSprites[spriteId].data[1] = d;
@@ -2680,7 +2742,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
gSprites[spriteId].callback = SpriteCB_WaterDropFall_2;
oldSpriteId = spriteId;
- spriteId = CreateSprite(&gUnknown_085E4D64, x, y, 1);
+ spriteId = CreateSprite(&gIntroWaterDropSprite, x, y, 1);
gSprites[spriteId].data[7] = oldSpriteId;
gSprites[spriteId].data[1] = d + 1;
gSprites[spriteId].oam.affineMode = 3;
@@ -2688,7 +2750,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
CalcCenterToCornerVec(&gSprites[spriteId], 0, 2, 2);
gSprites[spriteId].callback = sub_816F3A4;
- spriteId = CreateSprite(&gUnknown_085E4D64, x, y, 1);
+ spriteId = CreateSprite(&gIntroWaterDropSprite, x, y, 1);
gSprites[spriteId].data[7] = oldSpriteId;
gSprites[spriteId].data[1] = d + 2;
StartSpriteAnim(&gSprites[spriteId], 1);
@@ -2704,7 +2766,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
return oldSpriteId;
}
-static void sub_816F9D4(struct Sprite *sprite)
+static void SpriteCB_IntroGraphicsBicycle(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -2753,7 +2815,7 @@ static void sub_816F9D4(struct Sprite *sprite)
}
}
-static void sub_816FAB0(struct Sprite *sprite)
+static void SpriteCB_IntroGraphicsFlygon(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -2776,7 +2838,7 @@ static void sub_816FAB0(struct Sprite *sprite)
sprite->pos2.x -= 2;
break;
}
- sprite->pos2.y = Sin((u8)sprite->data[1], 8) - gUnknown_0203BCCC;
+ sprite->pos2.y = Sin((u8)sprite->data[1], 8) - gIntroGraphicsFlygonYOffset;
sprite->data[1] += 4;
}
@@ -2896,7 +2958,7 @@ static void sub_816FD44(struct Sprite *sprite)
}
}
-static u8 sub_816FDB8(s16 a0, s16 a1, s16 a2)
+static u8 CreatePart1Animations(s16 a0, s16 a1, s16 a2)
{
u16 i;
u8 spriteId;
@@ -2981,7 +3043,7 @@ static void sub_816FEDC(struct Sprite *sprite)
}
}
-static void sub_8170040(struct Sprite *sprite)
+static void SpriteCB_IntroRayquazaHyperbeam(struct Sprite *sprite)
{
u16 foo;
diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c
index d85e58938..059c1079e 100644
--- a/src/intro_credits_graphics.c
+++ b/src/intro_credits_graphics.c
@@ -57,123 +57,380 @@ static void nullsub_65(struct Sprite *sprite);
static void sub_817B7C4(struct Sprite *sprite);
static void nullsub_66(struct Sprite *sprite);
-static const struct SpriteTemplate gUnknown_085F504C = {
- 2000, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_817B62C
+static const struct SpriteTemplate gUnknown_085F504C =
+{
+ .tileTag = 2000,
+ .paletteTag = 0xFFFF,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_817B62C
};
-static const struct CompressedSpriteSheet gUnknown_085F5064[] = {
- { gUnknown_085F16A8, 0x400, 2000 },
- { NULL }
+static const struct CompressedSpriteSheet gUnknown_085F5064[] =
+{
+ {
+ .data = gUnknown_085F16A8,
+ .size = 0x400,
+ .tag = 2000
+ },
+ {}
};
-static const union AnimCmd gUnknown_085F5074[] = {
+static const union AnimCmd gUnknown_085F5074[] =
+{
ANIMCMD_FRAME( 0, 30),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085F507C[] = {
+static const union AnimCmd gUnknown_085F507C[] =
+{
ANIMCMD_FRAME(16, 30),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085F5084[] = {
+static const union AnimCmd gUnknown_085F5084[] =
+{
ANIMCMD_FRAME(20, 30),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085F508C[] = {
+static const union AnimCmd gUnknown_085F508C[] =
+{
ANIMCMD_FRAME(22, 30),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_085F5094[] = {
+static const union AnimCmd *const gUnknown_085F5094[] =
+{
gUnknown_085F5074,
gUnknown_085F507C,
gUnknown_085F5084,
gUnknown_085F508C
};
-static const struct IntroCreditsSpriteMetadata gUnknown_085F50A4[] = {
- { 0, ST_OAM_SQUARE, 2, 72, 32, 100, 0xc00 },
- { 0, ST_OAM_SQUARE, 2, 158, 32, 100, 0xc00 },
- { 1, ST_OAM_SQUARE, 1, 192, 40, 101, 0x800 },
- { 1, ST_OAM_SQUARE, 1, 56, 40, 101, 0x800 },
- { 2, ST_OAM_H_RECTANGLE, 0, 100, 44, 102, 0x400 },
- { 2, ST_OAM_H_RECTANGLE, 0, 152, 44, 102, 0x400 },
- { 3, ST_OAM_H_RECTANGLE, 0, 8, 46, 103, 0x100 },
- { 3, ST_OAM_H_RECTANGLE, 0, 56, 46, 103, 0x100 },
- { 3, ST_OAM_H_RECTANGLE, 0, 240, 46, 103, 0x100 },
+static const struct IntroCreditsSpriteMetadata gUnknown_085F50A4[] =
+{
+ {
+ .animNum = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .x = 72,
+ .y = 32,
+ .subpriority = 100,
+ .xOff = 0xc00
+ },
+ {
+ .animNum = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .x = 158,
+ .y = 32,
+ .subpriority = 100,
+ .xOff = 0xc00
+ },
+ {
+ .animNum = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
+ .x = 192,
+ .y = 40,
+ .subpriority = 101,
+ .xOff = 0x800
+ },
+ {
+ .animNum = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
+ .x = 56,
+ .y = 40,
+ .subpriority = 101,
+ .xOff = 0x800
+ },
+ {
+ .animNum = 2,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
+ .x = 100,
+ .y = 44,
+ .subpriority = 102,
+ .xOff = 0x400
+ },
+ {
+ .animNum = 2,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
+ .x = 152,
+ .y = 44,
+ .subpriority = 102,
+ .xOff = 0x400
+ },
+ {
+ .animNum = 3,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
+ .x = 8,
+ .y = 46,
+ .subpriority = 103,
+ .xOff = 0x100
+ },
+ {
+ .animNum = 3,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
+ .x = 56,
+ .y = 46,
+ .subpriority = 103,
+ .xOff = 0x100
+ },
+ {
+ .animNum = 3,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
+ .x = 240,
+ .y = 46,
+ .subpriority = 103,
+ .xOff = 0x100
+ },
};
-static const struct CompressedSpriteSheet gUnknown_085F50EC[] = {
- { gIntro2TreeTiles, 0x400, 2000 },
- { NULL }
+static const struct CompressedSpriteSheet gUnknown_085F50EC[] =
+{
+ {
+ .data = gIntro2TreeTiles,
+ .size = 0x400,
+ .tag = 2000
+ },
+ {}
};
-static const union AnimCmd gUnknown_085F50FC[] = {
+static const union AnimCmd gUnknown_085F50FC[] =
+{
ANIMCMD_FRAME( 0, 30),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085F5104[] = {
+static const union AnimCmd gUnknown_085F5104[] =
+{
ANIMCMD_FRAME(16, 30),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085F510C[] = {
+static const union AnimCmd gUnknown_085F510C[] =
+{
ANIMCMD_FRAME(24, 30),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_085F5114[] = {
+static const union AnimCmd *const gUnknown_085F5114[] =
+{
gUnknown_085F50FC,
gUnknown_085F5104,
gUnknown_085F510C
};
-static const struct IntroCreditsSpriteMetadata gUnknown_085F5120[] = {
- { 0, ST_OAM_SQUARE, 2, 16, 88, 100, 0x2000 },
- { 0, ST_OAM_SQUARE, 2, 80, 88, 100, 0x2000 },
- { 0, ST_OAM_SQUARE, 2, 144, 88, 100, 0x2000 },
- { 0, ST_OAM_SQUARE, 2, 208, 88, 100, 0x2000 },
- { 1, ST_OAM_V_RECTANGLE, 2, 40, 88, 101, 0x1000 },
- { 1, ST_OAM_V_RECTANGLE, 2, 104, 88, 101, 0x1000 },
- { 1, ST_OAM_V_RECTANGLE, 2, 168, 88, 101, 0x1000 },
- { 1, ST_OAM_V_RECTANGLE, 2, 232, 88, 101, 0x1000 },
- { 2, ST_OAM_V_RECTANGLE, 2, 56, 88, 102, 0x800 },
- { 2, ST_OAM_V_RECTANGLE, 2, 120, 88, 102, 0x800 },
- { 2, ST_OAM_V_RECTANGLE, 2, 184, 88, 102, 0x800 },
- { 2, ST_OAM_V_RECTANGLE, 2, 248, 88, 102, 0x800 },
+static const struct IntroCreditsSpriteMetadata gUnknown_085F5120[] =
+{
+ {
+ .animNum = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .x = 16,
+ .y = 88,
+ .subpriority = 100,
+ .xOff = 0x2000,
+ },
+ {
+ .animNum = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .x = 80,
+ .y = 88,
+ .subpriority = 100,
+ .xOff = 0x2000,
+ },
+ {
+ .animNum = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .x = 144,
+ .y = 88,
+ .subpriority = 100,
+ .xOff = 0x2000,
+ },
+ {
+ .animNum = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .x = 208,
+ .y = 88,
+ .subpriority = 100,
+ .xOff = 0x2000,
+ },
+ {
+ .animNum = 1,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
+ .x = 40,
+ .y = 88,
+ .subpriority = 101,
+ .xOff = 0x1000,
+ },
+ {
+ .animNum = 1,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
+ .x = 104,
+ .y = 88,
+ .subpriority = 101,
+ .xOff = 0x1000,
+ },
+ {
+ .animNum = 1,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
+ .x = 168,
+ .y = 88,
+ .subpriority = 101,
+ .xOff = 0x1000,
+ },
+ {
+ .animNum = 1,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
+ .x = 232,
+ .y = 88,
+ .subpriority = 101,
+ .xOff = 0x1000,
+ },
+ {
+ .animNum = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
+ .x = 56,
+ .y = 88,
+ .subpriority = 102,
+ .xOff = 0x800,
+ },
+ {
+ .animNum = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
+ .x = 120,
+ .y = 88,
+ .subpriority = 102,
+ .xOff = 0x800,
+ },
+ {
+ .animNum = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
+ .x = 184,
+ .y = 88,
+ .subpriority = 102,
+ .xOff = 0x800,
+ },
+ {
+ .animNum = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
+ .x = 248,
+ .y = 88,
+ .subpriority = 102,
+ .xOff = 0x800,
+ }
};
-static const struct CompressedSpriteSheet gUnknown_085F5180[] = {
- { gIntro2NightTiles, 0x400, 2000 },
- { NULL }
+static const struct CompressedSpriteSheet gUnknown_085F5180[] =
+{
+ {
+ .data = gIntro2NightTiles,
+ .size = 0x400,
+ .tag = 2000
+ },
+ {}
};
-static const union AnimCmd gUnknown_085F5190[] = {
+static const union AnimCmd gUnknown_085F5190[] =
+{
ANIMCMD_FRAME(0, 30),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_085F5198[] = {
+static const union AnimCmd *const gUnknown_085F5198[] =
+{
gUnknown_085F5190
};
-static const struct IntroCreditsSpriteMetadata gUnknown_085F519C[] = {
- { 0, ST_OAM_SQUARE, 2, 24, 88, 100, 0x1000 },
- { 0, ST_OAM_SQUARE, 2, 64, 88, 100, 0x1000 },
- { 0, ST_OAM_SQUARE, 2, 104, 88, 100, 0x1000 },
- { 0, ST_OAM_SQUARE, 2, 144, 88, 100, 0x1000 },
- { 0, ST_OAM_SQUARE, 2, 184, 88, 100, 0x1000 },
- { 0, ST_OAM_SQUARE, 2, 224, 88, 100, 0x1000 },
+static const struct IntroCreditsSpriteMetadata gUnknown_085F519C[] =
+{
+ {
+ .animNum = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .x = 24,
+ .y = 88,
+ .subpriority = 100,
+ .xOff = 0x1000,
+ },
+ {
+ .animNum = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .x = 64,
+ .y = 88,
+ .subpriority = 100,
+ .xOff = 0x1000,
+ },
+ {
+ .animNum = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .x = 104,
+ .y = 88,
+ .subpriority = 100,
+ .xOff = 0x1000,
+ },
+ {
+ .animNum = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .x = 144,
+ .y = 88,
+ .subpriority = 100,
+ .xOff = 0x1000,
+ },
+ {
+ .animNum = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .x = 184,
+ .y = 88,
+ .subpriority = 100,
+ .xOff = 0x1000,
+ },
+ {
+ .animNum = 0,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .x = 224,
+ .y = 88,
+ .subpriority = 100,
+ .xOff = 0x1000,
+ }
};
-static const struct OamData gOamData_85F51CC = {
- .y = 160, .shape = ST_OAM_SQUARE, .size = 3, .priority = 1
+static const struct OamData gOamData_85F51CC =
+{
+ .y = 160,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
+ .priority = 1
};
-static const union AnimCmd gUnknown_085F51D4[] = {
+static const union AnimCmd gUnknown_085F51D4[] =
+{
ANIMCMD_FRAME( 0, 8),
ANIMCMD_FRAME( 64, 8),
ANIMCMD_FRAME(128, 8),
@@ -181,23 +438,43 @@ static const union AnimCmd gUnknown_085F51D4[] = {
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const gUnknown_085F51E8[] = {
+static const union AnimCmd *const gUnknown_085F51E8[] =
+{
gUnknown_085F51D4
};
-static const struct SpriteTemplate gUnknown_085F51EC = {
- 1002, 1002, &gOamData_85F51CC, gUnknown_085F51E8, NULL, gDummySpriteAffineAnimTable, nullsub_65
+static const struct SpriteTemplate gUnknown_085F51EC =
+{
+ .tileTag = 1002,
+ .paletteTag = 1002,
+ .oam = &gOamData_85F51CC,
+ .anims = gUnknown_085F51E8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = nullsub_65
};
-static const struct SpriteTemplate gUnknown_085F5204 = {
- 1003, 1003, &gOamData_85F51CC, gUnknown_085F51E8, NULL, gDummySpriteAffineAnimTable, nullsub_65
+static const struct SpriteTemplate gUnknown_085F5204 =
+{
+ .tileTag = 1003,
+ .paletteTag = 1003,
+ .oam = &gOamData_85F51CC,
+ .anims = gUnknown_085F51E8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = nullsub_65
};
-static const struct OamData gUnknown_085F521C = {
- .y = 160, .shape = ST_OAM_H_RECTANGLE, .size = 3, .priority = 1
+static const struct OamData gUnknown_085F521C =
+{
+ .y = 160,
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
+ .priority = 1
};
-static const union AnimCmd gUnknown_085F5224[] = {
+static const union AnimCmd gUnknown_085F5224[] =
+{
ANIMCMD_FRAME( 0, 8),
ANIMCMD_FRAME( 32, 8),
ANIMCMD_FRAME( 64, 8),
@@ -205,119 +482,217 @@ static const union AnimCmd gUnknown_085F5224[] = {
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const gUnknown_085F5238[] = {
+static const union AnimCmd *const gUnknown_085F5238[] =
+{
gUnknown_085F5224
};
-static const struct SpriteTemplate gUnknown_085F523C = {
- 1001, 1002, &gUnknown_085F521C, gUnknown_085F5238, NULL, gDummySpriteAffineAnimTable, sub_817B7C4
+static const struct SpriteTemplate gUnknown_085F523C =
+{
+ .tileTag = 1001,
+ .paletteTag = 1002,
+ .oam = &gUnknown_085F521C,
+ .anims = gUnknown_085F5238,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_817B7C4
};
-static const struct SpriteTemplate gUnknown_085F5254 = {
- 1001, 1003, &gUnknown_085F521C, gUnknown_085F5238, NULL, gDummySpriteAffineAnimTable, sub_817B7C4
+static const struct SpriteTemplate gUnknown_085F5254 =
+{
+ .tileTag = 1001,
+ .paletteTag = 1003,
+ .oam = &gUnknown_085F521C,
+ .anims = gUnknown_085F5238,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_817B7C4
};
-static const struct OamData gUnknown_085F526C = {
- .y = 160, .shape = ST_OAM_SQUARE, .size = 3, .priority = 1
+static const struct OamData gUnknown_085F526C =
+{
+ .y = 160,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
+ .priority = 1
};
-static const union AnimCmd gUnknown_085F5274[] = {
+static const union AnimCmd gUnknown_085F5274[] =
+{
ANIMCMD_FRAME( 0, 16),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085F527C[] = {
+static const union AnimCmd gUnknown_085F527C[] =
+{
ANIMCMD_FRAME( 64, 16),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_085F5284[] = {
+static const union AnimCmd *const gUnknown_085F5284[] =
+{
gUnknown_085F5274,
gUnknown_085F527C
};
-static const struct SpriteTemplate gUnknown_085F528C = {
- 1004, 1004, &gUnknown_085F526C, gUnknown_085F5284, NULL, gDummySpriteAffineAnimTable, nullsub_66
+static const struct SpriteTemplate gUnknown_085F528C =
+{
+ .tileTag = 1004,
+ .paletteTag = 1004,
+ .oam = &gUnknown_085F526C,
+ .anims = gUnknown_085F5284,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = nullsub_66
};
-static const struct SpriteTemplate gUnknown_085F52A4 = {
- 1005, 1005, &gUnknown_085F526C, gUnknown_085F5284, NULL, gDummySpriteAffineAnimTable, nullsub_66
+static const struct SpriteTemplate gUnknown_085F52A4 =
+{
+ .tileTag = 1005,
+ .paletteTag = 1005,
+ .oam = &gUnknown_085F526C,
+ .anims = gUnknown_085F5284,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = nullsub_66
};
-const struct CompressedSpriteSheet gIntro2BrendanSpriteSheet[] = {
- { gIntro2BrendanNoTurnGfx, 0x2000, 1002 },
- { NULL }
+const struct CompressedSpriteSheet gIntro2BrendanSpriteSheet[] =
+{
+ {
+ .data = gIntro2BrendanNoTurnGfx,
+ .size = 0x2000,
+ .tag = 1002
+ },
+ {}
};
-const struct CompressedSpriteSheet gIntro2MaySpriteSheet[] = {
- { gIntro2MayNoTurnGfx, 0x2000, 1003 },
- { NULL }
+const struct CompressedSpriteSheet gIntro2MaySpriteSheet[] =
+{
+ {
+ .data = gIntro2MayNoTurnGfx,
+ .size = 0x2000,
+ .tag = 1003
+ },
+ {}
};
-const struct CompressedSpriteSheet gIntro2BicycleSpriteSheet[] = {
- { gIntro2BicycleTiles, 0x1000, 1001 },
- { NULL }
+const struct CompressedSpriteSheet gIntro2BicycleSpriteSheet[] =
+{
+ {
+ .data = gIntro2BicycleTiles,
+ .size = 0x1000,
+ .tag = 1001
+ },
+ {}
};
-static const struct CompressedSpriteSheet gUnknown_085F52EC[] = {
- { gIntro2FlygonGfx, 0x1000, 1004 },
- { NULL }
+static const struct CompressedSpriteSheet gUnknown_085F52EC[] =
+{
+ {
+ .data = gIntro2FlygonGfx,
+ .size = 0x1000,
+ .tag = 1004
+ },
+ {}
};
-const struct CompressedSpriteSheet gIntro2FlygonSpriteSheet[] = {
- { gIntro2FlygonGfx, 0x1000, 1005 },
- { NULL }
+const struct CompressedSpriteSheet gIntro2FlygonSpriteSheet[] =
+{
+ {
+ .data = gIntro2FlygonGfx,
+ .size = 0x1000,
+ .tag = 1005
+ },
+ {}
};
-const struct SpritePalette gUnknown_085F530C[] = {
- { gIntro2BrendanNoTurnPal, 1002 },
- { gIntro2BrendanNoTurnPal, 1003 },
- { gIntro2FlygonPal, 1004 },
- { gIntro2FlygonPal, 1005 },
- { NULL }
+const struct SpritePalette gIntroBikeAndFlygonPalette[] =
+{
+ { .data = gIntro2BrendanNoTurnPal, .tag = 1002 },
+ { .data = gIntro2BrendanNoTurnPal, .tag = 1003 },
+ { .data = gIntro2FlygonPal, .tag = 1004 },
+ { .data = gIntro2FlygonPal, .tag = 1005 },
+ {}
};
-const struct CompressedSpriteSheet gUnknown_085F5334[] = {
- { gIntro2BrendanTiles, 0x3800, 1002 },
- { NULL }
+const struct CompressedSpriteSheet gUnknown_085F5334[] =
+{
+ {
+ .data = gIntro2BrendanTiles,
+ .size = 0x3800,
+ .tag = 1002
+ },
+ {}
};
-const struct CompressedSpriteSheet gUnknown_085F5344[] = {
- { gIntro2MayTiles, 0x3800, 1003 },
- { NULL }
+const struct CompressedSpriteSheet gUnknown_085F5344[] =
+{
+ {
+ .data = gIntro2MayTiles,
+ .size = 0x3800,
+ .tag = 1003
+ },
+ {}
};
-const struct CompressedSpriteSheet gUnknown_085F5354[] = {
- { gIntro2BicycleTiles, 0x1000, 1001 },
- { NULL }
+const struct CompressedSpriteSheet gUnknown_085F5354[] =
+{
+ {
+ .data = gIntro2BicycleTiles,
+ .size = 0x1000,
+ .tag = 1001
+ },
+ {}
};
-static const struct CompressedSpriteSheet gUnknown_085F5364[] = {
- { gIntro2LatiosTiles, 0x1000, 1004 },
- { NULL }
+static const struct CompressedSpriteSheet gUnknown_085F5364[] =
+{
+ {
+ .data = gIntro2LatiosTiles,
+ .size = 0x1000,
+ .tag = 1004
+ },
+ {}
};
-static const struct CompressedSpriteSheet gUnknown_085F5374[] = {
- { gIntro2LatiasTiles, 0x1000, 1005 },
- { NULL }
+static const struct CompressedSpriteSheet gUnknown_085F5374[] =
+{
+ {
+ .data = gIntro2LatiasTiles,
+ .size = 0x1000,
+ .tag = 1005
+ },
+ {}
};
-const struct SpritePalette gUnknown_085F5384[] = {
- { gIntro2BrendanPalette, 1002 },
- { gIntro2MayPalette, 1003 },
- { gIntro2LatiosPalette, 1004 },
- { gIntro2LatiasPalette, 1005 },
- { NULL }
+const struct SpritePalette gUnknown_085F5384[] =
+{
+ { .data = gIntro2BrendanPalette, .tag = 1002 },
+ { .data = gIntro2MayPalette, .tag = 1003 },
+ { .data = gIntro2LatiosPalette, .tag = 1004 },
+ { .data = gIntro2LatiasPalette, .tag = 1005 },
+ {}
};
-const struct CompressedSpriteSheet gUnknown_085F53AC[] = {
- { gIntro2BrendanTiles, 0x2000, 1002},
- { NULL }
+const struct CompressedSpriteSheet gUnknown_085F53AC[] =
+{
+ {
+ .data = gIntro2BrendanTiles,
+ .size = 0x2000,
+ .tag = 1002
+ },
+ {}
};
-const struct CompressedSpriteSheet gUnknown_085F53BC[] = {
- { gIntro2MayTiles, 0x2000, 1003},
- { NULL }
+const struct CompressedSpriteSheet gUnknown_085F53BC[] =
+{
+ {
+ .data = gIntro2MayTiles,
+ .size = 0x2000,
+ .tag = 1003
+ },
+ {}
};
EWRAM_DATA u16 gUnknown_0203BD24 = 0;
@@ -331,15 +706,15 @@ 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 *)(BG_CHAR_ADDR(1)));
+ LZ77UnCompVram(gUnknown_085F0BC0, (void *)(BG_SCREEN_ADDR(15)));
LoadPalette(&gUnknown_085F06E0, 240, 32);
switch (a)
{
case 0:
default:
LZ77UnCompVram(gUnknown_085F0DBC, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1398, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F0CFC, 0, 96);
LoadCompressedSpriteSheet(gUnknown_085F5064);
LoadPalette(&gUnknown_085F1668, 256, 32);
@@ -347,7 +722,7 @@ void load_intro_part2_graphics(u8 a)
break;
case 1:
LZ77UnCompVram(gUnknown_085F1824, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1EAC, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F1EAC, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F17E4, 0, 32);
LoadCompressedSpriteSheet(gUnknown_085F50EC);
LoadPalette(&gUnknown_085F21B0, 256, 32);
@@ -358,6 +733,7 @@ void load_intro_part2_graphics(u8 a)
gReservedSpritePaletteCount = 8;
}
+// Note: This is only called with a=1.
void sub_817B150(u8 a)
{
switch (a)
@@ -437,15 +813,15 @@ 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 *)(BG_CHAR_ADDR(1)));
+ LZ77UnCompVram(gUnknown_085F0BC0, (void *)(BG_SCREEN_ADDR(15)));
switch (a)
{
case 0:
default:
LoadPalette(&gUnknown_085F06E0, 240, 32);
LZ77UnCompVram(gUnknown_085F0DBC, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1398, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F0CFC, 0, 96);
LoadCompressedSpriteSheet(gUnknown_085F5064);
LZ77UnCompVram(gUnknown_085F16A8, (void *)(VRAM + 0x10000));
@@ -455,7 +831,7 @@ void sub_817B1C8(u8 a)
case 1:
LoadPalette(&gUnknown_085F0700, 240, 32);
LZ77UnCompVram(gUnknown_085F0DBC, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1398, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F0D5C, 0, 96);
LoadCompressedSpriteSheet(gUnknown_085F5064);
LZ77UnCompVram(gUnknown_085F16A8, (void *)(VRAM + 0x10000));
@@ -466,7 +842,7 @@ void sub_817B1C8(u8 a)
case 3:
LoadPalette(&gUnknown_085F0700, 240, 32);
LZ77UnCompVram(gUnknown_085F1824, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1EAC, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F1EAC, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F1804, 0, 32);
LoadCompressedSpriteSheet(gUnknown_085F50EC);
LoadPalette(&gUnknown_085F1804, 256, 32);
@@ -475,7 +851,7 @@ void sub_817B1C8(u8 a)
case 4:
LoadPalette(&gUnknown_085F0720, 240, 32);
LZ77UnCompVram(gUnknown_085F235C, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F2568, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(gUnknown_085F2568, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F231C, 0, 64);
LoadCompressedSpriteSheet(gUnknown_085F5180);
LoadPalette(&gUnknown_085F2548, 256, 32);
@@ -509,7 +885,7 @@ void sub_817B3A8(u8 a)
| DISPCNT_OBJ_ON);
}
-u8 sub_817B3DC(u8 a, u16 b, u16 c, u16 d)
+u8 CreateBicycleAnimationTask(u8 a, u16 b, u16 c, u16 d)
{
u8 taskId = CreateTask(&sub_817B458, 0);
diff --git a/src/item.c b/src/item.c
index 71c2dc0f7..0e13ddf4c 100644
--- a/src/item.c
+++ b/src/item.c
@@ -539,8 +539,8 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
if (CurrentMapIsSecretBase() == TRUE)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x200);
- VarSet(VAR_0x40ED, itemId);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x200);
+ VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, itemId);
}
var = GetItemListPosition(pocket);
diff --git a/src/item_icon.c b/src/item_icon.c
index e9379dbba..7bf1a29ca 100644
--- a/src/item_icon.c
+++ b/src/item_icon.c
@@ -20,10 +20,10 @@ static const struct OamData sOamData_ItemIcon =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 2,
diff --git a/src/item_menu.c b/src/item_menu.c
index a220f02ef..81bc120a8 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -2,11 +2,13 @@
#include "item_menu.h"
#include "battle.h"
#include "battle_controllers.h"
+#include "battle_pyramid.h"
#include "frontier_util.h"
#include "berry_tag_screen.h"
#include "bg.h"
#include "constants/items.h"
#include "constants/songs.h"
+#include "data2.h"
#include "decompress.h"
#include "event_data.h"
#include "event_object_movement.h"
@@ -33,7 +35,6 @@
#include "player_pc.h"
#include "pokemon.h"
#include "pokemon_summary_screen.h"
-#include "rom_818CFC8.h"
#include "scanline_effect.h"
#include "script.h"
#include "shop.h"
@@ -140,7 +141,6 @@ void unknown_ItemMenu_Confirm2(u8 taskId);
void unknown_item_menu_type(u8 taskId);
void item_menu_type_2(u8 taskId);
void display_sell_item_ask_str(u8 taskId);
-void unknown_ItemMenu_Confirm(u8 taskId);
void display_deposit_item_ask_str(u8 taskId);
void item_menu_type_b(u8 taskId);
void BagMenuActuallyToss(u8 taskId);
@@ -446,7 +446,6 @@ EWRAM_DATA u16 gSpecialVar_ItemId = 0;
static EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0;
extern u8 *const gPocketNamesStringsTable[];
-extern const u8 gMoveNames[][0xD];
extern u8* gReturnToXStringsTable[];
extern const u8 EventScript_2736B3[];
extern const u16 gUnknown_0860F074[];
@@ -476,7 +475,7 @@ void CB2_ChooseBerry(void)
GoToBagMenu(RETURN_LOCATION_FIELD_2, BERRIES_POCKET, CB2_ReturnToFieldContinueScript);
}
-void sub_81AABF0(void(*callback)(void))
+void sub_81AABF0(void (*callback)(void))
{
GoToBagMenu(RETURN_LOCATION_FIELD_3, BERRIES_POCKET, callback);
}
@@ -884,7 +883,7 @@ void bag_menu_print_description_box_text(int a)
StringExpandPlaceholders(gStringVar4, gText_ReturnToVar1);
str = gStringVar4;
}
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, str, 3, 1, 0, 0, 0, 0);
}
@@ -896,7 +895,7 @@ void bag_menu_print_cursor_(u8 a, u8 b)
void bag_menu_print_cursor(u8 a, u8 b)
{
if (b == 0xFF)
- FillWindowPixelRect(0, 0, 0, a, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
+ FillWindowPixelRect(0, PIXEL_FILL(0), 0, a, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
else
bag_menu_print(0, 1, gText_SelectorArrow2, 0, a, 0, 0, 0, b);
@@ -1028,7 +1027,7 @@ void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void ( *callback)(u
s16* data = gTasks[taskId].data;
data[10] = AddItemMessageWindow(4);
- FillWindowPixelBuffer(data[10], 17);
+ FillWindowPixelBuffer(data[10], PIXEL_FILL(1));
DisplayMessageAndContinueTask(taskId, data[10], 10, 13, fontId, GetPlayerTextSpeedDelay(), str, callback);
schedule_bg_copy_tilemap_to_vram(1);
}
@@ -1102,13 +1101,13 @@ void Task_BagMenu(u8 taskId)
}
else
{
- int listPosition = ListMenuHandleInputGetItemId(data[0]);
+ int listPosition = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos);
switch (listPosition)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
if (gUnknown_0203CE58.location == 5)
{
PlaySE(SE_HAZURE);
@@ -1293,7 +1292,7 @@ void bag_menu_swap_items(u8 taskId)
gUnknown_0203CE54->unk81A = data[1];
CopyItemName(BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, data[1]), gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_MoveVar1Where);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
sub_80D4FEC(data[1]);
sub_81AB89C();
@@ -1304,7 +1303,7 @@ void bag_menu_swap_items(u8 taskId)
void sub_81AC3C0(u8 taskId)
{
s16* data = gTasks[taskId].data;
- int r7;
+ int input;
if (sub_81221EC() != TRUE)
{
@@ -1316,15 +1315,15 @@ void sub_81AC3C0(u8 taskId)
}
else
{
- r7 = ListMenuHandleInputGetItemId(data[0]);
+ input = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket], &gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
sub_80D4FC8(0);
sub_80D4FEC(gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket]);
- switch (r7)
+ switch (input)
{
- case -1:
+ case LIST_NOTHING_CHOSEN:
break;
- case -2:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
if (gMain.newKeys & A_BUTTON)
sub_81AC498(taskId);
@@ -1505,7 +1504,7 @@ void sub_81AC644(u8 unused)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
}
if (gUnknown_0203CE54->unk828 == 1)
@@ -1546,9 +1545,9 @@ void Task_HandleInBattleItemMenuInput(u8 taskId)
s8 r4 = Menu_ProcessInputNoWrap();
switch (r4)
{
- case -2:
+ case MENU_NOTHING_CHOSEN:
break;
- case -1:
+ case MENU_B_PRESSED:
PlaySE(SE_SELECT);
gUnknown_08613FB4[4].func.void_u8(taskId);
break;
@@ -1646,7 +1645,7 @@ void ItemMenu_UseOutOfBattle(u8 taskId)
bag_menu_print_there_is_no_pokemon(taskId);
else
{
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
schedule_bg_copy_tilemap_to_vram(0);
if (gUnknown_0203CE58.pocket != BERRIES_POCKET)
ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
@@ -1670,7 +1669,7 @@ void ItemMenu_Toss(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_TossHowManyVar1s);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
sub_81ABC3C(7);
gTasks[taskId].func = Task_ChooseHowManyToToss;
@@ -1684,7 +1683,7 @@ void BagMenuConfirmToss(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[8], 0, 3);
StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
bag_menu_yes_no(taskId, 5, &gUnknown_08614084);
}
@@ -1727,7 +1726,7 @@ void BagMenuActuallyToss(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[8], 0, 3);
StringExpandPlaceholders(gStringVar4, gText_ThrewAwayVar2Var1s);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
gTasks[taskId].func = Task_ActuallyToss;
}
@@ -2043,7 +2042,7 @@ void display_deposit_item_ask_str(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_DepositHowManyVar1);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
sub_81ABC3C(7);
gTasks[taskId].func = sub_81ADA7C;
@@ -2078,7 +2077,7 @@ void sub_81ADB14(u8 taskId)
{
s16* data = gTasks[taskId].data;
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
if (ItemId_GetImportance(gSpecialVar_ItemId))
{
bag_menu_print(1, 1, gText_CantStoreImportantItems, 3, 1, 0, 0, 0, 0);
@@ -2244,7 +2243,7 @@ void bag_menu_print_pocket_names(const u8 *pocketName1, const u8 *pocketName2)
window.width = 16;
window.height = 2;
windowId = AddWindow(&window);
- FillWindowPixelBuffer(windowId, 0);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
offset = GetStringCenterAlignXOffset(1, pocketName1, 0x40);
bag_menu_print(windowId, 1, pocketName1, offset, 1, 0, 0, -1, 1);
if (pocketName2)
@@ -2283,7 +2282,7 @@ void setup_bag_menu_textboxes(void)
LoadPalette(&gUnknown_0860F074, 0xF0, 0x20);
for (i = 0; i < 3; i++)
{
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
PutWindowTilemap(i);
}
schedule_bg_copy_tilemap_to_vram(0);
@@ -2306,7 +2305,7 @@ u8 bag_menu_add_window(u8 a)
if (*ptr == 0xFF)
{
*ptr = AddWindow(&gUnknown_086141AC[a]);
- SetWindowBorderStyle(*ptr, 0, 1, 14);
+ DrawStdFrameWithCustomTileAndPalette(*ptr, 0, 1, 14);
schedule_bg_copy_tilemap_to_vram(1);
}
return *ptr;
@@ -2317,7 +2316,7 @@ void bag_menu_remove_window(u8 a)
u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
if (*ptr != 0xFF)
{
- sub_8198070(*ptr, 0);
+ ClearStdWindowAndFrameToTransparent(*ptr, 0);
ClearWindowTilemap(*ptr);
RemoveWindow(*ptr);
schedule_bg_copy_tilemap_to_vram(1);
@@ -2338,7 +2337,8 @@ void bag_menu_RemoveBagItem_message_window(u8 a)
u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
if (*ptr != 0xFF)
{
- sub_8197DF8(*ptr, 0);
+ ClearDialogWindowAndFrameToTransparent(*ptr, FALSE);
+ // This ClearWindowTilemap call is redundant, since ClearDialogWindowAndFrameToTransparent already calls it.
ClearWindowTilemap(*ptr);
RemoveWindow(*ptr);
schedule_bg_copy_tilemap_to_vram(1);
@@ -2366,7 +2366,7 @@ void bag_menu_remove_money_window(void)
void bag_menu_prepare_tmhm_move_window(void)
{
- FillWindowPixelBuffer(3, 0);
+ FillWindowPixelBuffer(3, PIXEL_FILL(0));
blit_move_info_icon(3, 19, 0, 0);
blit_move_info_icon(3, 20, 0, 12);
blit_move_info_icon(3, 21, 0, 24);
@@ -2380,7 +2380,7 @@ void PrintTMHMMoveData(u16 itemId)
u16 moveId;
const u8* text;
- FillWindowPixelBuffer(4, 0);
+ FillWindowPixelBuffer(4, PIXEL_FILL(0));
if (itemId == ITEM_NONE)
{
for (i = 0; i < 4; i++)
diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c
index 669195b33..83ed3abfe 100644
--- a/src/item_menu_icons.c
+++ b/src/item_menu_icons.c
@@ -36,10 +36,10 @@ static const struct OamData sOamData_857FAA4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -146,10 +146,10 @@ static const struct OamData sOamData_857FB64 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 4,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -217,10 +217,10 @@ static const struct OamData sOamData_857FBC8 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 1,
.paletteNum = 7,
@@ -234,10 +234,10 @@ static const struct OamData sOamData_857FBD0 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 7,
@@ -374,10 +374,10 @@ static const struct OamData sOamData_857FDFC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
diff --git a/src/item_use.c b/src/item_use.c
index 6a7f6cec0..e646a18ee 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -1,19 +1,22 @@
#include "global.h"
#include "item_use.h"
#include "battle.h"
+#include "battle_pyramid.h"
#include "battle_pyramid_bag.h"
#include "berry.h"
#include "bike.h"
#include "coins.h"
#include "data2.h"
#include "event_data.h"
-#include "fieldmap.h"
#include "event_object_movement.h"
+#include "fieldmap.h"
+#include "field_effect.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
#include "field_weather.h"
#include "item.h"
#include "item_menu.h"
+#include "item_use.h"
#include "mail.h"
#include "main.h"
#include "menu.h"
@@ -24,7 +27,6 @@
#include "party_menu.h"
#include "pokeblock.h"
#include "pokemon.h"
-#include "rom_818CFC8.h"
#include "script.h"
#include "sound.h"
#include "strings.h"
@@ -37,33 +39,15 @@
#include "constants/items.h"
#include "constants/songs.h"
#include "constants/vars.h"
+#include "event_obj_lock.h"
-extern void(*gUnknown_0203A0F4)(u8 taskId);
-extern void (*gUnknown_03006328)(u8, TaskFunc);
-extern void unknown_ItemMenu_Confirm(u8 taskId);
-extern void sub_81C5B14(u8 taskId);
-extern void ScriptUnfreezeEventObjects(void);
-extern void ItemUseOutOfBattle_TMHM(u8 a);
-extern void ItemUseOutOfBattle_EvolutionStone(u8 b);
-extern bool8 IsPlayerFacingSurfableFishableWater(void);
-extern bool8 sub_81221AC(void);
extern u8 Route102_EventScript_274482[];
extern u8 Route102_EventScript_2744C0[];
extern u8 BattleFrontier_OutsideEast_EventScript_242CFC[];
-extern int sub_80247BC(void);
-extern struct MapHeader* mapconnection_get_mapheader(struct MapConnection *connection);
-extern void SetUpItemUseCallback(u8 taskId);
-extern void ItemUseCB_Medicine(u8, TaskFunc);
-extern void bag_menu_yes_no(u8, u8, const struct YesNoFuncTable*);
-extern void sub_81C5924(void);
-extern void sub_81C59BC(void);
-extern void sub_81AB9A8(u8);
-extern void StartEscapeRopeFieldEffect(void);
-extern u8* sub_806CF78(u16);
-extern void sub_81B89F0(void);
-extern u8 GetItemEffectType(u16);
-extern struct MapConnection *sub_8088A8C(s16, s16);
+extern s32 sub_80247BC(void);
+
+void SetUpItemUseCallback(u8 taskId);
void MapPostLoadHook_UseItem(void);
void sub_80AF6D4(void);
void Task_CallItemUseOnFieldCallback(u8 taskId);
@@ -100,6 +84,9 @@ void sub_80FDBEC(void);
bool8 sub_80FDE2C(void);
void ItemUseOutOfBattle_CannotUse(u8 taskId);
+// EWRAM variables
+EWRAM_DATA static void(*gUnknown_0203A0F4)(u8 taskId) = NULL;
+
// .rodata
static const MainCallback gUnknown_085920D8[] =
@@ -187,7 +174,7 @@ void DisplayCannotDismountBikeMessage(u8 taskId, bool8 isUsingRegisteredKeyItemO
void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId)
{
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
DestroyTask(taskId);
ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
@@ -349,7 +336,7 @@ void sub_80FD504(u8 taskId)
void sub_80FD5CC(u8 taskId)
{
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
DestroyTask(taskId);
@@ -403,12 +390,12 @@ bool8 sub_80FD6D4(const struct MapEvents *events, s16 x, s16 y)
bool8 sub_80FD730(struct MapConnection *connection, int x, int y)
{
- struct MapHeader *mapHeader;
+
u16 localX, localY;
u32 localOffset;
s32 localLength;
- mapHeader = mapconnection_get_mapheader(connection);
+ struct MapHeader const *const mapHeader = mapconnection_get_mapheader(connection);
switch (connection->direction)
{
diff --git a/src/learn_move.c b/src/learn_move.c
deleted file mode 100644
index 4db83861e..000000000
--- a/src/learn_move.c
+++ /dev/null
@@ -1,833 +0,0 @@
-#include "global.h"
-#include "main.h"
-#include "battle.h"
-#include "bg.h"
-#include "contest_effect.h"
-#include "data2.h"
-#include "event_data.h"
-#include "field_screen_effect.h"
-#include "gpu_regs.h"
-#include "learn_move.h"
-#include "list_menu.h"
-#include "alloc.h"
-#include "menu.h"
-#include "menu_helpers.h"
-#include "overworld.h"
-#include "palette.h"
-#include "pokemon_summary_screen.h"
-#include "pokenav.h"
-#include "script.h"
-#include "sound.h"
-#include "sprite.h"
-#include "string_util.h"
-#include "strings.h"
-#include "task.h"
-#include "constants/rgb.h"
-#include "constants/songs.h"
-
-static EWRAM_DATA struct
-{
- u8 state;
- u8 spriteIds[16]; /*0x001*/
- u16 movesToLearn[4]; /*0x012*/
- u8 filler1A[0x44 - 0x1A]; /*0x01A*/
- u8 partyMon; /*0x044*/
- u8 moveSlot; /*0x045*/
- struct ListMenuItem menuItems[20]; /*0x048*/
- u8 fillerE8[0x110 - 0xE8]; /*0x0E8*/
- u8 numMenuChoices; /*0x110*/
- u8 numToShowAtOnce; /*0x111*/
- u8 listMenuTask; /*0x112*/
- u8 scrollArrowTaskId1; /*0x113*/
- u8 scrollArrowTaskId2; /*0x114*/
- u16 scrollOffset; /*0x116*/
-} *sLearnMoveStruct = {0};
-
-static EWRAM_DATA struct {
- u16 listOffset;
- u16 listRow;
- u8 showContestInfo;
-} sLearnMoveStruct2 = {0};
-
-const u16 gUnknown_085CE9F8[] = INCBIN_U16("graphics/interface/ui_learn_move.gbapal");
-const u8 gUnknown_085CEA18[] = INCBIN_U8("graphics/interface/ui_learn_move.4bpp");
-
-const struct OamData gUnknown_085CEB98 =
-{
- .y = 0,
- .affineMode = 0,
- .objMode = ST_OAM_OBJ_NORMAL,
- .mosaic = 0,
- .bpp = ST_OAM_4BPP,
- .shape = ST_OAM_SQUARE,
- .x = 0,
- .matrixNum = 0,
- .size = 0,
- .tileNum = 0,
- .priority = 0,
- .paletteNum = 0,
- .affineParam = 0,
-};
-
-const struct OamData gUnknown_085CEBA0 =
-{
- .y = 0,
- .affineMode = 0,
- .objMode = ST_OAM_OBJ_NORMAL,
- .mosaic = 0,
- .bpp = ST_OAM_4BPP,
- .shape = ST_OAM_V_RECTANGLE,
- .x = 0,
- .matrixNum = 0,
- .size = 0,
- .tileNum = 0,
- .priority = 0,
- .paletteNum = 0,
- .affineParam = 0,
-};
-
-const struct OamData gUnknown_085CEBA8 =
-{
- .y = 0,
- .affineMode = 0,
- .objMode = ST_OAM_OBJ_NORMAL,
- .mosaic = 0,
- .bpp = ST_OAM_4BPP,
- .shape = ST_OAM_H_RECTANGLE,
- .x = 0,
- .matrixNum = 0,
- .size = 0,
- .tileNum = 0,
- .priority = 0,
- .paletteNum = 0,
- .affineParam = 0,
-};
-
-const struct SpriteSheet gUnknown_085CEBB0 =
-{
- .data = gUnknown_085CEA18,
- .size = 0x180,
- .tag = 5525
-};
-
-const struct SpritePalette gUnknown_085CEBB8 =
-{
- .data = gUnknown_085CE9F8,
- .tag = 5526
-};
-
-const struct ScrollArrowsTemplate gUnknown_085CEBC0 =
-{
- .firstArrowType = 0,
- .firstX = 27,
- .firstY = 16,
- .secondArrowType = 1,
- .secondX = 117,
- .secondY = 16,
- .fullyUpThreshold = -1,
- .fullyDownThreshold = -1,
- .tileTag = 5325,
- .palTag = 5325,
- .palNum = 0,
-};
-
-const struct ScrollArrowsTemplate gUnknown_085CEBD0 =
-{
- .firstArrowType = 2,
- .firstX = 192,
- .firstY = 8,
- .secondArrowType = 3,
- .secondX = 192,
- .secondY = 104,
- .fullyUpThreshold = 0,
- .fullyDownThreshold = 0,
- .tileTag = 5425,
- .palTag = 5425,
- .palNum = 0,
-};
-
-const union AnimCmd gUnknown_085CEBE0[] =
-{
- ANIMCMD_FRAME(8, 5, FALSE, FALSE),
- ANIMCMD_END
-};
-
-const union AnimCmd gUnknown_085CEBE8[] =
-{
- ANIMCMD_FRAME(9, 5, FALSE, FALSE),
- ANIMCMD_END
-};
-
-const union AnimCmd gUnknown_085CEBF0[] =
-{
- ANIMCMD_FRAME(10, 5, FALSE, FALSE),
- ANIMCMD_END
-};
-
-const union AnimCmd gUnknown_085CEBF8[] =
-{
- ANIMCMD_FRAME(11, 5, FALSE, FALSE),
- ANIMCMD_END
-};
-
-const union AnimCmd *const gUnknown_085CEC00[] =
-{
- gUnknown_085CEBE0,
- gUnknown_085CEBE8,
- gUnknown_085CEBF0,
- gUnknown_085CEBF8,
-};
-
-const struct SpriteTemplate gUnknown_085CEC10 =
-{
- .tileTag = 5525,
- .paletteTag = 5526,
- .oam = &gUnknown_085CEB98,
- .anims = gUnknown_085CEC00,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCallbackDummy
-};
-
-const struct BgTemplate gUnknown_085CEC28[] =
-{
- {
- .bg = 0,
- .charBaseIndex = 0,
- .mapBaseIndex = 31,
- .screenSize = 0,
- .paletteMode = 0,
- .priority = 0,
- .baseTile = 0,
- },
- {
- .bg = 1,
- .charBaseIndex = 0,
- .mapBaseIndex = 30,
- .screenSize = 0,
- .paletteMode = 0,
- .priority = 1,
- .baseTile = 0,
- },
-};
-
-static void LearnMoveMain(void);
-static void CreateMenuItemsList(void);
-static void CreateHearts(void);
-static void CB2_Main(void);
-static void Task_WaitForFadeOut(u8 taskId);
-static void CB2_InitLearnMove(void);
-static void CB2_InitLearnMoveReturnFromSelectMove(void);
-static void InitBGs(void);
-static void AddScrollArrows(void);
-static void HandleInput(u8);
-static void ShowTeachMoveText(u8);
-static s32 GetCurrentItemId(void);
-static void FreeListMenuResources(void);
-static void RemoveScrollArrows(void);
-static void HideSpritesAndPrintTeachText(bool8);
-
-static void VBlankCB_LearnMove(void)
-{
- LoadOam();
- ProcessSpriteCopyRequests();
- TransferPlttBuffer();
-}
-
-void TeachMoveTutorMove(void)
-{
- ScriptContext2_Enable();
- CreateTask(Task_WaitForFadeOut, 0xA);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
-}
-
-static void Task_WaitForFadeOut(u8 taskId)
-{
- if (!gPaletteFade.active)
- {
- SetMainCallback2(CB2_InitLearnMove);
- gFieldCallback = sub_80AF168;
- DestroyTask(taskId);
- }
-}
-
-static void CB2_InitLearnMove(void)
-{
- ResetSpriteData();
- FreeAllSpritePalettes();
- ResetTasks();
- clear_scheduled_bg_copies_to_vram();
- sLearnMoveStruct = AllocZeroed(sizeof(*sLearnMoveStruct));
- sLearnMoveStruct->partyMon = gSpecialVar_0x8004;
- SetVBlankCallback(VBlankCB_LearnMove);
-
- InitBGs();
- sub_81D2824(0);
-
- sLearnMoveStruct2.listOffset = 0;
- sLearnMoveStruct2.listRow = 0;
- sLearnMoveStruct2.showContestInfo = FALSE;
-
- CreateMenuItemsList();
-
- LoadSpriteSheet(&gUnknown_085CEBB0);
- LoadSpritePalette(&gUnknown_085CEBB8);
- CreateHearts();
-
- sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sLearnMoveStruct2.listOffset, sLearnMoveStruct2.listRow);
- FillPalette(RGB_BLACK, 0, 2);
- SetMainCallback2(CB2_Main);
-}
-
-static void CB2_InitLearnMoveReturnFromSelectMove(void)
-{
- ResetSpriteData();
- FreeAllSpritePalettes();
- ResetTasks();
- clear_scheduled_bg_copies_to_vram();
- sLearnMoveStruct = AllocZeroed(sizeof(*sLearnMoveStruct));
- sLearnMoveStruct->state = 28;
- sLearnMoveStruct->partyMon = gSpecialVar_0x8004;
- sLearnMoveStruct->moveSlot = gSpecialVar_0x8005;
- SetVBlankCallback(VBlankCB_LearnMove);
-
- InitBGs();
- sub_81D2824(sLearnMoveStruct2.showContestInfo);
- CreateMenuItemsList();
-
- LoadSpriteSheet(&gUnknown_085CEBB0);
- LoadSpritePalette(&gUnknown_085CEBB8);
- CreateHearts();
-
- sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sLearnMoveStruct2.listOffset, sLearnMoveStruct2.listRow);
- FillPalette(RGB_BLACK, 0, 2);
- SetMainCallback2(CB2_Main);
-}
-
-static void InitBGs(void)
-{
- ResetVramOamAndBgCntRegs();
- ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_085CEC28, 2);
- ResetAllBgsCoordinates();
- SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
- DISPCNT_OBJ_1D_MAP |
- DISPCNT_OBJ_ON);
- ShowBg(0);
- ShowBg(1);
- SetGpuReg(REG_OFFSET_BLDCNT, 0);
-}
-
-static void CB2_Main(void)
-{
- LearnMoveMain();
- RunTasks();
- AnimateSprites();
- BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
- UpdatePaletteFade();
-}
-
-static void sub_816084C(const u8 *src)
-{
- StringExpandPlaceholders(gStringVar4, src);
- sub_81D2BF4(gStringVar4);
-}
-
-static void LearnMoveMain(void)
-{
- switch (sLearnMoveStruct->state)
- {
- case 0:
- sLearnMoveStruct->state++;
- HideSpritesAndPrintTeachText(FALSE);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
- break;
- case 1:
- if (!gPaletteFade.active)
- {
- sLearnMoveStruct->state = 4;
- }
- break;
- case 2:
- sLearnMoveStruct->state++;
- break;
- case 3:
- HideSpritesAndPrintTeachText(FALSE);
- sLearnMoveStruct->state++;
- AddScrollArrows();
- break;
- case 4:
- HandleInput(FALSE);
- return;
- case 5:
- ShowTeachMoveText(FALSE);
- sLearnMoveStruct->state++;
- AddScrollArrows();
- break;
- case 6:
- HandleInput(TRUE);
- break;
- case 8:
- if (!sub_81D2C3C())
- {
- sub_81D2C50();
- sLearnMoveStruct->state++;
- }
- break;
- case 9:
- {
- s8 selection = Menu_ProcessInputNoWrapClearOnChoose();
-
- if (selection == 0)
- {
- if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], GetCurrentItemId()) != 0xFFFF)
- {
- sub_816084C(gText_PkmnLearnedMove4);
- gSpecialVar_0x8004 = 1;
- sLearnMoveStruct->state = 31;
- }
- else
- {
- sLearnMoveStruct->state = 16;
- }
- }
- else if (selection == -1 || selection == 1)
- {
- if (sLearnMoveStruct2.showContestInfo == FALSE)
- {
- sLearnMoveStruct->state = 3;
- }
- else if (sLearnMoveStruct2.showContestInfo == TRUE)
- {
- sLearnMoveStruct->state = 5;
- }
- }
- }
- break;
- case 12:
- if (!sub_81D2C3C())
- {
- sub_81D2C50();
- sLearnMoveStruct->state++;
- }
- break;
- case 13:
- {
- s8 selection = Menu_ProcessInputNoWrapClearOnChoose();
-
- if (selection == 0)
- {
- gSpecialVar_0x8004 = selection;
- sLearnMoveStruct->state = 14;
- }
- else if (selection == -1 || selection == 1)
- {
- if (sLearnMoveStruct2.showContestInfo == FALSE)
- {
- sLearnMoveStruct->state = 3;
- }
- else if (sLearnMoveStruct2.showContestInfo == TRUE)
- {
- sLearnMoveStruct->state = 5;
- }
- }
- }
- break;
- case 16:
- sub_816084C(gText_PkmnTryingToLearnMove);
- sLearnMoveStruct->state++;
- break;
- case 17:
- if (!sub_81D2C3C())
- {
- sub_81D2C50();
- sLearnMoveStruct->state = 18;
- }
- break;
- case 18:
- {
- s8 var = Menu_ProcessInputNoWrapClearOnChoose();
-
- if (var == 0)
- {
- sub_816084C(gText_WhichMoveToForget2);
- sLearnMoveStruct->state = 19;
- }
- else if (var == -1 || var == 1)
- {
- sLearnMoveStruct->state = 24;
- }
- }
- break;
- case 24:
- StringCopy(gStringVar2, gMoveNames[GetCurrentItemId()]);
- sub_816084C(gText_StopTryingToTeachMove);
- sLearnMoveStruct->state++;
- break;
- case 25:
- if (!sub_81D2C3C())
- {
- sub_81D2C50();
- sLearnMoveStruct->state++;
- }
- break;
- case 26:
- {
- s8 var = Menu_ProcessInputNoWrapClearOnChoose();
-
- if (var == 0)
- {
- sLearnMoveStruct->state = 27;
- }
- else if (var == -1 || var == 1)
- {
- // What's the point? It gets set to 16, anyway.
- if (sLearnMoveStruct2.showContestInfo == FALSE)
- {
- sLearnMoveStruct->state = 3;
- }
- else if (sLearnMoveStruct2.showContestInfo == TRUE)
- {
- sLearnMoveStruct->state = 5;
- }
- sLearnMoveStruct->state = 16;
- }
- }
- break;
- case 27:
- if (!sub_81D2C3C())
- {
- FillWindowPixelBuffer(3, 0x11);
- if (sLearnMoveStruct2.showContestInfo == FALSE)
- {
- sLearnMoveStruct->state = 3;
- }
- else if (sLearnMoveStruct2.showContestInfo == TRUE)
- {
- sLearnMoveStruct->state = 5;
- }
- }
- break;
- case 19:
- if (!sub_81D2C3C())
- {
- sLearnMoveStruct->state = 20;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
- }
- break;
- case 20:
- if (!gPaletteFade.active)
- {
- ShowSelectMovePokemonSummaryScreen(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, CB2_InitLearnMoveReturnFromSelectMove, GetCurrentItemId());
- FreeListMenuResources();
- }
- break;
- case 21:
- if (!sub_81D2C3C())
- {
- sLearnMoveStruct->state = 14;
- }
- break;
- case 22:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
- break;
- case 14:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
- sLearnMoveStruct->state++;
- break;
- case 15:
- if (!gPaletteFade.active)
- {
- FreeListMenuResources();
- SetMainCallback2(CB2_ReturnToField);
- }
- break;
- case 28:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
- sLearnMoveStruct->state++;
- if (sLearnMoveStruct2.showContestInfo == FALSE)
- {
- HideSpritesAndPrintTeachText(TRUE);
- }
- else if (sLearnMoveStruct2.showContestInfo == TRUE)
- {
- ShowTeachMoveText(TRUE);
- }
- RemoveScrollArrows();
- CopyWindowToVram(3, 2);
- break;
- case 29:
- if (!gPaletteFade.active)
- {
- if (sLearnMoveStruct->moveSlot == MAX_MON_MOVES)
- {
- sLearnMoveStruct->state = 24;
- }
- else
- {
- u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->moveSlot);
-
- StringCopy(gStringVar3, gMoveNames[moveId]);
- RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->moveSlot);
- SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], GetCurrentItemId(), sLearnMoveStruct->moveSlot);
- StringCopy(gStringVar2, gMoveNames[GetCurrentItemId()]);
- sub_816084C(gText_12AndPoof);
- sLearnMoveStruct->state = 30;
- gSpecialVar_0x8004 = 1;
- }
- }
- break;
- case 30:
- if (!sub_81D2C3C())
- {
- sub_816084C(gText_PkmnForgotMoveAndLearnedNew);
- sLearnMoveStruct->state = 31;
- PlayFanfare(MUS_FANFA1);
- }
- break;
- case 31:
- if (!sub_81D2C3C())
- {
- PlayFanfare(MUS_FANFA1);
- sLearnMoveStruct->state = 32;
- }
- break;
- case 32:
- if (IsFanfareTaskInactive())
- {
- sLearnMoveStruct->state = 33;
- }
- break;
- case 33:
- if (gMain.newKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- sLearnMoveStruct->state = 14;
- }
- break;
- }
-}
-
-static void FreeListMenuResources(void)
-{
- RemoveScrollArrows();
- DestroyListMenuTask(sLearnMoveStruct->listMenuTask, &sLearnMoveStruct2.listOffset, &sLearnMoveStruct2.listRow);
- FreeAllWindowBuffers();
- FREE_AND_SET_NULL(sLearnMoveStruct);
- ResetSpriteData();
- FreeAllSpritePalettes();
-}
-
-static void HideSpritesAndPrintTeachText(bool8 a)
-{
- s32 i;
-
- for (i = 0; i < 16; i++)
- {
- gSprites[sLearnMoveStruct->spriteIds[i]].invisible = TRUE;
- }
-
- if (!a)
- {
- StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn);
- FillWindowPixelBuffer(3, 0x11);
- AddTextPrinterParameterized(3, 1, gStringVar4, 0, 1, 0, NULL);
- }
-}
-
-static void HandleInput(bool8 showContest)
-{
- s32 itemId = ListMenuHandleInputGetItemId(sLearnMoveStruct->listMenuTask);
- ListMenuGetScrollAndRow(sLearnMoveStruct->listMenuTask, &sLearnMoveStruct2.listOffset, &sLearnMoveStruct2.listRow);
-
- switch (itemId)
- {
- case LIST_NOTHING_CHOSEN:
- if (!(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) && !GetLRKeysState())
- {
- break;
- }
-
- PlaySE(SE_SELECT);
-
- if (showContest == FALSE)
- {
- PutWindowTilemap(1);
- sLearnMoveStruct->state = 5;
- sLearnMoveStruct2.showContestInfo = TRUE;
- }
- else
- {
- PutWindowTilemap(0);
- sLearnMoveStruct->state = 3;
- sLearnMoveStruct2.showContestInfo = FALSE;
- }
-
- schedule_bg_copy_tilemap_to_vram(1);
- ShowHideHearts(GetCurrentItemId());
- break;
- case LIST_B_PRESSED:
- PlaySE(SE_SELECT);
- RemoveScrollArrows();
- sLearnMoveStruct->state = 12;
- StringExpandPlaceholders(gStringVar4, gText_GiveUpTeachingNewMove);
- sub_81D2BF4(gStringVar4);
- break;
- default:
- PlaySE(SE_SELECT);
- RemoveScrollArrows();
- sLearnMoveStruct->state = 8;
- StringCopy(gStringVar2, gMoveNames[itemId]);
- StringExpandPlaceholders(gStringVar4, gText_TeachX);
- sub_81D2BF4(gStringVar4);
- break;
- }
-}
-
-static s32 GetCurrentItemId(void)
-{
- return sLearnMoveStruct->menuItems[sLearnMoveStruct2.listRow + sLearnMoveStruct2.listOffset].id;
-}
-
-static void ShowTeachMoveText(bool8 showContest)
-{
- if (showContest == FALSE)
- {
- StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn);
- FillWindowPixelBuffer(3, 0x11);
- AddTextPrinterParameterized(3, 1, gStringVar4, 0, 1, 0, NULL);
- }
-}
-
-static void CreateHearts(void)
-{
- int i;
-
- sLearnMoveStruct->scrollArrowTaskId2 = -1;
- sLearnMoveStruct->scrollArrowTaskId1 = -1;
- AddScrollArrows();
-
- for (i = 0; i < 8; i++)
- {
- sLearnMoveStruct->spriteIds[i] = CreateSprite(&gUnknown_085CEC10, (i - (i / 4) * 4) * 8 + 104, (i / 4) * 8 + 36, 0);
- }
-
- for (i = 0; i < 8; i++)
- {
- sLearnMoveStruct->spriteIds[i + 8] = CreateSprite(&gUnknown_085CEC10, (i - (i / 4) * 4) * 8 + 104, (i / 4) * 8 + 52, 0);
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i + 8]], 2);
- }
-
- for (i = 0; i < 16; i++)
- {
- gSprites[sLearnMoveStruct->spriteIds[i]].invisible = TRUE;
- }
-}
-
-static void AddScrollArrows(void)
-{
- if (sLearnMoveStruct->scrollArrowTaskId2 == 0xFF)
- {
- sLearnMoveStruct->scrollArrowTaskId2 = AddScrollIndicatorArrowPair(&gUnknown_085CEBC0, &sLearnMoveStruct->scrollOffset);
- }
-
- if (sLearnMoveStruct->scrollArrowTaskId1 == 0xFF)
- {
- gTempScrollArrowTemplate = gUnknown_085CEBD0;
- gTempScrollArrowTemplate.fullyDownThreshold = sLearnMoveStruct->numMenuChoices - sLearnMoveStruct->numToShowAtOnce;
- sLearnMoveStruct->scrollArrowTaskId1 = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &sLearnMoveStruct2.listOffset);
- }
-}
-
-static void RemoveScrollArrows(void)
-{
- if (sLearnMoveStruct->scrollArrowTaskId2 != 0xFF)
- {
- RemoveScrollIndicatorArrowPair(sLearnMoveStruct->scrollArrowTaskId2);
- sLearnMoveStruct->scrollArrowTaskId2 = 0xFF;
- }
-
- if (sLearnMoveStruct->scrollArrowTaskId1 != 0xFF)
- {
- RemoveScrollIndicatorArrowPair(sLearnMoveStruct->scrollArrowTaskId1);
- sLearnMoveStruct->scrollArrowTaskId1 = 0xFF;
- }
-}
-
-static void CreateMenuItemsList(void)
-{
- s32 i;
- u8 nickname[POKEMON_NAME_LENGTH + 1];
-
- sLearnMoveStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn);
-
- for (i = 0; i < sLearnMoveStruct->numMenuChoices; i++)
- {
- sLearnMoveStruct->menuItems[i].name = gMoveNames[sLearnMoveStruct->movesToLearn[i]];
- sLearnMoveStruct->menuItems[i].id = sLearnMoveStruct->movesToLearn[i];
- }
-
- GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_NICKNAME, nickname);
- StringCopy10(gStringVar1, nickname);
- sLearnMoveStruct->menuItems[sLearnMoveStruct->numMenuChoices].name = gText_Cancel;
- sLearnMoveStruct->menuItems[sLearnMoveStruct->numMenuChoices].id = LIST_B_PRESSED;
- sLearnMoveStruct->numMenuChoices++;
- sLearnMoveStruct->numToShowAtOnce = sub_81D28C8(sLearnMoveStruct->menuItems, sLearnMoveStruct->numMenuChoices);
-}
-
-void ShowHideHearts(s32 item)
-{
- u16 numHearts;
- u16 i;
-
- if (!sLearnMoveStruct2.showContestInfo || item == LIST_B_PRESSED)
- {
- for (i = 0; i < 16; i++)
- {
- gSprites[sLearnMoveStruct->spriteIds[i]].invisible = TRUE;
- }
- }
- else
- {
- numHearts = (u8)(gContestEffects[gContestMoves[item].effect].appeal / 10);
-
- if (numHearts == 0xFF)
- {
- numHearts = 0;
- }
-
- for (i = 0; i < 8; i++)
- {
- if (i < numHearts)
- {
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 1);
- }
- else
- {
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 0);
- }
- gSprites[sLearnMoveStruct->spriteIds[i]].invisible = FALSE;
- }
-
- numHearts = (u8)(gContestEffects[gContestMoves[item].effect].jam / 10);
-
- if (numHearts == 0xFF)
- {
- numHearts = 0;
- }
-
- for (i = 0; i < 8; i++)
- {
- if (i < numHearts)
- {
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i + 8]], 3);
- }
- else
- {
- StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i + 8]], 2);
- }
- gSprites[sLearnMoveStruct->spriteIds[i + 8]].invisible = FALSE;
- }
- }
-}
diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c
index 3d4f8a90d..dc38d8848 100644
--- a/src/lilycove_lady.c
+++ b/src/lilycove_lady.c
@@ -695,7 +695,7 @@ u8 sub_818E2D8(void)
void sub_818E2FC(void)
{
- easy_chat_input_maybe();
+ ShowEasyChatScreen();
}
bool8 sub_818E308(void)
@@ -763,8 +763,8 @@ void sub_818E430(void)
void sub_818E47C(void)
{
- gSpecialVar_0x8004 = 0x11;
- easy_chat_input_maybe();
+ gSpecialVar_0x8004 = EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
+ ShowEasyChatScreen();
}
void sub_818E490(void)
diff --git a/src/link.c b/src/link.c
index bec9dddc6..525d50d7c 100644
--- a/src/link.c
+++ b/src/link.c
@@ -28,7 +28,7 @@
#include "link.h"
#include "link_rfu.h"
-extern u16 gUnknown_03005DA8;
+extern u16 gHeldKeyCodeToSend;
// Static type declarations
@@ -302,9 +302,9 @@ void LinkTestScreen(void)
SetMainCallback2(CB2_LinkTest);
}
-void sub_8009628(u8 a0)
+void SetLocalLinkPlayerId(u8 playerId)
{
- gLocalLinkPlayer.id = a0;
+ gLocalLinkPlayer.id = playerId;
}
static void InitLocalLinkPlayer(void)
@@ -695,12 +695,12 @@ static void BuildSendCmd(u16 command)
gSendCmd[0] = LINKCMD_0x5566;
break;
case LINKCMD_SEND_HELD_KEYS_2:
- if (gUnknown_03005DA8 == 0 || gLinkTransferringData)
+ if (gHeldKeyCodeToSend == 0 || gLinkTransferringData)
{
break;
}
gSendCmd[0] = LINKCMD_SEND_HELD_KEYS_2;
- gSendCmd[1] = gUnknown_03005DA8;
+ gSendCmd[1] = gHeldKeyCodeToSend;
break;
}
}
@@ -714,11 +714,11 @@ void sub_8009F18(void)
gLinkCallback = sub_8009F70;
}
-bool32 sub_8009F3C(void)
+bool32 IsSendingKeysToLink(void)
{
if (gWirelessCommType)
{
- return sub_800F7E4();
+ return IsSendingKeysToRfu();
}
if (gLinkCallback == sub_8009F70)
{
@@ -1142,7 +1142,7 @@ void ResetBlockReceivedFlag(u8 who)
}
}
-void sub_800A620(void)
+void CheckShouldAdvanceLinkState(void)
{
if ((gLinkStatus & LINK_STAT_MASTER) && EXTRACT_PLAYER_COUNT(gLinkStatus) > 1)
{
@@ -1327,7 +1327,9 @@ void sub_800AA04(u8 a0)
}
}
-u8 sub_800AA48(void)
+// The number of players when trading began. This is frequently compared against the
+// current number of connected players to check if anyone dropped out.
+u8 GetSavedPlayerCount(void)
{
return gSavedLinkPlayerCount;
}
@@ -1683,8 +1685,8 @@ static void sub_800B080(void)
CopyToBgTilemapBuffer(1, gWirelessLinkDisplayTilemap, 0, 0);
CopyBgTilemapBufferToVram(1);
LoadPalette(gWirelessLinkDisplayPal, 0, 0x20);
- FillWindowPixelBuffer(0, 0x00);
- FillWindowPixelBuffer(2, 0x00);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
AddTextPrinterParameterized3(0, 3, 2, 6, gUnknown_082ED224, 0, gText_CommErrorEllipsis);
AddTextPrinterParameterized3(2, 3, 2, 1, gUnknown_082ED224, 0, gText_MoveCloserToLinkPartner);
PutWindowTilemap(0);
@@ -1696,8 +1698,8 @@ static void sub_800B080(void)
static void sub_800B138(void)
{
LoadBgTiles(0, g2BlankTilesGfx, 0x20, 0);
- FillWindowPixelBuffer(1, 0x00);
- FillWindowPixelBuffer(2, 0x00);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
AddTextPrinterParameterized3(1, 3, 2, 0, gUnknown_082ED224, 0, gText_CommErrorCheckConnections);
PutWindowTilemap(1);
PutWindowTilemap(2);
@@ -1849,7 +1851,7 @@ bool8 HandleLinkConnection(void)
r5 = sub_8010F1C();
if (sub_808766C() == TRUE)
{
- if (r4 == TRUE || sub_800F0B8() || r5)
+ if (r4 == TRUE || IsRfuRecvQueueEmpty() || r5)
{
return TRUE;
}
@@ -1882,18 +1884,18 @@ void sub_800B4C0(void)
}
}
-u32 sub_800B4DC(void)
+u32 GetLinkRecvQueueLength(void)
{
if (gWirelessCommType != 0)
{
- return sub_80124D4();
+ return GetRfuRecvQueueLength();
}
return gLink.recvQueue.count;
}
-bool8 sub_800B504(void)
+bool32 sub_800B504(void)
{
- if (sub_800B4DC() > 2)
+ if (GetLinkRecvQueueLength() > 2)
{
return TRUE;
}
diff --git a/src/link_rfu.c b/src/link_rfu.c
index ebfc802e0..a557397f0 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -16,9 +16,10 @@
#include "task.h"
#include "text.h"
#include "constants/species.h"
+#include "save.h"
+#include "rom_8011DC0.h"
-extern u16 gUnknown_03005DA8;
-extern void nullsub_89(u8 taskId);
+extern u16 gHeldKeyCodeToSend;
struct UnkRfuStruct_1 gUnknown_03004140;
struct UnkRfuStruct_2 gUnknown_03005000;
@@ -154,7 +155,8 @@ const u8 sWireless_RSEtoASCIITable[] = {
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00
};
const struct OamData sWirelessStatusIndicatorOamData = {
- .size = 1
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16)
};
static const union AnimCmd sWirelessStatusIndicatorAnim0[] = {
// 3 bars
@@ -2347,17 +2349,17 @@ void sub_800E174(void)
}
}
-void sub_800E378(struct UnkSaveSubstruct_3b98 *dest, u32 trainerId, const u8 *name)
+void CopyTrainerRecord(struct TrainerNameRecord *dest, u32 trainerId, const u8 *name)
{
dest->trainerId = trainerId;
StringCopy(dest->trainerName, name);
}
-bool32 sub_800E388(const u8 *name)
+bool32 NameIsNotEmpty(const u8 *name)
{
s32 i;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
{
if (name[i] != 0)
{
@@ -2367,52 +2369,64 @@ bool32 sub_800E388(const u8 *name)
return FALSE;
}
-void sub_800E3A8(void)
+// Save the currently connected players into the trainer records, shifting all previous records down.
+void RecordMixTrainerNames(void)
{
if (gWirelessCommType != 0)
{
s32 i;
s32 j;
- s32 cnt;
- s32 sp0[5];
- struct UnkSaveSubstruct_3b98 *sp14 = calloc(20, sizeof(struct UnkSaveSubstruct_3b98));
+ s32 nextSpace;
+ s32 connectedTrainerRecordIndices[5];
+ struct TrainerNameRecord *newRecords = calloc(20, sizeof(struct TrainerNameRecord));
+
+ // Check if we already have a record saved for connected trainers.
for (i = 0; i < GetLinkPlayerCount(); i++)
{
- sp0[i] = -1;
+ connectedTrainerRecordIndices[i] = -1;
for (j = 0; j < 20; j++)
{
- if ((u16)gLinkPlayers[i].trainerId == gSaveBlock1Ptr->unk_3B98[j].trainerId && StringCompare(gLinkPlayers[i].name, gSaveBlock1Ptr->unk_3B98[j].trainerName) == 0)
+ if ((u16)gLinkPlayers[i].trainerId == gSaveBlock1Ptr->trainerNameRecords[j].trainerId && StringCompare(gLinkPlayers[i].name, gSaveBlock1Ptr->trainerNameRecords[j].trainerName) == 0)
{
- sp0[i] = j;
+ connectedTrainerRecordIndices[i] = j;
}
}
}
- cnt = 0;
+
+ // Save the connected trainers first, at the top of the list.
+ nextSpace = 0;
for (i = 0; i < GetLinkPlayerCount(); i++)
{
if (i != GetMultiplayerId() && gLinkPlayers[i].language != LANGUAGE_JAPANESE)
{
- sub_800E378(&sp14[cnt], (u16)gLinkPlayers[i].trainerId, gLinkPlayers[i].name);
- if (sp0[i] >= 0)
+ CopyTrainerRecord(&newRecords[nextSpace], (u16)gLinkPlayers[i].trainerId, gLinkPlayers[i].name);
+
+ // If we already had a record for this trainer, wipe it so that the next step doesn't duplicate it.
+ if (connectedTrainerRecordIndices[i] >= 0)
{
- memset(gSaveBlock1Ptr->unk_3B98[sp0[i]].trainerName, 0, 8);
+ memset(gSaveBlock1Ptr->trainerNameRecords[connectedTrainerRecordIndices[i]].trainerName, 0, 8);
}
- cnt++;
+ nextSpace++;
}
}
+
+ // Copy all non-empty records to the new list, in the order they appear on the old list. If the list is full,
+ // the last (oldest) records will be dropped.
for (i = 0; i < 20; i++)
{
- if (sub_800E388(gSaveBlock1Ptr->unk_3B98[i].trainerName))
+ if (NameIsNotEmpty(gSaveBlock1Ptr->trainerNameRecords[i].trainerName))
{
- sub_800E378(&sp14[cnt], gSaveBlock1Ptr->unk_3B98[i].trainerId, gSaveBlock1Ptr->unk_3B98[i].trainerName);
- if (++cnt >= 20)
+ CopyTrainerRecord(&newRecords[nextSpace], gSaveBlock1Ptr->trainerNameRecords[i].trainerId, gSaveBlock1Ptr->trainerNameRecords[i].trainerName);
+ if (++nextSpace >= 20)
{
break;
}
}
}
- memcpy(gSaveBlock1Ptr->unk_3B98, sp14, 20 * sizeof(struct UnkSaveSubstruct_3b98));
- free(sp14);
+
+ // Finalize the new list, and clean up.
+ memcpy(gSaveBlock1Ptr->trainerNameRecords, newRecords, 20 * sizeof(struct TrainerNameRecord));
+ free(newRecords);
}
}
@@ -2422,11 +2436,11 @@ bool32 sub_800E540(u16 id, u8 *name)
for (i = 0; i < 20; i++)
{
- if (StringCompare(gSaveBlock1Ptr->unk_3B98[i].trainerName, name) == 0 && gSaveBlock1Ptr->unk_3B98[i].trainerId == id)
+ if (StringCompare(gSaveBlock1Ptr->trainerNameRecords[i].trainerName, name) == 0 && gSaveBlock1Ptr->trainerNameRecords[i].trainerId == id)
{
return TRUE;
}
- if (!sub_800E388(gSaveBlock1Ptr->unk_3B98[i].trainerName))
+ if (!NameIsNotEmpty(gSaveBlock1Ptr->trainerNameRecords[i].trainerName))
{
return FALSE;
}
@@ -2434,14 +2448,14 @@ bool32 sub_800E540(u16 id, u8 *name)
return FALSE;
}
-void sub_800E5AC(void)
+void WipeTrainerNameRecords(void)
{
s32 i;
for (i = 0; i < 20; i++)
{
- gSaveBlock1Ptr->unk_3B98[i].trainerId = 0;
- CpuFill16(0, gSaveBlock1Ptr->unk_3B98[i].trainerName, 8);
+ gSaveBlock1Ptr->trainerNameRecords[i].trainerId = 0;
+ CpuFill16(0, gSaveBlock1Ptr->trainerNameRecords[i].trainerName, 8);
}
}
@@ -2978,7 +2992,7 @@ static void sub_800F048(void)
}
}
-bool32 sub_800F0B8(void)
+bool32 IsRfuRecvQueueEmpty(void)
{
s32 i;
s32 j;
@@ -3199,7 +3213,7 @@ bool32 sub_800F4F0(void)
for (i = 0; i < CMD_LENGTH - 1; i++)
gSendCmd[i] = 0;
}
- return sub_800F0B8();
+ return IsRfuRecvQueueEmpty();
}
void sub_800F638(u8 unused, u32 flags)
@@ -3259,10 +3273,12 @@ u8 sub_800F74C(const u8 *a0)
void rfu_func_080F97B8(void)
{
- if (gReceivedRemoteLinkPlayers && gUnknown_03005DA8 && gLinkTransferringData != 1)
+ if (gReceivedRemoteLinkPlayers
+ && gHeldKeyCodeToSend != LINK_KEY_CODE_NULL
+ && gLinkTransferringData != TRUE)
{
gUnknown_03000D78[0]++;
- gUnknown_03005DA8 |= (gUnknown_03000D78[0] << 8);
+ gHeldKeyCodeToSend |= (gUnknown_03000D78[0] << 8);
sub_800FD14(0xbe00);
}
}
@@ -3272,7 +3288,7 @@ struct UnkLinkRfuStruct_02022B14 *sub_800F7DC(void)
return &gUnknown_02022B14;
}
-bool32 sub_800F7E4(void)
+bool32 IsSendingKeysToRfu(void)
{
return gUnknown_03005000.unk_00 == rfu_func_080F97B8;
}
@@ -3496,7 +3512,7 @@ void sub_800FD14(u16 command)
gSendCmd[1 + i] = gUnknown_03005000.unk_f2[i];
break;
case 0xbe00:
- gSendCmd[1] = gUnknown_03005DA8;
+ gSendCmd[1] = gHeldKeyCodeToSend;
break;
case 0xee00:
break;
@@ -3786,10 +3802,10 @@ bool32 sub_8010454(u32 a0)
u8 sub_801048C(bool32 a0)
{
- if (a0 == 0)
+ if (a0 == FALSE)
return sub_800D550(0, 0);
sub_800D550(1, 0x258);
- return FALSE;
+ return 0;
}
void sub_80104B0(void)
@@ -5150,7 +5166,7 @@ u32 sub_80124C0(void)
return gUnknown_03005000.unk_9e8.unk_232;
}
-u32 sub_80124D4(void)
+u32 GetRfuRecvQueueLength(void)
{
return gUnknown_03005000.unk_124.unk_8c2;
}
diff --git a/src/list_menu.c b/src/list_menu.c
index 2476fae26..57bcc5c4f 100644
--- a/src/list_menu.c
+++ b/src/list_menu.c
@@ -129,10 +129,10 @@ static const struct OamData sOamData_ScrollArrowIndicator =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -186,8 +186,8 @@ static const struct Subsprite sSubsprite_RedOutline1 =
{
.x = 0,
.y = 0,
- .shape = 0,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.tileOffset = 0,
.priority = 0,
};
@@ -196,8 +196,8 @@ static const struct Subsprite sSubsprite_RedOutline2 =
{
.x = 0,
.y = 0,
- .shape = 0,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.tileOffset = 1,
.priority = 0,
};
@@ -206,8 +206,8 @@ static const struct Subsprite sSubsprite_RedOutline3 =
{
.x = 0,
.y = 0,
- .shape = 0,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.tileOffset = 2,
.priority = 0,
};
@@ -216,8 +216,8 @@ static const struct Subsprite sSubsprite_RedOutline4 =
{
.x = 0,
.y = 0,
- .shape = 0,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.tileOffset = 3,
.priority = 0,
};
@@ -226,8 +226,8 @@ static const struct Subsprite sSubsprite_RedOutline5 =
{
.x = 0,
.y = 0,
- .shape = 0,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.tileOffset = 4,
.priority = 0,
};
@@ -236,8 +236,8 @@ static const struct Subsprite sSubsprite_RedOutline6 =
{
.x = 0,
.y = 0,
- .shape = 0,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.tileOffset = 5,
.priority = 0,
};
@@ -246,8 +246,8 @@ static const struct Subsprite sSubsprite_RedOutline7 =
{
.x = 0,
.y = 0,
- .shape = 0,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.tileOffset = 6,
.priority = 0,
};
@@ -256,8 +256,8 @@ static const struct Subsprite sSubsprite_RedOutline8 =
{
.x = 0,
.y = 0,
- .shape = 0,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.tileOffset = 7,
.priority = 0,
};
@@ -269,10 +269,10 @@ static const struct OamData sOamData_RedArrowCursor =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -334,14 +334,14 @@ s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenu
sMysteryGiftLinkMenu.state = 1;
break;
case 1:
- sMysteryGiftLinkMenu.currItemId = ListMenuHandleInputGetItemId(sMysteryGiftLinkMenu.listTaskId);
+ sMysteryGiftLinkMenu.currItemId = ListMenu_ProcessInput(sMysteryGiftLinkMenu.listTaskId);
if (gMain.newKeys & A_BUTTON)
{
sMysteryGiftLinkMenu.state = 2;
}
if (gMain.newKeys & B_BUTTON)
{
- sMysteryGiftLinkMenu.currItemId = LIST_B_PRESSED;
+ sMysteryGiftLinkMenu.currItemId = LIST_CANCEL;
sMysteryGiftLinkMenu.state = 2;
}
if (sMysteryGiftLinkMenu.state == 2)
@@ -355,11 +355,11 @@ s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenu
switch (arg2)
{
case 0: // can never be reached, because of the if statement above
- sub_819746C(sMysteryGiftLinkMenu.windowId, FALSE);
+ ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE);
break;
case 2:
case 1:
- sub_819746C(sMysteryGiftLinkMenu.windowId, FALSE);
+ ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE);
break;
}
}
@@ -406,7 +406,7 @@ u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenu
return taskId;
}
-s32 ListMenuHandleInputGetItemId(u8 listTaskId)
+s32 ListMenu_ProcessInput(u8 listTaskId)
{
struct ListMenu *list = (void*) gTasks[listTaskId].data;
@@ -416,7 +416,7 @@ s32 ListMenuHandleInputGetItemId(u8 listTaskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- return LIST_B_PRESSED;
+ return LIST_CANCEL;
}
else if (gMain.newAndRepeatedKeys & DPAD_UP)
{
@@ -486,7 +486,7 @@ void RedrawListMenu(u8 listTaskId)
{
struct ListMenu *list = (void*) gTasks[listTaskId].data;
- FillWindowPixelBuffer(list->template.windowId, (list->template.fillValue << 4) | (list->template.fillValue));
+ FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue));
ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed);
ListMenuDrawCursor(list);
CopyWindowToVram(list->template.windowId, 2);
@@ -584,7 +584,7 @@ static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 sc
if (list->template.totalItems < list->template.maxShowed)
list->template.maxShowed = list->template.totalItems;
- FillWindowPixelBuffer(list->template.windowId, (list->template.fillValue << 4) | (list->template.fillValue));
+ FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue));
ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed);
ListMenuDrawCursor(list);
ListMenuCallSelectionChangedCallback(list, TRUE);
@@ -698,7 +698,7 @@ static void ListMenuErasePrintedCursor(struct ListMenu *list, u16 selectedRow)
u8 width = GetMenuCursorDimensionByFont(list->template.fontId, 0);
u8 height = GetMenuCursorDimensionByFont(list->template.fontId, 1);
FillWindowPixelRect(list->template.windowId,
- (list->template.fillValue << 4) | (list->template.fillValue),
+ PIXEL_FILL(list->template.fillValue),
list->template.cursor_X,
selectedRow * yMultiplier + list->template.upText_Y,
width,
@@ -795,7 +795,7 @@ static void ListMenuScroll(struct ListMenu *list, u8 count, bool8 movingDown)
{
if (count >= list->template.maxShowed)
{
- FillWindowPixelBuffer(list->template.windowId, (list->template.fillValue << 4) | (list->template.fillValue));
+ FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue));
ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed);
}
else
@@ -806,26 +806,26 @@ static void ListMenuScroll(struct ListMenu *list, u8 count, bool8 movingDown)
{
u16 y, width, height;
- ScrollWindow(list->template.windowId, 1, count * yMultiplier, (list->template.fillValue << 4) | (list->template.fillValue));
+ ScrollWindow(list->template.windowId, 1, count * yMultiplier, PIXEL_FILL(list->template.fillValue));
ListMenuPrintEntries(list, list->scrollOffset, 0, count);
y = (list->template.maxShowed * yMultiplier) + list->template.upText_Y;
width = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8;
height = (GetWindowAttribute(list->template.windowId, WINDOW_HEIGHT) * 8) - y;
FillWindowPixelRect(list->template.windowId,
- (list->template.fillValue << 4) | (list->template.fillValue),
+ PIXEL_FILL(list->template.fillValue),
0, y, width, height);
}
else
{
u16 width;
- ScrollWindow(list->template.windowId, 0, count * yMultiplier, (list->template.fillValue << 4) | (list->template.fillValue));
+ ScrollWindow(list->template.windowId, 0, count * yMultiplier, PIXEL_FILL(list->template.fillValue));
ListMenuPrintEntries(list, list->scrollOffset + (list->template.maxShowed - count), list->template.maxShowed - count, count);
width = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8;
FillWindowPixelRect(list->template.windowId,
- (list->template.fillValue << 4) | (list->template.fillValue),
+ PIXEL_FILL(list->template.fillValue),
0, 0, width, list->template.upText_Y);
}
}
diff --git a/src/load_save.c b/src/load_save.c
index 0d19c6dae..d6785254f 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -11,10 +11,10 @@
#include "trainer_hill.h"
#include "gba/flash_internal.h"
#include "decoration_inventory.h"
+#include "agb_flash.h"
static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
-extern bool16 IdentifyFlash(void);
extern void ApplyNewEncryptionKeyToBerryPowder(u32 key);
#define SAVEBLOCK_MOVE_RANGE 128
@@ -99,7 +99,7 @@ void MoveSaveBlocks_ResetHeap(void)
hblankCB = gMain.hblankCallback;
gMain.vblankCallback = NULL;
gMain.hblankCallback = NULL;
- gUnknown_0203CF5C = NULL;
+ gTrainerHillVBlankCounter = NULL;
saveBlock2Copy = (struct SaveBlock2 *)(gHeap);
saveBlock1Copy = (struct SaveBlock1 *)(gHeap + sizeof(struct SaveBlock2));
diff --git a/src/lottery_corner.c b/src/lottery_corner.c
index bd7d17ef7..bb3bb7a5c 100644
--- a/src/lottery_corner.c
+++ b/src/lottery_corner.c
@@ -27,7 +27,7 @@ void ResetLotteryCorner(void)
u16 rand = Random();
SetLotteryNumber((Random() << 16) | rand);
- VarSet(VAR_POKELOT_PRIZE, 0);
+ VarSet(VAR_POKELOT_PRIZE_ITEM, 0);
}
void SetRandomLotteryNumber(u16 i)
diff --git a/src/mail.c b/src/mail.c
index 45e96e85e..9cca4492e 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -102,7 +102,7 @@ struct MailRead
/*0x021d*/ u8 language;
/*0x021e*/ bool8 playerIsSender;
/*0x0220*/ u8 * (*parserSingle)(u8 *dest, u16 word);
- /*0x0224*/ void (*parserMultiple)(u8 *dest, const u16 *src, u16 length1, u16 length2);
+ /*0x0224*/ u8 * (*parserMultiple)(u8 *dest, const u16 *src, u16 length1, u16 length2);
/*0x0228*/ const struct MailLayout *layout;
/*0x022c*/ u8 bg1TilemapBuffer[0x1000];
/*0x122c*/ u8 bg2TilemapBuffer[0x1000];
@@ -477,8 +477,8 @@ static void sub_8121B1C(void)
y = 0;
PutWindowTilemap(0);
PutWindowTilemap(1);
- FillWindowPixelBuffer(0, 0);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
for (i = 0; i < sMailRead->layout->numSubStructs; i ++)
{
if (sMailRead->strbuf[i][0] == EOS || sMailRead->strbuf[i][0] == CHAR_SPACE)
diff --git a/src/main.c b/src/main.c
index 61c5e3386..40381bb68 100644
--- a/src/main.c
+++ b/src/main.c
@@ -24,9 +24,6 @@
#include "main.h"
#include "trainer_hill.h"
-extern void sub_800B9B8(void);
-extern u8 gUnknown_03002748;
-
static void VBlankIntr(void);
static void HBlankIntr(void);
static void VCountIntr(void);
@@ -163,7 +160,7 @@ static void UpdateLinkAndCallCallbacks(void)
static void InitMainCallbacks(void)
{
gMain.vblankCounter1 = 0;
- gUnknown_0203CF5C = NULL;
+ gTrainerHillVBlankCounter = NULL;
gMain.vblankCounter2 = 0;
gMain.callback1 = NULL;
SetMainCallback2(CB2_InitCopyrightScreenAfterBootup);
@@ -313,8 +310,6 @@ void SetSerialCallback(IntrCallback callback)
gMain.serialCallback = callback;
}
-extern void CopyBufferedValuesToGpuRegs(void);
-
static void VBlankIntr(void)
{
if (gWirelessCommType != 0)
@@ -324,8 +319,8 @@ static void VBlankIntr(void)
gMain.vblankCounter1++;
- if (gUnknown_0203CF5C && *gUnknown_0203CF5C < 0xFFFFFFFF)
- (*gUnknown_0203CF5C)++;
+ if (gTrainerHillVBlankCounter && *gTrainerHillVBlankCounter < 0xFFFFFFFF)
+ (*gTrainerHillVBlankCounter)++;
if (gMain.vblankCallback)
gMain.vblankCallback();
@@ -393,14 +388,14 @@ static void WaitForVBlank(void)
;
}
-void sub_80008DC(u32 *var)
+void SetTrainerHillVBlankCounter(u32 *counter)
{
- gUnknown_0203CF5C = var;
+ gTrainerHillVBlankCounter = counter;
}
-void sub_80008E8(void)
+void ClearTrainerHillVBlankCounter(void)
{
- gUnknown_0203CF5C = NULL;
+ gTrainerHillVBlankCounter = NULL;
}
void DoSoftReset(void)
diff --git a/src/main_menu.c b/src/main_menu.c
index 4cd5c8e14..e6e29d942 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -39,6 +39,135 @@
#include "title_screen.h"
#include "window.h"
+/*
+ * Main menu state machine
+ * -----------------------
+ *
+ * Entry point: CB2_InitMainMenu
+ *
+ * Note: States advance sequentially unless otherwise stated.
+ *
+ * CB2_InitMainMenu / CB2_ReinitMainMenu
+ * - Both of these states call InitMainMenu, which does all the work.
+ * - In the Reinit case, the init code will check if the user came from
+ * the options screen. If they did, then the options menu item is
+ * pre-selected.
+ *
+ * Task_MainMenuCheckSaveFile
+ * - Determines how many menu options to show based on whether
+ * the save file is Ok, empty, corrupted, etc.
+ * - If there was an error loading the save file, advance to
+ * Task_WaitForSaveFileErrorWindow.
+ * - If there were no errors, advance to Task_MainMenuCheckBattery.
+ * - Note that the check to enable Mystery Events would normally happen
+ * here, but this version of Emerald has them disabled.
+ *
+ * Task_WaitForSaveFileErrorWindow
+ * - Wait for the text to finish printing and then for the A button
+ * to be pressed.
+ *
+ * Task_MainMenuCheckBattery
+ * - If the battery is OK, advance to Task_DisplayMainMenu.
+ * - If the battery is dry, advance to Task_WaitForBatteryDryErrorWindow.
+ *
+ * Task_WaitForBatteryDryErrorWindow
+ * - Wait for the text to finish printing and then for the A button
+ * to be pressed.
+ *
+ * Task_DisplayMainWindow
+ * - Display the buttons to the user. If the menu is in HAS_MYSTERY_EVENTS
+ * mode, there are too many buttons for one screen and a scrollbar is added,
+ * and the scrollbar task is spawned (Task_ScrollIndicatorArrowPairOnMainMenu).
+ *
+ * Task_HighlightSelectedMainMenuItem
+ * - Update the UI to match the currently selected item.
+ *
+ * Task_HandleMainMenuInput
+ * - If A is pressed, advance to Task_HandleMainMenuAPressed.
+ * - If B is pressed, return to the title screen via CB2_InitTitleScreen.
+ * - If Up or Down is pressed, handle scrolling if there is a scroll bar, change
+ * the selection, then go back to Task_HighlightSelectedMainMenuItem.
+ *
+ * Task_HandleMainMenuAPressed
+ * - If the user selected New Game, advance to Task_NewGameBirchSpeech_Init.
+ * - If the user selected Continue, advance to CB2_ContinueSavedGame.
+ * - If the user selected the Options menu, advance to CB2_InitOptionMenu.
+ * - If the user selected Mystery Gift, advance to CB2_MysteryGift. However,
+ * if the wireless adapter was removed, instead advance to
+ * Task_DisplayMainMenuInvalidActionError.
+ * - Code to start a Mystery Event is present here, but is unreachable in this
+ * version.
+ *
+ * Task_HandleMainMenuBPressed
+ * - Clean up the main menu and go back to CB2_InitTitleScreen.
+ *
+ * Task_DisplayMainMenuInvalidActionError
+ * - Print one of three different error messages, wait for the text to stop
+ * printing, and then wait for A or B to be pressed.
+ * - Then advance to Task_HandleMainMenuBPressed.
+ *
+ * Task_NewGameBirchSpeechInit
+ * - Load the sprites for the intro speech, start playing music
+ * Task_NewGameBirchSpeech_WaitToShowBirch
+ * - Spawn Task_NewGameBirchSpeech_FadeInTarget1OutTarget2
+ * - Spawn Task_NewGameBirchSpeech_FadePlatformOut
+ * - Both of these tasks destroy themselves when done.
+ * Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome
+ * Task_NewGameBirchSpeech_ThisIsAPokemon
+ * - When the text is done printing, spawns Task_NewGameBirchSpeechSub_InitPokeball
+ * Task_NewGameBirchSpeech_MainSpeech
+ * Task_NewGameBirchSpeech_AndYouAre
+ * Task_NewGameBirchSpeech_StartBirchLotadPlatformFade
+ * Task_NewGameBirchSpeech_StartBirchLotadPlatformFade
+ * Task_NewGameBirchSpeech_SlidePlatformAway
+ * Task_NewGameBirchSpeech_StartPlayerFadeIn
+ * Task_NewGameBirchSpeech_WaitForPlayerFadeIn
+ * Task_NewGameBirchSpeech_BoyOrGirl
+ * Task_NewGameBirchSpeech_WaitToShowGenderMenu
+ * Task_NewGameBirchSpeech_ChooseGender
+ * - Animates by advancing to Task_NewGameBirchSpeech_SlideOutOldGenderSprite
+ * whenever the player's selection changes.
+ * - Advances to Task_NewGameBirchSpeech_WhatsYourName when done.
+ *
+ * Task_NewGameBirchSpeech_SlideOutOldGenderSprite
+ * Task_NewGameBirchSpeech_SlideInNewGenderSprite
+ * - Returns back to Task_NewGameBirchSpeech_ChooseGender.
+ *
+ * Task_NewGameBirchSpeech_WhatsYourName
+ * Task_NewGameBirchSpeech_WaitForWhatsYourNameToPrint
+ * Task_NewGameBirchSpeech_WaitPressBeforeNameChoice
+ * Task_NewGameBirchSpeech_StartNamingScreen
+ * C2_NamingScreen
+ * - Returns to CB2_NewGameBirchSpeech_ReturnFromNamingScreen when done
+ * CB2_NewGameBirchSpeech_ReturnFromNamingScreen
+ * Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox
+ * Task_NewGameBirchSpeech_SoItsPlayerName
+ * Task_NewGameBirchSpeech_CreateNameYesNo
+ * Task_NewGameBirchSpeech_ProcessNameYesNoMenu
+ * - If confirmed, advance to Task_NewGameBirchSpeech_SlidePlatformAway2.
+ * - Otherwise, return to Task_NewGameBirchSpeech_BoyOrGirl.
+ *
+ * Task_NewGameBirchSpeech_SlidePlatformAway2
+ * Task_NewGameBirchSpeech_ReshowBirchLotad
+ * Task_NewGameBirchSpeech_WaitForSpriteFadeInAndTextPrinter
+ * Task_NewGameBirchSpeech_AreYouReady
+ * Task_NewGameBirchSpeech_ShrinkPlayer
+ * Task_NewGameBirchSpeech_WaitForPlayerShrink
+ * Task_NewGameBirchSpeech_FadePlayerToWhite
+ * Task_NewGameBirchSpeech_Cleanup
+ * - Advances to CB2_NewGame.
+ *
+ * Task_NewGameBirchSpeechSub_InitPokeball
+ * - Advances to Task_NewGameBirchSpeechSub_WaitForLotad
+ * Task_NewGameBirchSpeechSub_WaitForLotad
+ * - Destroys itself when done.
+ */
+
+// These two defines are used with the sCurrItemAndOptionsMenuCheck,
+// to distinguish between its two parts.
+#define OPTION_MENU_FLAG 0x8000
+#define CURRENT_ITEM_MASK 0x7FFF
+
// Static type declarations
// Static RAM declarations
@@ -112,7 +241,7 @@ static void SpriteCB_MovePlayerDownWhileShrinking(struct Sprite*);
static void Task_NewGameBirchSpeech_WaitForPlayerShrink(u8);
static void Task_NewGameBirchSpeech_FadePlayerToWhite(u8);
static void Task_NewGameBirchSpeech_Cleanup(u8);
-static void nullsub_11();
+static void SpriteCB_Null();
static void Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox(u8);
static void MainMenu_FormatSavegamePlayer(void);
static void MainMenu_FormatSavegamePokedex(void);
@@ -247,7 +376,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] =
DUMMY_WIN_TEMPLATE
};
-static const struct WindowTemplate gUnknown_082FF080[] =
+static const struct WindowTemplate gNewGameBirchSpeechTextWindows[] =
{
{
.bg = 0,
@@ -542,7 +671,7 @@ static void Task_MainMenuCheckSaveFile(u8 taskId)
gTasks[taskId].func = Task_WaitForSaveFileErrorWindow;
break;
}
- if (sCurrItemAndOptionMenuCheck & 0x8000) // are we returning from the options menu?
+ if (sCurrItemAndOptionMenuCheck & OPTION_MENU_FLAG) // are we returning from the options menu?
{
switch (tMenuType) // if so, highlight the OPTIONS item
{
@@ -558,7 +687,7 @@ static void Task_MainMenuCheckSaveFile(u8 taskId)
break;
}
}
- sCurrItemAndOptionMenuCheck &= 0x7FFF; // turn off the "returning from options menu" flag
+ sCurrItemAndOptionMenuCheck &= CURRENT_ITEM_MASK; // turn off the "returning from options menu" flag
tCurrItem = sCurrItemAndOptionMenuCheck;
tItemCount = tMenuType + 2;
}
@@ -637,6 +766,8 @@ static void Task_DisplayMainMenu(u8 taskId)
palette = RGB(26, 26, 25);
LoadPalette(&palette, 252, 2);
+ // Note: If there is no save file, the save block is zeroed out,
+ // so the default gender is MALE.
if (gSaveBlock2Ptr->playerGender == MALE)
{
palette = RGB(4, 16, 31);
@@ -652,8 +783,8 @@ static void Task_DisplayMainMenu(u8 taskId)
{
case HAS_NO_SAVED_GAME:
default:
- FillWindowPixelBuffer(0, 0xAA);
- FillWindowPixelBuffer(1, 0xAA);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(1, PIXEL_FILL(0xA));
AddTextPrinterParameterized3(0, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame);
AddTextPrinterParameterized3(1, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuOption);
PutWindowTilemap(0);
@@ -664,9 +795,9 @@ static void Task_DisplayMainMenu(u8 taskId)
DrawMainMenuWindowBorder(&sWindowTemplates_MainMenu[1], MAIN_MENU_BORDER_TILE);
break;
case HAS_SAVED_GAME:
- FillWindowPixelBuffer(2, 0xAA);
- FillWindowPixelBuffer(3, 0xAA);
- FillWindowPixelBuffer(4, 0xAA);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(3, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(4, PIXEL_FILL(0xA));
AddTextPrinterParameterized3(2, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuContinue);
AddTextPrinterParameterized3(3, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame);
AddTextPrinterParameterized3(4, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuOption);
@@ -682,10 +813,10 @@ static void Task_DisplayMainMenu(u8 taskId)
DrawMainMenuWindowBorder(&sWindowTemplates_MainMenu[4], MAIN_MENU_BORDER_TILE);
break;
case HAS_MYSTERY_GIFT:
- FillWindowPixelBuffer(2, 0xAA);
- FillWindowPixelBuffer(3, 0xAA);
- FillWindowPixelBuffer(4, 0xAA);
- FillWindowPixelBuffer(5, 0xAA);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(3, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(4, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(5, PIXEL_FILL(0xA));
AddTextPrinterParameterized3(2, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuContinue);
AddTextPrinterParameterized3(3, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame);
AddTextPrinterParameterized3(4, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuMysteryGift);
@@ -705,11 +836,11 @@ static void Task_DisplayMainMenu(u8 taskId)
DrawMainMenuWindowBorder(&sWindowTemplates_MainMenu[5], MAIN_MENU_BORDER_TILE);
break;
case HAS_MYSTERY_EVENTS:
- FillWindowPixelBuffer(2, 0xAA);
- FillWindowPixelBuffer(3, 0xAA);
- FillWindowPixelBuffer(4, 0xAA);
- FillWindowPixelBuffer(5, 0xAA);
- FillWindowPixelBuffer(6, 0xAA);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(3, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(4, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(5, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(6, PIXEL_FILL(0xA));
AddTextPrinterParameterized3(2, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuContinue);
AddTextPrinterParameterized3(3, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame);
AddTextPrinterParameterized3(4, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuMysteryGift2);
@@ -813,14 +944,14 @@ static void Task_HandleMainMenuAPressed(u8 taskId)
{
if (gTasks[taskId].tMenuType == HAS_MYSTERY_EVENTS)
RemoveScrollIndicatorArrowPair(gTasks[taskId].tScrollArrowTaskId);
- sub_819746C(0, 1);
- sub_819746C(1, 1);
- sub_819746C(2, 1);
- sub_819746C(3, 1);
- sub_819746C(4, 1);
- sub_819746C(5, 1);
- sub_819746C(6, 1);
- sub_819746C(7, 1);
+ ClearStdWindowAndFrame(0, TRUE);
+ ClearStdWindowAndFrame(1, TRUE);
+ ClearStdWindowAndFrame(2, TRUE);
+ ClearStdWindowAndFrame(3, TRUE);
+ ClearStdWindowAndFrame(4, TRUE);
+ ClearStdWindowAndFrame(5, TRUE);
+ ClearStdWindowAndFrame(6, TRUE);
+ ClearStdWindowAndFrame(7, TRUE);
wirelessAdapterConnected = IsWirelessAdapterConnected();
switch (gTasks[taskId].tMenuType)
{
@@ -973,7 +1104,7 @@ static void Task_HandleMainMenuAPressed(u8 taskId)
if (action != ACTION_OPTION)
sCurrItemAndOptionMenuCheck = 0;
else
- sCurrItemAndOptionMenuCheck |= 0x8000; // entering the options menu
+ sCurrItemAndOptionMenuCheck |= OPTION_MENU_FLAG; // entering the options menu
}
}
@@ -981,7 +1112,7 @@ static void Task_HandleMainMenuBPressed(u8 taskId)
{
if (!gPaletteFade.active)
{
- if (gTasks[taskId].tMenuType == 3)
+ if (gTasks[taskId].tMenuType == HAS_MYSTERY_EVENTS)
RemoveScrollIndicatorArrowPair(gTasks[taskId].tScrollArrowTaskId);
sCurrItemAndOptionMenuCheck = 0;
FreeAllWindowBuffers();
@@ -1147,7 +1278,7 @@ static void Task_NewGameBirchSpeech_Init(u8 taskId)
SetGpuReg(REG_OFFSET_BLDY, 0);
LZ77UnCompVram(sBirchSpeechShadowGfx, (void*)VRAM);
- LZ77UnCompVram(sBirchSpeechBgMap, (void*)(VRAM + 0x3800));
+ LZ77UnCompVram(sBirchSpeechBgMap, (void*)(BG_SCREEN_ADDR(7)));
LoadPalette(sBirchSpeechBgPals, 0, 64);
LoadPalette(sBirchSpeechPlatformBlackPal, 1, 16);
ScanlineEffect_Stop();
@@ -1199,7 +1330,7 @@ static void Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome(u8 taskId)
}
else
{
- InitWindows(gUnknown_082FF080);
+ InitWindows(gNewGameBirchSpeechTextWindows);
LoadMainMenuWindowFrameTiles(0, 0xF3);
LoadMessageBoxGfx(0, 0xFC, 0xF0);
NewGameBirchSpeech_ShowDialogueWindow(0, 1);
@@ -1642,7 +1773,7 @@ static void Task_NewGameBirchSpeech_FadePlayerToWhite(u8 taskId)
if (!gPaletteFade.active)
{
spriteId = gTasks[taskId].tPlayerSpriteId;
- gSprites[spriteId].callback = nullsub_11;
+ gSprites[spriteId].callback = SpriteCB_Null;
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
BeginNormalPaletteFade(0xFFFF0000, 0, 0, 16, RGB_WHITEALPHA);
gTasks[taskId].func = Task_NewGameBirchSpeech_Cleanup;
@@ -1687,7 +1818,7 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void)
DmaFill16(3, 0, PLTT, PLTT_SIZE);
ResetPaletteFade();
LZ77UnCompVram(sBirchSpeechShadowGfx, (u8*)VRAM);
- LZ77UnCompVram(sBirchSpeechBgMap, (u8*)(VRAM + 0x3800));
+ LZ77UnCompVram(sBirchSpeechBgMap, (u8*)(BG_SCREEN_ADDR(7)));
LoadPalette(sBirchSpeechBgPals, 0, 64);
LoadPalette(&sBirchSpeechBgGradientPal[1], 1, 16);
ResetTasks();
@@ -1730,14 +1861,14 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void)
REG_IME = savedIme;
SetVBlankCallback(VBlankCB_MainMenu);
SetMainCallback2(CB2_MainMenu);
- InitWindows(gUnknown_082FF080);
+ InitWindows(gNewGameBirchSpeechTextWindows);
LoadMainMenuWindowFrameTiles(0, 0xF3);
LoadMessageBoxGfx(0, 0xFC, 0xF0);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
}
-static void nullsub_11(struct Sprite *sprite)
+static void SpriteCB_Null(struct Sprite *sprite)
{
}
@@ -1763,22 +1894,22 @@ static void AddBirchSpeechObjects(u8 taskId)
u8 maySpriteId;
birchSpriteId = AddNewGameBirchObject(0x88, 0x3C, 1);
- gSprites[birchSpriteId].callback = nullsub_11;
+ gSprites[birchSpriteId].callback = SpriteCB_Null;
gSprites[birchSpriteId].oam.priority = 0;
gSprites[birchSpriteId].invisible = TRUE;
gTasks[taskId].tBirchSpriteId = birchSpriteId;
lotadSpriteId = NewGameBirchSpeech_CreateLotadSprite(100, 0x4B);
- gSprites[lotadSpriteId].callback = nullsub_11;
+ gSprites[lotadSpriteId].callback = SpriteCB_Null;
gSprites[lotadSpriteId].oam.priority = 0;
gSprites[lotadSpriteId].invisible = TRUE;
gTasks[taskId].tLotadSpriteId = lotadSpriteId;
brendanSpriteId = CreateTrainerSprite(FacilityClassToPicIndex(FACILITY_CLASS_BRENDAN), 120, 60, 0, &gDecompressionBuffer[0]);
- gSprites[brendanSpriteId].callback = nullsub_11;
+ gSprites[brendanSpriteId].callback = SpriteCB_Null;
gSprites[brendanSpriteId].invisible = TRUE;
gSprites[brendanSpriteId].oam.priority = 0;
gTasks[taskId].tBrendanSpriteId = brendanSpriteId;
maySpriteId = CreateTrainerSprite(FacilityClassToPicIndex(FACILITY_CLASS_MAY), 120, 60, 0, &gDecompressionBuffer[0x800]);
- gSprites[maySpriteId].callback = nullsub_11;
+ gSprites[maySpriteId].callback = SpriteCB_Null;
gSprites[maySpriteId].invisible = TRUE;
gSprites[maySpriteId].oam.priority = 0;
gTasks[taskId].tMaySpriteId = maySpriteId;
@@ -1966,8 +2097,8 @@ static void NewGameBirchSpeech_StartFadePlatformOut(u8 taskId, u8 delay)
static void NewGameBirchSpeech_ShowGenderMenu(void)
{
- DrawMainMenuWindowBorder(&gUnknown_082FF080[1], 0xF3);
- FillWindowPixelBuffer(1, 17);
+ DrawMainMenuWindowBorder(&gNewGameBirchSpeechTextWindows[1], 0xF3);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
PrintMenuTable(1, 2, sMenuActions_Gender);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(1, 2, 0);
PutWindowTilemap(1);
@@ -1995,7 +2126,7 @@ static void NewGameBirchSpeech_SetDefaultPlayerName(u8 nameId)
static void CreateMainMenuErrorWindow(const u8* str)
{
- FillWindowPixelBuffer(7, 17);
+ FillWindowPixelBuffer(7, PIXEL_FILL(1));
AddTextPrinterParameterized(7, 1, str, 0, 1, 2, 0);
PutWindowTilemap(7);
CopyWindowToVram(7, 2);
@@ -2105,12 +2236,12 @@ static void NewGameBirchSpeech_ClearGenderWindowTilemap(u8 a, u8 b, u8 c, u8 d,
FillBgTilemapBufferRect(a, 0, b + 0xFF, c + 0xFF, d + 2, e + 2, 2);
}
-static void NewGameBirchSpeech_ClearGenderWindow(u8 windowId, u8 a)
+static void NewGameBirchSpeech_ClearGenderWindow(u8 windowId, bool8 copyToVram)
{
CallWindowFunction(windowId, NewGameBirchSpeech_ClearGenderWindowTilemap);
- FillWindowPixelBuffer(windowId, 0x11);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
ClearWindowTilemap(windowId);
- if (a == 1)
+ if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
@@ -2146,7 +2277,7 @@ void CreateYesNoMenuParameterized(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f)
static void NewGameBirchSpeech_ShowDialogueWindow(u8 windowId, u8 copyToVram)
{
CallWindowFunction(windowId, NewGameBirchSpeech_CreateDialogueWindowBorder);
- FillWindowPixelBuffer(windowId, 17);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
diff --git a/src/map_name_popup.c b/src/map_name_popup.c
index c13747006..d95b808e9 100644
--- a/src/map_name_popup.c
+++ b/src/map_name_popup.c
@@ -1,6 +1,5 @@
#include "global.h"
-#include "constants/region_map_sections.h"
-#include "constants/weather.h"
+#include "battle_pyramid.h"
#include "bg.h"
#include "event_data.h"
#include "gpu_regs.h"
@@ -9,11 +8,13 @@
#include "map_name_popup.h"
#include "palette.h"
#include "region_map.h"
-#include "rom_818CFC8.h"
#include "start_menu.h"
#include "string_util.h"
#include "task.h"
#include "text.h"
+#include "constants/layouts.h"
+#include "constants/region_map_sections.h"
+#include "constants/weather.h"
// enums
enum MapPopUp_Themes
@@ -206,7 +207,7 @@ bool8 sub_80D47D4(void)
void ShowMapNamePopup(void)
{
- if (FlagGet(FLAG_SPECIAL_FLAG_0x4000) != TRUE)
+ if (FlagGet(FLAG_HIDE_MAP_NAME_POPUP) != TRUE)
{
if (!FuncIsActiveTask(Task_MapNamePopUpWindow))
{
@@ -275,7 +276,7 @@ static void Task_MapNamePopUpWindow(u8 taskId)
}
break;
case 4:
- sub_819746C(GetMapNamePopUpWindowId(), TRUE);
+ ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE);
task->data[0] = 5;
break;
case 5:
@@ -289,7 +290,7 @@ void HideMapNamePopUpWindow(void)
{
if (FuncIsActiveTask(Task_MapNamePopUpWindow))
{
- sub_819746C(GetMapNamePopUpWindowId(), TRUE);
+ ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE);
RemoveMapNamePopUpWindow();
SetGpuReg_ForcedBlank(REG_OFFSET_BG0VOFS, 0);
DestroyTask(sPopupTaskId);
@@ -305,7 +306,7 @@ static void ShowMapNamePopUpWindow(void)
if (InBattlePyramid())
{
- if (gMapHeader.mapLayoutId == 0x17A)
+ if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP)
{
withoutPrefixPtr = &(mapDisplayHeader[3]);
mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[7];
diff --git a/src/match_call.c b/src/match_call.c
index e7e91969f..641079ba9 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -111,8 +111,6 @@ static void PopulateSpeciesFromTrainerParty(int, u8 *);
static void PopulateBattleFrontierFacilityName(int, u8 *);
static void PopulateBattleFrontierStreak(int, u8 *);
-extern void sub_81973A4(void);
-
#define TEXT_ID(topic, id) (((topic) << 8) | ((id) & 0xFF))
static const struct MatchCallTrainerTextInfo sMatchCallTrainers[] =
@@ -1016,7 +1014,7 @@ static bool32 MapAllowsMatchCall(void)
if (gMapHeader.regionMapSectionId == MAPSEC_SOOTOPOLIS_CITY
&& FlagGet(FLAG_HIDE_SOOTOPOLIS_CITY_RAYQUAZA) == TRUE
- && FlagGet(FLAG_UNUSED_0x0DC) == FALSE)
+ && FlagGet(FLAG_NEVER_SET_0x0DC) == FALSE)
return FALSE;
if (gMapHeader.regionMapSectionId == MAPSEC_MT_CHIMNEY
@@ -1191,7 +1189,7 @@ static bool32 LoadMatchCallWindowGfx(u8 taskId)
return FALSE;
}
- FillWindowPixelBuffer(taskData[2], 0x88);
+ FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8));
LoadPalette(sUnknown_0860EA4C, 0xE0, 0x20);
LoadPalette(sPokeNavIconPalette, 0xF0, 0x20);
ChangeBgY(0, -0x2000, 0);
@@ -1241,7 +1239,7 @@ static bool32 sub_81962D8(u8 taskId)
s16 *taskData = gTasks[taskId].data;
if (!ExecuteMatchCallTextPrinter(taskData[2]))
{
- FillWindowPixelBuffer(taskData[2], 0x88);
+ FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8));
if (!gMatchCallState.triggeredFromScript)
SelectMatchCallMessage(gMatchCallState.trainerId, gStringVar4);
@@ -1257,7 +1255,7 @@ static bool32 sub_8196330(u8 taskId)
s16 *taskData = gTasks[taskId].data;
if (!ExecuteMatchCallTextPrinter(taskData[2]) && !IsSEPlaying() && gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- FillWindowPixelBuffer(taskData[2], 0x88);
+ FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8));
CopyWindowToVram(taskData[2], 2);
PlaySE(SE_TOREOFF);
return TRUE;
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index 1b4a25217..ec5cb238b 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -437,7 +437,7 @@ static void BardSong_TextSubPrinter(struct TextPrinterTemplate * printer, u16 a1
static void sub_8120708(const u8 * src)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, src, 0, 1, 1, BardSong_TextSubPrinter);
gUnknown_03002F84 = TRUE;
CopyWindowToVram(0, 3);
@@ -1182,9 +1182,9 @@ static void Task_StoryListMenu(u8 taskId) // Task_StoryListMenu
break;
case 1:
selection = Menu_ProcessInput();
- if (selection == -2)
+ if (selection == MENU_NOTHING_CHOSEN)
break;
- if (selection == -1 || selection == GetFreeStorySlot())
+ if (selection == MENU_B_PRESSED || selection == GetFreeStorySlot())
{
gSpecialVar_Result = 0;
}
diff --git a/src/menu.c b/src/menu.c
index ae589dff4..b04572b81 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -122,20 +122,18 @@ const struct MoveMenuInfoIcon gMoveMenuInfoIcons[] =
{ 8, 8, 0xAF }, // Unused (Small dark pokeball)
};
+
// Forward declarations
-extern void sub_81973A4(void);
-extern void DrawStandardFrame(u8, u8, u8, u8, u8, u8);
-extern void DrawDialogueFrame(u8, u8, u8, u8, u8, u8);
-extern void sub_81977BC(u8, u8, u8, u8, u8, u8);
-extern void sub_8197804(u8, u8, u8, u8, u8, u8);
-extern void sub_8197BB4(u8, u8, u8, u8, u8, u8);
-extern void sub_8197E30(u8, u8, u8, u8, u8, u8);
-extern void DrawWindowBorder(u8, u8, u8, u8, u8, u8);
-extern void sub_81980A8(u8, u8, u8, u8, u8, u8);
-extern u8 Menu_MoveCursor(s8);
-extern u8 sub_8199134(s8, s8);
-extern void sub_8198C78(void);
-extern void task_free_buf_after_copying_tile_data_to_vram(u8 taskId);
+void WindowFunc_DrawStandardFrame(u8, u8, u8, u8, u8, u8);
+void WindowFunc_DrawDialogueFrame(u8, u8, u8, u8, u8, u8);
+void WindowFunc_ClearStdWindowAndFrame(u8, u8, u8, u8, u8, u8);
+void WindowFunc_ClearDialogWindowAndFrame(u8, u8, u8, u8, u8, u8);
+void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8, u8, u8, u8, u8, u8);
+void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8, u8, u8, u8, u8, u8);
+void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8, u8, u8, u8, u8, u8);
+void WindowFunc_ClearStdWindowAndFrameToTransparent(u8, u8, u8, u8, u8, u8);
+void sub_8198C78(void);
+void task_free_buf_after_copying_tile_data_to_vram(u8 taskId);
void InitStandardTextBoxWindows(void)
{
@@ -210,43 +208,43 @@ void sub_81973A4(void)
LoadUserWindowBorderGfx(0, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM * 0x10);
}
-void NewMenuHelpers_DrawDialogueFrame(u8 windowId, bool8 copyToVram)
+void DrawDialogueFrame(u8 windowId, bool8 copyToVram)
{
- CallWindowFunction(windowId, DrawDialogueFrame);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_DrawDialogueFrame);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void NewMenuHelpers_DrawStdWindowFrame(u8 windowId, bool8 copyToVram)
+void DrawStdWindowFrame(u8 windowId, bool8 copyToVram)
{
- CallWindowFunction(windowId, DrawStandardFrame);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_DrawStandardFrame);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_8197434(u8 windowId, bool8 copyToVram)
+void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram)
{
- CallWindowFunction(windowId, sub_8197804);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_ClearDialogWindowAndFrame);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
ClearWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_819746C(u8 windowId, bool8 copyToVram)
+void ClearStdWindowAndFrame(u8 windowId, bool8 copyToVram)
{
- CallWindowFunction(windowId, sub_81977BC);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_ClearStdWindowAndFrame);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
ClearWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
int i;
@@ -313,7 +311,7 @@ void DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height
STD_WINDOW_PALETTE_NUM);
}
-void DrawDialogueFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_DrawDialogueFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg,
DLG_WINDOW_BASE_TILE_NUM + 1,
@@ -408,25 +406,25 @@ void DrawDialogueFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height
DLG_WINDOW_PALETTE_NUM);
}
-void sub_81977BC(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_ClearStdWindowAndFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, STD_WINDOW_PALETTE_NUM);
}
-void sub_8197804(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_ClearDialogWindowAndFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg, 0, tilemapLeft - 3, tilemapTop - 1, width + 6, height + 2, STD_WINDOW_PALETTE_NUM);
}
void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram)
{
- SetWindowBorderStyle(windowId, copyToVram, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM);
+ DrawStdFrameWithCustomTileAndPalette(windowId, copyToVram, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM);
}
void sub_819786C(u8 windowId, bool8 copyToVram)
{
LoadMessageBoxGfx(windowId, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10);
- sub_8197B1C(windowId, copyToVram, DLG_WINDOW_BASE_TILE_NUM, 0xF);
+ DrawDialogFrameWithCustomTileAndPalette(windowId, copyToVram, DLG_WINDOW_BASE_TILE_NUM, 0xF);
}
void sub_819789C(void)
@@ -458,12 +456,12 @@ void DisplayItemMessageOnField(u8 taskId, const u8 *string, TaskFunc callback)
CopyWindowToVram(0, 3);
}
-void DisplayYesNoMenu(void)
+void DisplayYesNoMenuDefaultYes(void)
{
CreateYesNoMenu(&sYesNo_WindowTemplates, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, 0);
}
-void sub_8197948(u8 initialCursorPos)
+void DisplayYesNoMenuWithDefault(u8 initialCursorPos)
{
CreateYesNoMenu(&sYesNo_WindowTemplates, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, initialCursorPos);
}
@@ -549,29 +547,30 @@ void sub_8197AE8(bool8 copyToVram)
CopyBgTilemapBufferToVram(0);
}
-void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum)
+void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum)
{
sTileNum = tileNum;
sPaletteNum = paletteNum;
- CallWindowFunction(windowId, sub_8197BB4);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_DrawDialogFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_8197B64(u8 windowId, bool8 copyToVram, u16 tileNum)
+// Never used.
+void DrawDialogFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 tileNum)
{
sTileNum = tileNum;
sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
- CallWindowFunction(windowId, sub_8197BB4);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_DrawDialogFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_8197BB4(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg,
sTileNum + 1,
@@ -666,43 +665,45 @@ void sub_8197BB4(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 p
sPaletteNum);
}
-void sub_8197DF8(u8 windowId, bool8 copyToVram)
+void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram)
{
- CallWindowFunction(windowId, sub_8197E30);
- FillWindowPixelBuffer(windowId, 0);
+ // The palette slot doesn't matter, since the tiles are transparent.
+ CallWindowFunction(windowId, WindowFunc_ClearDialogWindowAndFrameNullPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
ClearWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_8197E30(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg, 0, tilemapLeft - 3, tilemapTop - 1, width + 6, height + 2, 0);
}
-void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum)
+void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum)
{
sTileNum = baseTileNum;
sPaletteNum = paletteNum;
- CallWindowFunction(windowId, DrawWindowBorder);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_DrawStdFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_8197EC8(u8 windowId, bool8 copyToVram, u16 baseTileNum)
+// Never used.
+void DrawStdFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 baseTileNum)
{
sTileNum = baseTileNum;
sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
- CallWindowFunction(windowId, DrawWindowBorder);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_DrawStdFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void DrawWindowBorder(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg,
sTileNum + 0,
@@ -762,16 +763,16 @@ void DrawWindowBorder(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height,
sPaletteNum);
}
-void sub_8198070(u8 windowId, bool8 copyToVram)
+void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram)
{
- CallWindowFunction(windowId, sub_81980A8);
- FillWindowPixelBuffer(windowId, 0);
+ CallWindowFunction(windowId, WindowFunc_ClearStdWindowAndFrameToTransparent);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
ClearWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_81980A8(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_ClearStdWindowAndFrameToTransparent(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, 0);
}
@@ -811,7 +812,7 @@ void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram)
if (sWindowId != 0xFF)
{
PutWindowTilemap(sWindowId);
- FillWindowPixelBuffer(sWindowId, 0xFF);
+ FillWindowPixelBuffer(sWindowId, PIXEL_FILL(15));
width = GetStringWidth(0, string, 0);
AddTextPrinterParameterized3(sWindowId,
0,
@@ -845,7 +846,7 @@ void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyTo
color[2] = 2;
}
PutWindowTilemap(sWindowId);
- FillWindowPixelBuffer(sWindowId, 0xFF);
+ FillWindowPixelBuffer(sWindowId, PIXEL_FILL(15));
if (string2 != NULL)
{
width = GetStringWidth(0, string2, 0);
@@ -873,7 +874,7 @@ void sub_81982F0(void)
{
if (sWindowId != 0xFF)
{
- FillWindowPixelBuffer(sWindowId, 0xFF);
+ FillWindowPixelBuffer(sWindowId, PIXEL_FILL(15));
CopyWindowToVram(sWindowId, 3);
}
}
@@ -882,7 +883,7 @@ void sub_8198314(void)
{
if (sWindowId != 0xFF)
{
- FillWindowPixelBuffer(sWindowId, 0);
+ FillWindowPixelBuffer(sWindowId, PIXEL_FILL(0));
ClearWindowTilemap(sWindowId);
CopyWindowToVram(sWindowId, 3);
RemoveWindow(sWindowId);
@@ -931,7 +932,7 @@ void RedrawMenuCursor(u8 oldPos, u8 newPos)
width = GetMenuCursorDimensionByFont(sMenu.fontId, 0);
height = GetMenuCursorDimensionByFont(sMenu.fontId, 1);
- FillWindowPixelRect(sMenu.windowId, 0x11, sMenu.left, sMenu.optionHeight * oldPos + sMenu.top, width, height);
+ FillWindowPixelRect(sMenu.windowId, PIXEL_FILL(1), sMenu.left, sMenu.optionHeight * oldPos + sMenu.top, width, height);
AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gText_SelectorArrow3, sMenu.left, sMenu.optionHeight * newPos + sMenu.top, 0, 0);
}
@@ -1175,7 +1176,7 @@ void sub_8198AF8(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top
struct TextPrinterTemplate printer;
sYesNoWindowId = AddWindow(window);
- SetWindowBorderStyle(sYesNoWindowId, TRUE, baseTileNum, paletteNum);
+ DrawStdFrameWithCustomTileAndPalette(sYesNoWindowId, TRUE, baseTileNum, paletteNum);
printer.currentChar = gText_YesNo;
printer.windowId = sYesNoWindowId;
@@ -1211,7 +1212,7 @@ s8 Menu_ProcessInputNoWrapClearOnChoose(void)
void sub_8198C78(void)
{
- sub_8198070(sYesNoWindowId, TRUE);
+ ClearStdWindowAndFrameToTransparent(sYesNoWindowId, TRUE);
RemoveWindow(sYesNoWindowId);
}
@@ -1310,7 +1311,7 @@ void sub_8199060(u8 oldCursorPos, u8 newCursorPos)
u8 xPos = (oldCursorPos % sMenu.horizontalCount) * sMenu.optionWidth + sMenu.left;
u8 yPos = (oldCursorPos / sMenu.horizontalCount) * sMenu.optionHeight + sMenu.top;
FillWindowPixelRect(sMenu.windowId,
- 0x11,
+ PIXEL_FILL(1),
xPos,
yPos,
cursorWidth,
@@ -1640,7 +1641,7 @@ void CreateYesNoMenu(const struct WindowTemplate *window, u16 baseTileNum, u8 pa
struct TextPrinterTemplate printer;
sYesNoWindowId = AddWindow(window);
- SetWindowBorderStyle(sYesNoWindowId, TRUE, baseTileNum, paletteNum);
+ DrawStdFrameWithCustomTileAndPalette(sYesNoWindowId, TRUE, baseTileNum, paletteNum);
printer.currentChar = gText_YesNo;
printer.windowId = sYesNoWindowId;
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index e6547b300..b5745d812 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -18,8 +18,6 @@
#include "constants/items.h"
#include "constants/maps.h"
-extern bool32 sub_800B504(void);
-
// this file's functions
static void Task_ContinueTaskAfterMessagePrints(u8 taskId);
static void Task_CallYesOrNoCallback(u8 taskId);
@@ -39,10 +37,10 @@ static const struct OamData sOamData_859F4E8 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -129,7 +127,7 @@ void SetVBlankHBlankCallbacksToNull(void)
void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc)
{
gUnknown_0203A140 = windowId;
- sub_8197B1C(windowId, TRUE, arg2, arg3);
+ DrawDialogFrameWithCustomTileAndPalette(windowId, TRUE, arg2, arg3);
if (string != gStringVar4)
StringExpandPlaceholders(gStringVar4, string);
@@ -293,7 +291,7 @@ bool8 sub_8122148(u16 itemId)
bool8 itemid_80BF6D8_mail_related(u16 itemId)
{
- if (is_c1_link_related_active() != TRUE && InUnionRoom() != TRUE)
+ if (IsUpdateLinkStateCBActive() != TRUE && InUnionRoom() != TRUE)
return TRUE;
else if (ItemIsMail(itemId) != TRUE)
return TRUE;
@@ -303,7 +301,7 @@ bool8 itemid_80BF6D8_mail_related(u16 itemId)
bool8 sub_81221AC(void)
{
- if (is_c1_link_related_active() == TRUE || gReceivedRemoteLinkPlayers == 1)
+ if (IsUpdateLinkStateCBActive() == TRUE || gReceivedRemoteLinkPlayers == 1)
return TRUE;
else
return FALSE;
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
new file mode 100644
index 000000000..8371c7a70
--- /dev/null
+++ b/src/menu_specialized.c
@@ -0,0 +1,2094 @@
+#include "global.h"
+#include "alloc.h"
+#include "battle_main.h"
+#include "contest_effect.h"
+#include "gpu_regs.h"
+#include "menu.h"
+#include "international_string_util.h"
+#include "menu.h"
+#include "menu_specialized.h"
+#include "move_relearner.h"
+#include "palette.h"
+#include "player_pc.h"
+#include "pokemon_summary_screen.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "strings.h"
+#include "string_util.h"
+#include "text_window.h"
+#include "trig.h"
+#include "window.h"
+#include "constants/songs.h"
+#include "gba/io_reg.h"
+
+EWRAM_DATA static u8 sUnknown_0203CF48[3] = {0};
+EWRAM_DATA static struct ListMenuItem *sUnknown_0203CF4C = NULL;
+
+static void sub_81D1E7C(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+static void sub_81D24A4(struct UnknownStruct_81D1ED4 *a0);
+static void sub_81D2634(struct UnknownStruct_81D1ED4 *a0);
+static void MoveRelearnerCursorCallback(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+static void nullsub_79(void);
+
+static const struct WindowTemplate sUnknown_086253E8[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x8
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 21,
+ .tilemapTop = 1,
+ .width = 8,
+ .height = 18,
+ .paletteNum = 0xF,
+ .baseBlock = 0x18
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 11,
+ .height = 8,
+ .paletteNum = 0xF,
+ .baseBlock = 0x18
+ }
+};
+
+static const u8 sUnknown_08625400[] =
+{
+ 1, 2, 3
+};
+
+static const u8 sEmptyItemName[] = _("");
+
+static const struct ScanlineEffectParams sUnknown_08625404 =
+{
+ .dmaDest = (void*)REG_ADDR_WIN0H,
+ .dmaControl = SCANLINE_EFFECT_DMACNT_32BIT,
+ .initState = 1,
+ .unused9 = 0
+};
+
+
+static const u8 sUnknown_08625410[] =
+{
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9, 9,
+ 10, 10,
+ 0xB, 0xB,
+ 0xC, 0xC,
+ 0xD, 0xD,
+ 0xD, 0xD,
+ 0xE, 0xE, 0xE, 0xE,
+ 0xF, 0xF, 0xF, 0xF,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
+ 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
+ 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
+ 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
+ 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
+ 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
+ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19,
+ 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
+ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
+ 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
+ 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D,
+ 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
+ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
+ 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
+ 0x23
+};
+
+
+static const struct WindowTemplate sMoveRelearnerWindowTemplates[] =
+{
+ {
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 16,
+ .height = 12,
+ .paletteNum = 0xF,
+ .baseBlock = 0xA
+ },
+ {
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 16,
+ .height = 12,
+ .paletteNum = 0xF,
+ .baseBlock = 0xCA
+ },
+ {
+ .bg = 1,
+ .tilemapLeft = 19,
+ .tilemapTop = 1,
+ .width = 10,
+ .height = 12,
+ .paletteNum = 0xF,
+ .baseBlock = 0x18A
+ },
+ {
+ .bg = 1,
+ .tilemapLeft = 4,
+ .tilemapTop = 15,
+ .width = 22,
+ .height = 4,
+ .paletteNum = 0xF,
+ .baseBlock = 0x202
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 8,
+ .width = 5,
+ .height = 4,
+ .paletteNum = 0xF,
+ .baseBlock = 0x25A
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate sMoveRelearnerYesNoMenuTemplate =
+{
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 8,
+ .width = 5,
+ .height = 4,
+ .paletteNum = 0xF,
+ .baseBlock = 0x25A
+};
+
+
+static const struct ListMenuTemplate sMoveRelearnerMovesListTemplate =
+{
+ .items = NULL,
+ .moveCursorFunc = MoveRelearnerCursorCallback,
+ .itemPrintFunc = NULL,
+ .totalItems = 0,
+ .maxShowed = 0,
+ .windowId = 2,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 1,
+ .cursorKind = 0
+};
+
+bool8 sub_81D1C44(u8 count)
+{
+ u32 i;
+ struct ListMenuItem **v1;
+ v1 = &sUnknown_0203CF4C;
+ *v1 = Alloc(count * sizeof(struct ListMenuItem) + sizeof(struct ListMenuItem));
+
+ if (sUnknown_0203CF4C == NULL)
+ return FALSE;
+
+ for (i = 0; i < ARRAY_COUNT(sUnknown_0203CF48); i = (u8)(i + 1))
+ {
+ sUnknown_0203CF48[i] |= 0xFF;
+ }
+
+ return TRUE;
+}
+
+u8 sub_81D1C84(u8 a0)
+{
+ struct WindowTemplate template;
+
+ u8 windowId = sUnknown_0203CF48[a0];
+ if (windowId == 0xFF)
+ {
+ if (a0 == 2)
+ {
+ u32 v1;
+ u32 v2;
+ s32 v3;
+
+ template = sUnknown_086253E8[2];
+ v3 = GetMaxWidthInMenuTable(&gMailboxMailOptions[0], 4);
+ template.width = v3;
+ sUnknown_0203CF48[2] = AddWindow(&template);
+ }
+ else
+ {
+ sUnknown_0203CF48[a0] = AddWindow(&sUnknown_086253E8[a0]);
+ }
+ SetStandardWindowBorderStyle(sUnknown_0203CF48[a0], 0);
+ }
+ return sUnknown_0203CF48[a0];
+}
+
+void sub_81D1D04(u8 a0)
+{
+ ClearStdWindowAndFrameToTransparent(sUnknown_0203CF48[a0], 0);
+ ClearWindowTilemap(sUnknown_0203CF48[a0]);
+ RemoveWindow(sUnknown_0203CF48[a0]);
+ sUnknown_0203CF48[a0] = 0xFF;
+}
+
+static u8 sub_81D1D34(u8 a0)
+{
+ return sUnknown_0203CF48[a0];
+}
+
+static void sub_81D1D44(u8 windowId, s32 itemId, u8 y)
+{
+ u8 buffer[30];
+ u16 length;
+
+ if (itemId == LIST_CANCEL)
+ return;
+
+ StringCopy(buffer, gSaveBlock1Ptr->mail[6 + itemId].playerName);
+ sub_81DB52C(buffer);
+ length = StringLength(buffer);
+ if (length <= 5)
+ ConvertInternationalString(buffer, LANGUAGE_JAPANESE);
+ AddTextPrinterParameterized4(windowId, 1, 8, y, 0, 0, sUnknown_08625400, -1, buffer);
+}
+
+u8 sub_81D1DC0(struct PlayerPCItemPageStruct *page)
+{
+ u16 i;
+ for (i = 0; i < page->count; i++)
+ {
+ sUnknown_0203CF4C[i].name = sEmptyItemName;
+ sUnknown_0203CF4C[i].id = i;
+ }
+
+ sUnknown_0203CF4C[i].name = gText_Cancel2;
+ sUnknown_0203CF4C[i].id = LIST_CANCEL;
+
+ gMultiuseListMenuTemplate.items = sUnknown_0203CF4C;
+ gMultiuseListMenuTemplate.totalItems = page->count + 1;
+ gMultiuseListMenuTemplate.windowId = sUnknown_0203CF48[1];
+ gMultiuseListMenuTemplate.header_X = 0;
+ gMultiuseListMenuTemplate.item_X = 8;
+ gMultiuseListMenuTemplate.cursor_X = 0;
+ gMultiuseListMenuTemplate.maxShowed = 8;
+ gMultiuseListMenuTemplate.upText_Y = 9;
+ gMultiuseListMenuTemplate.cursorPal = 2;
+ gMultiuseListMenuTemplate.fillValue = 1;
+ gMultiuseListMenuTemplate.cursorShadowPal = 3;
+ gMultiuseListMenuTemplate.moveCursorFunc = sub_81D1E7C;
+ gMultiuseListMenuTemplate.itemPrintFunc = sub_81D1D44;
+ gMultiuseListMenuTemplate.fontId = 1;
+ gMultiuseListMenuTemplate.cursorKind = 0;
+ gMultiuseListMenuTemplate.lettersSpacing = 0;
+ gMultiuseListMenuTemplate.itemVerticalPadding = 0;
+ gMultiuseListMenuTemplate.scrollMultiple = LIST_NO_MULTIPLE_SCROLL;
+ return ListMenuInit(&gMultiuseListMenuTemplate, page->itemsAbove, page->cursorPos);
+}
+
+static void sub_81D1E7C(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+{
+ if (onInit != TRUE)
+ PlaySE(SE_SELECT);
+}
+
+void sub_81D1E90(struct PlayerPCItemPageStruct *page)
+{
+ page->scrollIndicatorId = AddScrollIndicatorArrowPairParameterized(2, 0xC8, 12, 0x94, page->count - page->pageItems + 1, 0x6E, 0x6E, &page->itemsAbove);
+}
+
+void sub_81D1EC0(void)
+{
+ Free(sUnknown_0203CF4C);
+}
+
+void sub_81D1ED4(struct UnknownStruct_81D1ED4 *a0)
+{
+ u8 j;
+ u8 i;
+ for (j = 0; j < 5; j++)
+ {
+ for (i = 0; i < 10; i++)
+ {
+ a0->unk64[i][j].unk0 = 0;
+ a0->unk64[i][j].unk2 = 0;
+ }
+ for (i = 0; i < 4; i++)
+ {
+ a0->unk0[i][j] = 0;
+ a0->unk14[i][j].unk0 = 0x9B;
+ a0->unk14[i][j].unk2 = 0x5B;
+ }
+
+ a0->unk12C[j].unk0 = 0;
+ a0->unk12C[j].unk2 = 0;
+ }
+
+ a0->unk354 = 0;
+ a0->unk352 = 0;
+}
+
+NAKED
+void sub_81D1F84(struct UnknownStruct_81D1ED4 *arg0, struct UnknownSubStruct_81D1ED4 arg1[4][5], struct UnknownSubStruct_81D1ED4 arg2[4][5])
+{
+ 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, 0x8\n\
+ mov r8, r0\n\
+ str r1, [sp]\n\
+ mov r9, r2\n\
+ movs r7, 0\n\
+_081D1F98:\n\
+ lsls r4, r7, 2\n\
+ ldr r1, [sp]\n\
+ adds r0, r4, r1\n\
+ ldrh r1, [r0]\n\
+ lsls r5, r1, 8\n\
+ mov r2, r9\n\
+ adds r0, r4, r2\n\
+ ldrh r0, [r0]\n\
+ subs r0, r1\n\
+ lsls r0, 8\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r6, r0, 0\n\
+ movs r3, 0\n\
+ adds r7, 0x1\n\
+ mov r10, r7\n\
+ mov r12, r4\n\
+_081D1FBC:\n\
+ lsls r0, r3, 2\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ add r0, r12\n\
+ add r0, r8\n\
+ asrs r2, r5, 8\n\
+ asrs r1, r5, 7\n\
+ movs r7, 0x1\n\
+ ands r1, r7\n\
+ adds r2, r1\n\
+ adds r0, 0x64\n\
+ strh r2, [r0]\n\
+ adds r5, r6\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x8\n\
+ bls _081D1FBC\n\
+ lsls r0, r3, 2\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r4, r0\n\
+ add r0, r8\n\
+ mov r1, r9\n\
+ adds r2, r4, r1\n\
+ ldrh r1, [r2]\n\
+ adds r0, 0x64\n\
+ strh r1, [r0]\n\
+ ldr r7, [sp]\n\
+ adds r0, r4, r7\n\
+ ldrh r1, [r0, 0x2]\n\
+ lsls r5, r1, 8\n\
+ ldrh r0, [r2, 0x2]\n\
+ subs r0, r1\n\
+ lsls r0, 8\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r6, r0, 0\n\
+ movs r3, 0\n\
+ str r4, [sp, 0x4]\n\
+ movs r0, 0x1\n\
+ mov r12, r0\n\
+_081D2012:\n\
+ lsls r0, r3, 2\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ ldr r1, [sp, 0x4]\n\
+ adds r0, r1, r0\n\
+ add r0, r8\n\
+ asrs r2, r5, 8\n\
+ asrs r1, r5, 7\n\
+ mov r7, r12\n\
+ ands r1, r7\n\
+ adds r2, r1\n\
+ adds r0, 0x66\n\
+ strh r2, [r0]\n\
+ adds r5, r6\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x8\n\
+ bls _081D2012\n\
+ lsls r0, r3, 2\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r4, r0\n\
+ add r0, r8\n\
+ mov r2, r9\n\
+ adds r1, r4, r2\n\
+ ldrh r1, [r1, 0x2]\n\
+ adds r0, 0x66\n\
+ strh r1, [r0]\n\
+ mov r7, r10\n\
+ lsls r0, r7, 16\n\
+ lsrs r7, r0, 16\n\
+ cmp r7, 0x4\n\
+ bls _081D1F98\n\
+ ldr r1, =0x00000352\n\
+ add r1, r8\n\
+ movs r0, 0\n\
+ strh r0, [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\
+ .syntax divided");
+}
+
+bool32 sub_81D2074(struct UnknownStruct_81D1ED4 *a0)
+{
+ if (a0->unk352 < 10)
+ {
+ sub_81D2230(a0);
+ return ++a0->unk352 != 10;
+ }
+ else
+ {
+ return FALSE;
+ }
+
+}
+
+void sub_81D20AC(struct UnknownStruct_81D1ED4 *a0)
+{
+ a0->unk355 = 0;
+}
+
+bool8 sub_81D20BC(struct UnknownStruct_81D1ED4 *arg0)
+{
+ struct ScanlineEffectParams params;
+ switch (arg0->unk355)
+ {
+ case 0:
+ ScanlineEffect_Clear();
+ arg0->unk355++;
+ return TRUE;
+ case 1:
+ params = sUnknown_08625404;
+ ScanlineEffect_SetParams(params);
+ arg0->unk355++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+}
+
+NAKED
+void sub_81D2108(struct UnknownStruct_81D1ED4 *arg0)
+{
+ // Three of the additions are in the wrong order.
+#ifdef NONMATCHING
+ u16 i;
+ u32 v3;
+ u32 v4;
+ u16 *scanBuffer1;
+ u16 *scanBuffer2;
+ u32 scanBufferWidth;
+ u32 mask;
+ u16 *unkBuff1;
+ u16 *unkBuff2;
+ u16 *unkBuff3;
+ u16 *unkBuff4;
+
+ if (arg0->unk354 == 0)
+ return;
+
+ sub_81D24A4(arg0);
+ sub_81D2634(arg0);
+
+ i = 0;
+ scanBuffer1 = gScanlineEffectRegBuffers[0];
+ scanBufferWidth = ARRAY_COUNT(gScanlineEffectRegBuffers[0]);
+ scanBuffer2 = scanBuffer1 + scanBufferWidth;
+
+ // This function accesses the arrays "manually", where every other entry
+ // is just handled differently, rather than a pairwise struct.
+ unkBuff1 = (u16*)&arg0->unk13C[0].unk0;
+ mask = 0xFFFF;
+ unkBuff2 = (u16*)&arg0->unk13C[0].unk2;
+ unkBuff3 = (u16*)&arg0->unk248[0].unk0;
+ unkBuff4 = (u16*)&arg0->unk248[0].unk2;
+
+ for (; i < 0x42; i++)
+ {
+ u32 offset1;
+ register u32 offset2 asm("r2");
+ u32 offset3;
+
+ offset1 = (i + 0x37) * 2;
+ offset2 = i + 0x37;
+ scanBuffer2[offset1] = (scanBuffer1[offset1] = (unkBuff1[i * 2] << 8) | unkBuff2[i * 2]) & mask;
+
+ offset3 = offset2 * 2 + 1;
+ scanBuffer2[offset3] = (scanBuffer1[offset3] = (unkBuff3[i * 2] << 8) | unkBuff4[i * 2]) & mask;
+ }
+
+ arg0->unk354 = 0;
+#else
+ 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, 0x10\n\
+ adds r6, r0, 0\n\
+ movs r1, 0xD5\n\
+ lsls r1, 2\n\
+ adds r0, r6, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _081D21BE\n\
+ adds r0, r6, 0\n\
+ bl sub_81D24A4\n\
+ adds r0, r6, 0\n\
+ bl sub_81D2634\n\
+ movs r7, 0\n\
+ ldr r5, =gScanlineEffectRegBuffers\n\
+ mov r12, r5\n\
+ movs r0, 0xF0\n\
+ lsls r0, 3\n\
+ add r0, r12\n\
+ mov r9, r0\n\
+ movs r1, 0xA0\n\
+ lsls r1, 1\n\
+ adds r1, r6, r1\n\
+ str r1, [sp]\n\
+ ldr r5, =0x0000ffff\n\
+ mov r8, r5\n\
+ movs r0, 0xA1\n\
+ lsls r0, 1\n\
+ adds r0, r6, r0\n\
+ str r0, [sp, 0x4]\n\
+ movs r1, 0x92\n\
+ lsls r1, 2\n\
+ adds r1, r6, r1\n\
+ str r1, [sp, 0x8]\n\
+ ldr r5, =0x0000024a\n\
+ adds r5, r6\n\
+ mov r10, r5\n\
+_081D215E:\n\
+ adds r2, r7, 0\n\
+ adds r2, 0x37\n\
+ lsls r3, r2, 2\n\
+ mov r0, r9\n\
+ adds r0, r3, r0\n\
+ str r0, [sp, 0xC]\n\
+ add r3, r12\n\
+ lsls r4, r7, 2\n\
+ ldr r1, [sp]\n\
+ adds r0, r1, r4\n\
+ ldrh r0, [r0]\n\
+ lsls r0, 8\n\
+ ldr r5, [sp, 0x4]\n\
+ adds r1, r5, r4\n\
+ ldrh r1, [r1]\n\
+ orrs r0, r1\n\
+ strh r0, [r3]\n\
+ mov r1, r8\n\
+ ands r0, r1\n\
+ ldr r5, [sp, 0xC]\n\
+ strh r0, [r5]\n\
+ lsls r2, 1\n\
+ adds r2, 0x1\n\
+ lsls r2, 1\n\
+ mov r0, r9\n\
+ adds r3, r2, r0\n\
+ add r2, r12\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r0, r1, r4\n\
+ ldrh r0, [r0]\n\
+ lsls r0, 8\n\
+ add r4, r10\n\
+ ldrh r1, [r4]\n\
+ orrs r0, r1\n\
+ strh r0, [r2]\n\
+ mov r5, r8\n\
+ ands r0, r5\n\
+ strh r0, [r3]\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ cmp r7, 0x41\n\
+ bls _081D215E\n\
+ movs r0, 0xD5\n\
+ lsls r0, 2\n\
+ adds r1, r6, r0\n\
+ movs r0, 0\n\
+ strb r0, [r1]\n\
+_081D21BE:\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
+}
+
+void sub_81D21DC(u8 bg)
+{
+ u8 flags;
+
+ if (bg > 3)
+ bg = 0;
+
+ // Unset the WINOUT flag for the bg.
+ flags = (WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ) & ~(1 << bg);
+
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 0xF0));
+ SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE(0, 0x9B));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0x38, 0x79));
+ SetGpuReg(REG_OFFSET_WIN1V, WIN_RANGE(0x38, 0x79));
+ 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, flags);
+}
+
+void sub_81D2230(struct UnknownStruct_81D1ED4 *arg0)
+{
+ u16 i;
+ for (i = 0; i < 5; i++)
+ {
+ arg0->unk12C[i] = arg0->unk64[arg0->unk352][i];
+ }
+ arg0->unk354 = 1;
+}
+
+NAKED
+static void sub_81D2278(void *a0, void *a1, u16 *a2, u16 *a3, u8 a38, u32 a3C)
+{
+#ifdef NONMATCHING
+ // a0 => sp0
+ // a1 => r6
+ // a2 => r5
+ // a3 => sp4
+ // a38 => r9
+ // a3C => r7
+ u32 v1; // r10
+ u32 v2; // sp8
+ u32 v3; // spC
+ u32 v4;
+ u32 v5;
+ u16 v6; // r8
+ u32 v7;
+ u32 v8; // sp10
+
+ v3 = 0;
+
+ // v4 => r4
+ // v5 => r0
+ // v7 => r1
+ if (a2[1] < a3[1])
+ {
+ v1 = a2[1];
+ v5 = a3[1];
+ v7 = a2[0];
+ v4 = v7 << 10;
+ v2 = a3[0];
+ }
+ else
+ {
+ v5 = a2[1];
+ v1 = a3[1];
+ v7 = a3[0];
+ v4 = v7 << 10;
+ v2 = a2[0];
+ }
+
+ v6 = v5 - v1;
+ if (v6 != 0)
+ {
+ v3 = (v2 - v7) / v6;
+ }
+ v6++;
+
+ if (a3C == 0)
+ {
+ v8 =
+ }
+#else
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x18\n\
+ str r0, [sp]\n\
+ adds r6, r1, 0\n\
+ adds r5, r2, 0\n\
+ str r3, [sp, 0x4]\n\
+ ldr r0, [sp, 0x38]\n\
+ ldr r7, [sp, 0x3C]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ movs r0, 0\n\
+ str r0, [sp, 0xC]\n\
+ ldrh r0, [r5, 0x2]\n\
+ ldrh r1, [r3, 0x2]\n\
+ cmp r0, r1\n\
+ bcs _081D22B2\n\
+ adds r2, r0, 0\n\
+ mov r10, r2\n\
+ ldrh r0, [r3, 0x2]\n\
+ ldrh r1, [r5]\n\
+ lsls r4, r1, 10\n\
+ ldrh r3, [r3]\n\
+ str r3, [sp, 0x8]\n\
+ b _081D22C6\n\
+_081D22B2:\n\
+ ldrh r0, [r5, 0x2]\n\
+ ldr r1, [sp, 0x4]\n\
+ ldrh r1, [r1, 0x2]\n\
+ mov r10, r1\n\
+ ldr r2, [sp, 0x4]\n\
+ ldrh r1, [r2]\n\
+ lsls r4, r1, 10\n\
+ ldrh r3, [r5]\n\
+ str r3, [sp, 0x8]\n\
+ mov r2, r10\n\
+_081D22C6:\n\
+ subs r0, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ cmp r0, 0\n\
+ beq _081D22DE\n\
+ subs r0, r3, r1\n\
+ lsls r0, 10\n\
+ mov r1, r8\n\
+ bl __divsi3\n\
+ str r0, [sp, 0xC]\n\
+_081D22DE:\n\
+ mov r0, r8\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ cmp r7, 0\n\
+ bne _081D2328\n\
+ mov r0, r10\n\
+ subs r0, 0x38\n\
+ lsls r0, 2\n\
+ adds r6, r0\n\
+ movs r5, 0\n\
+ mov r3, r9\n\
+ lsls r3, 1\n\
+ mov r12, r3\n\
+ ldr r0, [sp, 0x8]\n\
+ add r0, r9\n\
+ str r0, [sp, 0x10]\n\
+ cmp r7, r8\n\
+ bcs _081D23B6\n\
+ movs r7, 0x1\n\
+_081D2308:\n\
+ adds r2, r3, r6\n\
+ asrs r1, r4, 10\n\
+ asrs r0, r4, 9\n\
+ ands r0, r7\n\
+ adds r1, r0\n\
+ add r1, r9\n\
+ strh r1, [r2]\n\
+ ldr r1, [sp, 0xC]\n\
+ adds r4, r1\n\
+ adds r6, 0x4\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, r8\n\
+ bcc _081D2308\n\
+ b _081D23B6\n\
+_081D2328:\n\
+ ldr r2, [sp, 0xC]\n\
+ cmp r2, 0\n\
+ ble _081D23C0\n\
+ mov r0, r10\n\
+ subs r0, 0x38\n\
+ lsls r0, 2\n\
+ adds r7, r0\n\
+ movs r5, 0\n\
+ mov r3, r9\n\
+ lsls r3, 1\n\
+ mov r12, r3\n\
+ ldr r0, [sp, 0x8]\n\
+ add r0, r9\n\
+ str r0, [sp, 0x10]\n\
+ cmp r5, r8\n\
+ bcs _081D237A\n\
+ ldr r0, =0x00026bff\n\
+ cmp r4, r0\n\
+ bgt _081D237A\n\
+ mov r1, r12\n\
+ str r1, [sp, 0x14]\n\
+_081D2352:\n\
+ ldr r3, [sp, 0x14]\n\
+ adds r2, r3, r7\n\
+ asrs r1, r4, 10\n\
+ asrs r0, r4, 9\n\
+ movs r3, 0x1\n\
+ ands r0, r3\n\
+ adds r1, r0\n\
+ add r1, r9\n\
+ strh r1, [r2]\n\
+ ldr r0, [sp, 0xC]\n\
+ adds r4, r0\n\
+ adds r7, 0x4\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, r8\n\
+ bcs _081D237A\n\
+ ldr r1, =0x00026bff\n\
+ cmp r4, r1\n\
+ ble _081D2352\n\
+_081D237A:\n\
+ mov r2, r10\n\
+ adds r1, r2, r5\n\
+ ldr r3, [sp]\n\
+ movs r2, 0xD4\n\
+ lsls r2, 2\n\
+ adds r0, r3, r2\n\
+ strh r1, [r0]\n\
+ ldrh r0, [r0]\n\
+ subs r0, 0x38\n\
+ lsls r0, 2\n\
+ adds r6, r0\n\
+ cmp r5, r8\n\
+ bcs _081D23B6\n\
+ mov r3, r12\n\
+ movs r7, 0x1\n\
+_081D2398:\n\
+ adds r2, r3, r6\n\
+ asrs r1, r4, 10\n\
+ asrs r0, r4, 9\n\
+ ands r0, r7\n\
+ adds r1, r0\n\
+ add r1, r9\n\
+ strh r1, [r2]\n\
+ ldr r0, [sp, 0xC]\n\
+ adds r4, r0\n\
+ adds r6, 0x4\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, r8\n\
+ bcc _081D2398\n\
+_081D23B6:\n\
+ subs r0, r6, 0x4\n\
+ b _081D248C\n\
+ .pool\n\
+_081D23C0:\n\
+ ldr r1, [sp, 0xC]\n\
+ cmp r1, 0\n\
+ bge _081D2464\n\
+ mov r0, r10\n\
+ subs r0, 0x38\n\
+ lsls r0, 2\n\
+ adds r6, r0\n\
+ movs r5, 0\n\
+ mov r2, r9\n\
+ lsls r2, 1\n\
+ mov r12, r2\n\
+ ldr r3, [sp, 0x8]\n\
+ add r3, r9\n\
+ str r3, [sp, 0x10]\n\
+ cmp r5, r8\n\
+ bcs _081D241E\n\
+ adds r3, r2, r6\n\
+ asrs r1, r4, 10\n\
+ asrs r0, r4, 9\n\
+ movs r2, 0x1\n\
+ ands r0, r2\n\
+ adds r1, r0\n\
+ add r1, r9\n\
+ strh r1, [r3]\n\
+ b _081D2414\n\
+_081D23F2:\n\
+ ldr r0, [sp, 0xC]\n\
+ adds r4, r0\n\
+ adds r6, 0x4\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, r8\n\
+ bcs _081D241E\n\
+ mov r1, r12\n\
+ adds r3, r1, r6\n\
+ asrs r2, r4, 10\n\
+ asrs r0, r4, 9\n\
+ movs r1, 0x1\n\
+ ands r0, r1\n\
+ adds r2, r0\n\
+ add r2, r9\n\
+ strh r2, [r3]\n\
+_081D2414:\n\
+ ldr r0, =0x00026bff\n\
+ cmp r4, r0\n\
+ bgt _081D23F2\n\
+ movs r0, 0x9B\n\
+ strh r0, [r3]\n\
+_081D241E:\n\
+ mov r2, r10\n\
+ adds r1, r2, r5\n\
+ ldr r3, [sp]\n\
+ movs r2, 0xD4\n\
+ lsls r2, 2\n\
+ adds r0, r3, r2\n\
+ strh r1, [r0]\n\
+ ldrh r0, [r0]\n\
+ subs r0, 0x38\n\
+ lsls r0, 2\n\
+ adds r7, r0\n\
+ cmp r5, r8\n\
+ bcs _081D245A\n\
+ mov r3, r12\n\
+ movs r6, 0x1\n\
+_081D243C:\n\
+ adds r2, r3, r7\n\
+ asrs r1, r4, 10\n\
+ asrs r0, r4, 9\n\
+ ands r0, r6\n\
+ adds r1, r0\n\
+ add r1, r9\n\
+ strh r1, [r2]\n\
+ ldr r0, [sp, 0xC]\n\
+ adds r4, r0\n\
+ adds r7, 0x4\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, r8\n\
+ bcc _081D243C\n\
+_081D245A:\n\
+ subs r0, r7, 0x4\n\
+ b _081D248C\n\
+ .pool\n\
+_081D2464:\n\
+ ldr r1, [sp]\n\
+ movs r2, 0xD4\n\
+ lsls r2, 2\n\
+ adds r0, r1, r2\n\
+ mov r3, r10\n\
+ strh r3, [r0]\n\
+ mov r0, r10\n\
+ subs r0, 0x38\n\
+ lsls r0, 2\n\
+ adds r6, r0\n\
+ adds r7, r0\n\
+ ldrh r0, [r5]\n\
+ adds r0, 0x1\n\
+ strh r0, [r6, 0x2]\n\
+ ldr r1, [sp, 0x4]\n\
+ ldrh r0, [r1]\n\
+ strh r0, [r7]\n\
+ movs r0, 0x9B\n\
+ strh r0, [r7, 0x2]\n\
+ b _081D2494\n\
+_081D248C:\n\
+ add r0, r12\n\
+ mov r2, sp\n\
+ ldrh r2, [r2, 0x10]\n\
+ strh r2, [r0]\n\
+_081D2494:\n\
+ add sp, 0x18\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided");
+#endif
+}
+
+NAKED
+static void sub_81D24A4(struct UnknownStruct_81D1ED4 *a0)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x8\n\
+ adds r4, r0, 0\n\
+ movs r0, 0x97\n\
+ lsls r0, 1\n\
+ adds r2, r4, r0\n\
+ movs r3, 0x99\n\
+ lsls r3, 1\n\
+ adds r1, r4, r3\n\
+ ldrh r0, [r2]\n\
+ ldrh r3, [r1]\n\
+ cmp r0, r3\n\
+ bcs _081D24E0\n\
+ adds r7, r0, 0\n\
+ movs r0, 0xA0\n\
+ lsls r0, 1\n\
+ adds r1, r4, r0\n\
+ movs r3, 0x96\n\
+ lsls r3, 1\n\
+ adds r2, r4, r3\n\
+ subs r0, 0x10\n\
+ adds r3, r4, r0\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x4]\n\
+ adds r0, r4, 0\n\
+ bl sub_81D2278\n\
+ b _081D2500\n\
+_081D24E0:\n\
+ ldrh r7, [r1]\n\
+ movs r2, 0xA0\n\
+ lsls r2, 1\n\
+ adds r1, r4, r2\n\
+ movs r3, 0x98\n\
+ lsls r3, 1\n\
+ adds r2, r4, r3\n\
+ movs r0, 0x96\n\
+ lsls r0, 1\n\
+ adds r3, r4, r0\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ str r0, [sp, 0x4]\n\
+ adds r0, r4, 0\n\
+ bl sub_81D2278\n\
+_081D2500:\n\
+ movs r1, 0xA0\n\
+ lsls r1, 1\n\
+ adds r5, r4, r1\n\
+ movs r3, 0x98\n\
+ lsls r3, 1\n\
+ adds r2, r4, r3\n\
+ movs r0, 0x9A\n\
+ lsls r0, 1\n\
+ adds r6, r4, r0\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x4]\n\
+ adds r0, r4, 0\n\
+ adds r1, r5, 0\n\
+ adds r3, r6, 0\n\
+ bl sub_81D2278\n\
+ movs r2, 0\n\
+ movs r1, 0x9B\n\
+ lsls r1, 1\n\
+ adds r0, r4, r1\n\
+ movs r3, 0x9D\n\
+ lsls r3, 1\n\
+ adds r1, r4, r3\n\
+ ldrh r0, [r0]\n\
+ ldrh r1, [r1]\n\
+ cmp r0, r1\n\
+ bhi _081D253C\n\
+ movs r2, 0x1\n\
+_081D253C:\n\
+ movs r0, 0x9C\n\
+ lsls r0, 1\n\
+ adds r3, r4, r0\n\
+ str r2, [sp]\n\
+ movs r1, 0x92\n\
+ lsls r1, 2\n\
+ adds r0, r4, r1\n\
+ str r0, [sp, 0x4]\n\
+ adds r0, r4, 0\n\
+ adds r1, r5, 0\n\
+ adds r2, r6, 0\n\
+ bl sub_81D2278\n\
+ movs r2, 0x38\n\
+ cmp r2, r7\n\
+ bcs _081D257E\n\
+ adds r6, r5, 0\n\
+ movs r3, 0\n\
+ movs r0, 0xA1\n\
+ lsls r0, 1\n\
+ adds r5, r4, r0\n\
+_081D2566:\n\
+ adds r0, r2, 0\n\
+ subs r0, 0x38\n\
+ lsls r0, 2\n\
+ adds r1, r6, r0\n\
+ strh r3, [r1]\n\
+ adds r0, r5, r0\n\
+ strh r3, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, r7\n\
+ bcc _081D2566\n\
+_081D257E:\n\
+ movs r1, 0x97\n\
+ lsls r1, 1\n\
+ adds r0, r4, r1\n\
+ ldrh r2, [r0]\n\
+ movs r3, 0xD4\n\
+ lsls r3, 2\n\
+ adds r0, r4, r3\n\
+ ldrh r1, [r0]\n\
+ cmp r2, r1\n\
+ bhi _081D25B2\n\
+ movs r1, 0xA0\n\
+ lsls r1, 1\n\
+ adds r3, r4, r1\n\
+ movs r5, 0x9B\n\
+ adds r1, r0, 0\n\
+_081D259C:\n\
+ adds r0, r2, 0\n\
+ subs r0, 0x38\n\
+ lsls r0, 2\n\
+ adds r0, r3, r0\n\
+ strh r5, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ ldrh r0, [r1]\n\
+ cmp r2, r0\n\
+ bls _081D259C\n\
+_081D25B2:\n\
+ movs r2, 0x9B\n\
+ lsls r2, 1\n\
+ adds r1, r4, r2\n\
+ movs r3, 0xD4\n\
+ lsls r3, 2\n\
+ adds r0, r4, r3\n\
+ ldrh r0, [r0]\n\
+ ldrh r1, [r1]\n\
+ cmp r0, r1\n\
+ bcs _081D25C8\n\
+ adds r0, r1, 0\n\
+_081D25C8:\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x79\n\
+ bhi _081D25F8\n\
+ movs r0, 0xA0\n\
+ lsls r0, 1\n\
+ adds r6, r4, r0\n\
+ movs r3, 0\n\
+ movs r1, 0xA1\n\
+ lsls r1, 1\n\
+ adds r5, r4, r1\n\
+_081D25E0:\n\
+ adds r0, r2, 0\n\
+ subs r0, 0x38\n\
+ lsls r0, 2\n\
+ adds r1, r6, r0\n\
+ strh r3, [r1]\n\
+ adds r0, r5, r0\n\
+ strh r3, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x79\n\
+ bls _081D25E0\n\
+_081D25F8:\n\
+ movs r2, 0x38\n\
+ movs r3, 0xA0\n\
+ lsls r3, 1\n\
+ adds r5, r4, r3\n\
+ movs r0, 0xA1\n\
+ lsls r0, 1\n\
+ adds r4, r0\n\
+ movs r6, 0x9B\n\
+_081D2608:\n\
+ adds r0, r2, 0\n\
+ subs r0, 0x38\n\
+ lsls r1, r0, 2\n\
+ adds r3, r5, r1\n\
+ ldrh r0, [r3]\n\
+ cmp r0, 0\n\
+ bne _081D2620\n\
+ adds r0, r4, r1\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _081D2620\n\
+ strh r6, [r3]\n\
+_081D2620:\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x79\n\
+ bls _081D2608\n\
+ add sp, 0x8\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided");
+}
+
+NAKED
+static void sub_81D2634(struct UnknownStruct_81D1ED4 *a0)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x8\n\
+ adds r4, r0, 0\n\
+ movs r0, 0x97\n\
+ lsls r0, 1\n\
+ adds r2, r4, r0\n\
+ movs r3, 0x9F\n\
+ lsls r3, 1\n\
+ adds r1, r4, r3\n\
+ ldrh r0, [r2]\n\
+ ldrh r5, [r1]\n\
+ cmp r0, r5\n\
+ bcs _081D266E\n\
+ adds r6, r0, 0\n\
+ movs r0, 0x92\n\
+ lsls r0, 2\n\
+ adds r1, r4, r0\n\
+ subs r3, 0x12\n\
+ adds r2, r4, r3\n\
+ movs r5, 0x9E\n\
+ lsls r5, 1\n\
+ adds r3, r4, r5\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ str r0, [sp, 0x4]\n\
+ adds r0, r4, 0\n\
+ bl sub_81D2278\n\
+ b _081D2690\n\
+_081D266E:\n\
+ ldrh r6, [r1]\n\
+ movs r0, 0x92\n\
+ lsls r0, 2\n\
+ adds r1, r4, r0\n\
+ movs r3, 0x9E\n\
+ lsls r3, 1\n\
+ adds r2, r4, r3\n\
+ movs r5, 0x96\n\
+ lsls r5, 1\n\
+ adds r3, r4, r5\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x4]\n\
+ adds r0, r4, 0\n\
+ bl sub_81D2278\n\
+_081D2690:\n\
+ movs r0, 0x92\n\
+ lsls r0, 2\n\
+ adds r5, r4, r0\n\
+ movs r1, 0x9E\n\
+ lsls r1, 1\n\
+ adds r2, r4, r1\n\
+ movs r0, 0x9C\n\
+ lsls r0, 1\n\
+ adds r3, r4, r0\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ str r0, [sp, 0x4]\n\
+ adds r0, r4, 0\n\
+ adds r1, r5, 0\n\
+ bl sub_81D2278\n\
+ cmp r6, 0x38\n\
+ ble _081D26C8\n\
+ movs r0, 0\n\
+ adds r1, r5, 0\n\
+ adds r2, r6, 0\n\
+ subs r2, 0x38\n\
+_081D26BC:\n\
+ strh r0, [r1]\n\
+ strh r0, [r1, 0x2]\n\
+ adds r1, 0x4\n\
+ subs r2, 0x1\n\
+ cmp r2, 0\n\
+ bne _081D26BC\n\
+_081D26C8:\n\
+ movs r1, 0x97\n\
+ lsls r1, 1\n\
+ adds r0, r4, r1\n\
+ ldrh r2, [r0]\n\
+ movs r3, 0xD4\n\
+ lsls r3, 2\n\
+ adds r0, r4, r3\n\
+ ldrh r5, [r0]\n\
+ cmp r2, r5\n\
+ bgt _081D26F6\n\
+ movs r3, 0x9B\n\
+ adds r1, r0, 0\n\
+ lsls r0, r2, 2\n\
+ movs r5, 0xB5\n\
+ lsls r5, 1\n\
+ adds r0, r5\n\
+ adds r0, r4\n\
+_081D26EA:\n\
+ strh r3, [r0]\n\
+ adds r0, 0x4\n\
+ adds r2, 0x1\n\
+ ldrh r5, [r1]\n\
+ cmp r2, r5\n\
+ ble _081D26EA\n\
+_081D26F6:\n\
+ movs r1, 0x9D\n\
+ lsls r1, 1\n\
+ adds r0, r4, r1\n\
+ ldrh r0, [r0]\n\
+ adds r1, r0, 0x1\n\
+ movs r2, 0xD4\n\
+ lsls r2, 2\n\
+ adds r0, r4, r2\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r1\n\
+ bge _081D270E\n\
+ adds r0, r1, 0\n\
+_081D270E:\n\
+ adds r2, r0, 0\n\
+ cmp r2, 0x79\n\
+ bgt _081D272C\n\
+ movs r1, 0\n\
+ lsls r0, r2, 2\n\
+ movs r3, 0xB4\n\
+ lsls r3, 1\n\
+ adds r0, r3\n\
+ adds r0, r4\n\
+_081D2720:\n\
+ strh r1, [r0]\n\
+ strh r1, [r0, 0x2]\n\
+ adds r0, 0x4\n\
+ adds r2, 0x1\n\
+ cmp r2, 0x79\n\
+ ble _081D2720\n\
+_081D272C:\n\
+ movs r3, 0\n\
+ movs r5, 0x92\n\
+ lsls r5, 2\n\
+ adds r1, r4, r5\n\
+ movs r2, 0x41\n\
+_081D2736:\n\
+ ldrh r0, [r1]\n\
+ ldrh r4, [r1, 0x2]\n\
+ cmp r0, r4\n\
+ bcc _081D2742\n\
+ strh r3, [r1, 0x2]\n\
+ strh r3, [r1]\n\
+_081D2742:\n\
+ adds r1, 0x4\n\
+ subs r2, 0x1\n\
+ cmp r2, 0\n\
+ bge _081D2736\n\
+ add sp, 0x8\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided");
+}
+
+NAKED
+void sub_81D2754(struct UnknownStruct_81D1ED4 *arg0, struct UnknownSubStruct_81D1ED4 *arg1)
+{
+ // There are some register-renaming issues here. The cause of the problem seems to be that
+ // GCC tries to save sUnknown_08625410 in a register, instead of loading the constant repeatedly.
+ // But this is one too many things to keep track of, so GCC is forced to use the stack.
+#ifdef NONMATCHING
+ u8* v1;
+ u8 v2;
+ u8 v3;
+ s8 v4;
+ u16 v5;
+
+ v1 = arg0->unk0[0];
+ v2 = sUnknown_08625410[*v1];
+ v1++;
+ arg1[0].unk0 = 0x9B;
+ arg1[0].unk2 = 0x5B - v2;
+ for (v3 = 0x40, v4 = 0, v5 = 1; v5 < 5; v5++)
+ {
+ v3 += 0x33;
+ v4--;
+ if (v4 < 0)
+ {
+ v4 = 4;
+ }
+ if (v4 == 2)
+ {
+ v3++;
+ }
+
+ v2 = sUnknown_08625410[*v1];
+ v1++;
+ arg1[v4].unk0 = ((gSineTable[v3 + 0x40] * v2) >> 8) + 0x9B;
+ arg1[v4].unk2 = ((gSineTable[v3] * v2) >> 8) - 0x5B;
+ if (v4 <= 2 && (v2 != 0x20 || v4 != 2))
+ {
+ arg1[v4].unk0 = arg1[v4].unk0 + 1;
+ }
+ }
+#else
+ 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\
+ adds r6, r0, 0\n\
+ mov r8, r1\n\
+ ldr r1, =sUnknown_08625410\n\
+ ldrb r0, [r6]\n\
+ adds r0, r1\n\
+ ldrb r2, [r0]\n\
+ adds r6, 0x1\n\
+ movs r0, 0x9B\n\
+ mov r3, r8\n\
+ strh r0, [r3]\n\
+ movs r0, 0x5B\n\
+ subs r0, r2\n\
+ strh r0, [r3, 0x2]\n\
+ movs r7, 0x40\n\
+ movs r0, 0\n\
+ mov r12, r0\n\
+ movs r2, 0x1\n\
+ mov r9, r2\n\
+ ldr r3, =gSineTable\n\
+ mov r10, r3\n\
+_081D2786:\n\
+ adds r0, r7, 0\n\
+ adds r0, 0x33\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ mov r1, r12\n\
+ lsls r0, r1, 24\n\
+ movs r2, 0xFF\n\
+ lsls r2, 24\n\
+ adds r0, r2\n\
+ lsrs r3, r0, 24\n\
+ mov r12, r3\n\
+ cmp r0, 0\n\
+ bge _081D27A4\n\
+ movs r0, 0x4\n\
+ mov r12, r0\n\
+_081D27A4:\n\
+ mov r1, r12\n\
+ lsls r0, r1, 24\n\
+ asrs r4, r0, 24\n\
+ cmp r4, 0x2\n\
+ bne _081D27B4\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+_081D27B4:\n\
+ ldrb r0, [r6]\n\
+ ldr r2, =sUnknown_08625410\n\
+ adds r0, r2\n\
+ ldrb r2, [r0]\n\
+ adds r6, 0x1\n\
+ lsls r0, r4, 2\n\
+ mov r1, r8\n\
+ adds r3, r0, r1\n\
+ adds r0, r7, 0\n\
+ adds r0, 0x40\n\
+ lsls r0, 1\n\
+ add r0, r10\n\
+ movs r1, 0\n\
+ ldrsh r0, [r0, r1]\n\
+ muls r0, r2\n\
+ asrs r5, r0, 8\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x9B\n\
+ strh r0, [r3]\n\
+ lsls r0, r7, 1\n\
+ add r0, r10\n\
+ movs r1, 0\n\
+ ldrsh r0, [r0, r1]\n\
+ adds r1, r2, 0\n\
+ muls r1, r0\n\
+ asrs r1, 8\n\
+ movs r0, 0x5B\n\
+ subs r0, r1\n\
+ strh r0, [r3, 0x2]\n\
+ cmp r4, 0x2\n\
+ bgt _081D2800\n\
+ cmp r2, 0x20\n\
+ bne _081D27FA\n\
+ cmp r4, 0x2\n\
+ beq _081D2800\n\
+_081D27FA:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x9C\n\
+ strh r0, [r3]\n\
+_081D2800:\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r9, r0\n\
+ cmp r0, 0x4\n\
+ bls _081D2786\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
+}
+
+void InitMoveRelearnerWindows(bool8 useContextWindow)
+{
+ u8 i;
+
+ InitWindows(sMoveRelearnerWindowTemplates);
+ DeactivateAllTextPrinters();
+ LoadUserWindowBorderGfx(0, 1, 0xE0);
+ LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+
+ for (i = 0; i < 5; i++)
+ {
+ FillWindowPixelBuffer(i, PIXEL_FILL(1));
+ }
+
+ if (!useContextWindow)
+ {
+ PutWindowTilemap(0);
+ DrawStdFrameWithCustomTileAndPalette(0, 0, 0x1, 0xE);
+ }
+ else
+ {
+ PutWindowTilemap(1);
+ DrawStdFrameWithCustomTileAndPalette(1, 0, 1, 0xE);
+ }
+ PutWindowTilemap(2);
+ PutWindowTilemap(3);
+ DrawStdFrameWithCustomTileAndPalette(2, 0, 1, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(3, 0, 1, 0xE);
+ nullsub_79();
+ schedule_bg_copy_tilemap_to_vram(1);
+}
+
+static void nullsub_79(void)
+{
+
+}
+
+u8 LoadMoveRelearnerMovesList(const struct ListMenuItem *items, u16 numChoices)
+{
+ gMultiuseListMenuTemplate = sMoveRelearnerMovesListTemplate;
+ gMultiuseListMenuTemplate.totalItems = numChoices;
+ gMultiuseListMenuTemplate.items = items;
+
+ if (numChoices < 6)
+ {
+ gMultiuseListMenuTemplate.maxShowed = numChoices;
+ }
+ else
+ {
+ gMultiuseListMenuTemplate.maxShowed = 6;
+ }
+ return gMultiuseListMenuTemplate.maxShowed;
+}
+
+NAKED
+static void MoveRelearnerLoadBattleMoveDescription(u32 chosenMove)
+{
+ // Two small issues, and a few renamed registers.
+#ifdef NONMATCHING
+ u8 offset;
+ s32 width;
+ const struct BattleMove *move;
+ u8 buffer[0x20];
+ const u8 *labelStr;
+
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
+ labelStr = gText_MoveRelearnerBattleMoves;
+ offset = GetStringCenterAlignXOffset(1, labelStr, 0x80);
+ AddTextPrinterParameterized(0, 1, labelStr, offset, 1, TEXT_SPEED_FF, NULL);
+
+ labelStr = gText_MoveRelearnerPP;
+ AddTextPrinterParameterized(0, 1, labelStr, 4, 0x29, TEXT_SPEED_FF, NULL);
+
+ labelStr = gText_MoveRelearnerPower;
+ offset = GetStringRightAlignXOffset(1, labelStr, 0x6A);
+ AddTextPrinterParameterized(0, 1, labelStr, offset, 0x19, TEXT_SPEED_FF, NULL);
+
+ labelStr = gText_MoveRelearnerAccuracy;
+ offset = GetStringRightAlignXOffset(1, labelStr, 0x6A);
+ AddTextPrinterParameterized(0, 1, labelStr, offset, 0x29, TEXT_SPEED_FF, NULL);
+ if (chosenMove == LIST_CANCEL)
+ {
+ CopyWindowToVram(0, 2);
+ return;
+ }
+ move = &gBattleMoves[chosenMove];
+ labelStr = gTypeNames[move->type];
+ // GCC tries to be smart, and preserves the same 0x19 from above for this.
+ // The original asm just loads the constant 0x19 twice.
+ AddTextPrinterParameterized(0, 1, labelStr, 4, 0x19, TEXT_SPEED_FF, NULL);
+
+ // GCC tries to generate this as:
+ // add r4, r0, 0
+ // add r4, r4, 4
+ // But the original asm is:
+ // add r4, r0, 4
+ width = 4 + GetStringWidth(1, gText_MoveRelearnerPP, 0);
+
+ ConvertIntToDecimalStringN(buffer, move->pp, 0, 2);
+ AddTextPrinterParameterized(0, 1, buffer, width, 0x29, TEXT_SPEED_FF, NULL);
+
+
+ if (move->power < 2)
+ {
+ labelStr = gText_ThreeDashes;
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(buffer, move->power, 0, 3);
+ labelStr = buffer;
+ }
+ AddTextPrinterParameterized(0, 1, labelStr, 0x6A, 0x19, TEXT_SPEED_FF, NULL);
+
+ if (move->accuracy == 0)
+ {
+ labelStr = gText_ThreeDashes;
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(buffer, move->accuracy, 0, 3);
+ labelStr = buffer;
+ }
+ AddTextPrinterParameterized(0, 1, labelStr, 0x6A, 0x29, TEXT_SPEED_FF, NULL);
+ labelStr = gMoveDescriptionPointers[chosenMove - 1];
+ AddTextPrinterParameterized(0, 7, labelStr, 0, 0x41, 0, NULL);
+#else
+ 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, 0x2C\n\
+ mov r9, r0\n\
+ movs r0, 0\n\
+ movs r1, 0x11\n\
+ bl FillWindowPixelBuffer\n\
+ ldr r5, =gText_MoveRelearnerBattleMoves\n\
+ movs r0, 0x1\n\
+ adds r1, r5, 0\n\
+ movs r2, 0x80\n\
+ bl GetStringCenterAlignXOffset\n\
+ adds r4, r0, 0\n\
+ lsls r3, r4, 24\n\
+ lsrs r3, 24\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ movs r0, 0xFF\n\
+ mov r8, r0\n\
+ str r0, [sp, 0x4]\n\
+ movs r7, 0\n\
+ str r7, [sp, 0x8]\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ adds r2, r5, 0\n\
+ bl AddTextPrinterParameterized\n\
+ ldr r5, =gText_MoveRelearnerPP\n\
+ movs r1, 0x29\n\
+ mov r10, r1\n\
+ str r1, [sp]\n\
+ mov r0, r8\n\
+ str r0, [sp, 0x4]\n\
+ str r7, [sp, 0x8]\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ adds r2, r5, 0\n\
+ movs r3, 0x4\n\
+ bl AddTextPrinterParameterized\n\
+ ldr r5, =gText_MoveRelearnerPower\n\
+ movs r0, 0x1\n\
+ adds r1, r5, 0\n\
+ movs r2, 0x6A\n\
+ bl GetStringRightAlignXOffset\n\
+ adds r4, r0, 0\n\
+ lsls r3, r4, 24\n\
+ lsrs r3, 24\n\
+ movs r1, 0x19\n\
+ str r1, [sp]\n\
+ mov r0, r8\n\
+ str r0, [sp, 0x4]\n\
+ str r7, [sp, 0x8]\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ adds r2, r5, 0\n\
+ bl AddTextPrinterParameterized\n\
+ ldr r5, =gText_MoveRelearnerAccuracy\n\
+ movs r0, 0x1\n\
+ adds r1, r5, 0\n\
+ movs r2, 0x6A\n\
+ bl GetStringRightAlignXOffset\n\
+ adds r4, r0, 0\n\
+ lsls r3, r4, 24\n\
+ lsrs r3, 24\n\
+ mov r1, r10\n\
+ str r1, [sp]\n\
+ mov r0, r8\n\
+ str r0, [sp, 0x4]\n\
+ str r7, [sp, 0x8]\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ adds r2, r5, 0\n\
+ bl AddTextPrinterParameterized\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ cmp r9, r0\n\
+ bne _081D29C4\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl CopyWindowToVram\n\
+ b _081D2AB6\n\
+ .pool\n\
+_081D29C4:\n\
+ mov r1, r9\n\
+ lsls r0, r1, 1\n\
+ add r0, r9\n\
+ lsls r0, 2\n\
+ ldr r1, =gBattleMoves\n\
+ adds r6, r0, r1\n\
+ ldrb r1, [r6, 0x2]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ ldr r1, =gTypeNames\n\
+ adds r5, r0, r1\n\
+ movs r0, 0x19\n\
+ str r0, [sp]\n\
+ mov r1, r8\n\
+ str r1, [sp, 0x4]\n\
+ str r7, [sp, 0x8]\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ adds r2, r5, 0\n\
+ movs r3, 0x4\n\
+ bl AddTextPrinterParameterized\n\
+ ldr r1, =gText_MoveRelearnerPP\n\
+ movs r0, 0x1\n\
+ movs r2, 0\n\
+ bl GetStringWidth\n\
+ adds r4, r0, 0x4\n\
+ ldrb r1, [r6, 0x4]\n\
+ add r0, sp, 0xC\n\
+ movs r2, 0\n\
+ movs r3, 0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ lsls r3, r4, 24\n\
+ lsrs r3, 24\n\
+ mov r0, r10\n\
+ str r0, [sp]\n\
+ mov r1, r8\n\
+ str r1, [sp, 0x4]\n\
+ str r7, [sp, 0x8]\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ add r2, sp, 0xC\n\
+ bl AddTextPrinterParameterized\n\
+ ldrb r0, [r6, 0x1]\n\
+ cmp r0, 0x1\n\
+ bhi _081D2A3C\n\
+ ldr r5, =gText_ThreeDashes\n\
+ b _081D2A4A\n\
+ .pool\n\
+_081D2A3C:\n\
+ ldrb r1, [r6, 0x1]\n\
+ add r0, sp, 0xC\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ add r5, sp, 0xC\n\
+_081D2A4A:\n\
+ movs r0, 0x19\n\
+ str r0, [sp]\n\
+ movs r0, 0xFF\n\
+ str r0, [sp, 0x4]\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x8]\n\
+ movs r1, 0x1\n\
+ adds r2, r5, 0\n\
+ movs r3, 0x6A\n\
+ bl AddTextPrinterParameterized\n\
+ ldrb r0, [r6, 0x3]\n\
+ cmp r0, 0\n\
+ bne _081D2A70\n\
+ ldr r5, =gText_ThreeDashes\n\
+ b _081D2A7E\n\
+ .pool\n\
+_081D2A70:\n\
+ ldrb r1, [r6, 0x3]\n\
+ add r0, sp, 0xC\n\
+ movs r2, 0\n\
+ movs r3, 0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ add r5, sp, 0xC\n\
+_081D2A7E:\n\
+ movs r0, 0x29\n\
+ str r0, [sp]\n\
+ movs r0, 0xFF\n\
+ str r0, [sp, 0x4]\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x8]\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ adds r2, r5, 0\n\
+ movs r3, 0x6A\n\
+ bl AddTextPrinterParameterized\n\
+ ldr r1, =gMoveDescriptionPointers\n\
+ mov r0, r9\n\
+ subs r0, 0x1\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r5, [r0]\n\
+ movs r0, 0x41\n\
+ str r0, [sp]\n\
+ str r4, [sp, 0x4]\n\
+ str r4, [sp, 0x8]\n\
+ movs r0, 0\n\
+ movs r1, 0x7\n\
+ adds r2, r5, 0\n\
+ movs r3, 0\n\
+ bl AddTextPrinterParameterized\n\
+_081D2AB6:\n\
+ add sp, 0x2C\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
+}
+
+NAKED
+static void MoveRelearnerMenuLoadContestMoveDescription(u32 chosenMove)
+{
+#ifdef NONMATCHING
+ //u8 offset;
+ const u8 *labelStr;
+ const struct ContestMove *move;
+ u8 category;
+ const u8 **temp;
+
+ MoveRelearnerShowHideHearts(chosenMove);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
+ labelStr = gText_MoveRelearnerContestMovesTitle;
+ // GCC compiles these as:
+ // add r3, r0, 0
+ // lsls r3, r3, 24
+ // lsrs r3, r3, 24
+ // But in the original asm:
+ // lsls r3, r0, 24
+ // lsrs r3, r3, 24
+ //offset = GetStringCenterAlignXOffset(1, labelStr, 0x80);
+ AddTextPrinterParameterized(1, 1, labelStr, GetStringCenterAlignXOffset(1, labelStr, 0x80), 1, TEXT_SPEED_FF, NULL);
+
+ labelStr = gText_MoveRelearnerAppeal;
+ //offset = GetStringRightAlignXOffset(1, labelStr, 0x5C);
+ AddTextPrinterParameterized(1, 1, labelStr, GetStringCenterAlignXOffset(1, labelStr, 0x5C), 0x19, TEXT_SPEED_FF, NULL);
+
+ labelStr = gText_MoveRelearnerJam;
+ //offset = GetStringRightAlignXOffset(1, labelStr, 0x5C);
+ AddTextPrinterParameterized(1, 1, labelStr, GetStringCenterAlignXOffset(1, labelStr, 0x5C), 0x29, TEXT_SPEED_FF, NULL);
+
+ if (chosenMove == MENU_NOTHING_CHOSEN)
+ {
+ CopyWindowToVram(1, 2);
+ return;
+ }
+
+ move = &gContestMoves[chosenMove];
+ temp = (const u8**)gContestMoveTypeTextPointers;
+ category = move->contestCategory;
+ labelStr = temp[category];
+ AddTextPrinterParameterized(1, 1, labelStr, 4, 0x19, TEXT_SPEED_FF, NULL);
+
+ labelStr = gContestEffectDescriptionPointers[move->effect];
+ AddTextPrinterParameterized(1, 1, labelStr, 0, 0x41, TEXT_SPEED_FF, NULL);
+
+ CopyWindowToVram(1, 2);
+#else
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0xC\n\
+ adds r4, r0, 0\n\
+ bl MoveRelearnerShowHideHearts\n\
+ movs r0, 0x1\n\
+ movs r1, 0x11\n\
+ bl FillWindowPixelBuffer\n\
+ ldr r5, =gText_MoveRelearnerContestMovesTitle\n\
+ movs r0, 0x1\n\
+ adds r1, r5, 0\n\
+ movs r2, 0x80\n\
+ bl GetStringCenterAlignXOffset\n\
+ lsls r3, r0, 24\n\
+ lsrs r3, 24\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ movs r7, 0xFF\n\
+ str r7, [sp, 0x4]\n\
+ movs r6, 0\n\
+ str r6, [sp, 0x8]\n\
+ movs r1, 0x1\n\
+ adds r2, r5, 0\n\
+ bl AddTextPrinterParameterized\n\
+ ldr r5, =gText_MoveRelearnerAppeal\n\
+ movs r0, 0x1\n\
+ adds r1, r5, 0\n\
+ movs r2, 0x5C\n\
+ bl GetStringRightAlignXOffset\n\
+ lsls r3, r0, 24\n\
+ lsrs r3, 24\n\
+ movs r0, 0x19\n\
+ mov r8, r0\n\
+ str r0, [sp]\n\
+ str r7, [sp, 0x4]\n\
+ str r6, [sp, 0x8]\n\
+ movs r0, 0x1\n\
+ movs r1, 0x1\n\
+ adds r2, r5, 0\n\
+ bl AddTextPrinterParameterized\n\
+ ldr r5, =gText_MoveRelearnerJam\n\
+ movs r0, 0x1\n\
+ adds r1, r5, 0\n\
+ movs r2, 0x5C\n\
+ bl GetStringRightAlignXOffset\n\
+ lsls r3, r0, 24\n\
+ lsrs r3, 24\n\
+ movs r0, 0x29\n\
+ str r0, [sp]\n\
+ str r7, [sp, 0x4]\n\
+ str r6, [sp, 0x8]\n\
+ movs r0, 0x1\n\
+ movs r1, 0x1\n\
+ adds r2, r5, 0\n\
+ bl AddTextPrinterParameterized\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ cmp r4, r0\n\
+ bne _081D2B6C\n\
+ movs r0, 0x1\n\
+ movs r1, 0x2\n\
+ bl CopyWindowToVram\n\
+ b _081D2BB8\n\
+ .pool\n\
+_081D2B6C:\n\
+ lsls r4, 3\n\
+ ldr r0, =gContestMoves\n\
+ adds r4, r0\n\
+ ldr r1, =gContestMoveTypeTextPointers\n\
+ ldrb r0, [r4, 0x1]\n\
+ lsls r0, 29\n\
+ lsrs r0, 27\n\
+ adds r0, r1\n\
+ ldr r5, [r0]\n\
+ mov r0, r8\n\
+ str r0, [sp]\n\
+ str r7, [sp, 0x4]\n\
+ str r6, [sp, 0x8]\n\
+ movs r0, 0x1\n\
+ movs r1, 0x1\n\
+ adds r2, r5, 0\n\
+ movs r3, 0x4\n\
+ bl AddTextPrinterParameterized\n\
+ ldr r1, =gContestEffectDescriptionPointers\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r5, [r0]\n\
+ movs r0, 0x41\n\
+ str r0, [sp]\n\
+ str r7, [sp, 0x4]\n\
+ str r6, [sp, 0x8]\n\
+ movs r0, 0x1\n\
+ movs r1, 0x7\n\
+ adds r2, r5, 0\n\
+ movs r3, 0\n\
+ bl AddTextPrinterParameterized\n\
+ movs r0, 0x1\n\
+ movs r1, 0x2\n\
+ bl CopyWindowToVram\n\
+_081D2BB8:\n\
+ add sp, 0xC\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided");
+#endif
+}
+
+static void MoveRelearnerCursorCallback(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+{
+ if (onInit != TRUE)
+ PlaySE(SE_SELECT);
+ MoveRelearnerLoadBattleMoveDescription(itemIndex);
+ MoveRelearnerMenuLoadContestMoveDescription(itemIndex);
+}
+
+void MoveRelearnerPrintText(u8 *str)
+{
+ u8 speed;
+
+ FillWindowPixelBuffer(3, PIXEL_FILL(1));
+ gTextFlags.canABSpeedUpPrint = TRUE;
+ speed = GetPlayerTextSpeedDelay();
+ AddTextPrinterParameterized2(3, 1, str, speed, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, 3);
+}
+
+bool16 MoveRelearnerRunTextPrinters(void)
+{
+ RunTextPrinters();
+ return IsTextPrinterActive(3);
+}
+
+void MoveRelearnerCreateYesNoMenu(void)
+{
+ CreateYesNoMenu(&sMoveRelearnerYesNoMenuTemplate, 1, 0xE, 0);
+} \ No newline at end of file
diff --git a/src/mirage_tower.c b/src/mirage_tower.c
index a8dd5d9de..898180df4 100644
--- a/src/mirage_tower.c
+++ b/src/mirage_tower.c
@@ -142,10 +142,10 @@ static const struct OamData gOamData_8617DF4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 3,
@@ -192,10 +192,10 @@ static const struct OamData sCeilingCrumble2OamData =
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
.bpp = ST_OAM_4BPP,
- .shape = ST_OAM_SQUARE,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -230,10 +230,10 @@ static const struct OamData sCeilingCrumble1OamData =
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
.bpp = ST_OAM_4BPP,
- .shape = ST_OAM_SQUARE,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -317,7 +317,7 @@ void SetMirageTowerVisibility(void)
u16 rand;
bool8 visible;
- if (VarGet(VAR_0x40CB))
+ if (VarGet(VAR_ROUTE_111_STATE))
{
FlagClear(FLAG_MIRAGE_TOWER_VISIBLE);
return;
diff --git a/src/mon_markings.c b/src/mon_markings.c
index 48f0f5ecb..f8b128045 100644
--- a/src/mon_markings.c
+++ b/src/mon_markings.c
@@ -30,10 +30,10 @@ static const struct OamData gUnknown_0859EE7C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -47,10 +47,10 @@ static const struct OamData gUnknown_0859EE84 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -156,10 +156,10 @@ static const struct OamData gUnknown_0859EF1C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(32x8),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(32x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
diff --git a/src/money.c b/src/money.c
index faf830637..7b95a75ab 100644
--- a/src/money.c
+++ b/src/money.c
@@ -24,10 +24,10 @@ static const struct OamData sOamData_MoneyLabel =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(32x16),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -154,7 +154,7 @@ void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed)
void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount)
{
- SetWindowBorderStyle(windowId, FALSE, tileStart, pallete);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, tileStart, pallete);
PrintMoneyAmountInMoneyBox(windowId, amount, 0);
}
@@ -169,7 +169,7 @@ void DrawMoneyBox(int amount, u8 x, u8 y)
SetWindowTemplateFields(&template, 0, x + 1, y + 1, 10, 2, 15, 8);
sMoneyBoxWindowId = AddWindow(&template);
- FillWindowPixelBuffer(sMoneyBoxWindowId, 0);
+ FillWindowPixelBuffer(sMoneyBoxWindowId, PIXEL_FILL(0));
PutWindowTilemap(sMoneyBoxWindowId);
CopyWindowToVram(sMoneyBoxWindowId, 1);
PrintMoneyAmountInMoneyBoxWithBorder(sMoneyBoxWindowId, 0x214, 14, amount);
@@ -179,7 +179,7 @@ void DrawMoneyBox(int amount, u8 x, u8 y)
void HideMoneyBox(void)
{
RemoveMoneyLabelObject();
- sub_8198070(sMoneyBoxWindowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(sMoneyBoxWindowId, FALSE);
CopyWindowToVram(sMoneyBoxWindowId, 2);
RemoveWindow(sMoneyBoxWindowId);
}
diff --git a/src/move_relearner.c b/src/move_relearner.c
new file mode 100644
index 000000000..e148b9ace
--- /dev/null
+++ b/src/move_relearner.c
@@ -0,0 +1,976 @@
+#include "global.h"
+#include "main.h"
+#include "battle.h"
+#include "bg.h"
+#include "contest_effect.h"
+#include "data2.h"
+#include "event_data.h"
+#include "field_screen_effect.h"
+#include "gpu_regs.h"
+#include "move_relearner.h"
+#include "list_menu.h"
+#include "alloc.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "menu_specialized.h"
+#include "overworld.h"
+#include "palette.h"
+#include "pokemon_summary_screen.h"
+#include "script.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+
+/*
+ * Move relearner state machine
+ * ------------------------
+ *
+ * Entry point: TeachMoveRelearnerMove
+ *
+ * TeachMoveRelearnerMove
+ * Task_WaitForFadeOut
+ * CB2_InitLearnMove
+ * - Creates moveDisplayArrowTask to listen to right/left buttons.
+ * - Creates moveListScrollArrowTask to listen to up/down buttons.
+ * - Whenever the selected move changes (and once on init), the MoveRelearnerCursorCallback
+ * is called (see sMoveRelearnerMovesListTemplate). That callback will reload the contest
+ * display and battle display windows for the new move. Both are always loaded in
+ * memory, but only the currently active one is copied to VRAM. The exception to this
+ * is the appeal and jam hearts, which are sprites. MoveRelearnerShowHideHearts is called
+ * while reloading the contest display to control them.
+ * DoMoveRelearnerMain: MENU_STATE_FADE_TO_BLACK
+ * DoMoveRelearnerMain: MENU_STATE_WAIT_FOR_FADE
+ * - Go to MENU_STATE_IDLE_BATTLE_MODE
+ *
+ * DoMoveRelearnerMain: MENU_STATE_SETUP_BATTLE_MODE
+ * DoMoveRelearnerMain: MENU_STATE_IDLE_BATTLE_MODE
+ * - If the player selected a move (pressed A), go to MENU_STATE_PRINT_TEACH_MOVE_PROMPT.
+ * - If the player cancelled (pressed B), go to MENU_STATE_PRINT_GIVE_UP_PROMPT.
+ * - If the player pressed left or right, swap the move display window to contest mode,
+ * and go to MENU_STATE_SETUP_CONTEST_MODE.
+ *
+ * DoMoveRelearnerMain: MENU_STATE_SETUP_CONTEST_MODE
+ * DoMoveRelearnerMain: MENU_STATE_IDLE_CONTEST_MODE
+ * - If the player selected a move, go to MENU_STATE_PRINT_TEACH_MOVE_PROMPT.
+ * - If the player cancelled, go to MENU_STATE_PRINT_GIVE_UP_PROMPT
+ * - If the player pressed left or right, swap the move display window to battle mode,
+ * and go to MENU_STATE_SETUP_BATTLE_MODE.
+ *
+ * DoMoveRelearnerMain: MENU_STATE_PRINT_TEACH_MOVE_PROMPT
+ * DoMoveRelearnerMain: MENU_STATE_TEACH_MOVE_CONFIRM
+ * - Wait for the player to confirm.
+ * - If cancelled, go to either MENU_STATE_SETUP_BATTLE_MODE or MENU_STATE_SETUP_CONTEST_MODE.
+ * - If confirmed and the pokemon had an empty move slot, set VAR_0x8004 to TRUE and go to
+ * MENU_STATE_PRINT_TEXT_THEN_FANFARE.
+ * - If confirmed and the pokemon doesn't have an empty move slot, go to
+ * MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT.
+ *
+ * DoMoveRelearnerMain: MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT
+ * DoMoveRelearnerMain: MENU_STATE_WAIT_FOR_TRYING_TO_LEARN
+ * DoMoveRelearnerMain: MENU_STATE_CONFIRM_DELETE_OLD_MOVE
+ * - If the player confirms, go to MENU_STATE_PRINT_WHICH_MOVE_PROMPT.
+ * - If the player cancels, go to MENU_STATE_PRINT_STOP_TEACHING
+ *
+ * DoMoveRelearnerMain: MENU_STATE_PRINT_STOP_TEACHING
+ * DoMoveRelearnerMain: MENU_STATE_WAIT_FOR_STOP_TEACHING
+ * DoMoveRelearnerMain: MENU_STATE_CONFIRM_STOP_TEACHING
+ * - If the player confirms, go to MENU_STATE_CHOOSE_SETUP_STATE.
+ * - If the player cancels, go back to MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT.
+ *
+ * DoMoveRelearnerMain: MENU_STATE_PRINT_WHICH_MOVE_PROMPT
+ * DoMoveRelearnerMain: MENU_STATE_SHOW_MOVE_SUMMARY_SCREEN
+ * - Go to ShowSelectMovePokemonSummaryScreen. When done, control returns to
+ * CB2_InitLearnMoveReturnFromSelectMove.
+ *
+ * DoMoveRelearnerMain: MENU_STATE_DOUBLE_FANFARE_FORGOT_MOVE
+ * DoMoveRelearnerMain: MENU_STATE_PRINT_TEXT_THEN_FANFARE
+ * DoMoveRelearnerMain: MENU_STATE_WAIT_FOR_FANFARE
+ * DoMoveRelearnerMain: MENU_STATE_WAIT_FOR_A_BUTTON
+ * DoMoveRelearnerMain: MENU_STATE_FADE_AND_RETURN
+ * DoMoveRelearnerMain: MENU_STATE_RETURN_TO_FIELD
+ * - Clean up and go to CB2_ReturnToField.
+ *
+ * DoMoveRelearnerMain: MENU_STATE_PRINT_GIVE_UP_PROMPT
+ * DoMoveRelearnerMain: MENU_STATE_GIVE_UP_CONFIRM
+ * - If the player confirms, go to MENU_STATE_FADE_AND_RETURN, and set VAR_0x8004 to FALSE.
+ * - If the player cancels, go to either MENU_STATE_SETUP_BATTLE_MODE or
+ * MENU_STATE_SETUP_CONTEST_MODE.
+ *
+ * CB2_InitLearnMoveReturnFromSelectMove:
+ * - Do most of the same stuff as CB2_InitLearnMove.
+ * DoMoveRelearnerMain: MENU_STATE_FADE_FROM_SUMMARY_SCREEN
+ * DoMoveRelearnerMain: MENU_STATE_TRY_OVERWRITE_MOVE
+ * - If any of the pokemon's existing moves were chosen, overwrite the move and
+ * go to MENU_STATE_DOUBLE_FANFARE_FORGOT_MOVE and set VAR_0x8004 to TRUE.
+ * - If the chosen move is the one the player selected before the summary screen,
+ * go to MENU_STATE_PRINT_STOP_TEACHING.
+ *
+ */
+
+#define MENU_STATE_FADE_TO_BLACK 0
+#define MENU_STATE_WAIT_FOR_FADE 1
+#define MENU_STATE_UNREACHABLE 2
+#define MENU_STATE_SETUP_BATTLE_MODE 3
+#define MENU_STATE_IDLE_BATTLE_MODE 4
+#define MENU_STATE_SETUP_CONTEST_MODE 5
+#define MENU_STATE_IDLE_CONTEST_MODE 6
+// State 7 is skipped.
+#define MENU_STATE_PRINT_TEACH_MOVE_PROMPT 8
+#define MENU_STATE_TEACH_MOVE_CONFIRM 9
+// States 10 and 11 are skipped.
+#define MENU_STATE_PRINT_GIVE_UP_PROMPT 12
+#define MENU_STATE_GIVE_UP_CONFIRM 13
+#define MENU_STATE_FADE_AND_RETURN 14
+#define MENU_STATE_RETURN_TO_FIELD 15
+#define MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT 16
+#define MENU_STATE_WAIT_FOR_TRYING_TO_LEARN 17
+#define MENU_STATE_CONFIRM_DELETE_OLD_MOVE 18
+#define MENU_STATE_PRINT_WHICH_MOVE_PROMPT 19
+#define MENU_STATE_SHOW_MOVE_SUMMARY_SCREEN 20
+// States 21, 22, and 23 are skipped.
+#define MENU_STATE_PRINT_STOP_TEACHING 24
+#define MENU_STATE_WAIT_FOR_STOP_TEACHING 25
+#define MENU_STATE_CONFIRM_STOP_TEACHING 26
+#define MENU_STATE_CHOOSE_SETUP_STATE 27
+#define MENU_STATE_FADE_FROM_SUMMARY_SCREEN 28
+#define MENU_STATE_TRY_OVERWRITE_MOVE 29
+#define MENU_STATE_DOUBLE_FANFARE_FORGOT_MOVE 30
+#define MENU_STATE_PRINT_TEXT_THEN_FANFARE 31
+#define MENU_STATE_WAIT_FOR_FANFARE 32
+#define MENU_STATE_WAIT_FOR_A_BUTTON 33
+
+// The different versions of hearts are selected using animation
+// commands.
+#define APPEAL_HEART_EMPTY 0
+#define APPEAL_HEART_FULL 1
+#define JAM_HEART_EMPTY 2
+#define JAM_HEART_FULL 3
+
+static EWRAM_DATA struct
+{
+ u8 state;
+ u8 heartSpriteIds[16]; /*0x001*/
+ u16 movesToLearn[4]; /*0x012*/
+ u8 filler1A[0x44 - 0x1A]; /*0x01A*/
+ u8 partyMon; /*0x044*/
+ u8 moveSlot; /*0x045*/
+ struct ListMenuItem menuItems[20]; /*0x048*/
+ u8 fillerE8[0x110 - 0xE8]; /*0x0E8*/
+ u8 numMenuChoices; /*0x110*/
+ u8 numToShowAtOnce; /*0x111*/
+ u8 moveListMenuTask; /*0x112*/
+ u8 moveListScrollArrowTask; /*0x113*/
+ u8 moveDisplayArrowTask; /*0x114*/
+ u16 scrollOffset; /*0x116*/
+} *sMoveRelearnerStruct = {0};
+
+static EWRAM_DATA struct {
+ u16 listOffset;
+ u16 listRow;
+ bool8 showContestInfo;
+} sMoveRelearnerMenuSate = {0};
+
+static const u16 sMoveRelearnerPaletteData[] = INCBIN_U16("graphics/interface/ui_learn_move.gbapal");
+
+// The arrow sprites in this spritesheet aren't used. The scroll-arrow system provides its own
+// arrow sprites.
+static const u8 sMoveRelearnerSpriteSheetData[] = INCBIN_U8("graphics/interface/ui_learn_move.4bpp");
+
+static const struct OamData sHeartSpriteOamData =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData sUnusedOam1 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_V_RECTANGLE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData sUnusedOam2 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_H_RECTANGLE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteSheet sMoveRelearnerSpriteSheet =
+{
+ .data = sMoveRelearnerSpriteSheetData,
+ .size = 0x180,
+ .tag = 5525
+};
+
+static const struct SpritePalette sMoveRelearnerPalette =
+{
+ .data = sMoveRelearnerPaletteData,
+ .tag = 5526
+};
+
+static const struct ScrollArrowsTemplate sDisplayModeArrowsTemplate =
+{
+ .firstArrowType = SCROLL_ARROW_LEFT,
+ .firstX = 27,
+ .firstY = 16,
+ .secondArrowType = SCROLL_ARROW_RIGHT,
+ .secondX = 117,
+ .secondY = 16,
+ .fullyUpThreshold = -1,
+ .fullyDownThreshold = -1,
+ .tileTag = 5325,
+ .palTag = 5325,
+ .palNum = 0,
+};
+
+static const struct ScrollArrowsTemplate sMoveListScrollArrowsTemplate =
+{
+ .firstArrowType = SCROLL_ARROW_UP,
+ .firstX = 192,
+ .firstY = 8,
+ .secondArrowType = SCROLL_ARROW_DOWN,
+ .secondX = 192,
+ .secondY = 104,
+ .fullyUpThreshold = 0,
+ .fullyDownThreshold = 0,
+ .tileTag = 5425,
+ .palTag = 5425,
+ .palNum = 0,
+};
+
+static const union AnimCmd sHeartSprite_AppealEmptyFrame[] =
+{
+ ANIMCMD_FRAME(8, 5, FALSE, FALSE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sHeartSprite_AppealFullFrame[] =
+{
+ ANIMCMD_FRAME(9, 5, FALSE, FALSE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sHeartSprite_JamEmptyFrame[] =
+{
+ ANIMCMD_FRAME(10, 5, FALSE, FALSE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sHeartSprite_JamFullFrame[] =
+{
+ ANIMCMD_FRAME(11, 5, FALSE, FALSE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sHeartSpriteAnimationCommands[] =
+{
+ [APPEAL_HEART_EMPTY] = sHeartSprite_AppealEmptyFrame,
+ [APPEAL_HEART_FULL] = sHeartSprite_AppealFullFrame,
+ [JAM_HEART_EMPTY] = sHeartSprite_JamEmptyFrame,
+ [JAM_HEART_FULL] = sHeartSprite_JamFullFrame,
+};
+
+static const struct SpriteTemplate sConstestMoveHeartSprite =
+{
+ .tileTag = 5525,
+ .paletteTag = 5526,
+ .oam = &sHeartSpriteOamData,
+ .anims = sHeartSpriteAnimationCommands,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct BgTemplate sMoveRelearnerMenuBackgroundTemplates[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0,
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0,
+ },
+};
+
+static void DoMoveRelearnerMain(void);
+static void CreateLearnableMovesList(void);
+static void CreateUISprites(void);
+static void CB2_MoveRelearnerMain(void);
+static void Task_WaitForFadeOut(u8 taskId);
+static void CB2_InitLearnMove(void);
+static void CB2_InitLearnMoveReturnFromSelectMove(void);
+static void InitMoveRelearnerBackgroundLayers(void);
+static void AddScrollArrows(void);
+static void HandleInput(u8);
+static void ShowTeachMoveText(u8);
+static s32 GetCurrentSelectedMove(void);
+static void FreeMoveRelearnerResources(void);
+static void RemoveScrollArrows(void);
+static void HideHeartSpritesAndShowTeachMoveText(bool8);
+
+static void VBlankCB_MoveRelearner(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+// Script arguments: The pokemon to teach is in VAR_0x8004
+void TeachMoveRelearnerMove(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(Task_WaitForFadeOut, 10);
+ // Fade to black
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
+}
+
+static void Task_WaitForFadeOut(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_InitLearnMove);
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
+ DestroyTask(taskId);
+ }
+}
+
+static void CB2_InitLearnMove(void)
+{
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ clear_scheduled_bg_copies_to_vram();
+ sMoveRelearnerStruct = AllocZeroed(sizeof(*sMoveRelearnerStruct));
+ sMoveRelearnerStruct->partyMon = gSpecialVar_0x8004;
+ SetVBlankCallback(VBlankCB_MoveRelearner);
+
+ InitMoveRelearnerBackgroundLayers();
+ InitMoveRelearnerWindows(FALSE);
+
+ sMoveRelearnerMenuSate.listOffset = 0;
+ sMoveRelearnerMenuSate.listRow = 0;
+ sMoveRelearnerMenuSate.showContestInfo = FALSE;
+
+ CreateLearnableMovesList();
+
+ LoadSpriteSheet(&sMoveRelearnerSpriteSheet);
+ LoadSpritePalette(&sMoveRelearnerPalette);
+ CreateUISprites();
+
+ sMoveRelearnerStruct->moveListMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearnerMenuSate.listOffset, sMoveRelearnerMenuSate.listRow);
+ FillPalette(RGB_BLACK, 0, 2);
+ SetMainCallback2(CB2_MoveRelearnerMain);
+}
+
+static void CB2_InitLearnMoveReturnFromSelectMove(void)
+{
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ clear_scheduled_bg_copies_to_vram();
+ sMoveRelearnerStruct = AllocZeroed(sizeof(*sMoveRelearnerStruct));
+ sMoveRelearnerStruct->state = MENU_STATE_FADE_FROM_SUMMARY_SCREEN;
+ sMoveRelearnerStruct->partyMon = gSpecialVar_0x8004;
+ sMoveRelearnerStruct->moveSlot = gSpecialVar_0x8005;
+ SetVBlankCallback(VBlankCB_MoveRelearner);
+
+ InitMoveRelearnerBackgroundLayers();
+ InitMoveRelearnerWindows(sMoveRelearnerMenuSate.showContestInfo);
+ CreateLearnableMovesList();
+
+ LoadSpriteSheet(&sMoveRelearnerSpriteSheet);
+ LoadSpritePalette(&sMoveRelearnerPalette);
+ CreateUISprites();
+
+ sMoveRelearnerStruct->moveListMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, sMoveRelearnerMenuSate.listOffset, sMoveRelearnerMenuSate.listRow);
+ FillPalette(RGB_BLACK, 0, 2);
+ SetMainCallback2(CB2_MoveRelearnerMain);
+}
+
+static void InitMoveRelearnerBackgroundLayers(void)
+{
+ ResetVramOamAndBgCntRegs();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sMoveRelearnerMenuBackgroundTemplates, ARRAY_COUNT(sMoveRelearnerMenuBackgroundTemplates));
+ ResetAllBgsCoordinates();
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
+ DISPCNT_OBJ_1D_MAP |
+ DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(1);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+}
+
+static void CB2_MoveRelearnerMain(void)
+{
+ DoMoveRelearnerMain();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+ UpdatePaletteFade();
+}
+
+static void FormatAndPrintText(const u8 *src)
+{
+ StringExpandPlaceholders(gStringVar4, src);
+ MoveRelearnerPrintText(gStringVar4);
+}
+
+// See the state machine doc at the top of the file.
+static void DoMoveRelearnerMain(void)
+{
+ switch (sMoveRelearnerStruct->state)
+ {
+ case MENU_STATE_FADE_TO_BLACK:
+ sMoveRelearnerStruct->state++;
+ HideHeartSpritesAndShowTeachMoveText(FALSE);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ break;
+ case MENU_STATE_WAIT_FOR_FADE:
+ if (!gPaletteFade.active)
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_IDLE_BATTLE_MODE;
+ }
+ break;
+ case MENU_STATE_UNREACHABLE:
+ sMoveRelearnerStruct->state++;
+ break;
+ case MENU_STATE_SETUP_BATTLE_MODE:
+
+ HideHeartSpritesAndShowTeachMoveText(FALSE);
+ sMoveRelearnerStruct->state++;
+ AddScrollArrows();
+ break;
+ case MENU_STATE_IDLE_BATTLE_MODE:
+ HandleInput(FALSE);
+ break;
+ case MENU_STATE_SETUP_CONTEST_MODE:
+ ShowTeachMoveText(FALSE);
+ sMoveRelearnerStruct->state++;
+ AddScrollArrows();
+ break;
+ case MENU_STATE_IDLE_CONTEST_MODE:
+ HandleInput(TRUE);
+ break;
+ case MENU_STATE_PRINT_TEACH_MOVE_PROMPT:
+ if (!MoveRelearnerRunTextPrinters())
+ {
+ MoveRelearnerCreateYesNoMenu();
+ sMoveRelearnerStruct->state++;
+ }
+ break;
+ case MENU_STATE_TEACH_MOVE_CONFIRM:
+ {
+ s8 selection = Menu_ProcessInputNoWrapClearOnChoose();
+
+ if (selection == 0)
+ {
+ if (GiveMoveToMon(&gPlayerParty[sMoveRelearnerStruct->partyMon], GetCurrentSelectedMove()) != 0xFFFF)
+ {
+ FormatAndPrintText(gText_MoveRelearnerPkmnLearnedMove);
+ gSpecialVar_0x8004 = TRUE;
+ sMoveRelearnerStruct->state = MENU_STATE_PRINT_TEXT_THEN_FANFARE;
+ }
+ else
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT;
+ }
+ }
+ else if (selection == MENU_B_PRESSED || selection == 1)
+ {
+ if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
+ }
+ else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
+ }
+ }
+ }
+ break;
+ case MENU_STATE_PRINT_GIVE_UP_PROMPT:
+ if (!MoveRelearnerRunTextPrinters())
+ {
+ MoveRelearnerCreateYesNoMenu();
+ sMoveRelearnerStruct->state++;
+ }
+ break;
+ case MENU_STATE_GIVE_UP_CONFIRM:
+ {
+ s8 selection = Menu_ProcessInputNoWrapClearOnChoose();
+
+ if (selection == 0)
+ {
+ gSpecialVar_0x8004 = FALSE;
+ sMoveRelearnerStruct->state = MENU_STATE_FADE_AND_RETURN;
+ }
+ else if (selection == -1 || selection == 1)
+ {
+ if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
+ }
+ else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
+ }
+ }
+ }
+ break;
+ case MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT:
+ FormatAndPrintText(gText_MoveRelearnerPkmnTryingToLearnMove);
+ sMoveRelearnerStruct->state++;
+ break;
+ case MENU_STATE_WAIT_FOR_TRYING_TO_LEARN:
+ if (!MoveRelearnerRunTextPrinters())
+ {
+ MoveRelearnerCreateYesNoMenu();
+ sMoveRelearnerStruct->state = MENU_STATE_CONFIRM_DELETE_OLD_MOVE;
+ }
+ break;
+ case MENU_STATE_CONFIRM_DELETE_OLD_MOVE:
+ {
+ s8 var = Menu_ProcessInputNoWrapClearOnChoose();
+
+ if (var == 0)
+ {
+ FormatAndPrintText(gText_MoveRelearnerWhichMoveToForget);
+ sMoveRelearnerStruct->state = MENU_STATE_PRINT_WHICH_MOVE_PROMPT;
+ }
+ else if (var == -1 || var == 1)
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_PRINT_STOP_TEACHING;
+ }
+ }
+ break;
+ case MENU_STATE_PRINT_STOP_TEACHING:
+ StringCopy(gStringVar2, gMoveNames[GetCurrentSelectedMove()]);
+ FormatAndPrintText(gText_MoveRelearnerStopTryingToTeachMove);
+ sMoveRelearnerStruct->state++;
+ break;
+ case MENU_STATE_WAIT_FOR_STOP_TEACHING:
+ if (!MoveRelearnerRunTextPrinters())
+ {
+ MoveRelearnerCreateYesNoMenu();
+ sMoveRelearnerStruct->state++;
+ }
+ break;
+ case MENU_STATE_CONFIRM_STOP_TEACHING:
+ {
+ s8 var = Menu_ProcessInputNoWrapClearOnChoose();
+
+ if (var == 0)
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_CHOOSE_SETUP_STATE;
+ }
+ else if (var == MENU_B_PRESSED || var == 1)
+ {
+ // What's the point? It gets set to MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT, anyway.
+ if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
+ }
+ else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
+ }
+ sMoveRelearnerStruct->state = MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT;
+ }
+ }
+ break;
+ case MENU_STATE_CHOOSE_SETUP_STATE:
+ if (!MoveRelearnerRunTextPrinters())
+ {
+ FillWindowPixelBuffer(3, 0x11);
+ if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
+ }
+ else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
+ }
+ }
+ break;
+ case MENU_STATE_PRINT_WHICH_MOVE_PROMPT:
+ if (!MoveRelearnerRunTextPrinters())
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_SHOW_MOVE_SUMMARY_SCREEN;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ }
+ break;
+ case MENU_STATE_SHOW_MOVE_SUMMARY_SCREEN:
+ if (!gPaletteFade.active)
+ {
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, sMoveRelearnerStruct->partyMon, gPlayerPartyCount - 1, CB2_InitLearnMoveReturnFromSelectMove, GetCurrentSelectedMove());
+ FreeMoveRelearnerResources();
+ }
+ break;
+ case 21:
+ if (!MoveRelearnerRunTextPrinters())
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_FADE_AND_RETURN;
+ }
+ break;
+ case 22:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ break;
+ case MENU_STATE_FADE_AND_RETURN:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sMoveRelearnerStruct->state++;
+ break;
+ case MENU_STATE_RETURN_TO_FIELD:
+ if (!gPaletteFade.active)
+ {
+ FreeMoveRelearnerResources();
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ break;
+ case MENU_STATE_FADE_FROM_SUMMARY_SCREEN:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ sMoveRelearnerStruct->state++;
+ if (sMoveRelearnerMenuSate.showContestInfo == FALSE)
+ {
+ HideHeartSpritesAndShowTeachMoveText(TRUE);
+ }
+ else if (sMoveRelearnerMenuSate.showContestInfo == TRUE)
+ {
+ ShowTeachMoveText(TRUE);
+ }
+ RemoveScrollArrows();
+ CopyWindowToVram(3, 2);
+ break;
+ case MENU_STATE_TRY_OVERWRITE_MOVE:
+ if (!gPaletteFade.active)
+ {
+ if (sMoveRelearnerStruct->moveSlot == MAX_MON_MOVES)
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_PRINT_STOP_TEACHING;
+ }
+ else
+ {
+ u16 moveId = GetMonData(&gPlayerParty[sMoveRelearnerStruct->partyMon], MON_DATA_MOVE1 + sMoveRelearnerStruct->moveSlot);
+
+ StringCopy(gStringVar3, gMoveNames[moveId]);
+ RemoveMonPPBonus(&gPlayerParty[sMoveRelearnerStruct->partyMon], sMoveRelearnerStruct->moveSlot);
+ SetMonMoveSlot(&gPlayerParty[sMoveRelearnerStruct->partyMon], GetCurrentSelectedMove(), sMoveRelearnerStruct->moveSlot);
+ StringCopy(gStringVar2, gMoveNames[GetCurrentSelectedMove()]);
+ FormatAndPrintText(gText_MoveRelearnerAndPoof);
+ sMoveRelearnerStruct->state = MENU_STATE_DOUBLE_FANFARE_FORGOT_MOVE;
+ gSpecialVar_0x8004 = TRUE;
+ }
+ }
+ break;
+ case MENU_STATE_DOUBLE_FANFARE_FORGOT_MOVE:
+ if (!MoveRelearnerRunTextPrinters())
+ {
+ FormatAndPrintText(gText_MoveRelearnerPkmnForgotMoveAndLearnedNew);
+ sMoveRelearnerStruct->state = MENU_STATE_PRINT_TEXT_THEN_FANFARE;
+ PlayFanfare(MUS_FANFA1);
+ }
+ break;
+ case MENU_STATE_PRINT_TEXT_THEN_FANFARE:
+ if (!MoveRelearnerRunTextPrinters())
+ {
+ PlayFanfare(MUS_FANFA1);
+ sMoveRelearnerStruct->state = MENU_STATE_WAIT_FOR_FANFARE;
+ }
+ break;
+ case MENU_STATE_WAIT_FOR_FANFARE:
+ if (IsFanfareTaskInactive())
+ {
+ sMoveRelearnerStruct->state = MENU_STATE_WAIT_FOR_A_BUTTON;
+ }
+ break;
+ case MENU_STATE_WAIT_FOR_A_BUTTON:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sMoveRelearnerStruct->state = MENU_STATE_FADE_AND_RETURN;
+ }
+ break;
+ }
+}
+
+static void FreeMoveRelearnerResources(void)
+{
+ RemoveScrollArrows();
+ DestroyListMenuTask(sMoveRelearnerStruct->moveListMenuTask, &sMoveRelearnerMenuSate.listOffset, &sMoveRelearnerMenuSate.listRow);
+ FreeAllWindowBuffers();
+ FREE_AND_SET_NULL(sMoveRelearnerStruct);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+}
+
+// Note: The hearts are already made invisible by MoveRelearnerShowHideHearts,
+// which is called whenever the cursor in either list changes.
+static void HideHeartSpritesAndShowTeachMoveText(bool8 onlyHideSprites)
+{
+ s32 i;
+
+ for (i = 0; i < 16; i++)
+ {
+ gSprites[sMoveRelearnerStruct->heartSpriteIds[i]].invisible = TRUE;
+ }
+
+ if (!onlyHideSprites)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn);
+ FillWindowPixelBuffer(3, 0x11);
+ AddTextPrinterParameterized(3, 1, gStringVar4, 0, 1, 0, NULL);
+ }
+}
+
+static void HandleInput(bool8 showContest)
+{
+ s32 itemId = ListMenu_ProcessInput(sMoveRelearnerStruct->moveListMenuTask);
+ ListMenuGetScrollAndRow(sMoveRelearnerStruct->moveListMenuTask, &sMoveRelearnerMenuSate.listOffset, &sMoveRelearnerMenuSate.listRow);
+
+ switch (itemId)
+ {
+ case LIST_NOTHING_CHOSEN:
+ if (!(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) && !GetLRKeysState())
+ {
+ break;
+ }
+
+ PlaySE(SE_SELECT);
+
+ if (showContest == FALSE)
+ {
+ PutWindowTilemap(1);
+ sMoveRelearnerStruct->state = MENU_STATE_SETUP_CONTEST_MODE;
+ sMoveRelearnerMenuSate.showContestInfo = TRUE;
+ }
+ else
+ {
+ PutWindowTilemap(0);
+ sMoveRelearnerStruct->state = MENU_STATE_SETUP_BATTLE_MODE;
+ sMoveRelearnerMenuSate.showContestInfo = FALSE;
+ }
+
+ schedule_bg_copy_tilemap_to_vram(1);
+ MoveRelearnerShowHideHearts(GetCurrentSelectedMove());
+ break;
+ case LIST_CANCEL:
+ PlaySE(SE_SELECT);
+ RemoveScrollArrows();
+ sMoveRelearnerStruct->state = MENU_STATE_PRINT_GIVE_UP_PROMPT;
+ StringExpandPlaceholders(gStringVar4, gText_MoveRelearnerGiveUp);
+ MoveRelearnerPrintText(gStringVar4);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ RemoveScrollArrows();
+ sMoveRelearnerStruct->state = MENU_STATE_PRINT_TEACH_MOVE_PROMPT;
+ StringCopy(gStringVar2, gMoveNames[itemId]);
+ StringExpandPlaceholders(gStringVar4, gText_MoveRelearnerTeachMoveConfirm);
+ MoveRelearnerPrintText(gStringVar4);
+ break;
+ }
+}
+
+static s32 GetCurrentSelectedMove(void)
+{
+ return sMoveRelearnerStruct->menuItems[sMoveRelearnerMenuSate.listRow + sMoveRelearnerMenuSate.listOffset].id;
+}
+
+// Theory: This used to make the heart sprites visible again (i.e.
+// this was the inverse of HideHeartsAndShowTeachMoveText), but the
+// code was commented out. The bool argument would have been named
+// "justShowHearts." The code for showing/hiding the heards was moved
+// to MoveRelearnerShowHideHearts, which is called whenever a new move is
+// selected and whenever the display mode changes.
+static void ShowTeachMoveText(bool8 shouldDoNothingInstead)
+{
+ if (shouldDoNothingInstead == FALSE)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn);
+ FillWindowPixelBuffer(3, 0x11);
+ AddTextPrinterParameterized(3, 1, gStringVar4, 0, 1, 0, NULL);
+ }
+}
+
+static void CreateUISprites(void)
+{
+ int i;
+
+ sMoveRelearnerStruct->moveDisplayArrowTask = 0xFF;
+ sMoveRelearnerStruct->moveListScrollArrowTask = 0xFF;
+ AddScrollArrows();
+
+ // These are the appeal hearts.
+ for (i = 0; i < 8; i++)
+ {
+ sMoveRelearnerStruct->heartSpriteIds[i] = CreateSprite(&sConstestMoveHeartSprite, (i - (i / 4) * 4) * 8 + 104, (i / 4) * 8 + 36, 0);
+ }
+
+ // These are the jam harts.
+ // The animation is used to toggle between full/empty heart sprites.
+ for (i = 0; i < 8; i++)
+ {
+ sMoveRelearnerStruct->heartSpriteIds[i + 8] = CreateSprite(&sConstestMoveHeartSprite, (i - (i / 4) * 4) * 8 + 104, (i / 4) * 8 + 52, 0);
+ StartSpriteAnim(&gSprites[sMoveRelearnerStruct->heartSpriteIds[i + 8]], 2);
+ }
+
+ for (i = 0; i < 16; i++)
+ {
+ gSprites[sMoveRelearnerStruct->heartSpriteIds[i]].invisible = TRUE;
+ }
+}
+
+static void AddScrollArrows(void)
+{
+ if (sMoveRelearnerStruct->moveDisplayArrowTask == 0xFF)
+ {
+ sMoveRelearnerStruct->moveDisplayArrowTask = AddScrollIndicatorArrowPair(&sDisplayModeArrowsTemplate, &sMoveRelearnerStruct->scrollOffset);
+ }
+
+ if (sMoveRelearnerStruct->moveListScrollArrowTask == 0xFF)
+ {
+ gTempScrollArrowTemplate = sMoveListScrollArrowsTemplate;
+ gTempScrollArrowTemplate.fullyDownThreshold = sMoveRelearnerStruct->numMenuChoices - sMoveRelearnerStruct->numToShowAtOnce;
+ sMoveRelearnerStruct->moveListScrollArrowTask = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &sMoveRelearnerMenuSate.listOffset);
+ }
+}
+
+static void RemoveScrollArrows(void)
+{
+ if (sMoveRelearnerStruct->moveDisplayArrowTask != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(sMoveRelearnerStruct->moveDisplayArrowTask);
+ sMoveRelearnerStruct->moveDisplayArrowTask = 0xFF;
+ }
+
+ if (sMoveRelearnerStruct->moveListScrollArrowTask != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(sMoveRelearnerStruct->moveListScrollArrowTask);
+ sMoveRelearnerStruct->moveListScrollArrowTask = 0xFF;
+ }
+}
+
+static void CreateLearnableMovesList(void)
+{
+ s32 i;
+ u8 nickname[POKEMON_NAME_LENGTH + 1];
+
+ sMoveRelearnerStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sMoveRelearnerStruct->partyMon], sMoveRelearnerStruct->movesToLearn);
+
+ for (i = 0; i < sMoveRelearnerStruct->numMenuChoices; i++)
+ {
+ sMoveRelearnerStruct->menuItems[i].name = gMoveNames[sMoveRelearnerStruct->movesToLearn[i]];
+ sMoveRelearnerStruct->menuItems[i].id = sMoveRelearnerStruct->movesToLearn[i];
+ }
+
+ GetMonData(&gPlayerParty[sMoveRelearnerStruct->partyMon], MON_DATA_NICKNAME, nickname);
+ StringCopy10(gStringVar1, nickname);
+ sMoveRelearnerStruct->menuItems[sMoveRelearnerStruct->numMenuChoices].name = gText_Cancel;
+ sMoveRelearnerStruct->menuItems[sMoveRelearnerStruct->numMenuChoices].id = LIST_CANCEL;
+ sMoveRelearnerStruct->numMenuChoices++;
+ sMoveRelearnerStruct->numToShowAtOnce = LoadMoveRelearnerMovesList(sMoveRelearnerStruct->menuItems, sMoveRelearnerStruct->numMenuChoices);
+}
+
+void MoveRelearnerShowHideHearts(s32 moveId)
+{
+ u16 numHearts;
+ u16 i;
+
+ if (!sMoveRelearnerMenuSate.showContestInfo || moveId == LIST_CANCEL)
+ {
+ for (i = 0; i < 16; i++)
+ {
+ gSprites[sMoveRelearnerStruct->heartSpriteIds[i]].invisible = TRUE;
+ }
+ }
+ else
+ {
+ numHearts = (u8)(gContestEffects[gContestMoves[moveId].effect].appeal / 10);
+
+ if (numHearts == 0xFF)
+ {
+ numHearts = 0;
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ if (i < numHearts)
+ {
+ StartSpriteAnim(&gSprites[sMoveRelearnerStruct->heartSpriteIds[i]], 1);
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[sMoveRelearnerStruct->heartSpriteIds[i]], 0);
+ }
+ gSprites[sMoveRelearnerStruct->heartSpriteIds[i]].invisible = FALSE;
+ }
+
+ numHearts = (u8)(gContestEffects[gContestMoves[moveId].effect].jam / 10);
+
+ if (numHearts == 0xFF)
+ {
+ numHearts = 0;
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ if (i < numHearts)
+ {
+ StartSpriteAnim(&gSprites[sMoveRelearnerStruct->heartSpriteIds[i + 8]], 3);
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[sMoveRelearnerStruct->heartSpriteIds[i + 8]], 2);
+ }
+ gSprites[sMoveRelearnerStruct->heartSpriteIds[i + 8]].invisible = FALSE;
+ }
+ }
+}
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 0de4675d9..ad4a2e692 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -90,7 +90,7 @@ void CB2_InitMysteryEventMenu(void)
DeactivateAllTextPrinters();
for (i = 0; i < 2; i++)
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14);
LoadUserWindowBorderGfx(0, 1u, 0xD0u);
@@ -133,7 +133,7 @@ static void CB2_MysteryEventMenu(void)
switch (gMain.state)
{
case 0:
- SetWindowBorderStyle(0, 1, 1, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(0, 1, 1, 0xD);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
ShowBg(0);
@@ -179,8 +179,8 @@ static void CB2_MysteryEventMenu(void)
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- sub_800A620();
- SetWindowBorderStyle(1, 1, 1, 0xD);
+ CheckShouldAdvanceLinkState();
+ DrawStdFrameWithCustomTileAndPalette(1, 1, 1, 0xD);
PrintMysteryMenuText(1, gText_LoadingEvent, 1, 2, 0);
PutWindowTilemap(1);
CopyWindowToVram(1, 3);
@@ -313,6 +313,6 @@ static void PrintMysteryMenuText(u8 windowId, const u8 *text, u8 x, u8 y, s32 sp
textColor[1] = 2;
textColor[2] = 3;
- FillWindowPixelBuffer(windowId, (textColor[0]) | (textColor[0] << 4));
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(textColor[0]));
AddTextPrinterParameterized4(windowId, 1, x, y, letterSpacing, lineSpacing, textColor, speed, text);
}
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index 4196bb34c..dba914b51 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -17,8 +17,6 @@
#include "mystery_event_msg.h"
#include "pokemon_storage_system.h"
-extern void sub_811EFC0(u8);
-
extern ScrCmdFunc gMysteryEventScriptCmdTable[];
extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[];
diff --git a/src/naming_screen.c b/src/naming_screen.c
index c310ceb9f..75b7c8566 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -557,7 +557,7 @@ static void DisplaySentToPCMessage(void)
stringToDisplay++;
StringExpandPlaceholders(gStringVar4, gUnknown_0858BDB8[stringToDisplay]);
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
gTextFlags.canABSpeedUpPrint = TRUE;
AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeedDelay(), 0, 2, 1, 3);
CopyWindowToVram(0, 3);
@@ -1474,7 +1474,7 @@ static void HandleDpadMovement(struct Task *task)
static void sub_80E4894(void)
{
- FillWindowPixelBuffer(gNamingScreenData->windows[3], 0x11);
+ FillWindowPixelBuffer(gNamingScreenData->windows[3], PIXEL_FILL(1));
AddTextPrinterParameterized(gNamingScreenData->windows[3], 1, gNamingScreenData->template->title, 8, 1, 0, 0);
PutWindowTilemap(gNamingScreenData->windows[3]);
}
@@ -1485,7 +1485,7 @@ static void sub_80E48E8(void)
StringCopy(buffer, gSpeciesNames[gNamingScreenData->monSpecies]);
StringAppendN(buffer, gNamingScreenData->template->title, 15);
- FillWindowPixelBuffer(gNamingScreenData->windows[3], 0x11);
+ FillWindowPixelBuffer(gNamingScreenData->windows[3], PIXEL_FILL(1));
AddTextPrinterParameterized(gNamingScreenData->windows[3], 1, buffer, 8, 1, 0, 0);
PutWindowTilemap(gNamingScreenData->windows[3]);
}
@@ -1672,7 +1672,7 @@ static void sub_80E4D10(void)
u8 maxChars = gNamingScreenData->template->maxChars;
u16 unk = gNamingScreenData->inputCharBaseXPos - 0x40;
- FillWindowPixelBuffer(gNamingScreenData->windows[2], 0x11);
+ FillWindowPixelBuffer(gNamingScreenData->windows[2], PIXEL_FILL(1));
for (i = 0; i < maxChars; i++)
{
@@ -1704,7 +1704,9 @@ static const struct TextColorThing sUnkColorStruct =
static const u8 sFillValues[3] =
{
- 0xEE, 0xDD, 0xFF
+ PIXEL_FILL(0xE),
+ PIXEL_FILL(0xD),
+ PIXEL_FILL(0xF)
};
static const u8 *const sUnkColors[3] =
@@ -1766,7 +1768,7 @@ static void sub_80E4EF0(void)
{
const u8 color[3] = { 15, 1, 2 };
- FillWindowPixelBuffer(gNamingScreenData->windows[4], 0xFF);
+ FillWindowPixelBuffer(gNamingScreenData->windows[4], PIXEL_FILL(15));
AddTextPrinterParameterized3(gNamingScreenData->windows[4], 0, 2, 1, color, 0, gText_MoveOkBack);
PutWindowTilemap(gNamingScreenData->windows[4]);
CopyWindowToVram(gNamingScreenData->windows[4], 3);
@@ -1908,10 +1910,10 @@ const struct OamData gOamData_858BFEC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -1925,10 +1927,10 @@ const struct OamData gOamData_858BFF4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -1942,10 +1944,10 @@ const struct OamData gOamData_858BFFC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(32x16),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
diff --git a/src/new_game.c b/src/new_game.c
index 158120245..2e8930f7c 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -8,6 +8,7 @@
#include "lottery_corner.h"
#include "play_time.h"
#include "mauville_old_man.h"
+#include "match_call.h"
#include "lilycove_lady.h"
#include "load_save.h"
#include "pokeblock.h"
@@ -29,32 +30,25 @@
#include "apprentice.h"
#include "frontier_util.h"
#include "constants/maps.h"
+#include "pokedex.h"
+#include "save.h"
+#include "link_rfu.h"
+#include "main.h"
+#include "contest.h"
+#include "item_menu.h"
+#include "pokemon_storage_system.h"
+#include "decoration_inventory.h"
+#include "secret_base.h"
+#include "player_pc.h"
+#include "field_specials.h"
+
-extern u16 gSaveFileStatus;
-extern u8 gUnknown_030060B0;
-
-// TODO: replace those declarations with file headers
-extern u16 GetGeneratedTrainerIdLower(void);
-extern void ClearContestWinnerPicsInContestHall(void);
-extern void sub_80BB358(void);
-extern void ResetBagScrollPositions(void);
-extern void ResetGabbyAndTy(void);
-extern void ResetSecretBases(void);
-extern void ResetLinkContestBoolean(void);
-extern void sub_8052DA8(void);
-extern void ResetPokemonStorageSystem(void);
-extern void NewGameInitPCItems(void);
-extern void ClearDecorationInventories(void);
-extern void ResetFanClub(void);
extern void copy_strings_to_sav1(void);
-extern void InitMatchCallCounters(void);
extern void sub_801AFD8(void);
-extern void sub_800E5AC(void);
-extern void ResetContestLinkResults(void);
extern void ResetPokeJumpResults(void);
extern void SetBerryPowder(u32* powder, u32 newValue);
-extern const u8 EventScript_2715DE[];
+extern const u8 EventScript_ResetAllMapFlags[];
// this file's functions
static void ClearFrontierRecord(void);
@@ -112,7 +106,7 @@ static void SetDefaultOptions(void)
static void ClearPokedexFlags(void)
{
- gUnknown_030060B0 = 0;
+ gUnusedPokedexU8 = 0;
memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned));
memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen));
}
@@ -130,8 +124,8 @@ static void ClearFrontierRecord(void)
{
CpuFill32(0, &gSaveBlock2Ptr->frontier, sizeof(gSaveBlock2Ptr->frontier));
- gSaveBlock2Ptr->frontier.field_EE1[0][0] = EOS;
- gSaveBlock2Ptr->frontier.field_EE1[1][0] = EOS;
+ gSaveBlock2Ptr->frontier.opponentName[0][0] = EOS;
+ gSaveBlock2Ptr->frontier.opponentName[1][0] = EOS;
}
static void WarpToTruck(void)
@@ -146,10 +140,10 @@ void Sav2_ClearSetDefault(void)
SetDefaultOptions();
}
-void sub_808447C(void)
+void ResetMenuAndMonGlobals(void)
{
gDifferentSaveFile = 0;
- sub_80BB358();
+ ResetPokedexScrollPositions();
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
ResetBagScrollPositions();
@@ -203,7 +197,7 @@ void NewGameInitData(void)
ResetFanClub();
ResetLotteryCorner();
WarpToTruck();
- ScriptContext2_RunNewScript(EventScript_2715DE);
+ ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags);
ResetMiniGamesResults();
copy_strings_to_sav1();
SetLilycoveLady();
@@ -211,7 +205,7 @@ void NewGameInitData(void)
ClearRankingHallRecords();
InitMatchCallCounters();
sub_801AFD8();
- sub_800E5AC();
+ WipeTrainerNameRecords();
ResetTrainerHillResults();
ResetContestLinkResults();
}
diff --git a/src/normal.c b/src/normal.c
index 95c99d29e..2b592e199 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -36,8 +36,6 @@ 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),
@@ -323,14 +321,14 @@ void AnimSimplePaletteBlend(struct Sprite *sprite)
// 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 battleBackground = selector & 1;
+ u8 attacker = (selector >> 1) & 1;
+ u8 target = (selector >> 2) & 1;
+ u8 attackerPartner = (selector >> 3) & 1;
+ u8 targetPartner = (selector >> 4) & 1;
u8 arg5 = (selector >> 5) & 1;
u8 arg6 = (selector >> 6) & 1;
- return sub_80A75AC(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+ return sub_80A75AC(battleBackground, attacker, target, attackerPartner, targetPartner, arg5, arg6);
}
static void AnimSimplePaletteBlendStep(struct Sprite *sprite)
diff --git a/src/option_menu.c b/src/option_menu.c
index 122ba8d8a..2fc0d6f3e 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -13,8 +13,7 @@
#include "text_window.h"
#include "international_string_util.h"
#include "strings.h"
-
-extern void SetPokemonCryStereo(u32 val);
+#include "gba/m4a_internal.h"
// Task data
enum
@@ -620,7 +619,7 @@ static void ButtonMode_DrawChoices(u8 selection)
static void DrawTextOption(void)
{
- FillWindowPixelBuffer(WIN_TEXT_OPTION, 0x11);
+ FillWindowPixelBuffer(WIN_TEXT_OPTION, PIXEL_FILL(1));
AddTextPrinterParameterized(WIN_TEXT_OPTION, 1, gText_Option, 8, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(WIN_TEXT_OPTION, 3);
}
@@ -629,7 +628,7 @@ static void DrawOptionMenuTexts(void)
{
u8 i;
- FillWindowPixelBuffer(WIN_OPTIONS, 0x11);
+ FillWindowPixelBuffer(WIN_OPTIONS, PIXEL_FILL(1));
for (i = 0; i < MENUITEM_COUNT; i++)
{
AddTextPrinterParameterized(WIN_OPTIONS, 1, sOptionMenuItemsNames[i], 8, (i * 16) + 1, TEXT_SPEED_FF, NULL);
diff --git a/src/overworld.c b/src/overworld.c
index a67b4b68f..ce1e21ab1 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -19,6 +19,7 @@
#include "field_tasks.h"
#include "field_weather.h"
#include "fieldmap.h"
+#include "fldeff.h"
#include "gpu_regs.h"
#include "heal_location.h"
#include "link.h"
@@ -28,6 +29,7 @@
#include "alloc.h"
#include "m4a.h"
#include "map_name_popup.h"
+#include "match_call.h"
#include "menu.h"
#include "metatile_behavior.h"
#include "mirage_tower.h"
@@ -42,19 +44,21 @@
#include "save.h"
#include "save_location.h"
#include "script.h"
-// #include "script_pokemon_80C4.h"
+#include "script_pokemon_util_80F87D8.h"
#include "secret_base.h"
#include "sound.h"
#include "start_menu.h"
#include "task.h"
-// #include "tileset_anim.h"
+#include "tileset_anims.h"
#include "time_events.h"
#include "trainer_hill.h"
+#include "trainer_pokemon_sprites.h"
#include "tv.h"
#include "scanline_effect.h"
#include "wild_encounter.h"
#include "frontier_util.h"
#include "constants/abilities.h"
+#include "constants/layouts.h"
#include "constants/map_types.h"
#include "constants/maps.h"
#include "constants/region_map_sections.h"
@@ -62,96 +66,48 @@
#include "constants/species.h"
#include "constants/weather.h"
+#define PLAYER_TRADING_STATE_IDLE 0x80
+#define PLAYER_TRADING_STATE_BUSY 0x81
+#define PLAYER_TRADING_STATE_UNK_2 0x82
+#define PLAYER_TRADING_STATE_EXITING_ROOM 0x83
+
+#define FACING_NONE 0
+#define FACING_UP 1
+#define FACING_DOWN 2
+#define FACING_LEFT 3
+#define FACING_RIGHT 4
+#define FACING_FORCED_UP 7
+#define FACING_FORCED_DOWN 8
+#define FACING_FORCED_LEFT 9
+#define FACING_FORCED_RIGHT 10
+
// event scripts
extern const u8 EventScript_WhiteOut[];
-extern const u8 EventScript_271862[];
-extern const u8 EventScript_277513[];
-extern const u8 EventScript_TradeRoom_TooBusyToNotice[];
-extern const u8 EventScript_TradeRoom_ReadTrainerCard1[];
-extern const u8 EventScript_TradeRoom_ReadTrainerCard2[];
-extern const u8 gUnknown_08277388[];
-extern const u8 gUnknown_082773A3[];
-extern const u8 gUnknown_082773BE[];
-extern const u8 gUnknown_082773D9[];
-extern const u8 gUnknown_0827741D[];
-extern const u8 gUnknown_08277432[];
-extern const u8 gUnknown_08277447[];
-extern const u8 gUnknown_0827745C[];
-extern const u8 gUnknown_08277374[];
-extern const u8 gUnknown_0827737E[];
-extern const u8 gUnknown_082773FF[];
-extern const u8 gUnknown_082773F5[];
-extern const u8 gUnknown_082774EF[];
-extern const u8 gUnknown_08277509[];
-
-// vars
+extern const u8 EventScript_ResetMrBriney[];
+extern const u8 EventScript_DoLinkRoomExit[];
+extern const u8 gEventScript_TradeRoom_TooBusyToNotice[];
+extern const u8 gEventScript_TradeRoom_ReadTrainerCard_NoColor[];
+extern const u8 gEventScript_TradeRoom_ReadTrainerCard_Normal[];
+extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot0[];
+extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot1[];
+extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot2[];
+extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot3[];
+extern const u8 EventScript_RecordCenter_Spot0[];
+extern const u8 EventScript_RecordCenter_Spot1[];
+extern const u8 EventScript_RecordCenter_Spot2[];
+extern const u8 EventScript_RecordCenter_Spot3[];
+extern const u8 EventScript_SingleBattleColosseum_PlayerSpot0[];
+extern const u8 EventScript_SingleBattleColosseum_PlayerSpot1[];
+extern const u8 EventScript_TradeCenter_Chair1[];
+extern const u8 EventScript_TradeCenter_Chair0[];
+extern const u8 EventScript_ConfirmLeaveTradeRoom[];
+extern const u8 EventScript_TerminateLink[];
+
extern const struct MapLayout *const gMapLayouts[];
extern const struct MapHeader *const *const gMapGroups[];
-extern const s32 gMaxFlashLevel;
-extern const u16 gUnknown_82EC7C4[];
-
-// functions
-extern void HealPlayerParty(void);
-extern void move_tilemap_camera_to_upper_left_corner(void);
-extern void cur_mapheader_run_tileset_funcs_after_some_cpuset(void);
-extern void DrawWholeMapView(void);
-extern void copy_map_tileset1_tileset2_to_vram(const struct MapLayout *);
-extern void apply_map_tileset1_tileset2_palette(const struct MapLayout *);
-extern void ResetCyclingRoadChallengeData(void);
-extern void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey);
-extern void mapheader_run_script_with_tag_x5(void);
-extern void ResetFieldTasksArgs(void);
-extern void sub_80A0A2C(void);
-extern void apply_map_tileset2_palette(const struct MapLayout *);
-extern void copy_map_tileset2_to_vram_2(const struct MapLayout *);
-extern void RestartWildEncounterImmunitySteps(void);
-extern void ShowMapNamePopup(void);
-extern bool32 sub_808651C(void);
-extern bool8 sub_80AF6A4(void);
-extern bool8 sub_80E909C(void);
-extern void sub_81AA1D8(void);
-extern void c2_change_map(void);
-extern void sub_81D5DF8(void);
-extern void sub_80EB218(void);
-extern void sub_80AF3C8(void);
-extern void sub_808B578(void);
-extern void sub_80AF314(void);
-extern void sub_80AF214(void);
-extern void sub_80AF188(void);
-extern void door_upload_tiles(void);
-extern void RotatingGate_InitPuzzleAndGraphics(void);
-extern void sub_80AF168(void);
-extern void sub_80AF3C8(void);
-extern void ExecuteTruckSequence(void);
-extern void sub_80A0A38(void);
-extern void WriteFlashScanlineEffectBuffer(u8);
-extern void sub_81AA2F8(void);
-extern void InitMatchCallCounters(void);
-extern void sub_80EDB44(void);
-extern void InitFieldMessageBox(void);
-extern void copy_map_tileset1_to_vram(const struct MapLayout *);
-extern void copy_map_tileset2_to_vram(const struct MapLayout *);
-extern void FieldUpdateBgTilemapScroll(void);
-extern void TransferTilesetAnimsBuffer(void);
-extern bool8 warp0_in_pokecenter(void);
-extern void ResetAllPicSprites(void);
-extern void FieldEffectActiveListClear(void);
-extern void SetUpFieldTasks(void);
-extern void ShowStartMenu(void);
-extern void sub_80AEE84(void);
-extern void mapldr_default(void);
-extern bool32 sub_800F0B8(void);
-extern bool32 sub_8009F3C(void);
-extern void sub_8010198(void);
-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 GetFRLGAvatarGraphicsIdByGender(u8);
-extern u8 GetRSAvatarGraphicsIdByGender(u8);
-extern void UpdateEventObjectSpriteVisibility(struct Sprite*, u8);
-
-// this file's functions
+extern const int gMaxFlashLevel;
+extern const u16 gOverworldBackgroundLayerFlags[];
+
static void Overworld_ResetStateAfterWhiteOut(void);
static void c2_80567AC(void);
static void CB2_LoadMap2(void);
@@ -165,63 +121,63 @@ static bool32 load_map_stuff(u8 *state, u32);
static bool32 map_loading_iteration_2_link(u8 *state);
static void mli4_mapscripts_and_other(void);
static void InitOverworldGraphicsRegisters(void);
-static u8 sub_8087858(u8);
-static u16 sub_80871C0(u32 a1);
+static u8 GetSpriteForLinkedPlayer(u8);
+static u16 KeyInterCB_SendNothing(u32 a1);
static void sub_80867C8(void);
static void sub_80867D8(void);
static void sub_8086AE4(void);
static void sub_80869DC(void);
static void sub_8086B14(void);
-static void sub_8086AAC(void);
+static void SetCameraToTrackGuestPlayer(void);
static void sub_8086988(bool32 arg0);
static void sub_8086A80(void);
static void sub_8086A68(void);
static void sub_8086860(void);
-static void sub_8086AC8(void);
-static void sub_8086B9C(void);
-static void sub_8086C40(void);
-static void sub_8086C90(void);
-static void sub_8086FA0(u16);
-static void sub_8086F38(u16*, s32);
-static u8 npc_something3(u8 a1, u8 a2);
+static void SetCameraToTrackGuestPlayer_2(void);
+static void CreateLinkPlayerSprites(void);
+static void ClearAllPlayerKeys(void);
+static void ResetAllTradingStates(void);
+static void UpdateHeldKeyCode(u16);
+static void UpdateAllLinkPlayers(u16*, s32);
+static u8 FlipVerticalAndClearForced(u8 a1, u8 a2);
static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y);
static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion);
-static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y);
-static u8 sub_80878A0(u8 linkPlayerId);
-static u8 sub_80878C0(u8 linkPlayerId);
+static void GetLinkPlayerCoords(u8 linkPlayerId, u16 *x, u16 *y);
+static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId);
+static u8 GetLinkPlayerElevation(u8 linkPlayerId);
static s32 sub_80878E4(u8 linkPlayerId);
static u8 GetLinkPlayerIdAt(s16 x, s16 y);
-static void sub_808796C(u8 linkPlayerId, u8 a2);
+static void SetPlayerFacingDirection(u8 linkPlayerId, u8 a2);
static void ZeroEventObject(struct EventObject *eventObj);
static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4);
static void InitLinkPlayerEventObjectPos(struct EventObject *eventObj, s16 x, s16 y);
static void sub_80877DC(u8 linkPlayerId, u8 a2);
static void sub_808780C(u8 linkPlayerId);
-static u8 sub_8087858(u8 linkPlayerId);
+static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId);
static void sub_8087584(void);
-static u32 sub_8087690(void);
+static u32 GetLinkSendQueueLength(void);
static void ZeroLinkPlayerEventObject(struct LinkPlayerEventObject *linkPlayerEventObj);
-static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1);
-static u16 sub_8087480(const u8 *script);
+static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *a1);
+static u16 GetDirectionForEventScript(const u8 *script);
static void sub_8087510(void);
-static void sub_808751C(void);
+static void InitLinkRoomStartMenuScript(void);
static void sub_8087530(const u8 *script);
-static void sub_808754C(void);
-static void sub_8087568(const u8 *script);
-static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3);
-static bool32 sub_8087340(struct UnkStruct_8054FF8 *a1);
-static bool32 sub_8087358(struct UnkStruct_8054FF8 *a1);
-static u8 *sub_8087370(struct UnkStruct_8054FF8 *a1);
-static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1);
-static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1);
-static u16 sub_808711C(u32);
-static u16 sub_8087140(u32);
-static void sub_808709C(u16 *a1);
-static u16 sub_80870B0(u32 a1);
-static u16 sub_80870F8(u32 a1);
-static u16 sub_8087068(u16 a1);
-static void c1_link_related(void);
-static void c1_link_related_func_set(u16 (*func)(u32));
+static void CreateConfirmLeaveTradeRoomPrompt(void);
+static void InitMenuBasedScript(const u8 *script);
+static void LoadTradeRoomPlayer(s32 linkPlayerId, s32 a2, struct TradeRoomPlayer *a3);
+static bool32 sub_8087340(struct TradeRoomPlayer *a1);
+static bool32 sub_8087340_2(struct TradeRoomPlayer *a1);
+static u8 *TryGetTileEventScript(struct TradeRoomPlayer *a1);
+static bool32 PlayerIsAtSouthExit(struct TradeRoomPlayer *a1);
+static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *a1);
+static u16 KeyInterCB_DeferToRecvQueue(u32);
+static u16 KeyInterCB_DeferToSendQueue(u32);
+static void ResetPlayerHeldKeys(u16 *a1);
+static u16 KeyInterCB_SelfIdle(u32 a1);
+static u16 KeyInterCB_DeferToEventScript(u32 a1);
+static u16 GetDirectionForDpadKey(u16 a1);
+static void CB1_UpdateLinkState(void);
+static void SetKeyInterceptCallback(u16 (*func)(u32));
static void SetFieldVBlankCallback(void);
static void FieldClearVBlankHBlankCallbacks(void);
static void sub_8085810(void);
@@ -230,21 +186,24 @@ static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStr
static u16 GetCenterScreenMetatileBehavior(void);
// IWRAM bss vars
-IWRAM_DATA static void *sUnknown_03000E0C;
-IWRAM_DATA static u8 sUnknown_03000E10[4];
-IWRAM_DATA static u16 (*sUnknown_03000E14)(u32);
-IWRAM_DATA static u8 sUnknown_03000E18;
-IWRAM_DATA static u8 sUnknown_03000E19;
+IWRAM_DATA static void *sUnusedOverworldCallback;
+IWRAM_DATA static u8 sPlayerTradingStates[4];
+// This callback is called with a player's key code. It then returns an
+// adjusted key code, effectively intercepting the input before anything
+// can process it.
+IWRAM_DATA static u16 (*sPlayerKeyInterceptCallback)(u32);
+IWRAM_DATA static bool8 sUnknown_03000E18;
+IWRAM_DATA static u8 sRfuKeepAliveTimer;
IWRAM_DATA static u32 sUnusedVar;
// IWRAM common
u16 *gBGTilemapBuffers1;
u16 *gBGTilemapBuffers2;
u16 *gBGTilemapBuffers3;
-u16 gUnknown_03005DA8;
+u16 gHeldKeyCodeToSend;
void (*gFieldCallback)(void);
bool8 (*gFieldCallback2)(void);
-u8 gUnknown_03005DB4;
+u8 gLocalLinkPlayerId; // This is our player id in a multiplayer mode.
u8 gFieldLinkPlayerCount;
// EWRAM vars
@@ -378,43 +337,47 @@ static const struct ScanlineEffectParams sFlashEffectParams =
0,
};
-static u8 sub_80879D8(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 sub_80879F8(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 sub_80879FC(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 MovementEventModeCB_Normal(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 MovementEventModeCB_Ignored(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 MovementEventModeCB_Normal_2(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 (*const gUnknown_08339DC8[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
+static u8 (*const gLinkPlayerMovementModes[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
{
- sub_80879D8,
- sub_80879F8,
- sub_80879FC,
+ MovementEventModeCB_Normal, // MOVEMENT_MODE_FREE
+ MovementEventModeCB_Ignored, // MOVEMENT_MODE_FROZEN
+ MovementEventModeCB_Normal_2, // MOVEMENT_MODE_SCRIPTED
};
-static u8 sub_8087A1C(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 sub_8087A20(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 sub_8087A88(struct LinkPlayerEventObject *, struct EventObject *, u8);
-
-static u8 (*const gUnknown_08339DD4[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
-{
- sub_8087A1C,
- sub_8087A20,
- sub_8087A20,
- sub_8087A20,
- sub_8087A20,
- sub_8087A1C,
- sub_8087A1C,
- sub_8087A88,
- sub_8087A88,
- sub_8087A88,
- sub_8087A88,
+static u8 FacingHandler_DoNothing(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 FacingHandler_DpadMovement(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 FacingHandler_ForcedFacingChange(struct LinkPlayerEventObject *, struct EventObject *, u8);
+
+// These handlers return TRUE if the movement was scripted and successful, and FALSE otherwise.
+static bool8 (*const gLinkPlayerFacingHandlers[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
+{
+ FacingHandler_DoNothing,
+ FacingHandler_DpadMovement,
+ FacingHandler_DpadMovement,
+ FacingHandler_DpadMovement,
+ FacingHandler_DpadMovement,
+ FacingHandler_DoNothing,
+ FacingHandler_DoNothing,
+ FacingHandler_ForcedFacingChange,
+ FacingHandler_ForcedFacingChange,
+ FacingHandler_ForcedFacingChange,
+ FacingHandler_ForcedFacingChange,
};
-static void sub_8087AA0(struct LinkPlayerEventObject *, struct EventObject *);
-static void sub_8087AA8(struct LinkPlayerEventObject *, struct EventObject *);
+static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerEventObject *, struct EventObject *);
+static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerEventObject *, struct EventObject *);
-static void (*const gUnknown_08339E00[])(struct LinkPlayerEventObject *, struct EventObject *) =
+// These handlers are run after an attempted movement.
+static void (*const gMovementStatusHandler[])(struct LinkPlayerEventObject *, struct EventObject *) =
{
- sub_8087AA0,
- sub_8087AA8,
+ // FALSE:
+ MovementStatusHandler_EnterFreeMode,
+ // TRUE:
+ MovementStatusHandler_TryAdvanceScript,
};
// code
@@ -446,7 +409,7 @@ void Overworld_ResetStateAfterTeleport(void)
FlagClear(FLAG_SYS_SAFARI_MODE);
FlagClear(FLAG_SYS_USE_STRENGTH);
FlagClear(FLAG_SYS_USE_FLASH);
- ScriptContext2_RunNewScript(EventScript_271862);
+ ScriptContext2_RunNewScript(EventScript_ResetMrBriney);
}
void Overworld_ResetStateAfterDigEscRope(void)
@@ -467,10 +430,12 @@ static void Overworld_ResetStateAfterWhiteOut(void)
FlagClear(FLAG_SYS_SAFARI_MODE);
FlagClear(FLAG_SYS_USE_STRENGTH);
FlagClear(FLAG_SYS_USE_FLASH);
- if (VarGet(VAR_0x4039) == 1)
+ // If you were defeated by Kyogre/Groudon and the step counter has
+ // maxed out, end the unusual weather.
+ if (VarGet(VAR_SHOULD_END_UNUSUAL_WEATHER) == 1)
{
- VarSet(VAR_0x4039, 0);
- VarSet(VAR_0x4037, 0);
+ VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 0);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, UNUSUAL_WEATHER_NONE);
}
}
@@ -587,7 +552,7 @@ static void mapdata_load_assets_to_gpu_and_full_redraw(void)
copy_map_tileset1_tileset2_to_vram(gMapHeader.mapLayout);
apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
DrawWholeMapView();
- cur_mapheader_run_tileset_funcs_after_some_cpuset();
+ InitTilesetAnimations();
}
const struct MapLayout *GetMapLayout(void)
@@ -735,7 +700,7 @@ void UpdateEscapeWarp(s16 x, s16 y)
{
u8 currMapType = GetCurrentMapType();
u8 destMapType = GetMapTypeByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum);
- if (is_map_type_1_2_3_5_or_6(currMapType) && is_map_type_1_2_3_5_or_6(destMapType) != TRUE)
+ if (IsMapTypeOutdoors(currMapType) && IsMapTypeOutdoors(destMapType) != TRUE)
SetEscapeWarp(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x - 7, y - 6);
}
@@ -820,7 +785,7 @@ static bool8 SetDiveWarp(u8 dir, u16 x, u16 y)
}
else
{
- mapheader_run_script_with_tag_x6();
+ RunOnDiveWarpMapScript();
if (IsDummyWarp(&gFixedDiveWarp))
return FALSE;
SetWarpDestinationToDiveWarp();
@@ -838,7 +803,7 @@ bool8 SetDiveWarpDive(u16 x, u16 y)
return SetDiveWarp(CONNECTION_DIVE, x, y);
}
-void mliX_load_map(u8 mapGroup, u8 mapNum)
+void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum)
{
s32 paletteIndex;
@@ -859,7 +824,7 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
ChooseAmbientCrySpecies();
SetDefaultFlashLevel();
Overworld_ClearSavedMusic();
- mapheader_run_script_with_tag_x3();
+ RunOnTransitionMapScript();
InitMap();
copy_map_tileset2_to_vram_2(gMapHeader.mapLayout);
apply_map_tileset2_palette(gMapHeader.mapLayout);
@@ -867,12 +832,12 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
for (paletteIndex = 6; paletteIndex < 13; paletteIndex++)
ApplyWeatherGammaShiftToPal(paletteIndex);
- sub_80A0A2C();
+ InitSecondaryTilesetAnimation();
UpdateLocationHistoryForRoamer();
RoamerMove();
DoCurrentWeather();
ResetFieldTasksArgs();
- mapheader_run_script_with_tag_x5();
+ RunOnResumeMapScript();
if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER || gMapHeader.regionMapSectionId != sLastMapSectionId)
ShowMapNamePopup();
@@ -880,22 +845,22 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
static void mli0_load_map(u32 a1)
{
- bool8 v2;
- bool8 indoors;
+ bool8 isOutdoors;
+ bool8 isIndoors;
LoadCurrentMapData();
if (!(sUnknown_020322D8 & 1))
{
- if (gMapHeader.mapLayoutId == 0x169)
- sub_81AA1D8();
+ if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
+ LoadBattlePyramidEventObjectTemplates();
else if (InTrainerHill())
sub_81D5DF8();
else
LoadEventObjTemplatesFromHeader();
}
- v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType);
- indoors = Overworld_MapTypeIsIndoors(gMapHeader.mapType);
+ isOutdoors = IsMapTypeOutdoors(gMapHeader.mapType);
+ isIndoors = IsMapTypeIndoors(gMapHeader.mapType);
sub_80EB218();
TrySetMapSaveWarpStatus();
@@ -907,21 +872,21 @@ static void mli0_load_map(u32 a1)
DoTimeBasedEvents();
SetSav1WeatherFromCurrMapHeader();
ChooseAmbientCrySpecies();
- if (v2)
+ if (isOutdoors)
FlagClear(FLAG_SYS_USE_FLASH);
SetDefaultFlashLevel();
Overworld_ClearSavedMusic();
- mapheader_run_script_with_tag_x3();
+ RunOnTransitionMapScript();
UpdateLocationHistoryForRoamer();
RoamerMoveToOtherLocationSet();
- if (gMapHeader.mapLayoutId == 0x169)
- InitBattlePyramidMap(0);
+ if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
+ InitBattlePyramidMap(FALSE);
else if (InTrainerHill())
InitTrainerHillMap();
else
InitMap();
- if (a1 != 1 && indoors)
+ if (a1 != 1 && isIndoors)
{
UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height);
sub_80E9238(1);
@@ -982,7 +947,7 @@ static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *pla
static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 transitionFlags, u16 metatileBehavior, u8 mapType)
{
- if (FlagGet(FLAG_SYS_CRUISE_MODE) && mapType == MAP_TYPE_6)
+ if (FlagGet(FLAG_SYS_CRUISE_MODE) && mapType == MAP_TYPE_OCEAN_ROUTE)
return DIR_EAST;
else if (MetatileBehavior_IsDeepSouthWarp(metatileBehavior) == TRUE)
return DIR_NORTH;
@@ -1075,7 +1040,7 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
case MAP_NUM(ROUTE128):
return TRUE;
default:
- if (VarGet(VAR_0x405E) < 4)
+ if (VarGet(VAR_RAYQUAZA_STATE) < 4)
return FALSE;
switch (warp->mapNum)
{
@@ -1091,7 +1056,7 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
static bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp)
{
- if (VarGet(VAR_0x40CA) != 1)
+ if (VarGet(VAR_SKY_PILLAR_STATE) != 1)
return FALSE;
else if (warp->mapGroup != MAP_GROUP(SOOTOPOLIS_CITY))
return FALSE;
@@ -1116,9 +1081,9 @@ static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp)
static bool16 IsInflitratedSpaceCenter(struct WarpData *warp)
{
- if (VarGet(VAR_0x405D) == 0)
+ if (VarGet(VAR_MOSSDEEP_STATE) == 0)
return FALSE;
- else if (VarGet(VAR_0x405D) > 2)
+ else if (VarGet(VAR_MOSSDEEP_STATE) > 2)
return FALSE;
else if (warp->mapGroup != MAP_GROUP(MOSSDEEP_CITY_SPACE_CENTER_1F))
return FALSE;
@@ -1256,7 +1221,7 @@ void Overworld_ChangeMusicTo(u16 newMusic)
u8 GetMapMusicFadeoutSpeed(void)
{
const struct MapHeader *mapHeader = GetDestinationWarpMapHeader();
- if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE)
+ if (IsMapTypeIndoors(mapHeader->mapType) == TRUE)
return 2;
else
return 4;
@@ -1269,7 +1234,7 @@ void TryFadeOutOldMapMusic(void)
if (FlagGet(FLAG_SPECIAL_FLAG_0x4001) != TRUE && warpMusic != GetCurrentMapMusic())
{
if (currentMusic == MUS_NAMINORI
- && VarGet(VAR_0x40CA) == 2
+ && VarGet(VAR_SKY_PILLAR_STATE) == 2
&& gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(SOOTOPOLIS_CITY)
&& sWarpDestination.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY)
@@ -1387,13 +1352,13 @@ u8 GetLastUsedWarpMapType(void)
return GetMapTypeByWarpData(&gLastUsedWarp);
}
-bool8 is_map_type_1_2_3_5_or_6(u8 mapType)
+bool8 IsMapTypeOutdoors(u8 mapType)
{
if (mapType == MAP_TYPE_ROUTE
|| mapType == MAP_TYPE_TOWN
|| mapType == MAP_TYPE_UNDERWATER
|| mapType == MAP_TYPE_CITY
- || mapType == MAP_TYPE_6)
+ || mapType == MAP_TYPE_OCEAN_ROUTE)
return TRUE;
else
return FALSE;
@@ -1403,14 +1368,14 @@ bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType)
{
if (mapType == MAP_TYPE_ROUTE
|| mapType == MAP_TYPE_TOWN
- || mapType == MAP_TYPE_6
+ || mapType == MAP_TYPE_OCEAN_ROUTE
|| mapType == MAP_TYPE_CITY)
return TRUE;
else
return FALSE;
}
-bool8 Overworld_MapTypeIsIndoors(u8 mapType)
+bool8 IsMapTypeIndoors(u8 mapType)
{
if (mapType == MAP_TYPE_INDOOR
|| mapType == MAP_TYPE_SECRET_BASE)
@@ -1466,9 +1431,9 @@ static void ResetSafariZoneFlag_(void)
ResetSafariZoneFlag();
}
-bool32 is_c1_link_related_active(void)
+bool32 IsUpdateLinkStateCBActive(void)
{
- if (gMain.callback1 == c1_link_related)
+ if (gMain.callback1 == CB1_UpdateLinkState)
return TRUE;
else
return FALSE;
@@ -1510,7 +1475,7 @@ static void OverworldBasic(void)
UpdateCameraPanning();
BuildOamBuffer();
UpdatePaletteFade();
- sub_80A0A38();
+ UpdateTilesetAnimations();
do_scheduled_bg_tilemap_copies_to_vram();
}
@@ -1535,9 +1500,10 @@ void SetMainCallback1(MainCallback cb)
gMain.callback1 = cb;
}
-void sub_8085E94(void *a0)
+// This function is never called.
+void SetUnusedCallback(void *func)
{
- sUnknown_03000E0C = a0;
+ sUnusedOverworldCallback = func;
}
static bool8 map_post_load_hook_exec(void)
@@ -1654,15 +1620,15 @@ static void c2_80567AC(void)
if (map_loading_iteration_3(&gMain.state))
{
SetFieldVBlankCallback();
- SetMainCallback1(c1_link_related);
- sub_8086C2C();
+ SetMainCallback1(CB1_UpdateLinkState);
+ ResetAllMultiplayerState();
SetMainCallback2(CB2_Overworld);
}
}
void CB2_ReturnToField(void)
{
- if (is_c1_link_related_active() == TRUE)
+ if (IsUpdateLinkStateCBActive() == TRUE)
{
SetMainCallback2(CB2_ReturnToFieldLink);
}
@@ -1688,12 +1654,12 @@ void CB2_ReturnToFieldLink(void)
SetMainCallback2(CB2_Overworld);
}
-void c2_8056854(void)
+void CB2_ReturnToFieldFromMultiplayer(void)
{
FieldClearVBlankHBlankCallbacks();
StopMapMusic();
- SetMainCallback1(c1_link_related);
- sub_8086C2C();
+ SetMainCallback1(CB1_UpdateLinkState);
+ ResetAllMultiplayerState();
if (gWirelessCommType != 0)
gFieldCallback = sub_80AF314;
@@ -1722,7 +1688,7 @@ void CB2_ReturnToFieldContinueScript(void)
void CB2_ReturnToFieldContinueScriptPlayMapMusic(void)
{
FieldClearVBlankHBlankCallbacks();
- gFieldCallback = sub_80AF168;
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
CB2_ReturnToField();
}
@@ -1753,8 +1719,8 @@ void CB2_ContinueSavedGame(void)
LoadSaveblockMapHeader();
ClearDiveAndHoleWarps();
trainerHillMapId = GetCurrentTrainerHillMapId();
- if (gMapHeader.mapLayoutId == 0x169)
- sub_81AA2F8();
+ if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
+ LoadBattlePyramidFloorEventObjectScripts();
else if (trainerHillMapId != 0 && trainerHillMapId != 6)
sub_81D5F48();
else
@@ -1763,8 +1729,8 @@ void CB2_ContinueSavedGame(void)
UnfreezeEventObjects();
DoTimeBasedEvents();
sub_8084788();
- if (gMapHeader.mapLayoutId == 0x169)
- InitBattlePyramidMap(1);
+ if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
+ InitBattlePyramidMap(TRUE);
else if (trainerHillMapId != 0)
InitTrainerHillMap();
else
@@ -1835,7 +1801,7 @@ static void InitCurrentFlashLevelScanlineEffect(void)
if (InBattlePyramid_())
{
- door_upload_tiles();
+ WriteBattlePyramidViewScanlineEffectBuffer();
ScanlineEffect_SetParams(sFlashEffectParams);
}
else if ((flashLevel = Overworld_GetFlashLevel()))
@@ -1869,7 +1835,7 @@ static bool32 map_loading_iteration_3(u8 *state)
sub_8086AE4();
sub_80869DC();
sub_8086B14();
- sub_8086AAC();
+ SetCameraToTrackGuestPlayer();
(*state)++;
break;
case 4:
@@ -1902,7 +1868,7 @@ static bool32 map_loading_iteration_3(u8 *state)
(*state)++;
break;
case 10:
- cur_mapheader_run_tileset_funcs_after_some_cpuset();
+ InitTilesetAnimations();
(*state)++;
break;
case 11:
@@ -1977,7 +1943,7 @@ static bool32 load_map_stuff(u8 *state, u32 a2)
(*state)++;
break;
case 10:
- cur_mapheader_run_tileset_funcs_after_some_cpuset();
+ InitTilesetAnimations();
(*state)++;
break;
case 11:
@@ -2039,9 +2005,9 @@ static bool32 map_loading_iteration_2_link(u8 *state)
(*state)++;
break;
case 2:
- sub_8086B9C();
+ CreateLinkPlayerSprites();
sub_8086A68();
- sub_8086AC8();
+ SetCameraToTrackGuestPlayer_2();
(*state)++;
break;
case 3:
@@ -2074,7 +2040,7 @@ static bool32 map_loading_iteration_2_link(u8 *state)
(*state)++;
break;
case 9:
- cur_mapheader_run_tileset_funcs_after_some_cpuset();
+ InitTilesetAnimations();
(*state)++;
break;
case 11:
@@ -2142,7 +2108,7 @@ static void InitOverworldGraphicsRegisters(void)
SetGpuReg(REG_OFFSET_WIN0V, 0xFF);
SetGpuReg(REG_OFFSET_WIN1H, 0xFFFF);
SetGpuReg(REG_OFFSET_WIN1V, 0xFFFF);
- SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_82EC7C4[1] | gUnknown_82EC7C4[2] | gUnknown_82EC7C4[3]
+ SetGpuReg(REG_OFFSET_BLDCNT, gOverworldBackgroundLayerFlags[1] | gOverworldBackgroundLayerFlags[2] | gOverworldBackgroundLayerFlags[3]
| BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(13, 7));
InitOverworldBgs();
@@ -2182,10 +2148,10 @@ static void sub_8086988(u32 a1)
FieldEffectActiveListClear();
StartWeather();
- sub_80AEE84();
+ ResumePausedWeather();
if (!a1)
SetUpFieldTasks();
- mapheader_run_script_with_tag_x5();
+ RunOnResumeMapScript();
TryStartMirageTowerPulseBlendEffect();
}
@@ -2195,7 +2161,7 @@ static void sub_80869DC(void)
gTotalCameraPixelOffsetY = 0;
ResetEventObjects();
TrySpawnEventObjects(0, 0);
- mapheader_run_first_tag4_script_list_match();
+ TryRunOnWarpIntoMapScript();
}
static void mli4_mapscripts_and_other(void)
@@ -2212,14 +2178,14 @@ static void mli4_mapscripts_and_other(void)
SetPlayerAvatarTransitionFlags(player->transitionFlags);
ResetInitialPlayerAvatarState();
TrySpawnEventObjects(0, 0);
- mapheader_run_first_tag4_script_list_match();
+ TryRunOnWarpIntoMapScript();
}
static void sub_8086A68(void)
{
sub_808E16C(0, 0);
RotatingGate_InitPuzzleAndGraphics();
- mapheader_run_script_with_tag_x7();
+ RunOnReturnToFieldMapScript();
}
static void sub_8086A80(void)
@@ -2228,21 +2194,25 @@ static void sub_8086A80(void)
InitCameraUpdateCallback(gPlayerAvatar.spriteId);
}
-static void sub_8086AAC(void)
+static void SetCameraToTrackGuestPlayer(void)
{
- InitCameraUpdateCallback(sub_8087858(gUnknown_03005DB4));
+ InitCameraUpdateCallback(GetSpriteForLinkedPlayer(gLocalLinkPlayerId));
}
-static void sub_8086AC8(void)
+// Duplicate function.
+static void SetCameraToTrackGuestPlayer_2(void)
{
- InitCameraUpdateCallback(sub_8087858(gUnknown_03005DB4));
+ InitCameraUpdateCallback(GetSpriteForLinkedPlayer(gLocalLinkPlayerId));
}
static void sub_8086AE4(void)
{
u16 x, y;
GetCameraFocusCoords(&x, &y);
- sub_8088B3C(x + gUnknown_03005DB4, y);
+
+ // This is a hack of some kind; it's undone in sub_8086B14, which is called
+ // soon after this function.
+ sub_8088B3C(x + gLocalLinkPlayerId, y);
}
static void sub_8086B14(void)
@@ -2251,7 +2221,7 @@ static void sub_8086B14(void)
u16 x, y;
GetCameraFocusCoords(&x, &y);
- x -= gUnknown_03005DB4;
+ x -= gLocalLinkPlayerId;
for (i = 0; i < gFieldLinkPlayerCount; i++)
{
@@ -2259,161 +2229,180 @@ static void sub_8086B14(void)
CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
}
- sub_8086C40();
+ ClearAllPlayerKeys();
}
-static void sub_8086B9C(void)
+static void CreateLinkPlayerSprites(void)
{
u16 i;
for (i = 0; i < gFieldLinkPlayerCount; i++)
CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
}
-static void c1_link_related(void)
+
+static void CB1_UpdateLinkState(void)
{
- if (gWirelessCommType == 0 || !sub_800F0B8() || !sub_8009F3C())
+ if (gWirelessCommType == 0 || !IsRfuRecvQueueEmpty() || !IsSendingKeysToLink())
{
- u8 var = gUnknown_03005DB4;
- sub_8086F38(gLinkPartnersHeldKeys, var);
- sub_8086FA0(sUnknown_03000E14(var));
- sub_8086C40();
+ u8 selfId = gLocalLinkPlayerId;
+ UpdateAllLinkPlayers(gLinkPartnersHeldKeys, selfId);
+
+ // Note: Because guestId is between 0 and 4, while the smallest key code is
+ // LINK_KEY_CODE_EMPTY, this is functionally equivalent to `sPlayerKeyInterceptCallback(0)`.
+ // It is expecting the callback to be KeyInterCB_SelfIdle, and that will
+ // completely ignore any input parameters.
+ //
+ // UpdateHeldKeyCode performs a sanity check on its input; if
+ // sPlayerKeyInterceptCallback echoes back the argument, which is selfId, then
+ // it'll use LINK_KEY_CODE_EMPTY instead.
+ //
+ // Note 2: There are some key intercept callbacks that treat the key as a player
+ // ID. It's so hacky.
+ UpdateHeldKeyCode(sPlayerKeyInterceptCallback(selfId));
+ ClearAllPlayerKeys();
}
}
-void sub_8086C2C(void)
+void ResetAllMultiplayerState(void)
{
- sub_8086C90();
- c1_link_related_func_set(sub_80870B0);
+ ResetAllTradingStates();
+ SetKeyInterceptCallback(KeyInterCB_SelfIdle);
}
-static void sub_8086C40(void)
+static void ClearAllPlayerKeys(void)
{
- sub_808709C(gLinkPartnersHeldKeys);
+ ResetPlayerHeldKeys(gLinkPartnersHeldKeys);
}
-static void c1_link_related_func_set(u16 (*func)(u32))
+static void SetKeyInterceptCallback(u16 (*func)(u32))
{
- sUnknown_03000E19 = 0;
- sUnknown_03000E14 = func;
+ sRfuKeepAliveTimer = 0;
+ sPlayerKeyInterceptCallback = func;
}
-static void sub_8086C64(void)
+// Once every ~60 frames, if the link state hasn't changed (timer reset by calls
+// to SetKeyInterceptCallback), it does a bunch of sanity checks on the connection.
+// I'm not sure if sRfuKeepAliveTimer is reset in the process, though; rfu stuff is
+// still undocumented.
+static void CheckRfuKeepAliveTimer(void)
{
- if (gWirelessCommType != 0 && ++sUnknown_03000E19 > 60)
+ if (gWirelessCommType != 0 && ++sRfuKeepAliveTimer > 60)
sub_8010198();
}
-static void sub_8086C90(void)
+static void ResetAllTradingStates(void)
{
s32 i;
for (i = 0; i < 4; i++)
- sUnknown_03000E10[i] = 0x80;
+ sPlayerTradingStates[i] = PLAYER_TRADING_STATE_IDLE;
}
-static bool32 sub_8086CA8(u16 a1)
+// Returns true if all connected players are in tradingState.
+static bool32 AreAllPlayersInTradingState(u16 tradingState)
{
s32 i;
s32 count = gFieldLinkPlayerCount;
for (i = 0; i < count; i++)
- if (sUnknown_03000E10[i] != a1)
+ if (sPlayerTradingStates[i] != tradingState)
return FALSE;
return TRUE;
}
-static bool32 sub_8086CE0(u16 a1)
+static bool32 IsAnyPlayerInTradingState(u16 tradingState)
{
s32 i;
s32 count = gFieldLinkPlayerCount;
for (i = 0; i < count; i++)
- if (sUnknown_03000E10[i] == a1)
+ if (sPlayerTradingStates[i] == tradingState)
return TRUE;
return FALSE;
}
-static void sub_8086D18(u32 a1, u16 a2, struct UnkStruct_8054FF8 *a3, u16 *a4)
+static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct TradeRoomPlayer *trainer, u16 *forceFacing)
{
const u8 *script;
- if (sUnknown_03000E10[a1] == 0x80)
+ if (sPlayerTradingStates[playerId] == PLAYER_TRADING_STATE_IDLE)
{
- script = sub_8087370(a3);
+ script = TryGetTileEventScript(trainer);
if (script)
{
- *a4 = sub_8087480(script);
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ *forceFacing = GetDirectionForEventScript(script);
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
sub_8087530(script);
}
return;
}
- if (sub_8086CE0(0x83) == 1)
+ if (IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE)
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
sub_8087584();
}
return;
}
- switch (a2)
+
+ switch (key)
{
- case 24:
- if (sub_8087358(a3))
+ case LINK_KEY_CODE_START_BUTTON:
+ if (sub_8087340_2(trainer))
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
- sub_808751C();
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
+ InitLinkRoomStartMenuScript();
}
}
break;
- case 18:
- if (sub_8087388(a3) == TRUE)
+ case LINK_KEY_CODE_DPAD_DOWN:
+ if (PlayerIsAtSouthExit(trainer) == TRUE)
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
- sub_808754C();
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
+ CreateConfirmLeaveTradeRoomPrompt();
}
}
break;
- case 25:
- script = sub_80873B4(a3);
+ case LINK_KEY_CODE_A_BUTTON:
+ script = TryInteractWithPlayer(trainer);
if (script)
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
- sub_8087568(script);
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
+ InitMenuBasedScript(script);
}
}
break;
- case 27:
- if (sub_8087340(a3))
+ case LINK_KEY_CODE_HANDLE_RECV_QUEUE:
+ if (sub_8087340(trainer))
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_808711C);
+ SetKeyInterceptCallback(KeyInterCB_DeferToRecvQueue);
sub_8087510();
}
}
break;
- case 28:
- if (sub_8087340(a3))
+ case LINK_KEY_CODE_HANDLE_SEND_QUEUE:
+ if (sub_8087340(trainer))
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_8087140);
+ SetKeyInterceptCallback(KeyInterCB_DeferToSendQueue);
sub_8087510();
}
}
@@ -2421,388 +2410,403 @@ static void sub_8086D18(u32 a1, u16 a2, struct UnkStruct_8054FF8 *a3, u16 *a4)
}
}
- switch (a2)
+ switch (key)
{
- case 23:
- sUnknown_03000E10[a1] = 0x83;
+ case LINK_KEY_CODE_EXIT_ROOM:
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_EXITING_ROOM;
break;
- case 22:
- sUnknown_03000E10[a1] = 0x82;
+ case LINK_KEY_CODE_UNK_2:
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_UNK_2;
break;
- case 26:
- sUnknown_03000E10[a1] = 0x80;
- if (a3->b)
- c1_link_related_func_set(sub_80870B0);
+ case LINK_KEY_CODE_UNK_4:
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_IDLE;
+ if (trainer->isLocalPlayer)
+ SetKeyInterceptCallback(KeyInterCB_SelfIdle);
break;
- case 29:
- if (sUnknown_03000E10[a1] == 0x82)
- sUnknown_03000E10[a1] = 0x81;
+ case LINK_KEY_CODE_UNK_7:
+ if (sPlayerTradingStates[playerId] == PLAYER_TRADING_STATE_UNK_2)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
break;
}
}
-static void sub_8086F38(u16 *a1, s32 a2)
+static void UpdateAllLinkPlayers(u16 *keys, s32 selfId)
{
- struct UnkStruct_8054FF8 st;
+ struct TradeRoomPlayer trainer;
s32 i;
for (i = 0; i < 4; i++)
{
- u8 v5 = a1[i];
- u16 v8 = 0;
- sub_80872D8(i, a2, &st);
- sub_8086D18(i, v5, &st, &v8);
- if (sUnknown_03000E10[i] == 0x80)
- v8 = sub_8087068(v5);
- sub_808796C(i, v8);
+ u8 key = keys[i];
+ u16 setFacing = FACING_NONE;
+ LoadTradeRoomPlayer(i, selfId, &trainer);
+ HandleLinkPlayerKeyInput(i, key, &trainer, &setFacing);
+ if (sPlayerTradingStates[i] == PLAYER_TRADING_STATE_IDLE)
+ setFacing = GetDirectionForDpadKey(key);
+ SetPlayerFacingDirection(i, setFacing);
}
}
-static void sub_8086FA0(u16 a1)
+static void UpdateHeldKeyCode(u16 key)
{
- if (a1 >= 17 && a1 < 30)
- gUnknown_03005DA8 = a1;
+ if (key >= LINK_KEY_CODE_EMPTY && key < LINK_KEY_CODE_UNK_8)
+ gHeldKeyCodeToSend = key;
else
- gUnknown_03005DA8 = 17;
+ gHeldKeyCodeToSend = LINK_KEY_CODE_EMPTY;
if (gWirelessCommType != 0
- && sub_8087690() > 1
- && is_c1_link_related_active() == TRUE
- && sub_8009F3C() == TRUE)
+ && GetLinkSendQueueLength() > 1
+ && IsUpdateLinkStateCBActive() == TRUE
+ && IsSendingKeysToLink() == TRUE)
{
- switch (a1)
+ switch (key)
{
- case 17:
- case 18:
- case 19:
- case 20:
- case 21:
- case 24:
- case 25:
- gUnknown_03005DA8 = 0;
+ case LINK_KEY_CODE_EMPTY:
+ case LINK_KEY_CODE_DPAD_DOWN:
+ case LINK_KEY_CODE_DPAD_UP:
+ case LINK_KEY_CODE_DPAD_LEFT:
+ case LINK_KEY_CODE_DPAD_RIGHT:
+ case LINK_KEY_CODE_START_BUTTON:
+ case LINK_KEY_CODE_A_BUTTON:
+ gHeldKeyCodeToSend = LINK_KEY_CODE_NULL;
break;
}
}
}
-static u16 sub_808700C(u32 a1)
+static u16 KeyInterCB_ReadButtons(u32 key)
{
if (gMain.heldKeys & DPAD_UP)
- return 19;
+ return LINK_KEY_CODE_DPAD_UP;
else if (gMain.heldKeys & DPAD_DOWN)
- return 18;
+ return LINK_KEY_CODE_DPAD_DOWN;
else if (gMain.heldKeys & DPAD_LEFT)
- return 20;
+ return LINK_KEY_CODE_DPAD_LEFT;
else if (gMain.heldKeys & DPAD_RIGHT)
- return 21;
+ return LINK_KEY_CODE_DPAD_RIGHT;
else if (gMain.newKeys & START_BUTTON)
- return 24;
+ return LINK_KEY_CODE_START_BUTTON;
else if (gMain.newKeys & A_BUTTON)
- return 25;
+ return LINK_KEY_CODE_A_BUTTON;
else
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_8087068(u16 a1)
+static u16 GetDirectionForDpadKey(u16 a1)
{
switch (a1)
{
- case 21:
- return 4;
- case 20:
- return 3;
- case 19:
- return 1;
- case 18:
- return 2;
+ case LINK_KEY_CODE_DPAD_RIGHT:
+ return FACING_RIGHT;
+ case LINK_KEY_CODE_DPAD_LEFT:
+ return FACING_LEFT;
+ case LINK_KEY_CODE_DPAD_UP:
+ return FACING_UP;
+ case LINK_KEY_CODE_DPAD_DOWN:
+ return FACING_DOWN;
default:
- return 0;
+ return FACING_NONE;
}
}
-static void sub_808709C(u16 *a1)
+// Overwrites the keys with 0x11
+static void ResetPlayerHeldKeys(u16 *keys)
{
s32 i;
for (i = 0; i < 4; i++)
- a1[i] = 17;
+ keys[i] = LINK_KEY_CODE_EMPTY;
}
-static u16 sub_80870B0(u32 a1)
+
+static u16 KeyInterCB_SelfIdle(u32 key)
{
- if (ScriptContext2_IsEnabled() == 1)
- return 17;
- if (sub_800B4DC() > 4)
- return 27;
- if (sub_8087690() <= 4)
- return sub_808700C(a1);
- return 28;
+ if (ScriptContext2_IsEnabled() == TRUE)
+ return LINK_KEY_CODE_EMPTY;
+ if (GetLinkRecvQueueLength() > 4)
+ return LINK_KEY_CODE_HANDLE_RECV_QUEUE;
+ if (GetLinkSendQueueLength() <= 4)
+ return KeyInterCB_ReadButtons(key);
+ return LINK_KEY_CODE_HANDLE_SEND_QUEUE;
}
-static u16 sub_80870EC(u32 a1)
+static u16 sub_80870EC(u32 key)
{
- sub_8086C64();
- return 17;
+ CheckRfuKeepAliveTimer();
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_80870F8(u32 a1)
+// Ignore the player's inputs as long as there is an event script
+// in ScriptContext2.
+static u16 KeyInterCB_DeferToEventScript(u32 key)
{
u16 retVal;
if (ScriptContext2_IsEnabled() == TRUE)
{
- retVal = 17;
+ retVal = LINK_KEY_CODE_EMPTY;
}
else
{
- retVal = 26;
- c1_link_related_func_set(sub_80870EC);
+ retVal = LINK_KEY_CODE_UNK_4;
+ SetKeyInterceptCallback(sub_80870EC);
}
return retVal;
}
-static u16 sub_808711C(u32 a1)
+// Ignore the player's inputs as long as there are events being recived.
+static u16 KeyInterCB_DeferToRecvQueue(u32 key)
{
u16 retVal;
- if (sub_800B4DC() > 2)
+ if (GetLinkRecvQueueLength() > 2)
{
- retVal = 17;
+ retVal = LINK_KEY_CODE_EMPTY;
}
else
{
- retVal = 26;
+ retVal = LINK_KEY_CODE_UNK_4;
ScriptContext2_Disable();
- c1_link_related_func_set(sub_80870EC);
+ SetKeyInterceptCallback(sub_80870EC);
}
return retVal;
}
-static u16 sub_8087140(u32 a1)
+// Ignore the player's inputs as long as there are events being sent.
+static u16 KeyInterCB_DeferToSendQueue(u32 key)
{
u16 retVal;
- if (sub_8087690() > 2)
+ if (GetLinkSendQueueLength() > 2)
{
- retVal = 17;
+ retVal = LINK_KEY_CODE_EMPTY;
}
else
{
- retVal = 26;
+ retVal = LINK_KEY_CODE_UNK_4;
ScriptContext2_Disable();
- c1_link_related_func_set(sub_80870EC);
+ SetKeyInterceptCallback(sub_80870EC);
}
return retVal;
}
-static u16 sub_8087164(u32 a1)
+static u16 KeyInterCB_DoNothingAndKeepAlive(u32 key)
{
- sub_8086C64();
- return 17;
+ CheckRfuKeepAliveTimer();
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_8087170(u32 linkPlayerId)
+static u16 sub_8087170(u32 keyOrPlayerId)
{
- if (sUnknown_03000E10[linkPlayerId] == 0x82)
+ if (sPlayerTradingStates[keyOrPlayerId] == PLAYER_TRADING_STATE_UNK_2)
{
if (gMain.newKeys & B_BUTTON)
{
- c1_link_related_func_set(sub_8087164);
- return 29;
+ SetKeyInterceptCallback(KeyInterCB_DoNothingAndKeepAlive);
+ return LINK_KEY_CODE_UNK_7;
}
else
{
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
}
else
{
- sub_8086C64();
- return 17;
+ CheckRfuKeepAliveTimer();
+ return LINK_KEY_CODE_EMPTY;
}
}
static u16 sub_80871AC(u32 a1)
{
- c1_link_related_func_set(sub_8087170);
- return 22;
+ SetKeyInterceptCallback(sub_8087170);
+ return LINK_KEY_CODE_UNK_2;
}
-static u16 sub_80871C0(u32 a1)
+static u16 KeyInterCB_SendNothing(u32 key)
{
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_80871C4(u32 a1)
+static u16 KeyInterCB_WaitForPlayersToExit(u32 keyOrPlayerId)
{
- if (sUnknown_03000E10[a1] != 0x83)
- sub_8086C64();
- if (sub_8086CA8(0x83) == TRUE)
+ // keyOrPlayerId could be any keycode. This callback does no sanity checking
+ // on the size of the key. It's assuming that it is being called from
+ // CB1_UpdateLinkState.
+ if (sPlayerTradingStates[keyOrPlayerId] != PLAYER_TRADING_STATE_EXITING_ROOM)
+ CheckRfuKeepAliveTimer();
+ if (AreAllPlayersInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE)
{
- ScriptContext1_SetupScript(EventScript_277513);
- c1_link_related_func_set(sub_80871C0);
+ ScriptContext1_SetupScript(EventScript_DoLinkRoomExit);
+ SetKeyInterceptCallback(KeyInterCB_SendNothing);
}
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_80871FC(u32 a1)
+static u16 KeyInterCB_SendExitRoomKey(u32 key)
{
- c1_link_related_func_set(sub_80871C4);
- return 23;
+ SetKeyInterceptCallback(KeyInterCB_WaitForPlayersToExit);
+ return LINK_KEY_CODE_EXIT_ROOM;
}
-static u16 sub_8087210(u32 a1)
+// Duplicate function.
+static u16 KeyInterCB_SendNothing_2(u32 key)
{
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
u32 sub_8087214(void)
{
- if (sub_8086CE0(0x83) == TRUE)
+ if (IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE)
return 2;
- if (sUnknown_03000E14 == sub_8087170 && sUnknown_03000E10[gUnknown_03005DB4] != 0x82)
+ if (sPlayerKeyInterceptCallback == sub_8087170 && sPlayerTradingStates[gLocalLinkPlayerId] != PLAYER_TRADING_STATE_UNK_2)
return 0;
- if (sUnknown_03000E14 == sub_8087164 && sUnknown_03000E10[gUnknown_03005DB4] == 0x81)
+ if (sPlayerKeyInterceptCallback == KeyInterCB_DoNothingAndKeepAlive && sPlayerTradingStates[gLocalLinkPlayerId] == PLAYER_TRADING_STATE_BUSY)
return 2;
- if (sub_8086CA8(0x82) != 0)
+ if (AreAllPlayersInTradingState(PLAYER_TRADING_STATE_UNK_2) != FALSE)
return 1;
return 0;
}
bool32 sub_808727C(void)
{
- return sub_8086CE0(0x83);
+ return IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM);
}
u16 sub_8087288(void)
{
- c1_link_related_func_set(sub_80871AC);
+ SetKeyInterceptCallback(sub_80871AC);
return 0;
}
u16 sub_808729C(void)
{
- c1_link_related_func_set(sub_80870F8);
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
return 0;
}
-u16 sub_80872B0(void)
+// The exit room key will be sent at the next opportunity.
+// The return value is meaningless.
+u16 QueueExitLinkRoomKey(void)
{
- c1_link_related_func_set(sub_80871FC);
+ SetKeyInterceptCallback(KeyInterCB_SendExitRoomKey);
return 0;
}
u16 sub_80872C4(void)
{
- c1_link_related_func_set(sub_8087210);
+ SetKeyInterceptCallback(KeyInterCB_SendNothing_2);
return 0;
}
-static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3)
+static void LoadTradeRoomPlayer(s32 linkPlayerId, s32 myPlayerId, struct TradeRoomPlayer *trainer)
{
s16 x, y;
- a3->a = linkPlayerId;
- a3->b = (linkPlayerId == a2) ? 1 : 0;
- a3->c = gLinkPlayerEventObjects[linkPlayerId].mode;
- a3->d = sub_80878A0(linkPlayerId);
- sub_8087878(linkPlayerId, &x, &y);
- a3->sub.x = x;
- a3->sub.y = y;
- a3->sub.height = sub_80878C0(linkPlayerId);
- a3->field_C = MapGridGetMetatileBehaviorAt(x, y);
+ trainer->playerId = linkPlayerId;
+ trainer->isLocalPlayer = (linkPlayerId == myPlayerId) ? 1 : 0;
+ trainer->c = gLinkPlayerEventObjects[linkPlayerId].movementMode;
+ trainer->facing = GetLinkPlayerFacingDirection(linkPlayerId);
+ GetLinkPlayerCoords(linkPlayerId, &x, &y);
+ trainer->pos.x = x;
+ trainer->pos.y = y;
+ trainer->pos.height = GetLinkPlayerElevation(linkPlayerId);
+ trainer->field_C = MapGridGetMetatileBehaviorAt(x, y);
}
-static bool32 sub_8087340(struct UnkStruct_8054FF8 *a1)
+static bool32 sub_8087340(struct TradeRoomPlayer *player)
{
- u8 v1 = a1->c;
- if (v1 == 2 || v1 == 0)
+ u8 v1 = player->c;
+ if (v1 == MOVEMENT_MODE_SCRIPTED || v1 == MOVEMENT_MODE_FREE)
return TRUE;
else
return FALSE;
}
-static bool32 sub_8087358(struct UnkStruct_8054FF8 *a1)
+// Duplicate function.
+static bool32 sub_8087340_2(struct TradeRoomPlayer *player)
{
- u8 v1 = a1->c;
- if (v1 == 2 || v1 == 0)
+ u8 v1 = player->c;
+ if (v1 == MOVEMENT_MODE_SCRIPTED || v1 == MOVEMENT_MODE_FREE)
return TRUE;
else
return FALSE;
}
-static u8 *sub_8087370(struct UnkStruct_8054FF8 *a1)
+static u8 *TryGetTileEventScript(struct TradeRoomPlayer *player)
{
- if (a1->c != 2)
- return 0;
- return GetCoordEventScriptAtMapPosition(&a1->sub);
+ if (player->c != MOVEMENT_MODE_SCRIPTED)
+ return FACING_NONE;
+ return GetCoordEventScriptAtMapPosition(&player->pos);
}
-static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1)
+static bool32 PlayerIsAtSouthExit(struct TradeRoomPlayer *player)
{
- if (a1->c != 2 && a1->c != 0)
+ if (player->c != MOVEMENT_MODE_SCRIPTED && player->c != MOVEMENT_MODE_FREE)
return FALSE;
- else if (!MetatileBehavior_IsSouthArrowWarp(a1->field_C))
+ else if (!MetatileBehavior_IsSouthArrowWarp(player->field_C))
return FALSE;
- else if (a1->d != 1)
+ else if (player->facing != 1)
return FALSE;
else
return TRUE;
}
-static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1)
+static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *player)
{
- struct MapPosition unkStruct;
+ struct MapPosition otherPlayerPos;
u8 linkPlayerId;
- if (a1->c && a1->c != 2)
- return 0;
+ if (player->c != MOVEMENT_MODE_FREE && player->c != MOVEMENT_MODE_SCRIPTED)
+ return FACING_NONE;
- unkStruct = a1->sub;
- unkStruct.x += gDirectionToVectors[a1->d].x;
- unkStruct.y += gDirectionToVectors[a1->d].y;
- unkStruct.height = 0;
- linkPlayerId = GetLinkPlayerIdAt(unkStruct.x, unkStruct.y);
+ otherPlayerPos = player->pos;
+ otherPlayerPos.x += gDirectionToVectors[player->facing].x;
+ otherPlayerPos.y += gDirectionToVectors[player->facing].y;
+ otherPlayerPos.height = 0;
+ linkPlayerId = GetLinkPlayerIdAt(otherPlayerPos.x, otherPlayerPos.y);
if (linkPlayerId != 4)
{
- if (!a1->b)
- return EventScript_TradeRoom_TooBusyToNotice;
- else if (sUnknown_03000E10[linkPlayerId] != 0x80)
- return EventScript_TradeRoom_TooBusyToNotice;
- else if (!sub_80B39D4(linkPlayerId))
- return EventScript_TradeRoom_ReadTrainerCard1;
+ if (!player->isLocalPlayer)
+ return gEventScript_TradeRoom_TooBusyToNotice;
+ else if (sPlayerTradingStates[linkPlayerId] != PLAYER_TRADING_STATE_IDLE)
+ return gEventScript_TradeRoom_TooBusyToNotice;
+ else if (!GetLinkTrainerCardColor(linkPlayerId))
+ return gEventScript_TradeRoom_ReadTrainerCard_NoColor;
else
- return EventScript_TradeRoom_ReadTrainerCard2;
- }
-
- return GetInteractedLinkPlayerScript(&unkStruct, a1->field_C, a1->d);
-}
-
-static u16 sub_8087480(const u8 *script)
-{
- if (script == gUnknown_08277388)
- return 10;
- else if (script == gUnknown_082773A3)
- return 9;
- else if (script == gUnknown_082773BE)
- return 10;
- else if (script == gUnknown_082773D9)
- return 9;
- else if (script == gUnknown_0827741D)
- return 10;
- else if (script == gUnknown_08277432)
- return 9;
- else if (script == gUnknown_08277447)
- return 10;
- else if (script == gUnknown_0827745C)
- return 9;
- else if (script == gUnknown_08277374)
- return 10;
- else if (script == gUnknown_0827737E)
- return 9;
- else if (script == gUnknown_082773F5)
- return 10;
- else if (script == gUnknown_082773FF)
- return 9;
+ return gEventScript_TradeRoom_ReadTrainerCard_Normal;
+ }
+
+ return GetInteractedLinkPlayerScript(&otherPlayerPos, player->field_C, player->facing);
+}
+
+// This returns which direction to force the player to look when one of
+// these event scripts runs.
+static u16 GetDirectionForEventScript(const u8 *script)
+{
+ if (script == EventScript_DoubleBattleColosseum_PlayerSpot0)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_DoubleBattleColosseum_PlayerSpot1)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_DoubleBattleColosseum_PlayerSpot2)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_DoubleBattleColosseum_PlayerSpot3)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_RecordCenter_Spot0)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_RecordCenter_Spot1)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_RecordCenter_Spot2)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_RecordCenter_Spot3)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_SingleBattleColosseum_PlayerSpot0)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_SingleBattleColosseum_PlayerSpot1)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_TradeCenter_Chair0)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_TradeCenter_Chair1)
+ return FACING_FORCED_LEFT;
else
- return 0;
+ return FACING_NONE;
}
static void sub_8087510(void)
@@ -2810,7 +2814,7 @@ static void sub_8087510(void)
ScriptContext2_Enable();
}
-static void sub_808751C(void)
+static void InitLinkRoomStartMenuScript(void)
{
PlaySE(SE_WIN_OPEN);
ShowStartMenu();
@@ -2824,14 +2828,14 @@ static void sub_8087530(const u8 *script)
ScriptContext2_Enable();
}
-static void sub_808754C(void)
+static void CreateConfirmLeaveTradeRoomPrompt(void)
{
PlaySE(SE_WIN_OPEN);
- ScriptContext1_SetupScript(gUnknown_082774EF);
+ ScriptContext1_SetupScript(EventScript_ConfirmLeaveTradeRoom);
ScriptContext2_Enable();
}
-static void sub_8087568(const u8 *script)
+static void InitMenuBasedScript(const u8 *script)
{
PlaySE(SE_SELECT);
ScriptContext1_SetupScript(script);
@@ -2840,18 +2844,18 @@ static void sub_8087568(const u8 *script)
static void sub_8087584(void)
{
- ScriptContext1_SetupScript(gUnknown_08277509);
+ ScriptContext1_SetupScript(EventScript_TerminateLink);
ScriptContext2_Enable();
}
bool32 sub_8087598(void)
{
- if (!is_c1_link_related_active())
- return 0;
- if (sub_800B4DC() >= 3)
- sUnknown_03000E18 = 1;
+ if (!IsUpdateLinkStateCBActive())
+ return FALSE;
+ if (GetLinkRecvQueueLength() >= 3)
+ sUnknown_03000E18 = TRUE;
else
- sUnknown_03000E18 = 0;
+ sUnknown_03000E18 = FALSE;
return sUnknown_03000E18;
}
@@ -2859,19 +2863,19 @@ bool32 sub_80875C8(void)
{
u8 temp;
- if (sub_800B4DC() < 2)
+ if (GetLinkRecvQueueLength() < 2)
return FALSE;
- else if (is_c1_link_related_active() != TRUE)
+ else if (IsUpdateLinkStateCBActive() != TRUE)
return FALSE;
- else if (sub_8009F3C() != TRUE)
+ else if (IsSendingKeysToLink() != TRUE)
return FALSE;
- else if (sUnknown_03000E14 == sub_808711C)
+ else if (sPlayerKeyInterceptCallback == KeyInterCB_DeferToRecvQueue)
return TRUE;
- else if (sUnknown_03000E14 != sub_80870F8)
+ else if (sPlayerKeyInterceptCallback != KeyInterCB_DeferToEventScript)
return FALSE;
temp = sUnknown_03000E18;
- sUnknown_03000E18 = 0;
+ sUnknown_03000E18 = FALSE;
if (temp == TRUE)
return TRUE;
@@ -2883,13 +2887,13 @@ bool32 sub_80875C8(void)
bool32 sub_8087634(void)
{
- if (sub_8087690() < 2)
+ if (GetLinkSendQueueLength() < 2)
return FALSE;
- else if (is_c1_link_related_active() != TRUE)
+ else if (IsUpdateLinkStateCBActive() != TRUE)
return FALSE;
- else if (sub_8009F3C() != TRUE)
+ else if (IsSendingKeysToLink() != TRUE)
return FALSE;
- else if (sUnknown_03000E14 == sub_8087140)
+ else if (sPlayerKeyInterceptCallback == KeyInterCB_DeferToSendQueue)
return TRUE;
else
return FALSE;
@@ -2899,13 +2903,13 @@ bool32 sub_808766C(void)
{
if (gWirelessCommType != 0)
return FALSE;
- else if (!sub_8009F3C())
+ else if (!IsSendingKeysToLink())
return FALSE;
else
return TRUE;
}
-static u32 sub_8087690(void)
+static u32 GetLinkSendQueueLength(void)
{
if (gWirelessCommType != 0)
return gUnknown_03005000.unk_9e8.unk_232;
@@ -2940,7 +2944,7 @@ static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
linkPlayerEventObj->active = 1;
linkPlayerEventObj->linkPlayerId = linkPlayerId;
linkPlayerEventObj->eventObjId = eventObjId;
- linkPlayerEventObj->mode = 0;
+ linkPlayerEventObj->movementMode = MOVEMENT_MODE_FREE;
eventObj->active = 1;
eventObj->singleMovementActive = a4;
@@ -2982,14 +2986,15 @@ static void sub_808780C(u8 linkPlayerId)
eventObj->active = 0;
}
-static u8 sub_8087858(u8 linkPlayerId)
+// Returns the spriteId corresponding to this player.
+static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
return eventObj->spriteId;
}
-static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y)
+static void GetLinkPlayerCoords(u8 linkPlayerId, u16 *x, u16 *y)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
@@ -2997,14 +3002,14 @@ static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y)
*y = eventObj->currentCoords.y;
}
-static u8 sub_80878A0(u8 linkPlayerId)
+static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
return eventObj->range.as_byte;
}
-static u8 sub_80878C0(u8 linkPlayerId)
+static u8 GetLinkPlayerElevation(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
@@ -3024,7 +3029,7 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y)
for (i = 0; i < 4; i++)
{
if (gLinkPlayerEventObjects[i].active
- && (gLinkPlayerEventObjects[i].mode == 0 || gLinkPlayerEventObjects[i].mode == 2))
+ && (gLinkPlayerEventObjects[i].movementMode == 0 || gLinkPlayerEventObjects[i].movementMode == 2))
{
struct EventObject *eventObj = &gEventObjects[gLinkPlayerEventObjects[i].eventObjId];
if (eventObj->currentCoords.x == x && eventObj->currentCoords.y == y)
@@ -3034,7 +3039,7 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y)
return 4;
}
-static void sub_808796C(u8 linkPlayerId, u8 a2)
+static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing)
{
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
u8 eventObjId = linkPlayerEventObj->eventObjId;
@@ -3042,94 +3047,111 @@ static void sub_808796C(u8 linkPlayerId, u8 a2)
if (linkPlayerEventObj->active)
{
- if (a2 > 10)
+ if (facing > FACING_FORCED_RIGHT)
+ {
eventObj->triggerGroundEffectsOnMove = 1;
+ }
else
- gUnknown_08339E00[gUnknown_08339DC8[linkPlayerEventObj->mode](linkPlayerEventObj, eventObj, a2)](linkPlayerEventObj, eventObj);
+ {
+ // This is a hack to split this code onto two separate lines, without declaring a local variable.
+ // C++ style inline variables would be nice here.
+ #define TEMP gLinkPlayerMovementModes[linkPlayerEventObj->movementMode](linkPlayerEventObj, eventObj, facing)
+
+ gMovementStatusHandler[TEMP](linkPlayerEventObj, eventObj);
+
+ // Clean up the hack.
+ #undef TEMP
+ }
}
}
-static u8 sub_80879D8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+
+static u8 MovementEventModeCB_Normal(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return gUnknown_08339DD4[a3](linkPlayerEventObj, eventObj, a3);
+ return gLinkPlayerFacingHandlers[a3](linkPlayerEventObj, eventObj, a3);
}
-static u8 sub_80879F8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+static u8 MovementEventModeCB_Ignored(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return 1;
+ return FACING_UP;
}
-static u8 sub_80879FC(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+// Duplicate Function
+static u8 MovementEventModeCB_Normal_2(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return gUnknown_08339DD4[a3](linkPlayerEventObj, eventObj, a3);
+ return gLinkPlayerFacingHandlers[a3](linkPlayerEventObj, eventObj, a3);
}
-static u8 sub_8087A1C(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+static bool8 FacingHandler_DoNothing(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return 0;
+ return FALSE;
}
-static u8 sub_8087A20(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+static bool8 FacingHandler_DpadMovement(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
s16 x, y;
- eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte);
+ eventObj->range.as_byte = FlipVerticalAndClearForced(a3, eventObj->range.as_byte);
EventObjectMoveDestCoords(eventObj, eventObj->range.as_byte, &x, &y);
if (LinkPlayerDetectCollision(linkPlayerEventObj->eventObjId, eventObj->range.as_byte, x, y))
{
- return 0;
+ return FALSE;
}
else
{
eventObj->directionSequenceIndex = 16;
ShiftEventObjectCoords(eventObj, x, y);
EventObjectUpdateZCoord(eventObj);
- return 1;
+ return TRUE;
}
}
-static u8 sub_8087A88(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte);
- return 0;
+ eventObj->range.as_byte = FlipVerticalAndClearForced(a3, eventObj->range.as_byte);
+ return FALSE;
}
-static void sub_8087AA0(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
+// This is called every time a free movement happens. Most of the time it's a No-Op.
+static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
{
- linkPlayerEventObj->mode = 0;
+ linkPlayerEventObj->movementMode = MOVEMENT_MODE_FREE;
}
-static void sub_8087AA8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
+static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
{
eventObj->directionSequenceIndex--;
- linkPlayerEventObj->mode = 1;
+ linkPlayerEventObj->movementMode = MOVEMENT_MODE_FROZEN;
MoveCoords(eventObj->range.as_byte, &eventObj->initialCoords.x, &eventObj->initialCoords.y);
if (!eventObj->directionSequenceIndex)
{
ShiftStillEventObjectCoords(eventObj);
- linkPlayerEventObj->mode = 2;
+ linkPlayerEventObj->movementMode = MOVEMENT_MODE_SCRIPTED;
}
}
-static u8 npc_something3(u8 a1, u8 a2)
+// Flip Up/Down facing codes. If newFacing doesn't specify a direction, default
+// to oldFacing. Note that this clears also the "FORCED" part of the facing code,
+// even for Left/Right codes.
+static u8 FlipVerticalAndClearForced(u8 newFacing, u8 oldFacing)
{
- switch (a1 - 1)
+ switch (newFacing)
{
- case 0:
- case 6:
- return 2;
- case 1:
- case 7:
- return 1;
- case 2:
- case 8:
- return 3;
- case 3:
- case 9:
- return 4;
+ case FACING_UP:
+ case FACING_FORCED_UP:
+ return DIR_NORTH;
+ case FACING_DOWN:
+ case FACING_FORCED_DOWN:
+ return DIR_SOUTH;
+ case FACING_LEFT:
+ case FACING_FORCED_LEFT:
+ return DIR_WEST;
+ case FACING_RIGHT:
+ case FACING_FORCED_RIGHT:
+ return DIR_EAST;
}
- return a2;
+ return oldFacing;
}
static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y)
@@ -3189,7 +3211,7 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite)
SetObjectSubpriorityByZCoord(eventObj->previousElevation, sprite, 1);
sprite->oam.priority = ZCoordToPriority(eventObj->previousElevation);
- if (!linkPlayerEventObj->mode)
+ if (!linkPlayerEventObj->movementMode != MOVEMENT_MODE_FREE)
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObj->range.as_byte));
else
StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(eventObj->range.as_byte));
diff --git a/src/palette.c b/src/palette.c
index be5143876..5d1d6635c 100644
--- a/src/palette.c
+++ b/src/palette.c
@@ -115,7 +115,7 @@ u8 UpdatePaletteFade(void)
u8 dummy = 0;
if (sPlttBufferTransferPending)
- return -1;
+ return PALETTE_FADE_STATUS_LOADING;
if (gPaletteFade.mode == NORMAL_FADE)
result = UpdateNormalPaletteFade();
@@ -409,11 +409,11 @@ static u8 UpdateNormalPaletteFade(void)
u16 selectedPalettes;
if (!gPaletteFade.active)
- return 0;
+ return PALETTE_FADE_STATUS_DONE;
if (IsSoftwarePaletteFadeFinishing())
{
- return gPaletteFade.active;
+ return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE;
}
else
{
@@ -483,7 +483,9 @@ static u8 UpdateNormalPaletteFade(void)
}
}
- return gPaletteFade.active;
+ // gPaletteFade.active cannot change since the last time it was checked. So this
+ // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;`
+ return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE;
}
}
@@ -578,10 +580,11 @@ static u8 UpdateFastPaletteFade(void)
s8 b;
if (!gPaletteFade.active)
- return 0;
+ return PALETTE_FADE_STATUS_DONE;
if (IsSoftwarePaletteFadeFinishing())
- return gPaletteFade.active;
+ return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE;
+
if (gPaletteFade.objPaletteToggle)
{
@@ -688,7 +691,9 @@ static u8 UpdateFastPaletteFade(void)
gPaletteFade.objPaletteToggle ^= 1;
if (gPaletteFade.objPaletteToggle)
- return gPaletteFade.active;
+ // gPaletteFade.active cannot change since the last time it was checked. So this
+ // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;`
+ return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE;
if (gPaletteFade.y - gPaletteFade.deltaY < 0)
gPaletteFade.y = 0;
@@ -714,8 +719,10 @@ static u8 UpdateFastPaletteFade(void)
gPaletteFade.mode = NORMAL_FADE;
gPaletteFade.softwareFadeFinishing = 1;
}
-
- return gPaletteFade.active;
+
+ // gPaletteFade.active cannot change since the last time it was checked. So this
+ // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;`
+ return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE;
}
void BeginHardwarePaletteFade(u8 blendCnt, u8 delay, u8 y, u8 targetY, u8 shouldResetBlendRegisters)
@@ -739,12 +746,12 @@ void BeginHardwarePaletteFade(u8 blendCnt, u8 delay, u8 y, u8 targetY, u8 should
static u8 UpdateHardwarePaletteFade(void)
{
if (!gPaletteFade.active)
- return 0;
+ return PALETTE_FADE_STATUS_DONE;
if (gPaletteFade.delayCounter < gPaletteFade_delay)
{
gPaletteFade.delayCounter++;
- return 2;
+ return PALETTE_FADE_STATUS_DELAY;
}
gPaletteFade.delayCounter = 0;
@@ -778,7 +785,9 @@ static u8 UpdateHardwarePaletteFade(void)
gPaletteFade.shouldResetBlendRegisters = 0;
}
- return gPaletteFade.active;
+ // gPaletteFade.active cannot change since the last time it was checked. So this
+ // is equivalent to `return PALETTE_FADE_STATUS_ACTIVE;`
+ return gPaletteFade.active ? PALETTE_FADE_STATUS_ACTIVE : PALETTE_FADE_STATUS_DONE;
}
static void UpdateBlendRegisters(void)
diff --git a/src/party_menu.c b/src/party_menu.c
index 8193fcf31..7db24b6ca 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -37,15 +37,16 @@
#include "main.h"
#include "menu.h"
#include "menu_helpers.h"
+#include "menu_specialized.h"
#include "metatile_behavior.h"
#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
+#include "player_pc.h"
#include "pokemon.h"
#include "pokemon_icon.h"
#include "pokemon_storage_system.h"
#include "pokemon_summary_screen.h"
-#include "pokenav.h"
#include "region_map.h"
#include "reshow_battle_screen.h"
#include "rom_8011DC0.h"
@@ -63,6 +64,7 @@
#include "window.h"
#include "constants/battle.h"
#include "constants/battle_frontier.h"
+#include "constants/easy_chat.h"
#include "constants/field_effects.h"
#include "constants/flags.h"
#include "constants/items.h"
@@ -119,6 +121,7 @@ struct Struct203CEDC
u8 unkC;
};
+// EWRAM vars
static EWRAM_DATA struct Struct203CEC4 *gUnknown_0203CEC4 = NULL;
EWRAM_DATA struct Struct203CEC8 gUnknown_0203CEC8 = {0};
static EWRAM_DATA struct Struct203CEDC *gUnknown_0203CEDC = NULL;
@@ -134,7 +137,8 @@ static EWRAM_DATA u16 gUnknown_0203CEFC = 0;
static EWRAM_DATA u16 gUnknown_0203CEFE = 0; // unused
EWRAM_DATA u8 gUnknown_0203CF00[3] = {0};
-extern void (*gUnknown_03006328)(u8, TaskFunc);
+// IWRAM common
+void (*gUnknown_03006328)(u8, TaskFunc);
static void reset_brm(void);
static void PartyMenuInitCallback(void);
@@ -1172,10 +1176,10 @@ static const struct OamData gOamData_83765EC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -1228,10 +1232,10 @@ static const struct OamData sOamData_8615ED8 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -1284,10 +1288,10 @@ static const struct OamData sOamData_8615F20 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -1363,10 +1367,10 @@ static const struct OamData sOamData_8615F90 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(32x8),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(32x8),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -2751,7 +2755,7 @@ static void sub_81B1B8C(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
- sub_8198070(6, 0);
+ ClearStdWindowAndFrameToTransparent(6, 0);
ClearWindowTilemap(6);
}
DestroyTask(taskId);
@@ -2776,7 +2780,7 @@ static void sub_81B1C1C(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
- sub_8198070(6, 0);
+ ClearStdWindowAndFrameToTransparent(6, 0);
ClearWindowTilemap(6);
if (sub_81221AC() == TRUE)
{
@@ -2933,7 +2937,7 @@ u8 pokemon_ailments_get_primary(u32 status)
return AILMENT_NONE;
}
-u8 sub_81B205C(struct Pokemon *mon)
+u8 GetMonAilment(struct Pokemon *mon)
{
u8 ailment;
@@ -3106,7 +3110,7 @@ static void sub_81B239C(u8 a)
}
DeactivateAllTextPrinters();
for (i = 0; i < PARTY_SIZE; i++)
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
LoadUserWindowBorderGfx(0, 0x4F, 0xD0);
LoadPalette(GetOverworldTextboxPalettePtr(), 0xE0, 0x20);
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
@@ -3124,7 +3128,7 @@ static void sub_81B2428(bool8 a)
if (a == TRUE)
{
firstWindowId = AddWindow(&gUnknown_08615918);
- FillWindowPixelBuffer(firstWindowId, 0);
+ FillWindowPixelBuffer(firstWindowId, PIXEL_FILL(0));
mainOffset = GetStringCenterAlignXOffset(0, gMenuText_Confirm, 48);
AddTextPrinterParameterized4(firstWindowId, 0, mainOffset, 1, 0, 0, gUnknown_086157FC[0], -1, gMenuText_Confirm);
PutWindowTilemap(firstWindowId);
@@ -3137,7 +3141,7 @@ static void sub_81B2428(bool8 a)
windowId = AddWindow(&gUnknown_08615908);
offset = 3;
}
- FillWindowPixelBuffer(windowId, 0);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
if (gUnknown_0203CEC8.unk8_0 != 10)
{
mainOffset = GetStringCenterAlignXOffset(0, gText_Cancel, 48);
@@ -3352,7 +3356,7 @@ static void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct Struct203C
{
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
- u8 ailment = sub_81B205C(mon);
+ u8 ailment = GetMonAilment(mon);
if (ailment == AILMENT_NONE || ailment == AILMENT_PKRS)
{
if (c != 0)
@@ -3477,8 +3481,9 @@ static void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct Struct203CEDC *pt
FillWindowPixelRect(ptr->windowId, gUnknown_08615AB8[0], ptr->unk0->unk4[20], ptr->unk0->unk4[21] + 1, hpFraction, 2);
if (hpFraction != ptr->unk0->unk4[22])
{
- FillWindowPixelRect(ptr->windowId, 13, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21], ptr->unk0->unk4[22] - hpFraction, 1);
- FillWindowPixelRect(ptr->windowId, 2, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21] + 1, ptr->unk0->unk4[22] - hpFraction, 2);
+ // This appears to be an alternating fill
+ FillWindowPixelRect(ptr->windowId, 0x0D, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21], ptr->unk0->unk4[22] - hpFraction, 1);
+ FillWindowPixelRect(ptr->windowId, 0x02, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21] + 1, ptr->unk0->unk4[22] - hpFraction, 2);
}
CopyWindowToVram(ptr->windowId, 2);
}
@@ -3499,7 +3504,7 @@ static void sub_81B302C(u8 *ptr)
{
if (*ptr != 0xFF)
{
- sub_8198070(*ptr, 0);
+ ClearStdWindowAndFrameToTransparent(*ptr, 0);
RemoveWindow(*ptr);
*ptr = 0xFF;
schedule_bg_copy_tilemap_to_vram(2);
@@ -3544,7 +3549,7 @@ void display_pokemon_menu_message(u32 stringID)
else if (sub_81B314C() == FALSE)
stringID = 1;
}
- SetWindowBorderStyle(*windowPtr, FALSE, 0x4F, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(*windowPtr, FALSE, 0x4F, 0xD);
StringExpandPlaceholders(gStringVar4, gUnknown_08615AF4[stringID]);
AddTextPrinterParameterized(*windowPtr, 1, gStringVar4, 0, 1, 0, 0);
schedule_bg_copy_tilemap_to_vram(2);
@@ -3594,7 +3599,7 @@ static u8 sub_81B31B0(u8 a)
}
gUnknown_0203CEC4->unkC[0] = AddWindow(&window);
- SetWindowBorderStyle(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
if (a == 3)
return gUnknown_0203CEC4->unkC[0];
cursorDimension = GetMenuCursorDimensionByFont(1, 0);
@@ -3614,7 +3619,7 @@ static u8 sub_81B31B0(u8 a)
static void sub_81B3300(const u8 *text)
{
- SetWindowBorderStyle(6, FALSE, 0x4F, 13);
+ DrawStdFrameWithCustomTileAndPalette(6, FALSE, 0x4F, 13);
gTextFlags.canABSpeedUpPrint = TRUE;
AddTextPrinterParameterized2(6, 1, text, GetPlayerTextSpeedDelay(), 0, 2, 1, 3);
}
@@ -3627,7 +3632,7 @@ static void sub_81B334C(void)
static u8 sub_81B3364(void)
{
gUnknown_0203CEC4->unkC[0] = AddWindow(&gUnknown_08615970);
- SetWindowBorderStyle(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
return gUnknown_0203CEC4->unkC[0];
}
@@ -3831,7 +3836,7 @@ static void sub_81B3828(void)
static void sub_81B3894(void)
{
gPaletteFade.bufferTransferDisabled = TRUE;
- gUnknown_0203CEC8.unk9 = gUnknown_0203CF20;
+ gUnknown_0203CEC8.unk9 = gLastViewedMonIndex;
InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 21, sub_81B36FC, gUnknown_0203CEC8.exitCallback);
}
@@ -4209,7 +4214,11 @@ static void sub_81B452C(void)
{
u8 mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL);
- sub_811A20C(4, gSaveBlock1Ptr->mail[mail].words, sub_81B4578, 3);
+ DoEasyChatScreen(
+ EASY_CHAT_TYPE_MAIL,
+ gSaveBlock1Ptr->mail[mail].words,
+ sub_81B4578,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
static void sub_81B4578(void)
@@ -5176,7 +5185,7 @@ static void party_menu_link_mon_status_condition_object(u16 species, u8 status,
static void party_menu_get_status_condition_and_update_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
{
- party_menu_update_status_condition_object(sub_81B205C(mon), ptr);
+ party_menu_update_status_condition_object(GetMonAilment(mon), ptr);
}
static void party_menu_update_status_condition_object(u8 status, struct Struct203CEDC *ptr)
@@ -5998,7 +6007,7 @@ static void sub_81B767C(u8 taskId)
s16 *arrayPtr = gUnknown_0203CEC4->data;
arrayPtr[12] = sub_81B3364();
- sub_81D3640(arrayPtr[12], arrayPtr, &arrayPtr[6], 1, 2, 3);
+ DrawLevelUpWindowPg1(arrayPtr[12], arrayPtr, &arrayPtr[6], 1, 2, 3);
CopyWindowToVram(arrayPtr[12], 2);
schedule_bg_copy_tilemap_to_vram(2);
}
@@ -6007,7 +6016,7 @@ static void sub_81B76C8(u8 taskId)
{
s16 *arrayPtr = gUnknown_0203CEC4->data;
- sub_81D3784(arrayPtr[12], &arrayPtr[6], 1, 2, 3);
+ DrawLevelUpWindowPg2(arrayPtr[12], &arrayPtr[6], 1, 2, 3);
CopyWindowToVram(arrayPtr[12], 2);
schedule_bg_copy_tilemap_to_vram(2);
}
@@ -6383,7 +6392,11 @@ static void sub_81B814C(void)
sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gUnknown_0203CEC8.unkC);
mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL);
- sub_811A20C(4, gSaveBlock1Ptr->mail[mail].words, sub_81B81A8, 3);
+ DoEasyChatScreen(
+ EASY_CHAT_TYPE_MAIL,
+ gSaveBlock1Ptr->mail[mail].words,
+ sub_81B81A8,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
static void sub_81B81A8(void)
@@ -6511,7 +6524,7 @@ static void sub_81B8474(u8 taskId)
gTasks[taskId].func = sub_81B8104;
}
-void sub_81B8518(u8 unused)
+void InitChooseHalfPartyForBattle(u8 unused)
{
sub_81B8558();
InitPartyMenu(4, 0, 0, 0, 0, sub_81B1370, gMain.savedCallback);
@@ -7276,7 +7289,7 @@ static void sub_81B9640(u8 taskId)
void sub_81B968C(void)
{
ShowPokemonSummaryScreen(PSS_MODE_SELECT_MOVE, gPlayerParty, gSpecialVar_0x8004, gPlayerPartyCount - 1, CB2_ReturnToField);
- gFieldCallback = sub_80AF168;
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
}
void sub_81B96D0(void)
@@ -7317,9 +7330,9 @@ static void sub_81B97DC(struct Pokemon *mon, u8 slotTo, u8 slotFrom)
u8 pp1 = GetMonData(mon, MON_DATA_PP1 + slotTo);
u8 pp0 = GetMonData(mon, MON_DATA_PP1 + slotFrom);
u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
- u8 ppBonusMask1 = gUnknown_08329D22[slotTo];
+ u8 ppBonusMask1 = gPPUpGetMask[slotTo];
u8 ppBonusMove1 = (ppBonuses & ppBonusMask1) >> (slotTo * 2);
- u8 ppBonusMask2 = gUnknown_08329D22[slotFrom];
+ u8 ppBonusMask2 = gPPUpGetMask[slotFrom];
u8 ppBonusMove2 = (ppBonuses & ppBonusMask2) >> (slotFrom * 2);
ppBonuses &= ~ppBonusMask1;
ppBonuses &= ~ppBonusMask2;
diff --git a/src/player_pc.c b/src/player_pc.c
index 474cecaf5..49b9cc5f5 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -20,7 +20,6 @@
#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
-#include "pokenav.h"
#include "player_pc.h"
#include "script.h"
#include "sound.h"
@@ -29,6 +28,7 @@
#include "strings.h"
#include "task.h"
#include "window.h"
+#include "menu_specialized.h"
// structures
struct Struct203BCC4
@@ -355,20 +355,20 @@ static void PlayerPCProcessMenuInput(u8 taskId)
else
inputOptionId = Menu_ProcessInputNoWrap();
- switch(inputOptionId)
+ switch (inputOptionId)
{
- case -2:
+ case MENU_NOTHING_CHOSEN:
break;
- case -1:
+ case MENU_B_PRESSED:
PlaySE(SE_SELECT);
- sub_8198070(data[4], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[4], FALSE);
ClearWindowTilemap(data[4]);
RemoveWindow(data[4]);
schedule_bg_copy_tilemap_to_vram(0);
gTasks[taskId].func = PlayerPC_TurnOff;
break;
default:
- sub_8198070(data[4], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[4], FALSE);
ClearWindowTilemap(data[4]);
RemoveWindow(data[4]);
schedule_bg_copy_tilemap_to_vram(0);
@@ -403,7 +403,7 @@ static void PlayerPC_Mailbox(u8 taskId)
ItemStorage_SetItemAndMailCount(taskId);
if (sub_81D1C44(playerPCItemPageInfo.count) == TRUE)
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
Mailbox_DrawMailboxMenu(taskId);
gTasks[taskId].func = Mailbox_ProcessInput;
}
@@ -451,7 +451,7 @@ static void InitItemStorageMenu(u8 taskId, u8 var)
static void ItemStorageMenuPrint(const u8 *textPtr)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, textPtr, 0, 1, 0, 0);
}
@@ -464,13 +464,13 @@ static void ItemStorageMenuProcessInput(u8 taskId)
r5 = Menu_GetCursorPos();
inputOptionId = Menu_ProcessInput();
r2 = Menu_GetCursorPos();
- switch(inputOptionId)
+ switch (inputOptionId)
{
- case -2:
+ case MENU_NOTHING_CHOSEN:
if (r5 != r2)
ItemStorageMenuPrint(gPCText_OptionDescList[r2]);
break;
- case -1:
+ case MENU_B_PRESSED:
PlaySE(SE_SELECT);
ItemStorage_Exit(taskId);
break;
@@ -506,7 +506,7 @@ void sub_816B31C(void)
void Mailbox_DoRedrawMailboxMenuAfterReturn(void)
{
sub_81973A4();
- NewMenuHelpers_DrawDialogueFrame(0, 1);
+ DrawDialogueFrame(0, 1);
InitItemStorageMenu(CreateTask(ItemStorage_HandleReturnToProcessInput, 0), 1);
pal_fill_black();
}
@@ -560,7 +560,7 @@ static void ItemStorage_WithdrawToss_Helper(u8 taskId, bool8 toss)
FreeAndReserveObjectSpritePalettes();
LoadListMenuArrowsGfx();
sub_8122344(gUnknown_0203BCC4->spriteIds, 7);
- sub_8197434(0,0);
+ ClearDialogWindowAndFrame(0,0);
gTasks[taskId].func = ItemStorage_ProcessWithdrawTossInput;
}
@@ -583,7 +583,7 @@ static void sub_816B4DC(u8 taskId)
{
u16 *data = gTasks[taskId].data;
- sub_8198070(data[4], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[4], FALSE);
ClearWindowTilemap(data[4]);
RemoveWindow(data[4]);
schedule_bg_copy_tilemap_to_vram(0);
@@ -638,14 +638,14 @@ static void Mailbox_ProcessInput(u8 taskId)
if (!gPaletteFade.active)
{
- inputOptionId = ListMenuHandleInputGetItemId(data[5]);
+ inputOptionId = ListMenu_ProcessInput(data[5]);
ListMenuGetScrollAndRow(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
- switch(inputOptionId)
+ switch (inputOptionId)
{
- case -1:
+ case LIST_NOTHING_CHOSEN:
break;
- case -2:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
RemoveScrollIndicatorArrowPair(playerPCItemPageInfo.scrollIndicatorId);
Mailbox_ReturnToPlayerPC(taskId);
@@ -761,7 +761,7 @@ static void Mailbox_MoveToBag(u8 taskId)
static void Mailbox_DrawYesNoBeforeMove(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
gTasks[taskId].func = Mailbox_MoveToBagYesNoPrompt;
}
@@ -863,7 +863,7 @@ static void Mailbox_NoPokemonForMail(u8 taskId)
static void Mailbox_Cancel(u8 taskId)
{
sub_81D1D04(2);
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
Mailbox_DrawMailboxMenu(taskId);
schedule_bg_copy_tilemap_to_vram(0);
gTasks[taskId].func = Mailbox_ProcessInput;
@@ -892,7 +892,7 @@ static u8 sub_816BC7C(u8 a)
if (*windowIdLoc == 0xFF)
{
*windowIdLoc = AddWindow(&gUnknown_085DFF5C[a]);
- SetWindowBorderStyle(*windowIdLoc, FALSE, 0x214, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(*windowIdLoc, FALSE, 0x214, 0xE);
schedule_bg_copy_tilemap_to_vram(0);
}
return *windowIdLoc;
@@ -903,7 +903,7 @@ static void sub_816BCC4(u8 a)
u8 *windowIdLoc = &(gUnknown_0203BCC4->windowIds[a]);
if (*windowIdLoc != 0xFF)
{
- sub_8198070(*windowIdLoc, FALSE);
+ ClearStdWindowAndFrameToTransparent(*windowIdLoc, FALSE);
ClearWindowTilemap(*windowIdLoc);
schedule_bg_copy_tilemap_to_vram(0);
RemoveWindow(*windowIdLoc);
@@ -977,7 +977,7 @@ static void sub_816BEF0(s32 id)
description = (u8 *)ItemId_GetDescription(gSaveBlock1Ptr->pcItems[id].itemId);
else
description = ItemStorage_GetItemPcResponse(ITEMPC_GO_BACK_TO_PREV);
- FillWindowPixelBuffer(windowId, 17);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
AddTextPrinterParameterized(windowId, 1, description, 0, 1, 0, NULL);
}
@@ -1005,7 +1005,7 @@ static void sub_816BFE0(u8 y, u8 b, u8 speed)
{
u8 windowId = gUnknown_0203BCC4->windowIds[0];
if (b == 0xFF)
- FillWindowPixelRect(windowId, 17, 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
+ FillWindowPixelRect(windowId, PIXEL_FILL(1), 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
else
AddTextPrinterParameterized4(windowId, 1, 0, y, 0, 0, gUnknown_085DFF8C, speed, gText_SelectorArrow2);
}
@@ -1123,7 +1123,7 @@ static const u8* ItemStorage_GetItemPcResponse(u16 itemId)
static void ItemStorage_PrintItemPcResponse(const u8 *string)
{
u8 windowId = gUnknown_0203BCC4->windowIds[1];
- FillWindowPixelBuffer(windowId, 0x11);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
StringExpandPlaceholders(gStringVar4, string);
AddTextPrinterParameterized(windowId, 1, gStringVar4, 0, 1, 0, NULL);
}
@@ -1145,13 +1145,13 @@ static void ItemStorage_ProcessInput(u8 taskId)
}
else
{
- id = ListMenuHandleInputGetItemId(data[5]);
+ id = ListMenu_ProcessInput(data[5]);
ListMenuGetScrollAndRow(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
switch(id)
{
- case -1:
+ case LIST_NOTHING_CHOSEN:
break;
- case -2:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
ItemStorage_GoBackToPlayerPCMenu(taskId);
break;
@@ -1170,7 +1170,7 @@ static void ItemStorage_GoBackToPlayerPCMenu_InitStorage(u8 taskId)
data = gTasks[taskId].data;
if (!IsDma3ManagerBusyWithBgCopy())
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
if (!data[3])
InitItemStorageMenu(taskId, ITEMPC_MENU_WITHDRAW);
else
@@ -1218,21 +1218,23 @@ static void sub_816C4FC(u8 taskId)
ItemStorage_DoItemSwap(taskId, FALSE);
return;
}
- id = ListMenuHandleInputGetItemId(data[5]);
+ id = ListMenu_ProcessInput(data[5]);
ListMenuGetScrollAndRow(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
sub_81223FC(gUnknown_0203BCC4->spriteIds, 7, 0);
sub_816C690(playerPCItemPageInfo.cursorPos);
switch(id)
{
- case -1:
+ case LIST_NOTHING_CHOSEN:
break;
- case -2:
+ case LIST_CANCEL:
if (gMain.newKeys & A_BUTTON)
{
ItemStorage_DoItemSwap(taskId, FALSE);
}
else
+ {
ItemStorage_DoItemSwap(taskId, TRUE);
+ }
break;
default:
ItemStorage_DoItemSwap(taskId, FALSE);
diff --git a/src/poison.c b/src/poison.c
index a72aab111..9af981694 100644
--- a/src/poison.c
+++ b/src/poison.c
@@ -3,8 +3,6 @@
#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 *);
@@ -208,7 +206,7 @@ void sub_810DBAC(struct Sprite *sprite)
static void sub_810DC10(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
DestroyAnimSprite(sprite);
}
@@ -236,7 +234,7 @@ void sub_810DC2C(struct Sprite *sprite)
static void sub_810DCB4(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
DestroyAnimSprite(sprite);
}
@@ -258,7 +256,7 @@ void sub_810DCD0(struct Sprite *sprite)
static void sub_810DD24(struct Sprite *sprite)
{
- AnimTranslateLinearSimple(sprite);
+ TranslateSpriteLinearFixedPoint(sprite);
sprite->data[1] -= sprite->data[5];
sprite->data[2] -= sprite->data[6];
diff --git a/src/pokeball.c b/src/pokeball.c
index 1938d888d..793609ec2 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -99,10 +99,10 @@ static const struct OamData sBallOamData =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -411,7 +411,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
static void SpriteCB_TestBallThrow(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
u16 ballId;
u8 taskId = sprite->oam.affineParam;
@@ -940,7 +940,7 @@ static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite)
}
else
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 7c07f9655..325c2d5d0 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -222,10 +222,10 @@ static const struct OamData sOamData_PokeblockCase =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -665,7 +665,7 @@ static void HandleInitWindows(void)
for (i = 0; i < ARRAY_COUNT(sWindowTemplatesForPokeblockMenu) - 1; i++)
{
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
}
schedule_bg_copy_tilemap_to_vram(0);
@@ -709,7 +709,7 @@ static void HandlePokeblockListMenuItems(void)
StringCopy(sPokeblockMenu->menuItemsStrings[i], gText_StowCase);
sPokeblockMenu->items[i].name = sPokeblockMenu->menuItemsStrings[i];
- sPokeblockMenu->items[i].id = LIST_B_PRESSED;
+ sPokeblockMenu->items[i].id = LIST_CANCEL;
gMultiuseListMenuTemplate = sPokeblockListMenuTemplate;
gMultiuseListMenuTemplate.fontId = 7;
@@ -749,9 +749,9 @@ static void sub_8135FCC(s32 pkblId)
struct Pokeblock *pokeblock;
u16 rectTilemapSrc[2];
- FillWindowPixelBuffer(7, 0);
+ FillWindowPixelBuffer(7, PIXEL_FILL(0));
- if (pkblId != LIST_B_PRESSED)
+ if (pkblId != LIST_CANCEL)
{
pokeblock = &gSaveBlock1Ptr->pokeblocks[pkblId];
rectTilemapSrc[0] = 0x17;
@@ -959,7 +959,7 @@ static void Task_FreeDataAndExitPokeblockCase(u8 taskId)
if (!gPaletteFade.active)
{
if (sPokeblockMenu->caseId == PBLOCK_CASE_FEEDER || sPokeblockMenu->caseId == PBLOCK_CASE_GIVE)
- gFieldCallback = sub_80AF168;
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
DestroyListMenuTask(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
sub_8136418();
@@ -998,7 +998,7 @@ static void Task_HandlePokeblockMenuInput(u8 taskId)
else
{
u16 oldPosition = sSavedPokeblockData.lastItemPos;
- s32 itemId = ListMenuHandleInputGetItemId(data[0]);
+ s32 itemId = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
if (oldPosition != sSavedPokeblockData.lastItemPos)
@@ -1011,7 +1011,7 @@ static void Task_HandlePokeblockMenuInput(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
gSpecialVar_Result = 0xFFFF;
gSpecialVar_ItemId = 0;
@@ -1044,7 +1044,7 @@ static void Task_HandlePokeblocksSwapInput(u8 taskId)
{
u16 i = sSavedPokeblockData.lastItemPage;
u16 var = sSavedPokeblockData.lastItemPos;
- s32 itemId = ListMenuHandleInputGetItemId(data[0]);
+ s32 itemId = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
if (i != sSavedPokeblockData.lastItemPage || var != sSavedPokeblockData.lastItemPos)
@@ -1066,7 +1066,7 @@ static void Task_HandlePokeblocksSwapInput(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED: // same id as STOW CASE field
+ case LIST_CANCEL: // same id as STOW CASE field
PlaySE(SE_SELECT);
if (gMain.newKeys & A_BUTTON)
HandlePokeblocksSwap(taskId, FALSE);
@@ -1120,7 +1120,7 @@ static void PutPokeblockOptionsWindow(u8 taskId)
data[1] = 9;
sub_8136418();
- SetWindowBorderStyle(data[1], 0, 1, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(data[1], 0, 1, 0xE);
sub_81995E4(data[1], sPokeblockMenu->optionsNo, sPokeblockMenuActions, sPokeblockMenu->pokeblockOptionsIds);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(data[1], sPokeblockMenu->optionsNo, 0);
PutWindowTilemap(data[1]);
@@ -1173,7 +1173,7 @@ static void PokeblockAction_Toss(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_8198070(data[1], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[1], FALSE);
StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1Ptr->pokeblocks[gSpecialVar_ItemId].color]);
StringExpandPlaceholders(gStringVar4, gText_ThrowAwayVar1);
DisplayMessageAndContinueTask(taskId, 10, 10, 13, 1, GetPlayerTextSpeedDelay(), gStringVar4, CreateTossPokeblockYesNoMenu);
@@ -1219,7 +1219,7 @@ static void HandleErasePokeblock(u8 taskId)
static void TossPokeblockChoice_No(u8 taskId)
{
- sub_8197DF8(10, FALSE);
+ ClearDialogWindowAndFrameToTransparent(10, FALSE);
schedule_bg_copy_tilemap_to_vram(1);
sub_81363BC();
gTasks[taskId].func = Task_HandlePokeblockMenuInput;
@@ -1266,7 +1266,7 @@ static void PokeblockAction_Cancel(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_8198070(data[1], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[1], FALSE);
schedule_bg_copy_tilemap_to_vram(1);
sub_81363BC();
gTasks[taskId].func = Task_HandlePokeblockMenuInput;
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index b1f182b66..59ba1b4dc 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -55,8 +55,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
extern const u16 gUnknown_0860F074[];
-extern bool8 sub_81221EC(void);
-
// this file's functions
static void HandleInitBackgrounds(void);
static void HandleInitWindows(void);
@@ -465,10 +463,10 @@ static const struct OamData sThrownPokeblockOamData =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -581,7 +579,7 @@ static bool8 TransitionToPokeblockFeedScene(void)
gMain.state++;
break;
case 10:
- SetWindowBorderStyle(0, 1, 1, 14);
+ DrawStdFrameWithCustomTileAndPalette(0, 1, 1, 14);
gMain.state++;
break;
case 11:
@@ -704,7 +702,7 @@ static void HandleInitWindows(void)
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 1, 0xE0);
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
schedule_bg_copy_tilemap_to_vram(0);
}
diff --git a/src/pokedex.c b/src/pokedex.c
index f99a8226a..cceb50ba1 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -30,8 +30,6 @@
#include "constants/songs.h"
#include "constants/species.h"
-extern u8 gDexCryScreenState;
-
// EWRAM
static EWRAM_DATA struct PokedexView *sPokedexView = NULL;
static EWRAM_DATA u16 gUnknown_02039B50 = 0;
@@ -39,7 +37,8 @@ static EWRAM_DATA u8 gUnknown_02039B52 = 0;
static EWRAM_DATA struct PokedexListItem *sPokedexListItem = NULL;
// IWRAM common
-u8 gUnknown_030060B0;
+// This is written to, but never read.
+u8 gUnusedPokedexU8;
void (*gUnknown_030060B4)(void);
struct PokedexOption
@@ -249,10 +248,10 @@ static const struct OamData sOamData_855CFE4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = ST_OAM_SQUARE,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -266,10 +265,10 @@ static const struct OamData sOamData_855CFEC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = ST_OAM_H_RECTANGLE,
+ .shape = SPRITE_SHAPE(16x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(16x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -283,10 +282,10 @@ static const struct OamData sOamData_855CFF4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = ST_OAM_H_RECTANGLE,
+ .shape = SPRITE_SHAPE(32x16),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -300,10 +299,10 @@ static const struct OamData sOamData_855CFFC =
.objMode = 2,
.mosaic = 0,
.bpp = 0,
- .shape = ST_OAM_SQUARE,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -317,10 +316,10 @@ static const struct OamData sOamData_855D004 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = ST_OAM_H_RECTANGLE,
+ .shape = SPRITE_SHAPE(64x32),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x32),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -334,10 +333,10 @@ static const struct OamData sOamData_855D00C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = ST_OAM_V_RECTANGLE,
+ .shape = SPRITE_SHAPE(8x16),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -1227,7 +1226,7 @@ void ResetPokedex(void)
gUnknown_02039B50 = 0;
gUnknown_02039B52 = 64;
- gUnknown_030060B0 = 0;
+ gUnusedPokedexU8 = 0;
gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN;
gSaveBlock2Ptr->pokedex.order = 0;
gSaveBlock2Ptr->pokedex.nationalMagic = 0;
@@ -1245,7 +1244,7 @@ void ResetPokedex(void)
}
}
-void sub_80BB358(void)
+void ResetPokedexScrollPositions(void)
{
gUnknown_02039B50 = 0;
gUnknown_02039B52 = 64;
@@ -2153,7 +2152,7 @@ static void CreateCaughtBall(u16 a, u8 x, u8 y, u16 unused)
if (a)
BlitBitmapToWindow(0, gUnknown_0855D2BE, x * 8, y * 8, 8, 16);
else
- FillWindowPixelRect(0, 0, x * 8, y * 8, 8, 16);
+ FillWindowPixelRect(0, PIXEL_FILL(0), x * 8, y * 8, 8, 16);
}
static u8 CreateMonName(u16 num, u8 left, u8 top)
@@ -2171,7 +2170,7 @@ static u8 CreateMonName(u16 num, u8 left, u8 top)
void sub_80BD28C(u8 x, u8 y, u16 unused)
{
- FillWindowPixelRect(0, 0, x * 8, y * 8, 0x60, 16);
+ FillWindowPixelRect(0, PIXEL_FILL(0), x * 8, y * 8, 0x60, 16);
}
static void CreateInitialPokemonSprites(u16 selectedMon, u16 b)
@@ -2928,7 +2927,7 @@ void sub_80BEA24(u8 taskId)
case 1:
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, gPokedexTilemap_DescriptionScreen, 0, 0);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
PutWindowTilemap(1);
sub_80C0D30(1, sPokedexListItem->dexNum);
@@ -3223,7 +3222,7 @@ void sub_80BF250(u8 taskId)
case 1:
DecompressAndLoadBgGfxUsingHeap(3, &gPokedexMenu_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, &gPokedexTilemap_CryScreen, 0, 0);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
PutWindowTilemap(3);
PutWindowTilemap(2);
@@ -3417,7 +3416,7 @@ void sub_80BF82C(u8 taskId)
case 1:
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, gPokedexTilemap_SizeScreen, 0, 0);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
gMain.state++;
break;
@@ -3541,8 +3540,9 @@ void sub_80BFCF4(u16 a)
{
CopyToBgTilemapBuffer(1, gPokedexTilemap_ScreenSelectBar2, 0, 0);
}
-
#ifdef NONMATCHING
+// This doesn't match because gcc flips the naming of the r3 and r4
+// registers.
void sub_80BFD0C(u8 a, u16 unused)
{
u8 i;
@@ -3631,6 +3631,8 @@ _080BFD3E:\n\
#endif
#ifdef NONMATCHING
+// This doesn't match because gcc flips the naming of the r3 and r4
+// registers.
void sub_80BFD7C(u8 a, u16 b)
{
u8 i;
@@ -3764,7 +3766,7 @@ void sub_80BFE38(u8 taskId)
case 1:
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, gPokedexTilemap_DescriptionScreen, 0, 0);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
PutWindowTilemap(1);
sub_80C0D30(1, gTasks[taskId].data[1]);
@@ -3961,6 +3963,8 @@ void sub_80C0354(u16 height, u8 left, u8 top)
}
#ifdef NONMATCHING
+// This doesn't match because gcc manages to avoid using the stack
+// to store local variables.
void sub_80C0460(u16 weight, u8 left, u8 top)
{
u8 buffer[16];
@@ -4038,7 +4042,7 @@ void sub_80C0460(u16 weight, u8 left, u8 top)
lsls r2, 24\n\
lsrs r2, 24\n\
str r2, [sp, 0x10]\n\
- ldr r5, =0x000186a0\n\
+ ldr r5, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\
muls r0, r5\n\
ldr r1, =0x000011b8\n\
bl __divsi3\n\
@@ -4072,7 +4076,7 @@ _080C04C0:\n\
mov r8, r1\n\
movs r6, 0x1\n\
_080C04C6:\n\
- ldr r1, =0x000186a0\n\
+ ldr r1, =0x000186a0 @ Note to decompiler: See UNKNOWN_OFFSET\n\
adds r0, r7, 0\n\
bl __umodsi3\n\
adds r7, r0, 0\n\
@@ -4780,7 +4784,7 @@ void sub_80C1270(const u8 *str, u32 left, u32 top)
void sub_80C12B0(u32 x, u32 y, u32 width, u32 height)
{
- FillWindowPixelRect(0, 0, x, y, width, height);
+ FillWindowPixelRect(0, PIXEL_FILL(0), x, y, width, height);
}
void sub_80C12E0(u8 taskId)
@@ -5207,18 +5211,24 @@ void sub_80C1D70(u8 taskId)
}
#ifdef NONMATCHING
+// This doesn't match because gcc flips the naming of the r7 and r6
+// registers. It also does one of the additions backwards.
void sub_80C1D98(u8 a, u8 b, u8 c, u8 d)
{
u16 i;
u16* ptr = GetBgTilemapBuffer(3);
+ u16* temp;
for (i = 0; i < d; i++)
{
- ptr[b + i + (c << 6)] %= 0x1000;
- ptr[b + i + (c << 6)] |= a * 4096;
+ // This addition is supposed to be done in this order; however,
+ // gcc will always do it in ptr + (c << 5) order.
+ temp = (c << 5) + ptr;
+ temp[b + i] %= 0x1000;
+ temp[b + i] |= a * 4096;
- ptr[b + i + (c << 6) + 32] %= 0x1000;
- ptr[b + i + (c << 6) + 32] |= a * 4096;
+ temp[b + i + 32] %= 0x1000;
+ temp[b + i + 32] |= a * 4096;
}
}
#else
diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c
index eeea3c210..00fe9ab82 100755
--- a/src/pokedex_area_screen.c
+++ b/src/pokedex_area_screen.c
@@ -83,14 +83,21 @@ static const u32 sAreaGlow_Gfx[] = INCBIN_U32("graphics/pokedex/area_glow.4bpp.l
static const u16 sSpeciesHiddenFromAreaScreen[] = { SPECIES_WYNAUT };
-static const u16 sMovingRegionMapSections[3] = { MAPSEC_MARINE_CAVE, MAPSEC_UNDERWATER_MARINE_CAVE, MAPSEC_TERRA_CAVE };
+static const u16 sMovingRegionMapSections[3] =
+{
+ MAPSEC_MARINE_CAVE,
+ MAPSEC_UNDERWATER_MARINE_CAVE,
+ MAPSEC_TERRA_CAVE
+};
-static const u16 sFeebasData[][3] = {
+static const u16 sFeebasData[][3] =
+{
{SPECIES_FEEBAS, MAP_GROUP(ROUTE119), MAP_NUM(ROUTE119)},
{NUM_SPECIES}
};
-static const u16 sLandmarkData[][2] = {
+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},
@@ -100,7 +107,8 @@ static const u16 sLandmarkData[][2] = {
{MAPSEC_NONE}
};
-static const u8 sAreaGlowTilemapMapping[] = {
+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,
@@ -119,7 +127,8 @@ static const u8 sAreaGlowTilemapMapping[] = {
0x1f, 0x22, 0x25, 0x03, 0x28, 0x2d, 0x2c, 0x07, 0x2b, 0x2e, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
};
-static const struct UnkStruct_1C4D70 sUnknown_085B4018 = {
+static const struct UnkStruct_1C4D70 sUnknown_085B4018 =
+{
.bg = 3,
.unk2 = 0,
.unk10 = 0,
@@ -127,21 +136,26 @@ static const struct UnkStruct_1C4D70 sUnknown_085B4018 = {
};
static const u8 sAreaMarkerTiles[];
-static const struct SpriteSheet sAreaMarkerSpriteSheet = {
+static const struct SpriteSheet sAreaMarkerSpriteSheet =
+{
sAreaMarkerTiles, 0x80, 2
};
static const u16 sAreaMarkerPalette[];
-static const struct SpritePalette sAreaMarkerSpritePalette = {
+static const struct SpritePalette sAreaMarkerSpritePalette =
+{
sAreaMarkerPalette, 2
};
-static const struct OamData sAreaMarkerOamData = {
- .size = 1,
+static const struct OamData sAreaMarkerOamData =
+{
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 1
};
-static const struct SpriteTemplate sAreaMarkerSpriteTemplate = {
+static const struct SpriteTemplate sAreaMarkerSpriteTemplate =
+{
2,
2,
&sAreaMarkerOamData,
@@ -154,16 +168,20 @@ static const struct SpriteTemplate sAreaMarkerSpriteTemplate = {
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 = {
+static const struct SpritePalette sAreaUnknownSpritePalette =
+{
gPokedexAreaScreenAreaUnknown_Pal, 3
};
-static const struct OamData sAreaUnknownOamData = {
- .size = 2,
+static const struct OamData sAreaUnknownOamData =
+{
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 1
};
-static const struct SpriteTemplate sAreaUnknownSpriteTemplate = {
+static const struct SpriteTemplate sAreaUnknownSpriteTemplate =
+{
3,
3,
&sAreaUnknownOamData,
diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c
index 4a9227b99..8ca0c8d6e 100755
--- a/src/pokedex_cry_screen.c
+++ b/src/pokedex_cry_screen.c
@@ -39,7 +39,10 @@ static void sub_8145824(u8, s16, u8);
static void sub_814596C(struct Sprite *);
static void sub_8145B24(s8);
-extern u8 gDexCryScreenState;
+// IWRAM common
+u8 gDexCryScreenState;
+
+// EWRAM vars
static EWRAM_DATA struct PokedexCryScreen *sDexCryScreen = NULL;
static EWRAM_DATA u8 *sCryWaveformWindowTiledata = NULL;
static EWRAM_DATA struct PokedexCryVolumeMeter *sCryVolumeMeter = NULL;
@@ -51,7 +54,8 @@ 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] = {
+const u16 gUnknown_085B8770[][72] =
+{
{
0x0000, 0x0004, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C,
0x0400, 0x0404, 0x0408, 0x040C, 0x0410, 0x0414, 0x0418, 0x041C,
@@ -139,7 +143,8 @@ 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] = {
+const u8 gUnknown_085B8C32[][16] =
+{
{
0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08,
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
@@ -149,23 +154,28 @@ const u8 gUnknown_085B8C32[][16] = {
}
};
-const union AnimCmd gSpriteAnim_85B8C54[] = {
+const union AnimCmd gSpriteAnim_85B8C54[] =
+{
ANIMCMD_FRAME(0, 30),
ANIMCMD_END
};
-const union AnimCmd *const gSpriteAnimTable_85B8C5C[] = {
+const union AnimCmd *const gSpriteAnimTable_85B8C5C[] =
+{
gSpriteAnim_85B8C54
};
-const struct OamData gOamData_85B8C60 = {
+const struct OamData gOamData_85B8C60 =
+{
.y = 160,
.affineMode = ST_OAM_AFFINE_NORMAL,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
.priority = 1
};
-const struct SpriteTemplate gUnknown_085B8C68 = {
+const struct SpriteTemplate gUnknown_085B8C68 =
+{
0x2000,
0x2000,
&gOamData_85B8C60,
@@ -175,12 +185,14 @@ const struct SpriteTemplate gUnknown_085B8C68 = {
sub_814596C
};
-const struct SpriteSheet gCryMeterNeedleSpriteSheets[] = {
+const struct SpriteSheet gCryMeterNeedleSpriteSheets[] =
+{
{CryMeterNeedleTiles, 0x800, 0x2000},
{}
};
-const struct SpritePalette gCryMeterNeedleSpritePalettes[] = {
+const struct SpritePalette gCryMeterNeedleSpritePalettes[] =
+{
{CryMeterNeedlePalette, 0x2000},
{}
};
diff --git a/src/pokemon.c b/src/pokemon.c
index cdb87f464..1ee9c4cff 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -10,6 +10,7 @@
#include "battle_tower.h"
#include "event_data.h"
#include "evolution_scene.h"
+#include "field_specials.h"
#include "item.h"
#include "link.h"
#include "main.h"
@@ -37,6 +38,7 @@
#include "constants/battle_move_effects.h"
#include "constants/hold_effects.h"
#include "constants/items.h"
+#include "constants/layouts.h"
#include "constants/moves.h"
#include "constants/songs.h"
#include "constants/species.h"
@@ -52,14 +54,14 @@ extern const struct SpriteFrameImage gUnknown_082FF3A8[];
extern const struct SpriteFrameImage gUnknown_082FF3C8[];
extern const struct SpriteFrameImage gUnknown_082FF3E8[];
extern const struct SpriteFrameImage gUnknown_082FF408[];
-extern const struct SpriteFrameImage gUnknown_082FF428[];
-extern const struct SpriteFrameImage gUnknown_082FF448[];
-extern const struct SpriteFrameImage gUnknown_082FF468[];
-extern const struct SpriteFrameImage gUnknown_082FF490[];
-extern const struct SpriteFrameImage gUnknown_082FF4B8[];
-extern const struct SpriteFrameImage gUnknown_082FF4D8[];
-extern const struct SpriteFrameImage gUnknown_082FF4F8[];
-extern const struct SpriteFrameImage gUnknown_082FF518[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Brendan[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_May[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Red[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Leaf[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Wally[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Steven[];
extern const union AffineAnimCmd *const gUnknown_082FF618[];
extern const union AffineAnimCmd *const gUnknown_082FF694[];
extern const union AnimCmd *gPlayerMonSpriteAnimsTable[];
@@ -71,10 +73,6 @@ extern const struct CompressedSpritePalette gMonPaletteTable[];
extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
extern const u8 gTrainerClassNames[][13];
-extern u16 get_unknown_box_id(void);
-extern void set_unknown_box_id(u8);
-extern bool8 sub_806F104(void);
-
// this file's functions
static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
static union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType);
@@ -2226,9 +2224,9 @@ static const u8 sMonAnimationDelayTable[] =
[SPECIES_CHIMECHO - 1] = 0x00,
};
-const u8 gUnknown_08329D22[] = {0x03, 0x0c, 0x30, 0xc0}; // Masks for getting PP Up count, also PP Max values
-const u8 gUnknown_08329D26[] = {0xfc, 0xf3, 0xcf, 0x3f}; // Masks for setting PP Up count
-const u8 gUnknown_08329D2A[] = {0x01, 0x04, 0x10, 0x40}; // Values added to PP Up count
+const u8 gPPUpGetMask[] = {0x03, 0x0c, 0x30, 0xc0}; // Masks for getting PP Up count, also PP Max values
+const u8 gPPUpSetMask[] = {0xfc, 0xf3, 0xcf, 0x3f}; // Masks for setting PP Up count
+const u8 gPPUpAddMask[] = {0x01, 0x04, 0x10, 0x40}; // Values added to PP Up count
const u8 gStatStageRatios[][2] =
{
@@ -2328,14 +2326,14 @@ const struct SpriteTemplate gUnknown_08329D98[MAX_BATTLERS_COUNT] =
},
};
-static const struct SpriteTemplate gUnknown_08329DF8[] =
+static const struct SpriteTemplate gSpriteTemplateTable_TrainerBackSprites[] =
{
{
.tileTag = 0xFFFF,
.paletteTag = 0,
.oam = &gOamData_831ACB0,
.anims = NULL,
- .images = gUnknown_082FF428,
+ .images = gTrainerBackPicTable_Brendan,
.affineAnims = gUnknown_082FF618,
.callback = sub_8039BB4,
},
@@ -2344,7 +2342,7 @@ static const struct SpriteTemplate gUnknown_08329DF8[] =
.paletteTag = 0,
.oam = &gOamData_831ACB0,
.anims = NULL,
- .images = gUnknown_082FF448,
+ .images = gTrainerBackPicTable_May,
.affineAnims = gUnknown_082FF618,
.callback = sub_8039BB4,
},
@@ -2353,7 +2351,7 @@ static const struct SpriteTemplate gUnknown_08329DF8[] =
.paletteTag = 0,
.oam = &gOamData_831ACB0,
.anims = NULL,
- .images = gUnknown_082FF468,
+ .images = gTrainerBackPicTable_Red,
.affineAnims = gUnknown_082FF618,
.callback = sub_8039BB4,
},
@@ -2362,7 +2360,7 @@ static const struct SpriteTemplate gUnknown_08329DF8[] =
.paletteTag = 0,
.oam = &gOamData_831ACB0,
.anims = NULL,
- .images = gUnknown_082FF490,
+ .images = gTrainerBackPicTable_Leaf,
.affineAnims = gUnknown_082FF618,
.callback = sub_8039BB4,
},
@@ -2371,7 +2369,7 @@ static const struct SpriteTemplate gUnknown_08329DF8[] =
.paletteTag = 0,
.oam = &gOamData_831ACB0,
.anims = NULL,
- .images = gUnknown_082FF4B8,
+ .images = gTrainerBackPicTable_RubySapphireBrendan,
.affineAnims = gUnknown_082FF618,
.callback = sub_8039BB4,
},
@@ -2380,7 +2378,7 @@ static const struct SpriteTemplate gUnknown_08329DF8[] =
.paletteTag = 0,
.oam = &gOamData_831ACB0,
.anims = NULL,
- .images = gUnknown_082FF4D8,
+ .images = gTrainerBackPicTable_RubySapphireMay,
.affineAnims = gUnknown_082FF618,
.callback = sub_8039BB4,
},
@@ -2389,7 +2387,7 @@ static const struct SpriteTemplate gUnknown_08329DF8[] =
.paletteTag = 0,
.oam = &gOamData_831ACB0,
.anims = NULL,
- .images = gUnknown_082FF4F8,
+ .images = gTrainerBackPicTable_Wally,
.affineAnims = gUnknown_082FF618,
.callback = sub_8039BB4,
},
@@ -2398,7 +2396,7 @@ static const struct SpriteTemplate gUnknown_08329DF8[] =
.paletteTag = 0,
.oam = &gOamData_831ACB0,
.anims = NULL,
- .images = gUnknown_082FF518,
+ .images = gTrainerBackPicTable_Steven,
.affineAnims = gUnknown_082FF618,
.callback = sub_8039BB4,
},
@@ -2464,10 +2462,10 @@ static const struct OamData sOamData_8329F20 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -3817,7 +3815,7 @@ void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosit
gMultiuseSpriteTemplate.paletteTag = trainerSpriteId;
if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
{
- gMultiuseSpriteTemplate = gUnknown_08329DF8[trainerSpriteId];
+ gMultiuseSpriteTemplate = gSpriteTemplateTable_TrainerBackSprites[trainerSpriteId];
gMultiuseSpriteTemplate.anims = gTrainerBackAnimsPtrTable[trainerSpriteId];
}
else
@@ -4913,19 +4911,19 @@ void GetSpeciesName(u8 *name, u16 species)
u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex)
{
u8 basePP = gBattleMoves[move].pp;
- return basePP + ((basePP * 20 * ((gUnknown_08329D22[moveIndex] & ppBonuses) >> (2 * moveIndex))) / 100);
+ return basePP + ((basePP * 20 * ((gPPUpGetMask[moveIndex] & ppBonuses) >> (2 * moveIndex))) / 100);
}
void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex)
{
u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES, NULL);
- ppBonuses &= gUnknown_08329D26[moveIndex];
+ ppBonuses &= gPPUpSetMask[moveIndex];
SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses);
}
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex)
{
- mon->ppBonuses &= gUnknown_08329D26[moveIndex];
+ mon->ppBonuses &= gPPUpSetMask[moveIndex];
}
void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex)
@@ -5168,11 +5166,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
if (r10 & 0x20)
{
r10 &= ~0x20;
- dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gUnknown_08329D22[moveIndex]) >> (moveIndex * 2);
+ dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
var_38 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
if (dataUnsigned <= 2 && var_38 > 4)
{
- dataUnsigned = GetMonData(mon, MON_DATA_PP_BONUSES, NULL) + gUnknown_08329D2A[moveIndex];
+ dataUnsigned = GetMonData(mon, MON_DATA_PP_BONUSES, NULL) + gPPUpAddMask[moveIndex];
SetMonData(mon, MON_DATA_PP_BONUSES, &dataUnsigned);
dataUnsigned = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), dataUnsigned, moveIndex) - var_38;
@@ -5428,13 +5426,13 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
var_3C++;
break;
case 4:
- dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gUnknown_08329D22[moveIndex]) >> (moveIndex * 2);
+ dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
r5 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
if (dataUnsigned < 3 && r5 > 4)
{
dataUnsigned = GetMonData(mon, MON_DATA_PP_BONUSES, NULL);
- dataUnsigned &= gUnknown_08329D26[moveIndex];
- dataUnsigned += gUnknown_08329D2A[moveIndex] * 3;
+ dataUnsigned &= gPPUpSetMask[moveIndex];
+ dataUnsigned += gPPUpAddMask[moveIndex] * 3;
SetMonData(mon, MON_DATA_PP_BONUSES, &dataUnsigned);
dataUnsigned = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), dataUnsigned, moveIndex) - r5;
@@ -6080,7 +6078,7 @@ s32 GetBattlerMultiplayerId(u16 a1)
u8 GetTrainerEncounterMusicId(u16 trainerOpponentId)
{
if (InBattlePyramid())
- return GetTrainerEncounterMusicIdInBattlePyramind(trainerOpponentId);
+ return GetBattlePyramindTrainerEncounterMusicId(trainerOpponentId);
else if (sub_81D5C18())
return GetTrainerEncounterMusicIdInTrainerHill(trainerOpponentId);
else
@@ -6848,7 +6846,7 @@ void SetWildMonHeldItem(void)
var1 = 20;
var2 = 80;
}
- if (gMapHeader.mapLayoutId == 0x1A4)
+ if (gMapHeader.mapLayoutId == LAYOUT_ALTERING_CAVE)
{
s32 alteringCaveId = GetWildMonTableIdInAlteringCave(species);
if (alteringCaveId != 0)
@@ -7024,7 +7022,7 @@ void PokemonSummaryDoMonAnimation(struct Sprite* sprite, u16 species, bool8 oneF
}
}
-void sub_806EE98(void)
+void StopPokemonAnimationDelayTask(void)
{
u8 delayTaskId = FindTaskIdByFunc(Task_PokemonSummaryAnimateAfterDelay);
if (delayTaskId != 0xFF)
diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c
index ecb8f4950..4ff182a0e 100644
--- a/src/pokemon_icon.c
+++ b/src/pokemon_icon.c
@@ -931,10 +931,10 @@ const struct OamData sMonIconOamData =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index b0e14d2b1..98d83d8ce 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "event_data.h"
+#include "pokedex.h"
#include "pokemon.h"
#include "pokemon_size_record.h"
#include "string_util.h"
@@ -15,9 +16,6 @@ struct UnknownStruct
u16 unk4;
};
-extern u16 GetPokedexHeightWeight(u16 dexNo, bool8 height);
-extern u16 SpeciesToNationalPokedexNum(u16 species);
-
static const struct UnknownStruct sBigMonSizeTable[] =
{
{ 290, 1, 0 },
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 78fec2fc5..30f5af14c 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -969,10 +969,10 @@ static const struct OamData sOamData_857286C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -986,10 +986,10 @@ static const struct OamData sOamData_8572874 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(16x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(16x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -1062,10 +1062,10 @@ static const struct OamData sOamData_85728EC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -1218,7 +1218,7 @@ static const u16 gWallpaperPalettes_Plain[][16] =
static const u32 gWallpaperTiles_Plain[] = INCBIN_U32("graphics/pokemon_storage/plain.4bpp.lz");
static const u32 gWallpaperTilemap_Plain[] = INCBIN_U32("graphics/pokemon_storage/plain.bin.lz");
-// 12×18 tilemap
+// 12x18 tilemap
static const u32 gUnknown_085773C4[] = INCBIN_U32("graphics/unused/tilemap_5773C4.bin");
static const u16 gUnknown_08577574[][2] =
@@ -1467,8 +1467,8 @@ static const struct SpriteSheet gUnknown_0857B080 = {gPCGfx_Arrow, 0x80, 6};
static const struct OamData gOamData_83BB298 =
{
- .shape = ST_OAM_H_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16),
.priority = 2
};
@@ -1503,7 +1503,8 @@ static const struct SpriteTemplate gSpriteTemplate_857B0A8 =
static const struct OamData gOamData_83BB2D0 =
{
- .shape = ST_OAM_V_RECTANGLE,
+ .shape = SPRITE_SHAPE(8x16),
+ .size = SPRITE_SIZE(8x16),
.priority = 2
};
@@ -1552,7 +1553,7 @@ void sub_80C6D80(const u8 *string, void *dst, u8 arg2, u8 arg3, s32 arg4)
winTemplate.width = 24;
winTemplate.height = 2;
windowId = AddWindow(&winTemplate);
- FillWindowPixelBuffer(windowId, (arg3 << 4) | arg3);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(arg3));
tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA);
tileData2 = (winTemplate.width * 32) + tileData1;
@@ -1599,7 +1600,7 @@ void sub_80C6EAC(const u8 *string, void *dst, u16 arg2, u8 arg3, u8 clr2, u8 clr
winTemplate.height = 2;
var = winTemplate.width * 32;
windowId = AddWindow(&winTemplate);
- FillWindowPixelBuffer(windowId, (arg3 << 4) | arg3);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(arg3));
tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA);
tileData2 = (winTemplate.width * 32) + tileData1;
txtColor[0] = arg3;
@@ -1736,8 +1737,8 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
case 0:
CreatePCMenu(task->data[1], &task->data[15]);
sub_81973A4();
- NewMenuHelpers_DrawDialogueFrame(0, 0);
- FillWindowPixelBuffer(0, 0x11);
+ DrawDialogueFrame(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, TEXT_SPEED_FF, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
CopyWindowToVram(task->data[15], 3);
@@ -1753,7 +1754,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
task->data[2] = Menu_ProcessInput();
switch(task->data[2])
{
- case -2:
+ case MENU_NOTHING_CHOSEN:
task->data[3] = task->data[1];
if (gMain.newKeys & DPAD_UP && --task->data[3] < 0)
task->data[3] = 4;
@@ -1763,13 +1764,13 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
if (task->data[1] != task->data[3])
{
task->data[1] = task->data[3];
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
}
break;
- case -1:
+ case MENU_B_PRESSED:
case 4:
- sub_819746C(task->data[15], TRUE);
+ ClearStdWindowAndFrame(task->data[15], TRUE);
ScriptContext2_Disable();
EnableBothScriptContexts();
RemoveWindow(task->data[15]);
@@ -1778,13 +1779,13 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
default:
if (task->data[2] == 0 && CountPartyMons() == PARTY_SIZE)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gText_PartyFull, 0, NULL, 2, 1, 3);
task->data[0] = 3;
}
else if (task->data[2] == 1 && CountPartyMons() == 1)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gText_JustOnePkmn, 0, NULL, 2, 1, 3);
task->data[0] = 3;
}
@@ -1799,7 +1800,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
case 3:
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
task->data[0] = 2;
}
@@ -1809,7 +1810,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
task->data[1] = 4;
Menu_MoveCursor(-1);
task->data[1] = Menu_GetCursorPos();
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
task->data[0] = 2;
}
@@ -1819,7 +1820,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
task->data[1] = 0;
Menu_MoveCursor(1);
task->data[1] = Menu_GetCursorPos();
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
task->data[0] = 2;
}
@@ -1865,7 +1866,7 @@ static void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr)
winTemplate.width = GetMaxWidthInMenuTable((void *)gUnknown_085716C0, ARRAY_COUNT(gUnknown_085716C0));
windowId = AddWindow(&winTemplate);
- NewMenuHelpers_DrawStdWindowFrame(windowId, FALSE);
+ DrawStdWindowFrame(windowId, FALSE);
PrintMenuTable(windowId, ARRAY_COUNT(gUnknown_085716C0), (void *)gUnknown_085716C0);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, ARRAY_COUNT(gUnknown_085716C0), whichMenu);
*windowIdPtr = windowId;
@@ -2004,7 +2005,7 @@ static void sub_80C7958(u8 curBox)
u8 spriteId;
struct SpriteTemplate template;
struct OamData oamData = {};
- oamData.size = 3;
+ oamData.size = SPRITE_SIZE(64x64);
oamData.paletteNum = 1;
template = (struct SpriteTemplate){
0, 0, &oamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
@@ -2017,8 +2018,8 @@ static void sub_80C7958(u8 curBox)
spriteId = CreateSprite(&template, 160, 96, 0);
gUnknown_02039D04->unk_0000 = gSprites + spriteId;
- oamData.shape = ST_OAM_V_RECTANGLE;
- oamData.size = 1;
+ oamData.shape = SPRITE_SHAPE(8x32);
+ oamData.size = SPRITE_SIZE(8x32);
template.tileTag = gUnknown_02039D04->unk_0240 + 1;
template.anims = sSpriteAnimTable_8571710;
for (i = 0; i < 4; i++)
@@ -2103,7 +2104,7 @@ static void sub_80C7BE4(void)
winTemplate.height = 4;
windowId = AddWindow(&winTemplate);
- FillWindowPixelBuffer(windowId, 0x44);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(4));
center = GetStringCenterAlignXOffset(1, boxName, 64);
AddTextPrinterParameterized3(windowId, 1, center, 1, gUnknown_08571734, TEXT_SPEED_FF, boxName);
@@ -3927,7 +3928,7 @@ static void SetScrollingBackground(void)
{
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(31));
DecompressAndLoadBgGfxUsingHeap(3, gPokemonStorageScrollingBGTileset, 0, 0, 0);
- LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, (void *)VRAM + 0xF800);
+ LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, (void *)BG_SCREEN_ADDR(31));
}
static void ScrollBackground(void)
@@ -4107,7 +4108,7 @@ static void LoadCursorMonGfx(u16 species, u32 pid)
static void PrintCursorMonInfo(void)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
{
AddTextPrinterParameterized(0, 1, sPSSData->cursorMonNickText, 6, 0, TEXT_SPEED_FF, NULL);
@@ -4416,7 +4417,7 @@ static void PrintStorageActionText(u8 id)
}
DynamicPlaceholderTextUtil_ExpandPlaceholders(sPSSData->field_2190, gPCStorageActionTexts[id].text);
- FillWindowPixelBuffer(1, 0x11);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
AddTextPrinterParameterized(1, 1, sPSSData->field_2190, 0, 1, TEXT_SPEED_FF, NULL);
sub_8098858(1, 2, 14);
PutWindowTilemap(1);
@@ -4432,7 +4433,7 @@ static void ShowYesNoWindow(s8 cursorPos)
static void ClearBottomWindow(void)
{
- sub_8198070(1, FALSE);
+ ClearStdWindowAndFrameToTransparent(1, FALSE);
schedule_bg_copy_tilemap_to_vram(0);
}
@@ -6501,7 +6502,7 @@ static void InitCanRelaseMonVars(void)
}
sub_80CE350(sPSSData->field_2176);
- sPSSData->field_2174 = GetMonData(&sPSSData->field_2108, MON_DATA_KNOWN_MOVES, sPSSData->field_2176);
+ sPSSData->field_2174 = GetMonData(&sPSSData->field_2108, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176);
if (sPSSData->field_2174 != 0)
{
sPSSData->field_216D = 0;
@@ -6559,7 +6560,7 @@ static s8 RunCanReleaseMon(void)
{
if (sPSSData->field_2170 != TOTAL_BOXES_COUNT || sPSSData->field_2171 != i)
{
- knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, sPSSData->field_2176);
+ knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176);
sPSSData->field_2174 &= ~(knownMoves);
}
}
@@ -6578,7 +6579,7 @@ static s8 RunCanReleaseMon(void)
case 1:
for (i = 0; i < IN_BOX_COUNT; i++)
{
- knownMoves = GetAndCopyBoxMonDataAt(sPSSData->field_216E, sPSSData->field_216F, MON_DATA_KNOWN_MOVES, sPSSData->field_2176);
+ knownMoves = GetAndCopyBoxMonDataAt(sPSSData->field_216E, sPSSData->field_216F, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176);
if (knownMoves != 0
&& !(sPSSData->field_2170 == sPSSData->field_216E && sPSSData->field_2171 == sPSSData->field_216F))
{
@@ -6654,7 +6655,7 @@ static void sub_80CE8E4(void)
if (sIsMonBeingMoved)
sub_80CE790();
else
- sBoxCursorPosition = gUnknown_0203CF20;
+ sBoxCursorPosition = gLastViewedMonIndex;
}
s16 CompactPartySlots(void)
@@ -8490,12 +8491,14 @@ static void sub_80CFC14(void)
static const struct OamData sOamData_857BA0C =
{
- .size = 2,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 1,
};
static const struct OamData sOamData_857BA14 =
{
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 1,
};
@@ -8733,7 +8736,7 @@ static void AddMenu(void)
sPSSData->menuWindow.tilemapTop = 15 - sPSSData->menuWindow.height;
sPSSData->field_CB0 = AddWindow(&sPSSData->menuWindow);
ClearWindowTilemap(sPSSData->field_CB0);
- SetWindowBorderStyle(sPSSData->field_CB0, FALSE, 11, 14);
+ DrawStdFrameWithCustomTileAndPalette(sPSSData->field_CB0, FALSE, 11, 14);
PrintMenuTable(sPSSData->field_CB0, sPSSData->menuItemsCount, (void*)sPSSData->menuItems);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sPSSData->field_CB0, sPSSData->menuItemsCount, 0);
schedule_bg_copy_tilemap_to_vram(0);
@@ -8787,7 +8790,7 @@ static s16 sub_80D00AC(void)
static void sub_80D013C(void)
{
- sub_8198070(sPSSData->field_CB0, TRUE);
+ ClearStdWindowAndFrameToTransparent(sPSSData->field_CB0, TRUE);
RemoveWindow(sPSSData->field_CB0);
}
@@ -8835,7 +8838,7 @@ static bool8 sub_80D0164(void)
sPSSData->field_2200 = AddWindow8Bit(&gUnknown_0857BB1C);
if (sPSSData->field_2200 != 0xFF)
{
- FillWindowPixelBuffer(sPSSData->field_2200, 0);
+ FillWindowPixelBuffer(sPSSData->field_2200, PIXEL_FILL(0));
return TRUE;
}
}
@@ -8892,7 +8895,7 @@ static bool8 sub_80D024C(void)
ChangeBgX(0, -1024, 0);
ChangeBgY(0, -1024, 0);
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
- FillWindowPixelBuffer8Bit(sPSSData->field_2200, 0);
+ FillWindowPixelBuffer8Bit(sPSSData->field_2200, PIXEL_FILL(0));
sub_80D07B0(sMoveMonsPtr->fromRow, sMoveMonsPtr->fromColumn);
SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1);
PutWindowTilemap(sPSSData->field_2200);
@@ -9194,7 +9197,7 @@ static void sub_80D0834(u8 arg0, u8 arg1)
if (species != SPECIES_NONE)
{
FillWindowPixelRect8Bit(sPSSData->field_2200,
- 0,
+ PIXEL_FILL(0),
24 * arg0,
24 * arg1,
32,
@@ -9358,10 +9361,10 @@ static const struct OamData sOamData_857BBA4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -9911,7 +9914,7 @@ static void PrintItemDescription(void)
else
description = ItemId_GetDescription(sPSSData->cursorMonItem);
- FillWindowPixelBuffer(2, 0x11);
+ FillWindowPixelBuffer(2, PIXEL_FILL(1));
AddTextPrinterParameterized5(2, 1, description, 4, 0, 0, NULL, 0, 1);
}
@@ -10357,7 +10360,7 @@ bool32 AnyStorageMonWithMove(u16 moveId)
{
if (GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_HAS_SPECIES)
&& !GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_IS_EGG)
- && GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_KNOWN_MOVES, moves))
+ && GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_KNOWN_MOVES, (u8*)moves))
return TRUE;
}
}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 14bfba4ad..3a5b06d45 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -43,10 +43,62 @@
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/region_map_sections.h"
+#include "constants/rgb.h"
#include "constants/songs.h"
#include "constants/species.h"
-static EWRAM_DATA struct UnkSummaryStruct
+// Screen titles (upper left)
+#define PSS_LABEL_WINDOW_POKEMON_INFO_TITLE 0
+#define PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE 1
+#define PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE 2
+#define PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE 3
+
+// Button control text (upper right)
+#define PSS_LABEL_WINDOW_PROMPT_CANCEL 4
+#define PSS_LABEL_WINDOW_PROMPT_INFO 5
+#define PSS_LABEL_WINDOW_PROMPT_SWITCH 6
+#define PSS_LABEL_WINDOW_UNUSED1 7
+
+// Info screen
+#define PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL 8
+#define PSS_LABEL_WINDOW_POKEMON_INFO_TYPE 9
+
+// Skills screen
+#define PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT 10 // HP, Attack, Defense
+#define PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT 11 // Sp. Attack, Sp. Defense, Speed
+#define PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP 12 // EXP, Next Level
+#define PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS 13
+
+// Moves screen
+#define PSS_LABEL_WINDOW_MOVES_POWER_ACC 14 // Also contains the power and accuracy values
+#define PSS_LABEL_WINDOW_MOVES_APPEAL_JAM 15
+#define PSS_LABEL_WINDOW_UNUSED2 16
+
+// Above/below the pokemon's portrait (left)
+#define PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER 17
+#define PSS_LABEL_WINDOW_PORTRAIT_NICKNAME 18 // The upper name
+#define PSS_LABEL_WINDOW_PORTRAIT_SPECIES 19 // The lower name
+#define PSS_LABEL_WINDOW_END 20
+
+// Dynamic fields for the Pokemon Info page
+#define PSS_DATA_WINDOW_INFO_ORIGINAL_TRAINER 0
+#define PSS_DATA_WINDOW_INFO_ID 1
+#define PSS_DATA_WINDOW_INFO_ABILITY 2
+#define PSS_DATA_WINDOW_INFO_MEMO 3
+
+// Dynamic fields for the Pokemon Skills page
+#define PSS_DATA_WINDOW_SKILLS_HELD_ITEM 0
+#define PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT 1
+#define PSS_DATA_WINDOW_SKILLS_STATS_LEFT 2 // HP, Attack, Defense
+#define PSS_DATA_WINDOW_SKILLS_STATS_RIGHT 3 // Sp. Attack, Sp. Defense, Speed
+#define PSS_DATA_WINDOW_EXP 4 // Exp, next level
+
+// Dynamic fields for the Battle Moves and Contest Moves pages.
+#define PSS_DATA_WINDOW_MOVE_NAMES 0
+#define PSS_DATA_WINDOW_MOVE_PP 1
+#define PSS_DATA_WINDOW_MOVE_DESCRIPTION 2
+
+static EWRAM_DATA struct PokemonSummaryScreenData
{
/*0x00*/ union {
struct Pokemon *mons;
@@ -62,7 +114,7 @@ static EWRAM_DATA struct UnkSummaryStruct
u8 isEgg; // 0x4
u8 level; // 0x5
u8 ribbonCount; // 0x6
- u8 unk7; // 0x7
+ u8 ailment; // 0x7
u8 altAbility; // 0x8
u8 metLocation; // 0x9
u8 metLevel; // 0xA
@@ -96,25 +148,22 @@ static EWRAM_DATA struct UnkSummaryStruct
u8 currPageIndex;
u8 minPageIndex;
u8 maxPageIndex;
- bool8 unk40C3;
+ bool8 lockMonFlag; // This is used to prevent the player from changing pokemon in the move deleter select, etc, but it is not needed because the input is handled differently there
u16 newMove;
u8 firstMoveIndex;
u8 secondMoveIndex;
bool8 unk40C8;
- u8 unk40C9;
+ u8 bgDisplayOrder; // Determines the order page backgrounds are loaded while scrolling between them
u8 filler40CA;
u8 windowIds[8];
u8 spriteIds[28];
bool8 unk40EF;
- s16 unk40F0;
+ s16 switchCounter; // Used for various switch statement cases that decompress/load graphics or pokemon data
u8 unk_filler4[6];
-} *pssData = NULL;
-EWRAM_DATA u8 gUnknown_0203CF20 = 0;
-static EWRAM_DATA u8 gUnknown_0203CF21 = 0;
-static EWRAM_DATA u8 gFiller_0203CF22[2] = {0};
-static EWRAM_DATA u8 sUnknownTaskId = 0;
-static EWRAM_DATA u8 gFiller_0203CF25[3] = {0};
-
+} *sMonSummaryScreen = NULL;
+EWRAM_DATA u8 gLastViewedMonIndex = 0;
+static EWRAM_DATA u8 sUnknown_0203CF21 = 0;
+ALIGNED(4) static EWRAM_DATA u8 sUnknownTaskId = 0;
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
struct UnkStruct_61CC04
@@ -135,21 +184,21 @@ static bool8 SummaryScreen_DecompressGraphics(void);
static void CopyMonToSummaryStruct(struct Pokemon* a);
static bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a);
static void sub_81C0348(void);
-static void sub_81C0484(u8 taskId);
-static void sub_81C0510(u8 taskId);
-static void sub_81C0604(u8 taskId, s8 a);
+static void CloseSummaryScreen(u8 taskId);
+static void HandleInput(u8 taskId);
+static void ChangeSummaryPokemon(u8 taskId, s8 a);
static void sub_81C0704(u8 taskId);
static s8 sub_81C08F8(s8 a);
static s8 sub_81C09B4(s8 a);
static bool8 sub_81C0A50(struct Pokemon* mon);
-static void sub_81C0A8C(u8 taskId, s8 a);
-static void sub_81C0B8C(u8 taskId);
-static void sub_81C0C68(u8 taskId);
-static void sub_81C0CC4(u8 taskId);
-static void sub_81C0D44(u8 taskId);
-static void sub_81C0E24(void);
+static void ChangePage(u8 taskId, s8 a);
+static void PssScrollRight(u8 taskId);
+static void PssScrollRightEnd(u8 taskId);
+static void PssScrollLeft(u8 taskId);
+static void PssScrollLeftEnd(u8 taskId);
+static void CheckExperienceProgressBar(void);
static void sub_81C0E48(u8 taskId);
-static void sub_81C0F44(u8 taskId);
+static void HandleInput_MoveSelect(u8 taskId);
static bool8 sub_81C1040(void);
static void sub_81C1070(s16* a, s8 b, u8* c);
static void sub_81C11F4(u8 a);
@@ -159,11 +208,11 @@ static void sub_81C13B0(u8 taskId, bool8 b);
static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2);
static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2);
static void sub_81C171C(u8 taskId);
-static void sub_81C174C(u8 taskId);
-static bool8 sub_81C18A8(void);
-static void sub_81C18F4(u8 a);
-static void sub_81C1940(u8 taskId);
-static void sub_81C1BA0(void);
+static void HandleReplaceMoveInput(u8 taskId);
+static bool8 CanReplaceMove(void);
+static void ShowHMMovesCantBeForgottenWindow(u8 a);
+static void HandleHMMovesCantBeForgottenInput(u8 taskId);
+static void DrawPagination(void);
static void sub_81C1DA4(u16 a, s16 b);
static void sub_81C1E20(u8 taskId);
static void sub_81C1EFC(u16 a, s16 b, u16 c);
@@ -171,23 +220,23 @@ static void sub_81C1F80(u8 taskId);
static void sub_81C2074(u16 a, s16 b);
static void sub_81C20F0(u8 taskId);
static void sub_81C2194(u16 *a, u16 b, u8 c);
-static void sub_81C2228(struct Pokemon* mon);
+static void DrawPokerusCuredSymbol(struct Pokemon* mon);
static void DrawExperienceProgressBar(struct Pokemon* mon);
-static void sub_81C240C(u16 a);
-static void sub_81C2524(void);
-static void sub_81C2554(void);
+static void DrawContestMoveHearts(u16 move);
+static void LimitEggSummaryPageDisplay(void);
+static void ResetWindows(void);
static void sub_81C25E8(void);
static void sub_81C2628(void);
static void sub_81C2794(void);
static void sub_81C27DC(struct Pokemon *mon, u16 a);
static void PrintPageNamesAndStatsPageToWindows(void);
-static void sub_81C2AFC(u8 a);
-static void sub_81C2C38(u8 a);
+static void CreatePageWindowTilemaps(u8 a);
+static void ClearPageWindowTilemaps(u8 a);
static void SummaryScreen_RemoveWindowByIndex(u8 a);
-static void sub_81C2D9C(u8 a);
-static void sub_81C2DE4(u8 a);
-static void sub_81C2E00(void);
-static void sub_81C2E40(u8 taskId);
+static void PrintPageSpecificText(u8 a);
+static void CreateTextPrinterTask(u8 a);
+static void PrintInfoPageText(void);
+static void Task_PrintInfoPage(u8 taskId);
static void PrintMonOTName(void);
static void PrintMonOTID(void);
static void PrintMonAbilityName(void);
@@ -203,40 +252,40 @@ static void PrintEggOTName(void);
static void PrintEggOTID(void);
static void PrintEggState(void);
static void PrintEggMemo(void);
-static void sub_81C3554(u8 taskId);
+static void Task_PrintSkillsPage(u8 taskId);
static void PrintHeldItemName(void);
-static void sub_81C3530(void);
+static void PrintSkillsPageText(void);
static void PrintRibbonCount(void);
static void BufferLeftColumnStats(void);
static void PrintLeftColumnStats(void);
static void BufferRightColumnStats(void);
static void PrintRightColumnStats(void);
static void PrintExpPointsNextLevel(void);
-static void sub_81C3984(void);
-static void sub_81C39F0(u8 taskId);
+static void PrintBattleMoves(void);
+static void Task_PrintBattleMoves(u8 taskId);
static void PrintMoveNameAndPP(u8 a);
-static void sub_81C3D08(void);
-static void sub_81C3D54(u8 taskId);
+static void PrintContestMoves(void);
+static void Task_PrintContestMoves(u8 taskId);
static void PrintContestMoveDescription(u8 a);
static void PrintMoveDetails(u16 a);
static void PrintNewMoveDetailsOrCancelText(void);
static void sub_81C4064(void);
static void sub_81C40A0(u8 a, u8 b);
static void PrintHMMovesCantBeForgotten(void);
-static void sub_81C4190(void);
-static void sub_81C4204(u8 a, u8 b);
-static void sub_81C424C(void);
-static void sub_81C4280(void);
-static void sub_81C42C8(void);
-static void sub_81C43A0(void);
-static void sub_81C4420(void);
-static void sub_81C4484(void);
-static void sub_81C44F0(void);
+static void ResetSpriteIds(void);
+static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible);
+static void HidePageSpecificSprites(void);
+static void SetTypeIcons(void);
+static void CreateMoveTypeIcons(void);
+static void SetMonTypeIcons(void);
+static void SetMoveTypeIcons(void);
+static void SetContestMoveTypeIcons(void);
+static void SetNewMoveTypeIcon(void);
static void sub_81C4568(u8 a, u8 b);
-static u8 sub_81C45F4(struct Pokemon *a, s16 *b);
+static u8 CreatePokemonSprite(struct Pokemon *a, s16 *b);
static u8 sub_81C47B4(struct Pokemon *unused);
-static void sub_81C4844(struct Sprite *);
-static void sub_81C48F0(void);
+static void SpriteCB_Pokemon(struct Sprite *);
+static void StopPokemonAnimations(void);
static void CreateMonMarkingsSprite(struct Pokemon *mon);
static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon);
static void CreateCaughtBallSprite(struct Pokemon *mon);
@@ -251,7 +300,7 @@ static void sub_81C4D18(u8 a);
#include "data/text/move_descriptions.h"
#include "data/text/nature_names.h"
-static const struct BgTemplate gUnknown_0861CBB4[] =
+ALIGNED(4) static const struct BgTemplate sUnknown_0861CBB4[] =
{
{
.bg = 0,
@@ -291,27 +340,27 @@ static const struct BgTemplate gUnknown_0861CBB4[] =
},
};
-static const u16 gUnknown_0861CBC4[] = INCBIN_U16("graphics/interface/unk_tilemap2.bin");
-static const struct UnkStruct_61CC04 gUnknown_0861CBEC =
+static const u16 sUnknown_0861CBC4[] = INCBIN_U16("graphics/interface/unk_tilemap2.bin");
+static const struct UnkStruct_61CC04 sUnknown_0861CBEC =
{
- gUnknown_0861CBC4, 1, 10, 2, 0, 18
+ sUnknown_0861CBC4, 1, 10, 2, 0, 18
};
-static const struct UnkStruct_61CC04 gUnknown_0861CBF8 =
+static const struct UnkStruct_61CC04 sUnknown_0861CBF8 =
{
- gUnknown_0861CBC4, 1, 10, 2, 0, 50
+ sUnknown_0861CBC4, 1, 10, 2, 0, 50
};
-static const struct UnkStruct_61CC04 gUnknown_0861CC04 =
+static const struct UnkStruct_61CC04 sUnknown_0861CC04 =
{
gSummaryScreenPowAcc_Tilemap, 0, 10, 7, 0, 45
};
-static const struct UnkStruct_61CC04 gUnknown_0861CC10 =
+static const struct UnkStruct_61CC04 sUnknown_0861CC10 =
{
gUnknown_08DC3C34, 0, 10, 7, 0, 45
};
static const s8 gUnknown_0861CC1C[] = {0, 2, 3, 1, 4, 5};
-static const struct WindowTemplate gUnknown_0861CC24[] =
+static const struct WindowTemplate sSummaryTemplate[] =
{
- {//Text for Pokemon Info
+ [PSS_LABEL_WINDOW_POKEMON_INFO_TITLE] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
@@ -320,7 +369,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 1,
},
- {//Text for Pokemon Skills
+ [PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
@@ -329,7 +378,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 23,
},
- {//Text for Battle Moves
+ [PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
@@ -338,7 +387,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 45,
},
- {//Text for Contest Moves
+ [PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
@@ -347,7 +396,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 67,
},
- { //Text on Pokemon Info: Button prompt: Cancel
+ [PSS_LABEL_WINDOW_PROMPT_CANCEL] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 0,
@@ -356,7 +405,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 7,
.baseBlock = 89,
},
- {//Info button found under moves
+ [PSS_LABEL_WINDOW_PROMPT_INFO] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 0,
@@ -365,7 +414,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 7,
.baseBlock = 105,
},
- {//Switch button under moves when viewing moves
+ [PSS_LABEL_WINDOW_PROMPT_SWITCH] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 0,
@@ -374,7 +423,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 7,
.baseBlock = 121,
},
- {//Unknown
+ [PSS_LABEL_WINDOW_UNUSED1] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 4,
@@ -383,7 +432,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 137,
},
- {//Unknown
+ [PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 4,
@@ -392,7 +441,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 137,
},
- {//Type on pokemon info page
+ [PSS_LABEL_WINDOW_POKEMON_INFO_TYPE] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 6,
@@ -401,7 +450,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 173,
},
- {//HP, Attack and Defense text
+ [PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT] = {
.bg = 0,
.tilemapLeft = 10,
.tilemapTop = 7,
@@ -410,7 +459,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 209,
},
- {//Sp. atk, Sp. Def and Speed texxt
+ [PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 7,
@@ -419,7 +468,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 245,
},
- {//EXP and next lvl.
+ [PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP] = {
.bg = 0,
.tilemapLeft = 10,
.tilemapTop = 14,
@@ -428,7 +477,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 275,
},
- {//Unknown
+ [PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 18,
@@ -437,7 +486,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 319,
},
- {//move text: Power, Accuracy and their numeric values.
+ [PSS_LABEL_WINDOW_MOVES_POWER_ACC] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 15,
@@ -446,7 +495,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 331,
},
- {//contest text: appeal and jam
+ [PSS_LABEL_WINDOW_MOVES_APPEAL_JAM] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 15,
@@ -455,7 +504,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 367,
},
- {//Unknown
+ [PSS_LABEL_WINDOW_UNUSED2] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 4,
@@ -464,7 +513,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 387,
},
- {//No.
+ [PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 2,
@@ -473,7 +522,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 7,
.baseBlock = 387,
},
- {//Upper name
+ [PSS_LABEL_WINDOW_PORTRAIT_NICKNAME] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 12,
@@ -482,7 +531,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 395,
},
- {//Lower name
+ [PSS_LABEL_WINDOW_PORTRAIT_SPECIES] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 14,
@@ -491,11 +540,11 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 413,
},
- DUMMY_WIN_TEMPLATE
+ [PSS_LABEL_WINDOW_END] = DUMMY_WIN_TEMPLATE
};
-static const struct WindowTemplate gUnknown_0861CCCC[] =
+static const struct WindowTemplate sPageInfoTemplate[] =
{
- {//Original Trainer
+ [PSS_DATA_WINDOW_INFO_ORIGINAL_TRAINER] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 4,
@@ -504,7 +553,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
.paletteNum = 6,
.baseBlock = 449,
},
- {//ID numbers
+ [PSS_DATA_WINDOW_INFO_ID] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 4,
@@ -513,7 +562,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
.paletteNum = 6,
.baseBlock = 471,
},
- {//Ability
+ [PSS_DATA_WINDOW_INFO_ABILITY] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 9,
@@ -522,7 +571,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
.paletteNum = 6,
.baseBlock = 485,
},
- {//Trainer Memo
+ [PSS_DATA_WINDOW_INFO_MEMO] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 14,
@@ -532,9 +581,9 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
.baseBlock = 557,
},
};
-static const struct WindowTemplate gUnknown_0861CCEC[] =
+static const struct WindowTemplate sPageSkillsTemplate[] =
{
- {//Held Item string
+ [PSS_DATA_WINDOW_SKILLS_HELD_ITEM] = {
.bg = 0,
.tilemapLeft = 10,
.tilemapTop = 4,
@@ -543,7 +592,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.paletteNum = 6,
.baseBlock = 449,
},
- {//Ribbon string
+ [PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT] = {
.bg = 0,
.tilemapLeft = 20,
.tilemapTop = 4,
@@ -552,7 +601,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.paletteNum = 6,
.baseBlock = 469,
},
- {//Stat numbers left (HP, ATK & DEF)
+ [PSS_DATA_WINDOW_SKILLS_STATS_LEFT] = {
.bg = 0,
.tilemapLeft = 16,
.tilemapTop = 7,
@@ -561,7 +610,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.paletteNum = 6,
.baseBlock = 489,
},
- {//Stat numbers right (SP.ATK, SP.DEF & SPEED)
+ [PSS_DATA_WINDOW_SKILLS_STATS_RIGHT] = {
.bg = 0,
.tilemapLeft = 27,
.tilemapTop = 7,
@@ -570,7 +619,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.paletteNum = 6,
.baseBlock = 525,
},
- {//Exp numbers
+ [PSS_DATA_WINDOW_EXP] = {
.bg = 0,
.tilemapLeft = 24,
.tilemapTop = 14,
@@ -580,9 +629,9 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.baseBlock = 543,
},
};
-static const struct WindowTemplate gUnknown_0861CD14[] =
+static const struct WindowTemplate sPageMovesTemplate[] = // This is used for both battle and contest moves
{
- {//Move names?
+ [PSS_DATA_WINDOW_MOVE_NAMES] = {
.bg = 0,
.tilemapLeft = 15,
.tilemapTop = 4,
@@ -591,7 +640,7 @@ static const struct WindowTemplate gUnknown_0861CD14[] =
.paletteNum = 6,
.baseBlock = 449,
},
- {//PP Numbers
+ [PSS_DATA_WINDOW_MOVE_PP] = {
.bg = 0,
.tilemapLeft = 24,
.tilemapTop = 4,
@@ -600,7 +649,7 @@ static const struct WindowTemplate gUnknown_0861CD14[] =
.paletteNum = 8,
.baseBlock = 539,
},
- {//Move description text
+ [PSS_DATA_WINDOW_MOVE_DESCRIPTION] = {
.bg = 0,
.tilemapLeft = 10,
.tilemapTop = 15,
@@ -626,27 +675,31 @@ static const u8 sTextColors_861CD2C[][3] =
{0, 5, 6},
{0, 7, 8}
};
-static const u8 gUnknown_0861CD53[] = INCBIN_U8("graphics/interface/summary_a_button.4bpp");
-static const u8 gUnknown_0861CDD3[] = INCBIN_U8("graphics/interface/summary_b_button.4bpp");
-static void (*const gUnknown_0861CE54[])(void) =
-{
- sub_81C2E00,
- sub_81C3530,
- sub_81C3984,
- sub_81C3D08
+
+static const u8 sSummaryAButtonBitmap[] = INCBIN_U8("graphics/interface/summary_a_button.4bpp");
+static const u8 sSummaryBButtonBitmap[] = INCBIN_U8("graphics/interface/summary_b_button.4bpp");
+
+static void (*const sTextPrinterFunctions[])(void) =
+{
+ PrintInfoPageText,
+ PrintSkillsPageText,
+ PrintBattleMoves,
+ PrintContestMoves
};
-static void (*const gUnknown_0861CE64[])(u8 taskId) =
+
+static void (*const sTextPrinterTasks[])(u8 taskId) =
{
- sub_81C2E40,
- sub_81C3554,
- sub_81C39F0,
- sub_81C3D54
+ Task_PrintInfoPage,
+ Task_PrintSkillsPage,
+ Task_PrintBattleMoves,
+ Task_PrintContestMoves
};
-static const u8 gUnknown_0861CE74[] = _("{COLOR LIGHT_RED}{SHADOW GREEN}");
-static const u8 gUnknown_0861CE7B[] = _("{COLOR WHITE}{SHADOW DARK_GREY}");
-static const u8 gUnknown_0861CE82[] = _("{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}\n{SPECIAL_F7 0x03}");
-static const u8 gUnknown_0861CE8E[] = _("{SPECIAL_F7 0x00}\n{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}");
-static const u8 gUnknown_0861CE97[] = _("{PP}{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}");
+
+static const u8 sMemoNatureTextColor[] = _("{COLOR LIGHT_RED}{SHADOW GREEN}");
+static const u8 sMemoMiscTextColor[] = _("{COLOR WHITE}{SHADOW DARK_GREY}"); // This is also affected by palettes, apparently
+static const u8 sStatsLeftColumnLayout[] = _("{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}\n{SPECIAL_F7 0x03}");
+static const u8 sStatsRightColumnLayout[] = _("{SPECIAL_F7 0x00}\n{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}");
+static const u8 sMovesPPLayout[] = _("{PP}{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}");
#define TAG_MOVE_TYPES 30002
@@ -657,10 +710,10 @@ static const struct OamData sOamData_MoveTypes =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(32x16),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x16),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -833,70 +886,70 @@ static const struct OamData gOamData_861CFF4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
.affineParam = 0,
};
-static const union AnimCmd gSpriteAnim_861CFFC[] = {
+static const union AnimCmd sSpriteAnim_861CFFC[] = {
ANIMCMD_FRAME(0, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D004[] = {
+static const union AnimCmd sSpriteAnim_861D004[] = {
ANIMCMD_FRAME(4, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D00C[] = {
+static const union AnimCmd sSpriteAnim_861D00C[] = {
ANIMCMD_FRAME(8, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D014[] = {
+static const union AnimCmd sSpriteAnim_861D014[] = {
ANIMCMD_FRAME(12, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D01C[] = {
+static const union AnimCmd sSpriteAnim_861D01C[] = {
ANIMCMD_FRAME(16, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D024[] = {
+static const union AnimCmd sSpriteAnim_861D024[] = {
ANIMCMD_FRAME(16, 0, TRUE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D02C[] = {
+static const union AnimCmd sSpriteAnim_861D02C[] = {
ANIMCMD_FRAME(20, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D034[] = {
+static const union AnimCmd sSpriteAnim_861D034[] = {
ANIMCMD_FRAME(24, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D03C[] = {
+static const union AnimCmd sSpriteAnim_861D03C[] = {
ANIMCMD_FRAME(24, 0, TRUE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D044[] = {
+static const union AnimCmd sSpriteAnim_861D044[] = {
ANIMCMD_FRAME(28, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_861D04C[] = {
- gSpriteAnim_861CFFC,
- gSpriteAnim_861D004,
- gSpriteAnim_861D00C,
- gSpriteAnim_861D014,
- gSpriteAnim_861D01C,
- gSpriteAnim_861D024,
- gSpriteAnim_861D02C,
- gSpriteAnim_861D034,
- gSpriteAnim_861D03C,
- gSpriteAnim_861D044,
+static const union AnimCmd *const sSpriteAnimTable_861D04C[] = {
+ sSpriteAnim_861CFFC,
+ sSpriteAnim_861D004,
+ sSpriteAnim_861D00C,
+ sSpriteAnim_861D014,
+ sSpriteAnim_861D01C,
+ sSpriteAnim_861D024,
+ sSpriteAnim_861D02C,
+ sSpriteAnim_861D034,
+ sSpriteAnim_861D03C,
+ sSpriteAnim_861D044,
};
-static const struct CompressedSpriteSheet gUnknown_0861D074 =
+static const struct CompressedSpriteSheet sMoveSelectorSpriteSheet =
{
- .data = gUnknown_08D97BEC,
+ .data = gMoveSelectorBitmap,
.size = 0x400,
.tag = 30000
};
@@ -910,7 +963,7 @@ static const struct SpriteTemplate gUnknown_0861D084 =
.tileTag = 30000,
.paletteTag = 30000,
.oam = &gOamData_861CFF4,
- .anims = gSpriteAnimTable_861D04C,
+ .anims = sSpriteAnimTable_861D04C,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
@@ -922,10 +975,10 @@ static const struct OamData sOamData_StatusCondition =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(32x8),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(32x8),
.tileNum = 0,
.priority = 3,
.paletteNum = 0,
@@ -968,13 +1021,13 @@ static const union AnimCmd *const sSpriteAnimTable_StatusCondition[] = {
sSpriteAnim_StatusPokerus,
sSpriteAnim_StatusFaint,
};
-static const struct CompressedSpriteSheet gUnknown_0861D0F8 =
+static const struct CompressedSpriteSheet sStatusIconsSpriteSheet =
{
.data = gStatusGfx_Icons,
.size = 0x380,
.tag = 30001
};
-static const struct CompressedSpritePalette gUnknown_0861D100 =
+static const struct CompressedSpritePalette sStatusIconsSpritePalette =
{
.data = gStatusPal_Icons,
.tag = 30001
@@ -989,43 +1042,43 @@ static const struct SpriteTemplate sSpriteTemplate_StatusCondition =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const u16 gUnknown_0861D120[] = INCBIN_U16("graphics/interface/summary_markings.gbapal");
+static const u16 sSummaryMarkingsPalette[] = INCBIN_U16("graphics/interface/summary_markings.gbapal");
// code
void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void))
{
- pssData = AllocZeroed(sizeof(*pssData));
- pssData->mode = mode;
- pssData->monList.mons = mons;
- pssData->curMonIndex = monIndex;
- pssData->maxMonIndex = maxMonIndex;
- pssData->callback = callback;
+ sMonSummaryScreen = AllocZeroed(sizeof(*sMonSummaryScreen));
+ sMonSummaryScreen->mode = mode;
+ sMonSummaryScreen->monList.mons = mons;
+ sMonSummaryScreen->curMonIndex = monIndex;
+ sMonSummaryScreen->maxMonIndex = maxMonIndex;
+ sMonSummaryScreen->callback = callback;
if (mode == PSS_MODE_BOX)
- pssData->isBoxMon = TRUE;
+ sMonSummaryScreen->isBoxMon = TRUE;
else
- pssData->isBoxMon = FALSE;
+ sMonSummaryScreen->isBoxMon = FALSE;
switch (mode)
{
case PSS_MODE_NORMAL:
case PSS_MODE_BOX:
- pssData->minPageIndex = 0;
- pssData->maxPageIndex = 3;
+ sMonSummaryScreen->minPageIndex = 0;
+ sMonSummaryScreen->maxPageIndex = 3;
break;
case PSS_MODE_UNK1:
- pssData->minPageIndex = 0;
- pssData->maxPageIndex = 3;
- pssData->unk40C8 = TRUE;
+ sMonSummaryScreen->minPageIndex = 0;
+ sMonSummaryScreen->maxPageIndex = 3;
+ sMonSummaryScreen->unk40C8 = TRUE;
break;
case PSS_MODE_SELECT_MOVE:
- pssData->minPageIndex = 2;
- pssData->maxPageIndex = 3;
- pssData->unk40C3 = TRUE;
+ sMonSummaryScreen->minPageIndex = 2;
+ sMonSummaryScreen->maxPageIndex = 3;
+ sMonSummaryScreen->lockMonFlag = TRUE;
break;
}
- pssData->currPageIndex = pssData->minPageIndex;
+ sMonSummaryScreen->currPageIndex = sMonSummaryScreen->minPageIndex;
SummaryScreen_SetUnknownTaskId(-1);
if (gMonSpritesGfxPtr == 0)
@@ -1037,13 +1090,13 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex,
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove)
{
ShowPokemonSummaryScreen(PSS_MODE_SELECT_MOVE, mons, monIndex, maxMonIndex, callback);
- pssData->newMove = newMove;
+ sMonSummaryScreen->newMove = newMove;
}
void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void))
{
ShowPokemonSummaryScreen(mode, mons, monIndex, maxMonIndex, callback);
- pssData->unk40EF = TRUE;
+ sMonSummaryScreen->unk40EF = TRUE;
}
static void SummaryScreen_MainCB2(void)
@@ -1096,7 +1149,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
break;
case 5:
InitBGs();
- pssData->unk40F0 = 0;
+ sMonSummaryScreen->switchCounter = 0;
gMain.state++;
break;
case 6:
@@ -1104,20 +1157,20 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++;
break;
case 7:
- sub_81C2554();
+ ResetWindows();
gMain.state++;
break;
case 8:
- sub_81C1BA0();
+ DrawPagination();
gMain.state++;
break;
case 9:
- CopyMonToSummaryStruct(&pssData->currentMon);
- pssData->unk40F0 = 0;
+ CopyMonToSummaryStruct(&sMonSummaryScreen->currentMon);
+ sMonSummaryScreen->switchCounter = 0;
gMain.state++;
break;
case 10:
- if (ExtractMonDataToSummaryStruct(&pssData->currentMon) != 0)
+ if (ExtractMonDataToSummaryStruct(&sMonSummaryScreen->currentMon) != 0)
gMain.state++;
break;
case 11:
@@ -1129,7 +1182,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++;
break;
case 13:
- sub_81C2D9C(pssData->currPageIndex);
+ PrintPageSpecificText(sMonSummaryScreen->currPageIndex);
gMain.state++;
break;
case 14:
@@ -1137,29 +1190,29 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++;
break;
case 15:
- sub_81C2AFC(pssData->currPageIndex);
+ CreatePageWindowTilemaps(sMonSummaryScreen->currPageIndex);
gMain.state++;
break;
case 16:
- sub_81C4190();
- sub_81C42C8();
- pssData->unk40F0 = 0;
+ ResetSpriteIds();
+ CreateMoveTypeIcons();
+ sMonSummaryScreen->switchCounter = 0;
gMain.state++;
break;
case 17:
- pssData->spriteIds[0] = sub_81C45F4(&pssData->currentMon, &pssData->unk40F0);
- if (pssData->spriteIds[0] != 0xFF)
+ sMonSummaryScreen->spriteIds[0] = CreatePokemonSprite(&sMonSummaryScreen->currentMon, &sMonSummaryScreen->switchCounter);
+ if (sMonSummaryScreen->spriteIds[0] != 0xFF)
{
- pssData->unk40F0 = 0;
+ sMonSummaryScreen->switchCounter = 0;
gMain.state++;
}
break;
case 18:
- CreateMonMarkingsSprite(&pssData->currentMon);
+ CreateMonMarkingsSprite(&sMonSummaryScreen->currentMon);
gMain.state++;
break;
case 19:
- CreateCaughtBallSprite(&pssData->currentMon);
+ CreateCaughtBallSprite(&sMonSummaryScreen->currentMon);
gMain.state++;
break;
case 20:
@@ -1167,12 +1220,12 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++;
break;
case 21:
- sub_81C4280();
+ SetTypeIcons();
gMain.state++;
break;
case 22:
- if (pssData->mode != PSS_MODE_SELECT_MOVE)
- CreateTask(sub_81C0510, 0);
+ if (sMonSummaryScreen->mode != PSS_MODE_SELECT_MOVE)
+ CreateTask(HandleInput, 0);
else
CreateTask(sub_81C171C, 0);
gMain.state++;
@@ -1182,7 +1235,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++;
break;
case 24:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
gPaletteFade.bufferTransferDisabled = 0;
gMain.state++;
break;
@@ -1197,10 +1250,10 @@ static bool8 SummaryScreen_LoadGraphics(void)
static void InitBGs(void)
{
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_0861CBB4, ARRAY_COUNT(gUnknown_0861CBB4));
- SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]);
- SetBgTilemapBuffer(2, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][0]);
- SetBgTilemapBuffer(3, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]);
+ InitBgsFromTemplates(0, sUnknown_0861CBB4, ARRAY_COUNT(sUnknown_0861CBB4));
+ SetBgTilemapBuffer(1, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]);
+ SetBgTilemapBuffer(2, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][0]);
+ SetBgTilemapBuffer(3, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0]);
ResetAllBgsCoordinates();
schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2);
@@ -1215,64 +1268,64 @@ static void InitBGs(void)
static bool8 SummaryScreen_DecompressGraphics(void)
{
- switch (pssData->unk40F0)
+ switch (sMonSummaryScreen->switchCounter)
{
case 0:
reset_temp_tile_data_buffers();
- decompress_and_copy_tile_data_to_vram(1, &gUnknown_08D97D0C, 0, 0, 0);
- pssData->unk40F0++;
+ decompress_and_copy_tile_data_to_vram(1, &gStatusScreenBitmap, 0, 0, 0);
+ sMonSummaryScreen->switchCounter++;
break;
case 1:
if (free_temp_tile_data_buffers_if_possible() != 1)
{
- LZDecompressWram(gUnknown_08D9862C, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]);
- pssData->unk40F0++;
+ LZDecompressWram(gPageInfoTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0]);
+ sMonSummaryScreen->switchCounter++;
}
break;
case 2:
- LZDecompressWram(gUnknown_08D98CC8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][1]);
- pssData->unk40F0++;
+ LZDecompressWram(gUnknown_08D98CC8, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1]);
+ sMonSummaryScreen->switchCounter++;
break;
case 3:
- LZDecompressWram(gUnknown_08D987FC, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1]);
- pssData->unk40F0++;
+ LZDecompressWram(gPageSkillsTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][1]);
+ sMonSummaryScreen->switchCounter++;
break;
case 4:
- LZDecompressWram(gUnknown_08D9898C, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]);
- pssData->unk40F0++;
+ LZDecompressWram(gPageBattleMovesTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]);
+ sMonSummaryScreen->switchCounter++;
break;
case 5:
- LZDecompressWram(gUnknown_08D98B28, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]);
- pssData->unk40F0++;
+ LZDecompressWram(gPageContestMovesTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]);
+ sMonSummaryScreen->switchCounter++;
break;
case 6:
- LoadCompressedPalette(gUnknown_08D9853C, 0, 0x100);
+ LoadCompressedPalette(gStatusScreenPalette, 0, 0x100);
LoadPalette(&gUnknown_08D85620, 0x81, 0x1E);
- pssData->unk40F0++;
+ sMonSummaryScreen->switchCounter++;
break;
case 7:
LoadCompressedSpriteSheet(&sSpriteSheet_MoveTypes);
- pssData->unk40F0++;
+ sMonSummaryScreen->switchCounter++;
break;
case 8:
- LoadCompressedSpriteSheet(&gUnknown_0861D074);
- pssData->unk40F0++;
+ LoadCompressedSpriteSheet(&sMoveSelectorSpriteSheet);
+ sMonSummaryScreen->switchCounter++;
break;
case 9:
- LoadCompressedSpriteSheet(&gUnknown_0861D0F8);
- pssData->unk40F0++;
+ LoadCompressedSpriteSheet(&sStatusIconsSpriteSheet);
+ sMonSummaryScreen->switchCounter++;
break;
case 10:
- LoadCompressedSpritePalette(&gUnknown_0861D100);
- pssData->unk40F0++;
+ LoadCompressedSpritePalette(&sStatusIconsSpritePalette);
+ sMonSummaryScreen->switchCounter++;
break;
case 11:
LoadCompressedSpritePalette(&gUnknown_0861D07C);
- pssData->unk40F0++;
+ sMonSummaryScreen->switchCounter++;
break;
case 12:
LoadCompressedPalette(gMoveTypes_Pal, 0x1D0, 0x60);
- pssData->unk40F0 = 0;
+ sMonSummaryScreen->switchCounter = 0;
return TRUE;
}
return FALSE;
@@ -1280,140 +1333,141 @@ static bool8 SummaryScreen_DecompressGraphics(void)
static void CopyMonToSummaryStruct(struct Pokemon *mon)
{
- if (!pssData->isBoxMon)
+ if (!sMonSummaryScreen->isBoxMon)
{
- struct Pokemon *partyMon = pssData->monList.mons;
- *mon = partyMon[pssData->curMonIndex];
+ struct Pokemon *partyMon = sMonSummaryScreen->monList.mons;
+ *mon = partyMon[sMonSummaryScreen->curMonIndex];
}
else
{
- struct BoxPokemon *boxMon = pssData->monList.boxMons;
- BoxMonToMon(&boxMon[pssData->curMonIndex], mon);
+ struct BoxPokemon *boxMon = sMonSummaryScreen->monList.boxMons;
+ BoxMonToMon(&boxMon[sMonSummaryScreen->curMonIndex], mon);
}
}
-static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a)
+static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *mon)
{
u32 i;
- struct PokeSummary *sum = &pssData->summary;
- switch (pssData->unk40F0)
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
+ // Spread the data extraction over multiple frames.
+ switch (sMonSummaryScreen->switchCounter)
{
case 0:
- sum->species = GetMonData(a, MON_DATA_SPECIES);
- sum->species2 = GetMonData(a, MON_DATA_SPECIES2);
- sum->exp = GetMonData(a, MON_DATA_EXP);
- sum->level = GetMonData(a, MON_DATA_LEVEL);
- sum->altAbility = GetMonData(a, MON_DATA_ALT_ABILITY);
- sum->item = GetMonData(a, MON_DATA_HELD_ITEM);
- sum->pid = GetMonData(a, MON_DATA_PERSONALITY);
- sum->sanity = GetMonData(a, MON_DATA_SANITY_IS_BAD_EGG);
+ sum->species = GetMonData(mon, MON_DATA_SPECIES);
+ sum->species2 = GetMonData(mon, MON_DATA_SPECIES2);
+ sum->exp = GetMonData(mon, MON_DATA_EXP);
+ sum->level = GetMonData(mon, MON_DATA_LEVEL);
+ sum->altAbility = GetMonData(mon, MON_DATA_ALT_ABILITY);
+ sum->item = GetMonData(mon, MON_DATA_HELD_ITEM);
+ sum->pid = GetMonData(mon, MON_DATA_PERSONALITY);
+ sum->sanity = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG);
if (sum->sanity)
sum->isEgg = TRUE;
else
- sum->isEgg = GetMonData(a, MON_DATA_IS_EGG);
+ sum->isEgg = GetMonData(mon, MON_DATA_IS_EGG);
break;
case 1:
for (i = 0; i < MAX_MON_MOVES; i++)
{
- sum->moves[i] = GetMonData(a, MON_DATA_MOVE1+i);
- sum->pp[i] = GetMonData(a, MON_DATA_PP1+i);
+ sum->moves[i] = GetMonData(mon, MON_DATA_MOVE1+i);
+ sum->pp[i] = GetMonData(mon, MON_DATA_PP1+i);
}
- sum->ppBonuses = GetMonData(a, MON_DATA_PP_BONUSES);
+ sum->ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
break;
case 2:
- if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_BOX || pssData->unk40EF == TRUE)
+ if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
{
- sum->nature = GetNature(a);
- sum->currentHP = GetMonData(a, MON_DATA_HP);
- sum->maxHP = GetMonData(a, MON_DATA_MAX_HP);
- sum->atk = GetMonData(a, MON_DATA_ATK);
- sum->def = GetMonData(a, MON_DATA_DEF);
- sum->spatk = GetMonData(a, MON_DATA_SPATK);
- sum->spdef = GetMonData(a, MON_DATA_SPDEF);
- sum->speed = GetMonData(a, MON_DATA_SPEED);
+ sum->nature = GetNature(mon);
+ sum->currentHP = GetMonData(mon, MON_DATA_HP);
+ sum->maxHP = GetMonData(mon, MON_DATA_MAX_HP);
+ sum->atk = GetMonData(mon, MON_DATA_ATK);
+ sum->def = GetMonData(mon, MON_DATA_DEF);
+ sum->spatk = GetMonData(mon, MON_DATA_SPATK);
+ sum->spdef = GetMonData(mon, MON_DATA_SPDEF);
+ sum->speed = GetMonData(mon, MON_DATA_SPEED);
}
else
{
- sum->nature = GetNature(a);
- sum->currentHP = GetMonData(a, MON_DATA_HP);
- sum->maxHP = GetMonData(a, MON_DATA_MAX_HP);
- sum->atk = GetMonData(a, MON_DATA_ATK2);
- sum->def = GetMonData(a, MON_DATA_DEF2);
- sum->spatk = GetMonData(a, MON_DATA_SPATK2);
- sum->spdef = GetMonData(a, MON_DATA_SPDEF2);
- sum->speed = GetMonData(a, MON_DATA_SPEED2);
+ sum->nature = GetNature(mon);
+ sum->currentHP = GetMonData(mon, MON_DATA_HP);
+ sum->maxHP = GetMonData(mon, MON_DATA_MAX_HP);
+ sum->atk = GetMonData(mon, MON_DATA_ATK2);
+ sum->def = GetMonData(mon, MON_DATA_DEF2);
+ sum->spatk = GetMonData(mon, MON_DATA_SPATK2);
+ sum->spdef = GetMonData(mon, MON_DATA_SPDEF2);
+ sum->speed = GetMonData(mon, MON_DATA_SPEED2);
}
break;
case 3:
- GetMonData(a, MON_DATA_OT_NAME, &sum->OTName);
- ConvertInternationalString((u8*)&sum->OTName, GetMonData(a, MON_DATA_LANGUAGE));
- sum->unk7 = sub_81B205C(a);
- sum->OTGender = GetMonData(a, MON_DATA_OT_GENDER);
- sum->OTID = GetMonData(a, MON_DATA_OT_ID);
- sum->metLocation = GetMonData(a, MON_DATA_MET_LOCATION);
- sum->metLevel = GetMonData(a, MON_DATA_MET_LEVEL);
- sum->metGame = GetMonData(a, MON_DATA_MET_GAME);
- sum->friendship = GetMonData(a, MON_DATA_FRIENDSHIP);
+ GetMonData(mon, MON_DATA_OT_NAME, sum->OTName);
+ ConvertInternationalString((u8*)&sum->OTName, GetMonData(mon, MON_DATA_LANGUAGE));
+ sum->ailment = GetMonAilment(mon);
+ sum->OTGender = GetMonData(mon, MON_DATA_OT_GENDER);
+ sum->OTID = GetMonData(mon, MON_DATA_OT_ID);
+ sum->metLocation = GetMonData(mon, MON_DATA_MET_LOCATION);
+ sum->metLevel = GetMonData(mon, MON_DATA_MET_LEVEL);
+ sum->metGame = GetMonData(mon, MON_DATA_MET_GAME);
+ sum->friendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
break;
default:
- sum->ribbonCount = GetMonData(a, MON_DATA_RIBBON_COUNT);
+ sum->ribbonCount = GetMonData(mon, MON_DATA_RIBBON_COUNT);
return TRUE;
}
- pssData->unk40F0++;
+ sMonSummaryScreen->switchCounter++;
return FALSE;
}
static void sub_81C0348(void)
{
- if (pssData->currPageIndex != PSS_PAGE_BATTLE_MOVES && pssData->currPageIndex != PSS_PAGE_CONTEST_MOVES)
+ if (sMonSummaryScreen->currPageIndex != PSS_PAGE_BATTLE_MOVES && sMonSummaryScreen->currPageIndex != PSS_PAGE_CONTEST_MOVES)
{
sub_81C1DA4(0, 255);
sub_81C1EFC(0, 255, 0);
}
else
{
- sub_81C240C(pssData->summary.moves[pssData->firstMoveIndex]);
- sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0);
- sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0);
- SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]);
- SetBgTilemapBuffer(2, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]);
+ DrawContestMoveHearts(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]);
+ sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0);
+ sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0);
+ SetBgTilemapBuffer(1, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]);
+ SetBgTilemapBuffer(2, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]);
ChangeBgX(2, 0x10000, 1);
- ClearWindowTilemap(19);
- ClearWindowTilemap(13);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
}
- if (pssData->summary.unk7 == 0)
+ if (sMonSummaryScreen->summary.ailment == AILMENT_NONE)
{
sub_81C2074(0, 0xFF);
}
else
{
- if (pssData->currPageIndex != PSS_PAGE_BATTLE_MOVES && pssData->currPageIndex != PSS_PAGE_CONTEST_MOVES)
- PutWindowTilemap(13);
+ if (sMonSummaryScreen->currPageIndex != PSS_PAGE_BATTLE_MOVES && sMonSummaryScreen->currPageIndex != PSS_PAGE_CONTEST_MOVES)
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
}
- sub_81C2524();
- sub_81C2228(&pssData->currentMon);
+ LimitEggSummaryPageDisplay();
+ DrawPokerusCuredSymbol(&sMonSummaryScreen->currentMon);
}
static void sub_81C0434(void)
{
FreeAllWindowBuffers();
- Free(pssData);
+ Free(sMonSummaryScreen);
}
-static void sub_81C044C(u8 taskId)
+static void BeginCloseSummaryScreen(u8 taskId)
{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gTasks[taskId].func = sub_81C0484;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = CloseSummaryScreen;
}
-static void sub_81C0484(u8 taskId)
+static void CloseSummaryScreen(u8 taskId)
{
if (sub_81221EC() != TRUE && !gPaletteFade.active)
{
- SetMainCallback2(pssData->callback);
- gUnknown_0203CF20 = pssData->curMonIndex;
+ SetMainCallback2(sMonSummaryScreen->callback);
+ gLastViewedMonIndex = sMonSummaryScreen->curMonIndex;
SummaryScreen_DestroyUnknownTask();
ResetSpriteData();
FreeAllSpritePalettes();
@@ -1426,35 +1480,35 @@ static void sub_81C0484(u8 taskId)
}
}
-static void sub_81C0510(u8 taskId)
+static void HandleInput(u8 taskId)
{
if (sub_81221EC() != TRUE && !gPaletteFade.active)
{
if (gMain.newKeys & DPAD_UP)
{
- sub_81C0604(taskId, -1);
+ ChangeSummaryPokemon(taskId, -1);
}
else if (gMain.newKeys & DPAD_DOWN)
{
- sub_81C0604(taskId, 1);
+ ChangeSummaryPokemon(taskId, 1);
}
else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1)
{
- sub_81C0A8C(taskId, -1);
+ ChangePage(taskId, -1);
}
else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysState() == 2)
{
- sub_81C0A8C(taskId, 1);
+ ChangePage(taskId, 1);
}
else if (gMain.newKeys & A_BUTTON)
{
- if (pssData->currPageIndex != PSS_PAGE_SKILLS)
+ if (sMonSummaryScreen->currPageIndex != PSS_PAGE_SKILLS)
{
- if (pssData->currPageIndex == PSS_PAGE_INFO)
+ if (sMonSummaryScreen->currPageIndex == PSS_PAGE_INFO)
{
- sub_81C48F0();
+ StopPokemonAnimations();
PlaySE(SE_SELECT);
- sub_81C044C(taskId);
+ BeginCloseSummaryScreen(taskId);
}
else
{
@@ -1465,57 +1519,59 @@ static void sub_81C0510(u8 taskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- sub_81C48F0();
+ StopPokemonAnimations();
PlaySE(SE_SELECT);
- sub_81C044C(taskId);
+ BeginCloseSummaryScreen(taskId);
}
}
}
-static void sub_81C0604(u8 taskId, s8 a)
+static void ChangeSummaryPokemon(u8 taskId, s8 delta)
{
- s8 r4_2;
+ s8 v1;
+ s8 v2;
- if (!pssData->unk40C3)
+ if (!sMonSummaryScreen->lockMonFlag)
{
- if (pssData->isBoxMon == TRUE)
+ if (sMonSummaryScreen->isBoxMon == TRUE)
{
- if (pssData->currPageIndex != PSS_PAGE_INFO)
+
+ if (sMonSummaryScreen->currPageIndex != PSS_PAGE_INFO)
{
- if (a == 1)
- a = 0;
+ if (delta == 1)
+ delta = 0;
else
- a = 2;
+ delta = 2;
}
else
{
- if (a == 1)
- a = 1;
+ if (delta == 1)
+ delta = 1;
else
- a = 3;
+ delta = 3;
}
- r4_2 = sub_80D214C(pssData->monList.boxMons, pssData->curMonIndex, pssData->maxMonIndex, a);
+ v1 = sub_80D214C(sMonSummaryScreen->monList.boxMons, sMonSummaryScreen->curMonIndex, sMonSummaryScreen->maxMonIndex, delta);
}
else if (IsMultiBattle() == TRUE)
{
- r4_2 = sub_81C09B4(a);
+ v1 = sub_81C09B4(delta);
}
else
{
- r4_2 = sub_81C08F8(a);
+ v1 = sub_81C08F8(delta);
}
- if (r4_2 != -1)
+ if (v1 != -1)
{
PlaySE(SE_SELECT);
- if (pssData->summary.unk7 != 0)
+ if (sMonSummaryScreen->summary.ailment != AILMENT_NONE)
{
- sub_81C4204(2, 1);
- ClearWindowTilemap(13);
+ SetSpriteInvisibility(2, 1);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
schedule_bg_copy_tilemap_to_vram(0);
sub_81C2074(0, 2);
}
- pssData->curMonIndex = r4_2;
+ sMonSummaryScreen->curMonIndex = v1;
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = sub_81C0704;
}
@@ -1533,57 +1589,57 @@ static void sub_81C0704(u8 taskId)
break;
case 1:
SummaryScreen_DestroyUnknownTask();
- DestroySpriteAndFreeResources(&gSprites[pssData->spriteIds[0]]);
+ DestroySpriteAndFreeResources(&gSprites[sMonSummaryScreen->spriteIds[0]]);
break;
case 2:
- DestroySpriteAndFreeResources(&gSprites[pssData->spriteIds[1]]);
+ DestroySpriteAndFreeResources(&gSprites[sMonSummaryScreen->spriteIds[1]]);
break;
case 3:
- CopyMonToSummaryStruct(&pssData->currentMon);
- pssData->unk40F0 = 0;
+ CopyMonToSummaryStruct(&sMonSummaryScreen->currentMon);
+ sMonSummaryScreen->switchCounter = 0;
break;
case 4:
- if (ExtractMonDataToSummaryStruct(&pssData->currentMon) == FALSE)
+ if (ExtractMonDataToSummaryStruct(&sMonSummaryScreen->currentMon) == FALSE)
return;
break;
case 5:
- RemoveAndCreateMonMarkingsSprite(&pssData->currentMon);
+ RemoveAndCreateMonMarkingsSprite(&sMonSummaryScreen->currentMon);
break;
case 6:
- CreateCaughtBallSprite(&pssData->currentMon);
+ CreateCaughtBallSprite(&sMonSummaryScreen->currentMon);
break;
case 7:
- if (pssData->summary.unk7)
+ if (sMonSummaryScreen->summary.ailment != AILMENT_NONE)
sub_81C2074(10, -2);
- sub_81C2228(&pssData->currentMon);
+ DrawPokerusCuredSymbol(&sMonSummaryScreen->currentMon);
data[1] = 0;
break;
case 8:
- pssData->spriteIds[0] = sub_81C45F4(&pssData->currentMon, &data[1]);
- if (pssData->spriteIds[0] == 0xFF)
+ sMonSummaryScreen->spriteIds[0] = CreatePokemonSprite(&sMonSummaryScreen->currentMon, &data[1]);
+ if (sMonSummaryScreen->spriteIds[0] == 0xFF)
return;
- gSprites[pssData->spriteIds[0]].data[2] = 1;
- sub_81C0E24();
+ gSprites[sMonSummaryScreen->spriteIds[0]].data[2] = 1;
+ CheckExperienceProgressBar();
data[1] = 0;
break;
case 9:
- sub_81C4280();
+ SetTypeIcons();
break;
case 10:
sub_81C25E8();
break;
case 11:
- sub_81C2D9C(pssData->currPageIndex);
- sub_81C2524();
+ PrintPageSpecificText(sMonSummaryScreen->currPageIndex);
+ LimitEggSummaryPageDisplay();
break;
case 12:
- gSprites[pssData->spriteIds[0]].data[2] = 0;
+ gSprites[sMonSummaryScreen->spriteIds[0]].data[2] = 0;
break;
default:
if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0)
{
data[0] = 0;
- gTasks[taskId].func = sub_81C0510;
+ gTasks[taskId].func = HandleInput;
}
return;
}
@@ -1592,25 +1648,25 @@ static void sub_81C0704(u8 taskId)
static s8 sub_81C08F8(s8 a)
{
- struct Pokemon *mon = pssData->monList.mons;
+ struct Pokemon *mon = sMonSummaryScreen->monList.mons;
- if (pssData->currPageIndex == PSS_PAGE_INFO)
+ if (sMonSummaryScreen->currPageIndex == PSS_PAGE_INFO)
{
- if (a == -1 && pssData->curMonIndex == 0)
+ if (a == -1 && sMonSummaryScreen->curMonIndex == 0)
return -1;
- else if (a == 1 && pssData->curMonIndex >= pssData->maxMonIndex)
+ else if (a == 1 && sMonSummaryScreen->curMonIndex >= sMonSummaryScreen->maxMonIndex)
return -1;
else
- return pssData->curMonIndex + a;
+ return sMonSummaryScreen->curMonIndex + a;
}
else
{
- s8 index = pssData->curMonIndex;
+ s8 index = sMonSummaryScreen->curMonIndex;
do
{
index += a;
- if (index < 0 || index > pssData->maxMonIndex)
+ if (index < 0 || index > sMonSummaryScreen->maxMonIndex)
return -1;
} while (GetMonData(&mon[index], MON_DATA_IS_EGG) != 0);
return index;
@@ -1619,13 +1675,13 @@ static s8 sub_81C08F8(s8 a)
static s8 sub_81C09B4(s8 a)
{
- struct Pokemon *mon = pssData->monList.mons;
+ struct Pokemon *mon = sMonSummaryScreen->monList.mons;
s8 r5 = 0;
u8 i;
for (i = 0; i < 6; i++)
{
- if (gUnknown_0861CC1C[i] == pssData->curMonIndex)
+ if (gUnknown_0861CC1C[i] == sMonSummaryScreen->curMonIndex)
{
r5 = i;
break;
@@ -1650,42 +1706,42 @@ static bool8 sub_81C0A50(struct Pokemon* mon)
{
if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NONE)
return FALSE;
- else if (pssData->curMonIndex != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0)
+ else if (sMonSummaryScreen->curMonIndex != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0)
return TRUE;
else
return FALSE;
}
-static void sub_81C0A8C(u8 taskId, s8 b)
+static void ChangePage(u8 taskId, s8 delta)
{
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
s16 *data = gTasks[taskId].data;
if (summary->isEgg)
return;
- else if (b == -1 && pssData->currPageIndex == pssData->minPageIndex)
+ else if (delta == -1 && sMonSummaryScreen->currPageIndex == sMonSummaryScreen->minPageIndex)
return;
- else if (b == 1 && pssData->currPageIndex == pssData->maxPageIndex)
+ else if (delta == 1 && sMonSummaryScreen->currPageIndex == sMonSummaryScreen->maxPageIndex)
return;
PlaySE(SE_SELECT);
- sub_81C2C38(pssData->currPageIndex);
- pssData->currPageIndex += b;
+ ClearPageWindowTilemaps(sMonSummaryScreen->currPageIndex);
+ sMonSummaryScreen->currPageIndex += delta;
data[0] = 0;
- if (b == 1)
- SetTaskFuncWithFollowupFunc(taskId, sub_81C0B8C, gTasks[taskId].func);
+ if (delta == 1)
+ SetTaskFuncWithFollowupFunc(taskId, PssScrollRight, gTasks[taskId].func);
else
- SetTaskFuncWithFollowupFunc(taskId, sub_81C0CC4, gTasks[taskId].func);
- sub_81C2DE4(pssData->currPageIndex);
- sub_81C424C();
+ SetTaskFuncWithFollowupFunc(taskId, PssScrollLeft, gTasks[taskId].func);
+ CreateTextPrinterTask(sMonSummaryScreen->currPageIndex);
+ HidePageSpecificSprites();
}
-static void sub_81C0B8C(u8 taskId)
+static void PssScrollRight(u8 taskId) // Scroll right
{
s16 *data = gTasks[taskId].data;
if (data[0] == 0)
{
- if (pssData->unk40C9 == 0)
+ if (sMonSummaryScreen->bgDisplayOrder == 0)
{
data[1] = 1;
SetBgAttribute(1, BG_ATTR_PRIORITY, 1);
@@ -1700,35 +1756,35 @@ static void sub_81C0B8C(u8 taskId)
schedule_bg_copy_tilemap_to_vram(2);
}
ChangeBgX(data[1], 0, 0);
- SetBgTilemapBuffer(data[1], pssData->bgTilemapBuffers[pssData->currPageIndex][0]);
+ SetBgTilemapBuffer(data[1], sMonSummaryScreen->bgTilemapBuffers[sMonSummaryScreen->currPageIndex][0]);
ShowBg(1);
ShowBg(2);
}
ChangeBgX(data[1], 0x2000, 1);
data[0] += 32;
if (data[0] > 0xFF)
- gTasks[taskId].func = sub_81C0C68;
+ gTasks[taskId].func = PssScrollRightEnd;
}
-static void sub_81C0C68(u8 taskId)
+static void PssScrollRightEnd(u8 taskId) // display right
{
s16 *data = gTasks[taskId].data;
- pssData->unk40C9 ^= 1;
+ sMonSummaryScreen->bgDisplayOrder ^= 1;
data[1] = 0;
data[0] = 0;
- sub_81C1BA0();
- sub_81C2AFC(pssData->currPageIndex);
- sub_81C4280();
- sub_81C0E24();
+ DrawPagination();
+ CreatePageWindowTilemaps(sMonSummaryScreen->currPageIndex);
+ SetTypeIcons();
+ CheckExperienceProgressBar();
SwitchTaskToFollowupFunc(taskId);
}
-static void sub_81C0CC4(u8 taskId)
+static void PssScrollLeft(u8 taskId) // Scroll left
{
s16 *data = gTasks[taskId].data;
if (data[0] == 0)
{
- if (pssData->unk40C9 == 0)
+ if (sMonSummaryScreen->bgDisplayOrder == 0)
data[1] = 2;
else
data[1] = 1;
@@ -1737,13 +1793,13 @@ static void sub_81C0CC4(u8 taskId)
ChangeBgX(data[1], 0x2000, 2);
data[0] += 32;
if (data[0] > 0xFF)
- gTasks[taskId].func = sub_81C0D44;
+ gTasks[taskId].func = PssScrollLeftEnd;
}
-static void sub_81C0D44(u8 taskId)
+static void PssScrollLeftEnd(u8 taskId) // display left
{
s16 *data = gTasks[taskId].data;
- if (pssData->unk40C9 == 0)
+ if (sMonSummaryScreen->bgDisplayOrder == 0)
{
SetBgAttribute(1, BG_ATTR_PRIORITY, 1);
SetBgAttribute(2, BG_ATTR_PRIORITY, 2);
@@ -1755,57 +1811,57 @@ static void sub_81C0D44(u8 taskId)
SetBgAttribute(1, BG_ATTR_PRIORITY, 2);
schedule_bg_copy_tilemap_to_vram(1);
}
- if (pssData->currPageIndex > 1)
+ if (sMonSummaryScreen->currPageIndex > 1)
{
- SetBgTilemapBuffer(data[1], (u8*)pssData + ((pssData->currPageIndex << 12) + 0xFFFFF0BC));
+ SetBgTilemapBuffer(data[1], (u8*)sMonSummaryScreen + ((sMonSummaryScreen->currPageIndex << 12) + 0xFFFFF0BC));
ChangeBgX(data[1], 0x10000, 0);
}
ShowBg(1);
ShowBg(2);
- pssData->unk40C9 ^= 1;
+ sMonSummaryScreen->bgDisplayOrder ^= 1;
data[1] = 0;
data[0] = 0;
- sub_81C1BA0();
- sub_81C2AFC(pssData->currPageIndex);
- sub_81C4280();
- sub_81C0E24();
+ DrawPagination();
+ CreatePageWindowTilemaps(sMonSummaryScreen->currPageIndex);
+ SetTypeIcons();
+ CheckExperienceProgressBar();
SwitchTaskToFollowupFunc(taskId);
}
-static void sub_81C0E24(void)
+static void CheckExperienceProgressBar(void)
{
- if (pssData->currPageIndex == 1)
- DrawExperienceProgressBar(&pssData->currentMon);
+ if (sMonSummaryScreen->currPageIndex == 1)
+ DrawExperienceProgressBar(&sMonSummaryScreen->currentMon);
}
static void sub_81C0E48(u8 taskId)
{
u16 move;
- pssData->firstMoveIndex = 0;
- move = pssData->summary.moves[pssData->firstMoveIndex];
- ClearWindowTilemap(0x13);
- if (gSprites[pssData->spriteIds[2]].invisible == 0)
- ClearWindowTilemap(0xD);
+ sMonSummaryScreen->firstMoveIndex = 0;
+ move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex];
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
+ if (gSprites[sMonSummaryScreen->spriteIds[2]].invisible == 0)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
sub_81C1DA4(9, -3);
sub_81C1EFC(9, -3, move);
- if (!pssData->unk40C8)
+ if (!sMonSummaryScreen->unk40C8)
{
- ClearWindowTilemap(5);
- PutWindowTilemap(6);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_SWITCH);
}
- sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0);
- sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0);
+ sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0);
+ sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0);
PrintMoveDetails(move);
PrintNewMoveDetailsOrCancelText();
- sub_81C44F0();
+ SetNewMoveTypeIcon();
schedule_bg_copy_tilemap_to_vram(0);
schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2);
sub_81C4AF8(8);
- gTasks[taskId].func = sub_81C0F44;
+ gTasks[taskId].func = HandleInput_MoveSelect;
}
-static void sub_81C0F44(u8 taskId)
+static void HandleInput_MoveSelect(u8 taskId)
{
u8 id = taskId;
s16 *data = gTasks[taskId].data;
@@ -1815,17 +1871,17 @@ static void sub_81C0F44(u8 taskId)
if (gMain.newKeys & DPAD_UP)
{
data[0] = 4;
- sub_81C1070(data, -1, &pssData->firstMoveIndex);
+ sub_81C1070(data, -1, &sMonSummaryScreen->firstMoveIndex);
}
else if (gMain.newKeys & DPAD_DOWN)
{
data[0] = 4;
- sub_81C1070(data, 1, &pssData->firstMoveIndex);
+ sub_81C1070(data, 1, &sMonSummaryScreen->firstMoveIndex);
}
else if (gMain.newKeys & A_BUTTON)
{
- if (pssData->unk40C8 == TRUE
- || (pssData->newMove == MOVE_NONE && pssData->firstMoveIndex == MAX_MON_MOVES))
+ if (sMonSummaryScreen->unk40C8 == TRUE
+ || (sMonSummaryScreen->newMove == MOVE_NONE && sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES))
{
PlaySE(SE_SELECT);
sub_81C11F4(taskId);
@@ -1853,7 +1909,7 @@ static bool8 sub_81C1040(void)
u8 i;
for (i = 1; i < MAX_MON_MOVES; i++)
{
- if (pssData->summary.moves[i] != 0)
+ if (sMonSummaryScreen->summary.moves[i] != 0)
return TRUE;
}
return FALSE;
@@ -1876,36 +1932,36 @@ static void sub_81C1070(s16 *a, s8 b, u8 *c)
moveIndex = a[0];
if (moveIndex == MAX_MON_MOVES)
{
- move = pssData->newMove;
+ move = sMonSummaryScreen->newMove;
break;
}
- move = pssData->summary.moves[moveIndex];
+ move = sMonSummaryScreen->summary.moves[moveIndex];
if (move != 0)
break;
}
- sub_81C240C(move);
+ DrawContestMoveHearts(move);
schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2);
PrintMoveDetails(move);
- if ((*c == 4 && pssData->newMove == MOVE_NONE) || a[1] == 1)
+ if ((*c == 4 && sMonSummaryScreen->newMove == MOVE_NONE) || a[1] == 1)
{
- ClearWindowTilemap(19);
- if (!gSprites[pssData->spriteIds[2]].invisible)
- ClearWindowTilemap(13);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
+ if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
schedule_bg_copy_tilemap_to_vram(0);
sub_81C1DA4(9, -3);
sub_81C1EFC(9, -3, move);
}
- if (*c != 4 && moveIndex == 4 && pssData->newMove == MOVE_NONE)
+ if (*c != 4 && moveIndex == 4 && sMonSummaryScreen->newMove == MOVE_NONE)
{
- ClearWindowTilemap(14);
- ClearWindowTilemap(15);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
schedule_bg_copy_tilemap_to_vram(0);
sub_81C1DA4(0, 3);
sub_81C1EFC(0, 3, 0);
}
*c = moveIndex;
- if (c == &pssData->firstMoveIndex)
+ if (c == &sMonSummaryScreen->firstMoveIndex)
sub_81C4D18(8);
else
sub_81C4D18(18);
@@ -1914,28 +1970,28 @@ static void sub_81C1070(s16 *a, s8 b, u8 *c)
static void sub_81C11F4(u8 taskId)
{
sub_81C4C60(8);
- ClearWindowTilemap(6);
- PutWindowTilemap(5);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_SWITCH);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO);
PrintMoveDetails(0);
- sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 1);
- sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 1);
+ sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 1);
+ sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 1);
sub_81C4064();
- if (pssData->firstMoveIndex != MAX_MON_MOVES)
+ if (sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
{
- ClearWindowTilemap(14);
- ClearWindowTilemap(15);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
sub_81C1DA4(0, 3);
sub_81C1EFC(0, 3, 0);
}
schedule_bg_copy_tilemap_to_vram(0);
schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2);
- gTasks[taskId].func = sub_81C0510;
+ gTasks[taskId].func = HandleInput;
}
static void sub_81C129C(u8 taskId)
{
- pssData->secondMoveIndex = pssData->firstMoveIndex;
+ sMonSummaryScreen->secondMoveIndex = sMonSummaryScreen->firstMoveIndex;
sub_81C4C84(1);
sub_81C4AF8(18);
gTasks[taskId].func = sub_81C12E4;
@@ -1950,16 +2006,16 @@ static void sub_81C12E4(u8 taskId)
if (gMain.newKeys & DPAD_UP)
{
data[0] = 3;
- sub_81C1070(&data[0], -1, &pssData->secondMoveIndex);
+ sub_81C1070(&data[0], -1, &sMonSummaryScreen->secondMoveIndex);
}
else if (gMain.newKeys & DPAD_DOWN)
{
data[0] = 3;
- sub_81C1070(&data[0], 1, &pssData->secondMoveIndex);
+ sub_81C1070(&data[0], 1, &sMonSummaryScreen->secondMoveIndex);
}
else if (gMain.newKeys & A_BUTTON)
{
- if (pssData->firstMoveIndex == pssData->secondMoveIndex)
+ if (sMonSummaryScreen->firstMoveIndex == sMonSummaryScreen->secondMoveIndex)
{
sub_81C13B0(taskId, 0);
}
@@ -1985,33 +2041,33 @@ static void sub_81C13B0(u8 taskId, bool8 b)
if (b == TRUE)
{
- if (!pssData->isBoxMon)
+ if (!sMonSummaryScreen->isBoxMon)
{
- struct Pokemon *why = pssData->monList.mons;
- SwapMonMoves(&why[pssData->curMonIndex], pssData->firstMoveIndex, pssData->secondMoveIndex);
+ struct Pokemon *why = sMonSummaryScreen->monList.mons;
+ SwapMonMoves(&why[sMonSummaryScreen->curMonIndex], sMonSummaryScreen->firstMoveIndex, sMonSummaryScreen->secondMoveIndex);
}
else
{
- struct BoxPokemon *why = pssData->monList.boxMons;
- SwapBoxMonMoves(&why[pssData->curMonIndex], pssData->firstMoveIndex, pssData->secondMoveIndex);
+ struct BoxPokemon *why = sMonSummaryScreen->monList.boxMons;
+ SwapBoxMonMoves(&why[sMonSummaryScreen->curMonIndex], sMonSummaryScreen->firstMoveIndex, sMonSummaryScreen->secondMoveIndex);
}
- CopyMonToSummaryStruct(&pssData->currentMon);
- sub_81C40A0(pssData->firstMoveIndex, pssData->secondMoveIndex);
- sub_81C4568(pssData->firstMoveIndex, pssData->secondMoveIndex);
- pssData->firstMoveIndex = pssData->secondMoveIndex;
+ CopyMonToSummaryStruct(&sMonSummaryScreen->currentMon);
+ sub_81C40A0(sMonSummaryScreen->firstMoveIndex, sMonSummaryScreen->secondMoveIndex);
+ sub_81C4568(sMonSummaryScreen->firstMoveIndex, sMonSummaryScreen->secondMoveIndex);
+ sMonSummaryScreen->firstMoveIndex = sMonSummaryScreen->secondMoveIndex;
}
- move = pssData->summary.moves[pssData->firstMoveIndex];
+ move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex];
PrintMoveDetails(move);
- sub_81C240C(move);
+ DrawContestMoveHearts(move);
schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2);
- gTasks[taskId].func = sub_81C0F44;
+ gTasks[taskId].func = HandleInput_MoveSelect;
}
static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2)
{
- struct PokeSummary* summary = &pssData->summary;
+ struct PokeSummary* summary = &sMonSummaryScreen->summary;
u16 move1 = summary->moves[moveIndex1];
u16 move2 = summary->moves[moveIndex2];
@@ -2020,9 +2076,9 @@ static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2)
u8 ppBonuses = summary->ppBonuses;
// Calculate PP bonuses
- u8 ppUpMask1 = gUnknown_08329D22[moveIndex1];
+ u8 ppUpMask1 = gPPUpGetMask[moveIndex1];
u8 ppBonusMove1 = (ppBonuses & ppUpMask1) >> (moveIndex1 * 2);
- u8 ppUpMask2 = gUnknown_08329D22[moveIndex2];
+ u8 ppUpMask2 = gPPUpGetMask[moveIndex2];
u8 ppBonusMove2 = (ppBonuses & ppUpMask2) >> (moveIndex2 * 2);
ppBonuses &= ~ppUpMask1;
ppBonuses &= ~ppUpMask2;
@@ -2046,7 +2102,7 @@ static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2)
static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2)
{
- struct PokeSummary* summary = &pssData->summary;
+ struct PokeSummary* summary = &sMonSummaryScreen->summary;
u16 move1 = summary->moves[moveIndex1];
u16 move2 = summary->moves[moveIndex2];
@@ -2055,9 +2111,9 @@ static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2
u8 ppBonuses = summary->ppBonuses;
// Calculate PP bonuses
- u8 ppUpMask1 = gUnknown_08329D22[moveIndex1];
+ u8 ppUpMask1 = gPPUpGetMask[moveIndex1];
u8 ppBonusMove1 = (ppBonuses & ppUpMask1) >> (moveIndex1 * 2);
- u8 ppUpMask2 = gUnknown_08329D22[moveIndex2];
+ u8 ppUpMask2 = gPPUpGetMask[moveIndex2];
u8 ppBonusMove2 = (ppBonuses & ppUpMask2) >> (moveIndex2 * 2);
ppBonuses &= ~ppUpMask1;
ppBonuses &= ~ppUpMask2;
@@ -2081,86 +2137,87 @@ static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2
static void sub_81C171C(u8 taskId)
{
- sub_81C44F0();
+ SetNewMoveTypeIcon();
sub_81C4AF8(8);
- gTasks[taskId].func = sub_81C174C;
+ gTasks[taskId].func = HandleReplaceMoveInput;
}
-static void sub_81C174C(u8 taskId)
+static void HandleReplaceMoveInput(u8 taskId)
{
s16* data = gTasks[taskId].data;
- if (sub_81221EC() != 1)
+ if (sub_81221EC() != TRUE)
{
- if (gPaletteFade.active != 1)
+ if (gPaletteFade.active != TRUE)
{
if (gMain.newKeys & DPAD_UP)
{
data[0] = 4;
- sub_81C1070(data, -1, &pssData->firstMoveIndex);
+ sub_81C1070(data, -1, &sMonSummaryScreen->firstMoveIndex);
}
else if (gMain.newKeys & DPAD_DOWN)
{
data[0] = 4;
- sub_81C1070(data, 1, &pssData->firstMoveIndex);
+ sub_81C1070(data, 1, &sMonSummaryScreen->firstMoveIndex);
}
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
{
- sub_81C0A8C(taskId, -1);
+ ChangePage(taskId, -1);
}
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
{
- sub_81C0A8C(taskId, 1);
+ ChangePage(taskId, 1);
}
else if (gMain.newKeys & A_BUTTON)
{
- if (sub_81C18A8() == TRUE)
+ if (CanReplaceMove() == TRUE)
{
- sub_81C48F0();
+ StopPokemonAnimations();
PlaySE(SE_SELECT);
- gUnknown_0203CF21 = pssData->firstMoveIndex;
- gSpecialVar_0x8005 = gUnknown_0203CF21;
- sub_81C044C(taskId);
+ sUnknown_0203CF21 = sMonSummaryScreen->firstMoveIndex;
+ gSpecialVar_0x8005 = sUnknown_0203CF21;
+ BeginCloseSummaryScreen(taskId);
}
else
{
PlaySE(SE_HAZURE);
- sub_81C18F4(taskId);
+ ShowHMMovesCantBeForgottenWindow(taskId);
}
}
else if (gMain.newKeys & B_BUTTON)
{
u32 var1;
- sub_81C48F0();
+ StopPokemonAnimations();
PlaySE(SE_SELECT);
- gUnknown_0203CF21 = 4;
+ sUnknown_0203CF21 = 4;
gSpecialVar_0x8005 = 4;
- sub_81C044C(taskId);
+ BeginCloseSummaryScreen(taskId);
}
}
}
}
-static bool8 sub_81C18A8(void)
+static bool8 CanReplaceMove(void)
{
- if (pssData->firstMoveIndex == MAX_MON_MOVES || pssData->newMove == MOVE_NONE || IsMoveHm(pssData->summary.moves[pssData->firstMoveIndex]) != 1)
+ if (sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES || sMonSummaryScreen->newMove == MOVE_NONE || IsMoveHm(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]) != 1)
return TRUE;
else
return FALSE;
}
-static void sub_81C18F4(u8 taskId)
+static void ShowHMMovesCantBeForgottenWindow(u8 taskId)
{
- ClearWindowTilemap(14);
- ClearWindowTilemap(15);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
schedule_bg_copy_tilemap_to_vram(0);
sub_81C1DA4(0, 3);
sub_81C1EFC(0, 3, 0);
PrintHMMovesCantBeForgotten();
- gTasks[taskId].func = sub_81C1940;
+ gTasks[taskId].func = HandleHMMovesCantBeForgottenInput;
}
-static void sub_81C1940(u8 taskId)
+// This redraws the power/accuracy window when the player scrolls out of the "HM Moves can't be forgotten" message
+static void HandleHMMovesCantBeForgottenInput(u8 taskId)
{
s16* data = gTasks[taskId].data;
u16 move;
@@ -2170,67 +2227,67 @@ static void sub_81C1940(u8 taskId)
{
data[1] = 1;
data[0] = 4;
- sub_81C1070(&data[0], -1, &pssData->firstMoveIndex);
+ sub_81C1070(&data[0], -1, &sMonSummaryScreen->firstMoveIndex);
data[1] = 0;
- gTasks[taskId].func = sub_81C174C;
+ gTasks[taskId].func = HandleReplaceMoveInput;
}
else if (gMain.newKeys & DPAD_DOWN)
{
data[1] = 1;
data[0] = 4;
- sub_81C1070(&data[0], 1, &pssData->firstMoveIndex);
+ sub_81C1070(&data[0], 1, &sMonSummaryScreen->firstMoveIndex);
data[1] = 0;
- gTasks[taskId].func = sub_81C174C;
+ gTasks[taskId].func = HandleReplaceMoveInput;
}
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
{
- if (pssData->currPageIndex != 2)
+ if (sMonSummaryScreen->currPageIndex != 2)
{
- ClearWindowTilemap(19);
- if (!gSprites[pssData->spriteIds[2]].invisible)
- ClearWindowTilemap(13);
- move = pssData->summary.moves[pssData->firstMoveIndex];
- gTasks[taskId].func = sub_81C174C;
- sub_81C0A8C(taskId, -1);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
+ if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
+ move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex];
+ gTasks[taskId].func = HandleReplaceMoveInput;
+ ChangePage(taskId, -1);
sub_81C1DA4(9, -2);
sub_81C1EFC(9, -2, move);
}
}
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
{
- if (pssData->currPageIndex != 3)
+ if (sMonSummaryScreen->currPageIndex != 3)
{
- ClearWindowTilemap(19);
- if (!gSprites[pssData->spriteIds[2]].invisible)
- ClearWindowTilemap(13);
- move = pssData->summary.moves[pssData->firstMoveIndex];
- gTasks[taskId].func = sub_81C174C;
- sub_81C0A8C(taskId, 1);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
+ if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
+ move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex];
+ gTasks[taskId].func = HandleReplaceMoveInput;
+ ChangePage(taskId, 1);
sub_81C1DA4(9, -2);
sub_81C1EFC(9, -2, move);
}
}
else if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- ClearWindowTilemap(19);
- if (!gSprites[pssData->spriteIds[2]].invisible)
- ClearWindowTilemap(13);
- move = pssData->summary.moves[pssData->firstMoveIndex];
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
+ if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
+ move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex];
PrintMoveDetails(move);
schedule_bg_copy_tilemap_to_vram(0);
sub_81C1DA4(9, -3);
sub_81C1EFC(9, -3, move);
- gTasks[taskId].func = sub_81C174C;
+ gTasks[taskId].func = HandleReplaceMoveInput;
}
}
}
u8 sub_81C1B94(void)
{
- return gUnknown_0203CF21;
+ return sUnknown_0203CF21;
}
-static void sub_81C1BA0(void)
+static void DrawPagination(void) // Updates the pagination dots at the top of the summary screen
{
u16 *alloced = Alloc(32);
u8 i;
@@ -2239,30 +2296,30 @@ static void sub_81C1BA0(void)
{
u8 j = i * 2;
- if (i < pssData->minPageIndex)
+ if (i < sMonSummaryScreen->minPageIndex)
{
alloced[j + 0] = 0x40;
alloced[j + 1] = 0x40;
alloced[j + 8] = 0x50;
alloced[j + 9] = 0x50;
}
- else if (i > pssData->maxPageIndex)
+ else if (i > sMonSummaryScreen->maxPageIndex)
{
alloced[j + 0] = 0x4A;
alloced[j + 1] = 0x4A;
alloced[j + 8] = 0x5A;
alloced[j + 9] = 0x5A;
}
- else if (i < pssData->currPageIndex)
+ else if (i < sMonSummaryScreen->currPageIndex)
{
alloced[j + 0] = 0x46;
alloced[j + 1] = 0x47;
alloced[j + 8] = 0x56;
alloced[j + 9] = 0x57;
}
- else if (i == pssData->currPageIndex)
+ else if (i == sMonSummaryScreen->currPageIndex)
{
- if (i != pssData->maxPageIndex)
+ if (i != sMonSummaryScreen->maxPageIndex)
{
alloced[j + 0] = 0x41;
alloced[j + 1] = 0x42;
@@ -2277,7 +2334,7 @@ static void sub_81C1BA0(void)
alloced[j + 9] = 0x5C;
}
}
- else if (i != pssData->maxPageIndex)
+ else if (i != sMonSummaryScreen->maxPageIndex)
{
alloced[j + 0] = 0x43;
alloced[j + 1] = 0x44;
@@ -2328,11 +2385,11 @@ static void sub_81C1CB0(const struct UnkStruct_61CC04 *unkStruct, u16 *dest, u8
static void sub_81C1DA4(u16 a, s16 b)
{
- if (b > gUnknown_0861CC04.field_6)
- b = gUnknown_0861CC04.field_6;
- if (b == 0 || b == gUnknown_0861CC04.field_6)
+ if (b > sUnknown_0861CC04.field_6)
+ b = sUnknown_0861CC04.field_6;
+ if (b == 0 || b == sUnknown_0861CC04.field_6)
{
- sub_81C1CB0(&gUnknown_0861CC04, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], b, 1);
+ sub_81C1CB0(&sUnknown_0861CC04, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], b, 1);
}
else
{
@@ -2354,23 +2411,23 @@ static void sub_81C1E20(u8 taskId)
{
data[1] = 0;
}
- else if (data[1] > gUnknown_0861CC04.field_6)
+ else if (data[1] > sUnknown_0861CC04.field_6)
{
- data[1] = gUnknown_0861CC04.field_6;
+ data[1] = sUnknown_0861CC04.field_6;
}
- sub_81C1CB0(&gUnknown_0861CC04, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], data[1], 1);
- if (data[1] <= 0 || data[1] >= gUnknown_0861CC04.field_6)
+ sub_81C1CB0(&sUnknown_0861CC04, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], data[1], 1);
+ if (data[1] <= 0 || data[1] >= sUnknown_0861CC04.field_6)
{
if (data[0] < 0)
{
- if (pssData->currPageIndex == 2)
- PutWindowTilemap(14);
+ if (sMonSummaryScreen->currPageIndex == 2)
+ PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
}
else
{
- if (!gSprites[pssData->spriteIds[2]].invisible)
- PutWindowTilemap(13);
- PutWindowTilemap(19);
+ if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible)
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
schedule_bg_copy_tilemap_to_vram(0);
DestroyTask(taskId);
@@ -2381,10 +2438,10 @@ static void sub_81C1E20(u8 taskId)
static void sub_81C1EFC(u16 a, s16 b, u16 move)
{
- if (b > gUnknown_0861CC10.field_6)
- b = gUnknown_0861CC10.field_6;
- if (b == 0 || b == gUnknown_0861CC10.field_6)
- sub_81C1CB0(&gUnknown_0861CC10, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], b, 1);
+ if (b > sUnknown_0861CC10.field_6)
+ b = sUnknown_0861CC10.field_6;
+ if (b == 0 || b == sUnknown_0861CC10.field_6)
+ sub_81C1CB0(&sUnknown_0861CC10, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], b, 1);
else
{
u8 taskId = FindTaskIdByFunc(sub_81C1F80);
@@ -2404,26 +2461,26 @@ static void sub_81C1F80(u8 taskId)
{
data[1] = 0;
}
- else if (data[1] > gUnknown_0861CC10.field_6)
+ else if (data[1] > sUnknown_0861CC10.field_6)
{
- data[1] = gUnknown_0861CC10.field_6;
+ data[1] = sUnknown_0861CC10.field_6;
}
- sub_81C1CB0(&gUnknown_0861CC10, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], data[1], 1);
- if (data[1] <= 0 || data[1] >= gUnknown_0861CC10.field_6)
+ sub_81C1CB0(&sUnknown_0861CC10, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], data[1], 1);
+ if (data[1] <= 0 || data[1] >= sUnknown_0861CC10.field_6)
{
if (data[0] < 0)
{
- if (pssData->currPageIndex == 3 && FuncIsActiveTask(sub_81C0B8C) == 0)
- PutWindowTilemap(15);
- sub_81C240C(data[2]);
+ if (sMonSummaryScreen->currPageIndex == 3 && FuncIsActiveTask(PssScrollRight) == 0)
+ PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
+ DrawContestMoveHearts(data[2]);
}
else
{
- if (!gSprites[pssData->spriteIds[2]].invisible)
+ if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible)
{
- PutWindowTilemap(13);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
}
- PutWindowTilemap(19);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
schedule_bg_copy_tilemap_to_vram(0);
DestroyTask(taskId);
@@ -2434,12 +2491,12 @@ static void sub_81C1F80(u8 taskId)
static void sub_81C2074(u16 a, s16 b)
{
- if (b > gUnknown_0861CBEC.field_6)
- b = gUnknown_0861CBEC.field_6;
- if (b == 0 || b == gUnknown_0861CBEC.field_6)
+ if (b > sUnknown_0861CBEC.field_6)
+ b = sUnknown_0861CBEC.field_6;
+ if (b == 0 || b == sUnknown_0861CBEC.field_6)
{
- sub_81C1CB0(&gUnknown_0861CBEC, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0);
- sub_81C1CB0(&gUnknown_0861CBF8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0);
+ sub_81C1CB0(&sUnknown_0861CBEC, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0);
+ sub_81C1CB0(&sUnknown_0861CBF8, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0);
}
else
{
@@ -2455,17 +2512,17 @@ static void sub_81C20F0(u8 taskId)
data[1] += data[0];
if (data[1] < 0)
data[1] = 0;
- else if (data[1] > gUnknown_0861CBEC.field_6)
- data[1] = gUnknown_0861CBEC.field_6;
- sub_81C1CB0(&gUnknown_0861CBEC, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0);
- sub_81C1CB0(&gUnknown_0861CBF8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0);
+ else if (data[1] > sUnknown_0861CBEC.field_6)
+ data[1] = sUnknown_0861CBEC.field_6;
+ sub_81C1CB0(&sUnknown_0861CBEC, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0);
+ sub_81C1CB0(&sUnknown_0861CBF8, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0);
schedule_bg_copy_tilemap_to_vram(3);
- if (data[1] <= 0 || data[1] >= gUnknown_0861CBEC.field_6)
+ if (data[1] <= 0 || data[1] >= sUnknown_0861CBEC.field_6)
{
if (data[0] < 0)
{
CreateSetStatusSprite();
- PutWindowTilemap(13);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
schedule_bg_copy_tilemap_to_vram(0);
}
DestroyTask(taskId);
@@ -2500,17 +2557,17 @@ static void sub_81C2194(u16 *output, u16 palette, bool8 c)
}
}
-static void sub_81C2228(struct Pokemon *mon)
+static void DrawPokerusCuredSymbol(struct Pokemon *mon) // This checks if the mon has been cured of pokerus
{
- if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0))
+ if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0)) // If yes it draws the cured symbol
{
- pssData->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x2C;
- pssData->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x2C;
+ sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x2C;
+ sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x2C;
}
else
{
- pssData->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x81A;
- pssData->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x81A;
+ sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x81A;
+ sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x81A;
}
schedule_bg_copy_tilemap_to_vram(3);
}
@@ -2527,7 +2584,7 @@ static void sub_81C228C(bool8 isMonShiny)
static void DrawExperienceProgressBar(struct Pokemon *unused)
{
s64 numExpProgressBarTicks;
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
u16 *r9;
u8 i;
@@ -2548,7 +2605,7 @@ static void DrawExperienceProgressBar(struct Pokemon *unused)
numExpProgressBarTicks = 0;
}
- r9 = &pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1][0x255];
+ r9 = &sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][1][0x255];
for (i = 0; i < 8; i++)
{
if (numExpProgressBarTicks > 7)
@@ -2560,15 +2617,15 @@ static void DrawExperienceProgressBar(struct Pokemon *unused)
numExpProgressBarTicks = 0;
}
- if (GetBgTilemapBuffer(1) == pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][0])
+ if (GetBgTilemapBuffer(1) == sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][0])
schedule_bg_copy_tilemap_to_vram(1);
else
schedule_bg_copy_tilemap_to_vram(2);
}
-static void sub_81C240C(u16 move)
+static void DrawContestMoveHearts(u16 move)
{
- u16 *tilemap = pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1];
+ u16 *tilemap = sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1];
u8 i;
u8 effectValue;
@@ -2610,27 +2667,27 @@ static void sub_81C240C(u16 move)
}
}
-static void sub_81C2524(void)
+static void LimitEggSummaryPageDisplay(void) // If the pokemon is an egg, limit the number of pages displayed to 1
{
- if (pssData->summary.isEgg)
+ if (sMonSummaryScreen->summary.isEgg)
ChangeBgX(3, 0x10000, 0);
else
ChangeBgX(3, 0, 0);
}
-static void sub_81C2554(void)
+static void ResetWindows(void)
{
u8 i;
- InitWindows(gUnknown_0861CC24);
+ InitWindows(sSummaryTemplate);
DeactivateAllTextPrinters();
for (i = 0; i < 20; i++)
{
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
}
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++)
{
- pssData->windowIds[i] = 0xFF;
+ sMonSummaryScreen->windowIds[i] = 0xFF;
}
}
@@ -2641,10 +2698,10 @@ static void SummaryScreen_PrintTextOnWindow(u8 windowId, const u8 *string, u8 x,
static void sub_81C25E8(void)
{
- FillWindowPixelBuffer(17, 0);
- FillWindowPixelBuffer(18, 0);
- FillWindowPixelBuffer(19, 0);
- if (!pssData->summary.isEgg)
+ FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, PIXEL_FILL(0));
+ FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, PIXEL_FILL(0));
+ FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, PIXEL_FILL(0));
+ if (!sMonSummaryScreen->summary.isEgg)
sub_81C2628();
else
sub_81C2794();
@@ -2654,8 +2711,8 @@ static void sub_81C25E8(void)
static void sub_81C2628(void)
{
u8 strArray[16];
- struct Pokemon *mon = &pssData->currentMon;
- struct PokeSummary *summary = &pssData->summary;
+ struct Pokemon *mon = &sMonSummaryScreen->currentMon;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
u16 dexNum = SpeciesToPokedexNum(summary->species);
if (dexNum != 0xFFFF)
{
@@ -2664,19 +2721,19 @@ static void sub_81C2628(void)
StringAppend(gStringVar1, gStringVar2);
if (!IsMonShiny(mon))
{
- SummaryScreen_PrintTextOnWindow(17, gStringVar1, 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 1);
sub_81C228C(FALSE);
}
else
{
- SummaryScreen_PrintTextOnWindow(17, gStringVar1, 0, 1, 0, 7);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 7);
sub_81C228C(TRUE);
}
- PutWindowTilemap(17);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
}
else
{
- ClearWindowTilemap(17);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
if (!IsMonShiny(mon))
sub_81C228C(FALSE);
else
@@ -2685,24 +2742,24 @@ static void sub_81C2628(void)
StringCopy(gStringVar1, &gText_LevelSymbol[0]);
ConvertIntToDecimalStringN(gStringVar2, summary->level, 0, 3);
StringAppend(gStringVar1, gStringVar2);
- SummaryScreen_PrintTextOnWindow(19, gStringVar1, 0x18, 17, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, gStringVar1, 0x18, 17, 0, 1);
GetMonNickname(mon, gStringVar1);
- SummaryScreen_PrintTextOnWindow(18, gStringVar1, 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, gStringVar1, 0, 1, 0, 1);
strArray[0] = CHAR_SLASH;
StringCopy(&strArray[1], &gSpeciesNames[summary->species2][0]);
- SummaryScreen_PrintTextOnWindow(19, &strArray[0], 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, &strArray[0], 0, 1, 0, 1);
sub_81C27DC(mon, summary->species2);
- PutWindowTilemap(18);
- PutWindowTilemap(19);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
static void sub_81C2794(void)
{
- GetMonNickname(&pssData->currentMon, gStringVar1);
- SummaryScreen_PrintTextOnWindow(18, gStringVar1, 0, 1, 0, 1);
- PutWindowTilemap(18);
- ClearWindowTilemap(17);
- ClearWindowTilemap(19);
+ GetMonNickname(&sMonSummaryScreen->currentMon, gStringVar1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, gStringVar1, 0, 1, 0, 1);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
static void sub_81C27DC(struct Pokemon *mon, u16 species)
@@ -2713,10 +2770,10 @@ static void sub_81C27DC(struct Pokemon *mon, u16 species)
switch (gender)
{
case MON_MALE:
- SummaryScreen_PrintTextOnWindow(19, gText_MaleSymbol, 57, 17, 0, 3);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, gText_MaleSymbol, 57, 17, 0, 3);
break;
case MON_FEMALE:
- SummaryScreen_PrintTextOnWindow(19, gText_FemaleSymbol, 57, 17, 0, 4);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, gText_FemaleSymbol, 57, 17, 0, 4);
break;
}
}
@@ -2724,7 +2781,8 @@ static void sub_81C27DC(struct Pokemon *mon, u16 species)
static void PrintAOrBButtonIcon(u8 windowId, bool8 bButton, u32 x)
{
- BlitBitmapToWindow(windowId, (bButton) ? gUnknown_0861CDD3 : gUnknown_0861CDD3 - 0x80, x, 0, 16, 16);
+ // sSummaryBButtonBitmap - 0x80 = sSummaryAButtonBitmap
+ BlitBitmapToWindow(windowId, (bButton) ? sSummaryBButtonBitmap : sSummaryBButtonBitmap - 0x80, x, 0, 16, 16);
}
static void PrintPageNamesAndStatsPageToWindows(void)
@@ -2733,154 +2791,154 @@ static void PrintPageNamesAndStatsPageToWindows(void)
int iconXPos;
int statsXPos;
- SummaryScreen_PrintTextOnWindow(0, gText_PkmnInfo, 2, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(1, gText_PkmnSkills, 2, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(2, gText_BattleMoves, 2, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(3, gText_ContestMoves, 2, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_INFO_TITLE, gText_PkmnInfo, 2, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE, gText_PkmnSkills, 2, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE, gText_BattleMoves, 2, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE, gText_ContestMoves, 2, 1, 0, 1);
stringXPos = GetStringRightAlignXOffset(1, gText_Cancel2, 62);
iconXPos = stringXPos - 16;
if (iconXPos < 0)
iconXPos = 0;
- PrintAOrBButtonIcon(4, FALSE, iconXPos);
- SummaryScreen_PrintTextOnWindow(4, gText_Cancel2, stringXPos, 1, 0, 0);
+ PrintAOrBButtonIcon(PSS_LABEL_WINDOW_PROMPT_CANCEL, FALSE, iconXPos);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PROMPT_CANCEL, gText_Cancel2, stringXPos, 1, 0, 0);
stringXPos = GetStringRightAlignXOffset(1, gText_Info, 0x3E);
iconXPos = stringXPos - 16;
if (iconXPos < 0)
iconXPos = 0;
- PrintAOrBButtonIcon(5, FALSE, iconXPos);
- SummaryScreen_PrintTextOnWindow(5, gText_Info, stringXPos, 1, 0, 0);
+ PrintAOrBButtonIcon(PSS_LABEL_WINDOW_PROMPT_INFO, FALSE, iconXPos);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PROMPT_INFO, gText_Info, stringXPos, 1, 0, 0);
stringXPos = GetStringRightAlignXOffset(1, gText_Switch, 0x3E);
iconXPos = stringXPos - 16;
if (iconXPos < 0)
iconXPos = 0;
- PrintAOrBButtonIcon(6, FALSE, iconXPos);
- SummaryScreen_PrintTextOnWindow(6, gText_Switch, stringXPos, 1, 0, 0);
+ PrintAOrBButtonIcon(PSS_LABEL_WINDOW_PROMPT_SWITCH, FALSE, iconXPos);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PROMPT_SWITCH, gText_Switch, stringXPos, 1, 0, 0);
- SummaryScreen_PrintTextOnWindow(8, gText_RentalPkmn, 0, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(9, gText_TypeSlash, 0, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL, gText_RentalPkmn, 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_INFO_TYPE, gText_TypeSlash, 0, 1, 0, 0);
statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_HP4, 42);
- SummaryScreen_PrintTextOnWindow(10, gText_HP4, statsXPos, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT, gText_HP4, statsXPos, 1, 0, 1);
statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_Attack3, 42);
- SummaryScreen_PrintTextOnWindow(10, gText_Attack3, statsXPos, 17, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT, gText_Attack3, statsXPos, 17, 0, 1);
statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_Defense3, 42);
- SummaryScreen_PrintTextOnWindow(10, gText_Defense3, statsXPos, 33, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT, gText_Defense3, statsXPos, 33, 0, 1);
statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_SpAtk4, 36);
- SummaryScreen_PrintTextOnWindow(11, gText_SpAtk4, statsXPos, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT, gText_SpAtk4, statsXPos, 1, 0, 1);
statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_SpDef4, 36);
- SummaryScreen_PrintTextOnWindow(11, gText_SpDef4, statsXPos, 17, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT, gText_SpDef4, statsXPos, 17, 0, 1);
statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_Speed2, 36);
- SummaryScreen_PrintTextOnWindow(11, gText_Speed2, statsXPos, 33, 0, 1);
- SummaryScreen_PrintTextOnWindow(12, gText_ExpPoints, 6, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(12, gText_NextLv, 6, 17, 0, 1);
- SummaryScreen_PrintTextOnWindow(13, gText_Status, 2, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(14, gText_Power, 0, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(14, gText_Accuracy2, 0, 17, 0, 1);
- SummaryScreen_PrintTextOnWindow(15, gText_Appeal, 0, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(15, gText_Jam, 0, 17, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT, gText_Speed2, statsXPos, 33, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP, gText_ExpPoints, 6, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP, gText_NextLv, 6, 17, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS, gText_Status, 2, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_POWER_ACC, gText_Power, 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_POWER_ACC, gText_Accuracy2, 0, 17, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM, gText_Appeal, 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM, gText_Jam, 0, 17, 0, 1);
}
-static void sub_81C2AFC(u8 a)
+static void CreatePageWindowTilemaps(u8 page)
{
u8 i;
- ClearWindowTilemap(0);
- ClearWindowTilemap(1);
- ClearWindowTilemap(2);
- ClearWindowTilemap(3);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_TITLE);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE);
- switch (a)
+ switch (page)
{
- case 0:
- PutWindowTilemap(0);
- PutWindowTilemap(4);
- if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE)
- PutWindowTilemap(8);
- PutWindowTilemap(9);
+ case PSS_PAGE_INFO:
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_TITLE);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_CANCEL);
+ if (InBattleFactory() == TRUE || InSlateportBattleTent() == TRUE)
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_TYPE);
break;
- case 1:
- PutWindowTilemap(1);
- PutWindowTilemap(10);
- PutWindowTilemap(11);
- PutWindowTilemap(12);
+ case PSS_PAGE_SKILLS:
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP);
break;
- case 2:
- PutWindowTilemap(2);
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ case PSS_PAGE_BATTLE_MOVES:
+ PutWindowTilemap(PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE);
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
- PutWindowTilemap(14);
+ if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
+ PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
}
else
{
- PutWindowTilemap(5);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO);
}
break;
- case 3:
- PutWindowTilemap(3);
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ case PSS_PAGE_CONTEST_MOVES:
+ PutWindowTilemap(PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE);
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
- PutWindowTilemap(15);
+ if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
+ PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
}
else
{
- PutWindowTilemap(5);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO);
}
break;
}
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++)
{
- PutWindowTilemap(pssData->windowIds[i]);
+ PutWindowTilemap(sMonSummaryScreen->windowIds[i]);
}
schedule_bg_copy_tilemap_to_vram(0);
}
-static void sub_81C2C38(u8 a)
+static void ClearPageWindowTilemaps(u8 page)
{
u8 i;
- switch (a)
+ switch (page)
{
- case 0:
- ClearWindowTilemap(4);
- if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE)
- ClearWindowTilemap(8);
- ClearWindowTilemap(9);
+ case PSS_PAGE_INFO:
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_CANCEL);
+ if (InBattleFactory() == TRUE || InSlateportBattleTent() == TRUE)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_TYPE);
break;
- case 1:
- ClearWindowTilemap(10);
- ClearWindowTilemap(11);
- ClearWindowTilemap(12);
+ case PSS_PAGE_SKILLS:
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP);
break;
- case 2:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ case PSS_PAGE_BATTLE_MOVES:
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
- ClearWindowTilemap(14);
+ if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
}
else
{
- ClearWindowTilemap(5);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO);
}
break;
- case 3:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ case PSS_PAGE_CONTEST_MOVES:
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
- ClearWindowTilemap(15);
+ if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
}
else
{
- ClearWindowTilemap(5);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO);
}
break;
}
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++)
{
SummaryScreen_RemoveWindowByIndex(i);
}
@@ -2890,18 +2948,18 @@ static void sub_81C2C38(u8 a)
static u8 AddWindowFromTemplateList(const struct WindowTemplate *template, u8 templateId)
{
- u8 *windowIdPtr = &(pssData->windowIds[templateId]);
+ u8 *windowIdPtr = &(sMonSummaryScreen->windowIds[templateId]);
if (*windowIdPtr == 0xFF)
{
*windowIdPtr = AddWindow(&template[templateId]);
- FillWindowPixelBuffer(*windowIdPtr, 0);
+ FillWindowPixelBuffer(*windowIdPtr, PIXEL_FILL(0));
}
return *windowIdPtr;
}
static void SummaryScreen_RemoveWindowByIndex(u8 windowIndex)
{
- u8 *windowIdPtr = &(pssData->windowIds[windowIndex]);
+ u8 *windowIdPtr = &(sMonSummaryScreen->windowIds[windowIndex]);
if (*windowIdPtr != 0xFF)
{
ClearWindowTilemap(*windowIdPtr);
@@ -2910,25 +2968,25 @@ static void SummaryScreen_RemoveWindowByIndex(u8 windowIndex)
}
}
-static void sub_81C2D9C(u8 pageIndex)
+static void PrintPageSpecificText(u8 pageIndex)
{
u16 i;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++)
{
- if (pssData->windowIds[i] != 0xFF)
- FillWindowPixelBuffer(pssData->windowIds[i], 0);
+ if (sMonSummaryScreen->windowIds[i] != 0xFF)
+ FillWindowPixelBuffer(sMonSummaryScreen->windowIds[i], PIXEL_FILL(0));
}
- gUnknown_0861CE54[pageIndex]();
+ sTextPrinterFunctions[pageIndex]();
}
-static void sub_81C2DE4(u8 pageIndex)
+static void CreateTextPrinterTask(u8 pageIndex)
{
- CreateTask(gUnknown_0861CE64[pageIndex], 16);
+ CreateTask(sTextPrinterTasks[pageIndex], 16);
}
-static void sub_81C2E00(void)
+static void PrintInfoPageText(void)
{
- if (pssData->summary.isEgg)
+ if (sMonSummaryScreen->summary.isEgg)
{
PrintEggOTName();
PrintEggOTID();
@@ -2946,7 +3004,7 @@ static void sub_81C2E00(void)
}
}
-static void sub_81C2E40(u8 taskId)
+static void Task_PrintInfoPage(u8 taskId)
{
s16 *data = gTasks[taskId].data;
switch (data[0])
@@ -2980,52 +3038,52 @@ static void PrintMonOTName(void)
{
u8 windowId;
int x;
- if (sub_81A6BF4() != TRUE && sub_81B9E94() != TRUE)
+ if (InBattleFactory() != TRUE && InSlateportBattleTent() != TRUE)
{
- windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0);
+ windowId = AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ORIGINAL_TRAINER);
SummaryScreen_PrintTextOnWindow(windowId, gText_OTSlash, 0, 1, 0, 1);
x = GetStringWidth(1, gText_OTSlash, 0);
- if (pssData->summary.OTGender == 0)
- SummaryScreen_PrintTextOnWindow(windowId, pssData->summary.OTName, x, 1, 0, 5);
+ if (sMonSummaryScreen->summary.OTGender == 0)
+ SummaryScreen_PrintTextOnWindow(windowId, sMonSummaryScreen->summary.OTName, x, 1, 0, 5);
else
- SummaryScreen_PrintTextOnWindow(windowId, pssData->summary.OTName, x, 1, 0, 6);
+ SummaryScreen_PrintTextOnWindow(windowId, sMonSummaryScreen->summary.OTName, x, 1, 0, 6);
}
}
static void PrintMonOTID(void)
{
int xPos;
- if (sub_81A6BF4() != TRUE && sub_81B9E94() != TRUE)
+ if (InBattleFactory() != TRUE && InSlateportBattleTent() != TRUE)
{
- ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)pssData->summary.OTID, 2, 5);
+ ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)sMonSummaryScreen->summary.OTID, 2, 5);
xPos = GetStringRightAlignXOffset(1, gStringVar1, 56);
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, xPos, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ID), gStringVar1, xPos, 1, 0, 1);
}
}
static void PrintMonAbilityName(void)
{
- u8 ability = GetAbilityBySpecies(pssData->summary.species, pssData->summary.altAbility);
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1);
+ u8 ability = GetAbilityBySpecies(sMonSummaryScreen->summary.species, sMonSummaryScreen->summary.altAbility);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ABILITY), gAbilityNames[ability], 0, 1, 0, 1);
}
static void PrintMonAbilityDescription(void)
{
- u8 ability = GetAbilityBySpecies(pssData->summary.species, pssData->summary.altAbility);
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0);
+ u8 ability = GetAbilityBySpecies(sMonSummaryScreen->summary.species, sMonSummaryScreen->summary.altAbility);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ABILITY), gAbilityDescriptionPointers[ability], 0, 17, 0, 0);
}
static void BufferMonTrainerMemo(void)
{
- struct PokeSummary *sum = &pssData->summary;
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
const u8 *text;
DynamicPlaceholderTextUtil_Reset();
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_0861CE74);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_0861CE7B);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sMemoNatureTextColor);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, sMemoMiscTextColor);
BufferNatureString();
- if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE || IsInGamePartnerMon() == TRUE)
+ if (InBattleFactory() == TRUE || InSlateportBattleTent() == TRUE || IsInGamePartnerMon() == TRUE)
{
DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_XNature);
}
@@ -3069,19 +3127,19 @@ static void BufferMonTrainerMemo(void)
static void PrintMonTrainerMemo(void)
{
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_MEMO), gStringVar4, 0, 1, 0, 0);
}
static void BufferNatureString(void)
{
- struct UnkSummaryStruct *sumStruct = pssData;
+ struct PokemonSummaryScreenData *sumStruct = sMonSummaryScreen;
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gNatureNamePointers[sumStruct->summary.nature]);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gText_EmptyString5);
}
static void GetMetLevelString(u8 *output)
{
- u8 level = pssData->summary.metLevel;
+ u8 level = sMonSummaryScreen->summary.metLevel;
if (level == 0)
level = EGG_HATCH_LEVEL;
ConvertIntToDecimalStringN(output, level, 0, 3);
@@ -3090,11 +3148,11 @@ static void GetMetLevelString(u8 *output)
static bool8 DoesMonOTMatchOwner(void)
{
- struct PokeSummary *sum = &pssData->summary;
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
u32 trainerId;
u8 gender;
- if (pssData->monList.mons == gEnemyParty)
+ if (sMonSummaryScreen->monList.mons == gEnemyParty)
{
u8 multiID = GetMultiplayerId() ^ 1;
trainerId = (u16)gLinkPlayers[multiID].trainerId;
@@ -3116,7 +3174,7 @@ static bool8 DoesMonOTMatchOwner(void)
static bool8 DidMonComeFromGBAGames(void)
{
- struct PokeSummary *sum = &pssData->summary;
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
if (sum->metGame > 0 && sum->metGame <= VERSION_LEAF_GREEN)
return TRUE;
return FALSE;
@@ -3124,7 +3182,7 @@ static bool8 DidMonComeFromGBAGames(void)
bool8 DidMonComeFromRSE(void)
{
- struct PokeSummary *sum = &pssData->summary;
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
if (sum->metGame > 0 && sum->metGame <= VERSION_EMERALD)
return TRUE;
return FALSE;
@@ -3134,7 +3192,7 @@ static bool8 IsInGamePartnerMon(void)
{
if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gMain.inBattle)
{
- if (pssData->curMonIndex == 1 || pssData->curMonIndex == 4 || pssData->curMonIndex == 5)
+ if (sMonSummaryScreen->curMonIndex == 1 || sMonSummaryScreen->curMonIndex == 4 || sMonSummaryScreen->curMonIndex == 5)
return TRUE;
}
return FALSE;
@@ -3142,7 +3200,7 @@ static bool8 IsInGamePartnerMon(void)
static void PrintEggOTName(void)
{
- u32 windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0);
+ u32 windowId = AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ORIGINAL_TRAINER);
u32 width = GetStringWidth(1, gText_OTSlash, 0);
SummaryScreen_PrintTextOnWindow(windowId, gText_OTSlash, 0, 1, 0, 1);
SummaryScreen_PrintTextOnWindow(windowId, gText_FiveMarks, width, 1, 0, 1);
@@ -3154,15 +3212,15 @@ static void PrintEggOTID(void)
StringCopy(gStringVar1, gText_UnkCtrlF907F908);
StringAppend(gStringVar1, gText_FiveMarks);
x = GetStringRightAlignXOffset(1, gStringVar1, 56);
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, x, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ID), gStringVar1, x, 1, 0, 1);
}
static void PrintEggState(void)
{
const u8 *text;
- struct PokeSummary *sum = &pssData->summary;
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
- if (pssData->summary.sanity == TRUE)
+ if (sMonSummaryScreen->summary.sanity == TRUE)
text = gText_EggWillTakeALongTime;
else if (sum->friendship <= 5)
text = gText_EggAboutToHatch;
@@ -3173,15 +3231,15 @@ static void PrintEggState(void)
else
text = gText_EggWillTakeALongTime;
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), text, 0, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ABILITY), text, 0, 1, 0, 0);
}
static void PrintEggMemo(void)
{
const u8 *text;
- struct PokeSummary *sum = &pssData->summary;
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
- if (pssData->summary.sanity != 1)
+ if (sMonSummaryScreen->summary.sanity != 1)
{
if (sum->metLocation == METLOC_FATEFUL_ENCOUNTER)
text = gText_PeculiarEggNicePlace;
@@ -3197,10 +3255,10 @@ static void PrintEggMemo(void)
text = gText_OddEggFoundByCouple;
}
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), text, 0, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_MEMO), text, 0, 1, 0, 0);
}
-static void sub_81C3530(void)
+static void PrintSkillsPageText(void)
{
PrintHeldItemName();
PrintRibbonCount();
@@ -3211,7 +3269,7 @@ static void sub_81C3530(void)
PrintExpPointsNextLevel();
}
-static void sub_81C3554(u8 taskId)
+static void Task_PrintSkillsPage(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -3250,22 +3308,22 @@ static void PrintHeldItemName(void)
const u8 *text;
int offset;
- if (pssData->summary.item == ITEM_ENIGMA_BERRY && IsMultiBattle() == TRUE && (pssData->curMonIndex == 1 || pssData->curMonIndex == 4 || pssData->curMonIndex == 5))
+ if (sMonSummaryScreen->summary.item == ITEM_ENIGMA_BERRY && IsMultiBattle() == TRUE && (sMonSummaryScreen->curMonIndex == 1 || sMonSummaryScreen->curMonIndex == 4 || sMonSummaryScreen->curMonIndex == 5))
{
text = ItemId_GetName(ITEM_ENIGMA_BERRY);
}
- else if (pssData->summary.item == ITEM_NONE)
+ else if (sMonSummaryScreen->summary.item == ITEM_NONE)
{
text = gText_None;
}
else
{
- CopyItemName(pssData->summary.item, gStringVar1);
+ CopyItemName(sMonSummaryScreen->summary.item, gStringVar1);
text = gStringVar1;
}
offset = GetStringCenterAlignXOffset(1, text, 72) + 6;
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 0), text, offset, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_HELD_ITEM), text, offset, 1, 0, 0);
}
static void PrintRibbonCount(void)
@@ -3273,19 +3331,19 @@ static void PrintRibbonCount(void)
const u8 *text;
int offset;
- if (pssData->summary.ribbonCount == 0)
+ if (sMonSummaryScreen->summary.ribbonCount == 0)
{
text = gText_None;
}
else
{
- ConvertIntToDecimalStringN(gStringVar1, pssData->summary.ribbonCount, 1, 2);
+ ConvertIntToDecimalStringN(gStringVar1, sMonSummaryScreen->summary.ribbonCount, 1, 2);
StringExpandPlaceholders(gStringVar4, gText_RibbonsVar1);
text = gStringVar4;
}
offset = GetStringCenterAlignXOffset(1, text, 70) + 6;
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 1), text, offset, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT), text, offset, 1, 0, 0);
}
static void BufferLeftColumnStats(void)
@@ -3295,17 +3353,17 @@ static void BufferLeftColumnStats(void)
u8 *attackString = Alloc(8);
u8 *defenseString = Alloc(8);
- ConvertIntToDecimalStringN(currentHPString, pssData->summary.currentHP, 1, 3);
- ConvertIntToDecimalStringN(maxHPString, pssData->summary.maxHP, 1, 3);
- ConvertIntToDecimalStringN(attackString, pssData->summary.atk, 1, 7);
- ConvertIntToDecimalStringN(defenseString, pssData->summary.def, 1, 7);
+ ConvertIntToDecimalStringN(currentHPString, sMonSummaryScreen->summary.currentHP, 1, 3);
+ ConvertIntToDecimalStringN(maxHPString, sMonSummaryScreen->summary.maxHP, 1, 3);
+ ConvertIntToDecimalStringN(attackString, sMonSummaryScreen->summary.atk, 1, 7);
+ ConvertIntToDecimalStringN(defenseString, sMonSummaryScreen->summary.def, 1, 7);
DynamicPlaceholderTextUtil_Reset();
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, currentHPString);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, maxHPString);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, attackString);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, defenseString);
- DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE82);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsLeftColumnLayout);
Free(currentHPString);
Free(maxHPString);
@@ -3315,31 +3373,31 @@ static void BufferLeftColumnStats(void)
static void PrintLeftColumnStats(void)
{
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_STATS_LEFT), gStringVar4, 4, 1, 0, 0);
}
static void BufferRightColumnStats(void)
{
- ConvertIntToDecimalStringN(gStringVar1, pssData->summary.spatk, 1, 3);
- ConvertIntToDecimalStringN(gStringVar2, pssData->summary.spdef, 1, 3);
- ConvertIntToDecimalStringN(gStringVar3, pssData->summary.speed, 1, 3);
+ ConvertIntToDecimalStringN(gStringVar1, sMonSummaryScreen->summary.spatk, 1, 3);
+ ConvertIntToDecimalStringN(gStringVar2, sMonSummaryScreen->summary.spdef, 1, 3);
+ ConvertIntToDecimalStringN(gStringVar3, sMonSummaryScreen->summary.speed, 1, 3);
DynamicPlaceholderTextUtil_Reset();
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar3);
- DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE8E);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsRightColumnLayout);
}
static void PrintRightColumnStats(void)
{
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 3), gStringVar4, 2, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_STATS_RIGHT), gStringVar4, 2, 1, 0, 0);
}
static void PrintExpPointsNextLevel(void)
{
- struct PokeSummary *sum = &pssData->summary;
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CCEC, 4);
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
+ u8 windowId = AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_EXP);
int offset;
u32 expToNextLevel;
@@ -3357,29 +3415,29 @@ static void PrintExpPointsNextLevel(void)
SummaryScreen_PrintTextOnWindow(windowId, gStringVar1, offset, 17, 0, 0);
}
-static void sub_81C3984(void)
+static void PrintBattleMoves(void)
{
PrintMoveNameAndPP(0);
PrintMoveNameAndPP(1);
PrintMoveNameAndPP(2);
PrintMoveNameAndPP(3);
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
PrintNewMoveDetailsOrCancelText();
- if (pssData->firstMoveIndex == MAX_MON_MOVES)
+ if (sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES)
{
- if (pssData->newMove != MOVE_NONE)
- PrintMoveDetails(pssData->newMove);
+ if (sMonSummaryScreen->newMove != MOVE_NONE)
+ PrintMoveDetails(sMonSummaryScreen->newMove);
}
else
{
- PrintMoveDetails(pssData->summary.moves[pssData->firstMoveIndex]);
+ PrintMoveDetails(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]);
}
}
}
-static void sub_81C39F0(u8 taskId)
+static void Task_PrintBattleMoves(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -3398,22 +3456,22 @@ static void sub_81C39F0(u8 taskId)
PrintMoveNameAndPP(3);
break;
case 5:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
PrintNewMoveDetailsOrCancelText();
break;
case 6:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->firstMoveIndex == MAX_MON_MOVES)
- data[1] = pssData->newMove;
+ if (sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES)
+ data[1] = sMonSummaryScreen->newMove;
else
- data[1] = pssData->summary.moves[pssData->firstMoveIndex];
+ data[1] = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex];
}
break;
case 7:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
+ if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
PrintMoveDetails(data[1]);
}
break;
@@ -3430,9 +3488,9 @@ static void PrintMoveNameAndPP(u8 moveIndex)
u32 ppState;
const u8 *text;
u32 offset;
- struct UnkSummaryStruct *summaryStruct = pssData;
- u8 moveNameWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0);
- u8 ppValueWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 1);
+ struct PokemonSummaryScreenData *summaryStruct = sMonSummaryScreen;
+ u8 moveNameWindowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_NAMES);
+ u8 ppValueWindowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_PP);
u16 move = summaryStruct->summary.moves[moveIndex];
if (move != 0)
@@ -3444,7 +3502,7 @@ static void PrintMoveNameAndPP(u8 moveIndex)
DynamicPlaceholderTextUtil_Reset();
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2);
- DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE97);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sMovesPPLayout);
text = gStringVar4;
ppState = GetCurrentPpToMaxPpState(summaryStruct->summary.pp[moveIndex], pp) + 9;
offset = GetStringRightAlignXOffset(1, text, 44);
@@ -3465,7 +3523,7 @@ static void PrintMovePowerAndAccuracy(u16 moveIndex)
const u8 *text;
if (moveIndex != 0)
{
- FillWindowPixelRect(14, 0, 53, 0, 19, 32);
+ FillWindowPixelRect(PSS_LABEL_WINDOW_MOVES_POWER_ACC, PIXEL_FILL(0), 53, 0, 19, 32);
if (gBattleMoves[moveIndex].power < 2)
{
@@ -3477,7 +3535,7 @@ static void PrintMovePowerAndAccuracy(u16 moveIndex)
text = gStringVar1;
}
- SummaryScreen_PrintTextOnWindow(14, text, 53, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_POWER_ACC, text, 53, 1, 0, 0);
if (gBattleMoves[moveIndex].accuracy == 0)
{
@@ -3489,25 +3547,25 @@ static void PrintMovePowerAndAccuracy(u16 moveIndex)
text = gStringVar1;
}
- SummaryScreen_PrintTextOnWindow(14, text, 53, 17, 0, 0);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_POWER_ACC, text, 53, 17, 0, 0);
}
}
-static void sub_81C3D08(void)
+static void PrintContestMoves(void)
{
PrintMoveNameAndPP(0);
PrintMoveNameAndPP(1);
PrintMoveNameAndPP(2);
PrintMoveNameAndPP(3);
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
PrintNewMoveDetailsOrCancelText();
- PrintContestMoveDescription(pssData->firstMoveIndex);
+ PrintContestMoveDescription(sMonSummaryScreen->firstMoveIndex);
}
}
-static void sub_81C3D54(u8 taskId)
+static void Task_PrintContestMoves(u8 taskId)
{
s16 *data = gTasks[taskId].data;
s16 dataa = data[0] - 1;
@@ -3527,14 +3585,14 @@ static void sub_81C3D54(u8 taskId)
PrintMoveNameAndPP(3);
break;
case 4:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
PrintNewMoveDetailsOrCancelText();
break;
case 5:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
- PrintContestMoveDescription(pssData->firstMoveIndex);
+ if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
+ PrintContestMoveDescription(sMonSummaryScreen->firstMoveIndex);
}
break;
case 6:
@@ -3549,24 +3607,24 @@ static void PrintContestMoveDescription(u8 moveSlot)
u16 move;
if (moveSlot == MAX_MON_MOVES)
- move = pssData->newMove;
+ move = sMonSummaryScreen->newMove;
else
- move = pssData->summary.moves[moveSlot];
+ move = sMonSummaryScreen->summary.moves[moveSlot];
if (move != MOVE_NONE)
{
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2);
+ u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_DESCRIPTION);
SummaryScreen_PrintTextOnWindow(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0);
}
}
static void PrintMoveDetails(u16 move)
{
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2);
- FillWindowPixelBuffer(windowId, 0);
+ u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_DESCRIPTION);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
if (move != MOVE_NONE)
{
- if (pssData->currPageIndex == 2)
+ if (sMonSummaryScreen->currPageIndex == PSS_MODE_BOX)
{
PrintMovePowerAndAccuracy(move);
SummaryScreen_PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0);
@@ -3587,18 +3645,18 @@ static void PrintMoveDetails(u16 move)
static void PrintNewMoveDetailsOrCancelText(void)
{
- u8 windowId1 = AddWindowFromTemplateList(gUnknown_0861CD14, 0);
- u8 windowId2 = AddWindowFromTemplateList(gUnknown_0861CD14, 1);
+ u8 windowId1 = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_NAMES);
+ u8 windowId2 = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_PP);
- if (pssData->newMove == MOVE_NONE)
+ if (sMonSummaryScreen->newMove == MOVE_NONE)
{
SummaryScreen_PrintTextOnWindow(windowId1, gText_Cancel, 0, 65, 0, 1);
}
else
{
- u16 move = pssData->newMove;
+ u16 move = sMonSummaryScreen->newMove;
- if (pssData->currPageIndex == 2)
+ if (sMonSummaryScreen->currPageIndex == 2)
SummaryScreen_PrintTextOnWindow(windowId1, gMoveNames[move], 0, 65, 0, 6);
else
SummaryScreen_PrintTextOnWindow(windowId1, gMoveNames[move], 0, 65, 0, 5);
@@ -3607,28 +3665,28 @@ static void PrintNewMoveDetailsOrCancelText(void)
DynamicPlaceholderTextUtil_Reset();
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar1);
- DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE97);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sMovesPPLayout);
SummaryScreen_PrintTextOnWindow(windowId2, gStringVar4, GetStringRightAlignXOffset(1, gStringVar4, 0x2C), 0x41, 0, 12);
}
}
static void sub_81C4064(void)
{
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0);
- FillWindowPixelRect(windowId, 0, 0, 66, 72, 16);
+ u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_NAMES);
+ FillWindowPixelRect(windowId, PIXEL_FILL(0), 0, 66, 72, 16);
CopyWindowToVram(windowId, 2);
}
static void sub_81C40A0(u8 moveIndex1, u8 moveIndex2)
{
- u8 windowId1 = AddWindowFromTemplateList(gUnknown_0861CD14, 0);
- u8 windowId2 = AddWindowFromTemplateList(gUnknown_0861CD14, 1);
+ u8 windowId1 = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_NAMES);
+ u8 windowId2 = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_PP);
- FillWindowPixelRect(windowId1, 0, 0, moveIndex1 * 16, 0x48, 0x10);
- FillWindowPixelRect(windowId1, 0, 0, moveIndex2 * 16, 0x48, 0x10);
+ FillWindowPixelRect(windowId1, PIXEL_FILL(0), 0, moveIndex1 * 16, 0x48, 0x10);
+ FillWindowPixelRect(windowId1, PIXEL_FILL(0), 0, moveIndex2 * 16, 0x48, 0x10);
- FillWindowPixelRect(windowId2, 0, 0, moveIndex1 * 16, 0x30, 0x10);
- FillWindowPixelRect(windowId2, 0, 0, moveIndex2 * 16, 0x30, 0x10);
+ FillWindowPixelRect(windowId2, PIXEL_FILL(0), 0, moveIndex1 * 16, 0x30, 0x10);
+ FillWindowPixelRect(windowId2, PIXEL_FILL(0), 0, moveIndex2 * 16, 0x30, 0x10);
PrintMoveNameAndPP(moveIndex1);
PrintMoveNameAndPP(moveIndex2);
@@ -3636,94 +3694,95 @@ static void sub_81C40A0(u8 moveIndex1, u8 moveIndex2)
static void PrintHMMovesCantBeForgotten(void)
{
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2);
- FillWindowPixelBuffer(windowId, 0);
+ u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_DESCRIPTION);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
SummaryScreen_PrintTextOnWindow(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0);
}
-static void sub_81C4190(void)
+static void ResetSpriteIds(void)
{
u8 i;
- for (i = 0; i < 28; i++)
+ for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->spriteIds); i++)
{
- pssData->spriteIds[i] = 0xFF;
+ sMonSummaryScreen->spriteIds[i] = 0xFF;
}
}
static void DestroySpriteInArray(u8 spriteArrayId)
{
- if (pssData->spriteIds[spriteArrayId] != 0xFF)
+ if (sMonSummaryScreen->spriteIds[spriteArrayId] != 0xFF)
{
- DestroySprite(&gSprites[pssData->spriteIds[spriteArrayId]]);
- pssData->spriteIds[spriteArrayId] = 0xFF;
+ DestroySprite(&gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]]);
+ sMonSummaryScreen->spriteIds[spriteArrayId] = 0xFF;
}
}
-static void sub_81C4204(u8 spriteArrayId, bool8 invisible)
+static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible)
{
- gSprites[pssData->spriteIds[spriteArrayId]].invisible = invisible;
+ gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]].invisible = invisible;
}
-static void sub_81C424C(void)
+static void HidePageSpecificSprites(void)
{
+// Keeps Pokémon, caught ball and status sprites visible.
u8 i;
- for (i = 3; i < 28; i++)
+ for (i = 3; i < ARRAY_COUNT(sMonSummaryScreen->spriteIds); i++)
{
- if (pssData->spriteIds[i] != 0xFF)
- sub_81C4204(i, TRUE);
+ if (sMonSummaryScreen->spriteIds[i] != 0xFF)
+ SetSpriteInvisibility(i, TRUE);
}
}
-static void sub_81C4280(void)
+static void SetTypeIcons(void)
{
- switch (pssData->currPageIndex)
+ switch (sMonSummaryScreen->currPageIndex)
{
- case 0:
- sub_81C43A0();
+ case PSS_PAGE_INFO:
+ SetMonTypeIcons();
break;
- case 2:
- sub_81C4420();
- sub_81C44F0();
+ case PSS_PAGE_BATTLE_MOVES:
+ SetMoveTypeIcons();
+ SetNewMoveTypeIcon();
break;
- case 3:
- sub_81C4484();
- sub_81C44F0();
+ case PSS_PAGE_CONTEST_MOVES:
+ SetContestMoveTypeIcons();
+ SetNewMoveTypeIcon();
break;
}
}
-static void sub_81C42C8(void)
+static void CreateMoveTypeIcons(void)
{
u8 i;
for (i = 3; i < 8; i++)
{
- if (pssData->spriteIds[i] == 0xFF)
- pssData->spriteIds[i] = CreateSprite(&sSpriteTemplate_MoveTypes, 0, 0, 2);
+ if (sMonSummaryScreen->spriteIds[i] == 0xFF)
+ sMonSummaryScreen->spriteIds[i] = CreateSprite(&sSpriteTemplate_MoveTypes, 0, 0, 2);
- sub_81C4204(i, TRUE);
+ SetSpriteInvisibility(i, TRUE);
}
}
static void SetMoveTypeSpritePosAndType(u8 typeId, u8 x, u8 y, u8 spriteArrayId)
{
- struct Sprite *sprite = &gSprites[pssData->spriteIds[spriteArrayId]];
+ struct Sprite *sprite = &gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]];
StartSpriteAnim(sprite, typeId);
sprite->oam.paletteNum = sMoveTypeToOamPaletteNum[typeId];
sprite->pos1.x = x + 16;
sprite->pos1.y = y + 8;
- sub_81C4204(spriteArrayId, FALSE);
+ SetSpriteInvisibility(spriteArrayId, FALSE);
}
-static void sub_81C43A0(void)
+static void SetMonTypeIcons(void)
{
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
if (summary->isEgg)
{
SetMoveTypeSpritePosAndType(TYPE_MYSTERY, 120, 48, 3);
- sub_81C4204(4, TRUE);
+ SetSpriteInvisibility(4, TRUE);
}
else
{
@@ -3731,60 +3790,60 @@ static void sub_81C43A0(void)
if (gBaseStats[summary->species].type1 != gBaseStats[summary->species].type2)
{
SetMoveTypeSpritePosAndType(gBaseStats[summary->species].type2, 0xA0, 0x30, 4);
- sub_81C4204(4, FALSE);
+ SetSpriteInvisibility(4, FALSE);
}
else
{
- sub_81C4204(4, TRUE);
+ SetSpriteInvisibility(4, TRUE);
}
}
}
-static void sub_81C4420(void)
+static void SetMoveTypeIcons(void)
{
u8 i;
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (summary->moves[i] != MOVE_NONE)
SetMoveTypeSpritePosAndType(gBattleMoves[summary->moves[i]].type, 0x55, 0x20 + (i * 0x10), i + 3);
else
- sub_81C4204(i + 3, TRUE);
+ SetSpriteInvisibility(i + 3, TRUE);
}
}
-static void sub_81C4484(void)
+static void SetContestMoveTypeIcons(void)
{
u8 i;
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (summary->moves[i] != MOVE_NONE)
SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[summary->moves[i]].contestCategory, 0x55, 0x20 + (i * 0x10), i + 3);
else
- sub_81C4204(i + 3, TRUE);
+ SetSpriteInvisibility(i + 3, TRUE);
}
}
-static void sub_81C44F0(void)
+static void SetNewMoveTypeIcon(void)
{
- if (pssData->newMove == MOVE_NONE)
+ if (sMonSummaryScreen->newMove == MOVE_NONE)
{
- sub_81C4204(7, TRUE);
+ SetSpriteInvisibility(7, TRUE);
}
else
{
- if (pssData->currPageIndex == 2)
- SetMoveTypeSpritePosAndType(gBattleMoves[pssData->newMove].type, 85, 96, 7);
+ if (sMonSummaryScreen->currPageIndex == 2)
+ SetMoveTypeSpritePosAndType(gBattleMoves[sMonSummaryScreen->newMove].type, 85, 96, 7);
else
- SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[pssData->newMove].contestCategory, 85, 96, 7);
+ SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[sMonSummaryScreen->newMove].contestCategory, 85, 96, 7);
}
}
static void sub_81C4568(u8 a0, u8 a1)
{
- struct Sprite *sprite1 = &gSprites[pssData->spriteIds[a0 + 3]];
- struct Sprite *sprite2 = &gSprites[pssData->spriteIds[a1 + 3]];
+ struct Sprite *sprite1 = &gSprites[sMonSummaryScreen->spriteIds[a0 + 3]];
+ struct Sprite *sprite2 = &gSprites[sMonSummaryScreen->spriteIds[a1 + 3]];
u8 temp = sprite1->animNum;
sprite1->animNum = sprite2->animNum;
@@ -3800,10 +3859,10 @@ static void sub_81C4568(u8 a0, u8 a1)
sprite2->animEnded = FALSE;
}
-static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1)
+static u8 CreatePokemonSprite(struct Pokemon *mon, s16 *a1)
{
const struct CompressedSpritePalette *pal;
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
switch (*a1)
{
@@ -3812,7 +3871,7 @@ static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1)
case 0:
if (gMain.inBattle)
{
- if (sub_80688F8(3, pssData->curMonIndex))
+ if (sub_80688F8(3, sMonSummaryScreen->curMonIndex))
{
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid);
}
@@ -3825,7 +3884,7 @@ static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1)
{
if (gMonSpritesGfxPtr != NULL)
{
- if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_BOX || pssData->unk40EF == TRUE)
+ if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
{
HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid);
}
@@ -3836,7 +3895,7 @@ static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1)
}
else
{
- if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_BOX || pssData->unk40EF == TRUE)
+ if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
{
HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], sub_806F4F8(0, 1), summary->species2, summary->pid);
}
@@ -3847,22 +3906,22 @@ static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1)
}
}
(*a1)++;
- return -1;
+ return 0xFF;
case 1:
pal = GetMonSpritePalStructFromOtIdPersonality(summary->species2, summary->OTID, summary->pid);
LoadCompressedSpritePalette(pal);
SetMultiuseSpriteTemplateToPokemon(pal->tag, 1);
(*a1)++;
- return -1;
+ return 0xFF;
}
}
-static void sub_81C4778(void)
+static void PlayMonCry(void)
{
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
if (!summary->isEgg)
{
- if (ShouldPlayNormalMonCry(&pssData->currentMon) == TRUE)
+ if (ShouldPlayNormalMonCry(&sMonSummaryScreen->currentMon) == TRUE)
{
PlayCry3(summary->species2, 0, 0);
}
@@ -3875,7 +3934,7 @@ static void sub_81C4778(void)
static u8 sub_81C47B4(struct Pokemon *unused)
{
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
u8 spriteId = CreateSprite(&gMultiuseSpriteTemplate, 40, 64, 5);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3883,7 +3942,7 @@ static u8 sub_81C47B4(struct Pokemon *unused)
sprite->data[0] = summary->species2;
sprite->data[2] = 0;
- gSprites[spriteId].callback = sub_81C4844;
+ gSprites[spriteId].callback = SpriteCB_Pokemon;
sprite->oam.priority = 0;
if (!IsMonSpriteNotFlipped(summary->species2))
@@ -3898,14 +3957,14 @@ static u8 sub_81C47B4(struct Pokemon *unused)
return spriteId;
}
-static void sub_81C4844(struct Sprite *sprite)
+static void SpriteCB_Pokemon(struct Sprite *sprite)
{
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
if (!gPaletteFade.active && sprite->data[2] != 1)
{
sprite->data[1] = IsMonSpriteNotFlipped(sprite->data[0]);
- sub_81C4778();
+ PlayMonCry();
PokemonSummaryDoMonAnimation(sprite, sprite->data[0], summary->isEgg);
}
}
@@ -3926,7 +3985,7 @@ void SummaryScreen_DestroyUnknownTask(void)
static bool32 SummaryScreen_DoesSpriteHaveCallback(void)
{
- if (gSprites[pssData->spriteIds[0]].callback == SpriteCallbackDummy)
+ if (gSprites[sMonSummaryScreen->spriteIds[0]].callback == SpriteCallbackDummy)
{
return FALSE;
}
@@ -3936,16 +3995,16 @@ static bool32 SummaryScreen_DoesSpriteHaveCallback(void)
}
}
-static void sub_81C48F0(void)
+static void StopPokemonAnimations(void) // A subtle effect, this function stops pokemon animations when leaving the PSS
{
u16 i;
u16 paletteIndex;
- gSprites[pssData->spriteIds[0]].animPaused = TRUE;
- gSprites[pssData->spriteIds[0]].callback = SpriteCallbackDummy;
- sub_806EE98();
+ gSprites[sMonSummaryScreen->spriteIds[0]].animPaused = TRUE;
+ gSprites[sMonSummaryScreen->spriteIds[0]].callback = SpriteCallbackDummy;
+ StopPokemonAnimationDelayTask();
- paletteIndex = (gSprites[pssData->spriteIds[0]].oam.paletteNum * 16) | 0x100;
+ paletteIndex = (gSprites[sMonSummaryScreen->spriteIds[0]].oam.paletteNum * 16) | 0x100;
for (i = 0; i < 16; i++)
{
@@ -3955,22 +4014,22 @@ static void sub_81C48F0(void)
static void CreateMonMarkingsSprite(struct Pokemon *mon)
{
- struct Sprite *sprite = sub_811FF94(30003, 30003, gUnknown_0861D120);
+ struct Sprite *sprite = sub_811FF94(30003, 30003, sSummaryMarkingsPalette);
- pssData->markingsSprite = sprite;
+ sMonSummaryScreen->markingsSprite = sprite;
if (sprite != NULL)
{
StartSpriteAnim(sprite, GetMonData(mon, MON_DATA_MARKINGS));
- pssData->markingsSprite->pos1.x = 60;
- pssData->markingsSprite->pos1.y = 26;
- pssData->markingsSprite->oam.priority = 1;
+ sMonSummaryScreen->markingsSprite->pos1.x = 60;
+ sMonSummaryScreen->markingsSprite->pos1.y = 26;
+ sMonSummaryScreen->markingsSprite->oam.priority = 1;
}
}
static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon)
{
- DestroySprite(pssData->markingsSprite);
+ DestroySprite(sMonSummaryScreen->markingsSprite);
FreeSpriteTilesByTag(30003);
CreateMonMarkingsSprite(mon);
}
@@ -3980,14 +4039,14 @@ static void CreateCaughtBallSprite(struct Pokemon *mon)
u8 ball = ItemIdToBallId(GetMonData(mon, MON_DATA_POKEBALL));
LoadBallGfx(ball);
- pssData->spriteIds[1] = CreateSprite(&gBallSpriteTemplates[ball], 16, 136, 0);
- gSprites[pssData->spriteIds[1]].callback = SpriteCallbackDummy;
- gSprites[pssData->spriteIds[1]].oam.priority = 3;
+ sMonSummaryScreen->spriteIds[1] = CreateSprite(&gBallSpriteTemplates[ball], 16, 136, 0);
+ gSprites[sMonSummaryScreen->spriteIds[1]].callback = SpriteCallbackDummy;
+ gSprites[sMonSummaryScreen->spriteIds[1]].oam.priority = 3;
}
static void CreateSetStatusSprite(void)
{
- u8 *spriteId = &pssData->spriteIds[2];
+ u8 *spriteId = &sMonSummaryScreen->spriteIds[2];
u8 anim;
if (*spriteId == 0xFF)
@@ -3995,25 +4054,25 @@ static void CreateSetStatusSprite(void)
*spriteId = CreateSprite(&sSpriteTemplate_StatusCondition, 64, 152, 0);
}
- anim = sub_81B205C(&pssData->currentMon);
+ anim = GetMonAilment(&sMonSummaryScreen->currentMon);
if (anim != 0)
{
StartSpriteAnim(&gSprites[*spriteId], anim - 1);
- sub_81C4204(2, FALSE);
+ SetSpriteInvisibility(2, FALSE);
}
else
{
- sub_81C4204(2, TRUE);
+ SetSpriteInvisibility(2, TRUE);
}
}
static void sub_81C4AF8(u8 a0)
{
u8 i;
- u8 *spriteIds = &pssData->spriteIds[a0];
+ u8 *spriteIds = &sMonSummaryScreen->spriteIds[a0];
- if (pssData->currPageIndex > 1)
+ if (sMonSummaryScreen->currPageIndex > 1)
{
u8 subsprite = 0;
if (a0 == 8)
@@ -4065,11 +4124,11 @@ static void sub_81C4BE4(struct Sprite *sprite)
if (sprite->data[0] == 8)
{
- sprite->pos2.y = pssData->firstMoveIndex * 16;
+ sprite->pos2.y = sMonSummaryScreen->firstMoveIndex * 16;
}
else
{
- sprite->pos2.y = pssData->secondMoveIndex * 16;
+ sprite->pos2.y = sMonSummaryScreen->secondMoveIndex * 16;
}
}
@@ -4085,7 +4144,7 @@ static void sub_81C4C60(u8 a0)
static void sub_81C4C84(u8 a0)
{
u8 i;
- u8 *spriteIds = &pssData->spriteIds[8];
+ u8 *spriteIds = &sMonSummaryScreen->spriteIds[8];
a0 *= 3;
for (i = 0; i < 10; i++)
@@ -4108,7 +4167,7 @@ static void sub_81C4C84(u8 a0)
static void sub_81C4D18(u8 firstSpriteId)
{
u8 i;
- u8 *spriteIds = &pssData->spriteIds[firstSpriteId];
+ u8 *spriteIds = &sMonSummaryScreen->spriteIds[firstSpriteId];
for (i = 0; i < 10; i++)
{
diff --git a/src/pokenav.c b/src/pokenav.c
new file mode 100644
index 000000000..42114a4b2
--- /dev/null
+++ b/src/pokenav.c
@@ -0,0 +1,1433 @@
+#include "global.h"
+#include "alloc.h"
+#include "task.h"
+#include "main.h"
+#include "overworld.h"
+#include "field_weather.h"
+#include "palette.h"
+#include "pokemon_storage_system.h"
+#include "sound.h"
+#include "constants/songs.h"
+#include "window.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "menu.h"
+#include "graphics.h"
+#include "dma3.h"
+#include "gba/macro.h"
+#include "decompress.h"
+#include "strings.h"
+#include "constants/rgb.h"
+
+enum
+{
+ MODE_NORMAL, // Chosen from Start menu.
+ MODE_FORCE_CALL_1, // Used for the script's special. Has to choose Match Call and make a call.
+ MODE_FORCE_CALL_2, // Set after making a call, has to exit Pokenav.
+};
+
+#define UNKNOWN_OFFSET 100000
+
+struct UnknownSubStruct_0203CF40
+{
+ void (*unk0)(u32);
+ u32 (*unk4)(void);
+ u32 unk8;
+ u32 unkC;
+ u32 unk10;
+ u32 unk14;
+ struct Sprite *unk18;
+ struct Sprite *unk1C[2];
+ struct Sprite *unk24[2];
+ u8 tilemapBuffer[0x1000];
+};
+
+#define SUBSTRUCT_COUNT 19
+
+struct UnknownStruct_0203CF40
+{
+ u32 (*field0)(void);
+ u32 field4;
+ u16 mode;
+ u16 fieldA;
+ bool32 hasAnyRibbons;
+ struct UnknownSubStruct_0203CF40 *field10[SUBSTRUCT_COUNT];
+};
+
+extern u32 sub_81C9430(void);
+extern void sub_81CAADC(void);
+extern u32 sub_81C99D4(void);
+extern void sub_8199D98(void);
+extern void sub_81C7D28(void);
+extern u32 sub_81C9298(void);
+extern u32 sub_81C941C(void);
+extern u32 sub_81C9924(void);
+extern u32 sub_81C99C0(void);
+extern u32 sub_81C9990(void);
+extern u32 sub_81C9940(void);
+extern u32 sub_81C9338(void);
+extern u32 sub_81C9368(void);
+extern u32 sub_81C92CC(void);
+extern u32 sub_81C9304(void);
+extern u32 sub_81CC4D4(void);
+extern u32 sub_81CC554(void);
+extern u32 sub_81CC5F4(void);
+extern u32 sub_81CC62C(void);
+extern u32 sub_81CC65C(void);
+extern u32 sub_81CC524(void);
+extern u32 sub_81CC670(void);
+extern u32 sub_81CCFD8(void);
+extern u32 sub_81CD070(void);
+extern u32 sub_81CDDD4(void);
+extern u32 sub_81CDE2C(void);
+extern u32 sub_81CDE64(void);
+extern u32 sub_81CD1C0(void);
+extern u32 sub_81CECA0(void);
+extern u32 sub_81CEF3C(void);
+extern u32 sub_81CEFDC(void);
+extern u32 sub_81CF330(void);
+extern u32 sub_81CF3A0(void);
+extern u32 sub_81CF3D0(void);
+extern u32 sub_81CEFF0(void);
+extern u32 sub_81CF3F8(void);
+extern u32 sub_81CD024(void);
+extern u32 sub_81CEF98(void);
+extern u32 sub_81CF368(void);
+extern u32 sub_81CAAE8(void);
+extern u32 sub_81CAB24(void);
+extern u32 sub_81CB260(void);
+extern u32 sub_81CB29C(void);
+extern u32 sub_81CB2CC(void);
+extern u32 sub_81CAB38(void);
+extern u32 sub_81CB2E0(void);
+extern u32 sub_81CF9BC(void);
+extern u32 sub_81CFA34(void);
+extern u32 sub_81CFDD0(void);
+extern u32 sub_81CFE40(void);
+extern u32 sub_81CFE70(void);
+extern u32 sub_81CFA48(void);
+extern u32 sub_81CFE98(void);
+extern u32 sub_81D0450(void);
+extern u32 sub_81D04A0(void);
+extern u32 sub_81D0978(void);
+extern u32 sub_81D09B0(void);
+extern u32 sub_81D09E0(void);
+extern u32 sub_81D04B8(void);
+extern u32 sub_81D09F4(void);
+extern u32 sub_81CFA04(void);
+extern u32 sub_81CFE08(void);
+
+u32 sub_81C791C(s32 a0);
+bool32 sub_81C756C(u32 a0);
+bool32 sub_81C76C4(void);
+static bool32 AnyMonHasRibbon(void);
+u32 sub_81C75E0(void);
+u32 sub_81C75D4(void);
+u32 sub_81C76FC(void);
+u32 sub_81C786C(void);
+u32 sub_81C7764(s32 a0);
+u32 sub_81C78D4(s32 a0);
+bool32 sub_81C7738(void);
+void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 a1, u32 a2);
+void sub_81C7834(void *func1, void *func2);
+static void InitMainStruct(struct UnknownStruct_0203CF40 *a0);
+void FreeSubstruct(u32 index);
+void sub_81C7850(u32 a0);
+void sub_81C7BF8(u32 a0);
+void sub_81C71E4(u8 a0);
+void sub_81C7170(u8 taskId);
+void sub_81C742C(u8 taskId);
+void sub_81C7710(void);
+static void InitKeys_(void);
+static void FreeVars(void);
+static void VblankCb_Pokenav(void);
+static void CB2_Pokenav(void);
+void sub_81C7C28(void);
+void sub_81C72BC(void);
+void sub_81C7B74(void);
+void sub_81C7C94(void);
+void sub_81C7F24(u32 arg0);
+void sub_81C7E58(u32 arg0);
+void sub_81C8110(bool32 arg0);
+void sub_81C80D4(bool32 arg0);
+void sub_81C803C(u32 arg0, bool32 arg1);
+void sub_81C8088(u32 arg0, bool32 arg1);
+void sub_81C814C(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3);
+void sub_81C817C(struct Sprite *sprite);
+
+// Const rom data.
+u32 (*const gUnknown_0861F3EC[15][7])(void) =
+{
+ {
+ sub_81C9298,
+ sub_81C941C,
+ sub_81C9924,
+ sub_81C9990,
+ sub_81C99C0,
+ sub_81C9430,
+ sub_81C99D4,
+ },
+ {
+ sub_81C9298,
+ sub_81C941C,
+ sub_81C9940,
+ sub_81C9990,
+ sub_81C99C0,
+ sub_81C9430,
+ sub_81C99D4,
+ },
+ {
+ sub_81C9338,
+ sub_81C941C,
+ sub_81C9940,
+ sub_81C9990,
+ sub_81C99C0,
+ sub_81C9430,
+ sub_81C99D4,
+ },
+ {
+ sub_81C9368,
+ sub_81C941C,
+ sub_81C9940,
+ sub_81C9990,
+ sub_81C99C0,
+ sub_81C9430,
+ sub_81C99D4,
+ },
+ {
+ sub_81C92CC,
+ sub_81C941C,
+ sub_81C9940,
+ sub_81C9990,
+ sub_81C99C0,
+ sub_81C9430,
+ sub_81C99D4,
+ },
+ {
+ sub_81C9304,
+ sub_81C941C,
+ sub_81C9940,
+ sub_81C9990,
+ sub_81C99C0,
+ sub_81C9430,
+ sub_81C99D4,
+ },
+ {
+ sub_81CC4D4,
+ sub_81CC554,
+ sub_81CC5F4,
+ sub_81CC62C,
+ sub_81CC65C,
+ sub_81CC524,
+ sub_81CC670,
+ },
+ {
+ sub_81CCFD8,
+ sub_81CD070,
+ sub_81CDDD4,
+ sub_81CDE2C,
+ sub_81CDE64,
+ sub_81CD1C0,
+ sub_81CECA0,
+ },
+ {
+ sub_81CEF3C,
+ sub_81CEFDC,
+ sub_81CF330,
+ sub_81CF3A0,
+ sub_81CF3D0,
+ sub_81CEFF0,
+ sub_81CF3F8,
+ },
+ {
+ sub_81CD024,
+ sub_81CD070,
+ sub_81CDDD4,
+ sub_81CDE2C,
+ sub_81CDE64,
+ sub_81CD1C0,
+ sub_81CECA0,
+ },
+ {
+ sub_81CEF98,
+ sub_81CEFDC,
+ sub_81CF368,
+ sub_81CF3A0,
+ sub_81CF3D0,
+ sub_81CEFF0,
+ sub_81CF3F8,
+ },
+ {
+ sub_81CAAE8,
+ sub_81CAB24,
+ sub_81CB260,
+ sub_81CB29C,
+ sub_81CB2CC,
+ sub_81CAB38,
+ sub_81CB2E0,
+ },
+ {
+ sub_81CF9BC,
+ sub_81CFA34,
+ sub_81CFDD0,
+ sub_81CFE40,
+ sub_81CFE70,
+ sub_81CFA48,
+ sub_81CFE98,
+ },
+ {
+ sub_81D0450,
+ sub_81D04A0,
+ sub_81D0978,
+ sub_81D09B0,
+ sub_81D09E0,
+ sub_81D04B8,
+ sub_81D09F4,
+ },
+ {
+ sub_81CFA04,
+ sub_81CFA34,
+ sub_81CFE08,
+ sub_81CFE40,
+ sub_81CFE70,
+ sub_81CFA48,
+ sub_81CFE98,
+ },
+};
+
+const u16 gUnknown_0861F590[] = INCBIN_U16("graphics/pokenav/icon2.gbapal");
+const u32 gUnknown_0861F5B0[] = INCBIN_U32("graphics/pokenav/icon2.4bpp.lz");
+const u32 gUnknown_0861F994[] = INCBIN_U32("graphics/pokenav/icon2_unused.4bpp.lz");
+
+const struct BgTemplate gUnknown_0861FA04[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 5,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0,
+ }
+};
+
+const struct WindowTemplate gUnknown_0861FA08[2] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 22,
+ .width = 16,
+ .height = 2,
+ .paletteNum = 0,
+ .baseBlock = 0x36,
+ },
+ {
+ .bg = 0xFF,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 0,
+ .height = 0,
+ .paletteNum = 0,
+ .baseBlock = 0,
+ },
+};
+
+const u8 *const (sMenuButtonReminders[12]) =
+{
+ gText_Navgear_ClearButtonList,
+ gText_NavgearMap_ZoomedOutButtons,
+ gText_NavgearMap_ZoomedInButtons,
+ gText_NavgearCondition_MonListButtons,
+ gText_NavgearCondition_MonStatusButtons,
+ gText_NavgearCondition_MarkingButtons,
+ gText_NavgearMatchCall_TrainerListButtons,
+ gText_NavgearMatchCall_CallMenuButtons,
+ gText_NavgearMatchCall_CheckTrainerButtons,
+ gText_NavgearRibbons_MonListButtons,
+ gText_NavgearRibbons_RibbonListButtons,
+ gText_NavgearRibbons_RibbonCheckButtons,
+};
+
+const u8 gMenuButtonReminderColor[4] =
+{
+ 4, 1, 2, 0
+};
+
+const struct CompressedSpriteSheet gUnknown_0861FA4C[] =
+{
+ {
+ .data = gUnknown_0861F5B0,
+ .size = 0x1000,
+ .tag = 0,
+ }
+};
+
+const struct SpritePalette gUnknown_0861FA54[2] =
+{
+ {
+ .data = gUnknown_0861F590,
+ .tag = 0,
+ },
+};
+
+const struct CompressedSpriteSheet gUnknown_0861FA64 =
+{
+ .data = gPokenavLeftHeaderHoennMap_Gfx,
+ .size = 0xC00,
+ .tag = 2
+};
+
+extern struct UnknownStruct_0203CF40 *gUnknown_0203CF40;
+extern u8 gUnknown_0203CF3C;
+extern const struct SpriteTemplate gUnknown_0861FB04;
+
+// code
+u32 sub_81C7078(u32 (*func)(s32), u32 priority)
+{
+ u16 taskId;
+
+ if (!IsUpdateLinkStateCBActive())
+ taskId = CreateTask(sub_81C7170, priority);
+ else
+ taskId = CreateTask(sub_81C71E4, priority);
+
+ SetWordTaskArg(taskId, 1, (u32)func);
+
+ gTasks[taskId].data[3] = gUnknown_0203CF3C;
+ return ((gUnknown_0203CF3C++) << 16) | taskId;
+}
+
+bool32 sub_81C70D8(u32 a0)
+{
+ u32 taskId = a0 & 0xFFFF;
+ u32 v2 = a0 >> 16;
+
+ if (gTasks[taskId].isActive
+ && (gTasks[taskId].func == sub_81C7170 || gTasks[taskId].func == sub_81C71E4)
+ && gTasks[taskId].data[3] == v2)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool32 sub_81C7124(u32 a0)
+{
+ s32 i;
+ for (i = 0; i < NUM_TASKS; i++)
+ {
+ if (gTasks[i].isActive
+ && (gTasks[i].func == sub_81C7170 || gTasks[i].func == sub_81C71E4)
+ && GetWordTaskArg(i, 1) == a0)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_81C7170(u8 taskId)
+{
+ u32 (*func)(s32) = (void *)GetWordTaskArg(taskId, 1);
+ s16 *data = gTasks[taskId].data;
+ bool32 exitLoop = FALSE;
+
+ while (!exitLoop)
+ {
+ u32 var = func(data[0]);
+ switch (var)
+ {
+ case 1:
+ data[0] = data[0] + 1;
+ break;
+ case 0:
+ data[0]++;
+ return;
+ case 4:
+ DestroyTask(taskId);
+ return;
+ default:
+ data[0] = var - 5;
+ break;
+ case 3:
+ break;
+ case 2:
+ return;
+ }
+ }
+}
+
+void sub_81C71E4(u8 taskId)
+{
+ u32 (*func)(u32);
+ s16 *data;
+ u32 v1;
+
+ if (sub_8087598())
+ return;
+ func = (u32 (*)(u32))GetWordTaskArg(taskId, 1);
+ data = gTasks[taskId].data;
+ v1 = func(data[0]);
+ switch (v1)
+ {
+ case 0:
+ case 1:
+ data[0]++;
+ break;
+ case 4:
+ DestroyTask(taskId);
+ break;
+ default:
+ data[0] = v1 - 5;
+ break;
+ case 2:
+ case 3:
+ break;
+ }
+}
+
+void CB2_InitPokeNav(void)
+{
+ gUnknown_0203CF40 = Alloc(sizeof(*gUnknown_0203CF40));
+ if (gUnknown_0203CF40 == NULL)
+ {
+ SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
+ }
+ else
+ {
+ InitMainStruct(gUnknown_0203CF40);
+ ResetTasks();
+ SetVBlankCallback(NULL);
+ CreateTask(sub_81C742C, 0);
+ SetMainCallback2(CB2_Pokenav);
+ SetVBlankCallback(VblankCb_Pokenav);
+ }
+}
+
+void sub_81C72A4(void)
+{
+ SetMainCallback2(sub_81C72BC);
+ FadeScreen(1, 0);
+}
+
+void sub_81C72BC(void)
+{
+ UpdatePaletteFade();
+ if (gPaletteFade.active)
+ return;
+
+ gUnknown_0203CF40 = Alloc(sizeof(*gUnknown_0203CF40));
+ if (gUnknown_0203CF40 == NULL)
+ {
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ }
+ else
+ {
+ InitMainStruct(gUnknown_0203CF40);
+ gUnknown_0203CF40->mode = MODE_FORCE_CALL_1;
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetVBlankCallback(NULL);
+ CreateTask(sub_81C742C, 0);
+ SetMainCallback2(CB2_Pokenav);
+ SetVBlankCallback(VblankCb_Pokenav);
+ }
+}
+
+static void FreeVars(void)
+{
+ s32 i;
+
+ for (i = 0; i < SUBSTRUCT_COUNT; i++)
+ FreeSubstruct(i);
+
+ FREE_AND_SET_NULL(gUnknown_0203CF40);
+ InitKeys();
+}
+
+// Clears UnknownStruct_0203CF40
+static void InitMainStruct(struct UnknownStruct_0203CF40 *a0)
+{
+ s32 i;
+
+ for (i = 0; i < SUBSTRUCT_COUNT; i++)
+ a0->field10[i] = NULL;
+
+ a0->mode = MODE_NORMAL;
+ a0->field4 = 0;
+ a0->hasAnyRibbons = AnyMonHasRibbon();
+ a0->field0 = NULL;
+}
+
+static bool32 AnyMonHasRibbon(void)
+{
+ s32 i, j;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_HAS_SPECIES)
+ && !GetMonData(&gPlayerParty[i], MON_DATA_SANITY_IS_EGG)
+ && GetMonData(&gPlayerParty[i], MON_DATA_RIBBON_COUNT) != 0)
+ {
+ return TRUE;
+ }
+ }
+
+ for (j = 0; j < TOTAL_BOXES_COUNT; j++)
+ {
+ for (i = 0; i < IN_BOX_COUNT; i++)
+ {
+ if (CheckBoxMonSanityAt(j, i)
+ && GetBoxMonDataAt(j, i, MON_DATA_RIBBON_COUNT) != 0)
+ {
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+static void CB2_Pokenav(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void VblankCb_Pokenav(void)
+{
+ TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+}
+
+void sub_81C742C(u8 taskId)
+{
+ u32 v1;
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_81C76C4();
+ data[0] = 1;
+ break;
+ case 1:
+ if (sub_81C76FC())
+ break;
+ sub_81C756C(UNKNOWN_OFFSET);
+ data[0] = 4;
+ break;
+ case 2:
+ if (sub_81C786C())
+ break;
+ data[0] = 3;
+ case 3:
+ v1 = sub_81C75E0();
+ if (v1 == -1)
+ {
+ sub_81C7710();
+ data[0] = 5;
+ }
+ else if (v1 >= UNKNOWN_OFFSET)
+ {
+ gUnknown_0861F3EC[gUnknown_0203CF40->field4][6]();
+ gUnknown_0861F3EC[gUnknown_0203CF40->field4][5]();
+ if (sub_81C756C(v1))
+ {
+ data[0] = 4;
+ }
+ else
+ {
+ sub_81C7710();
+ data[0] = 5;
+ }
+ }
+ else if (v1 != 0)
+ {
+ sub_81C7850(v1);
+ if (sub_81C786C())
+ data[0] = 2;
+ }
+ break;
+ case 4:
+ if (!sub_81C75D4())
+ data[0] = 3;
+ break;
+ case 5:
+ if (!sub_81C7738())
+ {
+ bool32 calledFromScript = (gUnknown_0203CF40->mode != MODE_NORMAL);
+
+ sub_81C9430();
+ FreeVars();
+ if (calledFromScript)
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ else
+ SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
+ }
+ break;
+ }
+}
+
+bool32 sub_81C756C(u32 a0)
+{
+ u32 index = a0 - UNKNOWN_OFFSET;
+
+ InitKeys_();
+ if (!gUnknown_0861F3EC[index][0]())
+ return FALSE;
+ if (!gUnknown_0861F3EC[index][2]())
+ return FALSE;
+
+ sub_81C7834(gUnknown_0861F3EC[index][3], gUnknown_0861F3EC[index][4]);
+ gUnknown_0203CF40->field0 = gUnknown_0861F3EC[index][1];
+ gUnknown_0203CF40->field4 = index;
+ return TRUE;
+}
+
+u32 sub_81C75D4(void)
+{
+ return sub_81C786C();
+}
+
+u32 sub_81C75E0(void)
+{
+ return gUnknown_0203CF40->field0();
+}
+
+static void InitKeys_(void)
+{
+ InitKeys();
+}
+
+void SetVBlankCallback_(IntrCallback callback)
+{
+ SetVBlankCallback(callback);
+}
+
+void SetPokenavVBlankCallback(void)
+{
+ SetVBlankCallback(VblankCb_Pokenav);
+}
+
+void *AllocSubstruct(u32 index, u32 size)
+{
+ return gUnknown_0203CF40->field10[index] = Alloc(size);
+}
+
+struct UnknownSubStruct_0203CF40 *GetSubstructPtr(u32 index)
+{
+ return gUnknown_0203CF40->field10[index];
+}
+
+void FreeSubstruct(u32 index)
+{
+ if (gUnknown_0203CF40->field10[index] != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203CF40->field10[index]);
+}
+
+u16 GetPokenavMode(void)
+{
+ return gUnknown_0203CF40->mode;
+}
+
+void SetPokenavMode(u16 mode)
+{
+ gUnknown_0203CF40->mode = mode;
+}
+
+void sub_81C7694(u32 a0)
+{
+ u32 value = a0;
+
+ if (value > 4)
+ value = 0;
+ gUnknown_0203CF40->fieldA = value;
+}
+
+u16 sub_81C76AC(void)
+{
+ return gUnknown_0203CF40->fieldA;
+}
+
+bool32 CanViewRibbonsMenu(void)
+{
+ return gUnknown_0203CF40->hasAnyRibbons;
+}
+
+bool32 sub_81C76C4(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = AllocSubstruct(0, 0x82C);
+ if (structPtr == NULL)
+ return FALSE;
+
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ structPtr->unkC = sub_81C7078(sub_81C7764, 1);
+ return TRUE;
+}
+
+u32 sub_81C76FC(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ return sub_81C70D8(structPtr->unkC);
+}
+
+void sub_81C7710(void)
+{
+ PlaySE(SE_PN_OFF);
+ sub_81CAADC();
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
+}
+
+bool32 sub_81C7738(void)
+{
+ if (!gPaletteFade.active)
+ {
+ sub_81C99D4();
+ sub_81C7C94();
+ FreeAllWindowBuffers();
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+u32 sub_81C7764(s32 a0)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr;
+
+ switch (a0)
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ FreeAllWindowBuffers();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_0861FA04, ARRAY_COUNT(gUnknown_0861FA04));
+ sub_8199D98();
+ reset_temp_tile_data_buffers();
+ return 1;
+ case 1:
+ structPtr = GetSubstructPtr(0);
+ decompress_and_copy_tile_data_to_vram(0, &gPokenavHeader_Gfx, 0, 0, 0);
+ SetBgTilemapBuffer(0, structPtr->tilemapBuffer);
+ CopyToBgTilemapBuffer(0, &gPokenavHeader_Tilemap, 0, 0);
+ CopyPaletteIntoBufferUnfaded(gPokenavHeader_Pal, 0, 0x20);
+ CopyBgTilemapBufferToVram(0);
+ return 0;
+ case 2:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 2;
+
+ sub_81C7B74();
+ return 0;
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return 2;
+
+ sub_81C7C28();
+ sub_81C7D28();
+ ShowBg(0);
+ return 4;
+ default:
+ return 4;
+ }
+}
+
+void sub_81C7834(void *func1, void *func2) // Fix types later.
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ structPtr->unk0 = func1;
+ structPtr->unk4 = func2;
+ structPtr->unk8 = 0;
+}
+
+void sub_81C7850(u32 a0)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ structPtr->unk8 = 0;
+ structPtr->unk0(a0);
+}
+
+u32 sub_81C786C(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ return structPtr->unk4();
+}
+
+void sub_81C7880(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ structPtr->unkC = sub_81C7078(sub_81C78D4, 4);
+}
+
+void sub_81C78A0(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ structPtr->unkC = sub_81C7078(sub_81C791C, 4);
+}
+
+bool32 sub_81C78C0(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ return sub_81C70D8(structPtr->unkC);
+}
+
+u32 sub_81C78D4(s32 a0)
+{
+ switch (a0)
+ {
+ default:
+ return 4;
+ case 1:
+ return 0;
+ case 0:
+ return 0;
+ case 2:
+ if (ChangeBgY(0, 384, 1) >= 0x2000u)
+ {
+ ChangeBgY(0, 0x2000, 0);
+ return 4;
+ }
+
+ return 2;
+ }
+}
+
+u32 sub_81C791C(s32 a0)
+{
+ if (ChangeBgY(0, 384, 2) <= 0)
+ {
+ ChangeBgY(0, 0, 0);
+ return 4;
+ }
+ return 2;
+}
+
+void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size)
+{
+ CpuCopy16(palette, gPlttBufferUnfaded + bufferOffset, size);
+}
+
+void sub_81C795C(const struct SpritePalette *palettes)
+{
+ const struct SpritePalette *current;
+ u32 index;
+
+ for (current = palettes; current->data != NULL; current++)
+ {
+ index = AllocSpritePalette(current->tag);
+ if (index == 0xFF)
+ {
+ break;
+ }
+ else
+ {
+ index = (index * 16) + 0x100;
+ CopyPaletteIntoBufferUnfaded(current->data, index, 0x20);
+ }
+ }
+}
+
+void sub_81C7990(u32 a0, u16 a1)
+{
+ CpuFill16(a1, gPlttBufferFaded + 0x100 + (a0 * 16), 16 * sizeof(u16));
+}
+
+__attribute__((naked))
+void sub_81C79BC(u16 *a0, u16 *a1, u32 a2, u32 a3, u32 a4, u32 a5)
+{
+ 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\
+ str r0, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ mov r10, r2\n\
+ str r3, [sp, 0x8]\n\
+ ldr r0, [sp, 0x2C]\n\
+ cmp r0, 0\n\
+ bne _081C79E4\n\
+ ldr r2, =0x001fffff\n\
+ mov r1, r10\n\
+ ands r2, r1\n\
+ ldr r0, [sp]\n\
+ b _081C79F4\n\
+ .pool\n\
+_081C79E4:\n\
+ ldr r2, [sp, 0x2C]\n\
+ ldr r0, [sp, 0x8]\n\
+ cmp r2, r0\n\
+ blt _081C7A00\n\
+ ldr r2, =0x001fffff\n\
+ mov r1, r10\n\
+ ands r2, r1\n\
+ ldr r0, [sp, 0x4]\n\
+_081C79F4:\n\
+ ldr r1, [sp, 0x30]\n\
+ bl CpuSet\n\
+ b _081C7AAE\n\
+ .pool\n\
+_081C7A00:\n\
+ movs r2, 0x1\n\
+ negs r2, r2\n\
+ add r10, r2\n\
+ b _081C7AA6\n\
+_081C7A08:\n\
+ ldr r1, [sp]\n\
+ ldrh r0, [r1]\n\
+ movs r2, 0x1F\n\
+ mov r9, r2\n\
+ mov r1, r9\n\
+ ands r1, r0\n\
+ mov r9, r1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 21\n\
+ movs r1, 0x1F\n\
+ ands r1, r2\n\
+ mov r8, r1\n\
+ lsrs r7, r0, 26\n\
+ movs r2, 0x1F\n\
+ ands r7, r2\n\
+ ldr r0, [sp, 0x4]\n\
+ ldrh r4, [r0]\n\
+ movs r0, 0x1F\n\
+ ands r0, r4\n\
+ mov r1, r9\n\
+ subs r0, r1\n\
+ lsls r0, 8\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ ldr r2, [sp, 0x2C]\n\
+ adds r6, r0, 0\n\
+ muls r6, r2\n\
+ asrs r6, 8\n\
+ lsls r4, 16\n\
+ lsrs r0, r4, 21\n\
+ movs r1, 0x1F\n\
+ ands r0, r1\n\
+ mov r2, r8\n\
+ subs r0, r2\n\
+ lsls r0, 8\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ ldr r1, [sp, 0x2C]\n\
+ adds r5, r0, 0\n\
+ muls r5, r1\n\
+ asrs r5, 8\n\
+ lsrs r4, 26\n\
+ movs r2, 0x1F\n\
+ ands r4, r2\n\
+ subs r4, r7\n\
+ lsls r4, 8\n\
+ adds r0, r4, 0\n\
+ ldr r1, [sp, 0x8]\n\
+ bl __divsi3\n\
+ ldr r1, [sp, 0x2C]\n\
+ muls r0, r1\n\
+ asrs r0, 8\n\
+ add r6, r9\n\
+ movs r2, 0x1F\n\
+ ands r6, r2\n\
+ add r5, r8\n\
+ ands r5, r2\n\
+ adds r0, r7, r0\n\
+ ands r0, r2\n\
+ lsls r0, 10\n\
+ lsls r5, 5\n\
+ orrs r0, r5\n\
+ orrs r0, r6\n\
+ ldr r1, [sp, 0x30]\n\
+ strh r0, [r1]\n\
+ ldr r2, [sp]\n\
+ adds r2, 0x2\n\
+ str r2, [sp]\n\
+ ldr r0, [sp, 0x4]\n\
+ adds r0, 0x2\n\
+ str r0, [sp, 0x4]\n\
+ adds r1, 0x2\n\
+ str r1, [sp, 0x30]\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ add r10, r1\n\
+_081C7AA6:\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ cmp r10, r0\n\
+ bne _081C7A08\n\
+_081C7AAE:\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 {r0}\n\
+ bx r0\n\
+ .syntax divided");
+}
+
+void sub_81C7AC0(s32 a0)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ switch (a0)
+ {
+ case 0:
+ BeginNormalPaletteFade(structPtr->unk14, -2, 0, 16, RGB_BLACK);
+ break;
+ case 1:
+ BeginNormalPaletteFade(structPtr->unk14, -2, 16, 0, RGB_BLACK);
+ break;
+ case 2:
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
+ break;
+ case 3:
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 16, 0, RGB_BLACK);
+ break;
+ }
+}
+
+bool32 IsPaletteFadeActive(void)
+{
+ return gPaletteFade.active;
+}
+
+void sub_81C7B40(void)
+{
+ BlendPalettes(0xFFFEFFFE, 16, RGB_BLACK);
+}
+
+void InitBgTemplates(const struct BgTemplate *templates, s32 count)
+{
+ s32 i;
+
+ for (i = 0; i < count; i++)
+ InitBgFromTemplate(templates++);
+}
+
+void sub_81C7B74(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ InitWindows(&gUnknown_0861FA08[0]);
+ structPtr->unk10 = 0;
+ sub_81C7BF8(structPtr->unk10);
+ PutWindowTilemap(structPtr->unk10);
+ CopyWindowToVram(structPtr->unk10, 3); // TODO: Use a defined constant here.
+}
+
+void sub_81C7BA4(u32 a0)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ sub_81C7BF8(structPtr->unk10);
+ AddTextPrinterParameterized3(structPtr->unk10, 1, 0, 1, gMenuButtonReminderColor, 0, sMenuButtonReminders[a0]);
+}
+
+bool32 IsDma3ManagerBusyWithBgCopy_(void)
+{
+ return IsDma3ManagerBusyWithBgCopy();
+}
+
+void sub_81C7BF8(u32 windowId)
+{
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(4));
+ FillWindowPixelRect(windowId, PIXEL_FILL(5), 0, 0, 0x80, 1);
+}
+
+void sub_81C7C28(void)
+{
+ s32 i;
+ u8 spriteId;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ for (i = 0; i < ARRAY_COUNT(gUnknown_0861FA4C); i++)
+ LoadCompressedSpriteSheet(&gUnknown_0861FA4C[i]);
+
+ sub_81C795C(gUnknown_0861FA54);
+ structPtr->unk14 = ~1 & ~(0x10000 << IndexOfSpritePaletteTag(0));
+ spriteId = CreateSprite(&gUnknown_0861FB04, 220, 12, 0);
+ structPtr->unk18 = &gSprites[spriteId];
+}
+
+void sub_81C7C94(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ DestroySprite(structPtr->unk18);
+ FreeSpriteTilesByTag(0);
+ FreeSpritePaletteByTag(0);
+}
+
+void sub_81C7CB4(struct Sprite *sprite)
+{
+ sprite->pos2.y = (GetBgY(0) / 256u) * -1;
+}
+
+struct Sprite *sub_81C7CCC(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ structPtr->unk18->callback = SpriteCallbackDummy;
+ return structPtr->unk18;
+}
+
+void sub_81C7CE4(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ structPtr->unk18->pos1.x = 220;
+ structPtr->unk18->pos1.y = 12;
+ structPtr->unk18->callback = sub_81C7CB4;
+ structPtr->unk18->invisible = FALSE;
+ structPtr->unk18->oam.priority = 0;
+ structPtr->unk18->subpriority = 0;
+}
+
+extern const struct SpriteTemplate gUnknown_0861FB2C;
+extern const struct SpriteTemplate gUnknown_0861FB44;
+extern const struct CompressedSpriteSheet gUnknown_0861FA6C[];
+
+void sub_81C7D28(void)
+{
+ s32 i, spriteId;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ LoadCompressedSpriteSheet(&gUnknown_0861FA64);
+ AllocSpritePalette(1);
+ AllocSpritePalette(2);
+ for (i = 0; i < 2; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_0861FB2C, 0, 0, 1);
+ structPtr->unk1C[i] = &gSprites[spriteId];
+ structPtr->unk1C[i]->invisible = TRUE;
+ structPtr->unk1C[i]->pos2.x = i * 64;
+
+ spriteId = CreateSprite(&gUnknown_0861FB44, 0, 0, 2);
+ structPtr->unk24[i] = &gSprites[spriteId];
+ structPtr->unk24[i]->invisible = TRUE;
+ structPtr->unk24[i]->pos2.x = i * 32;
+ structPtr->unk24[i]->pos2.y = 18;
+ structPtr->unk24[i]->oam.tileNum += (i * 8) + 64;
+ }
+}
+
+void sub_81C7DFC(u32 arg0)
+{
+ if (arg0 < 6)
+ sub_81C7E58(arg0);
+ else
+ sub_81C7F24(arg0 - 6);
+}
+
+void sub_81C7E14(u32 arg0)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ if (arg0 == 4)
+ structPtr->unk1C[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 32;
+ else
+ structPtr->unk1C[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 64;
+}
+
+void sub_81C7E58(u32 arg0)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr;
+ u32 size, tag;
+
+ if (arg0 >= 6)
+ return;
+
+ structPtr = GetSubstructPtr(0);
+ tag = gUnknown_0861FA6C[arg0].tag;
+ size = GetDecompressedDataSize(gUnknown_0861FA6C[arg0].data);
+ LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(1) * 16) + 0x100, 0x20);
+ LZ77UnCompWram(gUnknown_0861FA6C[arg0].data, gDecompressionBuffer);
+ RequestDma3Copy(gDecompressionBuffer, (void *)VRAM + 0x10000 + (GetSpriteTileStartByTag(2) * 32), size, 1);
+ structPtr->unk1C[1]->oam.tileNum = GetSpriteTileStartByTag(2) + gUnknown_0861FA6C[arg0].size;
+
+ if (arg0 == 4 || arg0 == 5)
+ structPtr->unk1C[1]->pos2.x = 56;
+ else
+ structPtr->unk1C[1]->pos2.x = 64;
+}
+
+// Needed to match u32/u16 tag field difference.
+struct CompressedSpritePalette_
+{
+ const u32 *data; // LZ77 compressed palette data
+ u32 tag;
+};
+
+extern const struct CompressedSpritePalette_ gUnknown_0861FA9C[];
+
+void sub_81C7F24(u32 arg0)
+{
+ u32 size, tag;
+
+ if (arg0 >= 7)
+ return;
+
+ tag = gUnknown_0861FA9C[arg0].tag;
+ size = GetDecompressedDataSize(gUnknown_0861FA9C[arg0].data);
+ LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(2) * 16) + 0x100, 0x20);
+ LZ77UnCompWram(gUnknown_0861FA9C[arg0].data, &gDecompressionBuffer[0x1000]);
+ RequestDma3Copy(&gDecompressionBuffer[0x1000], (void *)VRAM + 0x10800 + (GetSpriteTileStartByTag(2) * 32), size, 1);
+}
+
+void sub_81C7FA0(u32 arg0, bool32 arg1, bool32 arg2)
+{
+ u32 var;
+
+ if (!arg1)
+ var = 0x30;
+ else
+ var = 0x10;
+
+ if (arg0 < 6)
+ sub_81C803C(var, arg2);
+ else
+ sub_81C8088(var, arg2);
+}
+
+void sub_81C7FC4(u32 arg0, bool32 arg1)
+{
+ if (arg0 < 6)
+ sub_81C80D4(arg1);
+ else
+ sub_81C8110(arg1);
+}
+
+void sub_81C7FDC(void)
+{
+ s32 i;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ for (i = 0; i < 2; i++)
+ {
+ structPtr->unk1C[i]->invisible = TRUE;
+ structPtr->unk24[i]->invisible = TRUE;
+ }
+}
+
+bool32 sub_81C8010(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ if (structPtr->unk1C[0]->callback == SpriteCallbackDummy && structPtr->unk24[0]->callback == SpriteCallbackDummy)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+void sub_81C803C(u32 arg0, bool32 arg1)
+{
+ s32 var1, var2, i;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ if (!arg1)
+ var1 = -96, var2 = 32;
+ else
+ var1 = 256, var2 = 160;
+
+ for (i = 0; i < 2; i++)
+ {
+ structPtr->unk1C[i]->pos1.y = arg0;
+ sub_81C814C(structPtr->unk1C[i], var1, var2, 12);
+ }
+}
+
+void sub_81C8088(u32 arg0, bool32 arg1)
+{
+ s32 var1, var2, i;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ if (!arg1)
+ var1 = -96, var2 = 16;
+ else
+ var1 = 256, var2 = 192;
+
+ for (i = 0; i < 2; i++)
+ {
+ structPtr->unk24[i]->pos1.y = arg0;
+ sub_81C814C(structPtr->unk24[i], var1, var2, 12);
+ }
+}
+
+void sub_81C80D4(bool32 arg0)
+{
+ s32 var1, var2, i;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ if (!arg0)
+ var1 = 32, var2 = -96;
+ else
+ var1 = 192, var2 = 256;
+
+ for (i = 0; i < 2; i++)
+ {
+ sub_81C814C(structPtr->unk1C[i], var1, var2, 12);
+ }
+}
+
+void sub_81C8110(bool32 arg0)
+{
+ s32 var1, var2, i;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ if (!arg0)
+ var1 = 16, var2 = -96;
+ else
+ var1 = 192, var2 = 256;
+
+ for (i = 0; i < 2; i++)
+ {
+ sub_81C814C(structPtr->unk24[i], var1, var2, 12);
+ }
+}
+
+void sub_81C814C(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3)
+{
+ sprite->pos1.x = arg1;
+ sprite->data[0] = arg1 * 16;
+ sprite->data[1] = (arg2 - arg1) * 16 / arg3;
+ sprite->data[2] = arg3;
+ sprite->data[7] = arg2;
+ sprite->callback = sub_81C817C;
+}
+
+void sub_81C817C(struct Sprite *sprite)
+{
+ if (sprite->data[2] != 0)
+ {
+ sprite->data[2]--;
+ sprite->data[0] += sprite->data[1];
+ sprite->pos1.x = sprite->data[0] >> 4;
+ if (sprite->pos1.x < -16 || sprite->pos1.x > 256)
+ sprite->invisible = TRUE;
+ else
+ sprite->invisible = FALSE;
+ }
+ else
+ {
+ sprite->pos1.x = sprite->data[7];
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+/*
+bool32 sub_81C81D4(const void *arg0, void *arg1, s32 arg3)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = AllocSubstruct(0x11, 0x8A4);
+
+ if (structPtr == NULL)
+ return FALSE;
+}
+*/
diff --git a/src/pokenav_match_call.c b/src/pokenav_match_call.c
index 53f9f0548..b775ed10e 100644
--- a/src/pokenav_match_call.c
+++ b/src/pokenav_match_call.c
@@ -1,13 +1,11 @@
-
-// Includes
#include "global.h"
#include "battle_setup.h"
#include "event_data.h"
#include "string_util.h"
#include "battle.h"
#include "gym_leader_rematch.h"
+#include "match_call.h"
-extern void sub_8197080(u8 *dest);
extern const u8 gTrainerClassNames[][13];
// Static type declarations
diff --git a/src/psychic.c b/src/psychic.c
index 5756fe97f..6f808b547 100644
--- a/src/psychic.c
+++ b/src/psychic.c
@@ -939,7 +939,7 @@ static void sub_810FD3C(u8 taskId)
void sub_810FDF0(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c
index 00a73a0a2..e2497a8dc 100644
--- a/src/rayquaza_scene.c
+++ b/src/rayquaza_scene.c
@@ -105,10 +105,10 @@ static const struct OamData sOamData_862A6BC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -122,10 +122,10 @@ static const struct OamData sOamData_862A6C4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -139,10 +139,10 @@ static const struct OamData sOamData_862A6CC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(64x32),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x32),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -156,10 +156,10 @@ static const struct OamData sOamData_862A6D4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(32x16),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x16),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -173,10 +173,10 @@ static const struct OamData sOamData_862A6DC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(16x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(16x8),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -190,10 +190,10 @@ static const struct OamData sOamData_862A6E4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 2,
+ .shape = SPRITE_SHAPE(16x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(16x32),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -207,10 +207,10 @@ static const struct OamData sOamData_862A6EC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
@@ -224,10 +224,10 @@ static const struct OamData sOamData_862A6F4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(32x8),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(32x8),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 189033685..3a16f817e 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -34,9 +34,8 @@
#include "daycare.h"
#include "international_string_util.h"
#include "constants/battle_frontier.h"
+#include "dewford_trend.h"
-extern void ReceiveSecretBasesData(struct SecretBaseRecord *, size_t, u8);
-extern void ReceiveEasyChatPairsData(struct EasyChatPair *, size_t, u8);
// Static type declarations
@@ -106,7 +105,7 @@ static EWRAM_DATA union PlayerRecords *sSentRecord = NULL;
// Static ROM declarations
static void Task_RecordMixing_Main(u8 taskId);
-static void sub_80E7324(u8 taskId);
+static void Task_MixingRecordsRecv(u8 taskId);
static void Task_SendPacket(u8 taskId);
static void Task_CopyReceiveBuffer(u8 taskId);
static void Task_SendPacket_SwitchToReceive(u8 taskId);
@@ -120,7 +119,7 @@ static void ReceiveLilycoveLadyData(LilycoveLady *, size_t, u8);
static void sub_80E7B2C(const u8 *);
static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *, size_t, u8, TVShow *);
static void ReceiveGiftItem(u16 *item, u8 which);
-static void sub_80E7FF8(u8 taskId);
+static void Task_DoRecordMixing(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 ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t arg1, u32 arg2);
@@ -170,7 +169,8 @@ static const u8 gUnknown_0858CFBE[3][4] =
#define BUFFER_CHUNK_SIZE 200
-void sub_80E6BE8(void)
+// Note: VAR_0x8005 contains the spotId.
+void RecordMixingPlayerSpotTriggered(void)
{
sub_80B37D4(Task_RecordMixing_Main);
}
@@ -292,7 +292,7 @@ static void ReceiveExchangePacket(u32 which)
static void PrintTextOnRecordMixing(const u8 *src)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, src, 0, 1, 0, NULL);
CopyWindowToVram(0, 3);
}
@@ -313,6 +313,7 @@ static void Task_RecordMixing_SoundEffect(u8 taskId)
#define tState data[0]
#define tSndEffTaskId data[15]
+// Note: Currently, special var 8005 contains the player's spot id.
static void Task_RecordMixing_Main(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -322,16 +323,16 @@ static void Task_RecordMixing_Main(u8 taskId)
case 0: // init
sSentRecord = malloc(sizeof(union PlayerRecords));
sReceivedRecords = malloc(sizeof(union PlayerRecords) * 4);
- sub_8009628(gSpecialVar_0x8005);
+ SetLocalLinkPlayerId(gSpecialVar_0x8005);
VarSet(VAR_TEMP_0, 1);
gUnknown_03001130 = FALSE;
PrepareExchangePacket();
CreateRecordMixingSprite();
tState = 1;
- data[10] = CreateTask(sub_80E7324, 80);
+ data[10] = CreateTask(Task_MixingRecordsRecv, 80);
tSndEffTaskId = CreateTask(Task_RecordMixing_SoundEffect, 81);
break;
- case 1: // wait for sub_80E7324
+ case 1: // wait for Task_MixingRecordsRecv
if (!gTasks[data[10]].isActive)
{
tState = 2;
@@ -341,11 +342,11 @@ static void Task_RecordMixing_Main(u8 taskId)
}
break;
case 2:
- data[10] = CreateTask(sub_80E7FF8, 10);
+ data[10] = CreateTask(Task_DoRecordMixing, 10);
tState = 3;
PlaySE(SE_W226);
break;
- case 3: // wait for sub_80E7FF8
+ case 3: // wait for Task_DoRecordMixing
if (!gTasks[data[10]].isActive)
{
tState = 4;
@@ -370,7 +371,7 @@ static void Task_RecordMixing_Main(u8 taskId)
{
CreateTask(sub_80AF2B4, 10);
}
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
DestroyTask(taskId);
EnableBothScriptContexts();
}
@@ -381,7 +382,7 @@ static void Task_RecordMixing_Main(u8 taskId)
#undef tState
#undef tSndEffTaskId
-static void sub_80E7324(u8 taskId)
+static void Task_MixingRecordsRecv(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -405,7 +406,7 @@ static void sub_80E7324(u8 taskId)
u8 players = GetLinkPlayerCount_2();
if (IsLinkMaster() == TRUE)
{
- if (players == sub_800AA48())
+ if (players == GetSavedPlayerCount())
{
PlaySE(SE_PIN);
task->data[0] = 201;
@@ -420,14 +421,15 @@ static void sub_80E7324(u8 taskId)
}
break;
case 201:
- if (sub_800AA48() == GetLinkPlayerCount_2() && ++task->data[12] > (GetLinkPlayerCount_2() * 30))
+ // We're the link master. Delay for 30 frames per connected player.
+ if (GetSavedPlayerCount() == GetLinkPlayerCount_2() && ++task->data[12] > (GetLinkPlayerCount_2() * 30))
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
task->data[0] = 1;
}
break;
case 301:
- if (sub_800AA48() == GetLinkPlayerCount_2())
+ if (GetSavedPlayerCount() == GetLinkPlayerCount_2())
task->data[0] = 1;
break;
case 400: // wait 20 frames
@@ -470,6 +472,7 @@ static void sub_80E7324(u8 taskId)
StorePtrInTaskData(sReceivedRecords, (u16 *)&gTasks[subTaskId].data[5]);
sRecordStructSize = sizeof(struct PlayerRecordsEmerald);
}
+ // Note: This task is destroyed by Task_CopyReceiveBuffer when it's done.
}
break;
case 5: // wait 60 frames
@@ -938,7 +941,7 @@ static void ReceiveGiftItem(u16 *item, u8 which)
}
}
-static void sub_80E7FF8(u8 taskId)
+static void Task_DoRecordMixing(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -953,20 +956,22 @@ static void sub_80E7FF8(u8 taskId)
else
task->data[0] = 6;
break;
+
+ // Mixing Ruby/Sapphire records.
case 2:
SetContinueGameWarpStatusToDynamicWarp();
- sub_8153430();
+ FullSaveGame();
task->data[0] ++;
break;
case 3:
- if (sub_8153474())
+ if (CheckSaveFile())
{
ClearContinueGameWarpStatus2();
task->data[0] = 4;
task->data[1] = 0;
}
break;
- case 4:
+ case 4: // Wait 10 frames
if (++task->data[1] > 10)
{
sub_800AC34();
@@ -974,22 +979,24 @@ static void sub_80E7FF8(u8 taskId)
}
break;
case 5:
- if (gReceivedRemoteLinkPlayers == 0)
+ if (gReceivedRemoteLinkPlayers == FALSE)
DestroyTask(taskId);
break;
+
+ // Mixing Emerald records.
case 6:
- if (!sub_801048C(0))
+ if (!sub_801048C(FALSE))
{
CreateTask(sub_8153688, 5);
task->data[0] ++;
}
break;
- case 7:
+ case 7: // wait for sub_8153688 to finish.
if (!FuncIsActiveTask(sub_8153688))
{
if (gWirelessCommType)
{
- sub_801048C(1);
+ sub_801048C(TRUE);
task->data[0] = 8;
}
else
@@ -1087,7 +1094,7 @@ void GetPlayerHallRecords(struct PlayerHallRecords *dst)
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]);
+ StringCopy(dst->twoPlayers[j].name2, gSaveBlock2Ptr->frontier.opponentName[j]);
}
for (i = 0; i < 2; i++)
diff --git a/src/region_map.c b/src/region_map.c
index ff0c19167..25b47479d 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -36,6 +36,13 @@
// Static type declarations
+struct FlagControlledFlyDest
+{
+ const u8 *const *name;
+ u16 mapSecId;
+ u16 flag;
+};
+
// Static RAM declarations
static EWRAM_DATA struct RegionMap *gRegionMap = NULL;
@@ -106,7 +113,8 @@ static const u8 sRegionMap_MapSectionLayout[] = INCBIN_U8("graphics/pokenav/regi
#include "data/region_map/region_map_entries.h"
-static const u16 sRegionMap_SpecialPlaceLocations[][2] = {
+static const u16 sRegionMap_SpecialPlaceLocations[][2] =
+{
{MAPSEC_UNDERWATER_TERRA_CAVE, MAPSEC_ROUTE_105},
{MAPSEC_UNDERWATER_124, MAPSEC_ROUTE_124},
{MAPSEC_UNDERWATER_UNK1, MAPSEC_ROUTE_129},
@@ -133,13 +141,15 @@ static const u16 sRegionMap_SpecialPlaceLocations[][2] = {
{MAPSEC_NONE, MAPSEC_NONE}
};
-static const u16 sRegionMap_MarineCaveMapSecIds[] = {
+static const u16 sRegionMap_MarineCaveMapSecIds[] =
+{
MAPSEC_MARINE_CAVE,
MAPSEC_UNDERWATER_MARINE_CAVE,
MAPSEC_UNDERWATER_MARINE_CAVE
};
-static const u16 sTerraCaveMapSectionIds[] = {
+static const u16 sTerraCaveMapSectionIds[] =
+{
MAPSEC_ROUTE_114,
MAPSEC_ROUTE_114,
MAPSEC_ROUTE_115,
@@ -158,7 +168,8 @@ static const u16 sTerraCaveMapSectionIds[] = {
MAPSEC_ROUTE_129
};
-static const struct UCoords16 sTerraCaveLocationCoords[] = {
+static const struct UCoords16 sTerraCaveLocationCoords[] =
+{
{0x00, 0x0a},
{0x00, 0x0c},
{0x18, 0x03},
@@ -169,21 +180,27 @@ static const struct UCoords16 sTerraCaveLocationCoords[] = {
{0x18, 0x0a}
};
-static const u8 sRegionMap_MapSecAquaHideoutOld[] = {
+static const u8 sRegionMap_MapSecAquaHideoutOld[] =
+{
MAPSEC_AQUA_HIDEOUT_OLD
};
-static const struct OamData sRegionMapCursorOam = {
- .size = 1, .priority = 1
+static const struct OamData sRegionMapCursorOam =
+{
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
+ .priority = 1
};
-static const union AnimCmd sRegionMapCursorAnim1[] = {
+static const union AnimCmd sRegionMapCursorAnim1[] =
+{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(4, 20),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd sRegionMapCursorAnim2[] = {
+static const union AnimCmd sRegionMapCursorAnim2[] =
+{
ANIMCMD_FRAME( 0, 10),
ANIMCMD_FRAME(16, 10),
ANIMCMD_FRAME(32, 10),
@@ -191,37 +208,49 @@ static const union AnimCmd sRegionMapCursorAnim2[] = {
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const sRegionMapCursorAnimTable[] = {
+static const union AnimCmd *const sRegionMapCursorAnimTable[] =
+{
sRegionMapCursorAnim1,
sRegionMapCursorAnim2
};
-static const struct SpritePalette sRegionMapCursorSpritePalette = { sRegionMapCursorPal, 0 };
+static const struct SpritePalette sRegionMapCursorSpritePalette =
+{
+ .data = sRegionMapCursorPal,
+ .tag = 0
+};
-static const struct SpriteTemplate sRegionMapCursorSpriteTemplate = {
- 0,
- 0,
- &sRegionMapCursorOam,
- sRegionMapCursorAnimTable,
- NULL,
- gDummySpriteAffineAnimTable,
- SpriteCallback_CursorFull
+static const struct SpriteTemplate sRegionMapCursorSpriteTemplate =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &sRegionMapCursorOam,
+ .anims = sRegionMapCursorAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_CursorFull
};
-static const struct OamData sRegionMapPlayerIconOam = {
- .size = 1, .priority = 2
+static const struct OamData sRegionMapPlayerIconOam =
+{
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
+ .priority = 2
};
-static const union AnimCmd sRegionMapPlayerIconAnim1[] = {
+static const union AnimCmd sRegionMapPlayerIconAnim1[] =
+{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
-static const union AnimCmd *const sRegionMapPlayerIconAnimTable[] = {
+static const union AnimCmd *const sRegionMapPlayerIconAnimTable[] =
+{
sRegionMapPlayerIconAnim1
};
-static const u8 sRegionMapEventSectionIds[] = {
+static const u8 sRegionMapEventSectionIds[] =
+{
MAPSEC_BIRTH_ISLAND_2,
MAPSEC_FARAWAY_ISLAND,
MAPSEC_NAVEL_ROCK2
@@ -237,7 +266,8 @@ static const u16 Unknown_085A1D48[] = INCBIN_U16("graphics/pokenav/fly_target_ic
static const u32 sUnknown_085A1D68[] = INCBIN_U32("graphics/pokenav/fly_target_icons.4bpp.lz");
-static const u8 sMapHealLocations[][3] = {
+static const u8 sMapHealLocations[][3] =
+{
{MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F},
{MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), HEAL_LOCATION_OLDALE_TOWN},
{MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), HEAL_LOCATION_DEWFORD_TOWN},
@@ -290,83 +320,150 @@ static const u8 sMapHealLocations[][3] = {
{MAP_GROUP(ROUTE134), MAP_NUM(ROUTE134), 0}
};
-static const u8 *const gUnknown_085A1ED4[] = {
+static const u8 *const gUnknown_085A1ED4[] =
+{
gText_PokemonLeague,
gText_PokemonCenter
};
-static const struct {
- const u8 *const *name;
- u16 mapSecId;
- u16 flag;
-} gUnknown_085A1EDC[] = {
- gUnknown_085A1ED4,
- MAPSEC_EVER_GRANDE_CITY,
- FLAG_LANDMARK_POKEMON_LEAGUE
+static const struct FlagControlledFlyDest gUnknown_085A1EDC[] =
+{
+ {
+ .name = gUnknown_085A1ED4,
+ .mapSecId = MAPSEC_EVER_GRANDE_CITY,
+ .flag = FLAG_LANDMARK_POKEMON_LEAGUE
+ }
};
-static const struct BgTemplate gUnknown_085A1EE4[] = {
- { .bg = 0, .charBaseIndex = 0, .mapBaseIndex = 31, .screenSize = 0, .paletteMode = 0, .priority = 0 },
- { .bg = 1, .charBaseIndex = 3, .mapBaseIndex = 30, .screenSize = 0, .paletteMode = 0, .priority = 1 },
- { .bg = 2, .charBaseIndex = 2, .mapBaseIndex = 28, .screenSize = 2, .paletteMode = 1, .priority = 2 }
+static const struct BgTemplate gUnknown_085A1EE4[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 28,
+ .screenSize = 2,
+ .paletteMode = 1,
+ .priority = 2
+ }
};
-static const struct WindowTemplate gUnknown_085A1EF0[] = {
- { 0, 17, 17, 12, 2, 15, 0x01 },
- { 0, 17, 15, 12, 4, 15, 0x19 },
- { 0, 1, 18, 14, 2, 15, 0x49 },
+static const struct WindowTemplate gUnknown_085A1EF0[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 17,
+ .tilemapTop = 17,
+ .width = 12,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x01
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 17,
+ .tilemapTop = 15,
+ .width = 12,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x19
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 18,
+ .width = 14,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x49
+ },
DUMMY_WIN_TEMPLATE
};
-static const struct SpritePalette gUnknown_085A1F10 = {
- Unknown_085A1D48, 2
+static const struct SpritePalette gUnknown_085A1F10 =
+{
+ .data = Unknown_085A1D48,
+ .tag = 2
};
-static const u16 sUnknown_085A1F18[][2] = {
- {FLAG_LANDMARK_BATTLE_FRONTIER, MAPSEC_BATTLE_FRONTIER},
- {-1, MAPSEC_NONE}
+static const u16 sUnknown_085A1F18[][2] =
+{
+ {
+ FLAG_LANDMARK_BATTLE_FRONTIER,
+ MAPSEC_BATTLE_FRONTIER
+ },
+ {
+ -1,
+ MAPSEC_NONE
+ }
};
-static const struct OamData gOamData_085A1F20 = {
+static const struct OamData gOamData_085A1F20 =
+{
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
.priority = 2
};
-static const union AnimCmd gUnknown_085A1F28[] = {
+static const union AnimCmd gUnknown_085A1F28[] =
+{
ANIMCMD_FRAME( 0, 5),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A1F30[] = {
+static const union AnimCmd gUnknown_085A1F30[] =
+{
ANIMCMD_FRAME( 1, 5),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A1F38[] = {
+static const union AnimCmd gUnknown_085A1F38[] =
+{
ANIMCMD_FRAME( 3, 5),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A1F40[] = {
+static const union AnimCmd gUnknown_085A1F40[] =
+{
ANIMCMD_FRAME( 5, 5),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A1F48[] = {
+static const union AnimCmd gUnknown_085A1F48[] =
+{
ANIMCMD_FRAME( 6, 5),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A1F50[] = {
+static const union AnimCmd gUnknown_085A1F50[] =
+{
ANIMCMD_FRAME( 8, 5),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A1F58[] = {
+static const union AnimCmd gUnknown_085A1F58[] =
+{
ANIMCMD_FRAME(10, 5),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_085A1F60[] = {
+static const union AnimCmd *const gUnknown_085A1F60[] =
+{
gUnknown_085A1F28,
gUnknown_085A1F30,
gUnknown_085A1F38,
@@ -376,14 +473,15 @@ static const union AnimCmd *const gUnknown_085A1F60[] = {
gUnknown_085A1F58
};
-static const struct SpriteTemplate gUnknown_085A1F7C = {
- 2,
- 2,
- &gOamData_085A1F20,
- gUnknown_085A1F60,
- NULL,
- gDummySpriteAffineAnimTable,
- SpriteCallbackDummy
+static const struct SpriteTemplate gUnknown_085A1F7C =
+{
+ .tileTag = 2,
+ .paletteTag = 2,
+ .oam = &gOamData_085A1F20,
+ .anims = gUnknown_085A1F60,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
};
// .text
@@ -883,7 +981,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
case MAP_TYPE_CITY:
case MAP_TYPE_ROUTE:
case MAP_TYPE_UNDERWATER:
- case MAP_TYPE_6:
+ case MAP_TYPE_OCEAN_ROUTE:
gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
gRegionMap->playerIsInCave = FALSE;
mapWidth = gMapHeader.mapLayout->width;
@@ -896,7 +994,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
}
break;
case MAP_TYPE_UNDERGROUND:
- case MAP_TYPE_7:
+ case MAP_TYPE_UNUSED_2:
if (gMapHeader.flags & 0x02)
{
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
@@ -1159,7 +1257,7 @@ static u16 RegionMap_GetTerraCaveMapSecId(void)
{
s16 idx;
- idx = VarGet(VAR_0x4037) - 1;
+ idx = VarGet(VAR_UNUSUAL_WEATHER_LOCATION) - 1;
if (idx < 0 || idx > 15)
{
idx = 0;
@@ -1171,7 +1269,7 @@ static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y)
{
u16 idx;
- idx = VarGet(VAR_0x4037);
+ idx = VarGet(VAR_UNUSUAL_WEATHER_LOCATION);
if (idx < 9 || idx > 16)
{
idx = 9;
@@ -1622,7 +1720,7 @@ void MCB2_FlyMap(void)
case 7:
LoadPalette(sRegionMapFramePal, 0x10, 0x20);
PutWindowTilemap(2);
- FillWindowPixelBuffer(2, 0x00);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
AddTextPrinterParameterized(2, 1, gText_FlyToWhere, 0, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
gMain.state++;
@@ -1679,7 +1777,7 @@ static void sub_8124904(void)
if (sFlyMap->regionMap.iconDrawType > MAPSECTYPE_NONE && sFlyMap->regionMap.iconDrawType <= MAPSECTYPE_BATTLE_FRONTIER)
{
flag = FALSE;
- for (i = 0; i < 1; i++)
+ for (i = 0; i < ARRAY_COUNT(gUnknown_085A1EDC); i++)
{
if (sFlyMap->regionMap.mapSecId == gUnknown_085A1EDC[i].mapSecId)
{
@@ -1687,8 +1785,8 @@ static void sub_8124904(void)
{
StringLength(gUnknown_085A1EDC[i].name[sFlyMap->regionMap.posWithinMapSec]);
flag = TRUE;
- sub_8198070(0, FALSE);
- SetWindowBorderStyle(1, FALSE, 0x65, 0x0d);
+ ClearStdWindowAndFrameToTransparent(0, FALSE);
+ DrawStdFrameWithCustomTileAndPalette(1, FALSE, 0x65, 0x0d);
AddTextPrinterParameterized(1, 1, sFlyMap->regionMap.mapSecName, 0, 1, 0, NULL);
name = gUnknown_085A1EDC[i].name[sFlyMap->regionMap.posWithinMapSec];
AddTextPrinterParameterized(1, 1, name, GetStringRightAlignXOffset(1, name, 0x60), 0x11, 0, NULL);
@@ -1702,12 +1800,12 @@ static void sub_8124904(void)
{
if (gUnknown_03001180 == TRUE)
{
- sub_8198070(1, FALSE);
- SetWindowBorderStyle(0, FALSE, 0x65, 0x0d);
+ ClearStdWindowAndFrameToTransparent(1, FALSE);
+ DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x65, 0x0d);
}
else
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
}
AddTextPrinterParameterized(0, 1, sFlyMap->regionMap.mapSecName, 0, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1718,10 +1816,10 @@ static void sub_8124904(void)
{
if (gUnknown_03001180 == TRUE)
{
- sub_8198070(1, FALSE);
- SetWindowBorderStyle(0, FALSE, 0x65, 0x0d);
+ ClearStdWindowAndFrameToTransparent(1, FALSE);
+ DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x65, 0x0d);
}
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
CopyWindowToVram(0, 2);
schedule_bg_copy_tilemap_to_vram(0);
gUnknown_03001180 = FALSE;
diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c
index 34444cbf4..6ee757607 100644
--- a/src/reset_rtc_screen.c
+++ b/src/reset_rtc_screen.c
@@ -108,10 +108,10 @@ static const struct OamData sOamData_08510464 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
- .size = 0,
+ .size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -290,7 +290,7 @@ static void FreeCursorPalette(void)
static void HideChooseTimeWindow(u8 windowId)
{
- sub_8198070(windowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(windowId, FALSE);
RemoveWindow(windowId);
schedule_bg_copy_tilemap_to_vram(0);
}
@@ -319,7 +319,7 @@ static void PrintTime(u8 windowId, u8 x, u8 y, u16 days, u8 hours, u8 minutes, u
static void ShowChooseTimeWindow(u8 windowId, u16 days, u8 hours, u8 minutes, u8 seconds)
{
- SetWindowBorderStyle(windowId, FALSE, 0x214, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, 0x214, 0xE);
PrintTime(windowId, 0, 1, days, hours, minutes, seconds);
AddTextPrinterParameterized(windowId, 1, gText_Confirm2, 126, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
@@ -495,7 +495,7 @@ static void VBlankCB(void)
static void ShowMessage(const u8 *str)
{
- sub_8197B1C(1, FALSE, 0x200, 0xF);
+ DrawDialogFrameWithCustomTileAndPalette(1, FALSE, 0x200, 0xF);
AddTextPrinterParameterized(1, 1, str, 0, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
}
@@ -507,7 +507,7 @@ static void Task_ShowResetRtcPrompt(u8 taskId)
switch (data[0])
{
case 0:
- SetWindowBorderStyle(0, FALSE, 0x214, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x214, 0xE);
AddTextPrinterParameterized(0, 1, gText_PresentTime, 0, 1, TEXT_SPEED_FF, 0);
PrintTime(
0,
@@ -574,7 +574,7 @@ static void Task_ResetRtcScreen(u8 taskId)
case 2:
if (gTasks[data[1]].isActive != TRUE)
{
- sub_8198070(0, FALSE);
+ ClearStdWindowAndFrameToTransparent(0, FALSE);
ShowMessage(gText_PleaseResetTime);
gLocalTime = gSaveBlock2Ptr->lastBerryTreeUpdate;
data[1] = CreateTask(Task_ResetRtc_0, 80);
diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c
index d7c93a75c..95d63a323 100644
--- a/src/reset_save_heap.c
+++ b/src/reset_save_heap.c
@@ -19,7 +19,7 @@ void sub_81700F8(void)
REG_IME = imeBackup;
gMain.inBattle = FALSE;
SetSaveBlocksPointers(sub_815355C());
- sub_808447C();
+ ResetMenuAndMonGlobals();
Save_ResetSaveCounters();
Save_LoadGameData(0);
if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 0926d4569..dd177f884 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -2,6 +2,7 @@
#include "reshow_battle_screen.h"
#include "battle.h"
#include "palette.h"
+#include "pokemon.h"
#include "main.h"
#include "scanline_effect.h"
#include "text.h"
@@ -18,8 +19,6 @@
extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[];
-extern void SetMultiuseSpriteTemplateToTrainerBack(u16 backPicId, u8 battlerPosition);
-
// this file's functions
static void CB2_ReshowBattleScreenAfterMenu(void);
static bool8 LoadBattlerSpriteGfx(u8 battlerId);
diff --git a/src/rock.c b/src/rock.c
index ebf477ec1..814b1d88b 100644
--- a/src/rock.c
+++ b/src/rock.c
@@ -12,8 +12,6 @@
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 *);
@@ -326,7 +324,7 @@ void sub_81109F0(struct Sprite *sprite)
sprite->data[5] = gBattleAnimArgs[2];
StoreSpriteCallbackInData6(sprite, sub_8110A70);
- sprite->callback = sub_80A6450;
+ sprite->callback = TranslateSpriteInEllipseOverDuration;
sprite->callback(sprite);
}
@@ -341,7 +339,7 @@ static void sub_8110A70(struct Sprite *sprite)
sprite->data[4] = -24;
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
- sprite->callback = sub_80A6450;
+ sprite->callback = TranslateSpriteInEllipseOverDuration;
sprite->callback(sprite);
}
@@ -367,7 +365,7 @@ void sub_8110AB4(struct Sprite *sprite)
sprite->data[3] = 0;
sprite->data[4] = 0;
- sprite->callback = AnimTranslateLinearSimple;
+ sprite->callback = TranslateSpriteLinearFixedPoint;
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
}
@@ -402,7 +400,7 @@ static void sub_8110B80(struct Sprite *sprite)
void AnimTask_LoadSandstormBackground(u8 taskId)
{
int var0;
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
var0 = 0;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
@@ -418,10 +416,10 @@ void AnimTask_LoadSandstormBackground(u8 taskId)
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);
+ sub_80A6B30(&animBg);
+ AnimLoadCompressedBgGfx(animBg.bgId, gUnknown_08D8D58C, animBg.tilesOffset);
+ sub_80A6D60(&animBg, gUnknown_08D8D410, 0);
+ LoadCompressedPalette(gBattleAnimSpritePalette_261, animBg.paletteId * 16, 32);
if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
var0 = 1;
@@ -432,7 +430,7 @@ void AnimTask_LoadSandstormBackground(u8 taskId)
static void sub_8110CB0(u8 taskId)
{
- struct UnknownAnimStruct2 unknownStruct;
+ struct BattleAnimBgData animBg;
if (gTasks[taskId].data[0] == 0)
gBattle_BG1_X += -6;
@@ -477,8 +475,8 @@ static void sub_8110CB0(u8 taskId)
}
break;
case 3:
- sub_80A6B30(&unknownStruct);
- sub_80A6C68(unknownStruct.bgId);
+ sub_80A6B30(&animBg);
+ sub_80A6C68(animBg.bgId);
gTasks[taskId].data[12]++;
break;
case 4:
@@ -735,7 +733,7 @@ static void sub_8111214(struct Task *task)
void sub_811131C(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
u8 taskId = FindTaskIdByFunc(sub_81110A4);
if (taskId != 0xFF)
diff --git a/src/rom_8011DC0.c b/src/rom_8011DC0.c
index 41f7eeee7..3d9eab8d7 100644
--- a/src/rom_8011DC0.c
+++ b/src/rom_8011DC0.c
@@ -33,8 +33,7 @@
#include "start_menu.h"
#include "data2.h"
#include "field_screen_effect.h"
-
-extern void HealPlayerParty(void);
+#include "script_pokemon_util_80F87D8.h"
struct UnkStruct_Shared
{
@@ -188,9 +187,7 @@ extern u8 gUnknown_02022C3E;
extern u16 gUnknown_02022C3C;
extern u8 gUnknown_02022C20[];
extern u8 gFieldLinkPlayerCount;
-extern u8 gUnknown_03005DB4;
-extern struct MailStruct gUnknown_020321C0[PARTY_SIZE];
-extern u8 gUnknown_02032298[2];
+extern u8 gLocalLinkPlayerId;
// IWRAM vars
IWRAM_DATA struct UnkStruct_Leader *gUnknown_03000DA0;
@@ -389,7 +386,7 @@ void nullsub_89(void)
void sub_80124EC(u8 windowId, u8 arg1, u8 stringId)
{
- FillWindowPixelBuffer(windowId, 0x11);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
switch (arg1 << 8)
{
case 0x200:
@@ -508,17 +505,17 @@ void sub_8012780(u8 taskId)
}
data->field_11 = AddWindow(&gUnknown_082F012C);
- FillWindowPixelBuffer(data->field_10, 0x22);
+ FillWindowPixelBuffer(data->field_10, PIXEL_FILL(2));
sub_80173E0(data->field_10, 0, gUnknown_082EDBC4, 8, 1, 4);
PutWindowTilemap(data->field_10);
CopyWindowToVram(data->field_10, 2);
- NewMenuHelpers_DrawStdWindowFrame(data->listWindowId, FALSE);
+ DrawStdWindowFrame(data->listWindowId, FALSE);
gMultiuseListMenuTemplate = gUnknown_082F015C;
gMultiuseListMenuTemplate.windowId = data->listWindowId;
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
- NewMenuHelpers_DrawStdWindowFrame(data->field_11, FALSE);
+ DrawStdWindowFrame(data->field_11, FALSE);
PutWindowTilemap(data->field_11);
CopyWindowToVram(data->field_11, 2);
@@ -788,10 +785,10 @@ void sub_8012780(u8 taskId)
void sub_8012F64(struct UnkStruct_Leader *data)
{
ClearWindowTilemap(data->field_11);
- sub_819746C(data->field_11, FALSE);
+ ClearStdWindowAndFrame(data->field_11, FALSE);
DestroyListMenuTask(data->listTaskId, 0, 0);
ClearWindowTilemap(data->field_10);
- sub_819746C(data->listWindowId, FALSE);
+ ClearStdWindowAndFrame(data->listWindowId, FALSE);
CopyBgTilemapBufferToVram(0);
RemoveWindow(data->field_11);
RemoveWindow(data->listWindowId);
@@ -1077,17 +1074,17 @@ void sub_80134E8(u8 taskId)
data->listWindowId = AddWindow(&gUnknown_082F0174);
data->field_D = AddWindow(&gUnknown_082F017C);
- FillWindowPixelBuffer(data->field_C, 0x22);
+ FillWindowPixelBuffer(data->field_C, PIXEL_FILL(2));
sub_80173E0(data->field_C, 0, gUnknown_082EF7DC, 8, 1, 4);
PutWindowTilemap(data->field_C);
CopyWindowToVram(data->field_C, 2);
- NewMenuHelpers_DrawStdWindowFrame(data->listWindowId, FALSE);
+ DrawStdWindowFrame(data->listWindowId, FALSE);
gMultiuseListMenuTemplate = gUnknown_082F0204;
gMultiuseListMenuTemplate.windowId = data->listWindowId;
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
- NewMenuHelpers_DrawStdWindowFrame(data->field_D, FALSE);
+ DrawStdWindowFrame(data->field_D, FALSE);
PutWindowTilemap(data->field_D);
sub_80125BC(data->field_D);
CopyWindowToVram(data->field_D, 2);
@@ -1105,7 +1102,7 @@ void sub_80134E8(u8 taskId)
RedrawListMenu(data->listTaskId);
break;
case 0:
- id = ListMenuHandleInputGetItemId(data->listTaskId);
+ id = ListMenu_ProcessInput(data->listTaskId);
if (gMain.newKeys & A_BUTTON && id != -1)
{
// this unused variable along with the assignment is needed to match
@@ -1256,10 +1253,10 @@ void sub_80134E8(u8 taskId)
case 18:
case 20:
ClearWindowTilemap(data->field_D);
- sub_819746C(data->field_D, FALSE);
+ ClearStdWindowAndFrame(data->field_D, FALSE);
DestroyListMenuTask(data->listTaskId, 0, 0);
ClearWindowTilemap(data->field_C);
- sub_819746C(data->listWindowId, FALSE);
+ ClearStdWindowAndFrame(data->listWindowId, FALSE);
CopyBgTilemapBufferToVram(0);
RemoveWindow(data->field_D);
RemoveWindow(data->listWindowId);
@@ -1632,7 +1629,7 @@ void sub_8014210(u16 battleFlags)
void sub_8014290(u16 arg0, u16 x, u16 y)
{
- VarSet(VAR_0x4087, arg0);
+ VarSet(VAR_CABLE_CLUB_STATE, arg0);
SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
SetDynamicWarpWithCoords(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
WarpIntoMap();
@@ -1641,9 +1638,9 @@ void sub_8014290(u16 arg0, u16 x, u16 y)
void sub_8014304(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 arg4)
{
gSpecialVar_0x8004 = arg4;
- VarSet(VAR_0x4087, arg4);
+ VarSet(VAR_CABLE_CLUB_STATE, arg4);
gFieldLinkPlayerCount = GetLinkPlayerCount();
- gUnknown_03005DB4 = GetMultiplayerId();
+ gLocalLinkPlayerId = GetMultiplayerId();
SetCableClubWarp();
SetWarpDestination(mapGroup, mapNum, -1, x, y);
WarpIntoMap();
@@ -1689,7 +1686,7 @@ void sub_801440C(u8 taskId)
case 9 ... 11:
case 13:
case 15:
- sub_800E3A8();
+ RecordMixTrainerNames();
break;
}
@@ -1699,7 +1696,7 @@ void sub_801440C(u8 taskId)
case 81:
CleanupOverworldWindowsAndTilemaps();
gMain.savedCallback = sub_801AC54;
- sub_81B8518(3);
+ InitChooseHalfPartyForBattle(3);
break;
case 1:
CleanupOverworldWindowsAndTilemaps();
@@ -1802,12 +1799,12 @@ void sub_8014790(u8 taskId)
sendBuff[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
gMain.savedCallback = NULL;
data[0] = 4;
- sub_800E3A8();
+ RecordMixTrainerNames();
ResetBlockReceivedFlags();
break;
case 16:
case 23 ... 27:
- sub_800E3A8();
+ RecordMixTrainerNames();
DestroyTask(taskId);
default:
EnableBothScriptContexts();
@@ -2157,7 +2154,7 @@ void sub_8014F48(u8 taskId)
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
sub_8018784(data->field_D);
- FillWindowPixelBuffer(data->field_D, 0x11);
+ FillWindowPixelBuffer(data->field_D, PIXEL_FILL(1));
PutWindowTilemap(data->field_D);
sub_80125BC(data->field_D);
CopyWindowToVram(data->field_D, 2);
@@ -2176,7 +2173,7 @@ void sub_8014F48(u8 taskId)
RedrawListMenu(data->listTaskId);
break;
case 0:
- id = ListMenuHandleInputGetItemId(data->listTaskId);
+ id = ListMenu_ProcessInput(data->listTaskId);
if (gMain.newKeys & A_BUTTON && id != -1)
{
// this unused variable along with the assignment is needed to match
@@ -2340,7 +2337,7 @@ void sub_80152F4(u8 taskId)
break;
case 0:
if (data->field_13 != 0)
- id = ListMenuHandleInputGetItemId(data->listTaskId);
+ id = ListMenu_ProcessInput(data->listTaskId);
if (data->field_14 > 120)
{
if (data->field_0->arr[0].field_1A_0 == 1 && !data->field_0->arr[0].unk.field_0.unk_0a_7)
diff --git a/src/rotating_gate.c b/src/rotating_gate.c
index 3513f092e..44d291dc4 100644
--- a/src/rotating_gate.c
+++ b/src/rotating_gate.c
@@ -236,10 +236,10 @@ static const struct OamData sOamData_RotatingGateLarge =
.objMode = 0,
.mosaic = 0,
.bpp = ST_OAM_4BPP,
- .shape = ST_OAM_SQUARE,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 2,
.paletteNum = 2,
@@ -253,10 +253,10 @@ static const struct OamData sOamData_RotatingGateRegular =
.objMode = 0,
.mosaic = 0,
.bpp = ST_OAM_4BPP,
- .shape = ST_OAM_SQUARE,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 2,
.paletteNum = 2,
diff --git a/src/roulette.c b/src/roulette.c
index a6a020f39..39db5630b 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -973,7 +973,7 @@ static void sub_81405CC(void)
sub_814372C(6);
sub_81436D0(0);
sub_81424FC(0);
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5B89, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
gSpriteCoordOffsetX = -60;
@@ -996,7 +996,7 @@ static void sub_81405CC(void)
taskId = gUnknown_0203AB88->varA4 = CreateTask(sub_81408A8, 0);
gTasks[taskId].data[6] = 6;
gTasks[taskId].data[13] = GetCoins();
- sub_80EDE84(GetCoins());
+ AlertTVThatPlayerPlayedRoulette(GetCoins());
gUnknown_0203AB88->varA5 = CreateTask(sub_8140814, 1);
SetMainCallback2(sub_8140238);
return;
@@ -1043,8 +1043,8 @@ static void sub_81408A8(u8 taskId)
static void sub_8140914(u8 taskId)
{
- DisplayYesNoMenu();
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, 0);
+ DisplayYesNoMenuDefaultYes();
+ DrawStdWindowFrame(gUnknown_0203AB8C, 0);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C13, 0, 1, TEXT_SPEED_FF, 0);
CopyWindowToVram(gUnknown_0203AB8C, 3);
DoYesNoFuncWithChoice(taskId, &gUnknown_085B6410);
@@ -1052,7 +1052,7 @@ static void sub_8140914(u8 taskId)
static void sub_8140968(u8 taskId)
{
- sub_819746C(0, TRUE);
+ ClearStdWindowAndFrame(0, TRUE);
gTasks[taskId].func = sub_8140BD0;
}
@@ -1808,14 +1808,14 @@ static void sub_814189C(u8 taskId)
if (gTasks[taskId].data[2] == 12)
{
PlayFanfare(MUS_ME_B_BIG);
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5BD7, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
}
else
{
PlayFanfare(MUS_ME_B_SMALL);
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5BCB, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
}
@@ -1823,7 +1823,7 @@ static void sub_814189C(u8 taskId)
case 0:
default:
m4aSongNumStart(SE_HAZURE);
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5BE0, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
break;
@@ -1867,7 +1867,7 @@ static void sub_8141A18(u8 taskId)
{
ConvertIntToDecimalStringN(gStringVar1, (gUnknown_0203AB88->var19 * gTasks[taskId].data[2]), STR_CONV_MODE_LEFT_ALIGN, 2);
StringExpandPlaceholders(gStringVar4, gUnknown_082A5BEF);
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
gTasks[taskId].data[1] = (gUnknown_0203AB88->var19 * gTasks[taskId].data[2]);
@@ -1900,14 +1900,14 @@ static void sub_8141B58(u8 taskId)
{
if (gTasks[taskId].data[6] == 6)
{
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C21, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
sub_8141F7C(taskId, dp01t_12_3_battle_menu, 0xFFFF, 3);
}
else if (gTasks[taskId].data[13] == 9999)
{
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C61, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
sub_8141F7C(taskId, sub_8140914, 0xFFFF, 0x3);
@@ -1919,7 +1919,7 @@ static void sub_8141B58(u8 taskId)
}
else
{
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C04, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
sub_8141F7C(taskId, sub_8140994, 0x3C, 0x3);
@@ -1944,7 +1944,7 @@ static void dp01t_12_3_battle_menu(u8 taskId)
if (gTasks[taskId].data[13] == 9999)
{
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C61, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
sub_8141F7C(taskId, sub_8140914, 0xFFFF, 3);
@@ -1964,7 +1964,7 @@ static void sub_8141DE4(u8 taskId)
gSpecialVar_0x8004 = TRUE;
else
gSpecialVar_0x8004 = FALSE;
- sub_80EDD78(GetCoins());
+ AlertTVOfNewCoinTotal(GetCoins());
BeginHardwarePaletteFade(0xFF, 0, 0, 16, 0);
gTasks[taskId].func = sub_8141E7C;
}
@@ -1984,7 +1984,7 @@ static void sub_8141E7C(u8 taskId) // end roulette ?
ResetPaletteFade();
ResetSpriteData();
sub_8140418();
- gFieldCallback = sub_80AF168;
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
SetMainCallback2(CB2_ReturnToField);
DestroyTask(taskId);
}
@@ -2311,18 +2311,18 @@ static const u32 RouletteCursorTiles[] = INCBIN_U32("graphics/roulette/cursor.4b
static const struct SpritePalette gUnknown_085B7384[] =
{
- { RouletteSpritePalette_01, 1 },
- { RouletteSpritePalette_02, 2 },
- { RouletteSpritePalette_03, 3 },
- { RouletteSpritePalette_04, 4 },
- { RouletteSpritePalette_05, 5 },
- { RouletteSpritePalette_06, 6 },
- { RouletteSpritePalette_07, 7 },
- { RouletteSpritePalette_08, 8 },
- { RouletteSpritePalette_09, 9 },
- { RouletteSpritePalette_10, 10 },
- { RouletteSpritePalette_11, 11 },
- { RouletteSpritePalette_12, 12 },
+ { .data = RouletteSpritePalette_01, .tag = 1 },
+ { .data = RouletteSpritePalette_02, .tag = 2 },
+ { .data = RouletteSpritePalette_03, .tag = 3 },
+ { .data = RouletteSpritePalette_04, .tag = 4 },
+ { .data = RouletteSpritePalette_05, .tag = 5 },
+ { .data = RouletteSpritePalette_06, .tag = 6 },
+ { .data = RouletteSpritePalette_07, .tag = 7 },
+ { .data = RouletteSpritePalette_08, .tag = 8 },
+ { .data = RouletteSpritePalette_09, .tag = 9 },
+ { .data = RouletteSpritePalette_10, .tag = 10 },
+ { .data = RouletteSpritePalette_11, .tag = 11 },
+ { .data = RouletteSpritePalette_12, .tag = 12 },
{}
};
@@ -2330,8 +2330,8 @@ static const struct OamData gOamData_85B73EC =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 1,
};
@@ -2339,8 +2339,8 @@ static const struct OamData gOamData_85B73F4 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 1,
};
@@ -2349,35 +2349,41 @@ static const struct OamData gOamData_85B73FC =
.y = 60,
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
.priority = 2,
};
-static const union AnimCmd gSpriteAnim_85B7404[] = {
+static const union AnimCmd gSpriteAnim_85B7404[] =
+{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_85B740C[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B740C[] =
+{
gSpriteAnim_85B7404
};
-static const union AffineAnimCmd gSpriteAffineAnim_85B7410[] = {
+static const union AffineAnimCmd gSpriteAffineAnim_85B7410[] =
+{
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_85B7418[] = {
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_85B7418[] =
+{
gSpriteAffineAnim_85B7410
};
-static const struct CompressedSpriteSheet gUnknown_085B741C = {
+static const struct CompressedSpriteSheet gUnknown_085B741C =
+{
.data = RoulettePokeIcons2Tiles,
.size = 0xC00,
.tag = 0
};
-static const union AnimCmd gSpriteAnim_85B7420[] = {
+static const union AnimCmd gSpriteAnim_85B7420[] =
+{
ANIMCMD_FRAME(0, 0),
ANIMCMD_FRAME(32, 0),
ANIMCMD_FRAME(64, 0),
@@ -2393,67 +2399,82 @@ static const union AnimCmd gSpriteAnim_85B7420[] = {
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_85B7458[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7458[] =
+{
&gSpriteAnim_85B7420[0]
};
-static const union AnimCmd *const gSpriteAnimTable_85B745C[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B745C[] =
+{
&gSpriteAnim_85B7420[1]
};
-static const union AnimCmd *const gSpriteAnimTable_85B7460[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7460[] =
+{
&gSpriteAnim_85B7420[2]
};
-static const union AnimCmd *const gSpriteAnimTable_85B7464[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7464[] =
+{
&gSpriteAnim_85B7420[3]
};
-static const union AnimCmd *const gSpriteAnimTable_85B7468[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7468[] =
+{
&gSpriteAnim_85B7420[4]
};
-static const union AnimCmd *const gSpriteAnimTable_85B746C[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B746C[] =
+{
&gSpriteAnim_85B7420[5]
};
-static const union AnimCmd *const gSpriteAnimTable_85B7470[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7470[] =
+{
&gSpriteAnim_85B7420[6]
};
-static const union AnimCmd *const gSpriteAnimTable_85B7474[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7474[] =
+{
&gSpriteAnim_85B7420[7]
};
-static const union AnimCmd *const gSpriteAnimTable_85B7478[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7478[] =
+{
&gSpriteAnim_85B7420[8]
};
-static const union AnimCmd *const gSpriteAnimTable_85B747C[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B747C[] =
+{
&gSpriteAnim_85B7420[9]
};
-static const union AnimCmd *const gSpriteAnimTable_85B7480[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7480[] =
+{
&gSpriteAnim_85B7420[10]
};
-static const union AnimCmd *const gSpriteAnimTable_85B7484[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7484[] =
+{
&gSpriteAnim_85B7420[11]
};
-static const struct CompressedSpriteSheet gUnknown_085B7488 = {
+static const struct CompressedSpriteSheet gUnknown_085B7488 =
+{
.data = gRouletteHeadersTiles,
.size = 0x1600,
.tag = 4
};
-static const struct CompressedSpriteSheet gUnknown_085B7490 = {
+static const struct CompressedSpriteSheet gUnknown_085B7490 =
+{
.data = RoulettePokeIconsTiles,
.size = 0x400,
.tag = 5
};
-static const union AnimCmd gSpriteAnim_85B7498[] = {
+static const union AnimCmd gSpriteAnim_85B7498[] =
+{
ANIMCMD_FRAME(0, 0),
ANIMCMD_FRAME(16, 0),
ANIMCMD_FRAME(32, 0),
@@ -2468,7 +2489,8 @@ static const union AnimCmd gSpriteAnim_85B7498[] = {
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_85B74C8[] = {
+static const union AnimCmd gSpriteAnim_85B74C8[] =
+{
ANIMCMD_FRAME(0, 0),
ANIMCMD_FRAME(4, 0),
ANIMCMD_FRAME(8, 0),
@@ -2476,47 +2498,58 @@ static const union AnimCmd gSpriteAnim_85B74C8[] = {
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_85B74DC[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B74DC[] =
+{
&gSpriteAnim_85B7498[0]
};
-static const union AnimCmd *const gSpriteAnimTable_85B74E0[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B74E0[] =
+{
&gSpriteAnim_85B7498[2]
};
-static const union AnimCmd *const gSpriteAnimTable_85B74E4[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B74E4[] =
+{
&gSpriteAnim_85B7498[4]
};
-static const union AnimCmd *const gSpriteAnimTable_85B74E8[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B74E8[] =
+{
&gSpriteAnim_85B7498[6]
};
-static const union AnimCmd *const gSpriteAnimTable_85B74EC[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B74EC[] =
+{
&gSpriteAnim_85B7498[8]
};
-static const union AnimCmd *const gSpriteAnimTable_85B74F0[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B74F0[] =
+{
&gSpriteAnim_85B7498[9]
};
-static const union AnimCmd *const gSpriteAnimTable_85B74F4[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B74F4[] =
+{
&gSpriteAnim_85B7498[10]
};
-static const union AnimCmd *const gSpriteAnimTable_85B74F8[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B74F8[] =
+{
&gSpriteAnim_85B74C8[0]
};
-static const union AnimCmd *const gSpriteAnimTable_85B74FC[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B74FC[] =
+{
&gSpriteAnim_85B74C8[1]
};
-static const union AnimCmd *const gSpriteAnimTable_85B7500[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7500[] =
+{
&gSpriteAnim_85B74C8[2]
};
-static const union AnimCmd *const gSpriteAnimTable_85B7504[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7504[] =
+{
&gSpriteAnim_85B74C8[3]
};
@@ -2747,8 +2780,8 @@ static const struct OamData gOamData_85B7730 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
.priority = 1,
};
@@ -2756,8 +2789,8 @@ static const struct OamData gOamData_85B7738 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_V_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(8x16),
+ .size = SPRITE_SIZE(8x16),
.priority = 1,
};
@@ -2765,8 +2798,8 @@ static const struct OamData gOamData_85B7740 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16),
.priority = 1,
};
@@ -2774,8 +2807,8 @@ static const struct OamData gOamData_85B7748 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 0,
+ .shape = SPRITE_SHAPE(16x8),
+ .size = SPRITE_SIZE(16x8),
.priority = 1,
};
@@ -2809,7 +2842,8 @@ static const struct CompressedSpriteSheet gUnknown_085B7750[] =
{}
};
-static const union AnimCmd gSpriteAnim_85B7780[] = {
+static const union AnimCmd gSpriteAnim_85B7780[] =
+{
ANIMCMD_FRAME(0, 0),
ANIMCMD_FRAME(2, 0),
ANIMCMD_FRAME(4, 0),
@@ -2824,11 +2858,13 @@ static const union AnimCmd gSpriteAnim_85B7780[] = {
//ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_85B77A8[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B77A8[] =
+{
gSpriteAnim_85B7780
};
-static const union AnimCmd gSpriteAnim_85B77AC[] = {
+static const union AnimCmd gSpriteAnim_85B77AC[] =
+{
ANIMCMD_FRAME(0, 0),
ANIMCMD_FRAME(8, 0),
ANIMCMD_FRAME(16, 0),
@@ -2837,11 +2873,13 @@ static const union AnimCmd gSpriteAnim_85B77AC[] = {
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_85B77C4[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B77C4[] =
+{
gSpriteAnim_85B77AC
};
-static const union AnimCmd gSpriteAnim_85B77C8[] = {
+static const union AnimCmd gSpriteAnim_85B77C8[] =
+{
ANIMCMD_FRAME(0, 0),
ANIMCMD_FRAME(2, 0),
ANIMCMD_FRAME(4, 0),
@@ -2850,7 +2888,8 @@ static const union AnimCmd gSpriteAnim_85B77C8[] = {
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_85B77E0[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B77E0[] =
+{
gSpriteAnim_85B77C8
};
@@ -2913,8 +2952,8 @@ static const struct OamData gOamData_85B785C =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 2,
};
@@ -2924,7 +2963,8 @@ static const struct CompressedSpriteSheet gUnknown_085B7864 = {
.tag = 12
};
-static const union AnimCmd gSpriteAnim_85B786C[] = {
+static const union AnimCmd gSpriteAnim_85B786C[] =
+{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(4, 5),
ANIMCMD_FRAME(8, 5),
@@ -2932,7 +2972,8 @@ static const union AnimCmd gSpriteAnim_85B786C[] = {
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gSpriteAnim_85B7880[] = {
+static const union AnimCmd gSpriteAnim_85B7880[] =
+{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(4, 10),
ANIMCMD_FRAME(8, 10),
@@ -2940,7 +2981,8 @@ static const union AnimCmd gSpriteAnim_85B7880[] = {
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gSpriteAnim_85B7894[] = {
+static const union AnimCmd gSpriteAnim_85B7894[] =
+{
ANIMCMD_FRAME(0, 15),
ANIMCMD_FRAME(4, 15),
ANIMCMD_FRAME(8, 15),
@@ -2948,7 +2990,8 @@ static const union AnimCmd gSpriteAnim_85B7894[] = {
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gSpriteAnim_85B78A8[] = {
+static const union AnimCmd gSpriteAnim_85B78A8[] =
+{
ANIMCMD_FRAME(4, 2),
ANIMCMD_FRAME(8, 5),
ANIMCMD_FRAME(4, 5),
@@ -2956,7 +2999,8 @@ static const union AnimCmd gSpriteAnim_85B78A8[] = {
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_85B78BC[] = {
+static const union AnimCmd gSpriteAnim_85B78BC[] =
+{
ANIMCMD_FRAME(4, 2),
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(4, 4),
@@ -2965,7 +3009,8 @@ static const union AnimCmd gSpriteAnim_85B78BC[] = {
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_85B78D4[] = {
+static const union AnimCmd gSpriteAnim_85B78D4[] =
+{
ANIMCMD_FRAME(0, 2),
ANIMCMD_FRAME(4, 5),
ANIMCMD_FRAME(8, 5),
@@ -2973,12 +3018,14 @@ static const union AnimCmd gSpriteAnim_85B78D4[] = {
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_85B78E8[] = {
+static const union AnimCmd gSpriteAnim_85B78E8[] =
+{
ANIMCMD_FRAME(12, 0),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_85B78F0[] = {
+static const union AnimCmd gSpriteAnim_85B78F0[] =
+{
ANIMCMD_FRAME(8, 2),
ANIMCMD_FRAME(4, 5),
ANIMCMD_FRAME(0, 5),
@@ -2986,7 +3033,8 @@ static const union AnimCmd gSpriteAnim_85B78F0[] = {
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_85B7904[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7904[] =
+{
gSpriteAnim_85B786C,
gSpriteAnim_85B7880,
gSpriteAnim_85B7894,
@@ -3014,12 +3062,13 @@ static const struct OamData gOamData_85B7940 =
.y = 81,
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
.priority = 2,
};
-static const struct CompressedSpriteSheet gUnknown_085B7948 = {
+static const struct CompressedSpriteSheet gUnknown_085B7948 =
+{
.data = gRouletteCenter_Gfx,
.size = 0x800,
.tag = 6
@@ -3040,8 +3089,8 @@ static const struct OamData gOamData_85B7968 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 2,
};
@@ -3049,18 +3098,20 @@ static const struct OamData gOamData_85B7970 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 2,
};
-static const struct CompressedSpriteSheet gUnknown_085B7978 = {
+static const struct CompressedSpriteSheet gUnknown_085B7978 =
+{
.data = gUnknown_085B67FC,
.size = 0xE00,
.tag = 13
};
-static const union AnimCmd gSpriteAnim_85B7980[] = {
+static const union AnimCmd gSpriteAnim_85B7980[] =
+{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(16, 6),
ANIMCMD_FRAME(32, 6),
@@ -3070,45 +3121,53 @@ static const union AnimCmd gSpriteAnim_85B7980[] = {
ANIMCMD_JUMP(2)
};
-static const union AnimCmd gSpriteAnim_85B799C[] = {
+static const union AnimCmd gSpriteAnim_85B799C[] =
+{
ANIMCMD_FRAME(80, 10),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_85B79A4[] = {
+static const union AnimCmd gSpriteAnim_85B79A4[] =
+{
ANIMCMD_FRAME(80, 10, .hFlip = TRUE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_85B79AC[] = {
+static const union AnimCmd gSpriteAnim_85B79AC[] =
+{
ANIMCMD_FRAME(80, 20),
ANIMCMD_FRAME(96, 20),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gSpriteAnim_85B79B8[] = {
+static const union AnimCmd gSpriteAnim_85B79B8[] =
+{
ANIMCMD_FRAME(80, 20, .hFlip = TRUE),
ANIMCMD_FRAME(96, 20, .hFlip = TRUE),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gSpriteAnim_85B79C4[] = {
+static const union AnimCmd gSpriteAnim_85B79C4[] =
+{
ANIMCMD_FRAME(80, 10),
ANIMCMD_FRAME(96, 10),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gSpriteAnim_85B79D0[] = {
+static const union AnimCmd gSpriteAnim_85B79D0[] =
+{
ANIMCMD_FRAME(80, 10, .hFlip = TRUE),
ANIMCMD_FRAME(96, 10, .hFlip = TRUE),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const gSpriteAnimTable_85B79DC[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B79DC[] =
+{
gSpriteAnim_85B7980
};
-static const union AnimCmd *const gSpriteAnimTable_85B79E0[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B79E0[] =
+{
gSpriteAnim_85B799C,
gSpriteAnim_85B79A4,
gSpriteAnim_85B79AC,
@@ -3143,8 +3202,8 @@ static const struct OamData gOamData_85B7A28 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_SQUARE,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 2,
};
@@ -3152,8 +3211,8 @@ static const struct OamData gOamData_85B7A30 =
{
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16),
.priority = 2,
};
@@ -3161,24 +3220,27 @@ static const struct OamData gOamData_85B7A38 =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
- .shape = ST_OAM_H_RECTANGLE,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16),
.priority = 2,
};
-static const struct CompressedSpriteSheet gUnknown_085B7A40 = {
+static const struct CompressedSpriteSheet gUnknown_085B7A40 =
+{
.data = gUnknown_085B7290,
.size = 0x180,
.tag = 14
};
-static const union AffineAnimCmd gSpriteAffineAnim_85B7A48[] = {
+static const union AffineAnimCmd gSpriteAffineAnim_85B7A48[] =
+{
AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0),
AFFINEANIMCMD_FRAME(2, 2, 0, 60),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd gSpriteAffineAnim_85B7A60[] = {
+static const union AffineAnimCmd gSpriteAffineAnim_85B7A60[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(-2, 0x0, 0, 15),
AFFINEANIMCMD_FRAME(-1, -2, 0, 15),
@@ -3186,38 +3248,46 @@ static const union AffineAnimCmd gSpriteAffineAnim_85B7A60[] = {
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_85B7A88[] = {
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_85B7A88[] =
+{
gSpriteAffineAnim_85B7A48
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_85B7A8C[] = {
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_85B7A8C[] =
+{
gSpriteAffineAnim_85B7A60
};
-static const union AffineAnimCmd gSpriteAffineAnim_85B7A90[] = {
+static const union AffineAnimCmd gSpriteAffineAnim_85B7A90[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_85B7AA0[] = {
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_85B7AA0[] =
+{
gSpriteAffineAnim_85B7A90
};
-static const union AnimCmd gSpriteAnim_85B7AA4[] = {
+static const union AnimCmd gSpriteAnim_85B7AA4[] =
+{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_85B7AAC[] = {
+static const union AnimCmd gSpriteAnim_85B7AAC[] =
+{
ANIMCMD_FRAME(4, 0),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_85B7AB4[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7AB4[] =
+{
gSpriteAnim_85B7AA4
};
-static const union AnimCmd *const gSpriteAnimTable_85B7AB8[] = {
+static const union AnimCmd *const gSpriteAnimTable_85B7AB8[] =
+{
gSpriteAnim_85B7AAC
};
@@ -3256,7 +3326,7 @@ static const struct SpriteTemplate gUnknown_085B7AEC =
static void sub_81428C4(u8 r0)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(r0, &gUnknown_085B6408);
}
@@ -3272,7 +3342,7 @@ static void sub_81428E4(u8 taskId)
static void sub_8142918(u8 taskId)
{
- sub_819746C(0, TRUE);
+ ClearStdWindowAndFrame(0, TRUE);
HideCoinsWindow();
FreeAllWindowBuffers();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
@@ -3283,7 +3353,7 @@ static void sub_8142918(u8 taskId)
static void sub_814297C(u8 taskId)
{
- sub_819746C(0, FALSE);
+ ClearStdWindowAndFrame(0, FALSE);
HideCoinsWindow();
ScriptContext2_Disable();
DestroyTask(taskId);
@@ -3296,7 +3366,7 @@ static void sub_81429A0(u8 taskId)
{
gSpecialVar_0x8004 = 1;
HideCoinsWindow();
- sub_819746C(0, TRUE);
+ ClearStdWindowAndFrame(0, TRUE);
ScriptContext2_Disable();
DestroyTask(taskId);
}
@@ -3309,7 +3379,7 @@ static void sub_81429F0(u8 taskId)
u32 temp = gUnknown_085B6344[(gSpecialVar_0x8004 & 1) + (gSpecialVar_0x8004 >> 7 << 1)];
ConvertIntToDecimalStringN(gStringVar1, temp, STR_CONV_MODE_LEADING_ZEROS, 1);
StringExpandPlaceholders(gStringVar4, gUnknown_082A5B12);
- NewMenuHelpers_DrawStdWindowFrame(0, FALSE);
+ DrawStdWindowFrame(0, FALSE);
AddTextPrinterParameterized(0, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(0, 3);
gTasks[taskId].func = sub_81428C4;
@@ -3326,7 +3396,7 @@ static void Task_Roulette_0(u8 taskId)
{
if ((gSpecialVar_0x8004 & 0x80) && (gSpecialVar_0x8004 & 1))
{
- NewMenuHelpers_DrawStdWindowFrame(0, FALSE);
+ DrawStdWindowFrame(0, FALSE);
AddTextPrinterParameterized(0, 1, gUnknown_082A5B6B, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(0, 3);
gTasks[taskId].func = sub_81429F0;
@@ -3334,7 +3404,7 @@ static void Task_Roulette_0(u8 taskId)
else
{
StringExpandPlaceholders(gStringVar4, gUnknown_082A5B12);
- NewMenuHelpers_DrawStdWindowFrame(0, FALSE);
+ DrawStdWindowFrame(0, FALSE);
AddTextPrinterParameterized(0, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(0, 3);
gTasks[taskId].func = sub_81428C4;
@@ -3343,7 +3413,7 @@ static void Task_Roulette_0(u8 taskId)
else
{
StringExpandPlaceholders(gStringVar4, gUnknown_082A5B4E);
- NewMenuHelpers_DrawStdWindowFrame(0, FALSE);
+ DrawStdWindowFrame(0, FALSE);
AddTextPrinterParameterized(0, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(0, 3);
gTasks[taskId].func = sub_81429A0;
diff --git a/src/safari_zone.c b/src/safari_zone.c
index accf94981..703c3d0cd 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -10,6 +10,7 @@
#include "string_util.h"
#include "tv.h"
#include "constants/game_stat.h"
+#include "field_screen_effect.h"
struct PokeblockFeeder
{
@@ -27,8 +28,6 @@ extern const u8 EventScript_2A4B6F[];
extern const u8 EventScript_2A4B4C[];
extern const u8 EventScript_2A4B9B[];
-extern void sub_80AF6F0(void);
-
EWRAM_DATA u8 gNumSafariBalls = 0;
EWRAM_DATA static u16 sSafariZoneStepCounter = 0;
EWRAM_DATA static u8 sSafariZoneCaughtMons = 0;
diff --git a/src/save.c b/src/save.c
index a22e20f0b..361a88e1e 100644
--- a/src/save.c
+++ b/src/save.c
@@ -1,5 +1,7 @@
#include "global.h"
+#include "agb_flash.h"
#include "gba/flash_internal.h"
+#include "fieldmap.h"
#include "save.h"
#include "task.h"
#include "decompress.h"
@@ -8,6 +10,7 @@
#include "pokemon_storage_system.h"
#include "main.h"
#include "trainer_hill.h"
+#include "link.h"
#include "constants/game_stat.h"
static u16 CalculateChecksum(void *data, u16 size);
@@ -70,12 +73,6 @@ const struct SaveSectionOffsets gSaveSectionOffsets[] =
SAVEBLOCK_CHUNK(gPokemonStorage, 8),
};
-extern void DoSaveFailedScreen(u8); // save_failed_screen
-extern bool32 ProgramFlashSectorAndVerify(u8 sector, u8 *data);
-extern void save_serialize_map(void);
-extern void sub_800ADF8(void);
-extern bool8 IsLinkTaskFinished(void);
-
// iwram common
u16 gLastWrittenSector;
u32 gLastSaveCounter;
@@ -659,10 +656,10 @@ static void UpdateSaveAddresses(void)
u8 HandleSavingData(u8 saveType)
{
u8 i;
- u32 *backupVar = gUnknown_0203CF5C;
+ u32 *backupVar = gTrainerHillVBlankCounter;
u8 *tempAddr;
- gUnknown_0203CF5C = NULL;
+ gTrainerHillVBlankCounter = NULL;
UpdateSaveAddresses();
switch (saveType)
{
@@ -705,7 +702,7 @@ u8 HandleSavingData(u8 saveType)
save_write_to_flash(0xFFFF, gRamSaveSectionLocations);
break;
}
- gUnknown_0203CF5C = backupVar;
+ gTrainerHillVBlankCounter = backupVar;
return 0;
}
@@ -768,7 +765,7 @@ u8 sub_8153408(void) // trade.s save
return 0;
}
-u8 sub_8153430(void)
+u8 FullSaveGame(void)
{
if (gFlashMemoryPresent != TRUE)
return 1;
@@ -780,7 +777,7 @@ u8 sub_8153430(void)
return 0;
}
-bool8 sub_8153474(void)
+bool8 CheckSaveFile(void)
{
u8 retVal = FALSE;
u16 val = ++gUnknown_03006208;
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index c668c1db0..415907585 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -47,19 +47,19 @@ EWRAM_DATA u8 gSaveFailedUnused2[4] = {0};
static const struct OamData sClockOamData =
{
- 160, // Y
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
};
static const struct BgTemplate gUnknown_085EFD88[3] =
@@ -208,8 +208,8 @@ static void CB2_SaveFailedScreen(void)
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(gBirchBagTilemap, (void *)(BG_SCREEN_ADDR(14)));
+ LZ77UnCompVram(gBirchGrassTilemap, (void *)(BG_SCREEN_ADDR(15)));
LZ77UnCompVram(sSaveFailedClockGfx, (void *)(VRAM + 0x10020));
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_085EFD88, 3);
@@ -229,10 +229,10 @@ static void CB2_SaveFailedScreen(void)
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);
+ DrawStdFrameWithCustomTileAndPalette(gSaveFailedWindowIds[TEXT_WIN_ID], FALSE, 0x214, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(gSaveFailedWindowIds[CLOCK_WIN_ID], FALSE, 0x214, 0xE);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[CLOCK_WIN_ID], PIXEL_FILL(1)); // backwards?
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
CopyWindowToVram(gSaveFailedWindowIds[CLOCK_WIN_ID], 2); // again?
CopyWindowToVram(gSaveFailedWindowIds[TEXT_WIN_ID], 1);
SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0);
@@ -265,19 +265,19 @@ static void CB2_WipeSave(void)
{
if (WipeSectors(gDamagedSaveSectors) != FALSE)
{
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
SaveFailedScreenTextPrint(gText_BackupMemoryDamaged, 1, 0);
SetMainCallback2(CB2_GameplayCannotBeContinued);
return;
}
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
SaveFailedScreenTextPrint(gText_CheckCompleted, 1, 0);
HandleSavingData(gSaveFailedType);
if (gDamagedSaveSectors != 0)
{
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0);
}
@@ -286,12 +286,12 @@ static void CB2_WipeSave(void)
if (wipeTries == 3)
{
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
SaveFailedScreenTextPrint(gText_BackupMemoryDamaged, 1, 0);
}
else
{
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
if (gGameContinueCallback == NULL)
SaveFailedScreenTextPrint(gText_SaveCompleteGameCannotContinue, 1, 0);
@@ -308,7 +308,7 @@ static void CB2_GameplayCannotBeContinued(void)
if (gMain.newKeys & A_BUTTON)
{
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
SaveFailedScreenTextPrint(gText_GamePlayCannotBeContinued, 1, 0);
SetVBlankCallback(VBlankCB);
SetMainCallback2(CB2_FadeAndReturnToTitleScreen);
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 837259a7f..314504600 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -690,7 +690,7 @@ bool8 ScrCmd_initclock(struct ScriptContext *ctx)
return FALSE;
}
-bool8 ScrCmd_dodailyevents(struct ScriptContext *ctx)
+bool8 ScrCmd_dotimebasedevents(struct ScriptContext *ctx)
{
DoTimeBasedEvents();
return FALSE;
@@ -1203,7 +1203,7 @@ bool8 ScrCmd_turnvobject(struct ScriptContext *ctx)
bool8 ScrCmd_lockall(struct ScriptContext *ctx)
{
- if (is_c1_link_related_active())
+ if (IsUpdateLinkStateCBActive())
{
return FALSE;
}
@@ -1217,7 +1217,7 @@ bool8 ScrCmd_lockall(struct ScriptContext *ctx)
bool8 ScrCmd_lock(struct ScriptContext *ctx)
{
- if (is_c1_link_related_active())
+ if (IsUpdateLinkStateCBActive())
{
return FALSE;
}
@@ -1302,7 +1302,7 @@ bool8 ScrCmd_cmdDB(struct ScriptContext *ctx)
if (msg == NULL)
msg = (const u8 *)ctx->data[0];
sub_81973A4();
- NewMenuHelpers_DrawDialogueFrame(0, 1);
+ DrawDialogueFrame(0, 1);
AddTextPrinterParameterized(0, 1, msg, 0, 1, 0, 0);
return FALSE;
}
@@ -1517,9 +1517,9 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
winTemplate = CreateWindowTemplate(0, xWindow, yWindow + 1, width, height, 0xF, 0x1);
gUnknown_03000F30 = AddWindow(&winTemplate);
LoadUserWindowBorderGfx(gUnknown_03000F30, 0x214, 0xE0);
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_03000F30, 0);
+ DrawStdWindowFrame(gUnknown_03000F30, 0);
PutWindowTilemap(gUnknown_03000F30);
- FillWindowPixelBuffer(gUnknown_03000F30, 0x11);
+ FillWindowPixelBuffer(gUnknown_03000F30, PIXEL_FILL(1));
AddTextPrinterParameterized(gUnknown_03000F30, 6, gStringVar4, xText, yText, 0xFF, 0x0);
CopyWindowToVram(gUnknown_03000F30, 3);
return FALSE;
@@ -2028,14 +2028,14 @@ bool8 ScrCmd_setmetatile(struct ScriptContext *ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
u16 tileId = VarGet(ScriptReadHalfword(ctx));
- u16 v8 = VarGet(ScriptReadHalfword(ctx));
+ u16 isImpassable = VarGet(ScriptReadHalfword(ctx));
x += 7;
y += 7;
- if (!v8)
+ if (!isImpassable)
MapGridSetMetatileIdAt(x, y, tileId);
else
- MapGridSetMetatileIdAt(x, y, tileId | 0xC00);
+ MapGridSetMetatileIdAt(x, y, tileId | METATILE_COLLISION_MASK);
return FALSE;
}
@@ -2182,7 +2182,7 @@ bool8 ScrCmd_cmdD8(struct ScriptContext *ctx)
bool8 ScrCmd_cmdD9(struct ScriptContext *ctx)
{
- if (is_c1_link_related_active())
+ if (IsUpdateLinkStateCBActive())
{
return FALSE;
}
@@ -2254,7 +2254,7 @@ bool8 ScrCmd_setmonmetlocation(struct ScriptContext *ctx)
void sub_809BDB4(void)
{
- sub_819746C(gUnknown_03000F30, 1);
+ ClearStdWindowAndFrame(gUnknown_03000F30, 1);
RemoveWindow(gUnknown_03000F30);
}
diff --git a/src/script.c b/src/script.c
index c61ae7183..c95a1141f 100644
--- a/src/script.c
+++ b/src/script.c
@@ -2,6 +2,7 @@
#include "script.h"
#include "event_data.h"
#include "util.h"
+#include "constants/map_scripts.h"
#define RAM_SCRIPT_MAGIC 51
@@ -241,7 +242,7 @@ void ScriptContext2_RunNewScript(const u8 *ptr)
while (RunScriptCommand(&sScriptContext2) == TRUE);
}
-u8 *mapheader_get_tagged_pointer(u8 tag)
+u8 *MapHeaderGetScriptTable(u8 tag)
{
const u8 *mapScripts = gMapHeader.mapScripts;
@@ -261,16 +262,16 @@ u8 *mapheader_get_tagged_pointer(u8 tag)
}
}
-void mapheader_run_script_by_tag(u8 tag)
+void MapHeaderRunScriptType(u8 tag)
{
- u8 *ptr = mapheader_get_tagged_pointer(tag);
+ u8 *ptr = MapHeaderGetScriptTable(tag);
if (ptr)
ScriptContext2_RunNewScript(ptr);
}
-u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag)
+u8 *MapHeaderCheckScriptTable(u8 tag)
{
- u8 *ptr = mapheader_get_tagged_pointer(tag);
+ u8 *ptr = MapHeaderGetScriptTable(tag);
if (!ptr)
return NULL;
@@ -291,45 +292,45 @@ u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag)
}
}
-void mapheader_run_script_with_tag_x1(void)
+void RunOnLoadMapScript(void)
{
- mapheader_run_script_by_tag(1);
+ MapHeaderRunScriptType(MAP_SCRIPT_ON_LOAD);
}
-void mapheader_run_script_with_tag_x3(void)
+void RunOnTransitionMapScript(void)
{
- mapheader_run_script_by_tag(3);
+ MapHeaderRunScriptType(MAP_SCRIPT_ON_TRANSITION);
}
-void mapheader_run_script_with_tag_x5(void)
+void RunOnResumeMapScript(void)
{
- mapheader_run_script_by_tag(5);
+ MapHeaderRunScriptType(MAP_SCRIPT_ON_RESUME);
}
-void mapheader_run_script_with_tag_x7(void)
+void RunOnReturnToFieldMapScript(void)
{
- mapheader_run_script_by_tag(7);
+ MapHeaderRunScriptType(MAP_SCRIPT_ON_RETURN_TO_FIELD);
}
-void mapheader_run_script_with_tag_x6(void)
+void RunOnDiveWarpMapScript(void)
{
- mapheader_run_script_by_tag(6);
+ MapHeaderRunScriptType(MAP_SCRIPT_ON_DIVE_WARP);
}
-bool8 mapheader_run_first_tag2_script_list_match(void)
+bool8 TryRunOnFrameMapScript(void)
{
- u8 *ptr = mapheader_get_first_match_from_tagged_ptr_list(2);
+ u8 *ptr = MapHeaderCheckScriptTable(MAP_SCRIPT_ON_FRAME_TABLE);
if (!ptr)
- return 0;
+ return FALSE;
ScriptContext1_SetupScript(ptr);
- return 1;
+ return TRUE;
}
-void mapheader_run_first_tag4_script_list_match(void)
+void TryRunOnWarpIntoMapScript(void)
{
- u8 *ptr = mapheader_get_first_match_from_tagged_ptr_list(4);
+ u8 *ptr = MapHeaderCheckScriptTable(MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE);
if (ptr)
ScriptContext2_RunNewScript(ptr);
}
diff --git a/src/script_menu.c b/src/script_menu.c
index a4f4c6086..c7523a370 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -1170,9 +1170,9 @@ static void Task_HandleMultichoiceInput(u8 taskId)
sub_80E2A94(tMultichoiceId);
}
- if (selection != -2)
+ if (selection != MENU_NOTHING_CHOSEN)
{
- if (selection == -1)
+ if (selection == MENU_B_PRESSED)
{
if (tIgnoreBPress)
return;
@@ -1202,7 +1202,7 @@ bool8 ScriptMenu_YesNo(u8 left, u8 top)
else
{
gSpecialVar_Result = 0xFF;
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
taskId = CreateTask(Task_HandleYesNoInput, 0x50);
return TRUE;
}
@@ -1312,7 +1312,7 @@ static void Task_HandleMultichoiceGridInput(u8 taskId)
#undef tWindowId
-bool8 ScrSpecial_CreatePCMenu(void)
+bool16 ScrSpecial_CreatePCMenu(void)
{
if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
{
@@ -1630,7 +1630,7 @@ u8 CreateWindowFromRect(u8 x, u8 y, u8 width, u8 height)
void sub_80E2A78(u8 windowId)
{
- sub_8198070(windowId, TRUE);
+ ClearStdWindowAndFrameToTransparent(windowId, TRUE);
RemoveWindow(windowId);
}
@@ -1639,27 +1639,27 @@ static void sub_80E2A94(u8 multichoiceId)
switch (multichoiceId)
{
case 77:
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_0858BBAC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
case 76:
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_0858BB9C[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
case 78:
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_0858BBBC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
case 79:
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_0858BBCC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
case 75:
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_0858BBEC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
case 74:
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_0858BBE0[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
}
diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c
index cade00b50..7d6020c7a 100755
--- a/src/script_pokemon_util_80F87D8.c
+++ b/src/script_pokemon_util_80F87D8.c
@@ -29,6 +29,7 @@
#include "constants/items.h"
#include "constants/species.h"
#include "constants/vars.h"
+#include "constants/battle_frontier.h"
extern const u16 gEventObjectPalette8[];
extern const u16 gEventObjectPalette17[];
@@ -40,7 +41,7 @@ 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 CB2_ReturnFromChooseHalfParty(void);
static void sub_80F94B8(void);
void SetContestTrainerGfxIds(void)
@@ -640,22 +641,24 @@ void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot)
SetMonMoveSlot(&gPlayerParty[monIndex], move, slot);
}
-void sub_80F9438(void)
+// Note: When control returns to the event script, gSpecialVar_Result will be
+// TRUE if the party selection was successful.
+void ChooseHalfPartyForBattle(void)
{
- gMain.savedCallback = sub_80F9460;
- VarSet(VAR_FRONTIER_FACILITY, 9); // this isn't a valid frontier facility id (??)
- sub_81B8518(0);
+ gMain.savedCallback = CB2_ReturnFromChooseHalfParty;
+ VarSet(VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_DOUBLE_COLOSSEUM);
+ InitChooseHalfPartyForBattle(0);
}
-static void sub_80F9460(void)
+static void CB2_ReturnFromChooseHalfParty(void)
{
switch (gSelectedOrderFromParty[0])
{
case 0:
- gSpecialVar_Result = 0;
+ gSpecialVar_Result = FALSE;
break;
default:
- gSpecialVar_Result = 1;
+ gSpecialVar_Result = TRUE;
break;
}
@@ -665,7 +668,7 @@ static void sub_80F9460(void)
void sub_80F9490(void)
{
gMain.savedCallback = sub_80F94B8;
- sub_81B8518(gSpecialVar_0x8004 + 1);
+ InitChooseHalfPartyForBattle(gSpecialVar_0x8004 + 1);
}
static void sub_80F94B8(void)
diff --git a/src/secret_base.c b/src/secret_base.c
index de5fae077..e19aecba3 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -43,8 +43,6 @@
#include "constants/species.h"
#include "constants/trainers.h"
-extern void mapldr_default(void);
-
// Static type declarations
struct SecretBaseListMenuBuffer {
@@ -60,7 +58,7 @@ struct SecretBaseRecordMixer {
// Static RAM declarations
EWRAM_DATA u8 sCurSecretBaseId = 0;
-EWRAM_DATA u8 gUnknown_0203A01D = 0;
+EWRAM_DATA bool8 gInFriendSecretBase = FALSE;
EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL;
// Static ROM declarations
@@ -259,7 +257,7 @@ void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile)
{
for (x = 0; x < mapLayout->width; x ++)
{
- if ((mapLayout->map[y * mapLayout->width + x] & 0x3ff) == tile)
+ if ((mapLayout->map[y * mapLayout->width + x] & METATILE_ID_MASK) == tile)
{
*xPtr = x;
*yPtr = y;
@@ -282,7 +280,7 @@ void sub_80E8D4C(void)
{
if (gUnknown_0858CFCC[i].tile1 == tile)
{
- MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | 0xC00);
+ MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
return;
}
@@ -291,7 +289,7 @@ void sub_80E8D4C(void)
{
if (gUnknown_0858CFCC[i].tile2 == tile)
{
- MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile1 | 0xC00);
+ MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile1 | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
return;
}
@@ -352,7 +350,7 @@ void sub_80E8EE0(struct MapEvents const *events)
{
if (gUnknown_0858CFCC[i].tile1 == tile_id)
{
- MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | 0xc00);
+ MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | METATILE_COLLISION_MASK);
break;
}
}
@@ -391,7 +389,7 @@ void sub_80E8FD0(u8 taskId)
}
sub_80E8F9C();
WarpIntoMap();
- gFieldCallback = sub_80AF168;
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
SetMainCallback2(CB2_LoadMap);
DestroyTask(taskId);
break;
@@ -407,7 +405,7 @@ void sub_80E9068(void)
bool8 sub_80E909C(void)
{
- if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_0x4097) == 0)
+ if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_INIT_SECRET_BASE) == 0)
{
return FALSE;
}
@@ -434,7 +432,7 @@ void sub_80E9108(void)
sub_80E8CB0(&x, &y, 0x220);
x += 7;
y += 7;
- MapGridSetMetatileIdAt(x, y, 0x220 | 0xC00);
+ MapGridSetMetatileIdAt(x, y, 0x220 | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
pal_fill_black();
CreateTask(sub_80E90C8, 0);
@@ -492,12 +490,12 @@ void sub_80E9238(u8 flagIn)
if (curBaseId != 0)
{
sub_80E8CB0(&x, &y, 0x220);
- MapGridSetMetatileIdAt(x + 7, y + 7, 0x221 | 0xc00);
+ MapGridSetMetatileIdAt(x + 7, y + 7, 0x221 | METATILE_COLLISION_MASK);
}
- else if (flagIn == 1 && VarGet(VAR_0x4089) == 1)
+ else if (flagIn == 1 && VarGet(VAR_SECRET_BASE_INITIALIZED) == 1)
{
sub_80E8CB0(&x, &y, 0x220);
- MapGridSetMetatileIdAt(x + 7, y + 7, 0x20a | 0xc00);
+ MapGridSetMetatileIdAt(x + 7, y + 7, 0x20a | METATILE_COLLISION_MASK);
}
}
}
@@ -552,7 +550,7 @@ void sub_80E933C(void)
metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
if (MetatileBehavior_IsSecretBaseLargeMatEdge(metatile) == TRUE || MetatileBehavior_IsLargeMatCenter(metatile) == TRUE)
{
- gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].graphicsId + VAR_0x3F20;
+ gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].graphicsId + UNKNOWN_VAR_OFFSET_3F20;
VarSet(gSpecialVar_Result, gDecorations[roomDecor[decorIdx]].tiles[0]);
gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].localId;
FlagClear(gSpecialVar_0x8004 + 0xAE);
@@ -791,7 +789,7 @@ void sub_80E9AD0(void)
{
if (gUnknown_0858CFCC[j].tile2 == tile)
{
- MapGridSetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7, gUnknown_0858CFCC[j].tile1 | 0xc00);
+ MapGridSetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7, gUnknown_0858CFCC[j].tile1 | METATILE_COLLISION_MASK);
break;
}
}
@@ -871,7 +869,7 @@ void sub_80E9C9C(u8 taskId)
{
data[1] = 0;
data[2] = 0;
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
gUnknown_0203A020 = calloc(1, sizeof(struct SecretBaseListMenuBuffer));
data[6] = AddWindow(&gUnknown_0858D06C[0]);
game_continue(taskId);
@@ -953,17 +951,17 @@ void sub_80E9E90(u8 taskId)
s32 input;
data = gTasks[taskId].data;
- input = ListMenuHandleInputGetItemId(data[5]);
+ input = ListMenu_ProcessInput(data[5]);
ListMenuGetScrollAndRow(data[5], &data[2], &data[1]);
switch (input)
{
- case -1:
+ case LIST_NOTHING_CHOSEN:
break;
- case -2:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
DestroyListMenuTask(data[5], NULL, NULL);
RemoveScrollIndicatorArrowPair(data[8]);
- sub_819746C(data[6], 0);
+ ClearStdWindowAndFrame(data[6], 0);
ClearWindowTilemap(data[6]);
RemoveWindow(data[6]);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1002,11 +1000,11 @@ void sub_80E9FB0(u8 taskId)
input = Menu_ProcessInputNoWrap();
switch (input)
{
- case -1:
+ case MENU_B_PRESSED:
PlaySE(SE_SELECT);
sub_80EA18C(taskId);
break;
- case -2:
+ case MENU_NOTHING_CHOSEN:
break;
default:
PlaySE(SE_SELECT);
@@ -1020,8 +1018,8 @@ void sub_80E9FFC(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- sub_819746C(data[6], FALSE);
- sub_819746C(data[7], FALSE);
+ ClearStdWindowAndFrame(data[6], FALSE);
+ ClearStdWindowAndFrame(data[7], FALSE);
ClearWindowTilemap(data[6]);
ClearWindowTilemap(data[7]);
RemoveWindow(data[7]);
@@ -1033,7 +1031,7 @@ void sub_80E9FFC(u8 taskId)
void sub_80EA06C(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &gUnknown_0858D058);
}
@@ -1042,7 +1040,7 @@ void sub_80EA08C(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
DestroyListMenuTask(data[5], &data[2], &data[1]);
gSaveBlock1Ptr->secretBases[data[4]].sbr_field_1_6 = 0;
game_continue(taskId);
@@ -1061,7 +1059,7 @@ void sub_80EA13C(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
DestroyListMenuTask(data[5], &data[2], &data[1]);
sub_80E9E00(taskId);
gTasks[taskId].func = sub_80E9E90;
@@ -1073,7 +1071,7 @@ void sub_80EA18C(u8 taskId)
data = gTasks[taskId].data;
sub_80E9E44(taskId);
- sub_819746C(data[7], 0);
+ ClearStdWindowAndFrame(data[7], 0);
ClearWindowTilemap(data[7]);
RemoveWindow(data[7]);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1186,11 +1184,11 @@ void SecretBasePerStepCallback(u8 taskId)
case 0:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- gUnknown_0203A01D = TRUE;
+ gInFriendSecretBase = TRUE;
}
else
{
- gUnknown_0203A01D = FALSE;
+ gInFriendSecretBase = FALSE;
}
PlayerGetDestCoords(&data[2], &data[3]);
data[1] = 1;
@@ -1201,103 +1199,103 @@ void SecretBasePerStepCallback(u8 taskId)
{
data[2] = x;
data[3] = y;
- VarSet(VAR_0x40EC, VarGet(VAR_0x40EC) + 1);
+ VarSet(VAR_SECRET_BASE_STEP_COUNTER, VarGet(VAR_SECRET_BASE_STEP_COUNTER) + 1);
behavior = MapGridGetMetatileBehaviorAt(x, y);
tileId = MapGridGetMetatileIdAt(x, y);
if (tileId == 0x234 || tileId == 0x23C)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x20);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x20);
}
}
else if (tileId == 0x2b8 || tileId == 0x2b9 || tileId == 0x2ba || tileId == 0x2c0 || tileId == 0x2c1 || tileId == 0x2c2 || tileId == 0x2c8 || tileId == 0x2c9 || tileId == 0x2ca)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x01);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x01);
}
}
else if (tileId == 0x239 || tileId == 0x241 || tileId == 0x251 || tileId == 0x259)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x04);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x04);
}
}
else if ((behavior == 0x34 && tileId == 0x26d) || (behavior == 0x35 && MapGridGetMetatileIdAt(x, y) == 0x26a))
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x200);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x200);
}
}
else if (behavior == 0xc1 && tileId == 0x23d)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) ^ 0x1000);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x2000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x1000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x2000);
}
}
else if (behavior == 0x47 && tileId == 0x23e)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x1000);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) ^ 0x2000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x1000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x2000);
}
}
else if (MetatileBehavior_IsSecretBaseGlitterMat(behavior) == TRUE)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x80);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x80);
}
}
else if (MetatileBehavior_IsSecretBaseBalloon(behavior) == TRUE)
{
PopSecretBaseBalloon(MapGridGetMetatileIdAt(x, y), x, y);
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
switch ((int)MapGridGetMetatileIdAt(x, y))
{
case 0x338:
case 0x33c:
case 0x340:
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x02);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x02);
break;
case 0x228:
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x100);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x100);
break;
}
}
}
else if (MetatileBehavior_IsSecretBaseBreakableDoor(behavior) == TRUE)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x400);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x400);
}
ShatterSecretBaseBreakableDoor(x, y);
}
else if (MetatileBehavior_IsSecretBaseSoundMat(behavior) == TRUE){
- if (gUnknown_0203A01D == TRUE) {
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x8000);
+ if (gInFriendSecretBase == TRUE) {
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8000);
}
}
else if (MetatileBehavior_IsSecretBaseJumpMat(behavior) == TRUE)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x4000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4000);
}
}
else if (MetatileBehavior_IsSecretBaseSpinMat(behavior) == TRUE)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x02);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x02);
}
}
}
@@ -1780,33 +1778,33 @@ void sub_80EB18C(struct SecretBaseRecord *bases)
void sub_80EB1AC(void)
{
- VarSet(VAR_0x40EC, 0);
- VarSet(VAR_0x40ED, 0);
- VarSet(VAR_0x40EE, 0);
- VarSet(VAR_0x40EF, 0);
+ VarSet(VAR_SECRET_BASE_STEP_COUNTER, 0);
+ VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, 0);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, 0);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, 0);
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40F0, TRUE);
+ VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, TRUE);
}
else
{
- VarSet(VAR_0x40F0, FALSE);
+ VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE);
}
- gUnknown_0203A01D = FALSE;
+ gInFriendSecretBase = FALSE;
}
void sub_80EB218(void)
{
- if (VarGet(VAR_0x40F0) && gUnknown_0203A01D == TRUE && !CurrentMapIsSecretBase())
+ if (VarGet(VAR_SECRET_BASE_IS_NOT_LOCAL) && gInFriendSecretBase == TRUE && !CurrentMapIsSecretBase())
{
- VarSet(VAR_0x40F0, FALSE);
- gUnknown_0203A01D = FALSE;
+ VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE);
+ gInFriendSecretBase = FALSE;
sub_80EEA70();
- VarSet(VAR_0x40EC, 0);
- VarSet(VAR_0x40ED, 0);
- VarSet(VAR_0x40EE, 0);
- VarSet(VAR_0x40EF, 0);
- VarSet(VAR_0x40F0, FALSE);
+ VarSet(VAR_SECRET_BASE_STEP_COUNTER, 0);
+ VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, 0);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, 0);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, 0);
+ VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE);
}
}
@@ -1814,7 +1812,7 @@ void sub_80EB290(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x800);
}
}
@@ -1822,7 +1820,7 @@ void sub_80EB2C8(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x400);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x400);
}
}
@@ -1830,9 +1828,9 @@ void sub_80EB300(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x2000);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x2000);
}
}
@@ -1840,9 +1838,9 @@ void sub_80EB368(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x800);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x800);
}
}
@@ -1850,9 +1848,9 @@ void sub_80EB3D0(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x1000);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x1000);
}
}
@@ -1860,9 +1858,9 @@ void sub_80EB438(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x001);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x001);
}
}
@@ -1891,7 +1889,7 @@ void sub_80EB498(void)
case 0x334:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x4000);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x4000);
}
break;
}
@@ -1909,7 +1907,7 @@ void sub_80EB56C(void)
case 0x28b:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x40);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x40);
}
break;
case 0x2d8:
@@ -1932,21 +1930,21 @@ void sub_80EB56C(void)
case 0x2fb:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x8);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8);
}
break;
case 0x22c:
case 0x233:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x40);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x40);
}
break;
case 0x288:
case 0x289:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100);
}
break;
case 0x22d:
@@ -1954,7 +1952,7 @@ void sub_80EB56C(void)
case 0x22f:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10);
}
break;
case 0x287:
@@ -1982,7 +1980,7 @@ void sub_80EB56C(void)
case 0x2cf:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8);
}
break;
}
@@ -2009,7 +2007,7 @@ void sub_80EB9E0(void)
case 0x2c6:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8);
}
break;
}
@@ -2047,14 +2045,14 @@ void sub_80EBB28(void)
case 0x2c7:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8);
}
break;
case 0x280:
case 0x281:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100);
}
break;
case 0x225:
@@ -2062,7 +2060,7 @@ void sub_80EBB28(void)
case 0x227:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10);
}
break;
}
@@ -2080,7 +2078,7 @@ void sub_80EBE7C(void)
case 0x28e:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x4);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4);
}
break;
}
diff --git a/src/shop.c b/src/shop.c
index c44cbca12..32caafb64 100755
--- a/src/shop.c
+++ b/src/shop.c
@@ -328,9 +328,9 @@ static void Task_ShopMenu(u8 taskId)
s8 inputCode = Menu_ProcessInputNoWrap();
switch (inputCode)
{
- case LIST_B_PRESSED:
+ case MENU_NOTHING_CHOSEN:
break;
- case LIST_NOTHING_CHOSEN:
+ case MENU_B_PRESSED:
PlaySE(SE_SELECT);
Task_HandleShopMenuQuit(taskId);
break;
@@ -366,7 +366,7 @@ void CB2_ExitSellMenu(void)
static void Task_HandleShopMenuQuit(u8 taskId)
{
- sub_8198070(gMartInfo.windowId, 2);
+ ClearStdWindowAndFrameToTransparent(gMartInfo.windowId, 2);
RemoveWindow(gMartInfo.windowId);
SaveRecordedItemPurchasesForTVShow();
ScriptContext2_Disable();
@@ -545,7 +545,7 @@ static void BuyMenuPrintItemDescriptionAndShowItemIcon(int item, bool8 onInit, s
description = gText_QuitShopping;
}
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
BuyMenuPrint(2, description, 3, 1, 0, 0);
}
@@ -911,14 +911,14 @@ static void Task_BuyMenu(u8 taskId)
if (!gPaletteFade.active)
{
- s32 itemId = ListMenuHandleInputGetItemId(tListTaskId);
+ s32 itemId = ListMenu_ProcessInput(tListTaskId);
ListMenuGetScrollAndRow(tListTaskId, &gShopDataPtr->scrollOffset, &gShopDataPtr->selectedRow);
switch (itemId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
ExitBuyMenu(taskId);
break;
@@ -981,12 +981,12 @@ static void Task_BuyHowManyDialogueInit(u8 taskId)
u16 quantityInBag = CountTotalItemQuantityInBag(tItemId);
u16 maxQuantity;
- SetWindowBorderStyle(3, FALSE, 1, 13);
+ DrawStdFrameWithCustomTileAndPalette(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);
+ DrawStdFrameWithCustomTileAndPalette(4, FALSE, 1, 13);
BuyMenuPrintItemQuantityAndPrice(taskId);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1018,8 +1018,8 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId)
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- sub_8198070(4, 0);
- sub_8198070(3, 0);
+ ClearStdWindowAndFrameToTransparent(4, 0);
+ ClearStdWindowAndFrameToTransparent(3, 0);
ClearWindowTilemap(4);
ClearWindowTilemap(3);
PutWindowTilemap(1);
@@ -1031,8 +1031,8 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId)
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- sub_8198070(4, 0);
- sub_8198070(3, 0);
+ ClearStdWindowAndFrameToTransparent(4, 0);
+ ClearStdWindowAndFrameToTransparent(3, 0);
ClearWindowTilemap(4);
ClearWindowTilemap(3);
BuyMenuReturnToItemList(taskId);
@@ -1131,7 +1131,7 @@ static void BuyMenuReturnToItemList(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_8197DF8(5, 0);
+ ClearDialogWindowAndFrameToTransparent(5, 0);
BuyMenuPrintCursor(tListTaskId, 1);
PutWindowTilemap(1);
PutWindowTilemap(2);
@@ -1144,7 +1144,7 @@ static void BuyMenuPrintItemQuantityAndPrice(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- FillWindowPixelBuffer(4, 0x11);
+ FillWindowPixelBuffer(4, PIXEL_FILL(1));
PrintMoneyAmount(4, 38, 1, gShopDataPtr->totalCost, TEXT_SPEED_FF);
ConvertIntToDecimalStringN(gStringVar1, tItemCount, 2, 2);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
diff --git a/src/siirtc.c b/src/siirtc.c
index 965a068f1..5c153a841 100644
--- a/src/siirtc.c
+++ b/src/siirtc.c
@@ -46,6 +46,19 @@
#define CMD_TIME CMD(3)
#define CMD_ALARM CMD(4)
+#define SCK_HI 1
+#define SIO_HI 2
+#define CS_HI 4
+
+#define DIR_0_IN 0
+#define DIR_0_OUT 1
+#define DIR_1_IN 0
+#define DIR_1_OUT 2
+#define DIR_2_IN 0
+#define DIR_2_OUT 4
+#define DIR_ALL_IN (DIR_0_IN | DIR_1_IN | DIR_2_IN)
+#define DIR_ALL_OUT (DIR_0_OUT | DIR_1_OUT | DIR_2_OUT)
+
#define GPIO_PORT_DATA (*(vu16 *)0x80000C4)
#define GPIO_PORT_DIRECTION (*(vu16 *)0x80000C6)
#define GPIO_PORT_READ_ENABLE (*(vu16 *)0x80000C8)
@@ -63,19 +76,19 @@ static void DisableGpioPortRead();
static const char AgbLibRtcVersion[] = "SIIRTC_V001";
-void SiiRtcUnprotect()
+void SiiRtcUnprotect(void)
{
EnableGpioPortRead();
sLocked = FALSE;
}
-void SiiRtcProtect()
+void SiiRtcProtect(void)
{
DisableGpioPortRead();
sLocked = TRUE;
}
-u8 SiiRtcProbe()
+u8 SiiRtcProbe(void)
{
u8 errorCode;
struct SiiRtcInfo rtc;
@@ -116,7 +129,7 @@ u8 SiiRtcProbe()
return (errorCode << 4) | 1;
}
-bool8 SiiRtcReset()
+bool8 SiiRtcReset(void)
{
u8 result;
struct SiiRtcInfo rtc;
@@ -126,15 +139,15 @@ bool8 SiiRtcReset()
sLocked = TRUE;
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 5;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI | CS_HI;
- GPIO_PORT_DIRECTION = 7;
+ GPIO_PORT_DIRECTION = DIR_ALL_OUT;
WriteCommand(CMD_RESET | WR);
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 1;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI;
sLocked = FALSE;
@@ -154,14 +167,14 @@ bool8 SiiRtcGetStatus(struct SiiRtcInfo *rtc)
sLocked = TRUE;
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 5;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI | CS_HI;
- GPIO_PORT_DIRECTION = 7;
+ GPIO_PORT_DIRECTION = DIR_ALL_OUT;
WriteCommand(CMD_STATUS | RD);
- GPIO_PORT_DIRECTION = 5;
+ GPIO_PORT_DIRECTION = DIR_0_OUT | DIR_1_IN | DIR_2_OUT;
statusData = ReadData();
@@ -170,8 +183,8 @@ bool8 SiiRtcGetStatus(struct SiiRtcInfo *rtc)
| ((statusData & STATUS_INTME) >> 2)
| ((statusData & STATUS_INTFE) >> 1);
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 1;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI;
sLocked = FALSE;
@@ -187,22 +200,22 @@ bool8 SiiRtcSetStatus(struct SiiRtcInfo *rtc)
sLocked = TRUE;
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 5;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI | CS_HI;
statusData = STATUS_24HOUR
| ((rtc->status & SIIRTCINFO_INTAE) << 3)
| ((rtc->status & SIIRTCINFO_INTME) << 2)
| ((rtc->status & SIIRTCINFO_INTFE) << 1);
- GPIO_PORT_DIRECTION = 7;
+ GPIO_PORT_DIRECTION = DIR_ALL_OUT;
WriteCommand(CMD_STATUS | WR);
WriteData(statusData);
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 1;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI;
sLocked = FALSE;
@@ -218,22 +231,22 @@ bool8 SiiRtcGetDateTime(struct SiiRtcInfo *rtc)
sLocked = TRUE;
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 5;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI | CS_HI;
- GPIO_PORT_DIRECTION = 7;
+ GPIO_PORT_DIRECTION = DIR_ALL_OUT;
WriteCommand(CMD_DATETIME | RD);
- GPIO_PORT_DIRECTION = 5;
+ GPIO_PORT_DIRECTION = DIR_0_OUT | DIR_1_IN | DIR_2_OUT;
for (i = 0; i < DATETIME_BUF_LEN; i++)
DATETIME_BUF(rtc, i) = ReadData();
INFO_BUF(rtc, OFFSET_HOUR) &= 0x7F;
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 1;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI;
sLocked = FALSE;
@@ -249,18 +262,18 @@ bool8 SiiRtcSetDateTime(struct SiiRtcInfo *rtc)
sLocked = TRUE;
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 5;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI | CS_HI;
- GPIO_PORT_DIRECTION = 7;
+ GPIO_PORT_DIRECTION = DIR_ALL_OUT;
WriteCommand(CMD_DATETIME | WR);
for (i = 0; i < DATETIME_BUF_LEN; i++)
WriteData(DATETIME_BUF(rtc, i));
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 1;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI;
sLocked = FALSE;
@@ -276,22 +289,22 @@ bool8 SiiRtcGetTime(struct SiiRtcInfo *rtc)
sLocked = TRUE;
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 5;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI | CS_HI;
- GPIO_PORT_DIRECTION = 7;
+ GPIO_PORT_DIRECTION = DIR_ALL_OUT;
WriteCommand(CMD_TIME | RD);
- GPIO_PORT_DIRECTION = 5;
+ GPIO_PORT_DIRECTION = DIR_0_OUT | DIR_1_IN | DIR_2_OUT;
for (i = 0; i < TIME_BUF_LEN; i++)
TIME_BUF(rtc, i) = ReadData();
INFO_BUF(rtc, OFFSET_HOUR) &= 0x7F;
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 1;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI;
sLocked = FALSE;
@@ -307,18 +320,18 @@ bool8 SiiRtcSetTime(struct SiiRtcInfo *rtc)
sLocked = TRUE;
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 5;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI | CS_HI;
- GPIO_PORT_DIRECTION = 7;
+ GPIO_PORT_DIRECTION = DIR_ALL_OUT;
WriteCommand(CMD_TIME | WR);
for (i = 0; i < TIME_BUF_LEN; i++)
WriteData(TIME_BUF(rtc, i));
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 1;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI;
sLocked = FALSE;
@@ -347,18 +360,18 @@ bool8 SiiRtcSetAlarm(struct SiiRtcInfo *rtc)
alarmData[1] = rtc->alarmMinute;
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 5;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI | CS_HI;
- GPIOPortDirection = 7; // Why is this the only instance that uses a symbol?
+ GPIOPortDirection = DIR_ALL_OUT; // Why is this the only instance that uses a symbol?
WriteCommand(CMD_ALARM | WR);
for (i = 0; i < 2; i++)
WriteData(alarmData[i]);
- GPIO_PORT_DATA = 1;
- GPIO_PORT_DATA = 1;
+ GPIO_PORT_DATA = SCK_HI;
+ GPIO_PORT_DATA = SCK_HI;
sLocked = FALSE;
@@ -373,10 +386,10 @@ static int WriteCommand(u8 value)
for (i = 0; i < 8; i++)
{
temp = ((value >> (7 - i)) & 1);
- GPIO_PORT_DATA = (temp << 1) | 4;
- GPIO_PORT_DATA = (temp << 1) | 4;
- GPIO_PORT_DATA = (temp << 1) | 4;
- GPIO_PORT_DATA = (temp << 1) | 5;
+ GPIO_PORT_DATA = (temp << 1) | CS_HI;
+ GPIO_PORT_DATA = (temp << 1) | CS_HI;
+ GPIO_PORT_DATA = (temp << 1) | CS_HI;
+ GPIO_PORT_DATA = (temp << 1) | SCK_HI | CS_HI;
}
// control reaches end of non-void function
@@ -390,10 +403,10 @@ static int WriteData(u8 value)
for (i = 0; i < 8; i++)
{
temp = ((value >> i) & 1);
- GPIO_PORT_DATA = (temp << 1) | 4;
- GPIO_PORT_DATA = (temp << 1) | 4;
- GPIO_PORT_DATA = (temp << 1) | 4;
- GPIO_PORT_DATA = (temp << 1) | 5;
+ GPIO_PORT_DATA = (temp << 1) | CS_HI;
+ GPIO_PORT_DATA = (temp << 1) | CS_HI;
+ GPIO_PORT_DATA = (temp << 1) | CS_HI;
+ GPIO_PORT_DATA = (temp << 1) | SCK_HI | CS_HI;
}
// control reaches end of non-void function
@@ -407,14 +420,14 @@ static u8 ReadData()
for (i = 0; i < 8; i++)
{
- GPIO_PORT_DATA = 4;
- GPIO_PORT_DATA = 4;
- GPIO_PORT_DATA = 4;
- GPIO_PORT_DATA = 4;
- GPIO_PORT_DATA = 4;
- GPIO_PORT_DATA = 5;
-
- temp = ((GPIO_PORT_DATA & 2) >> 1);
+ GPIO_PORT_DATA = CS_HI;
+ GPIO_PORT_DATA = CS_HI;
+ GPIO_PORT_DATA = CS_HI;
+ GPIO_PORT_DATA = CS_HI;
+ GPIO_PORT_DATA = CS_HI;
+ GPIO_PORT_DATA = SCK_HI | CS_HI;
+
+ temp = ((GPIO_PORT_DATA & SIO_HI) >> 1);
value = (value >> 1) | (temp << 7); // UB: accessing uninitialized var
}
diff --git a/src/slot_machine.c b/src/slot_machine.c
index 0871506cd..a2e1f1554 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -60,33 +60,33 @@ enum
struct SlotMachineEwramStruct
{
/*0x00*/ u8 state;
- /*0x01*/ u8 unk01;
+ /*0x01*/ u8 machineId;
/*0x02*/ u8 pikaPower;
- /*0x03*/ u8 unk03;
- /*0x04*/ u8 unk04;
- /*0x05*/ u8 unk05;
- /*0x06*/ u8 unk06;
- /*0x07*/ u8 unk07;
+ /*0x03*/ u8 luckyGame;
+ /*0x04*/ u8 luckyFlags;
+ /*0x05*/ u8 reelTimeDraw;
+ /*0x06*/ u8 luckySpinsLeft; // tentative
+ /*0x07*/ u8 biasTag;
/*0x08*/ u16 matchedSymbols;
- /*0x0A*/ u8 unk0A;
- /*0x0B*/ u8 unk0B;
+ /*0x0A*/ u8 fairRollsLeft; // only happens if you win reeltime
+ /*0x0B*/ u8 fairRollsUsed;
/*0x0C*/ s16 coins;
/*0x0E*/ s16 payout;
- /*0x10*/ s16 unk10;
+ /*0x10*/ s16 netCoinLoss; // coins lost to machine (but never goes below 0)
/*0x12*/ s16 bet;
- /*0x14*/ s16 unk14;
- /*0x16*/ s16 unk16;
- /*0x18*/ s16 unk18;
- /*0x1A*/ s16 unk1A;
- /*0x1C*/ s16 unk1C[3];
- /*0x22*/ u16 unk22[3];
- /*0x28*/ s16 reelPositions[3];
- /*0x2E*/ s16 unk2E[3];
- /*0x34*/ s16 unk34[3];
- /*0x3A*/ u8 reelTasks[3];
- /*0x3D*/ u8 unk3D;
- /*0x3E*/ u8 unk3E;
- /*0x3F*/ u8 unk3F;
+ /*0x14*/ s16 reeltimePixelOffset;
+ /*0x16*/ s16 reeltimePosition;
+ /*0x18*/ s16 currReel;
+ /*0x1A*/ s16 reelIncrement; // speed of reel
+ /*0x1C*/ s16 reelPixelOffsets[3];
+ /*0x22*/ u16 reelPixelOffsetsWhileStopping[3];
+ /*0x28*/ s16 reelTagOffsets[3];
+ /*0x2E*/ s16 reelExtraTurns[3];
+ /*0x34*/ s16 winnerRows[3];
+ /*0x3A*/ u8 slotReelTasks[3];
+ /*0x3D*/ u8 unkTaskPointer3D;
+ /*0x3E*/ u8 unkTaskPointer3E;
+ /*0x3F*/ u8 reelTimeSprite3F;
/*0x40*/ u8 unk40;
/*0x41*/ u8 unk41;
/*0x42*/ u8 unk42;
@@ -95,8 +95,8 @@ struct SlotMachineEwramStruct
/*0x49*/ u8 unk49[2];
/*0x49*/ u8 unk4B[3];
/*0x4E*/ u8 unk4E[2];
- /*0x50*/ u8 unk50[2];
- /*0x52*/ u8 unk52[2];
+ /*0x50*/ u8 reelTimeSprites1[2];
+ /*0x52*/ u8 reelTimeSprites2[2];
/*0x54*/ u8 unk54[4];
/*0x58*/ u16 win0h;
/*0x5a*/ u16 win0v;
@@ -115,238 +115,238 @@ struct UnkStruct1
#define SLOTMACHINE_GFX_TILES 233
-/*static */void CB2_SlotMachineSetup(void);
-/*static */void CB2_SlotMachineLoop(void);
-/*static */void PlaySlotMachine_Internal(u8 arg0, MainCallback cb);
-/*static */void SlotMachineDummyTask(u8 taskId);
-/*static */void SlotMachineSetup_0_0(void);
-/*static */void SlotMachineSetup_6_2(void);
-/*static */void SlotMachineSetup_1_0(void);
-/*static */void SlotMachineSetup_2_0(void);
-/*static */void SlotMachineSetup_2_1(void);
-/*static */void SlotMachineSetup_0_1(void);
-/*static */void SlotMachineSetup_3_0(void);
-/*static */void SlotMachineSetup_4_0(void);
-/*static */void SlotMachineSetup_5_0(void);
-/*static */void SlotMachineSetup_6_0(void);
-/*static */void SlotMachineSetup_6_1(void);
-/*static */void SlotMachineSetup_8_0(void);
-/*static */void SlotMachineSetup_9_0(void);
-/*static */void SlotMachineSetup_10_0(void);
-/*static */void SlotMachineSetup_10_1(void);
-/*static */void sub_8101D04(void);
-/*static */void sub_8104DA4(void);
-/*static */void sub_8101D24(u8 taskId);
-/*static */bool8 sub_8101D5C(struct Task *task);
-/*static */bool8 sub_8101D8C(struct Task *task);
-/*static */bool8 sub_8101DB0(struct Task *task);
-/*static */bool8 sub_8101DF4(struct Task *task);
-/*static */bool8 sub_8101E10(struct Task *task);
-/*static */bool8 sub_8101E3C(struct Task *task);
-/*static */bool8 sub_8101F44(struct Task *task);
-/*static */bool8 sub_8101F60(struct Task *task);
-/*static */bool8 sub_8101F88(struct Task *task);
-/*static */bool8 sub_8101FA4(struct Task *task);
-/*static */bool8 sub_8102008(struct Task *task);
-/*static */bool8 sub_8102034(struct Task *task);
-/*static */bool8 sub_8102058(struct Task *task);
-/*static */bool8 sub_8102090(struct Task *task);
-/*static */bool8 sub_81020C8(struct Task *task);
-/*static */bool8 sub_81021E0(struct Task *task);
-/*static */bool8 sub_81021FC(struct Task *task);
-/*static */bool8 sub_8102264(struct Task *task);
-/*static */bool8 sub_81022A0(struct Task *task);
-/*static */bool8 sub_81022CC(struct Task *task);
-/*static */bool8 sub_81022F0(struct Task *task);
-/*static */bool8 sub_8102318(struct Task *task);
-/*static */bool8 sub_8102344(struct Task *task);
-/*static */bool8 sub_810239C(struct Task *task);
-/*static */bool8 sub_81023B8(struct Task *task);
-/*static */bool8 sub_81023E0_(struct Task *task);
-/*static */bool8 sub_81023FC(struct Task *task);
-/*static */bool8 sub_8102424(struct Task *task);
-/*static */bool8 sub_8102460(struct Task *task);
-/*static */void sub_8102484(void);
-/*static */void sub_81024F0(void);
-/*static */bool8 sub_8102540_(void);
-/*static */u8 sub_8102578(void);
-/*static */u16 dp15_jump_random_unknown(void);
-/*static */u8 sub_81025BC(void);
-/*static */void CheckMatch(void);
-/*static */void CheckMatch_CenterRow(void);
-/*static */void CheckMatch_TopAndBottom(void);
-/*static */void CheckMatch_Diagonals(void);
-/*static */u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3);
-/*static */void sub_8102A24(void);
-/*static */void sub_8102A64(u8 taskId);
-/*static */bool8 sub_8102A44(void);
-/*static */bool8 sub_8102A9C(struct Task *task);
-/*static */bool8 sub_8102AD0(struct Task *task);
-/*static */bool8 sub_8102B80(struct Task *task);
-/*static */u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y);
-/*static */void sub_8102DA8(void);
-/*static */void sub_8102DEC(u8 a0);
-/*static */void sub_8102E1C(u8 a0);
-/*static */bool8 sub_8102E40(u8 a0);
-/*static */void sub_8102E68(u8 taskId);
-/*static */bool8 sub_8102EA0(struct Task *task);
-/*static */bool8 sub_8102EA4(struct Task *task);
-/*static */bool8 sub_8102EC0(struct Task *task);
-/*static */bool8 sub_8102F4C(struct Task *task);
-/*static */bool8 sub_8103008(struct Task *task);
-/*static */bool8 sub_810305C(void);
-/*static */bool8 sub_8103154(u8 a0, u8 a1);
-/*static */bool8 sub_81031B4(u8 a0, u8 a1);
-/*static */bool8 sub_81032C0(void);
-/*static */bool8 sub_81032E8(void);
-/*static */bool8 sub_810333C(void);
-/*static */bool8 sub_81033DC(void);
-/*static */bool8 sub_810341C(u8 a0);
-/*static */bool8 sub_810347C(u8 a0);
-/*static */void sub_81034F4(void);
-/*static */void sub_8103540(void);
-/*static */void sub_8103564(void);
-/*static */void j5_08111E84(void);
-/*static */void sub_8103668(void);
-/*static */void sub_810380C(void);
-/*static */void sub_8103830(void);
-/*static */void sub_8103910(void);
-/*static */void sub_8103A78(void);
-/*static */void sub_8103C14(u8 a0);
-/*static */void sub_8103C48(u8 taskId);
-/*static */void sub_8103D50(u8 a0);
-/*static */void sub_8103C78(struct Task *task, u8 taskId);
-/*static */void sub_8103CAC(struct Task *task, u8 taskId);
-/*static */void sub_8103CC8(struct Task *task, u8 taskId);
-/*static */void sub_8103D8C(u8 a0);
-/*static */void sub_8103DC8(void);
-/*static */void sub_8103E04(u8 a0);
-/*static */bool8 sub_8103E38(void);
-/*static */bool8 sub_8103E7C(void);
-/*static */bool8 sub_8103EAC(u8 spriteId);
-/*static */void sub_8103EE4(struct Sprite *sprite);
-/*static */void sub_8103F70(void);
-/*static */bool8 sub_8103FA0(void);
-/*static */void sub_8103FE8_(u8 taskId);
-/*static */void sub_8104048(void);
-/*static */void sub_8104064(u8 pikaPower);
-/*static */bool8 sub_81040C8(void);
-/*static */void sub_81040E8(u8 taskId);
-/*static */void nullsub_68(struct Task *task);
-/*static */void sub_810411C(struct Task *task);
-/*static */void sub_8104144(struct Task *task);
-/*static */void sub_81041AC(struct Task *task);
-/*static */void sub_812D394(struct Task *task);
-/*static */void sub_810423C(u8 pikaPower);
-/*static */void sub_810430C(void);
-/*static */bool8 sub_810432C(void);
-/*static */void sub_810434C(u8 taskId);
-/*static */void sub_810437C(struct Task *task);
-/*static */void sub_81043EC(struct Task *task);
-/*static */void sub_8104468(struct Task *task);
-/*static */void sub_8104498(struct Task *task);
-/*static */void sub_8104548(struct Task *task);
-/*static */void sub_8104598(struct Task *task);
-/*static */void sub_81045CC(struct Task *task);
-/*static */void sub_810463C(struct Task *task);
-/*static */void sub_81046C0(struct Task *task);
-/*static */void sub_8104764(struct Task *task);
-/*static */void sub_8104794(struct Task *task);
-/*static */void sub_81047EC(struct Task *task);
-/*static */void sub_8104860(struct Task *task);
-/*static */void sub_81048A8(struct Task *task);
-/*static */void sub_81048CC(struct Task *task);
-/*static */void sub_8104940(struct Task *task);
-/*static */void sub_81049C8(struct Task *task);
-/*static */void sub_81049F8(struct Task *task);
-/*static */void sub_8104A40(s16 a0, s16 a1);
-/*static */void sub_8104A88(s16 a0);
-/*static */void sub_8104AB8(u8 a0);
-/*static */bool8 sub_8104AEC(void);
-/*static */void sub_8104B0C(u8 taskId);
-/*static */void sub_8104B3C(struct Task *task);
-/*static */void sub_8104B60(struct Task *task);
-/*static */void sub_8104B80(struct Task *task);
-/*static */void sub_8104BC8(struct Task *task);
-/*static */void sub_812DD78(struct Task *task);
-/*static */void sub_8104BFC(struct Task *task);
-/*static */void sub_812DE14(struct Task *task);
-/*static */void sub_812DE30(struct Task *task);
-/*static */void sub_8104C44(struct Task *task);
-/*static */void sub_8104C5C(void);
-/*static */void sub_8104CAC(u8 arg0);
-/*static */bool8 sub_8104E18(void);
-/*static */void nullsub_69(struct Task *task);
-/*static */void sub_8104E74_(u8 taskId);
-/*static */void sub_8104EA8(void);
-/*static */void sub_8104F8C(void);
-/*static */void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3);
-/*static */void sub_81050C4(void);
-/*static */void sub_8105100(void);
-/*static */void sub_810514C(void);
-/*static */void sub_81051C0(void);
-/*static */void sub_8105284_(void);
-/*static */void sub_81052EC(void);
-/*static */void sub_81053A0(void);
-/*static */void sub_810545C(void);
-/*static */void sub_81054B8(void);
-/*static */void sub_8105524(void);
-/*static */void sub_8105554(void);
-/*static */void sub_8105578(void);
-/*static */void sub_8105688(s16 a0);
-/*static */void sub_81056C0(void);
-/*static */void sub_81056F0(void);
-/*static */void sub_81057E8(s16 a0);
-/*static */void sub_8105804(void);
-/*static */void sub_8105854(void);
-/*static */void sub_81058A0(void);
-/*static */void sub_81058C4(void);
-/*static */void sub_81059B8(void);
-/*static */void sub_81059E8(void);
-/*static */bool8 sub_8105ACC(void);
-/*static */void sub_8105AEC(void);
-/*static */u8 sub_8105B1C(s16 x, s16 y);
-/*static */void sub_8105B88(u8 spriteId);
-/*static */u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4);
-/*static */void sub_81063C0(void);
-/*static */void sub_8106404(void);
-/*static */void sub_8106448(void);
-/*static */void sub_81064B8(void);
-/*static */void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
-/*static */void sub_81065DC(void);
-/*static */void sub_812F958(void);
-/*static */void sub_812F968(void);
-/*static */void LoadSlotMachineWheelOverlay(void);
-/*static */u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2);
+static void CB2_SlotMachineSetup(void);
+static void CB2_SlotMachineLoop(void);
+static void PlaySlotMachine_Internal(u8 slotMachineIndex, MainCallback cb);
+static void SlotMachineDummyTask(u8 taskId);
+static void SlotMachineSetup_0_0(void);
+static void SlotMachineSetup_6_2(void);
+static void SlotMachineSetup_1_0(void);
+static void SlotMachineSetup_2_0(void);
+static void SlotMachineSetup_2_1(void);
+static void SlotMachineSetup_0_1(void);
+static void SlotMachineSetup_3_0(void);
+static void SlotMachineSetup_4_0(void);
+static void SlotMachineSetup_5_0(void);
+static void SlotMachineSetup_6_0(void);
+static void SlotMachineSetup_6_1(void);
+static void SlotMachineSetup_8_0(void);
+static void SlotMachineSetup_9_0(void);
+static void SlotMachineSetup_10_0(void);
+static void SlotMachineSetupGameplayTasks(void);
+static void GameplayTasks_Slots(void);
+static void sub_8104DA4(void);
+static void RunSlotActions(u8 taskId);
+static bool8 SlotAction_UnfadeScreen(struct Task *task);
+static bool8 SlotAction_WaitForUnfade(struct Task *task);
+static bool8 SlotAction_SetSlotMachineVars(struct Task *task);
+static bool8 SlotAction3(struct Task *task);
+static bool8 SlotAction4(struct Task *task);
+static bool8 SlotAction_AwaitPlayerInput(struct Task *task);
+static bool8 SlotAction_PrintYouDontHaveThreeCoins(struct Task *task);
+static bool8 SlotAction_ExitYouDontHaveThreeCoinsMessage(struct Task *task);
+static bool8 SlotAction_GivingInformation(struct Task *task);
+static bool8 SlotAction9(struct Task *task);
+static bool8 SlotAction10(struct Task *task);
+static bool8 SlotAction_SetLuckySpins(struct Task *task);
+static bool8 SlotAction_AwaitReelStop(struct Task *task);
+static bool8 SlotAction_WaitForAllReelsToStop(struct Task *task);
+static bool8 SlotAction_CheckMatches(struct Task *task);
+static bool8 SlotAction_WaitForPayoutToBeAwarded(struct Task *task);
+static bool8 SlotAction_EndOfRoll(struct Task *task);
+static bool8 SlotAction_MatchedPower(struct Task *task);
+static bool8 SlotAction18(struct Task *task);
+static bool8 SlotAction_Loop(struct Task *task);
+static bool8 SlotAction_NoMatches(struct Task *task);
+static bool8 SlotAction_PrintQuitTheGame(struct Task *task);
+static bool8 SlotAction_SeeIfPlayerQuits(struct Task *task);
+static bool8 SlotAction_PrintMessage_9999Coins(struct Task *task);
+static bool8 SlotAction_ExitMessage_9999Coins(struct Task *task);
+static bool8 SlotAction_PrintMessage_NoMoreCoins(struct Task *task);
+static bool8 SlotAction_ExitMessage_NoMoreCoins(struct Task *task);
+static bool8 SlotAction_EndGame(struct Task *task);
+static bool8 SlotAction_FreeDataStructures(struct Task *task);
+static void DrawLuckyFlags(void);
+static void SetLuckySpins(void);
+static bool8 IsThisRoundLucky(void);
+static u8 AttemptsAtLuckyFlags_Top3(void);
+static u16 SlowReelSpeed(void);
+static u8 AttemptsAtLuckyFlags_NotTop3(void);
+static void CheckMatch(void);
+static void CheckMatch_CenterRow(void);
+static void CheckMatch_TopAndBottom(void);
+static void CheckMatch_Diagonals(void);
+static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3);
+static void AwardPayout(void);
+static void RunAwardPayoutActions(u8 taskId);
+static bool8 IsFinalTask_RunAwardPayoutActions(void);
+static bool8 AwardPayoutAction0(struct Task *task);
+static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *task);
+static bool8 AwardPayoutAction_FreeTask(struct Task *task);
+static u8 GetNearbyTag_Quantized(u8 x, s16 y);
+static void GameplayTask_StopSlotReel(void);
+static void ReelTasks_SetUnkTaskData(u8 a0);
+static void sub_8102E1C(u8 a0);
+static bool8 IsSlotReelMoving(u8 a0);
+static void RunSlotReelActions(u8 taskId);
+static bool8 SlotReelAction_StayStill(struct Task *task);
+static bool8 SlotReelAction_Spin(struct Task *task);
+static bool8 SlotReelAction_DecideWhereToStop(struct Task *task);
+static bool8 SlotReelAction_MoveToStop(struct Task *task);
+static bool8 SlotReelAction_OscillatingStop(struct Task *task);
+static bool8 DecideReelTurns_BiasTag_Reel1(void);
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet1(u8 a0, u8 a1);
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet2or3(u8 a0, u8 a1);
+static bool8 DecideReelTurns_BiasTag_Reel2(void);
+static bool8 DecideReelTurns_BiasTag_Reel2_Bet1or2(void);
+static bool8 DecideReelTurns_BiasTag_Reel2_Bet3(void);
+static bool8 DecideReelTurns_BiasTag_Reel3(void);
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet1or2(u8 a0);
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet3(u8 a0);
+static void DecideReelTurns_NoBiasTag_Reel1(void);
+static void DecideReelTurns_NoBiasTag_Reel2(void);
+static void DecideReelTurns_NoBiasTag_Reel2_Bet1(void);
+static void DecideReelTurns_NoBiasTag_Reel2_Bet2(void);
+static void DecideReelTurns_NoBiasTag_Reel2_Bet3(void);
+static void DecideReelTurns_NoBiasTag_Reel3(void);
+static void DecideReelTurns_NoBiasTag_Reel3_Bet1(void);
+static void DecideReelTurns_NoBiasTag_Reel3_Bet2(void);
+static void DecideReelTurns_NoBiasTag_Reel3_Bet3(void);
+static void sub_8103C14(u8 a0);
+static void sub_8103C48(u8 taskId);
+static void LoadBetTiles(u8 a0);
+static void sub_8103C78(struct Task *task, u8 taskId);
+static void sub_8103CAC(struct Task *task, u8 taskId);
+static void sub_8103CC8(struct Task *task, u8 taskId);
+static void sub_8103D8C(u8 a0);
+static void sub_8103DC8(void);
+static void sub_8103E04(u8 a0);
+static bool8 sub_8103E38(void);
+static bool8 sub_8103E7C(void);
+static bool8 sub_8103EAC(u8 spriteId);
+static void sub_8103EE4(struct Sprite *sprite);
+static void sub_8103F70(void);
+static bool8 sub_8103FA0(void);
+static void sub_8103FE8_(u8 taskId);
+static void GameplayTask_PikaPower(void);
+static void DisplayPikaPower(u8 pikaPower);
+static bool8 sub_81040C8(void);
+static void sub_81040E8(u8 taskId);
+static void nullsub_68(struct Task *task);
+static void sub_810411C(struct Task *task);
+static void sub_8104144(struct Task *task);
+static void sub_81041AC(struct Task *task);
+static void ClearTaskDataFields_2orHigher(struct Task *task);
+static void sub_810423C(u8 pikaPower);
+static void BeginReeltime(void);
+static bool8 IsFinalTask_RunReelTimeActions(void);
+static void RunReeltimeActions(u8 taskId);
+static void ReeltimeAction0(struct Task *task);
+static void ReeltimeAction1(struct Task *task);
+static void ReeltimeAction2(struct Task *task);
+static void ReeltimeAction3(struct Task *task);
+static void ReeltimeAction4(struct Task *task);
+static void ReeltimeAction5(struct Task *task);
+static void ReeltimeAction6(struct Task *task);
+static void ReelTimeAction_LandOnOutcome(struct Task *task);
+static void ReeltimeAction8(struct Task *task);
+static void ReeltimeAction9(struct Task *task);
+static void ReeltimeAction10(struct Task *task);
+static void ReeltimeAction11(struct Task *task);
+static void ReeltimeAction12(struct Task *task);
+static void ReeltimeAction13(struct Task *task);
+static void ReeltimeAction14(struct Task *task);
+static void ReeltimeAction15(struct Task *task);
+static void ReeltimeAction16(struct Task *task);
+static void ReeltimeAction17(struct Task *task);
+static void sub_8104A40(s16 a0, s16 a1);
+static void sub_8104A88(s16 a0);
+static void OpenInfoBox(u8 a0);
+static bool8 IsInfoBoxClosed(void);
+static void RunInfoBoxActions(u8 taskId);
+static void InfoBox_FadeIn(struct Task *task);
+static void InfoBox_WaitForFade(struct Task *task);
+static void InfoBox_8104B80(struct Task *task);
+static void InfoBox_AwaitPlayerInput(struct Task *task);
+static void InfoBox_AddText(struct Task *task);
+static void InfoBox_8104BFC(struct Task *task);
+static void InfoBox_812DE14(struct Task *task);
+static void InfoBox_812DE30(struct Task *task);
+static void InfoBox_FreeTask(struct Task *task);
+static void sub_8104C5C(void);
+static void sub_8104CAC(u8 arg0);
+static bool8 sub_8104E18(void);
+static void nullsub_69(struct Task *task);
+static void sub_8104E74_(u8 taskId);
+static void sub_8104EA8(void);
+static void sub_8104F8C(void);
+static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3);
+static void sub_81050C4(void);
+static void sub_8105100(void);
+static void sub_810514C(void);
+static void sub_81051C0(void);
+static void sub_8105284_(void);
+static void sub_81052EC(void);
+static void sub_81053A0(void);
+static void sub_810545C(void);
+static void sub_81054B8(void);
+static void sub_8105524(void);
+static void sub_8105554(void);
+static void CreateReelTimeSprites1(void);
+static void sub_8105688(s16 a0);
+static void sub_81056C0(void);
+static void CreateReelTimeSprite2(void);
+static void sub_81057E8(s16 a0);
+static void sub_8105804(void);
+static void sub_8105854(void);
+static void sub_81058A0(void);
+static void sub_81058C4(void);
+static void sub_81059B8(void);
+static void sub_81059E8(void);
+static bool8 sub_8105ACC(void);
+static void sub_8105AEC(void);
+static u8 sub_8105B1C(s16 x, s16 y);
+static void sub_8105B88(u8 spriteId);
+static u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4);
+static void sub_81063C0(void);
+static void sub_8106404(void);
+static void sub_8106448(void);
+static void sub_81064B8(void);
+static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
+static void sub_81065DC(void);
+static void sub_812F958(void);
+static void sub_812F968(void);
+static void LoadSlotMachineWheelOverlay(void);
+static u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2);
// Ewram variables
-static EWRAM_DATA u16 *gUnknown_0203AAC8 = NULL;
-static EWRAM_DATA u16 *gUnknown_0203AACC = NULL;
-static EWRAM_DATA u16 *gUnknown_0203AAD0 = NULL;
-static EWRAM_DATA u8 *gUnknown_0203AAD4 = NULL;
-static EWRAM_DATA u8 *gUnknown_0203AAD8 = NULL;
-static EWRAM_DATA u16 *gUnknown_0203AADC = NULL;
-static EWRAM_DATA u8 *gUnknown_0203AAE0 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAE4 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAE8 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAEC = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF0 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF4 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF8 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAFC = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB00 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB04 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB08 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB0C = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB10 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB14 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB18 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB1C = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB20 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB24 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB28 = NULL;
-static EWRAM_DATA struct SpriteSheet *gUnknown_0203AB2C = NULL;
-static EWRAM_DATA struct SpriteSheet *gUnknown_0203AB30 = NULL;
+static EWRAM_DATA u16 *sUnknown_0203AAC8 = NULL;
+static EWRAM_DATA u16 *sSelectedPikaPowerTile = NULL;
+static EWRAM_DATA u16 *sUnknown_0203AAD0 = NULL;
+static EWRAM_DATA u8 *sUnknown_0203AAD4 = NULL;
+static EWRAM_DATA u8 *sUnknown_0203AAD8 = NULL;
+static EWRAM_DATA u16 *sUnknown_0203AADC = NULL;
+static EWRAM_DATA u8 *sUnknown_0203AAE0 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAE4 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAE8 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAEC = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF0 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF4 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF8 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAFC = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB00 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB04 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB08 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB0C = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB10 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB14 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB18 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB1C = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB20 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB24 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB28 = NULL;
+static EWRAM_DATA struct SpriteSheet *sUnknown_0203AB2C = NULL;
+static EWRAM_DATA struct SpriteSheet *sUnknown_0203AB30 = NULL;
static EWRAM_DATA struct SlotMachineEwramStruct *sSlotMachine = NULL;
// IWRAM bss
@@ -355,10 +355,10 @@ static IWRAM_DATA struct SpriteFrameImage *gUnknown_03001188[26];
// Const rom data.
extern const struct UnkStruct1 *const gUnknown_083ED048[];
extern const u16 gPalette_83EDE24[];
-extern const u8 gUnknown_083ECD04[][3];
-extern const u8 gUnknown_083ECE3A[];
-extern const u16 gUnknown_083ECE42[];
-extern const u16 gUnknown_083ECE48[];
+extern const u8 gLuckyRoundProbabilities[][3];
+extern const u8 gBiasTags[];
+extern const u16 gLuckyFlagSettings_Top3[];
+extern const u16 gLuckyFlagSettings_NotTop3[];
extern const s16 gUnknown_083ECE7E[][2];
extern const SpriteCallback gUnknown_083ECF0C[];
extern const struct SpriteTemplate *const gUnknown_083EDB5C[];
@@ -369,36 +369,36 @@ extern const struct SpriteTemplate gSpriteTemplate_83ED54C;
extern const struct SpriteTemplate gSpriteTemplate_83ED534;
extern const u8 gUnknown_083ECC58[2];
extern const struct SpriteTemplate gSpriteTemplate_83ED51C;
-extern const u16 gUnknown_083ECE12[];
+extern const u16 gProbabilityTable_SkipToReeltimeAction14[];
extern const u16 *const gUnknown_083EDE10[];
-extern const u16 gUnknown_083ECE1C[][2];
-extern const u16 gUnknown_083ECE30[];
-extern const u16 sSlotMatchFlags[];
-extern const u16 sSlotPayouts[];
+extern const u16 gReelIncrementTable[][2];
+extern const u16 gReelTimeBonusIncrementTable[];
+extern const u16 gSlotMatchFlags[];
+extern const u16 gSlotPayouts[];
extern const u8 *const gUnknown_083EDCE4;
extern const u8 *const gUnknown_083EDCDC;
-extern const u32 sReelTimeGfx[];
-extern const struct SpriteSheet sSlotMachineSpriteSheets[];
+extern const u32 gReelTimeGfx[];
+extern const struct SpriteSheet gSlotMachineSpriteSheets[];
extern const struct SpritePalette gSlotMachineSpritePalettes[];
extern const u16 *const gUnknown_083EDE20;
-extern const s16 gUnknown_083ECCF8[][2];
+extern const s16 gInitialReelPositions[][2];
extern const struct BgTemplate gUnknown_085A7424[4];
extern const struct WindowTemplate gUnknown_085A7434[];
-extern const u8 gUnknown_083ECD16[][6];
-extern const u8 gUnknown_083ECD28[][6];
-extern const u8 gUnknown_083ECD46[][17];
-extern const u8 gUnknown_083ECDAC[][17];
-extern const u8 sSym2Match[];
-extern const u8 gUnknown_083ECCF1[];
-extern const u8 sReelSymbols[][21];
+extern const u8 gLuckyFlagProbabilities_Top3[][6];
+extern const u8 gLuckyFlagProbabilities_NotTop3[][6];
+extern const u8 gReeltimeProbabilities_UnluckyGame[][17];
+extern const u8 gReelTimeProbabilities_LuckyGame[][17];
+extern const u8 gSym2Match[];
+extern const u8 gReelTimeTags[];
+extern const u8 gReelSymbols[][REEL_NUM_TAGS];
extern const u16 *const gUnknown_083EDD08[];
extern const u16 *const gUnknown_083EDD1C[];
extern const u8 gUnknown_083EDD30[];
-extern const u8 gUnknown_083EDD35[][2];
-extern const u8 gUnknown_083EDD3B[];
+extern const u8 gBettingTilesId[][2];
+extern const u8 gNumberBettingTiles[];
extern const u16 *const gUnknown_083EDDA0[];
extern const u16 *const gUnknown_083EDDAC;
-extern const u16 sReelTimeWindowTilemap[];
+extern const u16 gReelTimeWindowTilemap[];
extern const u16 gUnknown_085A9898[];
extern void (*const gUnknown_083ED064[])(void);
@@ -453,106 +453,108 @@ const struct WindowTemplate gUnknown_085A7444 =
0, 1, 3, 20, 13, 13, 1
};
-const u8 gUnknown_085A744C[] = {3, 1, 2, 0};
-
-bool8 (*const gUnknown_083ECAAC[])(struct Task *task) =
-{
- sub_8101D5C,
- sub_8101D8C,
- sub_8101DB0,
- sub_8101DF4,
- sub_8101E10,
- sub_8101E3C,
- sub_8101F44,
- sub_8101F60,
- sub_8101F88,
- sub_8101FA4,
- sub_8102008,
- sub_8102034,
- sub_8102058,
- sub_8102090,
- sub_81020C8,
- sub_81021E0,
- sub_81021FC,
- sub_8102264,
- sub_81022A0,
- sub_81022CC,
- sub_81022F0,
- sub_8102318,
- sub_8102344,
- sub_810239C,
- sub_81023B8,
- sub_81023E0_,
- sub_81023FC,
- sub_8102424,
- sub_8102460,
+const u8 gColors_ReeltimeHelp[] = {3, 1, 2, 0};
+
+bool8 (*const SlotActions[])(struct Task *task) =
+{
+ SlotAction_UnfadeScreen, // 0
+ SlotAction_WaitForUnfade, // 1
+ SlotAction_SetSlotMachineVars, // 2
+ SlotAction3, // 3
+ SlotAction4, // 4
+ SlotAction_AwaitPlayerInput, // 5
+ SlotAction_PrintYouDontHaveThreeCoins, // 6
+ SlotAction_ExitYouDontHaveThreeCoinsMessage, // 7
+ SlotAction_GivingInformation, // 8
+ SlotAction9, // 9
+ SlotAction10, // 10
+ SlotAction_SetLuckySpins, // 11
+ SlotAction_AwaitReelStop, // 12
+ SlotAction_WaitForAllReelsToStop, // 13
+ SlotAction_CheckMatches, // 14
+ SlotAction_WaitForPayoutToBeAwarded, // 15
+ SlotAction_EndOfRoll, // 16
+ SlotAction_MatchedPower, // 17
+ SlotAction18, // 18
+ SlotAction_Loop, // 19
+ SlotAction_NoMatches, // 20
+ SlotAction_PrintQuitTheGame, // 21
+ SlotAction_SeeIfPlayerQuits, // 22
+ SlotAction_PrintMessage_9999Coins, // 23
+ SlotAction_ExitMessage_9999Coins, // 24
+ SlotAction_PrintMessage_NoMoreCoins, // 25
+ SlotAction_ExitMessage_NoMoreCoins, // 26
+ SlotAction_EndGame, // 27
+ SlotAction_FreeDataStructures, // 28
};
-bool8 (*const gUnknown_083ECB20[])(struct Task *task) =
+bool8 (*const AwardPayoutActions[])(struct Task *task) =
{
- sub_8102A9C,
- sub_8102AD0,
- sub_8102B80
+ AwardPayoutAction0,
+ AwardPayoutAction_GivePayoutToPlayer,
+ AwardPayoutAction_FreeTask
};
-bool8 (*const gUnknown_083ECB2C[])(struct Task *task) =
+bool8 (*const SlotReelActions[])(struct Task *task) =
{
- sub_8102EA0,
- sub_8102EA4,
- sub_8102EC0,
- sub_8102F4C,
- sub_8103008
+ SlotReelAction_StayStill,
+ SlotReelAction_Spin,
+ SlotReelAction_DecideWhereToStop,
+ SlotReelAction_MoveToStop,
+ SlotReelAction_OscillatingStop
};
-bool8 (*const gUnknown_083ECB40[])(void) =
+// returns True if a match with the biasTag is possible in that reel
+// also modifies data in sSlotMachine reel arrays to indicate how to get to the matching state
+bool8 (*const DecideReelTurns_BiasTag[])(void) =
{
- sub_810305C,
- sub_81032C0,
- sub_81033DC
+ DecideReelTurns_BiasTag_Reel1,
+ DecideReelTurns_BiasTag_Reel2,
+ DecideReelTurns_BiasTag_Reel3
};
-void (*const gUnknown_083ECB4C[])(void) =
+void (*const DecideReelTurns_NoBiasTag[])(void) =
{
- sub_81034F4,
- sub_8103540,
- sub_810380C
+ DecideReelTurns_NoBiasTag_Reel1,
+ DecideReelTurns_NoBiasTag_Reel2,
+ DecideReelTurns_NoBiasTag_Reel3
};
-const u16 gUnknown_085A74FC[] = {2, 4, 4, 4, 8};
+const u16 ReelStopShocks[] = {2, 4, 4, 4, 8};
-bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) =
+bool8 (*const DecideReelTurns_BiasTag_Reel1_Bets[])(u8 tag1, u8 tag2) =
{
- sub_8103154,
- sub_81031B4,
- sub_81031B4
+ DecideReelTurns_BiasTag_Reel1_Bet1,
+ DecideReelTurns_BiasTag_Reel1_Bet2or3,
+ DecideReelTurns_BiasTag_Reel1_Bet2or3
};
-bool8 (*const gUnknown_083ECB70[])(void) =
+bool8 (*const DecideReelTurns_BiasTag_Reel2_Bets[])(void) =
{
- sub_81032E8,
- sub_81032E8,
- sub_810333C
+ DecideReelTurns_BiasTag_Reel2_Bet1or2,
+ DecideReelTurns_BiasTag_Reel2_Bet1or2,
+ DecideReelTurns_BiasTag_Reel2_Bet3
};
-bool8 (*const gUnknown_083ECB7C[])(u8 a0) =
+bool8 (*const DecideReelTurns_BiasTag_Reel3_Bets[])(u8 biasTag) =
{
- sub_810341C,
- sub_810341C,
- sub_810347C
+ DecideReelTurns_BiasTag_Reel3_Bet1or2,
+ DecideReelTurns_BiasTag_Reel3_Bet1or2,
+ DecideReelTurns_BiasTag_Reel3_Bet3
};
-void (*const gUnknown_083ECB88[])(void) =
+void (*const DecideReelTurns_NoBiasTag_Reel2_Bets[])(void) =
{
- sub_8103564,
- j5_08111E84,
- sub_8103668
+ DecideReelTurns_NoBiasTag_Reel2_Bet1,
+ DecideReelTurns_NoBiasTag_Reel2_Bet2,
+ DecideReelTurns_NoBiasTag_Reel2_Bet3
};
-void (*const gUnknown_083ECB94[])(void) =
+void (*const DecideReelTurns_NoBiasTag_Reel3_Bets[])(void) =
{
- sub_8103830,
- sub_8103910,
- sub_8103A78
+ DecideReelTurns_NoBiasTag_Reel3_Bet1,
+ DecideReelTurns_NoBiasTag_Reel3_Bet2,
+ DecideReelTurns_NoBiasTag_Reel3_Bet3
};
void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) =
@@ -572,57 +574,57 @@ void (*const gUnknown_083ECBB4[])(struct Task *task) =
sub_81041AC
};
-const u16 gUnknown_083ECBC4[][2] =
+const u16 pikaPowerTileTable[][2] =
{
{0x9e, 0x6e},
{0x9f, 0x6f},
{0xaf, 0x7f},
};
-void (*const gUnknown_083ECBD0[])(struct Task *task) =
-{
- sub_810437C,
- sub_81043EC,
- sub_8104468,
- sub_8104498,
- sub_8104548,
- sub_8104598,
- sub_81045CC,
- sub_810463C,
- sub_81046C0,
- sub_8104764,
- sub_8104794,
- sub_81047EC,
- sub_8104860,
- sub_81048A8,
- sub_81048CC,
- sub_8104940,
- sub_81049C8,
- sub_8104794,
- sub_81049F8
+void (*const ReeltimeActions[])(struct Task *task) =
+{
+ ReeltimeAction0,
+ ReeltimeAction1,
+ ReeltimeAction2,
+ ReeltimeAction3,
+ ReeltimeAction4,
+ ReeltimeAction5,
+ ReeltimeAction6,
+ ReelTimeAction_LandOnOutcome,
+ ReeltimeAction8,
+ ReeltimeAction9,
+ ReeltimeAction10,
+ ReeltimeAction11,
+ ReeltimeAction12,
+ ReeltimeAction13,
+ ReeltimeAction14,
+ ReeltimeAction15,
+ ReeltimeAction16,
+ ReeltimeAction10,
+ ReeltimeAction17
};
const u8 gUnknown_085A75C0[] = {1, 1, 2, 2};
const s16 gUnknown_085A75C4[] = {0x40, 0x30, 0x18, 0x08};
const s16 gUnknown_085A75CC[] = {10, 8, 6, 4};
-void (*const gUnknown_083ECC30[])(struct Task *task) =
-{
- sub_8104B3C,
- sub_8104B60,
- sub_8104B80,
- sub_8104B60,
- sub_812DD78,
- sub_8104B60,
- sub_8104BC8,
- sub_8104B60,
- sub_812DE14,
- sub_8104B60,
- sub_812DE30,
- sub_8104B60,
- sub_8104BFC,
- sub_8104B60,
- sub_8104C44,
+void (*const InfoBoxActions[])(struct Task *task) =
+{
+ InfoBox_FadeIn,
+ InfoBox_WaitForFade,
+ InfoBox_8104B80,
+ InfoBox_WaitForFade,
+ InfoBox_AddText,
+ InfoBox_WaitForFade,
+ InfoBox_AwaitPlayerInput,
+ InfoBox_WaitForFade,
+ InfoBox_812DE14,
+ InfoBox_WaitForFade,
+ InfoBox_812DE30,
+ InfoBox_WaitForFade,
+ InfoBox_8104BFC,
+ InfoBox_WaitForFade,
+ InfoBox_FreeTask,
};
void (*const gUnknown_083ECC54[])(struct Task *task) =
@@ -651,7 +653,7 @@ extern const struct SpriteTemplate gSpriteTemplate_83ED45C;
// code
#define tState data[0]
-/*static */void Task_FadeToSlotMachine(u8 taskId)
+static void Task_FadeToSlotMachine(u8 taskId)
{
switch (gTasks[taskId].tState)
{
@@ -669,19 +671,19 @@ extern const struct SpriteTemplate gSpriteTemplate_83ED45C;
}
}
-void PlaySlotMachine(u8 arg0, MainCallback cb)
+void PlaySlotMachine(u8 slotMachineIndex, MainCallback cb)
{
u8 taskId;
sSlotMachine = AllocZeroed(sizeof(*sSlotMachine));
- PlaySlotMachine_Internal(arg0, cb);
+ PlaySlotMachine_Internal(slotMachineIndex, cb);
taskId = CreateTask(Task_FadeToSlotMachine, 0);
gTasks[taskId].tState = 0;
}
#undef tState
-/*static */void CB2_SlotMachineSetup(void)
+static void CB2_SlotMachineSetup(void)
{
switch (gMain.state)
{
@@ -733,7 +735,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
break;
case 10:
SlotMachineSetup_10_0();
- SlotMachineSetup_10_1();
+ SlotMachineSetupGameplayTasks();
gMain.state++;
break;
case 11:
@@ -742,7 +744,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
}
}
-/*static */void CB2_SlotMachineLoop(void)
+static void CB2_SlotMachineLoop(void)
{
RunTasks();
AnimateSprites();
@@ -750,7 +752,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
UpdatePaletteFade();
}
-/*static */void SlotMachine_VBlankCallback(void)
+static void SlotMachine_VBlankCallback(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -761,25 +763,26 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
SetGpuReg(REG_OFFSET_WINOUT, sSlotMachine->winOut);
}
-/*static */void PlaySlotMachine_Internal(u8 arg0, MainCallback cb)
+static void PlaySlotMachine_Internal(u8 slotMachineIndex, MainCallback cb)
{
- struct Task *task = gTasks + CreateTask(SlotMachineDummyTask, 0xFF);
- task->data[0] = arg0;
+ struct Task *task = &gTasks[CreateTask(SlotMachineDummyTask, 0xFF)];
+ task->data[0] = slotMachineIndex;
StoreWordInTwoHalfwords(task->data + 1, (intptr_t)cb);
}
-/*static */void sub_81019EC(void)
+
+static void sub_81019EC(void)
{
- struct Task *task = gTasks + FindTaskIdByFunc(SlotMachineDummyTask);
- sSlotMachine->unk01 = task->data[0];
+ struct Task *task = &gTasks[FindTaskIdByFunc(SlotMachineDummyTask)];
+ sSlotMachine->machineId = task->data[0];
LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&sSlotMachine->prevMainCb);
}
-/*static */void SlotMachineDummyTask(u8 taskId)
+static void SlotMachineDummyTask(u8 taskId)
{
}
-/*static */void SlotMachineSetup_0_0(void)
+static void SlotMachineSetup_0_0(void)
{
SetVBlankCallback(NULL);
SetHBlankCallback(NULL);
@@ -790,24 +793,24 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
DeactivateAllTextPrinters();
}
-/*static */void SlotMachineSetup_6_0(void)
+static void SlotMachineSetup_6_0(void)
{
SetVBlankCallback(SlotMachine_VBlankCallback);
EnableInterrupts(INTR_FLAG_VBLANK);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON);
}
-/*static */void SlotMachineSetup_1_0(void)
+static void SlotMachineSetup_1_0(void)
{
DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000);
}
-/*static */void SlotMachineSetup_2_0(void)
+static void SlotMachineSetup_2_0(void)
{
DmaClear16(3, (u16 *)OAM, OAM_SIZE);
}
-/*static */void SlotMachineSetup_2_1(void)
+static void SlotMachineSetup_2_1(void)
{
SetGpuReg(REG_OFFSET_BG0CNT, 0);
SetGpuReg(REG_OFFSET_BG1CNT, 0);
@@ -827,40 +830,42 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(9, 8));
}
-/*static */void SlotMachineSetup_0_1(void)
+// set up initial state of slot machine
+static void SlotMachineSetup_0_1(void)
{
u8 i;
- sub_81019EC();
+ sub_81019EC(); // assigns sSlotMachine->machineId, etc.
sSlotMachine->state = 0;
sSlotMachine->pikaPower = 0;
- sSlotMachine->unk03 = Random() & 1;
- sSlotMachine->unk04 = 0;
+ sSlotMachine->luckyGame = Random() & 1;
+ sSlotMachine->luckyFlags = 0;
sSlotMachine->matchedSymbols = 0;
- sSlotMachine->unk0A = 0;
- sSlotMachine->unk0B = 0;
+ sSlotMachine->fairRollsLeft = 0;
+ sSlotMachine->fairRollsUsed = 0;
sSlotMachine->coins = GetCoins();
sSlotMachine->payout = 0;
- sSlotMachine->unk10 = 0;
+ sSlotMachine->netCoinLoss = 0;
sSlotMachine->bet = 0;
- sSlotMachine->unk18 = 0;
- sSlotMachine->unk1A = 8;
+ sSlotMachine->currReel = 0;
+ sSlotMachine->reelIncrement = 8;
sSlotMachine->win0h = 0xf0;
sSlotMachine->win0v = 0xa0;
sSlotMachine->winIn = 0x3f;
sSlotMachine->winOut = 0x3f;
sSlotMachine->backupMapMusic = GetCurrentMapMusic();
- for (i = 0; i < 3; i++)
+
+ for (i = 0; i < NUM_REELS; i++)
{
- sSlotMachine->unk22[i] = 0;
- sSlotMachine->reelPositions[i] = gUnknown_083ECCF8[i][sSlotMachine->unk03] % 21;
- sSlotMachine->unk1C[i] = 0x1f8 - sSlotMachine->reelPositions[i] * 24;
- sSlotMachine->unk1C[i] %= 0x1f8;
+ sSlotMachine->reelPixelOffsetsWhileStopping[i] = 0;
+ sSlotMachine->reelTagOffsets[i] = gInitialReelPositions[i][sSlotMachine->luckyGame] % REEL_NUM_TAGS;
+ sSlotMachine->reelPixelOffsets[i] = REEL_NUM_TAGS * REEL_TAG_HEIGHT - sSlotMachine->reelTagOffsets[i] * REEL_TAG_HEIGHT;
+ sSlotMachine->reelPixelOffsets[i] %= REEL_NUM_TAGS * REEL_TAG_HEIGHT;
}
- sub_80EDE70(GetCoins());
+ AlertTVThatPlayerPlayedSlotMachine(GetCoins());
}
-/*static */void SlotMachineSetup_3_0(void)
+static void SlotMachineSetup_3_0(void)
{
ResetPaletteFade();
ResetSpriteData();
@@ -869,22 +874,23 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
ResetTasks();
}
-/*static */void SlotMachineSetup_4_0(void)
+static void SlotMachineSetup_4_0(void)
{
- gUnknown_0203AACC = Alloc(8);
- gUnknown_0203AAD0 = AllocZeroed(0xE);
- gUnknown_0203AADC = AllocZeroed(8);
+ sSelectedPikaPowerTile = Alloc(8);
+ sUnknown_0203AAD0 = AllocZeroed(0xE);
+ sUnknown_0203AADC = AllocZeroed(8);
- gUnknown_0203AAD0[0] = 0x2051;
- gUnknown_0203AAD0[1] = 0x2851;
- gUnknown_0203AAD0[2] = 0x2061;
- gUnknown_0203AAD0[3] = 0x2861;
- gUnknown_0203AAD0[4] = 0x20BE;
- gUnknown_0203AAD0[5] = 0x28BE;
- gUnknown_0203AAD0[6] = 0x20BF;
+ // several of these are 1 bit off from each other
+ sUnknown_0203AAD0[0] = 0x2051;
+ sUnknown_0203AAD0[1] = 0x2851;
+ sUnknown_0203AAD0[2] = 0x2061;
+ sUnknown_0203AAD0[3] = 0x2861;
+ sUnknown_0203AAD0[4] = 0x20BE;
+ sUnknown_0203AAD0[5] = 0x28BE;
+ sUnknown_0203AAD0[6] = 0x20BF;
}
-/*static */void SlotMachineSetup_5_0(void)
+static void SlotMachineSetup_5_0(void)
{
sub_8106448();
sub_81064B8();
@@ -894,7 +900,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
PutWindowTilemap(0);
}
-/*static */void SlotMachineSetup_10_0(void)
+static void SlotMachineSetup_10_0(void)
{
sub_8104EA8();
sub_8104F8C();
@@ -902,26 +908,28 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
sub_81050C4();
}
-/*static */void SlotMachineSetup_10_1(void)
+// create gameplay tasks
+static void SlotMachineSetupGameplayTasks(void)
{
- sub_8104048();
- sub_8102DA8();
+ GameplayTask_PikaPower();
+ GameplayTask_StopSlotReel();
sub_8104C5C();
- sub_8101D04();
+ GameplayTasks_Slots();
}
-/*static */void sub_8101D04(void)
+static void GameplayTasks_Slots(void)
{
- sub_8101D24(CreateTask(sub_8101D24, 0));
+ RunSlotActions(CreateTask(RunSlotActions, 0));
}
-/*static */void sub_8101D24(u8 taskId)
+// task->data[0] is a timer
+static void RunSlotActions(u8 taskId)
{
- while (gUnknown_083ECAAC[sSlotMachine->state](gTasks + taskId))
+ while (SlotActions[sSlotMachine->state](&gTasks[taskId]))
;
}
-/*static */bool8 sub_8101D5C(struct Task *task)
+static bool8 SlotAction_UnfadeScreen(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
sub_810423C(sSlotMachine->pikaPower);
@@ -929,25 +937,25 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8101D8C(struct Task *task)
+static bool8 SlotAction_WaitForUnfade(struct Task *task)
{
if (!gPaletteFade.active)
sSlotMachine->state++;
return FALSE;
}
-/*static */bool8 sub_8101DB0(struct Task *task)
+static bool8 SlotAction_SetSlotMachineVars(struct Task *task)
{
sSlotMachine->payout = 0;
sSlotMachine->bet = 0;
- sSlotMachine->unk18 = 0;
- sSlotMachine->unk04 &= 0xc0;
+ sSlotMachine->currReel = 0;
+ sSlotMachine->luckyFlags &= (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777);
sSlotMachine->state = 4;
if (sSlotMachine->coins <= 0)
{
sSlotMachine->state = 25;
}
- else if (sSlotMachine->unk0A)
+ else if (sSlotMachine->fairRollsLeft)
{
sSlotMachine->state = 3;
sub_8104CAC(4);
@@ -955,14 +963,14 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return TRUE;
}
-/*static */bool8 sub_8101DF4(struct Task *task)
+static bool8 SlotAction3(struct Task *task)
{
if (sub_8104E18())
sSlotMachine->state = 4;
return FALSE;
}
-/*static */bool8 sub_8101E10(struct Task *task)
+static bool8 SlotAction4(struct Task *task)
{
sub_8104CAC(0);
sSlotMachine->state = 5;
@@ -971,27 +979,27 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return TRUE;
}
-/*static */bool8 sub_8101E3C(struct Task *task)
+static bool8 SlotAction_AwaitPlayerInput(struct Task *task)
{
s16 i;
if (gMain.newKeys & SELECT_BUTTON)
{
- sub_8104AB8(0);
+ OpenInfoBox(0);
sSlotMachine->state = 8;
}
- else if (gMain.newKeys & R_BUTTON)
+ else if (gMain.newKeys & R_BUTTON) // bet the max amount
{
if (sSlotMachine->coins - (3 - sSlotMachine->bet) >= 0)
{
for (i = sSlotMachine->bet; i < 3; i++)
- sub_8103D50(i);
+ LoadBetTiles(i);
sSlotMachine->coins -= (3 - sSlotMachine->bet);
sSlotMachine->bet = 3;
sSlotMachine->state = 9;
PlaySE(SE_REGI);
}
- else
+ else // you didn't have enough coins to bet the max
{
sSlotMachine->state = 6;
}
@@ -1001,56 +1009,63 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
if (gMain.newKeys & DPAD_DOWN && sSlotMachine->coins != 0)
{
PlaySE(SE_REGI);
- sub_8103D50(sSlotMachine->bet);
+ LoadBetTiles(sSlotMachine->bet);
sSlotMachine->coins--;
sSlotMachine->bet++;
}
+ // player maxed out or finished betting
if (sSlotMachine->bet >= 3 || (sSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON))
sSlotMachine->state = 9;
+ // player wants to quit
if (gMain.newKeys & B_BUTTON)
sSlotMachine->state = 21;
}
return FALSE;
}
-/*static */bool8 sub_8101F44(struct Task *task)
+static bool8 SlotAction_PrintYouDontHaveThreeCoins(struct Task *task)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouDontHaveThreeCoins, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
sSlotMachine->state = 7;
return FALSE;
}
-/*static */bool8 sub_8101F60(struct Task *task)
+static bool8 SlotAction_ExitYouDontHaveThreeCoinsMessage(struct Task *task)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
sSlotMachine->state = 5;
}
return FALSE;
}
-/*static */bool8 sub_8101F88(struct Task *task)
+static bool8 SlotAction_GivingInformation(struct Task *task)
{
- if (sub_8104AEC())
+ if (IsInfoBoxClosed())
sSlotMachine->state = 5;
return FALSE;
}
-/*static */bool8 sub_8101FA4(struct Task *task)
+// probably make all the slots roll
+static bool8 SlotAction9(struct Task *task)
{
- sub_8102484();
+ DrawLuckyFlags();
sub_8104DA4();
- sub_8102DEC(0);
- sub_8102DEC(1);
- sub_8102DEC(2);
- sub_80EEC80();
+
+ // for each reel...
+ ReelTasks_SetUnkTaskData(0);
+ ReelTasks_SetUnkTaskData(1);
+ ReelTasks_SetUnkTaskData(2);
+
+ sub_80EEC80(); // something with daily slot variable
+
task->data[0] = 0;
- if (sSlotMachine->unk04 & 0x20)
+ if (sSlotMachine->luckyFlags & LUCKY_BIAS_REELTIME)
{
- sub_810430C();
+ BeginReeltime();
sSlotMachine->state = 10;
}
else
@@ -1058,52 +1073,52 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
sub_8104CAC(1);
sSlotMachine->state = 11;
}
- sSlotMachine->unk1A = 8;
- if (sSlotMachine->unk0A)
- sSlotMachine->unk1A = dp15_jump_random_unknown();
+ sSlotMachine->reelIncrement = 8;
+ if (sSlotMachine->fairRollsLeft)
+ sSlotMachine->reelIncrement = SlowReelSpeed();
return FALSE;
}
-/*static */bool8 sub_8102008(struct Task *task)
+static bool8 SlotAction10(struct Task *task)
{
- if (sub_810432C())
+ if (IsFinalTask_RunReelTimeActions())
{
sub_8104CAC(1);
- sSlotMachine->unk04 &= 0xDF;
+ sSlotMachine->luckyFlags &= ~LUCKY_BIAS_REELTIME;
sSlotMachine->state = 11;
}
return FALSE;
}
-/*static */bool8 sub_8102034(struct Task *task)
+static bool8 SlotAction_SetLuckySpins(struct Task *task)
{
if (++task->data[0] >= 30)
{
- sub_81024F0();
+ SetLuckySpins();
sSlotMachine->state = 12;
}
return FALSE;
}
-/*static */bool8 sub_8102058(struct Task *task)
+static bool8 SlotAction_AwaitReelStop(struct Task *task)
{
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_JYUNI);
- sub_8102E1C(sSlotMachine->unk18);
- sub_8103C14(sSlotMachine->unk18);
+ sub_8102E1C(sSlotMachine->currReel);
+ sub_8103C14(sSlotMachine->currReel);
sSlotMachine->state = 13;
}
return FALSE;
}
-/*static */bool8 sub_8102090(struct Task *task)
+static bool8 SlotAction_WaitForAllReelsToStop(struct Task *task)
{
- if (!sub_8102E40(sSlotMachine->unk18))
+ if (!IsSlotReelMoving(sSlotMachine->currReel))
{
- sSlotMachine->unk18++;
+ sSlotMachine->currReel++;
sSlotMachine->state = 12;
- if (sSlotMachine->unk18 > 2)
+ if (sSlotMachine->currReel > 2)
{
sSlotMachine->state = 14;
}
@@ -1112,24 +1127,25 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81020C8(struct Task *task)
+// once all reels have stopped
+static bool8 SlotAction_CheckMatches(struct Task *task)
{
- sSlotMachine->unk04 &= 0xc0;
+ sSlotMachine->luckyFlags &= (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777);
CheckMatch();
- if (sSlotMachine->unk0A)
+ if (sSlotMachine->fairRollsLeft)
{
- sSlotMachine->unk0A--;
- sSlotMachine->unk0B++;
+ sSlotMachine->fairRollsLeft--;
+ sSlotMachine->fairRollsUsed++;
}
if (sSlotMachine->matchedSymbols)
{
sSlotMachine->state = 15;
- sub_8102A24();
+ AwardPayout();
sub_8103F70();
- if ((sSlotMachine->unk10 -= sSlotMachine->payout) < 0)
+ if ((sSlotMachine->netCoinLoss -= sSlotMachine->payout) < 0)
{
- sSlotMachine->unk10 = 0;
+ sSlotMachine->netCoinLoss = 0;
}
if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
@@ -1146,42 +1162,44 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
PlayFanfare(MUS_ME_B_SMALL);
sub_8104CAC(2);
}
+ // if you matched 777...
if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
- sSlotMachine->unk04 &= 0x3f;
+ sSlotMachine->luckyFlags &= ~(LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777);
if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
- sSlotMachine->unk0A = 0;
- sSlotMachine->unk0B = 0;
- sSlotMachine->unk03 = 0;
+ sSlotMachine->fairRollsLeft = 0;
+ sSlotMachine->fairRollsUsed = 0;
+ sSlotMachine->luckyGame = FALSE;
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE))
- sSlotMachine->unk03 = 1;
+ // this may be an error, but if you get blue 777, the game becomes lucky
+ sSlotMachine->luckyGame = TRUE;
}
}
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && sSlotMachine->pikaPower < 16)
{
sSlotMachine->pikaPower++;
- sub_8104064(sSlotMachine->pikaPower);
+ DisplayPikaPower(sSlotMachine->pikaPower);
}
}
else
{
sub_8104CAC(3);
sSlotMachine->state = 20;
- if ((sSlotMachine->unk10 += sSlotMachine->bet) > 9999)
- sSlotMachine->unk10 = 9999;
+ if ((sSlotMachine->netCoinLoss += sSlotMachine->bet) > 9999)
+ sSlotMachine->netCoinLoss = 9999;
}
return FALSE;
}
-/*static */bool8 sub_81021E0(struct Task *task)
+static bool8 SlotAction_WaitForPayoutToBeAwarded(struct Task *task)
{
- if (sub_8102A44())
+ if (IsFinalTask_RunAwardPayoutActions())
sSlotMachine->state = 16;
return FALSE;
}
-/*static */bool8 sub_81021FC(struct Task *task)
+static bool8 SlotAction_EndOfRoll(struct Task *task)
{
if (sub_8103FA0())
{
@@ -1190,12 +1208,12 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
IncrementGameStat(GAME_STAT_SLOT_JACKPOTS);
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
- sSlotMachine->unk18 = 0;
+ sSlotMachine->currReel = 0;
sSlotMachine->state = 9;
}
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER))
sSlotMachine->state = 17;
- if (sSlotMachine->unk0A && sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ if (sSlotMachine->fairRollsLeft && sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
sub_8104CAC(4);
sSlotMachine->state = 18;
@@ -1204,7 +1222,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102264(struct Task *task)
+static bool8 SlotAction_MatchedPower(struct Task *task)
{
if (!sub_81040C8())
{
@@ -1212,7 +1230,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
sSlotMachine->state = 9;
- if (sSlotMachine->unk0A)
+ if (sSlotMachine->fairRollsLeft)
{
sub_8104CAC(4);
sSlotMachine->state = 18;
@@ -1222,7 +1240,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81022A0(struct Task *task)
+static bool8 SlotAction18(struct Task *task)
{
if (sub_8104E18())
{
@@ -1235,7 +1253,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81022CC(struct Task *task)
+static bool8 SlotAction_Loop(struct Task *task)
{
sub_8103D8C(0);
sub_8103D8C(1);
@@ -1244,7 +1262,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81022F0(struct Task *task)
+static bool8 SlotAction_NoMatches(struct Task *task)
{
if (++task->data[1] > 64)
{
@@ -1254,9 +1272,9 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102318(struct Task *task)
+static bool8 SlotAction_PrintQuitTheGame(struct Task *task)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_QuitTheGame, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
CreateYesNoMenuParameterized(0x15, 7, 0x214, 0x180, 0xE, 0xF);
@@ -1264,272 +1282,277 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102344(struct Task *task)
+static bool8 SlotAction_SeeIfPlayerQuits(struct Task *task)
{
s8 input = Menu_ProcessInputNoWrapClearOnChoose();
- if (input == 0)
+ if (input == 0) // player chooses to quit
{
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
sub_8103D8C(0);
sub_8103D8C(1);
sub_8103D8C(2);
sSlotMachine->coins += sSlotMachine->bet;
sSlotMachine->state = 27;
}
- else if (input == 1 || input == -1)
+ else if (input == 1 || input == -1) // player chooses not to quit
{
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
sSlotMachine->state = 5;
}
return FALSE;
}
-/*static */bool8 sub_810239C(struct Task *task)
+static bool8 SlotAction_PrintMessage_9999Coins(struct Task *task)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouveGot9999Coins, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
sSlotMachine->state = 24;
return FALSE;
}
-/*static */bool8 sub_81023B8(struct Task *task)
+static bool8 SlotAction_ExitMessage_9999Coins(struct Task *task)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
sSlotMachine->state = 5;
}
return FALSE;
}
-/*static */bool8 sub_81023E0_(struct Task *task)
+static bool8 SlotAction_PrintMessage_NoMoreCoins(struct Task *task)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouveRunOutOfCoins, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
sSlotMachine->state = 26;
return FALSE;
}
-/*static */bool8 sub_81023FC(struct Task *task)
+static bool8 SlotAction_ExitMessage_NoMoreCoins(struct Task *task)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
sSlotMachine->state = 27;
}
return FALSE;
}
-/*static */bool8 sub_8102424(struct Task *task)
+static bool8 SlotAction_EndGame(struct Task *task)
{
SetCoins(sSlotMachine->coins);
- sub_80EDD78(GetCoins());
+ AlertTVOfNewCoinTotal(GetCoins());
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
sSlotMachine->state++;
return FALSE;
}
-/*static */bool8 sub_8102460(struct Task *task)
+static bool8 SlotAction_FreeDataStructures(struct Task *task)
{
if (!gPaletteFade.active)
{
SetMainCallback2(sSlotMachine->prevMainCb);
- FREE_AND_SET_NULL(gUnknown_0203AAF4);
- FREE_AND_SET_NULL(gUnknown_0203AAF8);
- FREE_AND_SET_NULL(gUnknown_0203AAFC);
- FREE_AND_SET_NULL(gUnknown_0203AB00);
- FREE_AND_SET_NULL(gUnknown_0203AB04);
- FREE_AND_SET_NULL(gUnknown_0203AB08);
- FREE_AND_SET_NULL(gUnknown_0203AB0C);
- FREE_AND_SET_NULL(gUnknown_0203AB10);
- FREE_AND_SET_NULL(gUnknown_0203AB14);
- FREE_AND_SET_NULL(gUnknown_0203AB18);
- FREE_AND_SET_NULL(gUnknown_0203AB1C);
- FREE_AND_SET_NULL(gUnknown_0203AB20);
- FREE_AND_SET_NULL(gUnknown_0203AB24);
- FREE_AND_SET_NULL(gUnknown_0203AB28);
- if (gUnknown_0203AAE4 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAE4);
- if (gUnknown_0203AAE8 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAE8);
- if (gUnknown_0203AAEC != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAEC);
- if (gUnknown_0203AAF0 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAF0);
- FREE_AND_SET_NULL(gUnknown_0203AAC8);
- FREE_AND_SET_NULL(gUnknown_0203AACC);
- FREE_AND_SET_NULL(gUnknown_0203AAD0);
- FREE_AND_SET_NULL(gUnknown_0203AAD4);
- FREE_AND_SET_NULL(gUnknown_0203AAD8);
- FREE_AND_SET_NULL(gUnknown_0203AADC);
- FREE_AND_SET_NULL(gUnknown_0203AAE0);
- FREE_AND_SET_NULL(gUnknown_0203AB2C);
- FREE_AND_SET_NULL(gUnknown_0203AB30);
+ FREE_AND_SET_NULL(sUnknown_0203AAF4);
+ FREE_AND_SET_NULL(sUnknown_0203AAF8);
+ FREE_AND_SET_NULL(sUnknown_0203AAFC);
+ FREE_AND_SET_NULL(sUnknown_0203AB00);
+ FREE_AND_SET_NULL(sUnknown_0203AB04);
+ FREE_AND_SET_NULL(sUnknown_0203AB08);
+ FREE_AND_SET_NULL(sUnknown_0203AB0C);
+ FREE_AND_SET_NULL(sUnknown_0203AB10);
+ FREE_AND_SET_NULL(sUnknown_0203AB14);
+ FREE_AND_SET_NULL(sUnknown_0203AB18);
+ FREE_AND_SET_NULL(sUnknown_0203AB1C);
+ FREE_AND_SET_NULL(sUnknown_0203AB20);
+ FREE_AND_SET_NULL(sUnknown_0203AB24);
+ FREE_AND_SET_NULL(sUnknown_0203AB28);
+ if (sUnknown_0203AAE4 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAE4);
+ if (sUnknown_0203AAE8 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAE8);
+ if (sUnknown_0203AAEC != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAEC);
+ if (sUnknown_0203AAF0 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAF0);
+ FREE_AND_SET_NULL(sUnknown_0203AAC8);
+ FREE_AND_SET_NULL(sSelectedPikaPowerTile);
+ FREE_AND_SET_NULL(sUnknown_0203AAD0);
+ FREE_AND_SET_NULL(sUnknown_0203AAD4);
+ FREE_AND_SET_NULL(sUnknown_0203AAD8);
+ FREE_AND_SET_NULL(sUnknown_0203AADC);
+ FREE_AND_SET_NULL(sUnknown_0203AAE0);
+ FREE_AND_SET_NULL(sUnknown_0203AB2C);
+ FREE_AND_SET_NULL(sUnknown_0203AB30);
FREE_AND_SET_NULL(sSlotMachine);
}
return FALSE;
}
-/*static */void sub_8102484(void)
+static void DrawLuckyFlags(void)
{
- u8 r3;
+ u8 attempts;
- if (sSlotMachine->unk0A == 0)
+ if (sSlotMachine->fairRollsLeft == 0)
{
- if (!(sSlotMachine->unk04 & 0xc0))
+ if (!(sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777)))
{
- if (sub_8102540_())
+ if (IsThisRoundLucky())
{
- r3 = sub_8102578();
- if (r3 != 3)
+ attempts = AttemptsAtLuckyFlags_Top3();
+ if (attempts != 3) // if you found a lucky number
{
- sSlotMachine->unk04 |= gUnknown_083ECE42[r3];
- if (r3 != 1)
+ // attempts == 1: reelTime flag set
+ sSlotMachine->luckyFlags |= gLuckyFlagSettings_Top3[attempts];
+ if (attempts != 1)
{
return;
}
}
}
- r3 = sub_81025BC();
- if (r3 != 5)
+ // if it's not a lucky round or you got reel time, roll for the lower lucky flags
+ attempts = AttemptsAtLuckyFlags_NotTop3();
+ if (attempts != 5) // if you found a lucky number
{
- sSlotMachine->unk04 |= gUnknown_083ECE48[r3];
+ sSlotMachine->luckyFlags |= gLuckyFlagSettings_NotTop3[attempts];
}
}
}
}
-/*static */void sub_81024F0(void)
+static void SetLuckySpins(void)
{
- sSlotMachine->unk06 = 0;
- if (sSlotMachine->unk04)
- sSlotMachine->unk06 = 1;
+ sSlotMachine->luckySpinsLeft = 0;
+ if (sSlotMachine->luckyFlags)
+ sSlotMachine->luckySpinsLeft = 1;
}
-/*static */u8 sub_810250C(u8 a0)
+static u8 GetBiasTag(u8 luckyFlags)
{
u8 i;
for (i = 0; i < 8; i++)
{
- if (a0 & 1)
- return gUnknown_083ECE3A[i];
- a0 >>= 1;
+ if (luckyFlags & 1)
+ return gBiasTags[i];
+ luckyFlags >>= 1;
}
return 0;
}
-/*static */bool8 sub_8102540_(void)
+// you have way more luck betting 3 coins than anything lower
+static bool8 IsThisRoundLucky(void)
{
u8 rval = Random();
- if (gUnknown_083ECD04[sSlotMachine->unk01][sSlotMachine->bet - 1] > rval)
+ if (gLuckyRoundProbabilities[sSlotMachine->machineId][sSlotMachine->bet - 1] > rval)
return TRUE;
return FALSE;
}
-/*static */u8 sub_8102578(void)
+static u8 AttemptsAtLuckyFlags_Top3(void)
{
- s16 i;
+ s16 count;
- for (i = 0; i < 3; i++)
+ for (count = 0; count < 3; count++)
{
s16 rval = Random() & 0xff;
- s16 value = gUnknown_083ECD16[i][sSlotMachine->unk01];
+ s16 value = gLuckyFlagProbabilities_Top3[count][sSlotMachine->machineId];
if (value > rval)
break;
}
- return i;
+ return count;
}
-/*static */u8 sub_81025BC(void)
+static u8 AttemptsAtLuckyFlags_NotTop3(void)
{
- s16 i;
+ s16 count;
- for (i = 0; i < 5; i++)
+ for (count = 0; count < 5; count++)
{
- s16 rval = Random() & 0xff;
- s16 r3 = gUnknown_083ECD28[i][sSlotMachine->unk01];
- if (i == 0 && sSlotMachine->unk03 == 1)
+ s16 rval = Random() & 0xff; // random byte
+ s16 value = gLuckyFlagProbabilities_NotTop3[count][sSlotMachine->machineId];
+ // make first attempt easier if it's a lucky game
+ if (count == 0 && sSlotMachine->luckyGame == TRUE)
{
- r3 += 10;
- if (r3 > 0x100)
- r3 = 0x100;
+ value += 10;
+ if (value > 0x100)
+ value = 0x100;
}
- else if (i == 4 && sSlotMachine->unk03 == 1)
+ // make last attempt harder if it's a lucky game
+ else if (count == 4 && sSlotMachine->luckyGame == TRUE)
{
- r3 -= 10;
- if (r3 < 0)
- r3 = 0;
+ value -= 10;
+ if (value < 0)
+ value = 0;
}
- if (r3 > rval)
+ if (value > rval)
break;
}
- return i;
+ return count;
}
-/*static */u8 sub_810264C(u8 a0)
+static u8 GetReelTimeProbability(u8 reelTimeDraw)
{
- if (sSlotMachine->unk03 == 0)
- return gUnknown_083ECD46[a0][sSlotMachine->pikaPower];
+ if (sSlotMachine->luckyGame == FALSE)
+ return gReeltimeProbabilities_UnluckyGame[reelTimeDraw][sSlotMachine->pikaPower];
else
- return gUnknown_083ECDAC[a0][sSlotMachine->pikaPower];
+ return gReelTimeProbabilities_LuckyGame[reelTimeDraw][sSlotMachine->pikaPower];
}
-/*static */void sub_8102680(void)
+static void GetReeltimeDraw(void)
{
u8 rval;
- s16 i;
+ s16 reelTimeDraw;
- sSlotMachine->unk05 = 0;
+ sSlotMachine->reelTimeDraw = 0;
rval = Random();
- if (rval < sub_810264C(0))
+ if (rval < GetReelTimeProbability(0))
return;
- for (i = 5; i > 0; i--)
+ for (reelTimeDraw = 5; reelTimeDraw > 0; reelTimeDraw--)
{
rval = Random();
- if (rval < sub_810264C(i))
+ if (rval < GetReelTimeProbability(reelTimeDraw))
break;
}
- sSlotMachine->unk05 = i;
+ sSlotMachine->reelTimeDraw = reelTimeDraw;
}
-/*static */bool8 sub_81026DC(u16 a0)
+static bool8 SkipToReeltimeAction14(u16 i)
{
u16 rval = Random() & 0xff;
- if (rval < gUnknown_083ECE12[a0])
+ if (rval < gProbabilityTable_SkipToReeltimeAction14[i])
return TRUE;
else
return FALSE;
}
-/*static */u16 dp15_jump_random_unknown(void)
+static u16 SlowReelSpeed(void)
{
- u8 r4 = 0;
+ u8 i = 0;
u8 rval;
u8 value;
- if (sSlotMachine->unk10 >= 300)
- r4 = 4;
- else if (sSlotMachine->unk10 >= 250)
- r4 = 3;
- else if (sSlotMachine->unk10 >= 200)
- r4 = 2;
- else if (sSlotMachine->unk10 >= 150)
- r4 = 1;
+ if (sSlotMachine->netCoinLoss >= 300)
+ i = 4;
+ else if (sSlotMachine->netCoinLoss >= 250)
+ i = 3;
+ else if (sSlotMachine->netCoinLoss >= 200)
+ i = 2;
+ else if (sSlotMachine->netCoinLoss >= 150)
+ i = 1;
rval = Random() % 100;
- value = gUnknown_083ECE1C[r4][0];
+ value = gReelIncrementTable[i][0];
if (rval < value)
return 4;
rval = Random() % 100;
- value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[sSlotMachine->unk0B];
+ value = gReelIncrementTable[i][1] + gReelTimeBonusIncrementTable[sSlotMachine->fairRollsUsed];
if (rval < value)
return 2;
return 8;
}
-/*static */void CheckMatch(void)
+static void CheckMatch(void)
{
sSlotMachine->matchedSymbols = 0;
CheckMatch_CenterRow();
@@ -1539,88 +1562,88 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
CheckMatch_Diagonals();
}
-/*static */void CheckMatch_CenterRow(void)
+static void CheckMatch_CenterRow(void)
{
u8 c1, c2, c3, match;
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 2);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 2);
+ c1 = GetNearbyTag_Quantized(0, 2);
+ c2 = GetNearbyTag_Quantized(1, 2);
+ c3 = GetNearbyTag_Quantized(2, 2);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
sub_8103E04(0);
}
}
-/*static */void CheckMatch_TopAndBottom(void)
+static void CheckMatch_TopAndBottom(void)
{
u8 c1, c2, c3, match;
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 1);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ c1 = GetNearbyTag_Quantized(0, 1);
+ c2 = GetNearbyTag_Quantized(1, 1);
+ c3 = GetNearbyTag_Quantized(2, 1);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match == SLOT_MACHINE_MATCHED_1CHERRY)
match = SLOT_MACHINE_MATCHED_2CHERRY;
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
sub_8103E04(1);
}
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 3);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+ c1 = GetNearbyTag_Quantized(0, 3);
+ c2 = GetNearbyTag_Quantized(1, 3);
+ c3 = GetNearbyTag_Quantized(2, 3);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match == SLOT_MACHINE_MATCHED_1CHERRY)
match = SLOT_MACHINE_MATCHED_2CHERRY;
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
sub_8103E04(2);
}
}
-/*static */void CheckMatch_Diagonals(void)
+static void CheckMatch_Diagonals(void)
{
u8 c1, c2, c3, match;
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+ c1 = GetNearbyTag_Quantized(0, 1);
+ c2 = GetNearbyTag_Quantized(1, 2);
+ c3 = GetNearbyTag_Quantized(2, 3);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match != SLOT_MACHINE_MATCHED_1CHERRY)
{
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
}
sub_8103E04(3);
}
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ c1 = GetNearbyTag_Quantized(0, 3);
+ c2 = GetNearbyTag_Quantized(1, 2);
+ c3 = GetNearbyTag_Quantized(2, 1);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match != SLOT_MACHINE_MATCHED_1CHERRY)
{
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
}
sub_8103E04(4);
}
}
-/*static */u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
+static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
{
if (c1 == c2 && c1 == c3)
- return sSym2Match[c1];
+ return gSym2Match[c1];
if (c1 == SLOT_MACHINE_TAG_7_RED && c2 == SLOT_MACHINE_TAG_7_RED && c3 == SLOT_MACHINE_TAG_7_BLUE)
return SLOT_MACHINE_MATCHED_777_MIXED;
if (c1 == SLOT_MACHINE_TAG_7_BLUE && c2 == SLOT_MACHINE_TAG_7_BLUE && c3 == SLOT_MACHINE_TAG_7_RED)
@@ -1630,26 +1653,26 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return SLOT_MACHINE_MATCHED_NONE;
}
-/*static */void sub_8102A24(void)
+static void AwardPayout(void)
{
- sub_8102A64(CreateTask(sub_8102A64, 4));
+ RunAwardPayoutActions(CreateTask(RunAwardPayoutActions, 4));
}
-/*static */bool8 sub_8102A44(void)
+static bool8 IsFinalTask_RunAwardPayoutActions(void)
{
- if (FindTaskIdByFunc(sub_8102A64) == 0xFF)
+ if (FindTaskIdByFunc(RunAwardPayoutActions) == TAIL_SENTINEL)
return TRUE;
else
return FALSE;
}
-/*static */void sub_8102A64(u8 taskId)
+static void RunAwardPayoutActions(u8 taskId)
{
- while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId))
+ while (AwardPayoutActions[gTasks[taskId].data[0]](&gTasks[taskId]))
;
}
-/*static */bool8 sub_8102A9C(struct Task *task)
+static bool8 AwardPayoutAction0(struct Task *task)
{
if (sub_8103E38())
{
@@ -1662,8 +1685,8 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
}
return FALSE;
}
-
-/*static */bool8 sub_8102AD0(struct Task *task)
+// task->data[1]: timer
+static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *task)
{
if (!task->data[1]--)
{
@@ -1689,165 +1712,175 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102B80(struct Task *task)
+static bool8 AwardPayoutAction_FreeTask(struct Task *task)
{
if (sub_8103E7C())
- DestroyTask(FindTaskIdByFunc(sub_8102A64));
+ DestroyTask(FindTaskIdByFunc(RunAwardPayoutActions));
return FALSE;
}
-/*static */u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y)
+
+// Returns the tag that is posOffset below the tag at the top of reelIndex's tape
+static u8 GetNearbyTag_Quantized(u8 reelIndex, s16 posOffset)
{
- s16 offset = (sSlotMachine->reelPositions[x] + y) % 21;
- if (offset < 0)
- offset += 21;
- return sReelSymbols[x][offset];
+ s16 tagIndex = (sSlotMachine->reelTagOffsets[reelIndex] + posOffset) % REEL_NUM_TAGS;
+ if (tagIndex < 0)
+ tagIndex += REEL_NUM_TAGS;
+ return gReelSymbols[reelIndex][tagIndex];
}
-/*static */u8 GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(u8 x, s16 y)
+
+// Calculates GetNearbyTag_Quantized as if the reel was snapped downwards into place
+static u8 GetNearbyTag(u8 reelIndex, s16 posOffset)
{
- s16 r6 = 0;
- s16 result = sSlotMachine->unk1C[x] % 24;
+ s16 tagOffset = 0;
+ s16 result = sSlotMachine->reelPixelOffsets[reelIndex] % 24;
if (result != 0)
- r6 = -1;
- return GetTagOfReelSymbolOnScreenAtPos(x, y + r6);
+ tagOffset = -1;
+ return GetNearbyTag_Quantized(reelIndex, posOffset + tagOffset);
}
-/*static */u8 sub_8102C48(s16 a0)
+static u8 GetNearbyReelTimeTag(s16 n)
{
- s16 r1 = (sSlotMachine->unk16 + a0) % 6;
- if (r1 < 0)
- r1 += 6;
- return gUnknown_083ECCF1[r1];
+ s16 newPosition = (sSlotMachine->reeltimePosition + n) % 6;
+ if (newPosition < 0)
+ newPosition += 6;
+ return gReelTimeTags[newPosition];
}
-/*static */void sub_8102C84(u8 a0, s16 a1)
+static void AdvanceSlotReel(u8 reelIndex, s16 value)
{
- sSlotMachine->unk1C[a0] += a1;
- sSlotMachine->unk1C[a0] %= 504;
- sSlotMachine->reelPositions[a0] = 21 - sSlotMachine->unk1C[a0] / 24;
+ sSlotMachine->reelPixelOffsets[reelIndex] += value;
+ sSlotMachine->reelPixelOffsets[reelIndex] %= 504;
+ sSlotMachine->reelTagOffsets[reelIndex] = REEL_NUM_TAGS - sSlotMachine->reelPixelOffsets[reelIndex] / 24;
}
-s16 sub_8102CCC(u8 a0, s16 a1)
+s16 AdvanceSlotReelToNextTag(u8 reelIndex, s16 value)
{
- s16 r1 = sSlotMachine->unk1C[a0] % 24;
- if (r1 != 0)
+ s16 offset = sSlotMachine->reelPixelOffsets[reelIndex] % 24;
+ if (offset != 0)
{
- if (r1 < a1)
- a1 = r1;
- sub_8102C84(a0, a1);
- r1 = sSlotMachine->unk1C[a0] % 24;
+ if (offset < value)
+ value = offset;
+ AdvanceSlotReel(reelIndex, value);
+ offset = sSlotMachine->reelPixelOffsets[reelIndex] % 24;
}
- return r1;
+ return offset;
}
-/*static */void sub_8102D28(s16 a0)
+static void AdvanceReeltimeReel(s16 value)
{
- sSlotMachine->unk14 += a0;
- sSlotMachine->unk14 %= 120;
- sSlotMachine->unk16 = 6 - sSlotMachine->unk14 / 20;
+ sSlotMachine->reeltimePixelOffset += value;
+ sSlotMachine->reeltimePixelOffset %= 120;
+ sSlotMachine->reeltimePosition = 6 - sSlotMachine->reeltimePixelOffset / 20;
}
-s16 sub_8102D5C(s16 a0)
+s16 AdvanceReeltimeReelToNextTag(s16 value)
{
- s16 r1 = sSlotMachine->unk14 % 20;
- if (r1 != 0)
+ s16 offset = sSlotMachine->reeltimePixelOffset % 20;
+ if (offset != 0)
{
- if (r1 < a0)
- a0 = r1;
- sub_8102D28(a0);
- r1 = sSlotMachine->unk14 % 20;
+ if (offset < value)
+ value = offset;
+ AdvanceReeltimeReel(value);
+ offset = sSlotMachine->reeltimePixelOffset % 20;
}
- return r1;
+ return offset;
}
-/*static */void sub_8102DA8(void)
+static void GameplayTask_StopSlotReel(void)
{
u8 i;
for (i = 0; i < 3; i++)
{
- u8 taskId = CreateTask(sub_8102E68, 2);
+ u8 taskId = CreateTask(RunSlotReelActions, 2);
gTasks[taskId].data[15] = i;
- sSlotMachine->reelTasks[i] = taskId;
- sub_8102E68(taskId);
+ sSlotMachine->slotReelTasks[i] = taskId;
+ RunSlotReelActions(taskId);
}
}
-/*static */void sub_8102DEC(u8 a0)
+static void ReelTasks_SetUnkTaskData(u8 reelIndex)
{
- gTasks[sSlotMachine->reelTasks[a0]].data[0] = 1;
- gTasks[sSlotMachine->reelTasks[a0]].data[14] = 1;
+ gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[0] = 1;
+ gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[14] = 1;
}
-/*static */void sub_8102E1C(u8 a0)
+static void sub_8102E1C(u8 reelIndex)
{
- gTasks[sSlotMachine->reelTasks[a0]].data[0] = 2;
+ gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[0] = 2;
}
-/*static */bool8 sub_8102E40(u8 a0)
+static bool8 IsSlotReelMoving(u8 reelIndex)
{
- return gTasks[sSlotMachine->reelTasks[a0]].data[14];
+ return gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[14];
}
-/*static */void sub_8102E68(u8 taskId)
+static void RunSlotReelActions(u8 taskId)
{
- while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId))
+ while (SlotReelActions[gTasks[taskId].data[0]](&gTasks[taskId]))
;
}
-/*static */bool8 sub_8102EA0(struct Task *task)
+// task->data[1] reel turns
+// task->data[15] reelIndex
+static bool8 SlotReelAction_StayStill(struct Task *task)
{
return FALSE;
}
-/*static */bool8 sub_8102EA4(struct Task *task)
+static bool8 SlotReelAction_Spin(struct Task *task)
{
- sub_8102C84(task->data[15], sSlotMachine->unk1A);
+ AdvanceSlotReel(task->data[15], sSlotMachine->reelIncrement);
return FALSE;
}
-
-/*static */bool8 sub_8102EC0(struct Task *task)
+// As in previous generations, the slot machine often doesn't stop exactly when you press stop
+static bool8 SlotReelAction_DecideWhereToStop(struct Task *task)
{
task->data[0]++;
- sSlotMachine->unk34[task->data[15]] = 0;
- sSlotMachine->unk2E[task->data[15]] = 0;
- if (sSlotMachine->unk0A == 0 && (sSlotMachine->unk04 == 0 || sSlotMachine->unk06 == 0 || !gUnknown_083ECB40[task->data[15]]()))
+ // initialize data for that reel --> these will be changed if gBiasTags can be lined up
+ sSlotMachine->winnerRows[task->data[15]] = 0;
+ sSlotMachine->reelExtraTurns[task->data[15]] = 0;
+
+ if (sSlotMachine->fairRollsLeft == 0 && (sSlotMachine->luckyFlags == 0 || sSlotMachine->luckySpinsLeft == 0 || !DecideReelTurns_BiasTag[task->data[15]]()))
{
- sSlotMachine->unk06 = 0;
- gUnknown_083ECB4C[task->data[15]]();
+ sSlotMachine->luckySpinsLeft = 0;
+ DecideReelTurns_NoBiasTag[task->data[15]]();
}
- task->data[1] = sSlotMachine->unk2E[task->data[15]];
+ task->data[1] = sSlotMachine->reelExtraTurns[task->data[15]];
return TRUE;
}
-/*static */bool8 sub_8102F4C(struct Task *task)
+// go to next tag and then do any additional turns
+static bool8 SlotReelAction_MoveToStop(struct Task *task)
{
- u16 sp[ARRAY_COUNT(gUnknown_085A74FC)];
- s16 r2;
+ u16 reelStopShocks[ARRAY_COUNT(ReelStopShocks)];
+ s16 reelPixelPos;
- memcpy(sp, gUnknown_085A74FC, sizeof(gUnknown_085A74FC));
- r2 = sSlotMachine->unk1C[task->data[15]] % 24;
- if (r2 != 0)
- r2 = sub_8102CCC(task->data[15], sSlotMachine->unk1A);
- else if (sSlotMachine->unk2E[task->data[15]])
+ memcpy(reelStopShocks, ReelStopShocks, sizeof(ReelStopShocks));
+ reelPixelPos = sSlotMachine->reelPixelOffsets[task->data[15]] % 24;
+ if (reelPixelPos != 0)
+ reelPixelPos = AdvanceSlotReelToNextTag(task->data[15], sSlotMachine->reelIncrement);
+ else if (sSlotMachine->reelExtraTurns[task->data[15]])
{
- sSlotMachine->unk2E[task->data[15]]--;
- sub_8102C84(task->data[15], sSlotMachine->unk1A);
- r2 = sSlotMachine->unk1C[task->data[15]] % 24;
+ sSlotMachine->reelExtraTurns[task->data[15]]--;
+ AdvanceSlotReel(task->data[15], sSlotMachine->reelIncrement);
+ reelPixelPos = sSlotMachine->reelPixelOffsets[task->data[15]] % 24;
}
- if (r2 == 0 && sSlotMachine->unk2E[task->data[15]] == 0)
+ if (reelPixelPos == 0 && sSlotMachine->reelExtraTurns[task->data[15]] == 0)
{
task->data[0]++;
- task->data[1] = sp[task->data[1]];
+ task->data[1] = reelStopShocks[task->data[1]];
task->data[2] = 0;
}
return FALSE;
}
-/*static */bool8 sub_8103008(struct Task *task)
+// make selected tag oscillate before it becomes still
+static bool8 SlotReelAction_OscillatingStop(struct Task *task)
{
- sSlotMachine->unk22[task->data[15]] = task->data[1];
+ sSlotMachine->reelPixelOffsetsWhileStopping[task->data[15]] = task->data[1];
task->data[1] = -task->data[1];
task->data[2]++;
if ((task->data[2] & 0x3) == 0)
@@ -1856,103 +1889,111 @@ s16 sub_8102D5C(s16 a0)
{
task->data[0] = 0;
task->data[14] = 0;
- sSlotMachine->unk22[task->data[15]] = 0;
+ sSlotMachine->reelPixelOffsetsWhileStopping[task->data[15]] = 0;
}
return FALSE;
}
-/*static */bool8 sub_810305C(void)
+static bool8 DecideReelTurns_BiasTag_Reel1(void)
{
- u8 r3 = sub_810250C(sSlotMachine->unk04);
- u8 r5 = r3;
- if (sSlotMachine->unk04 & 0xc0)
+ u8 tag2 = GetBiasTag(sSlotMachine->luckyFlags);
+ u8 tag1 = tag2;
+ if (sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777))
{
- r5 = 0;
- r3 = 1;
+ tag1 = SLOT_MACHINE_TAG_7_RED;
+ tag2 = SLOT_MACHINE_TAG_7_BLUE;
}
- return gUnknown_083ECB64[sSlotMachine->bet - 1](r5, r3);
+ return DecideReelTurns_BiasTag_Reel1_Bets[sSlotMachine->bet - 1](tag1, tag2);
}
-/*static */bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2)
+static bool8 AreTagsAtPosition_Reel1(s16 pos, u8 tag1, u8 tag2)
{
- u8 tag = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, y);
+ u8 tag = GetNearbyTag(0, pos);
if (tag == tag1 || tag == tag2)
{
- sSlotMachine->unk07 = tag;
+ sSlotMachine->biasTag = tag;
return TRUE;
}
return FALSE;
}
-/*static */bool8 sub_81030E0(s16 y)
+static bool8 AreCherriesOnScreen_Reel1(s16 offsetFromCenter)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - y) == 4)
+ if (GetNearbyTag(0, 1 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY || GetNearbyTag(0, 2 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY || GetNearbyTag(0, 3 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY)
return TRUE;
else
return FALSE;
}
-/*static */bool8 sub_8103134(void)
+static bool8 IsBiasTowardsCherryOr7s(void)
{
- if (sSlotMachine->unk04 & 0xc2)
+ if (sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777 | LUCKY_BIAS_CHERRY))
return TRUE;
else
return FALSE;
}
-/*static */bool8 sub_8103154(u8 a0, u8 a1)
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet1(u8 tag1, u8 tag2)
{
s16 i;
for (i = 0; i < 5; i++)
{
- if (sub_81030A4(2 - i, a0, a1))
+ // if a lucky tag appears in the center row within 4 turns
+ if (AreTagsAtPosition_Reel1(2 - i, tag1, tag2))
{
- sSlotMachine->unk34[0] = 2;
- sSlotMachine->unk2E[0] = i;
+ sSlotMachine->winnerRows[0] = 2;
+ sSlotMachine->reelExtraTurns[0] = i;
return TRUE;
}
}
return FALSE;
}
-/*static */bool8 sub_81031B4(u8 tag1, u8 tag2)
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet2or3(u8 tag1, u8 tag2)
{
s16 i;
- bool8 r6 = sub_8103134();
- if (r6 || !sub_81030E0(0))
+ bool8 biased = IsBiasTowardsCherryOr7s();
+ // if lucky numbers or no cherries are currently on screen in reel 1...
+ if (biased || !AreCherriesOnScreen_Reel1(0))
{
for (i = 1; i < 4; i++)
{
- if (sub_81030A4(i, tag1, tag2))
+ // if a bias tag is currently on the screen
+ if (AreTagsAtPosition_Reel1(i, tag1, tag2))
{
- sSlotMachine->unk34[0] = i;
- sSlotMachine->unk2E[0] = 0;
+ sSlotMachine->winnerRows[0] = i;
+ sSlotMachine->reelExtraTurns[0] = 0;
return TRUE;
}
}
}
for (i = 1; i < 5; i++)
{
- bool8 r7 = r6;
- if (r7 || !sub_81030E0(i))
+ bool8 biasedCopy = biased; // redundant
+ // if biased or if in the next 4 turns there is a screen with no cherries...
+ if (biasedCopy || !AreCherriesOnScreen_Reel1(i))
{
- if (sub_81030A4(1 - i, tag1, tag2))
+ //...and if a bias tag is in top row of that screen
+ if (AreTagsAtPosition_Reel1(1 - i, tag1, tag2))
{
- if (i == 1 && (r7 || !sub_81030E0(3)))
+ //...and if it only took 1 turn and the lucky tag could also be the bottom row of a screen with no cherries...
+ if (i == 1 && (biasedCopy || !AreCherriesOnScreen_Reel1(3)))
{
- sSlotMachine->unk34[0] = 3;
- sSlotMachine->unk2E[0] = 3;
+ sSlotMachine->winnerRows[0] = 3;
+ sSlotMachine->reelExtraTurns[0] = 3;
return TRUE;
}
- if (i < 4 && (r7 || !sub_81030E0(i + 1)))
+ //...or if it isn't the last turn and the lucky tag could be in the center row of a screen with no cherries...
+ if (i < 4 && (biasedCopy || !AreCherriesOnScreen_Reel1(i + 1)))
{
- sSlotMachine->unk34[0] = 2;
- sSlotMachine->unk2E[0] = i + 1;
+ sSlotMachine->winnerRows[0] = 2;
+ sSlotMachine->reelExtraTurns[0] = i + 1;
return TRUE;
}
- sSlotMachine->unk34[0] = 1;
- sSlotMachine->unk2E[0] = i;
+ //...else
+ sSlotMachine->winnerRows[0] = 1;
+ sSlotMachine->reelExtraTurns[0] = i;
return TRUE;
}
}
@@ -1960,55 +2001,61 @@ s16 sub_8102D5C(s16 a0)
return FALSE;
}
-/*static */bool8 sub_81032C0(void)
+static bool8 DecideReelTurns_BiasTag_Reel2(void)
{
- return gUnknown_083ECB70[sSlotMachine->bet - 1]();
+ return DecideReelTurns_BiasTag_Reel2_Bets[sSlotMachine->bet - 1]();
}
-/*static */bool8 sub_81032E8(void)
+static bool8 DecideReelTurns_BiasTag_Reel2_Bet1or2(void)
{
s16 i;
- s16 unk34_0 = sSlotMachine->unk34[0];
+ s16 biasTagLocation_Reel1 = sSlotMachine->winnerRows[0];
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, unk34_0 - i) == sSlotMachine->unk07)
+ // if biasTag appears in the same row within 4 turns
+ if (GetNearbyTag(1, biasTagLocation_Reel1 - i) == sSlotMachine->biasTag)
{
- sSlotMachine->unk34[1] = unk34_0;
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = biasTagLocation_Reel1;
+ sSlotMachine->reelExtraTurns[1] = i;
return TRUE;
}
}
return FALSE;
}
-/*static */bool8 sub_810333C(void)
+static bool8 DecideReelTurns_BiasTag_Reel2_Bet3(void)
{
s16 i;
- if (sub_81032E8())
+ // if biasTag appears in the same row within 4 turns...
+ if (DecideReelTurns_BiasTag_Reel2_Bet1or2())
{
- if (sSlotMachine->unk34[0] != 2 && sSlotMachine->unk2E[1] > 1 && sSlotMachine->unk2E[1] != 4)
+ //...and if the biasTag is not in middle row of reel 1 and if biasTag appears in middle row of reel 2 in 2 or 3 turns...
+ if (sSlotMachine->winnerRows[0] != 2 && sSlotMachine->reelExtraTurns[1] > 1 && sSlotMachine->reelExtraTurns[1] != 4)
{
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == sSlotMachine->unk07)
+ //...and if the bias tag will appear in the middle row within 4 turns
+ if (GetNearbyTag(1, 2 - i) == sSlotMachine->biasTag)
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = i;
break;
}
}
}
return TRUE;
}
- if (sSlotMachine->unk34[0] != 2)
+ // else if the biasTag is not in middle row of reel 1...
+ if (sSlotMachine->winnerRows[0] != 2)
{
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == sSlotMachine->unk07)
+ //...and if the biasTag will appear in the center row of reel 2 within 4 turns
+ if (GetNearbyTag(1, 2 - i) == sSlotMachine->biasTag)
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = i;
return TRUE;
}
}
@@ -2016,102 +2063,113 @@ s16 sub_8102D5C(s16 a0)
return FALSE;
}
-/*static */bool8 sub_81033DC(void)
+static bool8 DecideReelTurns_BiasTag_Reel3(void)
{
- u8 r3 = sSlotMachine->unk07;
- if (sSlotMachine->unk04 & 0x40)
+ u8 biasTag = sSlotMachine->biasTag;
+ if (sSlotMachine->luckyFlags & LUCKY_BIAS_MIXED_777)
{
- r3 = 0;
- if (sSlotMachine->unk07 == 0)
+ biasTag = SLOT_MACHINE_TAG_7_RED;
+ if (sSlotMachine->biasTag == SLOT_MACHINE_TAG_7_RED)
{
- r3 = 1;
+ biasTag = SLOT_MACHINE_TAG_7_BLUE;
}
}
- return gUnknown_083ECB7C[sSlotMachine->bet - 1](r3);
+ return DecideReelTurns_BiasTag_Reel3_Bets[sSlotMachine->bet - 1](biasTag);
}
-/*static */bool8 sub_810341C(u8 a0)
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet1or2(u8 biasTag)
{
s16 i;
- s16 unk34_1 = sSlotMachine->unk34[1];
+ s16 biasTagLocation_Reel2 = sSlotMachine->winnerRows[1];
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, unk34_1 - i) == a0)
+ // if the biasTag appears in the same row as in reel 2 within 4 turns
+ if (GetNearbyTag(2, biasTagLocation_Reel2 - i) == biasTag)
{
- sSlotMachine->unk34[2] = unk34_1;
- sSlotMachine->unk2E[2] = i;
+ sSlotMachine->winnerRows[2] = biasTagLocation_Reel2;
+ sSlotMachine->reelExtraTurns[2] = i;
return TRUE;
}
}
return FALSE;
}
-/*static */bool8 sub_810347C(u8 a0)
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet3(u8 biasTag)
{
s16 i;
- s16 r8;
- if (sSlotMachine->unk34[0] == sSlotMachine->unk34[1])
- return sub_810341C(a0);
- if (sSlotMachine->unk34[0] == 1)
- r8 = 3;
+ s16 biasTagFinalPos;
+ // if the final position of the biasTag matches in reel 1 and reel 2...
+ if (sSlotMachine->winnerRows[0] == sSlotMachine->winnerRows[1])
+ //...then try to line it up in reel 3
+ return DecideReelTurns_BiasTag_Reel3_Bet1or2(biasTag);
+ // else place it in the row opposite reel 1's
+ if (sSlotMachine->winnerRows[0] == 1)
+ biasTagFinalPos = 3;
else
- r8 = 1;
+ biasTagFinalPos = 1;
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - i) == a0)
+ // if the biasTag lands in that position within 4 turns
+ if (GetNearbyTag(2, biasTagFinalPos - i) == biasTag)
{
- sSlotMachine->unk2E[2] = i;
- sSlotMachine->unk34[2] = r8;
+ sSlotMachine->reelExtraTurns[2] = i;
+ sSlotMachine->winnerRows[2] = biasTagFinalPos;
return TRUE;
}
}
return FALSE;
}
-/*static */void sub_81034F4(void)
+// Advance until there are no cherries on screen in reel 1
+
+static void DecideReelTurns_NoBiasTag_Reel1(void)
{
s16 i = 0;
- while (sub_81030E0(i) != 0)
+ while (AreCherriesOnScreen_Reel1(i) != 0)
i++;
- sSlotMachine->unk2E[0] = i;
+ sSlotMachine->reelExtraTurns[0] = i;
}
-/*static */bool8 sub_8103520(u8 *a0)
+static bool8 IsBiasTag777_SwitchColor(u8 *biasTagPtr)
{
- if (*a0 == 0)
+ if (*biasTagPtr == SLOT_MACHINE_TAG_7_RED)
{
- *a0 = 1;
+ *biasTagPtr = SLOT_MACHINE_TAG_7_BLUE;
return TRUE;
}
- if (*a0 == 1)
+ if (*biasTagPtr == SLOT_MACHINE_TAG_7_BLUE)
{
- *a0 = 0;
+ *biasTagPtr = SLOT_MACHINE_TAG_7_RED;
return TRUE;
}
return FALSE;
}
-/*static */void sub_8103540(void)
+static void DecideReelTurns_NoBiasTag_Reel2(void)
{
- gUnknown_083ECB88[sSlotMachine->bet - 1]();
+ DecideReelTurns_NoBiasTag_Reel2_Bets[sSlotMachine->bet - 1]();
}
-/*static */void sub_8103564(void)
+// only does stuff if the biasTag is one of the 7's, plus other conditions
+static void DecideReelTurns_NoBiasTag_Reel2_Bet1(void)
{
- if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->winnerRows[0] != 0 && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
- u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - sSlotMachine->unk2E[0]);
- if (sub_8103520(&sp0))
+ u8 biasTag = GetNearbyTag(0, 2 - sSlotMachine->reelExtraTurns[0]);
+ //...and if biasTag is one of the 7's...
+ if (IsBiasTag777_SwitchColor(&biasTag))
+ //...swap color of biasTag...
{
s16 i;
for (i = 0; i < 5; i++)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i))
+ //...and if the biasTag appears within 4 turns
+ if (biasTag == GetNearbyTag(1, 2 - i))
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = i;
break;
}
}
@@ -2119,20 +2177,23 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void j5_08111E84(void)
+static void DecideReelTurns_NoBiasTag_Reel2_Bet2(void)
{
- if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->winnerRows[0] != 0 && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
- u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
- if (sub_8103520(&sp0))
+ u8 biasTag = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]);
+ //...and if biasTag is one of the 7's...
+ if (IsBiasTag777_SwitchColor(&biasTag))
+ //...swap color of biasTag...
{
s16 i;
for (i = 0; i < 5; i++)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[0] - i))
+ //...and if the biasTag appears in same row in reel 2 within 4 turns
+ if (biasTag == GetNearbyTag(1, sSlotMachine->winnerRows[0] - i))
{
- sSlotMachine->unk34[1] = sSlotMachine->unk34[0];
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = sSlotMachine->winnerRows[0];
+ sSlotMachine->reelExtraTurns[1] = i;
break;
}
}
@@ -2140,61 +2201,65 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8103668(void)
+static void DecideReelTurns_NoBiasTag_Reel2_Bet3(void)
{
s16 i;
s16 j;
- if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
+ // if reel 1 has a biasTag and bit 7 is set in luckyFlags...
+ if (sSlotMachine->winnerRows[0] != 0 && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
- if (sSlotMachine->unk34[0] == 2)
+ //...and if biasTag appeared in the center row of reel 1
+ if (sSlotMachine->winnerRows[0] == 2)
{
- j5_08111E84();
+ DecideReelTurns_NoBiasTag_Reel2_Bet2();
}
else
{
- u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
- if (sub_8103520(&sp0))
+ u8 biasTag = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]);
+ //...and if biasTag is one of the 7's...
+ if (IsBiasTag777_SwitchColor(&biasTag))
+ //...swap the color of the 7...
{
j = 2;
- if (sSlotMachine->unk34[0] == 3)
+ if (sSlotMachine->winnerRows[0] == 3)
j = 3;
for (i = 0; i < 2; i++, j--)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, j))
+ if (biasTag == GetNearbyTag(1, j))
{
- sSlotMachine->unk34[1] = j;
- sSlotMachine->unk2E[1] = 0;
+ sSlotMachine->winnerRows[1] = j;
+ sSlotMachine->reelExtraTurns[1] = 0;
return;
}
}
for (j = 1; j < 5; j++)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[0] - j))
+ if (biasTag == GetNearbyTag(1, sSlotMachine->winnerRows[0] - j))
{
- if (sSlotMachine->unk34[0] == 1)
+ if (sSlotMachine->winnerRows[0] == 1)
{
if (j < 3)
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = j + 1;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = j + 1;
}
else
{
- sSlotMachine->unk34[1] = 1;
- sSlotMachine->unk2E[1] = j;
+ sSlotMachine->winnerRows[1] = 1;
+ sSlotMachine->reelExtraTurns[1] = j;
}
}
else
{
if (j < 3)
{
- sSlotMachine->unk34[1] = 3;
- sSlotMachine->unk2E[1] = j;
+ sSlotMachine->winnerRows[1] = 3;
+ sSlotMachine->reelExtraTurns[1] = j;
}
else
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = j - 1;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = j - 1;
}
}
return;
@@ -2205,149 +2270,159 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */bool8 sub_8103764(u8 a0, u8 a1)
+static bool8 AreTagsMixed77(u8 tag1, u8 tag2)
{
- if ((a0 == 0 && a1 == 1) || (a0 == 1 && a1 == 0))
+ if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE) || (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED))
return TRUE;
else
return FALSE;
}
-/*static */bool8 sub_810378C(u8 a0, u8 a1, u8 a2)
+static bool8 AreTagsMixed777(u8 tag1, u8 tag2, u8 tag3)
{
- if ((a0 == 0 && a1 == 1 && a2 == 0) || (a0 == 1 && a1 == 0 && a2 == 1))
+ if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) ||
+ (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE))
return TRUE;
else
return FALSE;
}
-/*static */bool8 sub_81037BC(u8 a0, u8 a1, u8 a2)
+static bool8 TagsDontMatchOrHaveAny7s(u8 tag1, u8 tag2, u8 tag3)
{
- if ((a0 == 0 && a1 == 1 && a2 == 0) ||
- (a0 == 1 && a1 == 0 && a2 == 1) ||
- (a0 == 0 && a1 == 0 && a2 == 1) ||
- (a0 == 1 && a1 == 1 && a2 == 0) ||
- (a0 == a1 && a0 == a2))
+ if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) ||
+ (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) ||
+ (tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) ||
+ (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) ||
+ (tag1 == tag2 && tag1 == tag3))
{
return FALSE;
}
return TRUE;
}
-/*static */void sub_810380C(void)
+static void DecideReelTurns_NoBiasTag_Reel3(void)
{
- gUnknown_083ECB94[sSlotMachine->bet - 1]();
+ DecideReelTurns_NoBiasTag_Reel3_Bets[sSlotMachine->bet - 1]();
}
-/*static */void sub_8103830(void)
+static void DecideReelTurns_NoBiasTag_Reel3_Bet1(void)
{
s16 i = 0;
- u8 r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - sSlotMachine->unk2E[0]);
- u8 r1 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
- if (r5 == r1)
+ u8 tag1 = GetNearbyTag(0, 2 - sSlotMachine->reelExtraTurns[0]);
+ u8 tag2 = GetNearbyTag(1, 2 - sSlotMachine->reelExtraTurns[1]);
+ // if tags match in first 2 reels...
+ if (tag1 == tag2)
{
+ //...spin until you get non-matching tag
while (1)
{
- u8 r0;
- if (!(r5 == (r0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0)))
+ u8 tag3;
+ if (!(tag1 == (tag3 = GetNearbyTag(2, 2 - i)) || (tag1 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) || (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED)))
break;
i++;
}
}
- else if (sub_8103764(r5, r1))
+ else if (AreTagsMixed77(tag1, tag2))
{
- if (sSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
+ //...see if you can match with reel 1 within 4 turns
for (i = 0; i < 5; i++)
{
- if (r5 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
+ if (tag1 == GetNearbyTag(2, 2 - i))
{
- sSlotMachine->unk2E[2] = i;
+ sSlotMachine->reelExtraTurns[2] = i;
return;
}
}
}
+ // turn until you aren't matching with reel 1
i = 0;
while (1)
{
- if (r5 != GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
+ if (tag1 != GetNearbyTag(2, 2 - i))
break;
i++;
}
}
- sSlotMachine->unk2E[2] = i;
+ sSlotMachine->reelExtraTurns[2] = i;
}
-/*static */void sub_8103910(void)
+static void DecideReelTurns_NoBiasTag_Reel3_Bet2(void)
{
- s16 sp0 = 0;
+ s16 extraTurns = 0;
s16 i;
- u8 r7;
- u8 r6;
- u8 r4;
-
- if (sSlotMachine->unk34[1] != 0 && sSlotMachine->unk34[0] == sSlotMachine->unk34[1] && sSlotMachine->unk04 & 0x80)
- {
- r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[1] - sSlotMachine->unk2E[1]);
- if (sub_8103764(r7, r6))
+ u8 tag1;
+ u8 tag2;
+ u8 tag3;
+ if (sSlotMachine->winnerRows[1] != 0 && sSlotMachine->winnerRows[0] == sSlotMachine->winnerRows[1] && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
+ {
+ tag1 = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]);
+ tag2 = GetNearbyTag(1, sSlotMachine->winnerRows[1] - sSlotMachine->reelExtraTurns[1]);
+ //...and if tags are mixed 7s...
+ if (AreTagsMixed77(tag1, tag2))
{
+ //...try to match with reel 1 within 4 turns
for (i = 0; i < 5; i++)
{
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, sSlotMachine->unk34[1] - i);
- if (r7 == r4)
+ tag3 = GetNearbyTag(2, sSlotMachine->winnerRows[1] - i);
+ if (tag1 == tag3)
{
- sp0 = i;
+ extraTurns = i;
break;
}
}
}
}
+ // GUESS: spin until there's no possible match within 4 turns of you stopping
while (1)
{
- s16 r8;
- for (i = 1, r8 = 0; i < 4; i++)
+ s16 loopExit;
+ for (i = 1, loopExit = 0; i < 4; i++)
{
- r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, i - sSlotMachine->unk2E[0]);
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, i - sSlotMachine->unk2E[1]);
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, i - sp0);
- if (!sub_81037BC(r7, r6, r4) && (!sub_810378C(r7, r6, r4) || !(sSlotMachine->unk04 & 0x80)))
+ tag1 = GetNearbyTag(0, i - sSlotMachine->reelExtraTurns[0]); // why does this update with i
+ tag2 = GetNearbyTag(1, i - sSlotMachine->reelExtraTurns[1]);
+ tag3 = GetNearbyTag(2, i - extraTurns);
+ // if bit 7 of luckyFlags is unset...
+ //...and if all 3 tags match and they're not mixed 7s
+ if (!TagsDontMatchOrHaveAny7s(tag1, tag2, tag3) && (!AreTagsMixed777(tag1, tag2, tag3) || !(sSlotMachine->luckyFlags & LUCKY_BIAS_777)))
{
- r8++;
+ loopExit++;
break;
}
}
- if (r8 == 0)
+ if (loopExit == 0)
break;
- sp0++;
+ extraTurns++;
}
- sSlotMachine->unk2E[2] = sp0;
+ sSlotMachine->reelExtraTurns[2] = extraTurns;
}
-/*static */void sub_8103A78(void)
+static void DecideReelTurns_NoBiasTag_Reel3_Bet3(void)
{
- u8 r6;
- u8 r5;
- u8 r4;
- s16 r8;
+ u8 tag1;
+ u8 tag2;
+ u8 tag3;
+ s16 j;
s16 i;
- sub_8103910();
- if (sSlotMachine->unk34[1] != 0 && sSlotMachine->unk34[0] != sSlotMachine->unk34[1] && sSlotMachine->unk04 & 0x80)
+ DecideReelTurns_NoBiasTag_Reel3_Bet2();
+ if (sSlotMachine->winnerRows[1] != 0 && sSlotMachine->winnerRows[0] != sSlotMachine->winnerRows[1] && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
- r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[1] - sSlotMachine->unk2E[1]);
- if (sub_8103764(r6, r5))
+ tag1 = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]);
+ tag2 = GetNearbyTag(1, sSlotMachine->winnerRows[1] - sSlotMachine->reelExtraTurns[1]);
+ //..and if tags are mixed 7s...
+ if (AreTagsMixed77(tag1, tag2))
{
- r8 = 1;
- if (sSlotMachine->unk34[0] == 1)
- r8 = 3;
+ j = 1;
+ if (sSlotMachine->winnerRows[0] == 1)
+ j = 3;
for (i = 0; i < 5; i++)
{
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - (sSlotMachine->unk2E[2] + i));
- if (r6 == r4)
+ tag3 = GetNearbyTag(2, j - (sSlotMachine->reelExtraTurns[2] + i));
+ if (tag1 == tag3)
{
- sSlotMachine->unk2E[2] += i;
+ sSlotMachine->reelExtraTurns[2] += i;
break;
}
}
@@ -2355,79 +2430,80 @@ s16 sub_8102D5C(s16 a0)
}
while (1)
{
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - sSlotMachine->unk2E[0]);
- r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 3 - sSlotMachine->unk2E[2]);
- if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && sSlotMachine->unk04 & 0x80))
+ tag1 = GetNearbyTag(0, 1 - sSlotMachine->reelExtraTurns[0]);
+ tag2 = GetNearbyTag(1, 2 - sSlotMachine->reelExtraTurns[1]);
+ tag3 = GetNearbyTag(2, 3 - sSlotMachine->reelExtraTurns[2]);
+ if (TagsDontMatchOrHaveAny7s(tag1, tag2, tag3) || (AreTagsMixed777(tag1, tag2, tag3) && sSlotMachine->luckyFlags & LUCKY_BIAS_777))
break;
- sSlotMachine->unk2E[2]++;
+ sSlotMachine->reelExtraTurns[2]++;
}
while (1)
{
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - sSlotMachine->unk2E[0]);
- r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 1 - sSlotMachine->unk2E[2]);
- if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && sSlotMachine->unk04 & 0x80))
+ tag1 = GetNearbyTag(0, 3 - sSlotMachine->reelExtraTurns[0]);
+ tag2 = GetNearbyTag(1, 2 - sSlotMachine->reelExtraTurns[1]);
+ tag3 = GetNearbyTag(2, 1 - sSlotMachine->reelExtraTurns[2]);
+ if (TagsDontMatchOrHaveAny7s(tag1, tag2, tag3) || (AreTagsMixed777(tag1, tag2, tag3) && sSlotMachine->luckyFlags & LUCKY_BIAS_777))
break;
- sSlotMachine->unk2E[2]++;
+ sSlotMachine->reelExtraTurns[2]++;
}
}
-/*static */void sub_8103C14(u8 a0)
+static void sub_8103C14(u8 a0)
{
u8 taskId = CreateTask(sub_8103C48, 5);
gTasks[taskId].data[15] = a0;
sub_8103C48(taskId);
}
-/*static */void sub_8103C48(u8 taskId)
+static void sub_8103C48(u8 taskId)
{
- gUnknown_083ECBA0[gTasks[taskId].data[0]](gTasks + taskId, taskId);
+ gUnknown_083ECBA0[gTasks[taskId].data[0]](&gTasks[taskId], taskId);
}
-/*static */void sub_8103C78(struct Task *task, u8 taskId)
+static void sub_8103C78(struct Task *task, u8 taskId)
{
sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x62, 0x63, 0x72, 0x73);
task->data[0]++;
}
-/*static */void sub_8103CAC(struct Task *task, u8 taskId)
+static void sub_8103CAC(struct Task *task, u8 taskId)
{
if (++task->data[1] > 11)
task->data[0]++;
}
-/*static */void sub_8103CC8(struct Task *task, u8 taskId)
+static void sub_8103CC8(struct Task *task, u8 taskId)
{
sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x42, 0x43, 0x52, 0x53);
DestroyTask(taskId);
}
-/*static */void sub_8103D00(u8 a0)
+static void LoadLitTile(u8 tileId)
{
- LoadPalette(gUnknown_083EDD08[a0], gUnknown_083EDD30[a0], 2);
+ LoadPalette(gUnknown_083EDD08[tileId], gUnknown_083EDD30[tileId], 2);
}
-/*static */void sub_8103D28(u8 a0)
+static void sub_8103D28(u8 a0)
{
LoadPalette(gUnknown_083EDD1C[a0], gUnknown_083EDD30[a0], 2);
}
-/*static */void sub_8103D50(u8 a0)
+// light up the value bet by the player
+static void LoadBetTiles(u8 betVal)
{
u8 i;
- for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
- sub_8103D00(gUnknown_083EDD35[a0][i]);
+ for (i = 0; i < gNumberBettingTiles[betVal]; i++)
+ LoadLitTile(gBettingTilesId[betVal][i]);
}
-/*static */void sub_8103D8C(u8 a0)
+static void sub_8103D8C(u8 a0)
{
u8 i;
- for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
- sub_8103D28(gUnknown_083EDD35[a0][i]);
+ for (i = 0; i < gNumberBettingTiles[a0]; i++)
+ sub_8103D28(gBettingTilesId[a0][i]);
}
-/*static */void sub_8103DC8(void)
+static void sub_8103DC8(void)
{
u8 i;
for (i = 0; i < 5; i++)
@@ -2438,7 +2514,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8103E04(u8 a0)
+static void sub_8103E04(u8 a0)
{
struct Sprite *sprite = gSprites + sSlotMachine->unk44[a0];
sprite->data[1] = 1;
@@ -2449,7 +2525,8 @@ s16 sub_8102D5C(s16 a0)
sprite->data[7] = 0;
}
-/*static */bool8 sub_8103E38(void)
+// something with payout digits
+static bool8 sub_8103E38(void)
{
u8 i;
for (i = 0; i < 5; i++)
@@ -2461,7 +2538,7 @@ s16 sub_8102D5C(s16 a0)
return TRUE;
}
-/*static */bool8 sub_8103E7C(void)
+static bool8 sub_8103E7C(void)
{
u8 i;
for (i = 0; i < 5; i++)
@@ -2472,7 +2549,7 @@ s16 sub_8102D5C(s16 a0)
return TRUE;
}
-/*static */bool8 sub_8103EAC(u8 spriteId)
+static bool8 sub_8103EAC(u8 spriteId)
{
struct Sprite *sprite = gSprites + spriteId;
if (!sprite->data[1])
@@ -2482,7 +2559,7 @@ s16 sub_8102D5C(s16 a0)
return sprite->data[7];
}
-/*static */void sub_8103EE4(struct Sprite *sprite)
+static void sub_8103EE4(struct Sprite *sprite)
{
s16 r4;
if (sprite->data[1])
@@ -2511,14 +2588,14 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8103F70(void)
+static void sub_8103F70(void)
{
u8 taskId = CreateTask(sub_8103FE8_, 6);
gTasks[taskId].data[3] = 1;
sub_8103FE8_(taskId);
}
-/*static */bool8 sub_8103FA0(void)
+static bool8 sub_8103FA0(void)
{
u8 taskId = FindTaskIdByFunc(sub_8103FE8_);
if (!gTasks[taskId].data[2])
@@ -2530,9 +2607,9 @@ s16 sub_8102D5C(s16 a0)
return FALSE;
}
-/*static */void sub_8103FE8_(u8 taskId)
+static void sub_8103FE8_(u8 taskId)
{
- struct Task *task = gTasks + taskId;
+ struct Task *task = &gTasks[taskId];
if (!task->data[1]--)
{
task->data[1] = 4;
@@ -2543,49 +2620,49 @@ s16 sub_8102D5C(s16 a0)
LoadPalette(gUnknown_083EDDA0[task->data[2]], 0x10, 0x20);
}
-/*static */void sub_8104048(void)
+static void GameplayTask_PikaPower(void)
{
- sSlotMachine->unk3E = CreateTask(sub_81040E8, 8);
+ sSlotMachine->unkTaskPointer3E = CreateTask(sub_81040E8, 8);
}
-/*static */void sub_8104064(u8 pikaPower)
+static void DisplayPikaPower(u8 pikaPower)
{
- struct Task *task = gTasks + sSlotMachine->unk3E;
- sub_812D394(task);
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3E];
+ ClearTaskDataFields_2orHigher(task);
task->data[0] = 1;
task->data[1]++;
- task->data[15] = 1;
+ task->data[15] = 1; // points to a reelIndex
}
-/*static */void sub_8104098(void)
+static void sub_8104098(void)
{
- struct Task *task = gTasks + sSlotMachine->unk3E;
- sub_812D394(task);
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3E];
+ ClearTaskDataFields_2orHigher(task);
task->data[0] = 3;
- task->data[15] = 1;
+ task->data[15] = 1; // points to a reelIndex
}
-/*static */bool8 sub_81040C8(void)
+static bool8 sub_81040C8(void)
{
- return gTasks[sSlotMachine->unk3E].data[15];
+ return gTasks[sSlotMachine->unkTaskPointer3E].data[15];
}
-/*static */void sub_81040E8(u8 taskId)
+static void sub_81040E8(u8 taskId)
{
- gUnknown_083ECBB4[gTasks[taskId].data[0]](gTasks + taskId);
+ gUnknown_083ECBB4[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-/*static */void nullsub_68(struct Task *task)
+static void nullsub_68(struct Task *task)
{
}
-/*static */void sub_810411C(struct Task *task)
+static void sub_810411C(struct Task *task)
{
task->data[2] = sub_8105B1C((task->data[1] << 3) + 20, 20);
task->data[0]++;
}
-/*static */void sub_8104144(struct Task *task)
+static void sub_8104144(struct Task *task)
{
if (gSprites[task->data[2]].data[7])
{
@@ -2596,15 +2673,15 @@ s16 sub_8102D5C(s16 a0)
r3 = 1, r2 = 1;
else if (task->data[1] == 16)
r3 = 2, r2 = 2;
- gUnknown_0203AACC[r2] = gUnknown_083ECBC4[r3][0];
- LoadBgTilemap(2, &gUnknown_0203AACC[r2], 2, r5 + 0x40);
+ sSelectedPikaPowerTile[r2] = pikaPowerTileTable[r3][0];
+ LoadBgTilemap(2, &sSelectedPikaPowerTile[r2], 2, r5 + 0x40);
sub_8105B88(task->data[2]);
task->data[0] = 0;
- task->data[15] = 0;
+ task->data[15] = 0; // points to a reelIndex
}
}
-/*static */void sub_81041AC(struct Task *task)
+static void sub_81041AC(struct Task *task)
{
s16 r5 = task->data[1] + 2;
s16 r3 = 0;
@@ -2615,8 +2692,8 @@ s16 sub_8102D5C(s16 a0)
r3 = 2, r2 = 2;
if (task->data[2] == 0)
{
- gUnknown_0203AACC[r2] = gUnknown_083ECBC4[r3][1];
- LoadBgTilemap(2, &gUnknown_0203AACC[r2], 2, r5 + 0x40);
+ sSelectedPikaPowerTile[r2] = pikaPowerTileTable[r3][1];
+ LoadBgTilemap(2, &sSelectedPikaPowerTile[r2], 2, r5 + 0x40);
task->data[1]--;
}
if (++task->data[2] >= 20)
@@ -2628,7 +2705,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_812D394(struct Task *task)
+static void ClearTaskDataFields_2orHigher(struct Task *task)
{
u8 i;
@@ -2636,7 +2713,8 @@ s16 sub_8102D5C(s16 a0)
task->data[i] = 0;
}
-/*static */void sub_810423C(u8 pikaPower)
+// possibly load tiles for pika power meter
+static void sub_810423C(u8 pikaPower)
{
s16 i;
s16 r3 = 0, r1 = 0;
@@ -2646,10 +2724,10 @@ s16 sub_8102D5C(s16 a0)
r3 = 0, r1 = 0;
if (i == 0)
r3 = 1, r1 = 1;
- else if (i == 15)
+ else if (i == 15) // pikaPower meter is full
r3 = 2, r1 = 2;
- gUnknown_0203AACC[r1] = gUnknown_083ECBC4[r3][0];
- LoadBgTilemap(2, &gUnknown_0203AACC[r1], 2, r4 + 0x40);
+ sSelectedPikaPowerTile[r1] = pikaPowerTileTable[r3][0];
+ LoadBgTilemap(2, &sSelectedPikaPowerTile[r1], 2, r4 + 0x40);
}
for (; i < 16; i++, r4++)
{
@@ -2658,39 +2736,43 @@ s16 sub_8102D5C(s16 a0)
r3 = 1, r1 = 1;
else if (i == 15)
r3 = 2, r1 = 2;
- gUnknown_0203AACC[r1] = gUnknown_083ECBC4[r3][1];
- LoadBgTilemap(2, &gUnknown_0203AACC[r1], 2, r4 + 0x40);
+ sSelectedPikaPowerTile[r1] = pikaPowerTileTable[r3][1];
+ LoadBgTilemap(2, &sSelectedPikaPowerTile[r1], 2, r4 + 0x40);
}
- gTasks[sSlotMachine->unk3E].data[1] = pikaPower;
+ gTasks[sSlotMachine->unkTaskPointer3E].data[1] = pikaPower;
}
-/*static */void sub_810430C(void)
+static void BeginReeltime(void)
{
- u8 taskId = CreateTask(sub_810434C, 7);
- sub_810434C(taskId);
+ u8 taskId = CreateTask(RunReeltimeActions, 7);
+ RunReeltimeActions(taskId);
}
-/*static */bool8 sub_810432C(void)
+static bool8 IsFinalTask_RunReelTimeActions(void)
{
- if (FindTaskIdByFunc(sub_810434C) == 0xFF)
+ if (FindTaskIdByFunc(RunReeltimeActions) == TAIL_SENTINEL)
return TRUE;
return FALSE;
}
-/*static */void sub_810434C(u8 taskId)
+static void RunReeltimeActions(u8 taskId)
{
- gUnknown_083ECBD0[gTasks[taskId].data[0]](gTasks + taskId);
+ // task.data[0] points to which ReelTimeAction to do, and starts at 0
+ // task.data[1] has something to do with the threshold
+ // task.data[4] says how many pixels to advance the reel
+ // task.data[5] is a timer
+ ReeltimeActions[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-/*static */void sub_810437C(struct Task *task)
+static void ReeltimeAction0(struct Task *task)
{
- sSlotMachine->unk0A = 0;
- sSlotMachine->unk14 = 0;
- sSlotMachine->unk16 = 0;
+ sSlotMachine->fairRollsLeft = 0;
+ sSlotMachine->reeltimePixelOffset = 0;
+ sSlotMachine->reeltimePosition = 0;
task->data[0]++;
task->data[1] = 0;
task->data[2] = 30;
- task->data[4] = 1280;
+ task->data[4] = 1280; // reel speed
gSpriteCoordOffsetX = 0;
gSpriteCoordOffsetY = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
@@ -2701,12 +2783,12 @@ s16 sub_8102D5C(s16 a0)
sub_81052EC();
sub_81053A0();
sub_810545C();
- sub_8102680();
+ GetReeltimeDraw();
StopMapMusic();
PlayNewMapMusic(MUS_BD_TIME);
}
-/*static */void sub_81043EC(struct Task *task)
+static void ReeltimeAction1(struct Task *task)
{
s16 r3;
gSpriteCoordOffsetX -= 8;
@@ -2724,21 +2806,21 @@ s16 sub_8102D5C(s16 a0)
task->data[0]++;
task->data[3] = 0;
}
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
}
-/*static */void sub_8104468(struct Task *task)
+static void ReeltimeAction2(struct Task *task)
{
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
if (++task->data[5] >= 60)
{
task->data[0]++;
- sub_8105578();
- sub_81056F0();
+ CreateReelTimeSprites1();
+ CreateReelTimeSprite2();
}
}
-/*static */void sub_8104498(struct Task *task)
+static void ReeltimeAction3(struct Task *task)
{
int r5;
u8 sp0[ARRAY_COUNT(gUnknown_085A75C0)];
@@ -2749,12 +2831,14 @@ s16 sub_8102D5C(s16 a0)
memcpy(sp4, gUnknown_085A75C4, sizeof(gUnknown_085A75C4));
memcpy(spC, gUnknown_085A75CC, sizeof(gUnknown_085A75CC));
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
+ // gradually slow down the reel
task->data[4] -= 4;
r5 = 4 - (task->data[4] >> 8);
sub_8105688(sp4[r5]);
sub_81057E8(spC[r5]);
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, sp0[r5]);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, sp0[r5]);
+ // once speed goes below 256, go to next ReelTimeAction and keep the speed level
if (task->data[4] <= 0x100)
{
task->data[0]++;
@@ -2763,21 +2847,21 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104548(struct Task *task)
+static void ReeltimeAction4(struct Task *task)
{
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
if (++task->data[5] >= 80)
{
task->data[0]++;
task->data[5] = 0;
sub_81057E8(2);
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 3);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 3);
}
}
-/*static */void sub_8104598(struct Task *task)
+static void ReeltimeAction5(struct Task *task)
{
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
task->data[4] = (u8)task->data[4] + 0x80;
if (++task->data[5] >= 80)
{
@@ -2786,23 +2870,23 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81045CC(struct Task *task)
+static void ReeltimeAction6(struct Task *task)
{
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
task->data[4] = (u8)task->data[4] + 0x40;
if (++task->data[5] >= 40)
{
task->data[5] = 0;
- if (sSlotMachine->unk05)
+ if (sSlotMachine->reelTimeDraw)
{
- if (sSlotMachine->unk0A <= task->data[6])
+ if (sSlotMachine->fairRollsLeft <= task->data[6])
task->data[0]++;
}
else if (task->data[6] > 3)
{
task->data[0]++;
}
- else if (sub_81026DC(task->data[6]))
+ else if (SkipToReeltimeAction14(task->data[6]))
{
task->data[0] = 14;
}
@@ -2810,28 +2894,28 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_810463C(struct Task *task)
+static void ReelTimeAction_LandOnOutcome(struct Task *task)
{
- s16 r5 = sSlotMachine->unk14 % 20;
- if (r5)
+ s16 reeltimePixelOffset = sSlotMachine->reeltimePixelOffset % 20;
+ if (reeltimePixelOffset)
{
- r5 = sub_8102D5C(task->data[4] >> 8);
+ reeltimePixelOffset = AdvanceReeltimeReelToNextTag(task->data[4] >> 8);
task->data[4] = (u8)task->data[4] + 0x40;
}
- else if (sub_8102C48(1) != sSlotMachine->unk05)
+ else if (GetNearbyReelTimeTag(1) != sSlotMachine->reelTimeDraw)
{
- sub_8102D28(task->data[4] >> 8);
- r5 = sSlotMachine->unk14 % 20;
+ AdvanceReeltimeReel(task->data[4] >> 8);
+ reeltimePixelOffset = sSlotMachine->reeltimePixelOffset % 20;
task->data[4] = (u8)task->data[4] + 0x40;
}
- if (r5 == 0 && sub_8102C48(1) == sSlotMachine->unk05)
+ if (reeltimePixelOffset == 0 && GetNearbyReelTimeTag(1) == sSlotMachine->reelTimeDraw)
{
- task->data[4] = 0;
+ task->data[4] = 0; // stop moving
task->data[0]++;
}
}
-/*static */void sub_81046C0(struct Task *task)
+static void ReeltimeAction8(struct Task *task)
{
if (++task->data[4] >= 60)
{
@@ -2839,17 +2923,17 @@ s16 sub_8102D5C(s16 a0)
sub_81056C0();
sub_8105804();
task->data[0]++;
- if(sSlotMachine->unk05 == 0)
+ if(sSlotMachine->reelTimeDraw == 0)
{
task->data[4] = 0xa0;
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 5);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 5);
PlayFanfare(MUS_ME_ZANNEN);
}
else
{
task->data[4] = 0xc0;
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 4);
- gSprites[sSlotMachine->unk3F].animCmdIndex = 0;
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 4);
+ gSprites[sSlotMachine->reelTimeSprite3F].animCmdIndex = 0;
if (sSlotMachine->pikaPower)
{
sub_8104098();
@@ -2860,13 +2944,13 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104764(struct Task *task)
+static void ReeltimeAction9(struct Task *task)
{
if ((task->data[4] == 0 || --task->data[4] == 0) && !sub_81040C8())
task->data[0]++;
}
-/*static */void sub_8104794(struct Task *task)
+static void ReeltimeAction10(struct Task *task)
{
s16 r4;
gSpriteCoordOffsetX -= 8;
@@ -2880,53 +2964,53 @@ s16 sub_8102D5C(s16 a0)
task->data[0]++;
}
-/*static */void sub_81047EC(struct Task *task)
+static void ReeltimeAction11(struct Task *task)
{
- sSlotMachine->unk0B = 0;
- sSlotMachine->unk0A = sSlotMachine->unk05;
+ sSlotMachine->fairRollsUsed = 0;
+ sSlotMachine->fairRollsLeft = sSlotMachine->reelTimeDraw;
gSpriteCoordOffsetX = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
- sSlotMachine->unk1A = 8;
+ sSlotMachine->reelIncrement = 8;
sub_810514C();
sub_81054B8();
sub_8105524();
PlayNewMapMusic(sSlotMachine->backupMapMusic);
- if (sSlotMachine->unk0A == 0)
+ if (sSlotMachine->fairRollsLeft == 0)
{
- DestroyTask(FindTaskIdByFunc(sub_810434C));
+ DestroyTask(FindTaskIdByFunc(RunReeltimeActions));
}
else
{
sub_8104CAC(4);
- task->data[1] = dp15_jump_random_unknown();
+ task->data[1] = SlowReelSpeed();
task->data[2] = 0;
task->data[3] = 0;
task->data[0]++;
}
}
-/*static */void sub_8104860(struct Task *task)
+static void ReeltimeAction12(struct Task *task)
{
- if (sSlotMachine->unk1A == task->data[1])
+ if (sSlotMachine->reelIncrement == task->data[1])
task->data[0]++;
- else if (sSlotMachine->unk1C[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
- sSlotMachine->unk1A >>= 1;
+ else if (sSlotMachine->reelPixelOffsets[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
+ sSlotMachine->reelIncrement >>= 1;
}
-/*static */void sub_81048A8(struct Task *task)
+static void ReeltimeAction13(struct Task *task)
{
if (sub_8104E18())
- DestroyTask(FindTaskIdByFunc(sub_810434C));
+ DestroyTask(FindTaskIdByFunc(RunReeltimeActions));
}
-/*static */void sub_81048CC(struct Task *task)
+static void ReeltimeAction14(struct Task *task)
{
sub_81054B8();
sub_81056C0();
sub_8105804();
sub_8105854();
gSprites[sSlotMachine->unk4E[0]].invisible = TRUE;
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 5);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 5);
task->data[0]++;
task->data[4] = 4;
task->data[5] = 0;
@@ -2935,7 +3019,7 @@ s16 sub_8102D5C(s16 a0)
PlaySE(SE_W153);
}
-/*static */void sub_8104940(struct Task *task)
+static void ReeltimeAction15(struct Task *task)
{
gSpriteCoordOffsetY = task->data[4];
SetGpuReg(REG_OFFSET_BG1VOFS, task->data[4]);
@@ -2955,7 +3039,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81049C8(struct Task *task)
+static void ReeltimeAction16(struct Task *task)
{
gSpriteCoordOffsetY = 0;
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
@@ -2966,7 +3050,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81049F8(struct Task *task)
+static void ReeltimeAction17(struct Task *task)
{
gSpriteCoordOffsetX = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
@@ -2975,20 +3059,20 @@ s16 sub_8102D5C(s16 a0)
sub_8105554();
sub_8105524();
sub_81059B8();
- DestroyTask(FindTaskIdByFunc(sub_810434C));
+ DestroyTask(FindTaskIdByFunc(RunReeltimeActions));
}
-/*static */void sub_8104A40(s16 a0, s16 a1)
+static void sub_8104A40(s16 a0, s16 a1)
{
s16 i;
for (i = 4; i < 15; i++)
{
- LoadBgTilemap(1, &sReelTimeWindowTilemap[a1 + (i - 4) * 20], 2, 32 * i + a0);
+ LoadBgTilemap(1, &gReelTimeWindowTilemap[a1 + (i - 4) * 20], 2, 32 * i + a0);
}
}
-/*static */void sub_8104A88(s16 a0)
+static void sub_8104A88(s16 a0)
{
u8 i;
@@ -2998,61 +3082,61 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104AB8(u8 a0)
+static void OpenInfoBox(u8 seemsUnused)
{
- u8 taskId = CreateTask(sub_8104B0C, 1);
- gTasks[taskId].data[1] = a0;
- sub_8104B0C(taskId);
+ u8 taskId = CreateTask(RunInfoBoxActions, 1);
+ gTasks[taskId].data[1] = seemsUnused;
+ RunInfoBoxActions(taskId);
}
-/*static */bool8 sub_8104AEC(void)
+static bool8 IsInfoBoxClosed(void)
{
- if (FindTaskIdByFunc(sub_8104B0C) == 0xFF)
+ if (FindTaskIdByFunc(RunInfoBoxActions) == 0xFF)
return TRUE;
else
return FALSE;
}
-/*static */void sub_8104B0C(u8 taskId)
+static void RunInfoBoxActions(u8 taskId)
{
- gUnknown_083ECC30[gTasks[taskId].data[0]](gTasks + taskId);
+ InfoBoxActions[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-/*static */void sub_8104B3C(struct Task *task)
+static void InfoBox_FadeIn(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
task->data[0]++;
}
-/*static */void sub_8104B60(struct Task *task)
+static void InfoBox_WaitForFade(struct Task *task)
{
if (!gPaletteFade.active)
task->data[0]++;
}
-/*static */void sub_8104B80(struct Task *task)
+static void InfoBox_8104B80(struct Task *task)
{
sub_8104DA4();
sub_81065DC();
AddWindow(&gUnknown_085A7444);
PutWindowTilemap(1);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
task->data[0]++;
}
-/*static */void sub_812DD78(struct Task *task)
+static void InfoBox_AddText(struct Task *task)
{
- AddTextPrinterParameterized3(1, 1, 2, 5, gUnknown_085A744C, 0, gText_ReelTimeHelp);
+ AddTextPrinterParameterized3(1, 1, 2, 5, gColors_ReeltimeHelp, 0, gText_ReelTimeHelp);
CopyWindowToVram(1, 3);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
task->data[0]++;
}
-/*static */void sub_8104BC8(struct Task *task)
+static void InfoBox_AwaitPlayerInput(struct Task *task)
{
if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON))
{
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
ClearWindowTilemap(1);
CopyWindowToVram(1, 1);
RemoveWindow(1);
@@ -3061,51 +3145,52 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_812DE14(struct Task *task)
+static void InfoBox_812DE14(struct Task *task)
{
sub_812F968();
ShowBg(3);
task->data[0]++;
}
-/*static */void sub_812DE30(struct Task *task)
+static void InfoBox_812DE30(struct Task *task)
{
sub_8104CAC(task->data[1]);
task->data[0]++;
}
-/*static */void sub_8104BFC(struct Task *task)
+static void InfoBox_8104BFC(struct Task *task)
{
sub_810423C(sSlotMachine->pikaPower);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
task->data[0]++;
}
-/*static */void sub_8104C44(struct Task *task)
+static void InfoBox_FreeTask(struct Task *task)
{
- DestroyTask(FindTaskIdByFunc(sub_8104B0C));
+ DestroyTask(FindTaskIdByFunc(RunInfoBoxActions));
}
-/*static */void sub_8104C5C(void)
+static void sub_8104C5C(void)
{
u8 i;
struct Task *task;
i = CreateTask(sub_8104E74_, 3);
- sSlotMachine->unk3D = i;
- task = gTasks + i;
+ sSlotMachine->unkTaskPointer3D = i;
+ task = &gTasks[i];
task->data[1] = -1;
for (i = 4; i < 16; i++)
task->data[i] = MAX_SPRITES;
}
-/*static */void sub_8104CAC(u8 arg0)
+// possibly initialize each wheel
+static void sub_8104CAC(u8 arg0)
{
u8 i;
struct Task *task;
sub_8104DA4();
- task = gTasks + sSlotMachine->unk3D;
+ task = &gTasks[sSlotMachine->unkTaskPointer3D];
task->data[1] = arg0;
for (i = 0; gUnknown_083ED048[arg0][i].unk00 != 0xFF; i++)
@@ -3120,10 +3205,10 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4)
+static void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4)
{
u8 i;
- struct Task *task = gTasks + sSlotMachine->unk3D;
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D];
for (i = 4; i < 16; i++)
{
if (task->data[i] == MAX_SPRITES)
@@ -3134,26 +3219,26 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104DA4(void)
+static void sub_8104DA4(void)
{
u8 i;
- struct Task *task = gTasks + sSlotMachine->unk3D;
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D];
if ((u16)task->data[1] != 0xFFFF)
gUnknown_083ED064[task->data[1]]();
for (i = 4; i < 16; i++)
{
if (task->data[i] != MAX_SPRITES)
{
- DestroySprite(gSprites + task->data[i]);
+ DestroySprite(&gSprites[task->data[i]]);
task->data[i] = MAX_SPRITES;
}
}
}
-/*static */bool8 sub_8104E18(void)
+static bool8 sub_8104E18(void)
{
u8 i;
- struct Task *task = gTasks + sSlotMachine->unk3D;
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D];
for (i = 4; i < 16; i++)
{
if (task->data[i] != MAX_SPRITES)
@@ -3165,16 +3250,16 @@ s16 sub_8102D5C(s16 a0)
return TRUE;
}
-/*static */void sub_8104E74_(u8 taskId)
+static void sub_8104E74_(u8 taskId)
{
- gUnknown_083ECC54[gTasks[taskId].data[0]](gTasks + taskId);
+ gUnknown_083ECC54[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-/*static */void nullsub_69(struct Task *task)
+static void nullsub_69(struct Task *task)
{
}
-/*static */void sub_8104EA8(void)
+static void sub_8104EA8(void)
{
s16 i;
s16 j;
@@ -3194,14 +3279,14 @@ s16 sub_8102D5C(s16 a0)
/*static */void sub_8104F18(struct Sprite *sprite)
{
- sprite->data[2] = sSlotMachine->unk1C[sprite->data[0]] + sprite->data[1];
+ sprite->data[2] = sSlotMachine->reelPixelOffsets[sprite->data[0]] + sprite->data[1];
sprite->data[2] %= 120;
- sprite->pos1.y = sSlotMachine->unk22[sprite->data[0]] + 28 + sprite->data[2];
- sprite->sheetTileStart = GetSpriteTileStartByTag(GetTagOfReelSymbolOnScreenAtPos(sprite->data[0], sprite->data[2] / 24));
+ sprite->pos1.y = sSlotMachine->reelPixelOffsetsWhileStopping[sprite->data[0]] + 28 + sprite->data[2];
+ sprite->sheetTileStart = GetSpriteTileStartByTag(GetNearbyTag_Quantized(sprite->data[0], sprite->data[2] / 24));
SetSpriteSheetFrameTileNum(sprite);
}
-/*static */void sub_8104F8C(void)
+static void sub_8104F8C(void)
{
s16 i;
s16 x;
@@ -3212,7 +3297,7 @@ s16 sub_8102D5C(s16 a0)
sub_8104FF4(x, 23, 1, i);
}
-/*static */void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3)
+static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3)
{
struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED42C, x, y, 13);
sprite->oam.priority = 2;
@@ -3238,44 +3323,44 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81050C4(void)
+static void sub_81050C4(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED444, 0x58, 0x48, 15);
gSprites[spriteId].oam.priority = 3;
SetSubspriteTables(gSprites + spriteId, gSubspriteTables_83ED704);
}
-/*static */void sub_8105100(void)
+static void sub_8105100(void)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
- if (gUnknown_0203AAE4 == NULL)
- gUnknown_0203AAE4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
-
- gUnknown_0203AAE4[0].data = gUnknown_0203AAD8 + (0 * 0x800);
- gUnknown_0203AAE4[0].size = 0x800;
- gUnknown_0203AAE4[1].data = gUnknown_0203AAD8 + (1 * 0x800);
- gUnknown_0203AAE4[1].size = 0x800;
- gUnknown_0203AAE4[2].data = gUnknown_0203AAD8 + (2 * 0x800);
- gUnknown_0203AAE4[2].size = 0x800;
- gUnknown_0203AAE4[3].data = gUnknown_0203AAD8 + (3 * 0x800);
- gUnknown_0203AAE4[3].size = 0x800;
- gUnknown_0203AAE4[4].data = gUnknown_0203AAD8 + (4 * 0x800);
- gUnknown_0203AAE4[4].size = 0x800;
+ if (sUnknown_0203AAE4 == NULL)
+ sUnknown_0203AAE4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
+
+ sUnknown_0203AAE4[0].data = sUnknown_0203AAD8 + (0 * 0x800);
+ sUnknown_0203AAE4[0].size = 0x800;
+ sUnknown_0203AAE4[1].data = sUnknown_0203AAD8 + (1 * 0x800);
+ sUnknown_0203AAE4[1].size = 0x800;
+ sUnknown_0203AAE4[2].data = sUnknown_0203AAD8 + (2 * 0x800);
+ sUnknown_0203AAE4[2].size = 0x800;
+ sUnknown_0203AAE4[3].data = sUnknown_0203AAD8 + (3 * 0x800);
+ sUnknown_0203AAE4[3].size = 0x800;
+ sUnknown_0203AAE4[4].data = sUnknown_0203AAD8 + (4 * 0x800);
+ sUnknown_0203AAE4[4].size = 0x800;
spriteTemplate = gSpriteTemplate_83ED45C;
- spriteTemplate.images = gUnknown_0203AAE4;
+ spriteTemplate.images = sUnknown_0203AAE4;
spriteId = CreateSprite(&spriteTemplate, 280, 80, 1);
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].coordOffsetEnabled = TRUE;
- sSlotMachine->unk3F = spriteId;
+ sSlotMachine->reelTimeSprite3F = spriteId;
}
-/*static */void sub_810514C(void)
+static void sub_810514C(void)
{
- DestroySprite(gSprites + sSlotMachine->unk3F);
- if (gUnknown_0203AAE4 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAE4);
+ DestroySprite(gSprites + sSlotMachine->reelTimeSprite3F);
+ if (sUnknown_0203AAE4 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAE4);
}
/*static */void sub_8105170(struct Sprite *sprite)
@@ -3289,19 +3374,19 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81051C0(void)
+static void sub_81051C0(void)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
struct Sprite *sprite;
- if (gUnknown_0203AAE8 == NULL)
- gUnknown_0203AAE8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ if (sUnknown_0203AAE8 == NULL)
+ sUnknown_0203AAE8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAE8[0].data = gUnknown_0203AAD8 + 0x2800;
- gUnknown_0203AAE8[0].size = 0x300;
+ sUnknown_0203AAE8[0].data = sUnknown_0203AAD8 + 0x2800;
+ sUnknown_0203AAE8[0].size = 0x300;
spriteTemplate = gSpriteTemplate_83ED474;
- spriteTemplate.images = gUnknown_0203AAE8;
+ spriteTemplate.images = sUnknown_0203AAE8;
spriteId = CreateSprite(&spriteTemplate, 368, 52, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
@@ -3309,13 +3394,13 @@ s16 sub_8102D5C(s16 a0)
SetSubspriteTables(sprite, gSubspriteTables_83ED73C);
sSlotMachine->unk49[0] = spriteId;
- if (gUnknown_0203AAEC == NULL)
- gUnknown_0203AAEC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ if (sUnknown_0203AAEC == NULL)
+ sUnknown_0203AAEC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAEC[0].data = gUnknown_0203AAD8 + 0x2800 + 0x300;
- gUnknown_0203AAEC[0].size = 0x500;
+ sUnknown_0203AAEC[0].data = sUnknown_0203AAD8 + 0x2800 + 0x300;
+ sUnknown_0203AAEC[0].size = 0x500;
spriteTemplate = gSpriteTemplate_83ED48C;
- spriteTemplate.images = gUnknown_0203AAEC;
+ spriteTemplate.images = sUnknown_0203AAEC;
spriteId = CreateSprite(&spriteTemplate, 368, 84, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
@@ -3324,19 +3409,19 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->unk49[1] = spriteId;
}
-/*static */void sub_8105284_(void)
+static void sub_8105284_(void)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
struct Sprite *sprite;
- if (gUnknown_0203AAF0 == NULL)
- gUnknown_0203AAF0 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ if (sUnknown_0203AAF0 == NULL)
+ sUnknown_0203AAF0 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAF0[0].data = gUnknown_0203AAD8 + 0x3000;
- gUnknown_0203AAF0[0].size = 0x600;
+ sUnknown_0203AAF0[0].data = sUnknown_0203AAD8 + 0x3000;
+ sUnknown_0203AAF0[0].size = 0x600;
spriteTemplate = gSpriteTemplate_83ED4A4;
- spriteTemplate.images = gUnknown_0203AAF0;
+ spriteTemplate.images = sUnknown_0203AAF0;
spriteId = CreateSprite(&spriteTemplate, 0xa8 - gSpriteCoordOffsetX, 0x50, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
@@ -3345,7 +3430,7 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->unk42 = spriteId;
}
-/*static */void sub_81052EC(void)
+static void sub_81052EC(void)
{
u8 i;
s16 r5;
@@ -3362,13 +3447,13 @@ s16 sub_8102D5C(s16 a0)
/*static */void sub_810535C(struct Sprite *sprite)
{
- s16 r0 = (u16)(sSlotMachine->unk14 + sprite->data[7]);
+ s16 r0 = (u16)(sSlotMachine->reeltimePixelOffset + sprite->data[7]);
r0 %= 40;
sprite->pos1.y = r0 + 59;
- StartSpriteAnimIfDifferent(sprite, sub_8102C48(r0 / 20));
+ StartSpriteAnimIfDifferent(sprite, GetNearbyReelTimeTag(r0 / 20));
}
-/*static */void sub_81053A0(void)
+static void sub_81053A0(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3385,7 +3470,7 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->unk4E[1] = spriteId;
}
-/*static */void sub_810545C(void)
+static void sub_810545C(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3395,7 +3480,7 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->unk40 = spriteId;
}
-/*static */void sub_81054B8(void)
+static void sub_81054B8(void)
{
u8 i;
@@ -3403,16 +3488,16 @@ s16 sub_8102D5C(s16 a0)
for (i = 0; i < 2; i++)
DestroySprite(&gSprites[sSlotMachine->unk49[i]]);
- if (gUnknown_0203AAE8 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAE8);
- if (gUnknown_0203AAEC != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAEC);
+ if (sUnknown_0203AAE8 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAE8);
+ if (sUnknown_0203AAEC != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAEC);
for (i = 0; i < 3; i++)
DestroySprite(&gSprites[sSlotMachine->unk4B[i]]);
}
-/*static */void sub_8105524(void)
+static void sub_8105524(void)
{
u8 i;
@@ -3420,20 +3505,21 @@ s16 sub_8102D5C(s16 a0)
DestroySprite(&gSprites[sSlotMachine->unk4E[i]]);
}
-/*static */void sub_8105554(void)
+static void sub_8105554(void)
{
DestroySprite(&gSprites[sSlotMachine->unk42]);
- if (gUnknown_0203AAF0 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAF0);
+ if (sUnknown_0203AAF0 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAF0);
}
-/*static */void sub_8105578(void)
+// TODO: check if this is true
+static void CreateReelTimeSprites1(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5);
struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->hFlip = TRUE;
- sSlotMachine->unk50[0] = spriteId;
+ sSlotMachine->reelTimeSprites1[0] = spriteId;
sprite->data[0] = 8;
sprite->data[1] = -1;
sprite->data[2] = -1;
@@ -3442,7 +3528,7 @@ s16 sub_8102D5C(s16 a0)
spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
- sSlotMachine->unk50[1] = spriteId;
+ sSlotMachine->reelTimeSprites1[1] = spriteId;
sprite->data[1] = 1;
sprite->data[2] = -1;
sprite->data[7] = 0x20;
@@ -3470,21 +3556,21 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105688(s16 a0)
+static void sub_8105688(s16 a0)
{
- gSprites[sSlotMachine->unk50[0]].data[7] = a0;
- gSprites[sSlotMachine->unk50[1]].data[7] = a0;
+ gSprites[sSlotMachine->reelTimeSprites1[0]].data[7] = a0;
+ gSprites[sSlotMachine->reelTimeSprites1[1]].data[7] = a0;
}
-/*static */void sub_81056C0(void)
+static void sub_81056C0(void)
{
u8 i;
for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[sSlotMachine->unk50[i]]);
+ DestroySprite(&gSprites[sSlotMachine->reelTimeSprites1[i]]);
}
-/*static */void sub_81056F0(void)
+static void CreateReelTimeSprite2(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x48, 0x50, 3);
gSprites[spriteId].oam.priority = 1;
@@ -3492,12 +3578,12 @@ s16 sub_8102D5C(s16 a0)
gSprites[spriteId].data[5] = 0;
gSprites[spriteId].data[6] = 16;
gSprites[spriteId].data[7] = 8;
- sSlotMachine->unk52[0] = spriteId;
+ sSlotMachine->reelTimeSprites2[0] = spriteId;
spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x68, 0x50, 3);
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].hFlip = TRUE;
- sSlotMachine->unk52[1] = spriteId;
+ sSlotMachine->reelTimeSprites2[1] = spriteId;
}
/*static */void sub_8105784(struct Sprite *sprite)
@@ -3512,20 +3598,20 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81057E8(s16 a0)
+static void sub_81057E8(s16 a0)
{
- gSprites[sSlotMachine->unk52[0]].data[7] = a0;
+ gSprites[sSlotMachine->reelTimeSprites2[0]].data[7] = a0;
}
-/*static */void sub_8105804(void)
+static void sub_8105804(void)
{
u8 i;
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0);
for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[sSlotMachine->unk52[i]]);
+ DestroySprite(&gSprites[sSlotMachine->reelTimeSprites2[i]]);
}
-/*static */void sub_8105854(void)
+static void sub_8105854(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED534, 0xa8, 0x50, 6);
gSprites[spriteId].oam.priority = 1;
@@ -3537,12 +3623,12 @@ s16 sub_8102D5C(s16 a0)
sprite->pos2.y = gSpriteCoordOffsetY;
}
-/*static */void sub_81058A0(void)
+static void sub_81058A0(void)
{
DestroySprite(&gSprites[sSlotMachine->unk41]);
}
-/*static */void sub_81058C4(void)
+static void sub_81058C4(void)
{
u8 i;
u16 sp[] = {0x0, 0x40, 0x80, 0xC0};
@@ -3575,7 +3661,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81059B8(void)
+static void sub_81059B8(void)
{
u8 i;
for (i = 0; i < 4; i++)
@@ -3584,7 +3670,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81059E8(void)
+static void sub_81059E8(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3621,19 +3707,19 @@ s16 sub_8102D5C(s16 a0)
sprite->pos2.y -= (sprite->data[1] >> 8);
}
-/*static */u8 sub_8105ACC(void)
+static u8 sub_8105ACC(void)
{
return gSprites[sSlotMachine->unk43].data[7];
}
-/*static */void sub_8105AEC(void)
+static void sub_8105AEC(void)
{
struct Sprite *sprite = &gSprites[sSlotMachine->unk43];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
-/*static */u8 sub_8105B1C(s16 x, s16 y)
+static u8 sub_8105B1C(s16 x, s16 y)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED6CC, x, y, 12);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3649,19 +3735,19 @@ s16 sub_8102D5C(s16 a0)
sprite->data[7] = 1;
}
-/*static */void sub_8105B88(u8 spriteId)
+static void sub_8105B88(u8 spriteId)
{
struct Sprite *sprite = &gSprites[spriteId];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
-/*static */u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2)
+static u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2)
{
return sub_8105BF8(templateIdx, gUnknown_083ECF0C[cbAndCoordsIdx], gUnknown_083ECE7E[cbAndCoordsIdx][0], gUnknown_083ECE7E[cbAndCoordsIdx][1], a2);
}
-/*static */u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4)
+static u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
@@ -3680,12 +3766,12 @@ s16 sub_8102D5C(s16 a0)
return spriteId;
}
-/*static */void sub_8105C64(struct Sprite *sprite)
+static void sub_8105C64(struct Sprite *sprite)
{
sprite->data[7] = 0;
}
-/*static */void sub_8105C6C(struct Sprite *sprite)
+static void sub_8105C6C(struct Sprite *sprite)
{
s16 sp0[] = {4, -4, 4, -4};
s16 sp8[] = {4, 4, -4, -4};
@@ -3704,26 +3790,26 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105CF0(struct Sprite *sprite)
+static void sub_8105CF0(struct Sprite *sprite)
{
sprite->hFlip = TRUE;
sub_8105C6C(sprite);
}
-/*static */void sub_8105D08(struct Sprite *sprite)
+static void sub_8105D08(struct Sprite *sprite)
{
sprite->vFlip = TRUE;
sub_8105C6C(sprite);
}
-/*static */void sub_8105D20(struct Sprite *sprite)
+static void sub_8105D20(struct Sprite *sprite)
{
sprite->hFlip = TRUE;
sprite->vFlip = TRUE;
sub_8105C6C(sprite);
}
-/*static */void sub_8105D3C(struct Sprite *sprite)
+static void sub_8105D3C(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3750,7 +3836,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105DA4(struct Sprite *sprite)
+static void sub_8105DA4(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3777,12 +3863,12 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105E08(struct Sprite *sprite)
+static void sub_8105E08(struct Sprite *sprite)
{
switch (sprite->data[0])
{
case 0:
- StartSpriteAnim(sprite, sSlotMachine->unk0A - 1);
+ StartSpriteAnim(sprite, sSlotMachine->fairRollsLeft - 1);
sprite->data[0]++;
// fallthrough
case 1:
@@ -3815,7 +3901,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105EB4(struct Sprite *sprite)
+static void sub_8105EB4(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3855,7 +3941,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105F54(struct Sprite *sprite)
+static void sub_8105F54(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3875,7 +3961,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105F9C(struct Sprite *sprite)
+static void sub_8105F9C(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3909,7 +3995,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8106058(struct Sprite *sprite)
+static void sub_8106058(struct Sprite *sprite)
{
if (sprite->data[1] < 3)
{
@@ -3933,7 +4019,7 @@ s16 sub_8102D5C(s16 a0)
sprite->data[7] = 0;
}
-/*static */void sub_81060FC(struct Sprite *sprite)
+static void sub_81060FC(struct Sprite *sprite)
{
s16 sp00[] = {0, -40, 0, 0, 48, 0, 24, 0};
s16 sp10[] = {-32, 0, -32, -48, 0, -48, 0, -48};
@@ -3968,7 +4054,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81061C8(struct Sprite *sprite)
+static void sub_81061C8(struct Sprite *sprite)
{
s16 sp0[] = {160, 192, 224, 104, 80, 64, 48, 24};
@@ -3983,7 +4069,7 @@ s16 sub_8102D5C(s16 a0)
sprite->data[1]--;
}
-/*static */void sub_8106230(struct Sprite *sprite)
+static void sub_8106230(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -4037,21 +4123,21 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void nullsub_70(void)
+static void nullsub_70(void)
{
}
-/*static */void sub_8106364(void)
+static void sub_8106364(void)
{
SetGpuReg(REG_OFFSET_MOSAIC, 0);
}
-/*static */void sub_8106370(void)
+static void sub_8106370(void)
{
LoadPalette(gUnknown_083EDE20, (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
}
-/*static */void sub_810639C(void)
+static void sub_810639C(void)
{
sSlotMachine->win0h = 0xf0;
sSlotMachine->win0v = 0xa0;
@@ -4059,47 +4145,47 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->winOut = 0x3f;
}
-/*static */void sub_81063C0(void)
+static void sub_81063C0(void)
{
u8 i;
sub_8106404();
- gUnknown_0203AAD4 = Alloc(0x3200);
- LZDecompressWram(gSlotMachineReelTime_Gfx, gUnknown_0203AAD4);
- gUnknown_0203AAD8 = Alloc(0x3600);
- LZDecompressWram(sReelTimeGfx, gUnknown_0203AAD8);
- gUnknown_0203AB30 = AllocZeroed(sizeof(struct SpriteSheet) * 22);
+ sUnknown_0203AAD4 = Alloc(0x3200);
+ LZDecompressWram(gSlotMachineReelTime_Gfx, sUnknown_0203AAD4);
+ sUnknown_0203AAD8 = Alloc(0x3600);
+ LZDecompressWram(gReelTimeGfx, sUnknown_0203AAD8);
+ sUnknown_0203AB30 = AllocZeroed(sizeof(struct SpriteSheet) * 22);
for (i = 0; i < 22; i++)
{
- gUnknown_0203AB30[i].data = sSlotMachineSpriteSheets[i].data;
- gUnknown_0203AB30[i].size = sSlotMachineSpriteSheets[i].size;
- gUnknown_0203AB30[i].tag = sSlotMachineSpriteSheets[i].tag;
+ sUnknown_0203AB30[i].data = gSlotMachineSpriteSheets[i].data;
+ sUnknown_0203AB30[i].size = gSlotMachineSpriteSheets[i].size;
+ sUnknown_0203AB30[i].tag = gSlotMachineSpriteSheets[i].tag;
}
- gUnknown_0203AB30[17].data = gUnknown_0203AAD4 + 0xA00;
- gUnknown_0203AB30[18].data = gUnknown_0203AAD4 + 0x1400;
- gUnknown_0203AB30[19].data = gUnknown_0203AAD4 + 0x1600;
- gUnknown_0203AB30[20].data = gUnknown_0203AAD4 + 0x1900;
- LoadSpriteSheets(gUnknown_0203AB30);
+ sUnknown_0203AB30[17].data = sUnknown_0203AAD4 + 0xA00;
+ sUnknown_0203AB30[18].data = sUnknown_0203AAD4 + 0x1400;
+ sUnknown_0203AB30[19].data = sUnknown_0203AAD4 + 0x1600;
+ sUnknown_0203AB30[20].data = sUnknown_0203AAD4 + 0x1900;
+ LoadSpriteSheets(sUnknown_0203AB30);
LoadSpritePalettes(gSlotMachineSpritePalettes);
}
-/*static */void sub_8106404(void)
+static void sub_8106404(void)
{
u8 *dest;
u8 i, j;
- gUnknown_0203AB2C = AllocZeroed(sizeof(struct SpriteSheet));
- gUnknown_0203AAE0 = AllocZeroed(0x2000);
- dest = gUnknown_0203AAE0;
+ sUnknown_0203AB2C = AllocZeroed(sizeof(struct SpriteSheet));
+ sUnknown_0203AAE0 = AllocZeroed(0x2000);
+ dest = sUnknown_0203AAE0;
for (i = 0; i < 0x40; i++)
{
for (j = 0; j < 0x20; j++, dest++)
*dest = gUnknown_083EDCDC[j];
}
- gUnknown_0203AB2C->data = gUnknown_0203AAE0;
- gUnknown_0203AB2C->size = 0x800;
- gUnknown_0203AB2C->tag = 0x11;
- LoadSpriteSheet(gUnknown_0203AB2C);
+ sUnknown_0203AB2C->data = sUnknown_0203AAE0;
+ sUnknown_0203AB2C->size = 0x800;
+ sUnknown_0203AB2C->tag = 0x11;
+ LoadSpriteSheet(sUnknown_0203AB2C);
}
extern const u32 gSlotMachineMenu_Gfx[];
@@ -4107,27 +4193,27 @@ extern const u16 gSlotMachineMenu_Tilemap[];
extern const u16 gUnknown_08DCEC70[];
extern const u16 gSlotMachineMenu_Pal[];
-/*static */void sub_8106448(void)
+static void sub_8106448(void)
{
- gUnknown_0203AAC8 = Alloc(0x2200);
- LZDecompressWram(gSlotMachineMenu_Gfx, gUnknown_0203AAC8);
- LoadBgTiles(2, gUnknown_0203AAC8, 0x2200, 0);
+ sUnknown_0203AAC8 = Alloc(0x2200);
+ LZDecompressWram(gSlotMachineMenu_Gfx, sUnknown_0203AAC8);
+ LoadBgTiles(2, sUnknown_0203AAC8, 0x2200, 0);
LoadPalette(gSlotMachineMenu_Pal, 0, 160);
LoadPalette(gPalette_83EDE24, 208, 32);
}
-/*static */void sub_81064B8(void)
+static void sub_81064B8(void)
{
sub_812F968();
LoadSlotMachineWheelOverlay();
}
-/*static */void sub_812F968(void)
+static void sub_812F968(void)
{
LoadBgTilemap(2, gSlotMachineMenu_Tilemap, 0x500, 0);
}
-/*static */void LoadSlotMachineWheelOverlay(void)
+static void LoadSlotMachineWheelOverlay(void)
{
s16 x, y, dx;
@@ -4135,143 +4221,143 @@ extern const u16 gSlotMachineMenu_Pal[];
{
for (dx = 0; dx < 4; dx++)
{
- LoadBgTilemap(3, gUnknown_0203AAD0, 2, x + dx + 5 * 32);
- LoadBgTilemap(3, gUnknown_0203AAD0 + 1, 2, x + dx + 13 * 32);
- LoadBgTilemap(3, gUnknown_0203AAD0 + 2, 2, x + dx + 6 * 32);
- LoadBgTilemap(3, gUnknown_0203AAD0 + 3, 2, x + dx + 12 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0, 2, x + dx + 5 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 1, 2, x + dx + 13 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 2, 2, x + dx + 6 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 3, 2, x + dx + 12 * 32);
}
- LoadBgTilemap(3, gUnknown_0203AAD0 + 4, 2, x + 6 * 32);
- LoadBgTilemap(3, gUnknown_0203AAD0 + 5, 2, x + 12 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 4, 2, x + 6 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 5, 2, x + 12 * 32);
for (y = 7; y <= 11; y++)
- LoadBgTilemap(3, gUnknown_0203AAD0 + 6, 2, x + y * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 6, 2, x + y * 32);
}
}
-/*static */void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4)
+static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4)
{
- gUnknown_0203AADC[0] = arg1;
- gUnknown_0203AADC[1] = arg2;
- gUnknown_0203AADC[2] = arg3;
- gUnknown_0203AADC[3] = arg4;
+ sUnknown_0203AADC[0] = arg1;
+ sUnknown_0203AADC[1] = arg2;
+ sUnknown_0203AADC[2] = arg3;
+ sUnknown_0203AADC[3] = arg4;
- LoadBgTilemap(2, gUnknown_0203AADC, 2, 15 * 32 + arg0);
- LoadBgTilemap(2, gUnknown_0203AADC + 1, 2, 15 * 32 + 1 + arg0);
- LoadBgTilemap(2, gUnknown_0203AADC + 2, 2, 16 * 32 + arg0);
- LoadBgTilemap(2, gUnknown_0203AADC + 3, 2, 16 * 32 + 1 + arg0);
+ LoadBgTilemap(2, sUnknown_0203AADC, 2, 15 * 32 + arg0);
+ LoadBgTilemap(2, sUnknown_0203AADC + 1, 2, 15 * 32 + 1 + arg0);
+ LoadBgTilemap(2, sUnknown_0203AADC + 2, 2, 16 * 32 + arg0);
+ LoadBgTilemap(2, sUnknown_0203AADC + 3, 2, 16 * 32 + 1 + arg0);
}
-/*static */void sub_81065DC(void)
+static void sub_81065DC(void)
{
LoadBgTilemap(2, gUnknown_08DCEC70, 0x500, 0);
HideBg(3);
}
-/*static */void SlotMachineSetup_9_0(void)
-{
- gUnknown_03001188[0] = gUnknown_0203AAF4;
- gUnknown_03001188[1] = gUnknown_0203AAF8;
- gUnknown_03001188[2] = gUnknown_0203AAFC;
- gUnknown_03001188[3] = gUnknown_0203AB04;
- gUnknown_03001188[4] = gUnknown_0203AB08;
- gUnknown_03001188[5] = gUnknown_0203AB18;
- gUnknown_03001188[6] = gUnknown_0203AB1C;
- gUnknown_03001188[7] = gUnknown_0203AB20;
- gUnknown_03001188[8] = gUnknown_0203AB24;
- gUnknown_03001188[9] = gUnknown_0203AB28;
- gUnknown_03001188[10] = gUnknown_0203AB00;
- gUnknown_03001188[11] = gUnknown_0203AB00;
- gUnknown_03001188[12] = gUnknown_0203AB00;
- gUnknown_03001188[13] = gUnknown_0203AB00;
- gUnknown_03001188[14] = gUnknown_0203AB0C;
- gUnknown_03001188[15] = gUnknown_0203AB0C;
- gUnknown_03001188[16] = gUnknown_0203AB0C;
- gUnknown_03001188[17] = gUnknown_0203AB0C;
- gUnknown_03001188[18] = gUnknown_0203AB0C;
- gUnknown_03001188[19] = gUnknown_0203AB10;
- gUnknown_03001188[20] = gUnknown_0203AB10;
- gUnknown_03001188[21] = gUnknown_0203AB10;
- gUnknown_03001188[22] = gUnknown_0203AB14;
- gUnknown_03001188[23] = gUnknown_0203AB14;
- gUnknown_03001188[24] = gUnknown_0203AB14;
+static void SlotMachineSetup_9_0(void)
+{
+ gUnknown_03001188[0] = sUnknown_0203AAF4;
+ gUnknown_03001188[1] = sUnknown_0203AAF8;
+ gUnknown_03001188[2] = sUnknown_0203AAFC;
+ gUnknown_03001188[3] = sUnknown_0203AB04;
+ gUnknown_03001188[4] = sUnknown_0203AB08;
+ gUnknown_03001188[5] = sUnknown_0203AB18;
+ gUnknown_03001188[6] = sUnknown_0203AB1C;
+ gUnknown_03001188[7] = sUnknown_0203AB20;
+ gUnknown_03001188[8] = sUnknown_0203AB24;
+ gUnknown_03001188[9] = sUnknown_0203AB28;
+ gUnknown_03001188[10] = sUnknown_0203AB00;
+ gUnknown_03001188[11] = sUnknown_0203AB00;
+ gUnknown_03001188[12] = sUnknown_0203AB00;
+ gUnknown_03001188[13] = sUnknown_0203AB00;
+ gUnknown_03001188[14] = sUnknown_0203AB0C;
+ gUnknown_03001188[15] = sUnknown_0203AB0C;
+ gUnknown_03001188[16] = sUnknown_0203AB0C;
+ gUnknown_03001188[17] = sUnknown_0203AB0C;
+ gUnknown_03001188[18] = sUnknown_0203AB0C;
+ gUnknown_03001188[19] = sUnknown_0203AB10;
+ gUnknown_03001188[20] = sUnknown_0203AB10;
+ gUnknown_03001188[21] = sUnknown_0203AB10;
+ gUnknown_03001188[22] = sUnknown_0203AB14;
+ gUnknown_03001188[23] = sUnknown_0203AB14;
+ gUnknown_03001188[24] = sUnknown_0203AB14;
gUnknown_03001188[25] = NULL;
}
-/*static */void SlotMachineSetup_8_0(void)
+static void SlotMachineSetup_8_0(void)
{
- gUnknown_0203AAF4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAF4[0].data = gUnknown_0203AAD4;
- gUnknown_0203AAF4[0].size = 0x600;
+ sUnknown_0203AAF4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AAF4[0].data = sUnknown_0203AAD4;
+ sUnknown_0203AAF4[0].size = 0x600;
- gUnknown_0203AAF8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAF8[0].data = gUnknown_0203AAD4 + 0x600;
- gUnknown_0203AAF8[0].size = 0x200;
+ sUnknown_0203AAF8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AAF8[0].data = sUnknown_0203AAD4 + 0x600;
+ sUnknown_0203AAF8[0].size = 0x200;
- gUnknown_0203AAFC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAFC[0].data = gUnknown_0203AAD4 + 0x800;
- gUnknown_0203AAFC[0].size = 0x200;
+ sUnknown_0203AAFC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AAFC[0].data = sUnknown_0203AAD4 + 0x800;
+ sUnknown_0203AAFC[0].size = 0x200;
- gUnknown_0203AB00 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB00[0].data = gUnknown_0203AAD4 + 0xA00;
- gUnknown_0203AB00[0].size = 0x200;
+ sUnknown_0203AB00 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB00[0].data = sUnknown_0203AAD4 + 0xA00;
+ sUnknown_0203AB00[0].size = 0x200;
- gUnknown_0203AB04 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB04[0].data = gUnknown_0203AAD4 + 0xC00;
- gUnknown_0203AB04[0].size = 0x300;
+ sUnknown_0203AB04 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB04[0].data = sUnknown_0203AAD4 + 0xC00;
+ sUnknown_0203AB04[0].size = 0x300;
- gUnknown_0203AB08 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB08[0].data = gUnknown_0203AAD4 + 0x1000;
- gUnknown_0203AB08[0].size = 0x400;
+ sUnknown_0203AB08 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB08[0].data = sUnknown_0203AAD4 + 0x1000;
+ sUnknown_0203AB08[0].size = 0x400;
- gUnknown_0203AB0C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB0C[0].data = gUnknown_0203AAD4 + 0x1400;
- gUnknown_0203AB0C[0].size = 0x200;
+ sUnknown_0203AB0C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB0C[0].data = sUnknown_0203AAD4 + 0x1400;
+ sUnknown_0203AB0C[0].size = 0x200;
- gUnknown_0203AB10 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB10[0].data = gUnknown_0203AAD4 + 0x1600;
- gUnknown_0203AB10[0].size = 0x300;
+ sUnknown_0203AB10 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB10[0].data = sUnknown_0203AAD4 + 0x1600;
+ sUnknown_0203AB10[0].size = 0x300;
- gUnknown_0203AB14 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB14[0].data = gUnknown_0203AAD4 + 0x1900;
- gUnknown_0203AB14[0].size = 0x300;
+ sUnknown_0203AB14 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB14[0].data = sUnknown_0203AAD4 + 0x1900;
+ sUnknown_0203AB14[0].size = 0x300;
- gUnknown_0203AB18 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
- gUnknown_0203AB18[0].data = gUnknown_0203AAD4 + 0x1C00;
- gUnknown_0203AB18[0].size = 0x200;
- gUnknown_0203AB18[1].data = gUnknown_0203AAD4 + 0x1E00;
- gUnknown_0203AB18[1].size = 0x200;
+ sUnknown_0203AB18 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ sUnknown_0203AB18[0].data = sUnknown_0203AAD4 + 0x1C00;
+ sUnknown_0203AB18[0].size = 0x200;
+ sUnknown_0203AB18[1].data = sUnknown_0203AAD4 + 0x1E00;
+ sUnknown_0203AB18[1].size = 0x200;
- gUnknown_0203AB1C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB1C[0].data = gUnknown_0203AAD4 + 0x2000;
- gUnknown_0203AB1C[0].size = 640;
+ sUnknown_0203AB1C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB1C[0].data = sUnknown_0203AAD4 + 0x2000;
+ sUnknown_0203AB1C[0].size = 640;
- gUnknown_0203AB20 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
- gUnknown_0203AB20[0].data = gUnknown_0203AAD4 + 0x2280;
- gUnknown_0203AB20[0].size = 0x80;
- gUnknown_0203AB20[1].data = gUnknown_0203AAD4 + 0x2300;
- gUnknown_0203AB20[1].size = 0x80;
- gUnknown_0203AB20[2].data = gUnknown_0203AAD4 + 0x2380;
- gUnknown_0203AB20[2].size = 0x80;
- gUnknown_0203AB20[3].data = gUnknown_0203AAD4 + 0x2400;
- gUnknown_0203AB20[3].size = 0x80;
- gUnknown_0203AB20[4].data = gUnknown_0203AAD4 + 0x2480;
- gUnknown_0203AB20[4].size = 0x80;
+ sUnknown_0203AB20 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
+ sUnknown_0203AB20[0].data = sUnknown_0203AAD4 + 0x2280;
+ sUnknown_0203AB20[0].size = 0x80;
+ sUnknown_0203AB20[1].data = sUnknown_0203AAD4 + 0x2300;
+ sUnknown_0203AB20[1].size = 0x80;
+ sUnknown_0203AB20[2].data = sUnknown_0203AAD4 + 0x2380;
+ sUnknown_0203AB20[2].size = 0x80;
+ sUnknown_0203AB20[3].data = sUnknown_0203AAD4 + 0x2400;
+ sUnknown_0203AB20[3].size = 0x80;
+ sUnknown_0203AB20[4].data = sUnknown_0203AAD4 + 0x2480;
+ sUnknown_0203AB20[4].size = 0x80;
- gUnknown_0203AB24 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
- gUnknown_0203AB24[0].data = gUnknown_0203AAD4 + 0x2600;
- gUnknown_0203AB24[0].size = 0x480;
- gUnknown_0203AB24[1].data = gUnknown_0203AAD4 + 10880;
- gUnknown_0203AB24[1].size = 0x480;
+ sUnknown_0203AB24 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ sUnknown_0203AB24[0].data = sUnknown_0203AAD4 + 0x2600;
+ sUnknown_0203AB24[0].size = 0x480;
+ sUnknown_0203AB24[1].data = sUnknown_0203AAD4 + 10880;
+ sUnknown_0203AB24[1].size = 0x480;
- gUnknown_0203AB28 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
- gUnknown_0203AB28[0].data = gUnknown_0203AAD4 + 0x2F00;
- gUnknown_0203AB28[0].size = 0x180;
- gUnknown_0203AB28[1].data = gUnknown_0203AAD4 + 0x3080;
- gUnknown_0203AB28[1].size = 0x180;
+ sUnknown_0203AB28 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ sUnknown_0203AB28[0].data = sUnknown_0203AAD4 + 0x2F00;
+ sUnknown_0203AB28[0].size = 0x180;
+ sUnknown_0203AB28[1].data = sUnknown_0203AAD4 + 0x3080;
+ sUnknown_0203AB28[1].size = 0x180;
}
-const u8 sReelSymbols[][21] =
+const u8 gReelSymbols[][REEL_NUM_TAGS] =
{
{
SLOT_MACHINE_TAG_7_RED,
@@ -4344,17 +4430,17 @@ const u8 sReelSymbols[][21] =
},
};
-const u8 gUnknown_083ECCF1[] = {
+const u8 gReelTimeTags[] = {
1, 0, 5, 4, 3, 2
};
-const s16 gUnknown_083ECCF8[][2] = {
+const s16 gInitialReelPositions[][2] = {
{0, 6},
{0, 10},
{0, 2}
};
-const u8 gUnknown_083ECD04[][3] = {
+const u8 gLuckyRoundProbabilities[][3] = {
{1, 1, 12},
{1, 1, 14},
{2, 2, 14},
@@ -4363,13 +4449,13 @@ const u8 gUnknown_083ECD04[][3] = {
{3, 3, 16}
};
-const u8 gUnknown_083ECD16[][6] = {
+const u8 gLuckyFlagProbabilities_Top3[][6] = {
{25, 25, 30, 40, 40, 50},
{25, 25, 30, 30, 35, 35},
{25, 25, 30, 25, 25, 30}
};
-const u8 gUnknown_083ECD28[][6] = {
+const u8 gLuckyFlagProbabilities_NotTop3[][6] = {
{20, 25, 25, 20, 25, 25},
{12, 15, 15, 18, 19, 22},
{25, 25, 25, 30, 30, 40},
@@ -4377,7 +4463,7 @@ const u8 gUnknown_083ECD28[][6] = {
{40, 40, 35, 35, 40, 40}
};
-const u8 gUnknown_083ECD46[][17] = {
+const u8 gReeltimeProbabilities_UnluckyGame[][17] = {
{243, 243, 243, 80, 80, 80, 80, 40, 40, 40, 40, 40, 40, 5, 5, 5, 5},
{ 5, 5, 5, 150, 150, 150, 150, 130, 130, 130, 130, 130, 130, 100, 100, 100, 5},
{ 4, 4, 4, 20, 20, 20, 20, 80, 80, 80, 80, 80, 80, 100, 100, 100, 40},
@@ -4386,7 +4472,7 @@ const u8 gUnknown_083ECD46[][17] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6}
};
-const u8 gUnknown_083ECDAC[][17] = {
+const u8 gReelTimeProbabilities_LuckyGame[][17] = {
{ 243, 243, 243, 200, 200, 200, 200, 160, 160, 160, 160, 160, 160, 70, 70, 70, 5},
{ 5, 5, 5, 25, 25, 25, 25, 5, 5, 5, 5, 5, 5, 2, 2, 2, 6},
{ 4, 4, 4, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30, 40, 40, 40, 35},
@@ -4395,11 +4481,11 @@ const u8 gUnknown_083ECDAC[][17] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 60}
};
-const u16 gUnknown_083ECE12[] = {
- 0x80, 0xaf, 0xc8, 0xe1, 0x100
+const u16 gProbabilityTable_SkipToReeltimeAction14[] = {
+ 128, 175, 200, 225, 256
};
-const u16 gUnknown_083ECE1C[][2] = {
+const u16 gReelIncrementTable[][2] = {
{10, 5},
{10, 10},
{10, 15},
@@ -4407,23 +4493,24 @@ const u16 gUnknown_083ECE1C[][2] = {
{10, 35}
};
-const u16 gUnknown_083ECE30[] = {
+const u16 gReelTimeBonusIncrementTable[] = {
0, 5, 10, 15, 20
};
-const u8 gUnknown_083ECE3A[] = {
- 6, 4, 3, 2, 5, 0, 0, 0
+// tentative name
+const u8 gBiasTags[] = {
+ SLOT_MACHINE_TAG_REPLAY, SLOT_MACHINE_TAG_CHERRY, SLOT_MACHINE_TAG_LOTAD, SLOT_MACHINE_TAG_AZURILL, SLOT_MACHINE_TAG_POWER, SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_7_RED
};
-const u16 gUnknown_083ECE42[] = {
- 0x80, 0x20, 0x40
+const u16 gLuckyFlagSettings_Top3[] = {
+ LUCKY_BIAS_777, LUCKY_BIAS_REELTIME, LUCKY_BIAS_MIXED_777
};
-const u16 gUnknown_083ECE48[] = {
- 0x10, 0x08, 0x04, 0x02, 0x01
+const u16 gLuckyFlagSettings_NotTop3[] = {
+ LUCKY_BIAS_POWER, LUCKY_BIAS_AZURILL, LUCKY_BIAS_LOTAD, LUCKY_BIAS_CHERRY, LUCKY_BIAS_REPLAY
};
-const u8 sSym2Match[] = {
+const u8 gSym2Match[] = {
SLOT_MACHINE_MATCHED_777_RED,
SLOT_MACHINE_MATCHED_777_BLUE,
SLOT_MACHINE_MATCHED_AZURILL,
@@ -4433,7 +4520,7 @@ const u8 sSym2Match[] = {
SLOT_MACHINE_MATCHED_REPLAY
};
-const u16 sSlotMatchFlags[] = {
+const u16 gSlotMatchFlags[] = {
1 << SLOT_MACHINE_MATCHED_1CHERRY,
1 << SLOT_MACHINE_MATCHED_2CHERRY,
1 << SLOT_MACHINE_MATCHED_REPLAY,
@@ -4445,7 +4532,7 @@ const u16 sSlotMatchFlags[] = {
1 << SLOT_MACHINE_MATCHED_777_BLUE
};
-const u16 sSlotPayouts[] = {
+const u16 gSlotPayouts[] = {
2, 4, 0, 6, 12, 3, 90, 300, 300
};
diff --git a/src/sound.c b/src/sound.c
index ebb4fad75..16f024858 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -264,7 +264,7 @@ void FadeInNewBGM(u16 songNum, u8 speed)
{
if (gDisableMusic)
songNum = 0;
- if (songNum == 0xFFFF)
+ if (songNum == MUS_NONE)
songNum = 0;
m4aSongNumStart(songNum);
m4aMPlayImmInit(&gMPlayInfo_BGM);
@@ -561,7 +561,7 @@ void PlayBGM(u16 songNum)
{
if (gDisableMusic)
songNum = 0;
- if (songNum == 0xFFFF)
+ if (songNum == MUS_NONE)
songNum = 0;
m4aSongNumStart(songNum);
}
diff --git a/src/sprite.c b/src/sprite.c
index 4087dd8c4..d2ea7889c 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -91,21 +91,21 @@ typedef void (*AnimFunc)(struct Sprite *);
typedef void (*AnimCmdFunc)(struct Sprite *);
typedef void (*AffineAnimCmdFunc)(u8 matrixNum, struct Sprite *);
-#define DUMMY_OAM_DATA \
-{ \
- 160, /* Y (off-screen) */ \
- 0, \
- 0, \
- 0, \
- 0, \
- 0, \
- 304, /* X */ \
- 0, \
- 0, \
- 0, \
- 3, /* lowest priority */ \
- 0, \
- 0 \
+#define DUMMY_OAM_DATA \
+{ \
+ .y = 160, \
+ .affineMode = 0, \
+ .objMode = 0, \
+ .mosaic = 0, \
+ .bpp = 0, \
+ .shape = SPRITE_SHAPE(8x8), \
+ .x = 304, \
+ .matrixNum = 0, \
+ .size = SPRITE_SIZE(8x8), \
+ .tileNum = 0, \
+ .priority = 3, /* lowest priority */ \
+ .paletteNum = 0, \
+ .affineParam = 0 \
}
#define ANIM_END 0xFFFF
diff --git a/src/start_menu.c b/src/start_menu.c
index 5c7e5365d..4822c12e6 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -1,44 +1,49 @@
#include "global.h"
-#include "start_menu.h"
-#include "menu.h"
-#include "safari_zone.h"
-#include "event_data.h"
-#include "window.h"
-#include "string_util.h"
-#include "text.h"
-#include "strings.h"
+#include "battle_pike.h"
+#include "battle_pyramid.h"
+#include "battle_pyramid_bag.h"
#include "bg.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "event_obj_lock.h"
+#include "event_scripts.h"
+#include "fieldmap.h"
#include "field_effect.h"
-#include "party_menu.h"
-#include "frontier_pass.h"
-#include "task.h"
-#include "overworld.h"
-#include "link.h"
-#include "frontier_util.h"
-#include "rom_818CFC8.h"
+#include "field_player_avatar.h"
#include "field_specials.h"
-#include "event_object_movement.h"
-#include "script.h"
-#include "main.h"
-#include "sound.h"
-#include "pokedex.h"
#include "field_weather.h"
-#include "palette.h"
+#include "field_screen_effect.h"
+#include "frontier_pass.h"
+#include "frontier_util.h"
+#include "gpu_regs.h"
+#include "international_string_util.h"
#include "item_menu.h"
+#include "link.h"
+#include "load_save.h"
+#include "main.h"
+#include "menu.h"
+#include "new_game.h"
#include "option_menu.h"
-#include "event_scripts.h"
+#include "overworld.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "pokedex.h"
+#include "pokenav.h"
+#include "safari_zone.h"
#include "save.h"
-#include "gpu_regs.h"
#include "scanline_effect.h"
+#include "script.h"
+#include "sound.h"
+#include "start_menu.h"
+#include "strings.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
#include "text_window.h"
-#include "load_save.h"
#include "trainer_card.h"
-#include "international_string_util.h"
+#include "window.h"
#include "constants/songs.h"
-#include "field_player_avatar.h"
-#include "battle_pyramid_bag.h"
-#include "battle_pike.h"
-#include "new_game.h"
+#include "rom_8011DC0.h"
// Menu actions
enum
@@ -83,21 +88,6 @@ EWRAM_DATA static u8 sSaveDialogTimer = 0;
EWRAM_DATA static bool8 sSavingComplete = FALSE;
EWRAM_DATA static u8 sSaveInfoWindowId = 0;
-// Extern variables.
-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 CB2_Pokedex(void);
-extern void PlayRainSoundEffect(void);
-extern void CB2_PokeNav(void);
-extern void ScriptUnfreezeEventObjects(void);
-extern void sub_81A9EC8(void);
-extern void save_serialize_map(void);
-extern void sub_81A9E90(void);
-
// Menu action callbacks
static bool8 StartMenuPokedexCallback(void);
static bool8 StartMenuPokemonCallback(void);
@@ -125,7 +115,7 @@ static u8 SaveConfirmSaveCallback(void);
static u8 SaveYesNoCallback(void);
static u8 SaveConfirmInputCallback(void);
static u8 SaveFileExistsCallback(void);
-static u8 SaveConfirmOverwriteNoCallback(void);
+static u8 SaveConfirmOverwriteDefaultNoCallback(void);
static u8 SaveConfirmOverwriteCallback(void);
static u8 SaveOverwriteInputCallback(void);
static u8 SaveSavingMessageCallback(void);
@@ -246,7 +236,7 @@ static void BuildStartMenuActions(void)
{
sNumStartMenuActions = 0;
- if (is_c1_link_related_active() == TRUE)
+ if (IsUpdateLinkStateCBActive() == TRUE)
{
BuildLinkModeStartMenu();
}
@@ -378,7 +368,7 @@ static void ShowSafariBallsWindow(void)
{
sSafariBallsWindowId = AddWindow(&sSafariBallsWindowTemplate);
PutWindowTilemap(sSafariBallsWindowId);
- NewMenuHelpers_DrawStdWindowFrame(sSafariBallsWindowId, FALSE);
+ DrawStdWindowFrame(sSafariBallsWindowId, FALSE);
ConvertIntToDecimalStringN(gStringVar1, gNumSafariBalls, STR_CONV_MODE_RIGHT_ALIGN, 2);
StringExpandPlaceholders(gStringVar4, gText_SafariBallStock);
AddTextPrinterParameterized(sSafariBallsWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
@@ -393,7 +383,7 @@ static void ShowPyramidFloorWindow(void)
sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_2);
PutWindowTilemap(sBattlePyramidFloorWindowId);
- NewMenuHelpers_DrawStdWindowFrame(sBattlePyramidFloorWindowId, FALSE);
+ DrawStdWindowFrame(sBattlePyramidFloorWindowId, FALSE);
StringCopy(gStringVar1, sPyramindFloorNames[gSaveBlock2Ptr->frontier.curChallengeBattleNum]);
StringExpandPlaceholders(gStringVar4, gText_BattlePyramidFloor);
AddTextPrinterParameterized(sBattlePyramidFloorWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
@@ -404,13 +394,13 @@ static void RemoveExtraStartMenuWindows(void)
{
if (GetSafariZoneFlag())
{
- sub_8198070(sSafariBallsWindowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(sSafariBallsWindowId, FALSE);
CopyWindowToVram(sSafariBallsWindowId, 2);
RemoveWindow(sSafariBallsWindowId);
}
if (InBattlePyramid())
{
- sub_8198070(sBattlePyramidFloorWindowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(sBattlePyramidFloorWindowId, FALSE);
RemoveWindow(sBattlePyramidFloorWindowId);
}
}
@@ -461,7 +451,7 @@ static bool32 InitStartMenuStep(void)
break;
case 2:
sub_81973A4();
- NewMenuHelpers_DrawStdWindowFrame(sub_81979C4(sNumStartMenuActions), FALSE);
+ DrawStdWindowFrame(sub_81979C4(sNumStartMenuActions), FALSE);
sUnknown_02037619[1] = 0;
sUnknown_02037619[0]++;
break;
@@ -549,7 +539,7 @@ void sub_809FA34(u8 taskId) // Referenced in field_screen.s and rom_8011DC0.s
void ShowStartMenu(void) // Called from overworld.c and field_control_avatar.s
{
- if (!is_c1_link_related_active())
+ if (!IsUpdateLinkStateCBActive())
{
FreezeEventObjects();
sub_808B864();
@@ -610,7 +600,7 @@ static bool8 StartMenuPokedexCallback(void)
if (!gPaletteFade.active)
{
IncrementGameStat(GAME_STAT_CHECKED_POKEDEX);
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_Pokedex);
@@ -625,7 +615,7 @@ static bool8 StartMenuPokemonCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_PartyMenuFromStartMenu); // Display party menu
@@ -640,7 +630,7 @@ static bool8 StartMenuBagCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_BagMenuFromStartMenu); // Display bag menu
@@ -655,10 +645,10 @@ static bool8 StartMenuPokeNavCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
- SetMainCallback2(CB2_PokeNav); // Display PokeNav
+ SetMainCallback2(CB2_InitPokeNav); // Display PokeNav
return TRUE;
}
@@ -670,11 +660,11 @@ static bool8 StartMenuPlayerNameCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
- if (is_c1_link_related_active() || InUnionRoom())
+ if (IsUpdateLinkStateCBActive() || InUnionRoom())
ShowPlayerTrainerCard(CB2_ReturnToFieldWithOpenMenu); // Display trainer card
else if (FlagGet(FLAG_SYS_FRONTIER_PASS))
ShowFrontierPass(CB2_ReturnToFieldWithOpenMenu); // Display frontier pass
@@ -701,7 +691,7 @@ static bool8 StartMenuOptionCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_InitOptionMenu); // Display option menu
@@ -734,9 +724,9 @@ static bool8 StartMenuLinkModePlayerNameCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
CleanupOverworldWindowsAndTilemaps();
- ShowTrainerCardInLink(gUnknown_03005DB4, CB2_ReturnToFieldWithOpenMenu);
+ ShowTrainerCardInLink(gLocalLinkPlayerId, CB2_ReturnToFieldWithOpenMenu);
return TRUE;
}
@@ -751,9 +741,9 @@ static bool8 StartMenuBattlePyramidRetireCallback(void)
return FALSE;
}
-void sub_809FDD4(void) // Called from battle_frontier_2.s
+void sub_809FDD4(void)
{
- sub_8197DF8(0, FALSE);
+ ClearDialogWindowAndFrameToTransparent(0, FALSE);
ScriptUnfreezeEventObjects();
CreateStartMenuTask(sub_809FA34);
ScriptContext2_Enable();
@@ -763,7 +753,7 @@ static bool8 StartMenuBattlePyramidBagCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_PyramidBagMenuFromStartMenu);
@@ -789,16 +779,16 @@ static bool8 SaveCallback(void)
case SAVE_IN_PROGRESS:
return FALSE;
case SAVE_CANCELED: // Back to start menu
- sub_8197DF8(0, FALSE);
+ ClearDialogWindowAndFrameToTransparent(0, FALSE);
InitStartMenu();
gMenuCallback = HandleStartMenuInput;
return FALSE;
case SAVE_SUCCESS:
case SAVE_ERROR: // Close start menu
- sub_8197DF8(0, TRUE);
+ ClearDialogWindowAndFrameToTransparent(0, TRUE);
ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
- sub_81A9EC8();
+ SoftResetInBattlePyramid();
return TRUE;
}
@@ -832,7 +822,7 @@ static bool8 BattlePyramidRetireCallback(void)
case SAVE_IN_PROGRESS:
return FALSE;
case SAVE_CANCELED: // Yes (Retire from battle pyramid)
- sub_8197DF8(0, TRUE);
+ ClearDialogWindowAndFrameToTransparent(0, TRUE);
ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
ScriptContext1_SetupScript(BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88);
@@ -899,7 +889,7 @@ static void SaveGameTask(u8 taskId)
static void sub_80A0014(void)
{
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
}
static void HideSaveInfoWindow(void)
@@ -945,7 +935,7 @@ static bool8 SaveErrorTimer(void)
static u8 SaveConfirmSaveCallback(void)
{
- sub_819746C(GetStartMenuWindowId(), FALSE);
+ ClearStdWindowAndFrame(GetStartMenuWindowId(), FALSE);
RemoveStartMenuWindow();
ShowSaveInfoWindow();
@@ -963,7 +953,7 @@ static u8 SaveConfirmSaveCallback(void)
static u8 SaveYesNoCallback(void)
{
- DisplayYesNoMenu(); // Show Yes/No menu
+ DisplayYesNoMenuDefaultYes(); // Show Yes/No menu
sSaveDialogCallback = SaveConfirmInputCallback;
return SAVE_IN_PROGRESS;
}
@@ -1004,7 +994,7 @@ static u8 SaveFileExistsCallback(void)
{
if (gDifferentSaveFile == TRUE)
{
- ShowSaveMessage(gText_DifferentSaveFile, SaveConfirmOverwriteNoCallback);
+ ShowSaveMessage(gText_DifferentSaveFile, SaveConfirmOverwriteDefaultNoCallback);
}
else
{
@@ -1014,16 +1004,16 @@ static u8 SaveFileExistsCallback(void)
return SAVE_IN_PROGRESS;
}
-static u8 SaveConfirmOverwriteNoCallback(void)
+static u8 SaveConfirmOverwriteDefaultNoCallback(void)
{
- sub_8197948(1); // Show Yes/No menu (No selected as default)
+ DisplayYesNoMenuWithDefault(1); // Show Yes/No menu (No selected as default)
sSaveDialogCallback = SaveOverwriteInputCallback;
return SAVE_IN_PROGRESS;
}
static u8 SaveConfirmOverwriteCallback(void)
{
- DisplayYesNoMenu(); // Show Yes/No menu
+ DisplayYesNoMenuDefaultYes(); // Show Yes/No menu
sSaveDialogCallback = SaveOverwriteInputCallback;
return SAVE_IN_PROGRESS;
}
@@ -1137,7 +1127,7 @@ static void InitBattlePyramidRetire(void)
static u8 BattlePyramidConfirmRetireCallback(void)
{
- sub_819746C(GetStartMenuWindowId(), FALSE);
+ ClearStdWindowAndFrame(GetStartMenuWindowId(), FALSE);
RemoveStartMenuWindow();
ShowSaveMessage(gText_BattlePyramidConfirmRetire, BattlePyramidRetireYesNoCallback);
@@ -1146,7 +1136,7 @@ static u8 BattlePyramidConfirmRetireCallback(void)
static u8 BattlePyramidRetireYesNoCallback(void)
{
- sub_8197948(1); // Show Yes/No menu (No selected as default)
+ DisplayYesNoMenuWithDefault(1); // Show Yes/No menu (No selected as default)
sSaveDialogCallback = BattlePyramidRetireInputCallback;
return SAVE_IN_PROGRESS;
@@ -1234,7 +1224,7 @@ static void sub_80A0550(u8 taskId)
switch (*step)
{
case 0:
- FillWindowPixelBuffer(0, 17);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0,
1,
gText_SavingDontTurnOffPower,
@@ -1267,11 +1257,11 @@ static void sub_80A0550(u8 taskId)
break;
case 1:
SetContinueGameWarpStatusToDynamicWarp();
- sub_8153430();
+ FullSaveGame();
*step = 2;
break;
case 2:
- if (sub_8153474())
+ if (CheckSaveFile())
{
ClearContinueGameWarpStatus2();
*step = 3;
@@ -1315,7 +1305,7 @@ static void ShowSaveInfoWindow(void)
}
sSaveInfoWindowId = AddWindow(&saveInfoWindow);
- NewMenuHelpers_DrawStdWindowFrame(sSaveInfoWindowId, FALSE);
+ DrawStdWindowFrame(sSaveInfoWindowId, FALSE);
gender = gSaveBlock2Ptr->playerGender;
color = TEXT_COLOR_RED; // Red when female, blue when male.
@@ -1366,7 +1356,7 @@ static void ShowSaveInfoWindow(void)
static void RemoveSaveInfoWindow(void)
{
- sub_819746C(sSaveInfoWindowId, FALSE);
+ ClearStdWindowAndFrame(sSaveInfoWindowId, FALSE);
RemoveWindow(sSaveInfoWindowId);
}
@@ -1388,7 +1378,7 @@ void sub_80A08CC(void) // Referenced in data/specials.inc and data/scripts/maps/
static void HideStartMenuWindow(void)
{
- sub_819746C(GetStartMenuWindowId(), TRUE);
+ ClearStdWindowAndFrame(GetStartMenuWindowId(), TRUE);
RemoveStartMenuWindow();
ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 2d4a1b1e1..c3d636175 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -170,10 +170,10 @@ static const struct OamData gOamData_85B1E10 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -187,10 +187,10 @@ static const struct OamData gOamData_85B1E18 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -204,10 +204,10 @@ static const struct OamData gOamData_85B1E20 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -296,21 +296,35 @@ static const union AffineAnimCmd * const gSpriteAffineAnimTable_85B1ED4[] = {gSp
static const struct CompressedSpriteSheet gUnknown_085B1ED8[] =
{
- gUnknown_085B18AC, 0x0800, 0x1000,
- NULL,
+ {
+ .data = gUnknown_085B18AC,
+ .size = 0x0800,
+ .tag = 0x1000
+ },
+ {}
};
static const struct CompressedSpriteSheet gUnknown_085B1EE8[] =
{
- gUnknown_085B1BCC, 0x0800, 0x1001,
- NULL,
+ {
+ .data = gUnknown_085B1BCC,
+ .size = 0x0800,
+ .tag = 0x1001
+ },
+ {}
};
static const struct SpritePalette gUnknown_085B1EF8[] =
{
- gBirchBallarrow_Pal, 0x1000,
- gBirchCircle_Pal, 0x1001,
- NULL,
+ {
+ .data = gBirchBallarrow_Pal,
+ .tag = 0x1000
+ },
+ {
+ .data = gBirchCircle_Pal,
+ .tag = 0x1001
+ },
+ {},
};
static const struct SpriteTemplate sSpriteTemplate_Hand =
@@ -393,8 +407,8 @@ void CB2_ChooseStarter(void)
DmaFill16(3, 0, PLTT, PLTT_SIZE);
LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM);
- LZ77UnCompVram(gBirchBagTilemap, (void *)(VRAM + 0x3000));
- LZ77UnCompVram(gBirchGrassTilemap, (void *)(VRAM + 0x3800));
+ LZ77UnCompVram(gBirchBagTilemap, (void *)(BG_SCREEN_ADDR(6)));
+ LZ77UnCompVram(gBirchGrassTilemap, (void *)(BG_SCREEN_ADDR(7)));
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_085B1E00, ARRAY_COUNT(gUnknown_085B1E00));
@@ -469,7 +483,7 @@ static void MainCallback2_StarterChoose(void)
static void Task_StarterChoose1(u8 taskId)
{
CreateStarterPokemonLabel(gTasks[taskId].tStarterSelection);
- SetWindowBorderStyle(0, FALSE, 0x2A8, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x2A8, 0xD);
AddTextPrinterParameterized(0, 1, gText_BirchInTrouble, 0, 1, 0, NULL);
PutWindowTilemap(0);
schedule_bg_copy_tilemap_to_vram(0);
@@ -523,7 +537,7 @@ static void Task_StarterChoose3(u8 taskId)
static void Task_StarterChoose4(u8 taskId)
{
PlayCry1(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0);
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, 1, gText_ConfirmStarterChoice, 0, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
CreateYesNoMenu(&gUnknown_085B1DDC, 0x2A8, 0xD, 0);
@@ -579,7 +593,7 @@ static void CreateStarterPokemonLabel(u8 selection)
winTemplate.tilemapTop = gStarterChoose_LabelCoords[selection][1];
sStarterChooseWindowId = AddWindow(&winTemplate);
- FillWindowPixelBuffer(sStarterChooseWindowId, 0);
+ FillWindowPixelBuffer(sStarterChooseWindowId, PIXEL_FILL(0));
width = GetStringCenterAlignXOffset(7, text, 0x68);
AddTextPrinterParameterized3(sStarterChooseWindowId, 7, width, 1, gUnknown_085B1E0C, 0, text);
@@ -600,7 +614,7 @@ static void CreateStarterPokemonLabel(u8 selection)
static void sub_8134604(void)
{
- FillWindowPixelBuffer(sStarterChooseWindowId, 0);
+ FillWindowPixelBuffer(sStarterChooseWindowId, PIXEL_FILL(0));
ClearWindowTilemap(sStarterChooseWindowId);
RemoveWindow(sStarterChooseWindowId);
sStarterChooseWindowId = 0xFF;
diff --git a/src/strings.c b/src/strings.c
index b0eb048ba..577d26f5c 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -965,18 +965,18 @@ const u8 gUnknown_085EBE8E[] = _("Can't call opponent here.");
const u8 gUnknown_085EBEA8[] = _("STRATEGY");
const u8 gUnknown_085EBEB1[] = _("TRAINER'S POKéMON");
const u8 gUnknown_085EBEC3[] = _("SELF-INTRODUCTION");
-const u8 gUnknown_085EBED5[] = _("{CLEAR 0x80}");
-const u8 gUnknown_085EBED9[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBEE9[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBEF9[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF0E[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF22[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF39[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF49[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF57[] = _("{B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF60[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF73[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL");
-const u8 gUnknown_085EBF84[] = _("{B_BUTTON}CANCEL");
+const u8 gText_Navgear_ClearButtonList[] = _("{CLEAR 0x80}");
+const u8 gText_NavgearMap_ZoomedOutButtons[] = _("{A_BUTTON}ZOOM {B_BUTTON}CANCEL");
+const u8 gText_NavgearMap_ZoomedInButtons[] = _("{A_BUTTON}FULL {B_BUTTON}CANCEL");
+const u8 gText_NavgearCondition_MonListButtons[] = _("{A_BUTTON}CONDITION {B_BUTTON}CANCEL");
+const u8 gText_NavgearCondition_MonStatusButtons[] = _("{A_BUTTON}MARKINGS {B_BUTTON}CANCEL");
+const u8 gText_NavgearCondition_MarkingButtons[] = _("{A_BUTTON}SELECT MARK {B_BUTTON}CANCEL");
+const u8 gText_NavgearMatchCall_TrainerListButtons[] = _("{A_BUTTON}MENU {B_BUTTON}CANCEL");
+const u8 gText_NavgearMatchCall_CallMenuButtons[] = _("{A_BUTTON}OK {B_BUTTON}CANCEL");
+const u8 gText_NavgearMatchCall_CheckTrainerButtons[] = _("{B_BUTTON}CANCEL");
+const u8 gText_NavgearRibbons_MonListButtons[] = _("{A_BUTTON}RIBBONS {B_BUTTON}CANCEL");
+const u8 gText_NavgearRibbons_RibbonListButtons[] = _("{A_BUTTON}CHECK {B_BUTTON}CANCEL");
+const u8 gText_NavgearRibbons_RibbonCheckButtons[] = _("{B_BUTTON}CANCEL");
const u8 gText_NatureSlash[] = _("NATURE/");
const u8 gText_TrainerCloseBy[] = _("That TRAINER is close by.\nTalk to the TRAINER in person!");
const u8 gText_InParty[] = _("IN PARTY");
@@ -1742,23 +1742,23 @@ const u8 gText_TrainerHill2F[] = _("2F");
const u8 gText_TrainerHill3F[] = _("3F");
const u8 gText_TrainerHill4F[] = _("4F");
const u8 gText_TeachWhichMoveToPkmn[] = _("Teach which move to {STR_VAR_1}?");
-const u8 gText_TeachX[] = _("Teach {STR_VAR_2}?");
-const u8 gText_PkmnLearnedMove4[] = _("{STR_VAR_1} learned\n{STR_VAR_2}!");
-const u8 gText_PkmnTryingToLearnMove[] = _("{STR_VAR_1} is trying to learn\n{STR_VAR_2}.\pBut {STR_VAR_1} can't learn more\nthan four moves.\pDelete an older move to make\nroom for {STR_VAR_2}?");
-const u8 gText_StopTryingToTeachMove[] = _("Stop trying to teach\n{STR_VAR_2}?");
-const u8 gText_12AndPoof[] = _("{PAUSE 32}1, {PAUSE 15}2, and {PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE 0x0038}Poof!\p");
-const u8 gText_PkmnForgotMoveAndLearnedNew[] = _("{STR_VAR_1} forgot {STR_VAR_3}.\pAnd…\p{STR_VAR_1} learned {STR_VAR_2}.");
+const u8 gText_MoveRelearnerTeachMoveConfirm[] = _("Teach {STR_VAR_2}?");
+const u8 gText_MoveRelearnerPkmnLearnedMove[] = _("{STR_VAR_1} learned\n{STR_VAR_2}!");
+const u8 gText_MoveRelearnerPkmnTryingToLearnMove[] = _("{STR_VAR_1} is trying to learn\n{STR_VAR_2}.\pBut {STR_VAR_1} can't learn more\nthan four moves.\pDelete an older move to make\nroom for {STR_VAR_2}?");
+const u8 gText_MoveRelearnerStopTryingToTeachMove[] = _("Stop trying to teach\n{STR_VAR_2}?");
+const u8 gText_MoveRelearnerAndPoof[] = _("{PAUSE 32}1, {PAUSE 15}2, and {PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE 0x0038}Poof!\p");
+const u8 gText_MoveRelearnerPkmnForgotMoveAndLearnedNew[] = _("{STR_VAR_1} forgot {STR_VAR_3}.\pAnd…\p{STR_VAR_1} learned {STR_VAR_2}.");
const u8 gUnknown_085EF9C8[] = _("{STR_VAR_1} did not learn the\nmove {STR_VAR_2}.");
-const u8 gText_GiveUpTeachingNewMove[] = _("Give up trying to teach a new\nmove to {STR_VAR_1}?");
-const u8 gText_WhichMoveToForget2[] = _("Which move should be\nforgotten?\p");
-const u8 gText_BattleMoves2[] = _("BATTLE MOVES");
-const u8 gText_ContestMoves2[] = _("CONTEST MOVES");
+const u8 gText_MoveRelearnerGiveUp[] = _("Give up trying to teach a new\nmove to {STR_VAR_1}?");
+const u8 gText_MoveRelearnerWhichMoveToForget[] = _("Which move should be\nforgotten?\p");
+const u8 gText_MoveRelearnerBattleMoves[] = _("BATTLE MOVES");
+const u8 gText_MoveRelearnerContestMovesTitle[] = _("CONTEST MOVES");
const u8 gUnknown_085EFA4C[] = _("TYPE/");
-const u8 gText_PPSlash[] = _("PP/");
-const u8 gText_PowerSlash[] = _("POWER/");
-const u8 gText_AccuracySlash[] = _("ACCURACY/");
-const u8 gText_Appeal2[] = _("APPEAL");
-const u8 gText_Jam2[] = _("JAM");
+const u8 gText_MoveRelearnerPP[] = _("PP/");
+const u8 gText_MoveRelearnerPower[] = _("POWER/");
+const u8 gText_MoveRelearnerAccuracy[] = _("ACCURACY/");
+const u8 gText_MoveRelearnerAppeal[] = _("APPEAL");
+const u8 gText_MoveRelearnerJam[] = _("JAM");
const u8 gText_Kira[] = _("KIRA");
const u8 gText_Amy[] = _("AMY");
const u8 gText_John[] = _("JOHN");
diff --git a/src/task.c b/src/task.c
index 14b97a361..a2df66de8 100644
--- a/src/task.c
+++ b/src/task.c
@@ -1,9 +1,6 @@
#include "global.h"
#include "task.h"
-#define HEAD_SENTINEL 0xFE
-#define TAIL_SENTINEL 0xFF
-
struct Task gTasks[NUM_TASKS];
static void InsertTask(u8 newTaskId);
diff --git a/src/text.c b/src/text.c
index a439d3ced..be4bf2697 100644
--- a/src/text.c
+++ b/src/text.c
@@ -12,10 +12,6 @@
#include "menu.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);
-
EWRAM_DATA struct TextPrinter gTempTextPrinter = {0};
EWRAM_DATA struct TextPrinter gTextPrinters[NUM_TEXT_PRINTERS] = {0};
@@ -1581,7 +1577,7 @@ u16 RenderText(struct TextPrinter *textPrinter)
textPrinter->printerTemplate.currentChar++;
return 2;
case 15:
- FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, textPrinter->printerTemplate.bgColor | textPrinter->printerTemplate.bgColor << 4);
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y;
return 2;
@@ -1702,7 +1698,7 @@ u16 RenderText(struct TextPrinter *textPrinter)
case 2:
if (TextPrinterWaitWithDownArrow(textPrinter))
{
- FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, (textPrinter->printerTemplate.bgColor << 4) | textPrinter->printerTemplate.bgColor);
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y;
textPrinter->state = 0;
@@ -1724,12 +1720,12 @@ u16 RenderText(struct TextPrinter *textPrinter)
int speed = gWindowVerticalScrollSpeeds[scrollSpeed];
if (textPrinter->scrollDistance < speed)
{
- ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor);
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->scrollDistance = 0;
}
else
{
- ScrollWindow(textPrinter->printerTemplate.windowId, 0, speed, textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor);
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, speed, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->scrollDistance -= speed;
}
CopyWindowToVram(textPrinter->printerTemplate.windowId, 2);
diff --git a/src/tileset_anims.c b/src/tileset_anims.c
index f7c3cd482..087b75b7c 100644
--- a/src/tileset_anims.c
+++ b/src/tileset_anims.c
@@ -1,5 +1,5 @@
-// Includes
#include "global.h"
+#include "graphics.h"
#include "palette.h"
#include "util.h"
#include "battle_transition.h"
@@ -7,10 +7,6 @@
#include "battle_transition.h"
#include "fieldmap.h"
-// Static type declarations
-
-// Static RAM declarations
-
static EWRAM_DATA struct {
const u16 *src;
u16 *dest;
@@ -18,211 +14,209 @@ static EWRAM_DATA struct {
} sTilesetDMA3TransferBuffer[20] = {0};
static u8 sTilesetDMA3TransferBufferSize;
-static u16 sPrimaryTilesetCBCounter;
-static u16 sPrimaryTilesetCBBufferSize;
-static u16 sSecondaryTilesetCBCounter;
-static u16 sSecondaryTilesetCBBufferSize;
-static void (*sPrimaryTilesetCB)(u16);
-static void (*sSecondaryTilesetCB)(u16);
-
-// Static ROM declarations
-
-static void cur_mapheader_run_tileset1_func(void);
-static void cur_mapheader_run_tileset2_func(void);
-
-// .rodata
-
-
-const u16 gTilesetAnims_General0_Frame1[] = INCBIN_U16("data/tilesets/primary/general/anim/0/1.4bpp");
-
-const u16 gTilesetAnims_General0_Frame0[] = INCBIN_U16("data/tilesets/primary/general/anim/0/0.4bpp");
-
-const u16 gTilesetAnims_General0_Frame2[] = INCBIN_U16("data/tilesets/primary/general/anim/0/2.4bpp");
-
+static u16 sPrimaryTilesetAnimCounter;
+static u16 sPrimaryTilesetAnimCounterMax;
+static u16 sSecondaryTilesetAnimCounter;
+static u16 sSecondaryTilesetAnimCounterMax;
+static void (*sPrimaryTilesetAnimCallback)(u16);
+static void (*sSecondaryTilesetAnimCallback)(u16);
+
+static void _InitPrimaryTilesetAnimation(void);
+static void _InitSecondaryTilesetAnimation(void);
+static void TilesetAnim_General(u16);
+static void TilesetAnim_Building(u16);
+static void TilesetAnim_Rustboro(u16);
+static void TilesetAnim_Dewford(u16);
+static void TilesetAnim_Slateport(u16);
+static void TilesetAnim_Mauville(u16);
+static void TilesetAnim_Lavaridge(u16);
+static void TilesetAnim_EverGrande(u16);
+static void TilesetAnim_Pacifidlog(u16);
+static void TilesetAnim_Sootopolis(u16);
+static void TilesetAnim_BattleFrontierOutsideWest(u16);
+static void TilesetAnim_BattleFrontierOutsideEast(u16);
+static void TilesetAnim_Underwater(u16);
+static void TilesetAnim_SootopolisGym(u16);
+static void TilesetAnim_Cave(u16);
+static void TilesetAnim_EliteFour(u16);
+static void TilesetAnim_MauvilleGym(u16);
+static void TilesetAnim_BikeShop(u16);
+static void TilesetAnim_BattlePyramid(u16);
+static void TilesetAnim_BattleDome(u16);
+static void QueueAnimTiles_General_Flower(u16);
+static void QueueAnimTiles_General_Water(u16);
+static void QueueAnimTiles_General_SandWaterEdge(u16);
+static void QueueAnimTiles_General_Waterfall(u16);
+static void QueueAnimTiles_General_LandWaterEdge(u16);
+static void QueueAnimTiles_Building_TVTurnedOn(u16);
+static void QueueAnimTiles_Rustboro_WindyWater(u16, u8);
+static void QueueAnimTiles_Rustboro_Fountain(u16);
+static void QueueAnimTiles_Dewford_Flag(u16);
+static void QueueAnimTiles_Slateport_Balloons(u16);
+static void QueueAnimTiles_Mauville_Flowers(u16, u8);
+static void QueueAnimTiles_BikeShop_BlinkingLights(u16);
+static void QueueAnimTiles_BattlePyramid_Torch(u16);
+static void QueueAnimTiles_BattlePyramid_StatueShadow(u16);
+static void BlendAnimPalette_BattleDome_FloorLights(u16);
+static void BlendAnimPalette_BattleDome_FloorLightsNoBlend(u16);
+static void QueueAnimTiles_Lavaridge_Steam(u8);
+static void QueueAnimTiles_Lavaridge_Lava(u16);
+static void QueueAnimTiles_EverGrande_Flowers(u16, u8);
+static void QueueAnimTiles_Pacifidlog_LogBridges(u8);
+static void QueueAnimTiles_Pacifidlog_WaterCurrents(u8);
+static void QueueAnimTiles_Sootopolis_StormyWater(u16);
+static void QueueAnimTiles_Underwater_Seaweed(u8);
+static void QueueAnimTiles_Cave_Lava(u16);
+static void QueueAnimTiles_BattleFrontierOutsideWest_Flag(u16);
+static void QueueAnimTiles_BattleFrontierOutsideEast_Flag(u16);
+static void QueueAnimTiles_MauvilleGym_ElectricGates(u16);
+static void QueueAnimTiles_SootopolisGym_Waterfalls(u16);
+static void QueueAnimTiles_EliteFour_GroundLights(u16);
+static void QueueAnimTiles_EliteFour_WallLights(u16);
+
+const u16 gTilesetAnims_General_Flower_Frame1[] = INCBIN_U16("data/tilesets/primary/general/anim/flower/1.4bpp");
+const u16 gTilesetAnims_General_Flower_Frame0[] = INCBIN_U16("data/tilesets/primary/general/anim/flower/0.4bpp");
+const u16 gTilesetAnims_General_Flower_Frame2[] = INCBIN_U16("data/tilesets/primary/general/anim/flower/2.4bpp");
const u16 tileset_anims_space_0[16] = {};
-const u16 *const gTilesetAnims_General0[] = {
- gTilesetAnims_General0_Frame0,
- gTilesetAnims_General0_Frame1,
- gTilesetAnims_General0_Frame0,
- gTilesetAnims_General0_Frame2
+const u16 *const gTilesetAnims_General_Flower[] = {
+ gTilesetAnims_General_Flower_Frame0,
+ gTilesetAnims_General_Flower_Frame1,
+ gTilesetAnims_General_Flower_Frame0,
+ gTilesetAnims_General_Flower_Frame2
};
-const u16 gTilesetAnims_General1_Frame0[] = INCBIN_U16("data/tilesets/primary/general/anim/1/0.4bpp");
-
-const u16 gTilesetAnims_General1_Frame1[] = INCBIN_U16("data/tilesets/primary/general/anim/1/1.4bpp");
-
-const u16 gTilesetAnims_General1_Frame2[] = INCBIN_U16("data/tilesets/primary/general/anim/1/2.4bpp");
-
-const u16 gTilesetAnims_General1_Frame3[] = INCBIN_U16("data/tilesets/primary/general/anim/1/3.4bpp");
-
-const u16 gTilesetAnims_General1_Frame4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/4.4bpp");
-
-const u16 gTilesetAnims_General1_Frame5[] = INCBIN_U16("data/tilesets/primary/general/anim/1/5.4bpp");
-
-const u16 gTilesetAnims_General1_Frame6[] = INCBIN_U16("data/tilesets/primary/general/anim/1/6.4bpp");
-
-const u16 gTilesetAnims_General1_Frame7[] = INCBIN_U16("data/tilesets/primary/general/anim/1/7.4bpp");
-
-const u16 *const gTilesetAnims_General1[] = {
- gTilesetAnims_General1_Frame0,
- gTilesetAnims_General1_Frame1,
- gTilesetAnims_General1_Frame2,
- gTilesetAnims_General1_Frame3,
- gTilesetAnims_General1_Frame4,
- gTilesetAnims_General1_Frame5,
- gTilesetAnims_General1_Frame6,
- gTilesetAnims_General1_Frame7
+const u16 gTilesetAnims_General_Water_Frame0[] = INCBIN_U16("data/tilesets/primary/general/anim/water/0.4bpp");
+const u16 gTilesetAnims_General_Water_Frame1[] = INCBIN_U16("data/tilesets/primary/general/anim/water/1.4bpp");
+const u16 gTilesetAnims_General_Water_Frame2[] = INCBIN_U16("data/tilesets/primary/general/anim/water/2.4bpp");
+const u16 gTilesetAnims_General_Water_Frame3[] = INCBIN_U16("data/tilesets/primary/general/anim/water/3.4bpp");
+const u16 gTilesetAnims_General_Water_Frame4[] = INCBIN_U16("data/tilesets/primary/general/anim/water/4.4bpp");
+const u16 gTilesetAnims_General_Water_Frame5[] = INCBIN_U16("data/tilesets/primary/general/anim/water/5.4bpp");
+const u16 gTilesetAnims_General_Water_Frame6[] = INCBIN_U16("data/tilesets/primary/general/anim/water/6.4bpp");
+const u16 gTilesetAnims_General_Water_Frame7[] = INCBIN_U16("data/tilesets/primary/general/anim/water/7.4bpp");
+
+const u16 *const gTilesetAnims_General_Water[] = {
+ gTilesetAnims_General_Water_Frame0,
+ gTilesetAnims_General_Water_Frame1,
+ gTilesetAnims_General_Water_Frame2,
+ gTilesetAnims_General_Water_Frame3,
+ gTilesetAnims_General_Water_Frame4,
+ gTilesetAnims_General_Water_Frame5,
+ gTilesetAnims_General_Water_Frame6,
+ gTilesetAnims_General_Water_Frame7
};
-const u16 gTilesetAnims_General2_Frame0[] = INCBIN_U16("data/tilesets/primary/general/anim/2/0.4bpp");
-
-const u16 gTilesetAnims_General2_Frame1[] = INCBIN_U16("data/tilesets/primary/general/anim/2/1.4bpp");
-
-const u16 gTilesetAnims_General2_Frame2[] = INCBIN_U16("data/tilesets/primary/general/anim/2/2.4bpp");
-
-const u16 gTilesetAnims_General2_Frame3[] = INCBIN_U16("data/tilesets/primary/general/anim/2/3.4bpp");
-
-const u16 gTilesetAnims_General2_Frame4[] = INCBIN_U16("data/tilesets/primary/general/anim/2/4.4bpp");
-
-const u16 gTilesetAnims_General2_Frame5[] = INCBIN_U16("data/tilesets/primary/general/anim/2/5.4bpp");
-
-const u16 gTilesetAnims_General2_Frame6[] = INCBIN_U16("data/tilesets/primary/general/anim/2/6.4bpp");
-
-const u16 *const gTilesetAnims_General2[] = {
- gTilesetAnims_General2_Frame0,
- gTilesetAnims_General2_Frame1,
- gTilesetAnims_General2_Frame2,
- gTilesetAnims_General2_Frame3,
- gTilesetAnims_General2_Frame4,
- gTilesetAnims_General2_Frame5,
- gTilesetAnims_General2_Frame6,
- gTilesetAnims_General2_Frame0
+const u16 gTilesetAnims_General_SandWaterEdge_Frame0[] = INCBIN_U16("data/tilesets/primary/general/anim/sand_water_edge/0.4bpp");
+const u16 gTilesetAnims_General_SandWaterEdge_Frame1[] = INCBIN_U16("data/tilesets/primary/general/anim/sand_water_edge/1.4bpp");
+const u16 gTilesetAnims_General_SandWaterEdge_Frame2[] = INCBIN_U16("data/tilesets/primary/general/anim/sand_water_edge/2.4bpp");
+const u16 gTilesetAnims_General_SandWaterEdge_Frame3[] = INCBIN_U16("data/tilesets/primary/general/anim/sand_water_edge/3.4bpp");
+const u16 gTilesetAnims_General_SandWaterEdge_Frame4[] = INCBIN_U16("data/tilesets/primary/general/anim/sand_water_edge/4.4bpp");
+const u16 gTilesetAnims_General_SandWaterEdge_Frame5[] = INCBIN_U16("data/tilesets/primary/general/anim/sand_water_edge/5.4bpp");
+const u16 gTilesetAnims_General_SandWaterEdge_Frame6[] = INCBIN_U16("data/tilesets/primary/general/anim/sand_water_edge/6.4bpp");
+
+const u16 *const gTilesetAnims_General_SandWaterEdge[] = {
+ gTilesetAnims_General_SandWaterEdge_Frame0,
+ gTilesetAnims_General_SandWaterEdge_Frame1,
+ gTilesetAnims_General_SandWaterEdge_Frame2,
+ gTilesetAnims_General_SandWaterEdge_Frame3,
+ gTilesetAnims_General_SandWaterEdge_Frame4,
+ gTilesetAnims_General_SandWaterEdge_Frame5,
+ gTilesetAnims_General_SandWaterEdge_Frame6,
+ gTilesetAnims_General_SandWaterEdge_Frame0
};
-const u16 gTilesetAnims_General3_Frame0[] = INCBIN_U16("data/tilesets/primary/general/anim/3/0.4bpp");
-
-const u16 gTilesetAnims_General3_Frame1[] = INCBIN_U16("data/tilesets/primary/general/anim/3/1.4bpp");
+const u16 gTilesetAnims_General_Waterfall_Frame0[] = INCBIN_U16("data/tilesets/primary/general/anim/waterfall/0.4bpp");
+const u16 gTilesetAnims_General_Waterfall_Frame1[] = INCBIN_U16("data/tilesets/primary/general/anim/waterfall/1.4bpp");
+const u16 gTilesetAnims_General_Waterfall_Frame2[] = INCBIN_U16("data/tilesets/primary/general/anim/waterfall/2.4bpp");
+const u16 gTilesetAnims_General_Waterfall_Frame3[] = INCBIN_U16("data/tilesets/primary/general/anim/waterfall/3.4bpp");
-const u16 gTilesetAnims_General3_Frame2[] = INCBIN_U16("data/tilesets/primary/general/anim/3/2.4bpp");
-
-const u16 gTilesetAnims_General3_Frame3[] = INCBIN_U16("data/tilesets/primary/general/anim/3/3.4bpp");
-
-const u16 *const gTilesetAnims_General3[] = {
- gTilesetAnims_General3_Frame0,
- gTilesetAnims_General3_Frame1,
- gTilesetAnims_General3_Frame2,
- gTilesetAnims_General3_Frame3
+const u16 *const gTilesetAnims_General_Waterfall[] = {
+ gTilesetAnims_General_Waterfall_Frame0,
+ gTilesetAnims_General_Waterfall_Frame1,
+ gTilesetAnims_General_Waterfall_Frame2,
+ gTilesetAnims_General_Waterfall_Frame3
};
-const u16 gTilesetAnims_General4_Frame0[] = INCBIN_U16("data/tilesets/primary/general/anim/4/0.4bpp");
-
-const u16 gTilesetAnims_General4_Frame1[] = INCBIN_U16("data/tilesets/primary/general/anim/4/1.4bpp");
-
-const u16 gTilesetAnims_General4_Frame2[] = INCBIN_U16("data/tilesets/primary/general/anim/4/2.4bpp");
+const u16 gTilesetAnims_General_LandWaterEdge_Frame0[] = INCBIN_U16("data/tilesets/primary/general/anim/land_water_edge/0.4bpp");
+const u16 gTilesetAnims_General_LandWaterEdge_Frame1[] = INCBIN_U16("data/tilesets/primary/general/anim/land_water_edge/1.4bpp");
+const u16 gTilesetAnims_General_LandWaterEdge_Frame2[] = INCBIN_U16("data/tilesets/primary/general/anim/land_water_edge/2.4bpp");
+const u16 gTilesetAnims_General_LandWaterEdge_Frame3[] = INCBIN_U16("data/tilesets/primary/general/anim/land_water_edge/3.4bpp");
-const u16 gTilesetAnims_General4_Frame3[] = INCBIN_U16("data/tilesets/primary/general/anim/4/3.4bpp");
-
-const u16 *const gTilesetAnims_General4[] = {
- gTilesetAnims_General4_Frame0,
- gTilesetAnims_General4_Frame1,
- gTilesetAnims_General4_Frame2,
- gTilesetAnims_General4_Frame3
+const u16 *const gTilesetAnims_General_LandWaterEdge[] = {
+ gTilesetAnims_General_LandWaterEdge_Frame0,
+ gTilesetAnims_General_LandWaterEdge_Frame1,
+ gTilesetAnims_General_LandWaterEdge_Frame2,
+ gTilesetAnims_General_LandWaterEdge_Frame3
};
-const u16 gTilesetAnims_Lavaridge0_Frame0[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/0.4bpp");
-
-const u16 gTilesetAnims_Lavaridge0_Frame1[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/1.4bpp");
-
-const u16 gTilesetAnims_Lavaridge0_Frame2[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/2.4bpp");
+const u16 gTilesetAnims_Lavaridge_Steam_Frame0[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/steam/0.4bpp");
+const u16 gTilesetAnims_Lavaridge_Steam_Frame1[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/steam/1.4bpp");
+const u16 gTilesetAnims_Lavaridge_Steam_Frame2[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/steam/2.4bpp");
+const u16 gTilesetAnims_Lavaridge_Steam_Frame3[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/steam/3.4bpp");
-const u16 gTilesetAnims_Lavaridge0_Frame3[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/3.4bpp");
-
-const u16 *const gTilesetAnims_Lavaridge0[] = {
- gTilesetAnims_Lavaridge0_Frame0,
- gTilesetAnims_Lavaridge0_Frame1,
- gTilesetAnims_Lavaridge0_Frame2,
- gTilesetAnims_Lavaridge0_Frame3
+const u16 *const gTilesetAnims_Lavaridge_Steam[] = {
+ gTilesetAnims_Lavaridge_Steam_Frame0,
+ gTilesetAnims_Lavaridge_Steam_Frame1,
+ gTilesetAnims_Lavaridge_Steam_Frame2,
+ gTilesetAnims_Lavaridge_Steam_Frame3
};
-const u16 gTilesetAnims_Pacifidlog0_Frame0[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/0/0.4bpp");
-
-const u16 gTilesetAnims_Pacifidlog0_Frame1[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/0/1.4bpp");
-
-const u16 gTilesetAnims_Pacifidlog0_Frame2[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/0/2.4bpp");
+const u16 gTilesetAnims_Pacifidlog_LogBridges_Frame0[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/log_bridges/0.4bpp");
+const u16 gTilesetAnims_Pacifidlog_LogBridges_Frame1[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/log_bridges/1.4bpp");
+const u16 gTilesetAnims_Pacifidlog_LogBridges_Frame2[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/log_bridges/2.4bpp");
-const u16 *const gTilesetAnims_Pacifidlog0[] = {
- gTilesetAnims_Pacifidlog0_Frame0,
- gTilesetAnims_Pacifidlog0_Frame1,
- gTilesetAnims_Pacifidlog0_Frame2,
- gTilesetAnims_Pacifidlog0_Frame1
+const u16 *const gTilesetAnims_Pacifidlog_LogBridges[] = {
+ gTilesetAnims_Pacifidlog_LogBridges_Frame0,
+ gTilesetAnims_Pacifidlog_LogBridges_Frame1,
+ gTilesetAnims_Pacifidlog_LogBridges_Frame2,
+ gTilesetAnims_Pacifidlog_LogBridges_Frame1
};
-const u16 gTilesetAnims_Underwater0_Frame0[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/0.4bpp");
-
-const u16 gTilesetAnims_Underwater0_Frame1[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/1.4bpp");
-
-const u16 gTilesetAnims_Underwater0_Frame2[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/2.4bpp");
-
-const u16 gTilesetAnims_Underwater0_Frame3[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/3.4bpp");
+const u16 gTilesetAnims_Underwater_Seaweed_Frame0[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/seaweed/0.4bpp");
+const u16 gTilesetAnims_Underwater_Seaweed_Frame1[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/seaweed/1.4bpp");
+const u16 gTilesetAnims_Underwater_Seaweed_Frame2[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/seaweed/2.4bpp");
+const u16 gTilesetAnims_Underwater_Seaweed_Frame3[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/seaweed/3.4bpp");
-const u16 *const gTilesetAnims_Underwater0[] = {
- gTilesetAnims_Underwater0_Frame0,
- gTilesetAnims_Underwater0_Frame1,
- gTilesetAnims_Underwater0_Frame2,
- gTilesetAnims_Underwater0_Frame3
+const u16 *const gTilesetAnims_Underwater_Seaweed[] = {
+ gTilesetAnims_Underwater_Seaweed_Frame0,
+ gTilesetAnims_Underwater_Seaweed_Frame1,
+ gTilesetAnims_Underwater_Seaweed_Frame2,
+ gTilesetAnims_Underwater_Seaweed_Frame3
};
-const u16 gTilesetAnims_Pacifidlog1_Frame0[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/0.4bpp");
-
-const u16 gTilesetAnims_Pacifidlog1_Frame1[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/1.4bpp");
-
-const u16 gTilesetAnims_Pacifidlog1_Frame2[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/2.4bpp");
-
-const u16 gTilesetAnims_Pacifidlog1_Frame3[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/3.4bpp");
-
-const u16 gTilesetAnims_Pacifidlog1_Frame4[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/4.4bpp");
-
-const u16 gTilesetAnims_Pacifidlog1_Frame5[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/5.4bpp");
-
-const u16 gTilesetAnims_Pacifidlog1_Frame6[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/6.4bpp");
-
-const u16 gTilesetAnims_Pacifidlog1_Frame7[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/7.4bpp");
-
-const u16 *const gTilesetAnims_Pacifidlog1[] = {
- gTilesetAnims_Pacifidlog1_Frame0,
- gTilesetAnims_Pacifidlog1_Frame1,
- gTilesetAnims_Pacifidlog1_Frame2,
- gTilesetAnims_Pacifidlog1_Frame3,
- gTilesetAnims_Pacifidlog1_Frame4,
- gTilesetAnims_Pacifidlog1_Frame5,
- gTilesetAnims_Pacifidlog1_Frame6,
- gTilesetAnims_Pacifidlog1_Frame7
+const u16 gTilesetAnims_Pacifidlog_WaterCurrents_Frame0[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/water_currents/0.4bpp");
+const u16 gTilesetAnims_Pacifidlog_WaterCurrents_Frame1[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/water_currents/1.4bpp");
+const u16 gTilesetAnims_Pacifidlog_WaterCurrents_Frame2[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/water_currents/2.4bpp");
+const u16 gTilesetAnims_Pacifidlog_WaterCurrents_Frame3[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/water_currents/3.4bpp");
+const u16 gTilesetAnims_Pacifidlog_WaterCurrents_Frame4[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/water_currents/4.4bpp");
+const u16 gTilesetAnims_Pacifidlog_WaterCurrents_Frame5[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/water_currents/5.4bpp");
+const u16 gTilesetAnims_Pacifidlog_WaterCurrents_Frame6[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/water_currents/6.4bpp");
+const u16 gTilesetAnims_Pacifidlog_WaterCurrents_Frame7[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/water_currents/7.4bpp");
+
+const u16 *const gTilesetAnims_Pacifidlog_WaterCurrents[] = {
+ gTilesetAnims_Pacifidlog_WaterCurrents_Frame0,
+ gTilesetAnims_Pacifidlog_WaterCurrents_Frame1,
+ gTilesetAnims_Pacifidlog_WaterCurrents_Frame2,
+ gTilesetAnims_Pacifidlog_WaterCurrents_Frame3,
+ gTilesetAnims_Pacifidlog_WaterCurrents_Frame4,
+ gTilesetAnims_Pacifidlog_WaterCurrents_Frame5,
+ gTilesetAnims_Pacifidlog_WaterCurrents_Frame6,
+ gTilesetAnims_Pacifidlog_WaterCurrents_Frame7
};
-const u16 gTilesetAnims_Mauville0a_Frame0[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/0.4bpp");
-
-const u16 gTilesetAnims_Mauville0a_Frame1[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/1.4bpp");
-
-const u16 gTilesetAnims_Mauville0a_Frame2[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/2.4bpp");
-
-const u16 gTilesetAnims_Mauville0a_Frame3[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/3.4bpp");
-
-const u16 gTilesetAnims_Mauville1a_Frame1[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/1/a/1.4bpp");
-
-const u16 gTilesetAnims_Mauville0b_Frame0[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/0.4bpp");
-
-const u16 gTilesetAnims_Mauville0b_Frame1[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/1.4bpp");
-
-const u16 gTilesetAnims_Mauville0b_Frame2[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/2.4bpp");
-
-const u16 gTilesetAnims_Mauville0b_Frame3[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/3.4bpp");
-
-const u16 gTilesetAnims_Mauville1b_Frame1[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/1/b/1.4bpp");
-
+const u16 gTilesetAnims_Mauville_Flower1_Frame0[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/flower_1/0.4bpp");
+const u16 gTilesetAnims_Mauville_Flower1_Frame1[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/flower_1/1.4bpp");
+const u16 gTilesetAnims_Mauville_Flower1_Frame2[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/flower_1/2.4bpp");
+const u16 gTilesetAnims_Mauville_Flower1_Frame3[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/flower_1/3.4bpp");
+const u16 gTilesetAnims_Mauville_Flower1_Frame4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/flower_1/4.4bpp");
+const u16 gTilesetAnims_Mauville_Flower2_Frame0[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/flower_2/0.4bpp");
+const u16 gTilesetAnims_Mauville_Flower2_Frame1[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/flower_2/1.4bpp");
+const u16 gTilesetAnims_Mauville_Flower2_Frame2[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/flower_2/2.4bpp");
+const u16 gTilesetAnims_Mauville_Flower2_Frame3[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/flower_2/3.4bpp");
+const u16 gTilesetAnims_Mauville_Flower2_Frame4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/flower_2/4.4bpp");
const u16 tileset_anims_space_1[16] = {};
-u16 *const gTilesetAnims_MauvilleVDests0[] = {
+u16 *const gTilesetAnims_Mauville_Flower1_VDests[] = {
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 96)),
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 100)),
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 104)),
@@ -233,7 +227,7 @@ u16 *const gTilesetAnims_MauvilleVDests0[] = {
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 124))
};
-u16 *const gTilesetAnims_MauvilleVDests1[] = {
+u16 *const gTilesetAnims_Mauville_Flower2_VDests[] = {
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 128)),
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 132)),
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 136)),
@@ -244,67 +238,60 @@ u16 *const gTilesetAnims_MauvilleVDests1[] = {
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 156))
};
-const u16 *const gTilesetAnims_Mauville0a[] = {
- gTilesetAnims_Mauville0a_Frame0,
- gTilesetAnims_Mauville0a_Frame0,
- gTilesetAnims_Mauville0a_Frame1,
- gTilesetAnims_Mauville0a_Frame2,
- gTilesetAnims_Mauville0a_Frame3,
- gTilesetAnims_Mauville0a_Frame3,
- gTilesetAnims_Mauville0a_Frame3,
- gTilesetAnims_Mauville0a_Frame3,
- gTilesetAnims_Mauville0a_Frame3,
- gTilesetAnims_Mauville0a_Frame3,
- gTilesetAnims_Mauville0a_Frame2,
- gTilesetAnims_Mauville0a_Frame1
+const u16 *const gTilesetAnims_Mauville_Flower1[] = {
+ gTilesetAnims_Mauville_Flower1_Frame0,
+ gTilesetAnims_Mauville_Flower1_Frame0,
+ gTilesetAnims_Mauville_Flower1_Frame1,
+ gTilesetAnims_Mauville_Flower1_Frame2,
+ gTilesetAnims_Mauville_Flower1_Frame3,
+ gTilesetAnims_Mauville_Flower1_Frame3,
+ gTilesetAnims_Mauville_Flower1_Frame3,
+ gTilesetAnims_Mauville_Flower1_Frame3,
+ gTilesetAnims_Mauville_Flower1_Frame3,
+ gTilesetAnims_Mauville_Flower1_Frame3,
+ gTilesetAnims_Mauville_Flower1_Frame2,
+ gTilesetAnims_Mauville_Flower1_Frame1
};
-const u16 *const gTilesetAnims_Mauville0b[] = {
- gTilesetAnims_Mauville0b_Frame0,
- gTilesetAnims_Mauville0b_Frame0,
- gTilesetAnims_Mauville0b_Frame1,
- gTilesetAnims_Mauville0b_Frame2,
- gTilesetAnims_Mauville0b_Frame3,
- gTilesetAnims_Mauville0b_Frame3,
- gTilesetAnims_Mauville0b_Frame3,
- gTilesetAnims_Mauville0b_Frame3,
- gTilesetAnims_Mauville0b_Frame3,
- gTilesetAnims_Mauville0b_Frame3,
- gTilesetAnims_Mauville0b_Frame2,
- gTilesetAnims_Mauville0b_Frame1
+const u16 *const gTilesetAnims_Mauville_Flower2[] = {
+ gTilesetAnims_Mauville_Flower2_Frame0,
+ gTilesetAnims_Mauville_Flower2_Frame0,
+ gTilesetAnims_Mauville_Flower2_Frame1,
+ gTilesetAnims_Mauville_Flower2_Frame2,
+ gTilesetAnims_Mauville_Flower2_Frame3,
+ gTilesetAnims_Mauville_Flower2_Frame3,
+ gTilesetAnims_Mauville_Flower2_Frame3,
+ gTilesetAnims_Mauville_Flower2_Frame3,
+ gTilesetAnims_Mauville_Flower2_Frame3,
+ gTilesetAnims_Mauville_Flower2_Frame3,
+ gTilesetAnims_Mauville_Flower2_Frame2,
+ gTilesetAnims_Mauville_Flower2_Frame1
};
-const u16 *const gTilesetAnims_Mauville1a[] = {
- gTilesetAnims_Mauville0a_Frame0,
- gTilesetAnims_Mauville0a_Frame0,
- gTilesetAnims_Mauville1a_Frame1,
- gTilesetAnims_Mauville1a_Frame1
+const u16 *const gTilesetAnims_Mauville_Flower1_B[] = {
+ gTilesetAnims_Mauville_Flower1_Frame0,
+ gTilesetAnims_Mauville_Flower1_Frame0,
+ gTilesetAnims_Mauville_Flower1_Frame4,
+ gTilesetAnims_Mauville_Flower1_Frame4
};
-const u16 *const gTilesetAnims_Mauville1b[] = {
- gTilesetAnims_Mauville0b_Frame0,
- gTilesetAnims_Mauville0b_Frame0,
- gTilesetAnims_Mauville1b_Frame1,
- gTilesetAnims_Mauville1b_Frame1
+const u16 *const gTilesetAnims_Mauville_Flower2_B[] = {
+ gTilesetAnims_Mauville_Flower2_Frame0,
+ gTilesetAnims_Mauville_Flower2_Frame0,
+ gTilesetAnims_Mauville_Flower2_Frame4,
+ gTilesetAnims_Mauville_Flower2_Frame4
};
-const u16 gTilesetAnims_Rustboro0_Frame0[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/0.4bpp");
-
-const u16 gTilesetAnims_Rustboro0_Frame1[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/1.4bpp");
-
-const u16 gTilesetAnims_Rustboro0_Frame2[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/2.4bpp");
-
-const u16 gTilesetAnims_Rustboro0_Frame3[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/3.4bpp");
-
-const u16 gTilesetAnims_Rustboro0_Frame4[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/4.4bpp");
-
-const u16 gTilesetAnims_Rustboro0_Frame5[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/5.4bpp");
-
-const u16 gTilesetAnims_Rustboro0_Frame6[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/6.4bpp");
-
-const u16 gTilesetAnims_Rustboro0_Frame7[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/7.4bpp");
+const u16 gTilesetAnims_Rustboro_WindyWater_Frame0[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/windy_water/0.4bpp");
+const u16 gTilesetAnims_Rustboro_WindyWater_Frame1[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/windy_water/1.4bpp");
+const u16 gTilesetAnims_Rustboro_WindyWater_Frame2[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/windy_water/2.4bpp");
+const u16 gTilesetAnims_Rustboro_WindyWater_Frame3[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/windy_water/3.4bpp");
+const u16 gTilesetAnims_Rustboro_WindyWater_Frame4[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/windy_water/4.4bpp");
+const u16 gTilesetAnims_Rustboro_WindyWater_Frame5[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/windy_water/5.4bpp");
+const u16 gTilesetAnims_Rustboro_WindyWater_Frame6[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/windy_water/6.4bpp");
+const u16 gTilesetAnims_Rustboro_WindyWater_Frame7[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/windy_water/7.4bpp");
-u16 *const gTilesetAnims_RustboroVDests0[] = {
+u16 *const gTilesetAnims_Rustboro_WindyWater_VDests[] = {
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 128)),
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 132)),
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 136)),
@@ -315,72 +302,54 @@ u16 *const gTilesetAnims_RustboroVDests0[] = {
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 156))
};
-const u16 *const gTilesetAnims_Rustboro0[] = {
- gTilesetAnims_Rustboro0_Frame0,
- gTilesetAnims_Rustboro0_Frame1,
- gTilesetAnims_Rustboro0_Frame2,
- gTilesetAnims_Rustboro0_Frame3,
- gTilesetAnims_Rustboro0_Frame4,
- gTilesetAnims_Rustboro0_Frame5,
- gTilesetAnims_Rustboro0_Frame6,
- gTilesetAnims_Rustboro0_Frame7
+const u16 *const gTilesetAnims_Rustboro_WindyWater[] = {
+ gTilesetAnims_Rustboro_WindyWater_Frame0,
+ gTilesetAnims_Rustboro_WindyWater_Frame1,
+ gTilesetAnims_Rustboro_WindyWater_Frame2,
+ gTilesetAnims_Rustboro_WindyWater_Frame3,
+ gTilesetAnims_Rustboro_WindyWater_Frame4,
+ gTilesetAnims_Rustboro_WindyWater_Frame5,
+ gTilesetAnims_Rustboro_WindyWater_Frame6,
+ gTilesetAnims_Rustboro_WindyWater_Frame7
};
-const u16 gTilesetAnims_Rustboro1_Frame0[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/1/0.4bpp");
-
-const u16 gTilesetAnims_Rustboro1_Frame1[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/1/1.4bpp");
-
+const u16 gTilesetAnims_Rustboro_Fountain_Frame0[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/fountain/0.4bpp");
+const u16 gTilesetAnims_Rustboro_Fountain_Frame1[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/fountain/1.4bpp");
const u16 tileset_anims_space_2[16] = {};
-const u16 *const gTilesetAnims_Rustboro1[] = {
- gTilesetAnims_Rustboro1_Frame0,
- gTilesetAnims_Rustboro1_Frame1
+const u16 *const gTilesetAnims_Rustboro_Fountain[] = {
+ gTilesetAnims_Rustboro_Fountain_Frame0,
+ gTilesetAnims_Rustboro_Fountain_Frame1
};
-const u16 gTilesetAnims_Lavaridge1_Cave0_Frame0[] = INCBIN_U16("data/tilesets/secondary/cave/anim/0.4bpp");
-
-const u16 gTilesetAnims_Lavaridge1_Cave0_Frame1[] = INCBIN_U16("data/tilesets/secondary/cave/anim/1.4bpp");
-
-const u16 gTilesetAnims_Lavaridge1_Cave0_Frame2[] = INCBIN_U16("data/tilesets/secondary/cave/anim/2.4bpp");
-
-const u16 gTilesetAnims_Lavaridge1_Cave0_Frame3[] = INCBIN_U16("data/tilesets/secondary/cave/anim/3.4bpp");
-
-const u16 gTilesetAnims_Lavaridge1_CaveUnused_Frame0[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/0.4bpp");
-
-const u16 gTilesetAnims_Lavaridge1_CaveUnused_Frame1[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/1.4bpp");
-
-const u16 gTilesetAnims_Lavaridge1_CaveUnused_Frame2[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/2.4bpp");
-
-const u16 gTilesetAnims_Lavaridge1_CaveUnused_Frame3[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/3.4bpp");
-
+const u16 gTilesetAnims_Lavaridge_Cave_Lava_Frame0[] = INCBIN_U16("data/tilesets/secondary/cave/anim/lava/0.4bpp");
+const u16 gTilesetAnims_Lavaridge_Cave_Lava_Frame1[] = INCBIN_U16("data/tilesets/secondary/cave/anim/lava/1.4bpp");
+const u16 gTilesetAnims_Lavaridge_Cave_Lava_Frame2[] = INCBIN_U16("data/tilesets/secondary/cave/anim/lava/2.4bpp");
+const u16 gTilesetAnims_Lavaridge_Cave_Lava_Frame3[] = INCBIN_U16("data/tilesets/secondary/cave/anim/lava/3.4bpp");
+const u16 gTilesetAnims_Lavaridge_Cave_Lava_Frame4[] = INCBIN_U16("data/tilesets/secondary/cave/anim/lava/4.4bpp");
+const u16 gTilesetAnims_Lavaridge_Cave_Lava_Frame5[] = INCBIN_U16("data/tilesets/secondary/cave/anim/lava/5.4bpp");
+const u16 gTilesetAnims_Lavaridge_Cave_Lava_Frame6[] = INCBIN_U16("data/tilesets/secondary/cave/anim/lava/6.4bpp");
+const u16 gTilesetAnims_Lavaridge_Cave_Lava_Frame7[] = INCBIN_U16("data/tilesets/secondary/cave/anim/lava/7.4bpp");
const u16 tileset_anims_space_3[16] = {};
-const u16 *const gTilesetAnims_Lavaridge1_Cave0[] = {
- gTilesetAnims_Lavaridge1_Cave0_Frame0,
- gTilesetAnims_Lavaridge1_Cave0_Frame1,
- gTilesetAnims_Lavaridge1_Cave0_Frame2,
- gTilesetAnims_Lavaridge1_Cave0_Frame3
+const u16 *const gTilesetAnims_Lavaridge_Cave_Lava[] = {
+ gTilesetAnims_Lavaridge_Cave_Lava_Frame0,
+ gTilesetAnims_Lavaridge_Cave_Lava_Frame1,
+ gTilesetAnims_Lavaridge_Cave_Lava_Frame2,
+ gTilesetAnims_Lavaridge_Cave_Lava_Frame3
};
-const u16 gTilesetAnims_EverGrande0_Frame0[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/0.4bpp");
-
-const u16 gTilesetAnims_EverGrande0_Frame1[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/1.4bpp");
-
-const u16 gTilesetAnims_EverGrande0_Frame2[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/2.4bpp");
-
-const u16 gTilesetAnims_EverGrande0_Frame3[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/3.4bpp");
-
-const u16 gTilesetAnims_EverGrande0_Frame4[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/4.4bpp");
-
-const u16 gTilesetAnims_EverGrande0_Frame5[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/5.4bpp");
-
-const u16 gTilesetAnims_EverGrande0_Frame6[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/6.4bpp");
-
-const u16 gTilesetAnims_EverGrande0_Frame7[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/7.4bpp");
-
+const u16 gTilesetAnims_EverGrande_Flowers_Frame0[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/flowers/0.4bpp");
+const u16 gTilesetAnims_EverGrande_Flowers_Frame1[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/flowers/1.4bpp");
+const u16 gTilesetAnims_EverGrande_Flowers_Frame2[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/flowers/2.4bpp");
+const u16 gTilesetAnims_EverGrande_Flowers_Frame3[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/flowers/3.4bpp");
+const u16 gTilesetAnims_EverGrande_Flowers_Frame4[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/flowers/4.4bpp");
+const u16 gTilesetAnims_EverGrande_Flowers_Frame5[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/flowers/5.4bpp");
+const u16 gTilesetAnims_EverGrande_Flowers_Frame6[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/flowers/6.4bpp");
+const u16 gTilesetAnims_EverGrande_Flowers_Frame7[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/flowers/7.4bpp");
const u16 tileset_anims_space_4[16] = {};
-u16 *const gTilesetAnims_EverGrandeVDests0[] = {
+u16 *const gTilesetAnims_EverGrande_VDests[] = {
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 224)),
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 228)),
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 232)),
@@ -391,243 +360,190 @@ u16 *const gTilesetAnims_EverGrandeVDests0[] = {
(u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 252))
};
-const u16 *const gTilesetAnims_EverGrande0[] = {
- gTilesetAnims_EverGrande0_Frame0,
- gTilesetAnims_EverGrande0_Frame1,
- gTilesetAnims_EverGrande0_Frame2,
- gTilesetAnims_EverGrande0_Frame3,
- gTilesetAnims_EverGrande0_Frame4,
- gTilesetAnims_EverGrande0_Frame5,
- gTilesetAnims_EverGrande0_Frame6,
- gTilesetAnims_EverGrande0_Frame7
+const u16 *const gTilesetAnims_EverGrande_Flowers[] = {
+ gTilesetAnims_EverGrande_Flowers_Frame0,
+ gTilesetAnims_EverGrande_Flowers_Frame1,
+ gTilesetAnims_EverGrande_Flowers_Frame2,
+ gTilesetAnims_EverGrande_Flowers_Frame3,
+ gTilesetAnims_EverGrande_Flowers_Frame4,
+ gTilesetAnims_EverGrande_Flowers_Frame5,
+ gTilesetAnims_EverGrande_Flowers_Frame6,
+ gTilesetAnims_EverGrande_Flowers_Frame7
};
-const u16 gTilesetAnims_Dewford0_Frame0[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/0.4bpp");
-
-const u16 gTilesetAnims_Dewford0_Frame1[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/1.4bpp");
+const u16 gTilesetAnims_Dewford_Flag_Frame0[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/flag/0.4bpp");
+const u16 gTilesetAnims_Dewford_Flag_Frame1[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/flag/1.4bpp");
+const u16 gTilesetAnims_Dewford_Flag_Frame2[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/flag/2.4bpp");
+const u16 gTilesetAnims_Dewford_Flag_Frame3[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/flag/3.4bpp");
-const u16 gTilesetAnims_Dewford0_Frame2[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/2.4bpp");
-
-const u16 gTilesetAnims_Dewford0_Frame3[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/3.4bpp");
-
-const u16 *const gTilesetAnims_Dewford0[] = {
- gTilesetAnims_Dewford0_Frame0,
- gTilesetAnims_Dewford0_Frame1,
- gTilesetAnims_Dewford0_Frame2,
- gTilesetAnims_Dewford0_Frame3
+const u16 *const gTilesetAnims_Dewford_Flag[] = {
+ gTilesetAnims_Dewford_Flag_Frame0,
+ gTilesetAnims_Dewford_Flag_Frame1,
+ gTilesetAnims_Dewford_Flag_Frame2,
+ gTilesetAnims_Dewford_Flag_Frame3
};
-const u16 gTilesetAnims_BattleFrontierOutsideWest0_Frame0[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/0.4bpp");
-
-const u16 gTilesetAnims_BattleFrontierOutsideWest0_Frame1[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/1.4bpp");
+const u16 gTilesetAnims_BattleFrontierOutsideWest_Flag_Frame0[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/flag/0.4bpp");
+const u16 gTilesetAnims_BattleFrontierOutsideWest_Flag_Frame1[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/flag/1.4bpp");
+const u16 gTilesetAnims_BattleFrontierOutsideWest_Flag_Frame2[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/flag/2.4bpp");
+const u16 gTilesetAnims_BattleFrontierOutsideWest_Flag_Frame3[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/flag/3.4bpp");
-const u16 gTilesetAnims_BattleFrontierOutsideWest0_Frame2[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/2.4bpp");
-
-const u16 gTilesetAnims_BattleFrontierOutsideWest0_Frame3[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/3.4bpp");
-
-const u16 *const gTilesetAnims_BattleFrontierOutsideWest0[] = {
- gTilesetAnims_BattleFrontierOutsideWest0_Frame0,
- gTilesetAnims_BattleFrontierOutsideWest0_Frame1,
- gTilesetAnims_BattleFrontierOutsideWest0_Frame2,
- gTilesetAnims_BattleFrontierOutsideWest0_Frame3
+const u16 *const gTilesetAnims_BattleFrontierOutsideWest_Flag[] = {
+ gTilesetAnims_BattleFrontierOutsideWest_Flag_Frame0,
+ gTilesetAnims_BattleFrontierOutsideWest_Flag_Frame1,
+ gTilesetAnims_BattleFrontierOutsideWest_Flag_Frame2,
+ gTilesetAnims_BattleFrontierOutsideWest_Flag_Frame3
};
-const u16 gTilesetAnims_BattleFrontierOutsideEast0_Frame0[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/0.4bpp");
-
-const u16 gTilesetAnims_BattleFrontierOutsideEast0_Frame1[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/1.4bpp");
+const u16 gTilesetAnims_BattleFrontierOutsideEast_Flag_Frame0[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/flag/0.4bpp");
+const u16 gTilesetAnims_BattleFrontierOutsideEast_Flag_Frame1[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/flag/1.4bpp");
+const u16 gTilesetAnims_BattleFrontierOutsideEast_Flag_Frame2[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/flag/2.4bpp");
+const u16 gTilesetAnims_BattleFrontierOutsideEast_Flag_Frame3[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/flag/3.4bpp");
-const u16 gTilesetAnims_BattleFrontierOutsideEast0_Frame2[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/2.4bpp");
-
-const u16 gTilesetAnims_BattleFrontierOutsideEast0_Frame3[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/3.4bpp");
-
-const u16 *const gTilesetAnims_BattleFrontierOutsideEast0[] = {
- gTilesetAnims_BattleFrontierOutsideEast0_Frame0,
- gTilesetAnims_BattleFrontierOutsideEast0_Frame1,
- gTilesetAnims_BattleFrontierOutsideEast0_Frame2,
- gTilesetAnims_BattleFrontierOutsideEast0_Frame3
+const u16 *const gTilesetAnims_BattleFrontierOutsideEast_Flag[] = {
+ gTilesetAnims_BattleFrontierOutsideEast_Flag_Frame0,
+ gTilesetAnims_BattleFrontierOutsideEast_Flag_Frame1,
+ gTilesetAnims_BattleFrontierOutsideEast_Flag_Frame2,
+ gTilesetAnims_BattleFrontierOutsideEast_Flag_Frame3
};
-const u16 gTilesetAnims_Slateport0_Frame0[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/0.4bpp");
-
-const u16 gTilesetAnims_Slateport0_Frame1[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/1.4bpp");
+const u16 gTilesetAnims_Slateport_Balloons_Frame0[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/balloons/0.4bpp");
+const u16 gTilesetAnims_Slateport_Balloons_Frame1[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/balloons/1.4bpp");
+const u16 gTilesetAnims_Slateport_Balloons_Frame2[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/balloons/2.4bpp");
+const u16 gTilesetAnims_Slateport_Balloons_Frame3[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/balloons/3.4bpp");
-const u16 gTilesetAnims_Slateport0_Frame2[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/2.4bpp");
-
-const u16 gTilesetAnims_Slateport0_Frame3[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/3.4bpp");
-
-const u16 *const gTilesetAnims_Slateport0[] = {
- gTilesetAnims_Slateport0_Frame0,
- gTilesetAnims_Slateport0_Frame1,
- gTilesetAnims_Slateport0_Frame2,
- gTilesetAnims_Slateport0_Frame3
+const u16 *const gTilesetAnims_Slateport_Balloons[] = {
+ gTilesetAnims_Slateport_Balloons_Frame0,
+ gTilesetAnims_Slateport_Balloons_Frame1,
+ gTilesetAnims_Slateport_Balloons_Frame2,
+ gTilesetAnims_Slateport_Balloons_Frame3
};
-const u16 gTilesetAnims_InsideBuilding0_Frame0[] = INCBIN_U16("data/tilesets/primary/building/anim/0.4bpp");
-
-const u16 gTilesetAnims_InsideBuilding0_Frame1[] = INCBIN_U16("data/tilesets/primary/building/anim/1.4bpp");
+const u16 gTilesetAnims_Building_TvTurnedOn_Frame0[] = INCBIN_U16("data/tilesets/primary/building/anim/tv_turned_on/0.4bpp");
+const u16 gTilesetAnims_Building_TvTurnedOn_Frame1[] = INCBIN_U16("data/tilesets/primary/building/anim/tv_turned_on/1.4bpp");
-const u16 *const gTilesetAnims_InsideBuilding0[] = {
- gTilesetAnims_InsideBuilding0_Frame0,
- gTilesetAnims_InsideBuilding0_Frame1
+const u16 *const gTilesetAnims_Building_TvTurnedOn[] = {
+ gTilesetAnims_Building_TvTurnedOn_Frame0,
+ gTilesetAnims_Building_TvTurnedOn_Frame1
};
-const u16 gTilesetAnims_SootopolisGym0_Frame0[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/0/0.4bpp");
-
-const u16 gTilesetAnims_SootopolisGym0_Frame1[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/0/1.4bpp");
-
-const u16 gTilesetAnims_SootopolisGym0_Frame2[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/0/2.4bpp");
-
-const u16 gTilesetAnims_SootopolisGym1_Frame0[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/1/0.4bpp");
-
-const u16 gTilesetAnims_SootopolisGym1_Frame1[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/1/1.4bpp");
-
-const u16 gTilesetAnims_SootopolisGym1_Frame2[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/1/2.4bpp");
-
-const u16 *const gTilesetAnims_SootopolisGym0[] = {
- gTilesetAnims_SootopolisGym0_Frame0,
- gTilesetAnims_SootopolisGym0_Frame1,
- gTilesetAnims_SootopolisGym0_Frame2
+const u16 gTilesetAnims_SootopolisGym_SideWaterfall_Frame0[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/side_waterfall/0.4bpp");
+const u16 gTilesetAnims_SootopolisGym_SideWaterfall_Frame1[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/side_waterfall/1.4bpp");
+const u16 gTilesetAnims_SootopolisGym_SideWaterfall_Frame2[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/side_waterfall/2.4bpp");
+const u16 gTilesetAnims_SootopolisGym_FrontWaterfall_Frame0[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/front_waterfall/0.4bpp");
+const u16 gTilesetAnims_SootopolisGym_FrontWaterfall_Frame1[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/front_waterfall/1.4bpp");
+const u16 gTilesetAnims_SootopolisGym_FrontWaterfall_Frame2[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/front_waterfall/2.4bpp");
+
+const u16 *const gTilesetAnims_SootopolisGym_SideWaterfall[] = {
+ gTilesetAnims_SootopolisGym_SideWaterfall_Frame0,
+ gTilesetAnims_SootopolisGym_SideWaterfall_Frame1,
+ gTilesetAnims_SootopolisGym_SideWaterfall_Frame2
};
-const u16 *const gTilesetAnims_SootopolisGym1[] = {
- gTilesetAnims_SootopolisGym1_Frame0,
- gTilesetAnims_SootopolisGym1_Frame1,
- gTilesetAnims_SootopolisGym1_Frame2
+const u16 *const gTilesetAnims_SootopolisGym_FrontWaterfall[] = {
+ gTilesetAnims_SootopolisGym_FrontWaterfall_Frame0,
+ gTilesetAnims_SootopolisGym_FrontWaterfall_Frame1,
+ gTilesetAnims_SootopolisGym_FrontWaterfall_Frame2
};
-const u16 gTilesetAnims_EliteFour0_Frame0[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/1/0.4bpp");
-
-const u16 gTilesetAnims_EliteFour0_Frame1[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/1/1.4bpp");
-
-const u16 gTilesetAnims_EliteFour1_Frame0[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/0.4bpp");
-
-const u16 gTilesetAnims_EliteFour1_Frame1[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/1.4bpp");
-
-const u16 gTilesetAnims_EliteFour1_Frame2[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/2.4bpp");
-
-const u16 gTilesetAnims_EliteFour1_Frame3[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/3.4bpp");
-
+const u16 gTilesetAnims_EliteFour_FloorLight_Frame0[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/floor_light/0.4bpp");
+const u16 gTilesetAnims_EliteFour_FloorLight_Frame1[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/floor_light/1.4bpp");
+const u16 gTilesetAnims_EliteFour_WallLights_Frame0[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/wall_lights/0.4bpp");
+const u16 gTilesetAnims_EliteFour_WallLights_Frame1[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/wall_lights/1.4bpp");
+const u16 gTilesetAnims_EliteFour_WallLights_Frame2[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/wall_lights/2.4bpp");
+const u16 gTilesetAnims_EliteFour_WallLights_Frame3[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/wall_lights/3.4bpp");
const u16 tileset_anims_space_5[16] = {};
-const u16 *const gTilesetAnims_EliteFour1[] = {
- gTilesetAnims_EliteFour1_Frame0,
- gTilesetAnims_EliteFour1_Frame1,
- gTilesetAnims_EliteFour1_Frame2,
- gTilesetAnims_EliteFour1_Frame3
+const u16 *const gTilesetAnims_EliteFour_WallLights[] = {
+ gTilesetAnims_EliteFour_WallLights_Frame0,
+ gTilesetAnims_EliteFour_WallLights_Frame1,
+ gTilesetAnims_EliteFour_WallLights_Frame2,
+ gTilesetAnims_EliteFour_WallLights_Frame3
};
-const u16 *const gTilesetAnims_EliteFour0[] = {
- gTilesetAnims_EliteFour0_Frame0,
- gTilesetAnims_EliteFour0_Frame1
+const u16 *const gTilesetAnims_EliteFour_FloorLight[] = {
+ gTilesetAnims_EliteFour_FloorLight_Frame0,
+ gTilesetAnims_EliteFour_FloorLight_Frame1
};
-const u16 gTilesetAnims_MauvilleGym0_Frame0[] = INCBIN_U16("data/tilesets/secondary/mauville_gym/anim/0.4bpp");
-
-const u16 gTilesetAnims_MauvilleGym0_Frame1[] = INCBIN_U16("data/tilesets/secondary/mauville_gym/anim/1.4bpp");
-
+const u16 gTilesetAnims_MauvilleGym_ElectricGates_Frame0[] = INCBIN_U16("data/tilesets/secondary/mauville_gym/anim/electric_gates/0.4bpp");
+const u16 gTilesetAnims_MauvilleGym_ElectricGates_Frame1[] = INCBIN_U16("data/tilesets/secondary/mauville_gym/anim/electric_gates/1.4bpp");
const u16 tileset_anims_space_6[16] = {};
-const u16 *const gTilesetAnims_MauvilleGym0[] = {
- gTilesetAnims_MauvilleGym0_Frame0,
- gTilesetAnims_MauvilleGym0_Frame1
+const u16 *const gTilesetAnims_MauvilleGym_ElectricGates[] = {
+ gTilesetAnims_MauvilleGym_ElectricGates_Frame0,
+ gTilesetAnims_MauvilleGym_ElectricGates_Frame1
};
-const u16 gTilesetAnims_BikeShop0_Frame0[] = INCBIN_U16("data/tilesets/secondary/bike_shop/anim/0.4bpp");
-
-const u16 gTilesetAnims_BikeShop0_Frame1[] = INCBIN_U16("data/tilesets/secondary/bike_shop/anim/1.4bpp");
-
+const u16 gTilesetAnims_BikeShop_BlinkingLights_Frame0[] = INCBIN_U16("data/tilesets/secondary/bike_shop/anim/blinking_lights/0.4bpp");
+const u16 gTilesetAnims_BikeShop_BlinkingLights_Frame1[] = INCBIN_U16("data/tilesets/secondary/bike_shop/anim/blinking_lights/1.4bpp");
const u16 tileset_anims_space_7[16] = {};
-const u16 *const gTilesetAnims_BikeShop0[] = {
- gTilesetAnims_BikeShop0_Frame0,
- gTilesetAnims_BikeShop0_Frame1
+const u16 *const gTilesetAnims_BikeShop_BlinkingLights[] = {
+ gTilesetAnims_BikeShop_BlinkingLights_Frame0,
+ gTilesetAnims_BikeShop_BlinkingLights_Frame1
};
-const u16 gTilesetAnims_Sootopolis0_Frame0[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/0.4bpp");
-
-const u16 gTilesetAnims_Sootopolis0_Frame1[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/1.4bpp");
-
-const u16 gTilesetAnims_Sootopolis0_Frame2[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/2.4bpp");
-
-const u16 gTilesetAnims_Sootopolis0_Frame3[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/3.4bpp");
-
-const u16 gTilesetAnims_Sootopolis0_Frame4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/4.4bpp");
-
-const u16 gTilesetAnims_Sootopolis0_Frame5[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/5.4bpp");
-
-const u16 gTilesetAnims_Sootopolis0_Frame6[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/6.4bpp");
-
-const u16 gTilesetAnims_Sootopolis0_Frame7[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/7.4bpp");
-
+const u16 gTilesetAnims_Sootopolis_StormyWater_Frame0[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/0.4bpp");
+const u16 gTilesetAnims_Sootopolis_StormyWater_Frame1[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/1.4bpp");
+const u16 gTilesetAnims_Sootopolis_StormyWater_Frame2[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/2.4bpp");
+const u16 gTilesetAnims_Sootopolis_StormyWater_Frame3[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/3.4bpp");
+const u16 gTilesetAnims_Sootopolis_StormyWater_Frame4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/4.4bpp");
+const u16 gTilesetAnims_Sootopolis_StormyWater_Frame5[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/5.4bpp");
+const u16 gTilesetAnims_Sootopolis_StormyWater_Frame6[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/6.4bpp");
+const u16 gTilesetAnims_Sootopolis_StormyWater_Frame7[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/stormy_water/7.4bpp");
const u16 tileset_anims_space_8[16] = {};
const u16 gTilesetAnims_Unused1_Frame0[] = INCBIN_U16("data/tilesets/secondary/unused_1/0.4bpp");
-
const u16 gTilesetAnims_Unused1_Frame1[] = INCBIN_U16("data/tilesets/secondary/unused_1/1.4bpp");
-
const u16 gTilesetAnims_Unused1_Frame2[] = INCBIN_U16("data/tilesets/secondary/unused_1/2.4bpp");
-
const u16 gTilesetAnims_Unused1_Frame3[] = INCBIN_U16("data/tilesets/secondary/unused_1/3.4bpp");
-const u16 *const gTilesetAnims_Sootopolis0[] = {
- gTilesetAnims_Sootopolis0_Frame0,
- gTilesetAnims_Sootopolis0_Frame1,
- gTilesetAnims_Sootopolis0_Frame2,
- gTilesetAnims_Sootopolis0_Frame3,
- gTilesetAnims_Sootopolis0_Frame4,
- gTilesetAnims_Sootopolis0_Frame5,
- gTilesetAnims_Sootopolis0_Frame6,
- gTilesetAnims_Sootopolis0_Frame7
+const u16 *const gTilesetAnims_Sootopolis_StormyWater[] = {
+ gTilesetAnims_Sootopolis_StormyWater_Frame0,
+ gTilesetAnims_Sootopolis_StormyWater_Frame1,
+ gTilesetAnims_Sootopolis_StormyWater_Frame2,
+ gTilesetAnims_Sootopolis_StormyWater_Frame3,
+ gTilesetAnims_Sootopolis_StormyWater_Frame4,
+ gTilesetAnims_Sootopolis_StormyWater_Frame5,
+ gTilesetAnims_Sootopolis_StormyWater_Frame6,
+ gTilesetAnims_Sootopolis_StormyWater_Frame7
};
-const u16 gTilesetAnims_BattlePyramid0_Frame0[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/0/0.4bpp");
-
-const u16 gTilesetAnims_BattlePyramid0_Frame1[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/0/1.4bpp");
-
-const u16 gTilesetAnims_BattlePyramid0_Frame2[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/0/2.4bpp");
-
+const u16 gTilesetAnims_BattlePyramid_Torch_Frame0[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/torch/0.4bpp");
+const u16 gTilesetAnims_BattlePyramid_Torch_Frame1[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/torch/1.4bpp");
+const u16 gTilesetAnims_BattlePyramid_Torch_Frame2[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/torch/2.4bpp");
const u16 tileset_anims_space_9[16] = {};
-const u16 gTilesetAnims_BattlePyramid1_Frame0[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/1/0.4bpp");
-
-const u16 gTilesetAnims_BattlePyramid1_Frame1[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/1/1.4bpp");
-
-const u16 gTilesetAnims_BattlePyramid1_Frame2[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/1/2.4bpp");
-
+const u16 gTilesetAnims_BattlePyramid_StatueShadow_Frame0[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/statue_shadow/0.4bpp");
+const u16 gTilesetAnims_BattlePyramid_StatueShadow_Frame1[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/statue_shadow/1.4bpp");
+const u16 gTilesetAnims_BattlePyramid_StatueShadow_Frame2[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/statue_shadow/2.4bpp");
const u16 tileset_anims_space_10[7808] = {};
const u16 gTilesetAnims_Unused2_Frame0[] = INCBIN_U16("data/tilesets/secondary/unused_2/0.4bpp");
-
const u16 tileset_anims_space_11[224] = {};
const u16 gTilesetAnims_Unused2_Frame1[] = INCBIN_U16("data/tilesets/secondary/unused_2/1.4bpp");
-const u16 *const gTilesetAnims_BattlePyramid0[] = {
- gTilesetAnims_BattlePyramid0_Frame0,
- gTilesetAnims_BattlePyramid0_Frame1,
- gTilesetAnims_BattlePyramid0_Frame2
+const u16 *const gTilesetAnims_BattlePyramid_Torch[] = {
+ gTilesetAnims_BattlePyramid_Torch_Frame0,
+ gTilesetAnims_BattlePyramid_Torch_Frame1,
+ gTilesetAnims_BattlePyramid_Torch_Frame2
};
-const u16 *const gTilesetAnims_BattlePyramid1[] = {
- gTilesetAnims_BattlePyramid1_Frame0,
- gTilesetAnims_BattlePyramid1_Frame1,
- gTilesetAnims_BattlePyramid1_Frame2
+const u16 *const gTilesetAnims_BattlePyramid_StatueShadow[] = {
+ gTilesetAnims_BattlePyramid_StatueShadow_Frame0,
+ gTilesetAnims_BattlePyramid_StatueShadow_Frame1,
+ gTilesetAnims_BattlePyramid_StatueShadow_Frame2
};
-extern const u16 gTilesetAnims_BattleDomePals0_0[];
-extern const u16 gTilesetAnims_BattleDomePals0_1[];
-extern const u16 gTilesetAnims_BattleDomePals0_2[];
-extern const u16 gTilesetAnims_BattleDomePals0_3[];
-
-static const u16 *const gTilesetAnims_BattleDomePals0[] = {
+static const u16 *const gTilesetAnims_BattleDomeFloorLightPals[] = {
gTilesetAnims_BattleDomePals0_0,
gTilesetAnims_BattleDomePals0_1,
gTilesetAnims_BattleDomePals0_2,
gTilesetAnims_BattleDomePals0_3,
};
-// .text
-
static void ResetTilesetAnimBuffer(void)
{
sTilesetDMA3TransferBufferSize = 0;
@@ -650,763 +566,623 @@ void TransferTilesetAnimsBuffer(void)
int i;
for (i = 0; i < sTilesetDMA3TransferBufferSize; i ++)
- {
DmaCopy16(3, sTilesetDMA3TransferBuffer[i].src, sTilesetDMA3TransferBuffer[i].dest, sTilesetDMA3TransferBuffer[i].size);
- }
+
sTilesetDMA3TransferBufferSize = 0;
}
-void cur_mapheader_run_tileset_funcs_after_some_cpuset(void)
+void InitTilesetAnimations(void)
{
ResetTilesetAnimBuffer();
- cur_mapheader_run_tileset1_func();
- cur_mapheader_run_tileset2_func();
+ _InitPrimaryTilesetAnimation();
+ _InitSecondaryTilesetAnimation();
}
-void sub_80A0A2C(void)
+void InitSecondaryTilesetAnimation(void)
{
- cur_mapheader_run_tileset2_func();
+ _InitSecondaryTilesetAnimation();
}
-void sub_80A0A38(void)
+void UpdateTilesetAnimations(void)
{
ResetTilesetAnimBuffer();
- if (++sPrimaryTilesetCBCounter >= sPrimaryTilesetCBBufferSize)
- sPrimaryTilesetCBCounter = 0;
- if (++sSecondaryTilesetCBCounter >= sSecondaryTilesetCBBufferSize)
- sSecondaryTilesetCBCounter = 0;
- if (sPrimaryTilesetCB)
- sPrimaryTilesetCB(sPrimaryTilesetCBCounter);
- if (sSecondaryTilesetCB)
- sSecondaryTilesetCB(sSecondaryTilesetCBCounter);
+ if (++sPrimaryTilesetAnimCounter >= sPrimaryTilesetAnimCounterMax)
+ sPrimaryTilesetAnimCounter = 0;
+ if (++sSecondaryTilesetAnimCounter >= sSecondaryTilesetAnimCounterMax)
+ sSecondaryTilesetAnimCounter = 0;
+
+ if (sPrimaryTilesetAnimCallback)
+ sPrimaryTilesetAnimCallback(sPrimaryTilesetAnimCounter);
+ if (sSecondaryTilesetAnimCallback)
+ sSecondaryTilesetAnimCallback(sSecondaryTilesetAnimCounter);
}
-static void cur_mapheader_run_tileset1_func(void)
+static void _InitPrimaryTilesetAnimation(void)
{
- sPrimaryTilesetCBCounter = 0;
- sPrimaryTilesetCBBufferSize = 0;
- sPrimaryTilesetCB = NULL;
+ sPrimaryTilesetAnimCounter = 0;
+ sPrimaryTilesetAnimCounterMax = 0;
+ sPrimaryTilesetAnimCallback = NULL;
if (gMapHeader.mapLayout->primaryTileset && gMapHeader.mapLayout->primaryTileset->callback)
gMapHeader.mapLayout->primaryTileset->callback();
}
-static void cur_mapheader_run_tileset2_func(void)
+static void _InitSecondaryTilesetAnimation(void)
{
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = 0;
- sSecondaryTilesetCB = NULL;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = 0;
+ sSecondaryTilesetAnimCallback = NULL;
if (gMapHeader.mapLayout->secondaryTileset && gMapHeader.mapLayout->secondaryTileset->callback)
gMapHeader.mapLayout->secondaryTileset->callback();
}
-void TilesetCb_General(void)
+void InitTilesetAnim_General(void)
{
- static void sub_80A0B70(u16);
-
- sPrimaryTilesetCBCounter = 0;
- sPrimaryTilesetCBBufferSize = 0x100;
- sPrimaryTilesetCB = sub_80A0B70;
+ sPrimaryTilesetAnimCounter = 0;
+ sPrimaryTilesetAnimCounterMax = 256;
+ sPrimaryTilesetAnimCallback = TilesetAnim_General;
}
-void TilesetCb_InsideBuilding(void)
+void InitTilesetAnim_Building(void)
{
- static void sub_80A0BB4(u16);
-
- sPrimaryTilesetCBCounter = 0;
- sPrimaryTilesetCBBufferSize = 0x100;
- sPrimaryTilesetCB = sub_80A0BB4;
+ sPrimaryTilesetAnimCounter = 0;
+ sPrimaryTilesetAnimCounterMax = 256;
+ sPrimaryTilesetAnimCallback = TilesetAnim_Building;
}
-static void sub_80A0B70(u16 timer)
+static void TilesetAnim_General(u16 timer)
{
- static void gTilesetAnims_Flower(u16);
- static void gTilesetAnims_Water(u16);
- static void gTilesetAnims_SandWaterEdge(u16);
- static void gTilesetAnims_Waterfall(u16);
- static void gTilesetAnims_LandWaterEdge (u16);
-
- if ((timer & 0x0F) == 0)
- gTilesetAnims_Flower(timer >> 4);
- if ((timer & 0x0F) == 1)
- gTilesetAnims_Water(timer >> 4);
- if ((timer & 0x0F) == 2)
- gTilesetAnims_SandWaterEdge(timer >> 4);
- if ((timer & 0x0F) == 3)
- gTilesetAnims_Waterfall(timer >> 4);
- if ((timer & 0x0F) == 4)
- gTilesetAnims_LandWaterEdge (timer >> 4);
+ if (timer % 16 == 0)
+ QueueAnimTiles_General_Flower(timer >> 4);
+ if (timer % 16 == 1)
+ QueueAnimTiles_General_Water(timer >> 4);
+ if (timer % 16 == 2)
+ QueueAnimTiles_General_SandWaterEdge(timer >> 4);
+ if (timer % 16 == 3)
+ QueueAnimTiles_General_Waterfall(timer >> 4);
+ if (timer % 16 == 4)
+ QueueAnimTiles_General_LandWaterEdge(timer >> 4);
}
-static void sub_80A0BB4(u16 timer)
+static void TilesetAnim_Building(u16 timer)
{
- static void sub_80A1688(u16);
-
- if ((timer & 0x7) == 0)
- sub_80A1688(timer >> 3);
+ if (timer % 8 == 0)
+ QueueAnimTiles_Building_TVTurnedOn(timer >> 3);
}
-static void gTilesetAnims_Flower(u16 timer)
+static void QueueAnimTiles_General_Flower(u16 timer)
{
- u16 idx;
-
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_General0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(508)), 0x80);
+ u16 i = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General_Flower[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(508)), 0x80);
}
-static void gTilesetAnims_Water(u16 timer)
+static void QueueAnimTiles_General_Water(u16 timer)
{
- u8 idx;
-
- idx = timer % 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_General1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(432)), 0x3C0);
+ u8 i = timer % 8;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General_Water[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(432)), 0x3C0);
}
-static void gTilesetAnims_SandWaterEdge(u16 timer)
+static void QueueAnimTiles_General_SandWaterEdge(u16 timer)
{
- u16 idx;
-
- idx = timer % 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_General2[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(464)), 0x140);
+ u16 i = timer % 8;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General_SandWaterEdge[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(464)), 0x140);
}
-static void gTilesetAnims_Waterfall(u16 timer)
+static void QueueAnimTiles_General_Waterfall(u16 timer)
{
- u16 idx;
-
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_General3[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(496)), 0xc0);
+ u16 i = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General_Waterfall[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(496)), 0xc0);
}
-void TilesetCb_Petalburg(void)
+void InitTilesetAnim_Petalburg(void)
{
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = NULL;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = NULL;
}
-void TilesetCb_Rustboro(void)
+void InitTilesetAnim_Rustboro(void)
{
- static void sub_80A103C(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A103C;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_Rustboro;
}
-void TilesetCb_Dewford(void)
+void InitTilesetAnim_Dewford(void)
{
- static void sub_80A10B8(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A10B8;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_Dewford;
}
-void TilesetCb_Slateport(void)
+void InitTilesetAnim_Slateport(void)
{
- static void sub_80A10D0(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A10D0;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_Slateport;
}
-void TilesetCb_Mauville(void)
+void InitTilesetAnim_Mauville(void)
{
- static void sub_80A10E8(u16);
-
- sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A10E8;
+ sSecondaryTilesetAnimCounter = sPrimaryTilesetAnimCounter;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_Mauville;
}
-void TilesetCb_Lavaridge(void)
+void InitTilesetAnim_Lavaridge(void)
{
- static void sub_80A115C(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A115C;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_Lavaridge;
}
-void TilesetCb_Fallarbor(void)
+void InitTilesetAnim_Fallarbor(void)
{
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = NULL;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = NULL;
}
-void TilesetCb_Fortree(void)
+void InitTilesetAnim_Fortree(void)
{
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = NULL;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = NULL;
}
-void TilesetCb_Lilycove(void)
+void InitTilesetAnim_Lilycove(void)
{
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = NULL;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = NULL;
}
-void TilesetCb_Mossdeep(void)
+void InitTilesetAnim_Mossdeep(void)
{
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = NULL;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = NULL;
}
-void TilesetCb_EverGrande(void)
+void InitTilesetAnim_EverGrande(void)
{
- static void sub_80A1188(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A1188;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_EverGrande;
}
-void TilesetCb_Pacifidlog(void)
+void InitTilesetAnim_Pacifidlog(void)
{
- static void sub_80A11FC(u16);
-
- sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A11FC;
+ sSecondaryTilesetAnimCounter = sPrimaryTilesetAnimCounter;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_Pacifidlog;
}
-void TilesetCb_Sootopolis(void)
+void InitTilesetAnim_Sootopolis(void)
{
- static void sub_80A122C(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A122C;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_Sootopolis;
}
-void TilesetCb_BattleFrontierOutsideWest(void)
+void InitTilesetAnim_BattleFrontierOutsideWest(void)
{
- static void sub_80A127C(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A127C;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_BattleFrontierOutsideWest;
}
-void TilesetCb_BattleFrontierOutsideEast(void)
+void InitTilesetAnim_BattleFrontierOutsideEast(void)
{
- static void sub_80A1294(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A1294;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_BattleFrontierOutsideEast;
}
-void TilesetCb_Underwater(void)
+void InitTilesetAnim_Underwater(void)
{
- static void sub_80A1244(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = 128;
- sSecondaryTilesetCB = sub_80A1244;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = 128;
+ sSecondaryTilesetAnimCallback = TilesetAnim_Underwater;
}
-void TilesetCb_SootopolisGym(void)
+void InitTilesetAnim_SootopolisGym(void)
{
- static void sub_80A15D8(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = 240;
- sSecondaryTilesetCB = sub_80A15D8;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = 240;
+ sSecondaryTilesetAnimCallback = TilesetAnim_SootopolisGym;
}
-void TilesetCb_Cave(void)
+void InitTilesetAnim_Cave(void)
{
- static void sub_80A1260(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A1260;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_Cave;
}
-void TilesetCb_EliteFour(void)
+void InitTilesetAnim_EliteFour(void)
{
- static void sub_80A15F0(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = 128;
- sSecondaryTilesetCB = sub_80A15F0;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = 128;
+ sSecondaryTilesetAnimCallback = TilesetAnim_EliteFour;
}
-void TilesetCb_MauvilleGym(void)
+void InitTilesetAnim_MauvilleGym(void)
{
- static void sub_80A15C0(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A15C0;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_MauvilleGym;
}
-void TilesetCb_BikeShop(void)
+void InitTilesetAnim_BikeShop(void)
{
- static void sub_80A161C(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A161C;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_BikeShop;
}
-void TilesetCb_BattlePyramid(void)
+void InitTilesetAnim_BattlePyramid(void)
{
- static void sub_80A1634(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A1634;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_BattlePyramid;
}
-void TilesetCb_BattleDome(void)
+void InitTilesetAnim_BattleDome(void)
{
- static void sub_80A1658(u16);
-
- sSecondaryTilesetCBCounter = 0;
- sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
- sSecondaryTilesetCB = sub_80A1658;
+ sSecondaryTilesetAnimCounter = 0;
+ sSecondaryTilesetAnimCounterMax = sPrimaryTilesetAnimCounterMax;
+ sSecondaryTilesetAnimCallback = TilesetAnim_BattleDome;
}
-static void sub_80A103C(u16 timer)
+static void TilesetAnim_Rustboro(u16 timer)
{
- static void sub_80A1434(u16, u8);
- static void sub_80A1470(u16);
-
- if ((timer & 0x07) == 0)
+ if (timer % 8 == 0)
{
- sub_80A1434(timer >> 3, 0);
- sub_80A1470(timer >> 3);
+ QueueAnimTiles_Rustboro_WindyWater(timer >> 3, 0);
+ QueueAnimTiles_Rustboro_Fountain(timer >> 3);
}
- if ((timer & 0x07) == 1)
- sub_80A1434(timer >> 3, 1);
- if ((timer & 0x07) == 2)
- sub_80A1434(timer >> 3, 2);
- if ((timer & 0x07) == 3)
- sub_80A1434(timer >> 3, 3);
- if ((timer & 0x07) == 4)
- sub_80A1434(timer >> 3, 4);
- if ((timer & 0x07) == 5)
- sub_80A1434(timer >> 3, 5);
- if ((timer & 0x07) == 6)
- sub_80A1434(timer >> 3, 6);
- if ((timer & 0x07) == 7)
- sub_80A1434(timer >> 3, 7);
+ if (timer % 8 == 1)
+ QueueAnimTiles_Rustboro_WindyWater(timer >> 3, 1);
+ if (timer % 8 == 2)
+ QueueAnimTiles_Rustboro_WindyWater(timer >> 3, 2);
+ if (timer % 8 == 3)
+ QueueAnimTiles_Rustboro_WindyWater(timer >> 3, 3);
+ if (timer % 8 == 4)
+ QueueAnimTiles_Rustboro_WindyWater(timer >> 3, 4);
+ if (timer % 8 == 5)
+ QueueAnimTiles_Rustboro_WindyWater(timer >> 3, 5);
+ if (timer % 8 == 6)
+ QueueAnimTiles_Rustboro_WindyWater(timer >> 3, 6);
+ if (timer % 8 == 7)
+ QueueAnimTiles_Rustboro_WindyWater(timer >> 3, 7);
}
-static void sub_80A10B8(u16 timer)
+static void TilesetAnim_Dewford(u16 timer)
{
- static void sub_80A1520(u16);
-
- if ((timer & 7) == 0)
- sub_80A1520(timer >> 3);
+ if (timer % 8 == 0)
+ QueueAnimTiles_Dewford_Flag(timer >> 3);
}
-static void sub_80A10D0(u16 timer)
+static void TilesetAnim_Slateport(u16 timer)
{
- static void sub_80A1598(u16);
-
- if ((timer & 15) == 0)
- sub_80A1598(timer >> 4);
+ if (timer % 16 == 0)
+ QueueAnimTiles_Slateport_Balloons(timer >> 4);
}
-static void sub_80A10E8(u16 timer)
+static void TilesetAnim_Mauville(u16 timer)
{
- static void sub_80A1394(u16, u8);
-
- if ((timer & 0x07) == 0)
- sub_80A1394(timer >> 3, 0);
- if ((timer & 0x07) == 1)
- sub_80A1394(timer >> 3, 1);
- if ((timer & 0x07) == 2)
- sub_80A1394(timer >> 3, 2);
- if ((timer & 0x07) == 3)
- sub_80A1394(timer >> 3, 3);
- if ((timer & 0x07) == 4)
- sub_80A1394(timer >> 3, 4);
- if ((timer & 0x07) == 5)
- sub_80A1394(timer >> 3, 5);
- if ((timer & 0x07) == 6)
- sub_80A1394(timer >> 3, 6);
- if ((timer & 0x07) == 7)
- sub_80A1394(timer >> 3, 7);
+ if (timer % 8 == 0)
+ QueueAnimTiles_Mauville_Flowers(timer >> 3, 0);
+ if (timer % 8 == 1)
+ QueueAnimTiles_Mauville_Flowers(timer >> 3, 1);
+ if (timer % 8 == 2)
+ QueueAnimTiles_Mauville_Flowers(timer >> 3, 2);
+ if (timer % 8 == 3)
+ QueueAnimTiles_Mauville_Flowers(timer >> 3, 3);
+ if (timer % 8 == 4)
+ QueueAnimTiles_Mauville_Flowers(timer >> 3, 4);
+ if (timer % 8 == 5)
+ QueueAnimTiles_Mauville_Flowers(timer >> 3, 5);
+ if (timer % 8 == 6)
+ QueueAnimTiles_Mauville_Flowers(timer >> 3, 6);
+ if (timer % 8 == 7)
+ QueueAnimTiles_Mauville_Flowers(timer >> 3, 7);
}
-static void sub_80A115C(u16 timer)
+static void TilesetAnim_Lavaridge(u16 timer)
{
- static void sub_80A12D4(u8);
- static void sub_80A1498(u16);
-
- if ((timer & 0x0F) == 0)
- sub_80A12D4(timer >> 4);
- if ((timer & 0x0F) == 1)
- sub_80A1498(timer >> 4);
+ if (timer % 16 == 0)
+ QueueAnimTiles_Lavaridge_Steam(timer >> 4);
+ if (timer % 16 == 1)
+ QueueAnimTiles_Lavaridge_Lava(timer >> 4);
}
-static void sub_80A1188(u16 timer)
+static void TilesetAnim_EverGrande(u16 timer)
{
- static void sub_80A14C0(u16, u8);
-
- if ((timer & 0x07) == 0)
- sub_80A14C0(timer >> 3, 0);
- if ((timer & 0x07) == 1)
- sub_80A14C0(timer >> 3, 1);
- if ((timer & 0x07) == 2)
- sub_80A14C0(timer >> 3, 2);
- if ((timer & 0x07) == 3)
- sub_80A14C0(timer >> 3, 3);
- if ((timer & 0x07) == 4)
- sub_80A14C0(timer >> 3, 4);
- if ((timer & 0x07) == 5)
- sub_80A14C0(timer >> 3, 5);
- if ((timer & 0x07) == 6)
- sub_80A14C0(timer >> 3, 6);
- if ((timer & 0x07) == 7)
- sub_80A14C0(timer >> 3, 7);
+ if (timer % 8 == 0)
+ QueueAnimTiles_EverGrande_Flowers(timer >> 3, 0);
+ if (timer % 8 == 1)
+ QueueAnimTiles_EverGrande_Flowers(timer >> 3, 1);
+ if (timer % 8 == 2)
+ QueueAnimTiles_EverGrande_Flowers(timer >> 3, 2);
+ if (timer % 8 == 3)
+ QueueAnimTiles_EverGrande_Flowers(timer >> 3, 3);
+ if (timer % 8 == 4)
+ QueueAnimTiles_EverGrande_Flowers(timer >> 3, 4);
+ if (timer % 8 == 5)
+ QueueAnimTiles_EverGrande_Flowers(timer >> 3, 5);
+ if (timer % 8 == 6)
+ QueueAnimTiles_EverGrande_Flowers(timer >> 3, 6);
+ if (timer % 8 == 7)
+ QueueAnimTiles_EverGrande_Flowers(timer >> 3, 7);
}
-static void sub_80A11FC(u16 timer)
+static void TilesetAnim_Pacifidlog(u16 timer)
{
- static void sub_80A131C(u8);
- static void sub_80A136C(u8);
-
- if ((timer & 0x0F) == 0)
- sub_80A131C(timer >> 4);
- if ((timer & 0x0F) == 1)
- sub_80A136C(timer >> 4);
+ if (timer % 16 == 0)
+ QueueAnimTiles_Pacifidlog_LogBridges(timer >> 4);
+ if (timer % 16 == 1)
+ QueueAnimTiles_Pacifidlog_WaterCurrents(timer >> 4);
}
-static void sub_80A122C(u16 timer)
+static void TilesetAnim_Sootopolis(u16 timer)
{
- static void sub_80A1798(u16);
-
- if ((timer & 0x0F) == 0)
- sub_80A1798(timer >> 4);
+ if (timer % 16 == 0)
+ QueueAnimTiles_Sootopolis_StormyWater(timer >> 4);
}
-static void sub_80A1244(u16 timer)
+static void TilesetAnim_Underwater(u16 timer)
{
- static void sub_80A1344(u8);
-
- if ((timer & 0x0F) == 0)
- sub_80A1344(timer >> 4);
+ if (timer % 16 == 0)
+ QueueAnimTiles_Underwater_Seaweed(timer >> 4);
}
-static void sub_80A1260(u16 timer)
+static void TilesetAnim_Cave(u16 timer)
{
- static void sub_80A14F8(u16);
-
- if ((timer & 0x0F) == 1)
- sub_80A14F8(timer >> 4);
+ if (timer % 16 == 1)
+ QueueAnimTiles_Cave_Lava(timer >> 4);
}
-static void sub_80A127C(u16 timer)
+static void TilesetAnim_BattleFrontierOutsideWest(u16 timer)
{
- static void sub_80A1548(u16);
-
- if ((timer & 0x07) == 0)
- sub_80A1548(timer >> 3);
+ if (timer % 8 == 0)
+ QueueAnimTiles_BattleFrontierOutsideWest_Flag(timer >> 3);
}
-static void sub_80A1294(u16 timer)
+static void TilesetAnim_BattleFrontierOutsideEast(u16 timer)
{
- static void sub_80A1570(u16);
-
- if ((timer & 0x07) == 0)
- sub_80A1570(timer >> 3);
+ if (timer % 8 == 0)
+ QueueAnimTiles_BattleFrontierOutsideEast_Flag(timer >> 3);
}
-static void gTilesetAnims_LandWaterEdge (u16 timer)
+static void QueueAnimTiles_General_LandWaterEdge(u16 timer)
{
- u16 idx;
-
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_General4[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(480)), 0x140);
+ u16 i = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General_LandWaterEdge[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(480)), 0x140);
}
-static void sub_80A12D4(u8 timer)
+static void QueueAnimTiles_Lavaridge_Steam(u8 timer)
{
- u8 idx;
+ u8 i = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge_Steam[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 288)), 0x80);
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 288)), 0x80);
-
- idx = (timer + 2) % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 292)), 0x80);
+ i = (timer + 2) % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge_Steam[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 292)), 0x80);
}
-static void sub_80A131C(u8 timer)
+static void QueueAnimTiles_Pacifidlog_LogBridges(u8 timer)
{
- u8 idx;
-
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 464)), 0x3C0);
+ u8 i = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog_LogBridges[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 464)), 0x3C0);
}
-static void sub_80A1344(u8 timer)
+static void QueueAnimTiles_Underwater_Seaweed(u8 timer)
{
- u8 idx;
-
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Underwater0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x80);
+ u8 i = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Underwater_Seaweed[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x80);
}
-static void sub_80A136C(u8 timer)
+static void QueueAnimTiles_Pacifidlog_WaterCurrents(u8 timer)
{
- u8 idx;
-
- idx = timer % 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x100);
+ u8 i = timer % 8;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog_WaterCurrents[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x100);
}
-static void sub_80A1394(u16 timer_div, u8 timer_mod)
+static void QueueAnimTiles_Mauville_Flowers(u16 timer_div, u8 timer_mod)
{
timer_div -= timer_mod;
if (timer_div < 12) // almost certainly a typo
{
timer_div %= 12;
- AppendTilesetAnimToBuffer(gTilesetAnims_Mauville0a[timer_div], gTilesetAnims_MauvilleVDests0[timer_mod], 0x80);
- AppendTilesetAnimToBuffer(gTilesetAnims_Mauville0b[timer_div], gTilesetAnims_MauvilleVDests1[timer_mod], 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Mauville_Flower1[timer_div], gTilesetAnims_Mauville_Flower1_VDests[timer_mod], 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Mauville_Flower2[timer_div], gTilesetAnims_Mauville_Flower2_VDests[timer_mod], 0x80);
}
else
{
timer_div %= 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Mauville1a[timer_div], gTilesetAnims_MauvilleVDests0[timer_mod], 0x80);
- AppendTilesetAnimToBuffer(gTilesetAnims_Mauville1b[timer_div], gTilesetAnims_MauvilleVDests1[timer_mod], 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Mauville_Flower1_B[timer_div], gTilesetAnims_Mauville_Flower1_VDests[timer_mod], 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Mauville_Flower2_B[timer_div], gTilesetAnims_Mauville_Flower2_VDests[timer_mod], 0x80);
}
}
-static void sub_80A1434(u16 timer_div, u8 timer_mod)
+static void QueueAnimTiles_Rustboro_WindyWater(u16 timer_div, u8 timer_mod)
{
timer_div -= timer_mod;
timer_div %= 8;
- if (gTilesetAnims_Rustboro0[timer_div])
- AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro0[timer_div], gTilesetAnims_RustboroVDests0[timer_mod], 0x80);
+ if (gTilesetAnims_Rustboro_WindyWater[timer_div])
+ AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro_WindyWater[timer_div], gTilesetAnims_Rustboro_WindyWater_VDests[timer_mod], 0x80);
}
-static void sub_80A1470(u16 timer)
+static void QueueAnimTiles_Rustboro_Fountain(u16 timer)
{
- u16 idx;
-
- idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 448)), 0x80);
+ u16 i = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro_Fountain[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 448)), 0x80);
}
-static void sub_80A1498(u16 timer)
+static void QueueAnimTiles_Lavaridge_Lava(u16 timer)
{
- u16 idx;
-
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 160)), 0x80);
+ u16 i = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge_Cave_Lava[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 160)), 0x80);
}
-static void sub_80A14C0(u16 timer_div, u8 timer_mod)
+static void QueueAnimTiles_EverGrande_Flowers(u16 timer_div, u8 timer_mod)
{
timer_div -= timer_mod;
timer_div %= 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_EverGrande0[timer_div], gTilesetAnims_EverGrandeVDests0[timer_mod], 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_EverGrande_Flowers[timer_div], gTilesetAnims_EverGrande_VDests[timer_mod], 0x80);
}
-static void sub_80A14F8(u16 timer)
+static void QueueAnimTiles_Cave_Lava(u16 timer)
{
- u16 idx;
-
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 416)), 0x80);
+ u16 i = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge_Cave_Lava[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 416)), 0x80);
}
-static void sub_80A1520(u16 timer)
+static void QueueAnimTiles_Dewford_Flag(u16 timer)
{
- u16 idx;
-
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Dewford0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 170)), 0xC0);
+ u16 id = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Dewford_Flag[id], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 170)), 0xC0);
}
-static void sub_80A1548(u16 timer)
+static void QueueAnimTiles_BattleFrontierOutsideWest_Flag(u16 timer)
{
- u16 idx;
-
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideWest0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 218)), 0xC0);
+ u16 i = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideWest_Flag[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 218)), 0xC0);
}
-static void sub_80A1570(u16 timer)
+static void QueueAnimTiles_BattleFrontierOutsideEast_Flag(u16 timer)
{
- u16 idx;
-
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideEast0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 218)), 0xC0);
+ u16 i = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideEast_Flag[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 218)), 0xC0);
}
-static void sub_80A1598(u16 timer)
+static void QueueAnimTiles_Slateport_Balloons(u16 timer)
{
- u16 idx;
-
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_Slateport0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 224)), 0x80);
+ u16 i = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Slateport_Balloons[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 224)), 0x80);
}
-static void sub_80A15C0(u16 timer)
+static void TilesetAnim_MauvilleGym(u16 timer)
{
- static void sub_80A1748(u16);
-
- if ((timer & 1) == 0)
- sub_80A1748(timer >> 1);
+ if (timer % 2 == 0)
+ QueueAnimTiles_MauvilleGym_ElectricGates(timer >> 1);
}
-static void sub_80A15D8(u16 timer)
+static void TilesetAnim_SootopolisGym(u16 timer)
{
- static void sub_80A16B0(u16);
-
- if ((timer & 7) == 0)
- sub_80A16B0(timer >> 3);
+ if (timer % 8 == 0)
+ QueueAnimTiles_SootopolisGym_Waterfalls(timer >> 3);
}
-static void sub_80A15F0(u16 timer)
+static void TilesetAnim_EliteFour(u16 timer)
{
- static void sub_80A1720(u16);
- static void sub_80A16F8(u16);
-
- if ((timer & 0x3f) == 1)
- sub_80A1720(timer >> 6);
- if ((timer & 0x07) == 1)
- sub_80A16F8(timer >> 3);
+ if (timer % 64 == 1)
+ QueueAnimTiles_EliteFour_GroundLights(timer >> 6);
+ if (timer % 8 == 1)
+ QueueAnimTiles_EliteFour_WallLights(timer >> 3);
}
-static void sub_80A161C(u16 timer)
-{
- static void sub_80A1770(u16);
- if ((timer & 3) == 0)
- sub_80A1770(timer >> 2);
+static void TilesetAnim_BikeShop(u16 timer)
+{
+ if (timer % 4 == 0)
+ QueueAnimTiles_BikeShop_BlinkingLights(timer >> 2);
}
-static void sub_80A1634(u16 timer)
+static void TilesetAnim_BattlePyramid(u16 timer)
{
- static void sub_80A17C0(u16);
- static void sub_80A17EC(u16);
-
- if ((timer & 7) == 0)
+ if (timer % 8 == 0)
{
- sub_80A17C0(timer >> 3);
- sub_80A17EC(timer >> 3);
+ QueueAnimTiles_BattlePyramid_Torch(timer >> 3);
+ QueueAnimTiles_BattlePyramid_StatueShadow(timer >> 3);
}
}
-static void sub_80A1658(u16 timer)
+static void TilesetAnim_BattleDome(u16 timer)
{
- static void sub_80A1818(u16);
-
- if ((timer & 3) == 0)
- sub_80A1818(timer >> 2);
+ if (timer % 4 == 0)
+ BlendAnimPalette_BattleDome_FloorLights(timer >> 2);
}
-static void sub_80A1670(u16 timer)
+static void TilesetAnim_BattleDome2(u16 timer)
{
- static void sub_80A1884(u16);
-
- if ((timer & 3) == 0)
- sub_80A1884(timer >> 2);
+ if (timer % 4 == 0)
+ BlendAnimPalette_BattleDome_FloorLightsNoBlend(timer >> 2);
}
-static void sub_80A1688(u16 timer)
+static void QueueAnimTiles_Building_TVTurnedOn(u16 timer)
{
- u16 idx;
-
- idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_InsideBuilding0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(496)), 0x80);
+ u16 i = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Building_TvTurnedOn[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(496)), 0x80);
}
-static void sub_80A16B0(u16 timer)
+static void QueueAnimTiles_SootopolisGym_Waterfalls(u16 timer)
{
- u16 idx;
-
- idx = timer % 3;
- AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x180);
- AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 464)), 0x280);
+ u16 i = timer % 3;
+ AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym_SideWaterfall[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x180);
+ AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym_FrontWaterfall[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 464)), 0x280);
}
-static void sub_80A16F8(u16 timer)
+static void QueueAnimTiles_EliteFour_WallLights(u16 timer)
{
- u16 idx;
-
- idx = timer % 4;
- AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 504)), 0x20);
+ u16 i = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour_WallLights[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 504)), 0x20);
}
-static void sub_80A1720(u16 timer)
+static void QueueAnimTiles_EliteFour_GroundLights(u16 timer)
{
- u16 idx;
-
- idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 480)), 0x80);
+ u16 i = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour_FloorLight[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 480)), 0x80);
}
-static void sub_80A1748(u16 timer)
+static void QueueAnimTiles_MauvilleGym_ElectricGates(u16 timer)
{
- u16 idx;
-
- idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_MauvilleGym0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 144)), 0x200);
+ u16 i = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_MauvilleGym_ElectricGates[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 144)), 0x200);
}
-static void sub_80A1770(u16 timer)
+static void QueueAnimTiles_BikeShop_BlinkingLights(u16 timer)
{
- u16 idx;
-
- idx = timer % 2;
- AppendTilesetAnimToBuffer(gTilesetAnims_BikeShop0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x120);
+ u16 i = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BikeShop_BlinkingLights[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 496)), 0x120);
}
-static void sub_80A1798(u16 timer)
+static void QueueAnimTiles_Sootopolis_StormyWater(u16 timer)
{
- u16 idx;
-
- idx = timer % 8;
- AppendTilesetAnimToBuffer(gTilesetAnims_Sootopolis0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 240)), 0xc00);
+ u16 i = timer % 8;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Sootopolis_StormyWater[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 240)), 0xc00);
}
-static void sub_80A17C0(u16 timer)
+static void QueueAnimTiles_BattlePyramid_Torch(u16 timer)
{
- u16 idx;
-
- idx = timer % 3;
- AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid0[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 151)), 0x100);
+ u16 i = timer % 3;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid_Torch[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 151)), 0x100);
}
-static void sub_80A17EC(u16 timer)
+static void QueueAnimTiles_BattlePyramid_StatueShadow(u16 timer)
{
- u16 idx;
-
- idx = timer % 3;
- AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid1[idx], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 135)), 0x100);
+ u16 i = timer % 3;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid_StatueShadow[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(NUM_TILES_IN_PRIMARY + 135)), 0x100);
}
-static void sub_80A1818(u16 a1)
+static void BlendAnimPalette_BattleDome_FloorLights(u16 timer)
{
- CpuCopy16(gTilesetAnims_BattleDomePals0[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32);
- BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF);
+ CpuCopy16(gTilesetAnims_BattleDomeFloorLightPals[timer % 4], gPlttBufferUnfaded + 0x80, 32);
+ BlendPalette(0x80, 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF);
if ((u8)FindTaskIdByFunc(TransitionPhase1_Task_RunFuncs) != 0xFF )
{
- sSecondaryTilesetCB = sub_80A1670;
- sSecondaryTilesetCBBufferSize = 0x20;
+ sSecondaryTilesetAnimCallback = TilesetAnim_BattleDome2;
+ sSecondaryTilesetAnimCounterMax = 32;
}
}
-static void sub_80A1884(u16 a1)
+static void BlendAnimPalette_BattleDome_FloorLightsNoBlend(u16 timer)
{
- CpuCopy16(gTilesetAnims_BattleDomePals0[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32);
+ CpuCopy16(gTilesetAnims_BattleDomeFloorLightPals[timer % 4], gPlttBufferUnfaded + 0x80, 32);
if ((u8)FindTaskIdByFunc(TransitionPhase1_Task_RunFuncs) == 0xFF )
{
- BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF);
- if (!--sSecondaryTilesetCBBufferSize)
- sSecondaryTilesetCB = NULL;
+ BlendPalette(0x80, 16, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF);
+ if (!--sSecondaryTilesetAnimCounterMax)
+ sSecondaryTilesetAnimCallback = NULL;
}
}
diff --git a/src/time_events.c b/src/time_events.c
index 9702d321f..bd51f0c2d 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(GetLastUsedWarpMapType()))
+ if (IsMapTypeOutdoors(GetLastUsedWarpMapType()))
{
RtcCalcLocalTime();
if (tide[gLocalTime.hours])
diff --git a/src/title_screen.c b/src/title_screen.c
index 48571ff96..b9ef53000 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -23,9 +23,7 @@
#include "constants/rgb.h"
#include "constants/songs.h"
-#define VERSION_BANNER_SHAPE 1
#define VERSION_BANNER_RIGHT_TILEOFFSET 64
-#define VERSION_BANNER_BYTES 0x1000
#define VERSION_BANNER_LEFT_X 98
#define VERSION_BANNER_RIGHT_X 162
#define VERSION_BANNER_Y 2
@@ -64,16 +62,41 @@ static const u32 sTitleScreenRayquazaTilemap[] = INCBIN_U32("graphics/title_scre
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[] =
-{
- 0x0010, 0x0110, 0x0210, 0x0310, 0x0410, 0x0510, 0x0610, 0x0710,
- 0x0810, 0x0910, 0x0a10, 0x0b10, 0x0c10, 0x0d10, 0x0e10, 0x0f10,
- 0x100f, 0x100e, 0x100d, 0x100c, 0x100b, 0x100a, 0x1009, 0x1008,
- 0x1007, 0x1006, 0x1005, 0x1004, 0x1003, 0x1002, 0x1001, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+const u16 gIntroWaterDropAlphaBlend[] =
+{
+ BLDALPHA_BLEND(16, 0),
+ BLDALPHA_BLEND(16, 1),
+ BLDALPHA_BLEND(16, 2),
+ BLDALPHA_BLEND(16, 3),
+ BLDALPHA_BLEND(16, 4),
+ BLDALPHA_BLEND(16, 5),
+ BLDALPHA_BLEND(16, 6),
+ BLDALPHA_BLEND(16, 7),
+ BLDALPHA_BLEND(16, 8),
+ BLDALPHA_BLEND(16, 9),
+ BLDALPHA_BLEND(16, 10),
+ BLDALPHA_BLEND(16, 11),
+ BLDALPHA_BLEND(16, 12),
+ BLDALPHA_BLEND(16, 13),
+ BLDALPHA_BLEND(16, 14),
+ BLDALPHA_BLEND(16, 15),
+ BLDALPHA_BLEND(15, 16),
+ BLDALPHA_BLEND(14, 16),
+ BLDALPHA_BLEND(13, 16),
+ BLDALPHA_BLEND(12, 16),
+ BLDALPHA_BLEND(11, 16),
+ BLDALPHA_BLEND(10, 16),
+ BLDALPHA_BLEND(9, 16),
+ BLDALPHA_BLEND(8, 16),
+ BLDALPHA_BLEND(7, 16),
+ BLDALPHA_BLEND(6, 16),
+ BLDALPHA_BLEND(5, 16),
+ BLDALPHA_BLEND(4, 16),
+ BLDALPHA_BLEND(3, 16),
+ BLDALPHA_BLEND(2, 16),
+ BLDALPHA_BLEND(1, 16),
+ BLDALPHA_BLEND(0, 16),
+ [32 ... 63] = BLDALPHA_BLEND(0, 16)
};
static const struct OamData sVersionBannerLeftOamData =
@@ -83,10 +106,10 @@ static const struct OamData sVersionBannerLeftOamData =
.objMode = 0,
.mosaic = 0,
.bpp = 1,
- .shape = VERSION_BANNER_SHAPE,
+ .shape = SPRITE_SHAPE(64x32),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x32),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -100,10 +123,10 @@ static const struct OamData sVersionBannerRightOamData =
.objMode = 0,
.mosaic = 0,
.bpp = 1,
- .shape = VERSION_BANNER_SHAPE,
+ .shape = SPRITE_SHAPE(64x32),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x32),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -156,8 +179,12 @@ static const struct SpriteTemplate sVersionBannerRightSpriteTemplate =
static const struct CompressedSpriteSheet sSpriteSheet_EmeraldVersion[] =
{
- {gTitleScreenEmeraldVersionGfx, VERSION_BANNER_BYTES, 1000},
- {NULL},
+ {
+ .data = gTitleScreenEmeraldVersionGfx,
+ .size = 0x1000,
+ .tag = 1000
+ },
+ {},
};
static const struct OamData sOamData_CopyrightBanner =
@@ -167,10 +194,10 @@ static const struct OamData sOamData_CopyrightBanner =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = SPRITE_SHAPE(32x8),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(32x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -255,14 +282,21 @@ static const struct SpriteTemplate sStartCopyrightBannerSpriteTemplate =
static const struct CompressedSpriteSheet sSpriteSheet_PressStart[] =
{
- {gTitleScreenPressStartGfx, 0x520, 1001},
- {NULL},
+ {
+ .data = gTitleScreenPressStartGfx,
+ .size = 0x520,
+ .tag = 1001
+ },
+ {},
};
static const struct SpritePalette sSpritePalette_PressStart[] =
{
- {gTitleScreenPressStartPal, 1001},
- {NULL},
+ {
+ .data = gTitleScreenPressStartPal,
+ .tag = 1001
+ },
+ {},
};
static const struct OamData sPokemonLogoShineOamData =
@@ -272,10 +306,10 @@ static const struct OamData sPokemonLogoShineOamData =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -306,8 +340,12 @@ static const struct SpriteTemplate sPokemonLogoShineSpriteTemplate =
static const struct CompressedSpriteSheet sPokemonLogoShineSpriteSheet[] =
{
- {sTitleScreenLogoShineGfx, 0x800, 1002},
- {NULL},
+ {
+ .data = sTitleScreenLogoShineGfx,
+ .size = 0x800,
+ .tag = 1002
+ },
+ {},
};
// code
@@ -324,7 +362,7 @@ static void SpriteCB_VersionBannerLeft(struct Sprite *sprite)
sprite->pos1.y++;
if (sprite->data[0] != 0)
sprite->data[0]--;
- SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[sprite->data[0]]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[sprite->data[0]]);
}
}
@@ -507,12 +545,12 @@ void CB2_InitTitleScreen(void)
break;
case 1:
LZ77UnCompVram(gTitleScreenPokemonLogoGfx, (void *)VRAM);
- LZ77UnCompVram(gUnknown_08DE0644, (void *)(VRAM + 0x4800));
+ LZ77UnCompVram(gUnknown_08DE0644, (void *)(BG_SCREEN_ADDR(9)));
LoadPalette(gTitleScreenBgPalettes, 0, 0x1E0);
- LZ77UnCompVram(sTitleScreenRayquazaGfx, (void *)(VRAM + 0x8000));
- LZ77UnCompVram(sTitleScreenRayquazaTilemap, (void *)(VRAM + 0xD000));
- LZ77UnCompVram(sTitleScreenCloudsGfx, (void *)(VRAM + 0xC000));
- LZ77UnCompVram(gUnknown_08DDE458, (void *)(VRAM + 0xD800));
+ LZ77UnCompVram(sTitleScreenRayquazaGfx, (void *)(BG_CHAR_ADDR(2)));
+ LZ77UnCompVram(sTitleScreenRayquazaTilemap, (void *)(BG_SCREEN_ADDR(26)));
+ LZ77UnCompVram(sTitleScreenCloudsGfx, (void *)(BG_CHAR_ADDR(3)));
+ LZ77UnCompVram(gUnknown_08DDE458, (void *)(BG_SCREEN_ADDR(27)));
ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
@@ -542,7 +580,7 @@ void CB2_InitTitleScreen(void)
gMain.state = 4;
break;
case 4:
- sub_816F2A8(0x78, 0x50, 0x100, 0);
+ PanFadeAndZoomScreen(0x78, 0x50, 0x100, 0);
SetGpuReg(REG_OFFSET_BG2X_L, -29 * 256);
SetGpuReg(REG_OFFSET_BG2X_H, -1);
SetGpuReg(REG_OFFSET_BG2Y_L, -32 * 256);
diff --git a/src/trade.c b/src/trade.c
index 70b57fbc7..df8f493f1 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -256,72 +256,89 @@ static const u8 gText_YourOnlyPkmnForBattle[] = _("That's your only\nPOKéMON fo
static const u8 gText_WaitingForYourFriend[] = _("{COLOR DARK_GREY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GREY}Waiting for your friend\nto finish…");
static const u8 gText_YourFriendWantsToTrade[] = _("Your friend wants\nto trade POKéMON.");
-static const struct OamData gOamData_832DC14 = {
- .shape = ST_OAM_H_RECTANGLE,
- .size = 2,
+static const struct OamData gOamData_832DC14 =
+{
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16),
.priority = 1
};
-static const struct OamData gOamData_832DC1C = {
- .shape = ST_OAM_H_RECTANGLE,
- .size = 3,
+static const struct OamData gOamData_832DC1C =
+{
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
.priority = 1
};
-static const union AnimCmd gSpriteAnim_832DC24[] = {
+static const union AnimCmd gSpriteAnim_832DC24[] =
+{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_832DC2C[] = {
+static const union AnimCmd gSpriteAnim_832DC2C[] =
+{
ANIMCMD_FRAME(32, 5),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_832DC34[] = {
+static const union AnimCmd *const gSpriteAnimTable_832DC34[] =
+{
gSpriteAnim_832DC24,
gSpriteAnim_832DC2C
};
-static const struct SpriteSheet gUnknown_0832DC3C = {
- gUnknown_08DDC6E4, 0x800, 300
+static const struct SpriteSheet gUnknown_0832DC3C =
+{
+ .data = gUnknown_08DDC6E4,
+ .size = 0x800,
+ .tag = 300
};
-static const struct SpritePalette gUnknown_0832DC44 = {
- gUnknown_08DDB444, 2345
+static const struct SpritePalette gUnknown_0832DC44 =
+{
+ .data = gUnknown_08DDB444,
+ .tag = 2345
};
-static const union AnimCmd gSpriteAnim_832DC4C[] = {
+static const union AnimCmd gSpriteAnim_832DC4C[] =
+{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_832DC54[] = {
+static const union AnimCmd gSpriteAnim_832DC54[] =
+{
ANIMCMD_FRAME(8, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_832DC5C[] = {
+static const union AnimCmd gSpriteAnim_832DC5C[] =
+{
ANIMCMD_FRAME(16, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_832DC64[] = {
+static const union AnimCmd gSpriteAnim_832DC64[] =
+{
ANIMCMD_FRAME(24, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_832DC6C[] = {
+static const union AnimCmd gSpriteAnim_832DC6C[] =
+{
ANIMCMD_FRAME(32, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_832DC74[] = {
+static const union AnimCmd gSpriteAnim_832DC74[] =
+{
ANIMCMD_FRAME(40, 5),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_832DC7C[] = {
+static const union AnimCmd *const gSpriteAnimTable_832DC7C[] =
+{
gSpriteAnim_832DC4C,
gSpriteAnim_832DC54,
gSpriteAnim_832DC5C,
@@ -355,7 +372,8 @@ static const struct SpriteTemplate gSpriteTemplate_832DCAC =
static const u16 TradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text.gbapal");
static const struct SpritePalette gSpritePalette_TradeScreenText =
{
- TradeScreenTextPalette, 4925
+ .data = TradeScreenTextPalette,
+ .tag = 4925
};
// This is used to determine the next mon to select when the D-Pad is
@@ -367,7 +385,6 @@ static const struct SpritePalette gSpritePalette_TradeScreenText =
// 2 3 8 9
// 4 5 10 11
// 12
-
static const u8 gTradeNextSelectedMonTable[][4][6] =
{
{
@@ -471,7 +488,8 @@ static const u8 gTradeMonSpriteCoords[][2] =
{23, 18} // CANCEL
};
-static const u8 gTradeLevelDisplayCoords[][6][2] = {
+static const u8 gTradeLevelDisplayCoords[][6][2] =
+{
{
// Your party
{5, 4},
@@ -492,7 +510,8 @@ static const u8 gTradeLevelDisplayCoords[][6][2] = {
}
};
-static const u8 gTradeMonBoxCoords[][6][2] = {
+static const u8 gTradeMonBoxCoords[][6][2] =
+{
{
// Your party
{1, 3},
@@ -513,7 +532,8 @@ static const u8 gTradeMonBoxCoords[][6][2] = {
}
};
-static const u8 sUnref_0832DE6E[] = {
+static const u8 sUnref_0832DE6E[] =
+{
0x00, 0x0e,
0x0f, 0x1d,
0x03, 0x05,
@@ -544,7 +564,8 @@ static const u8 *const gUnknown_0832DE94[] =
gJPText_832DB2E
};
-static const struct MenuAction gUnknown_0832DEAC[] = {
+static const struct MenuAction gUnknown_0832DEAC[] =
+{
{gText_Summary4, sub_807A000},
{gText_Trade3, sub_807A024}
};
@@ -817,12 +838,15 @@ static const u16 gUnknown_08337EA0[] = INCBIN_U16("graphics/trade/black.gbapal")
static const u32 gUnknown_08337EC0[] = INCBIN_U32("graphics/trade/wireless_signal.4bpp.lz");
static const u32 gUnknown_08338550[] = INCBIN_U32("graphics/trade/wireless_signal.bin.lz");
-static const struct OamData gOamData_8338C44 = {
+static const struct OamData gOamData_8338C44 =
+{
.affineMode = 1,
- .size = 1
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16)
};
-static const union AnimCmd gSpriteAnim_8338C4C[] = {
+static const union AnimCmd gSpriteAnim_8338C4C[] =
+{
ANIMCMD_FRAME( 0, 3),
ANIMCMD_FRAME( 4, 3),
ANIMCMD_FRAME( 8, 3),
@@ -840,7 +864,8 @@ static const union AnimCmd gSpriteAnim_8338C4C[] = {
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_8338C88[] = {
+static const union AnimCmd gSpriteAnim_8338C88[] =
+{
ANIMCMD_FRAME( 0, 3),
ANIMCMD_FRAME( 4, 3),
ANIMCMD_FRAME( 8, 3),
@@ -858,171 +883,213 @@ static const union AnimCmd gSpriteAnim_8338C88[] = {
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_8338C88[] = {
+static const union AnimCmd *const gSpriteAnimTable_8338C88[] =
+{
gSpriteAnim_8338C4C,
gSpriteAnim_8338C88
};
-static const union AffineAnimCmd gSpriteAffineAnim_8338CCC[] = {
+static const union AffineAnimCmd gSpriteAffineAnim_8338CCC[] =
+{
AFFINEANIMCMD_FRAME(0, 0, 0, 1),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd gSpriteAffineAnim_8338CDC[] = {
+static const union AffineAnimCmd gSpriteAffineAnim_8338CDC[] =
+{
AFFINEANIMCMD_FRAME(-8, 0, 0, 20),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd gSpriteAffineAnim_8338CEC[] = {
+static const union AffineAnimCmd gSpriteAffineAnim_8338CEC[] =
+{
AFFINEANIMCMD_FRAME(0x60, 0x100, 0, 0),
AFFINEANIMCMD_FRAME( 0, 0, 0, 5),
AFFINEANIMCMD_FRAME( 8, 0, 0, 20),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338D0C[] = {
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338D0C[] =
+{
gSpriteAffineAnim_8338CCC,
gSpriteAffineAnim_8338CDC,
gSpriteAffineAnim_8338CEC
};
-static const struct SpriteSheet gUnknown_08338D18 = {
- gTradeBallTiles, 0x600, 5557
+static const struct SpriteSheet gUnknown_08338D18 =
+{
+ .data = gTradeBallTiles,
+ .size = 0x600,
+ .tag = 5557
};
-static const struct SpritePalette gUnknown_08338D20 = {
- gTradeBallPalette, 5558
+static const struct SpritePalette gUnknown_08338D20 =
+{
+ .data = gTradeBallPalette,
+ .tag = 5558
};
-static const struct SpriteTemplate gSpriteTemplate_8338D28 = {
- 5557,
- 5558,
- &gOamData_8338C44,
- gSpriteAnimTable_8338C88,
- NULL,
- gSpriteAffineAnimTable_8338D0C,
- sub_807E55C
+static const struct SpriteTemplate gSpriteTemplate_8338D28 =
+{
+ .tileTag = 5557,
+ .paletteTag = 5558,
+ .oam = &gOamData_8338C44,
+ .anims = gSpriteAnimTable_8338C88,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_8338D0C,
+ .callback = sub_807E55C
};
-static const struct OamData gOamData_8338D40 = {
+static const struct OamData gOamData_8338D40 =
+{
.affineMode = 1,
.objMode = 1,
- .size = 2,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
.priority = 1
};
-static const union AnimCmd gSpriteAnim_8338D48[] = {
+static const union AnimCmd gSpriteAnim_8338D48[] =
+{
ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_8338D50[] = {
+static const union AnimCmd *const gSpriteAnimTable_8338D50[] =
+{
gSpriteAnim_8338D48
};
-static const union AffineAnimCmd gSpriteAffineAnim_8338D54[] = {
+static const union AffineAnimCmd gSpriteAffineAnim_8338D54[] =
+{
AFFINEANIMCMD_FRAME(-10, -10, 0, 5),
AFFINEANIMCMD_FRAME(10, 10, 0, 5),
AFFINEANIMCMD_JUMP(0)
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338D6C[] = {
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338D6C[] =
+{
gSpriteAffineAnim_8338D54
};
-static const struct SpriteSheet gUnknown_08338D70 = {
- gTradeGlow1Tiles, 0x200, 5550
+static const struct SpriteSheet gUnknown_08338D70 =
+{
+ .data = gTradeGlow1Tiles,
+ .size = 0x200,
+ .tag = 5550
};
-static const struct SpritePalette gUnknown_08338D78 = {
- gUnknown_08330940, 5551
+static const struct SpritePalette gUnknown_08338D78 =
+{
+ .data = gUnknown_08330940,
+ .tag = 5551
};
-static const struct SpritePalette gUnknown_08338D80 = {
- gUnknown_083308E0, 5555
+static const struct SpritePalette gUnknown_08338D80 =
+{
+ .data = gUnknown_083308E0,
+ .tag = 5555
};
-static const struct SpriteTemplate gUnknown_08338D88 = {
- 5550,
- 5551,
- &gOamData_8338D40,
- gSpriteAnimTable_8338D50,
- NULL,
- gSpriteAffineAnimTable_8338D6C,
- sub_807AA28
+static const struct SpriteTemplate gUnknown_08338D88 =
+{
+ .tileTag = 5550,
+ .paletteTag = 5551,
+ .oam = &gOamData_8338D40,
+ .anims = gSpriteAnimTable_8338D50,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_8338D6C,
+ .callback = sub_807AA28
};
-static const struct OamData gOamData_8338DA0 = {
- .shape = ST_OAM_V_RECTANGLE,
- .size = 2,
+static const struct OamData gOamData_8338DA0 =
+{
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
.priority = 1
};
-static const union AnimCmd gSpriteAnim_8338DA8[] = {
+static const union AnimCmd gSpriteAnim_8338DA8[] =
+{
ANIMCMD_FRAME(0, 5, .vFlip = TRUE, .hFlip = TRUE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_8338DB0[] = {
+static const union AnimCmd gSpriteAnim_8338DB0[] =
+{
ANIMCMD_FRAME(8, 5, .vFlip = TRUE, .hFlip = TRUE),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_8338DB8[] = {
+static const union AnimCmd *const gSpriteAnimTable_8338DB8[] =
+{
gSpriteAnim_8338DA8,
gSpriteAnim_8338DB0
};
-static const struct SpriteSheet gUnknown_08338DC0 = {
- gTradeGlow2Tiles, 0x300, 5552
+static const struct SpriteSheet gUnknown_08338DC0 =
+{
+ .data = gTradeGlow2Tiles,
+ .size = 0x300,
+ .tag = 5552
};
-static const struct SpriteTemplate gSpriteTemplate_8338DC8 = {
- 5552,
- 5551,
- &gOamData_8338DA0,
- gSpriteAnimTable_8338DB8,
- NULL,
- gDummySpriteAffineAnimTable,
- sub_807AA7C
+static const struct SpriteTemplate gSpriteTemplate_8338DC8 =
+{
+ .tileTag = 5552,
+ .paletteTag = 5551,
+ .oam = &gOamData_8338DA0,
+ .anims = gSpriteAnimTable_8338DB8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_807AA7C
};
-static const struct OamData gOamData_8338DE0 = {
- .shape = ST_OAM_V_RECTANGLE,
- .size = 2,
+static const struct OamData gOamData_8338DE0 =
+{
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
.priority = 1
};
-static const union AnimCmd gSpriteAnim_8338DE8[] = {
+static const union AnimCmd gSpriteAnim_8338DE8[] =
+{
ANIMCMD_FRAME(0, 10),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_8338DF0[] = {
+static const union AnimCmd *const gSpriteAnimTable_8338DF0[] =
+{
gSpriteAnim_8338DE8
};
-static const struct SpriteSheet gUnknown_08338DF4 = {
- gTradeCableEndTiles, 0x100, 5554
+static const struct SpriteSheet gUnknown_08338DF4 =
+{
+ .data = gTradeCableEndTiles,
+ .size = 0x100,
+ .tag = 5554
};
-static const struct SpriteTemplate gSpriteTemplate_8338DFC = {
- 5554,
- 5555,
- &gOamData_8338DE0,
- gSpriteAnimTable_8338DF0,
- NULL,
- gDummySpriteAffineAnimTable,
- sub_807AABC
+static const struct SpriteTemplate gSpriteTemplate_8338DFC =
+{
+ .tileTag = 5554,
+ .paletteTag = 5555,
+ .oam = &gOamData_8338DE0,
+ .anims = gSpriteAnimTable_8338DF0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_807AABC
};
-static const struct OamData gOamData_8338E14 = {
- .shape = ST_OAM_H_RECTANGLE,
- .size = 3,
+static const struct OamData gOamData_8338E14 =
+{
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
.priority = 1
};
-static const union AnimCmd gSpriteAnim_8338E1C[] = {
+static const union AnimCmd gSpriteAnim_8338E1C[] =
+{
ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE),
ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE),
ANIMCMD_FRAME(64, 2, .vFlip = TRUE, .hFlip = TRUE),
@@ -1034,7 +1101,8 @@ static const union AnimCmd gSpriteAnim_8338E1C[] = {
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_8338E40[] = {
+static const union AnimCmd gSpriteAnim_8338E40[] =
+{
ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE),
ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE),
ANIMCMD_FRAME(64, 2, .vFlip = TRUE, .hFlip = TRUE),
@@ -1046,50 +1114,60 @@ static const union AnimCmd gSpriteAnim_8338E40[] = {
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_8338E64[] = {
+static const union AnimCmd *const gSpriteAnimTable_8338E64[] =
+{
gSpriteAnim_8338E1C
};
-static const union AnimCmd *const gSpriteAnimTable_8338E68[] = {
+static const union AnimCmd *const gSpriteAnimTable_8338E68[] =
+{
gSpriteAnim_8338E40
};
-static const struct SpriteSheet gUnknown_08338E6C = {
- gTradeGBAScreenTiles, 0x1000, 5556
+static const struct SpriteSheet gUnknown_08338E6C =
+{
+ .data = gTradeGBAScreenTiles,
+ .size = 0x1000,
+ .tag = 5556
};
-static const struct SpriteTemplate gSpriteTemplate_8338E74 = {
- 5556,
- 5555,
- &gOamData_8338E14,
- gSpriteAnimTable_8338E64,
- NULL,
- gDummySpriteAffineAnimTable,
- sub_807AB04
+static const struct SpriteTemplate gSpriteTemplate_8338E74 =
+{
+ .tileTag = 5556,
+ .paletteTag = 5555,
+ .oam = &gOamData_8338E14,
+ .anims = gSpriteAnimTable_8338E64,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_807AB04
};
-static const struct SpriteTemplate gSpriteTemplate_8338E8C = {
- 5556,
- 5555,
- &gOamData_8338E14,
- gSpriteAnimTable_8338E68,
- NULL,
- gDummySpriteAffineAnimTable,
- sub_807AB04
+static const struct SpriteTemplate gSpriteTemplate_8338E8C =
+{
+ .tileTag = 5556,
+ .paletteTag = 5555,
+ .oam = &gOamData_8338E14,
+ .anims = gSpriteAnimTable_8338E68,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_807AB04
};
static const u16 gUnknown_08338EA4[] = INCBIN_U16("graphics/trade/unknown_338EA4.gbapal");
-static const union AffineAnimCmd gSpriteAffineAnim_8338EBC[] = {
+static const union AffineAnimCmd gSpriteAffineAnim_8338EBC[] =
+{
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_JUMP(0)
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338ECC[] = {
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338ECC[] =
+{
gSpriteAffineAnim_8338EBC
};
-static const struct InGameTrade gIngameTrades[] = {
+static const struct InGameTrade gIngameTrades[] =
+{
{
_("DOTS"), SPECIES_SEEDOT,
5, 4, 5, 4, 4, 4,
@@ -1131,7 +1209,8 @@ static const struct InGameTrade gIngameTrades[] = {
}
};
-static const u16 gIngameTradeMail[][10] = {
+static const u16 gIngameTradeMail[][10] =
+{
{
EC_WORD_BE,
EC_WORD_NICE,
@@ -1233,7 +1312,8 @@ static const struct BgTemplate gUnknown_08339014[] =
},
};
-static const s8 gTradeBallVerticalVelocityTable[] = {
+static const s8 gTradeBallVerticalVelocityTable[] =
+{
0, 0, 1, 0,
1, 0, 1, 1,
1, 1, 2, 2,
@@ -1418,7 +1498,7 @@ static void sub_80772A4(void)
for (i = 0; i < 18; i++)
{
ClearWindowTilemap(i);
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
}
FillBgTilemapBufferRect(0, 0, 0, 0, 30, 20, 15);
@@ -1507,13 +1587,13 @@ static void sub_80773D0(void)
}
break;
case 3:
- if (GetLinkPlayerCount_2() >= sub_800AA48())
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
{
if (IsLinkMaster())
{
if (++gUnknown_0203229C->unk_A8 > 30)
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gMain.state++;
}
}
@@ -1834,9 +1914,9 @@ static void sub_8077B74(void)
}
if (gUnknown_0203229C->tradeMenuCursorPosition < PARTY_SIZE)
- gUnknown_0203229C->tradeMenuCursorPosition = gUnknown_0203CF20;
+ gUnknown_0203229C->tradeMenuCursorPosition = gLastViewedMonIndex;
else
- gUnknown_0203229C->tradeMenuCursorPosition = gUnknown_0203CF20 + PARTY_SIZE;
+ gUnknown_0203229C->tradeMenuCursorPosition = gLastViewedMonIndex + PARTY_SIZE;
gUnknown_0203229C->tradeMenuCursorSpriteIdx = CreateSprite(&gSpriteTemplate_832DC94, gTradeMonSpriteCoords[gUnknown_0203229C->tradeMenuCursorPosition][0] * 8 + 32, gTradeMonSpriteCoords[gUnknown_0203229C->tradeMenuCursorPosition][1] * 8, 2);
gMain.state = 16;
@@ -2461,7 +2541,7 @@ static void sub_8078DBC(void)
if (gUnknown_0203229C->tradeMenuCursorPosition < 6)
{
sub_8098858(1, 1, 14);
- FillWindowPixelBuffer(1, 0x11);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
PrintMenuTable(1, 2, gUnknown_0832DEAC);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(1, 2, 0);
PutWindowTilemap(1);
@@ -2724,7 +2804,7 @@ static void sub_8079408(void)
for (i = 0; i < 4; i++)
{
- FillWindowPixelBuffer(i + 14, 0);
+ FillWindowPixelBuffer(i + 14, PIXEL_FILL(0));
rbox_fill_rectangle(i + 14);
}
@@ -2762,7 +2842,7 @@ static void sub_80794CC(void)
Free(gUnknown_0203229C);
FreeAllWindowBuffers();
sub_800E084();
- SetMainCallback2(c2_8056854);
+ SetMainCallback2(CB2_ReturnToFieldFromMultiplayer);
}
}
else
@@ -2772,7 +2852,7 @@ static void sub_80794CC(void)
Free(gUnknown_02032184);
Free(gUnknown_0203229C);
FreeAllWindowBuffers();
- SetMainCallback2(c2_8056854);
+ SetMainCallback2(CB2_ReturnToFieldFromMultiplayer);
}
}
}
@@ -3256,7 +3336,7 @@ static void sub_807A0C4(void)
static void sub_807A19C(u8 a0)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, 1, gUnknown_0832DEBC[a0], 0, 1, TEXT_SPEED_FF, NULL);
sub_8098858(0, 20, 12);
PutWindowTilemap(0);
@@ -4099,11 +4179,11 @@ void sub_807AE50(void)
case 3:
if (IsLinkMaster())
{
- if (GetLinkPlayerCount_2() >= sub_800AA48())
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
{
if (++gUnknown_020322A0->timer > 30)
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gMain.state++;
}
}
@@ -4185,7 +4265,7 @@ void sub_807B140(void)
void sub_807B154(void)
{
- FillWindowPixelBuffer(0, 0xFF);
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
}
@@ -4263,7 +4343,7 @@ static void sub_807B270(void)
break;
case 8:
sub_807ACFC(1, 1);
- FillWindowPixelBuffer(0, 0xFF);
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
gMain.state++;
@@ -4654,7 +4734,7 @@ static bool8 sub_807BBEC(void)
if (!gPaletteFade.active)
{
sub_807B62C(4);
- FillWindowPixelBuffer(0, 0xFF);
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
CopyWindowToVram(0, 3);
gUnknown_020322A0->state++;
}
@@ -5146,7 +5226,7 @@ static bool8 sub_807CFC8(void)
if (!gPaletteFade.active)
{
sub_807B62C(4);
- FillWindowPixelBuffer(0, 0xFF);
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
CopyWindowToVram(0, 3);
gUnknown_020322A0->state++;
}
@@ -6061,7 +6141,7 @@ static void sub_807F110(u8 taskId)
if (!gPaletteFade.active)
{
SetMainCallback2(sub_807B270);
- gFieldCallback = sub_80AF168;
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
DestroyTask(taskId);
}
}
@@ -6085,7 +6165,7 @@ void sub_807F19C(void)
void sub_807F1A8(u8 windowId, const u8 *str, u8 speed)
{
- FillWindowPixelBuffer(windowId, 0xFF);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(15));
gUnknown_020322A0->unk_F6[0] = 15;
gUnknown_020322A0->unk_F6[1] = 1;
gUnknown_020322A0->unk_F6[2] = 6;
diff --git a/src/trader.c b/src/trader.c
index e23efb4ce..97bc4626f 100644
--- a/src/trader.c
+++ b/src/trader.c
@@ -73,7 +73,7 @@ void CreateAvailableDecorationsMenu(u8 taskId)
}
windowTemplate.width = convert_pixel_width_to_tile_width(windowWidth);
data[3] = AddWindow(&windowTemplate);
- SetWindowBorderStyle(data[3], FALSE, 0x214, 14);
+ DrawStdFrameWithCustomTileAndPalette(data[3], FALSE, 0x214, 14);
for (i = 0; i < 4; i++)
{
if (trader->decorIds[i] > NUM_DECORATIONS)
@@ -98,7 +98,7 @@ void sub_8133BE4(u8 taskId, u8 decorationId)
gSpecialVar_0x8004 = decorationId;
}
- sub_8198070(data[3], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[3], FALSE);
ClearWindowTilemap(data[3]);
RemoveWindow(data[3]);
schedule_bg_copy_tilemap_to_vram(0);
@@ -113,9 +113,9 @@ void Task_HandleGetDecorationMenuInput(u8 taskId)
switch (input)
{
- case -2:
+ case MENU_NOTHING_CHOSEN:
break;
- case -1:
+ case MENU_B_PRESSED:
case 4:
PlaySE(SE_SELECT);
sub_8133BE4(taskId, 0);
diff --git a/src/trainer_card.c b/src/trainer_card.c
index b7bd5cc1d..01839d598 100755
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -21,6 +21,7 @@
#include "gpu_regs.h"
#include "international_string_util.h"
#include "pokedex.h"
+#include "pokemon_icon.h"
#include "graphics.h"
#include "pokemon_icon.h"
#include "trainer_pokemon_sprites.h"
@@ -89,10 +90,8 @@ struct TrainerCardData
u8 language;
};
-//external functions
-extern u8 sub_80D30A0(u16);
-
// EWRAM
+EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0};
EWRAM_DATA static struct TrainerCardData *sData = NULL;
//this file's functions
@@ -349,7 +348,7 @@ static void sub_80C2760(u8 taskId)
case 0:
if (!IsDma3ManagerBusyWithBgCopy())
{
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
sData->var_0++;
}
break;
@@ -362,7 +361,7 @@ static void sub_80C2760(u8 taskId)
sData->var_0++;
break;
case 3:
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
sub_80C4FF0();
sub_80C438C(2);
sData->var_0++;
@@ -468,7 +467,7 @@ static void sub_80C2760(u8 taskId)
break;
case 15:
sub_800AC34();
- NewMenuHelpers_DrawDialogueFrame(0, 1);
+ DrawDialogueFrame(0, 1);
AddTextPrinterParameterized(0, 1, gText_WaitingTrainerFinishReading, 0, 1, 255, 0);
CopyWindowToVram(0, 3);
sData->var_0 = 16;
@@ -694,7 +693,7 @@ static void SetPlayerCardData(struct TrainerCard *trainerCard, u8 cardType)
trainerCard->money = GetMoney(&gSaveBlock1Ptr->money);
for (i = 0; i < 4; i++)
- trainerCard->var_28[i] = gSaveBlock1Ptr->unk2BB0[i];
+ trainerCard->var_28[i] = gSaveBlock1Ptr->easyChatProfile[i];
StringCopy(trainerCard->playerName, gSaveBlock2Ptr->playerName);
@@ -1102,7 +1101,7 @@ static void PrintTimeOnCard(void)
r10 = width + 30;
r7 -= r10;
- FillWindowPixelRect(1, 0, r7, r4, r10, 15);
+ FillWindowPixelRect(1, PIXEL_FILL(0), r7, r4, r10, 15);
ConvertIntToDecimalStringN(gStringVar4, hours, 1, 3);
AddTextPrinterParameterized3(1, 1, r7, r4, gUnknown_0856FB0C, TEXT_SPEED_FF, gStringVar4);
r7 += 18;
@@ -1535,7 +1534,7 @@ static void sub_80C48C8(void)
}
}
-u8 sub_80C4904(u8 cardId)
+u8 GetTrainerCardStars(u8 cardId)
{
struct TrainerCard* trainerCards = gTrainerCards;
return trainerCards[cardId].stars;
@@ -1633,7 +1632,7 @@ static bool8 sub_80C4B08(struct Task* task)
switch (sData->var_4)
{
case 0:
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 0x20, 0x20);
break;
case 1:
@@ -1658,7 +1657,7 @@ static bool8 sub_80C4B08(struct Task* task)
if (!sData->var_8)
sub_80C474C();
else
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
break;
case 4:
if (sData->var_8)
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index e0a236286..eafd1eb3d 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -3,6 +3,7 @@
#include "battle.h"
#include "battle_tower.h"
#include "battle_setup.h"
+#include "ereader_helpers.h"
#include "event_data.h"
#include "event_scripts.h"
#include "fieldmap.h"
@@ -24,13 +25,13 @@
#include "constants/event_object_movement_constants.h"
#include "constants/event_objects.h"
#include "constants/items.h"
+#include "constants/layouts.h"
#include "constants/moves.h"
#include "constants/maps.h"
#include "constants/species.h"
#include "constants/trainers.h"
#include "constants/easy_chat.h"
-
-extern bool32 sub_81D3B34(void);
+#include "constants/trainer_hill.h"
#define HILL_TAG_NORMAL 0
#define HILL_TAG_VARIETY 1
@@ -91,16 +92,16 @@ struct TrHillStruct2
// EWRAM
static EWRAM_DATA struct TrHillStruct2 *sHillData = NULL;
static EWRAM_DATA struct TrHillRoomTrainers *sRoomTrainers = NULL;
-EWRAM_DATA u32 *gUnknown_0203CF5C = NULL;
+EWRAM_DATA u32 *gTrainerHillVBlankCounter = NULL;
// This file's functions.
-static void sub_81D581C(void);
+static void TrainerHillStartChallenge(void);
static void sub_81D58D8(void);
static void sub_81D5924(void);
static void sub_81D59D0(void);
-static void sub_81D5A70(void);
-static void sub_81D5AB4(void);
-static void sub_81D5AD0(void);
+static void TrainerHillResumeTimer(void);
+static void TrainerHillSetPlayerLost(void);
+static void TrainerHillGetChallengeStatus(void);
static void sub_81D5B2C(void);
static void sub_81D5BBC(void);
static void sub_81D5C00(void);
@@ -111,7 +112,7 @@ static void sub_81D64DC(void);
static void sub_81D64FC(void);
static void sub_81D6518(void);
static void sub_81D6568(void);
-static void sub_81D65A0(void);
+static void TrainerHillSetTag(void);
static void SetUpDataStruct(void);
static void FreeDataStruct(void);
static void nullsub_2(void);
@@ -262,13 +263,13 @@ static const u8 *const sFloorStrings[] =
static void (* const sHillFunctions[])(void) =
{
- sub_81D581C,
+ TrainerHillStartChallenge,
sub_81D58D8,
sub_81D5924,
sub_81D59D0,
- sub_81D5A70,
- sub_81D5AB4,
- sub_81D5AD0,
+ TrainerHillResumeTimer,
+ TrainerHillSetPlayerLost,
+ TrainerHillGetChallengeStatus,
sub_81D5B2C,
sub_81D5BBC,
sub_81D5C00,
@@ -279,7 +280,7 @@ static void (* const sHillFunctions[])(void) =
sub_81D64FC,
sub_81D6518,
sub_81D6568,
- sub_81D65A0,
+ TrainerHillSetTag,
};
static const u8 *const sTagMatchStrings[] =
@@ -317,14 +318,14 @@ void ResetTrainerHillResults(void)
gSaveBlock2Ptr->frontier.field_EF9_1 = 0;
gSaveBlock2Ptr->frontier.field_EF9_0 = 0;
- gSaveBlock1Ptr->trainerHill.field_3D68 = 0;
+ gSaveBlock1Ptr->trainerHill.bestTime = 0;
for (i = 0; i < 4; i++)
SetTimerValue(&gSaveBlock1Ptr->trainerHillTimes[i], HILL_MAX_TIME);
}
static u8 GetFloorId(void)
{
- return gMapHeader.mapLayoutId - 159;
+ return gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F;
}
u8 GetTrainerHillOpponentClass(u16 trainerId)
@@ -370,7 +371,7 @@ void InitTrainerHillBattleStruct(void)
}
sRoomTrainers->facilityClass[i] = sHillData->tag.floors[sHillData->floorId].trainers[i].facilityClass;
}
- sub_80008DC(&gSaveBlock1Ptr->trainerHill.field_3D64);
+ SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer);
FreeDataStruct();
}
@@ -385,7 +386,7 @@ static void SetUpDataStruct(void)
if (sHillData == NULL)
{
sHillData = AllocZeroed(sizeof(*sHillData));
- sHillData->floorId = gMapHeader.mapLayoutId - 159;
+ sHillData->floorId = gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F;
CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag));
nullsub_2();
}
@@ -424,7 +425,7 @@ void CopyTrainerHillTrainerText(u8 which, u16 trainerId)
FreeDataStruct();
}
-static void sub_81D581C(void)
+static void TrainerHillStartChallenge(void)
{
nullsub_2();
if (!sub_81D3B34())
@@ -433,11 +434,11 @@ static void sub_81D581C(void)
gSaveBlock1Ptr->trainerHill.field_3D6E_0f = 0;
gSaveBlock1Ptr->trainerHill.field_3D6C = 0;
- sub_80008DC(&gSaveBlock1Ptr->trainerHill.field_3D64);
- gSaveBlock1Ptr->trainerHill.field_3D64 = 0;
+ SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer);
+ gSaveBlock1Ptr->trainerHill.timer = 0;
gSaveBlock1Ptr->trainerHill.field_3D6E_0c = 0;
gSaveBlock1Ptr->trainerHill.field_3D6E_0b = 0;
- gSaveBlock1Ptr->trainerHill.field_3D6E_0e = 0;
+ gSaveBlock1Ptr->trainerHill.maybeECardScanDuringChallenge = 0;
gSaveBlock2Ptr->frontier.field_EE0 = 0;
gBattleOutcome = 0;
gSaveBlock1Ptr->trainerHill.field_3D6E_0a = 0;
@@ -445,7 +446,7 @@ static void sub_81D581C(void)
static void sub_81D58D8(void)
{
- sub_80008E8();
+ ClearTrainerHillVBlankCounter();
gSpecialVar_Result = 0;
if (gSaveBlock1Ptr->trainerHill.field_3D6E_0c)
gSpecialVar_Result++;
@@ -482,10 +483,10 @@ static void sub_81D59D0(void)
{
gSpecialVar_Result = 2;
}
- else if (GetTimerValue(&gSaveBlock1Ptr->trainerHill.field_3D68) > gSaveBlock1Ptr->trainerHill.field_3D64)
+ else if (GetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime) > gSaveBlock1Ptr->trainerHill.timer)
{
- SetTimerValue(&gSaveBlock1Ptr->trainerHill.field_3D68, gSaveBlock1Ptr->trainerHill.field_3D64);
- gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.tag] = gSaveBlock1Ptr->trainerHill.field_3D68;
+ SetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime, gSaveBlock1Ptr->trainerHill.timer);
+ gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.tag] = gSaveBlock1Ptr->trainerHill.bestTime;
gSpecialVar_Result = 0;
}
else
@@ -496,37 +497,40 @@ static void sub_81D59D0(void)
gSaveBlock1Ptr->trainerHill.field_3D6E_0b = 1;
}
-static void sub_81D5A70(void)
+static void TrainerHillResumeTimer(void)
{
if (!gSaveBlock1Ptr->trainerHill.field_3D6E_0c)
{
- if (gSaveBlock1Ptr->trainerHill.field_3D64 >= HILL_MAX_TIME)
- gSaveBlock1Ptr->trainerHill.field_3D64 = HILL_MAX_TIME;
+ if (gSaveBlock1Ptr->trainerHill.timer >= HILL_MAX_TIME)
+ gSaveBlock1Ptr->trainerHill.timer = HILL_MAX_TIME;
else
- sub_80008DC(&gSaveBlock1Ptr->trainerHill.field_3D64);
+ SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer);
}
}
-static void sub_81D5AB4(void)
+static void TrainerHillSetPlayerLost(void)
{
- gSaveBlock1Ptr->trainerHill.field_3D6E_0d = 1;
+ gSaveBlock1Ptr->trainerHill.hasLost = 1;
}
-static void sub_81D5AD0(void)
+static void TrainerHillGetChallengeStatus(void)
{
- if (gSaveBlock1Ptr->trainerHill.field_3D6E_0d)
+ if (gSaveBlock1Ptr->trainerHill.hasLost)
{
- gSaveBlock1Ptr->trainerHill.field_3D6E_0d = 0;
- gSpecialVar_Result = 0;
+ // The player lost their last match.
+ gSaveBlock1Ptr->trainerHill.hasLost = 0;
+ gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_LOST;
}
- else if (gSaveBlock1Ptr->trainerHill.field_3D6E_0e)
+ else if (gSaveBlock1Ptr->trainerHill.maybeECardScanDuringChallenge)
{
- gSaveBlock1Ptr->trainerHill.field_3D6E_0e = 0;
- gSpecialVar_Result = 1;
+ // Unreachable code. Something relating to eCards?
+ gSaveBlock1Ptr->trainerHill.maybeECardScanDuringChallenge = 0;
+ gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_ECARD_SCANNED;
}
else
{
- gSpecialVar_Result = 2;
+ // Continue playing.
+ gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_NORMAL;
}
}
@@ -534,7 +538,7 @@ static void sub_81D5B2C(void)
{
s32 total, minutes, secondsWhole, secondsFraction;
- total = gSaveBlock1Ptr->trainerHill.field_3D64;
+ total = gSaveBlock1Ptr->trainerHill.timer;
if (total >= HILL_MAX_TIME)
total = HILL_MAX_TIME;
@@ -574,7 +578,7 @@ static void sub_81D5C00(void)
bool8 sub_81D5C18(void)
{
- if (VarGet(VAR_0x40D6) == 0)
+ if (VarGet(VAR_TRAINER_HILL_IS_ACTIVE) == 0)
return FALSE;
else if (gSaveBlock1Ptr->trainerHill.field_3D6E_0c)
return FALSE;
@@ -608,7 +612,7 @@ void PrintOnTrainerHillRecordsWindow(void)
u32 total, minutes, secondsWhole, secondsFraction;
SetUpDataStruct();
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
x = GetStringCenterAlignXOffset(1, gText_TimeBoard, 0xD0);
AddTextPrinterParameterized3(0, 1, x, 2, sRecordWinColors, TEXT_SPEED_FF, gText_TimeBoard);
@@ -659,7 +663,7 @@ void sub_81D5DF8(void)
SetUpDataStruct();
for (i = 0; i < 2; i++)
- gSaveBlock2Ptr->frontier.field_CB4[i] = 0xFFFF;
+ gSaveBlock2Ptr->frontier.trainerIds[i] = 0xFFFF;
CpuFill32(0, gSaveBlock1Ptr->eventObjectTemplates, sizeof(gSaveBlock1Ptr->eventObjectTemplates));
floorId = GetFloorId();
@@ -676,7 +680,7 @@ void sub_81D5DF8(void)
eventTemplates[i].movementType = ((sHillData->tag.floors[floorId].direction >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP;
eventTemplates[i].trainerRange_berryTreeId = (sHillData->tag.floors[floorId].range >> bits) & 0xF;
eventTemplates[i].script = EventScript_2C83F0;
- gSaveBlock2Ptr->frontier.field_CB4[i] = i + 1;
+ gSaveBlock2Ptr->frontier.trainerIds[i] = i + 1;
}
FreeDataStruct();
@@ -795,7 +799,7 @@ void sub_81D5FB4(u16 *mapArg)
dst += 31;
}
- mapheader_run_script_with_tag_x1();
+ RunOnLoadMapScript();
FreeDataStruct();
}
@@ -803,10 +807,10 @@ bool32 InTrainerHill(void)
{
bool32 ret;
- if (gMapHeader.mapLayoutId == 0x19F
- || gMapHeader.mapLayoutId == 0x1A0
- || gMapHeader.mapLayoutId == 0x1A1
- || gMapHeader.mapLayoutId == 0x1A2)
+ if (gMapHeader.mapLayoutId == LAYOUT_TRAINER_HILL_1F
+ || gMapHeader.mapLayoutId == LAYOUT_TRAINER_HILL_2F
+ || gMapHeader.mapLayoutId == LAYOUT_TRAINER_HILL_3F
+ || gMapHeader.mapLayoutId == LAYOUT_TRAINER_HILL_4F)
ret = TRUE;
else
ret = FALSE;
@@ -818,17 +822,17 @@ u8 GetCurrentTrainerHillMapId(void)
{
u8 ret;
- if (gMapHeader.mapLayoutId == 0x19F)
+ if (gMapHeader.mapLayoutId == LAYOUT_TRAINER_HILL_1F)
ret = 1;
- else if (gMapHeader.mapLayoutId == 0x1A0)
+ else if (gMapHeader.mapLayoutId == LAYOUT_TRAINER_HILL_2F)
ret = 2;
- else if (gMapHeader.mapLayoutId == 0x1A1)
+ else if (gMapHeader.mapLayoutId == LAYOUT_TRAINER_HILL_3F)
ret = 3;
- else if (gMapHeader.mapLayoutId == 0x1A2)
+ else if (gMapHeader.mapLayoutId == LAYOUT_TRAINER_HILL_4F)
ret = 4;
- else if (gMapHeader.mapLayoutId == 0x1A3)
+ else if (gMapHeader.mapLayoutId == LAYOUT_TRAINER_HILL_ROOF)
ret = 5;
- else if (gMapHeader.mapLayoutId == 0x19E)
+ else if (gMapHeader.mapLayoutId == LAYOUT_TRAINER_HILL_ENTRANCE)
ret = 6;
else
ret = 0;
@@ -840,7 +844,7 @@ static bool32 sub_81D6100(void)
{
bool32 ret;
- if (gMapHeader.mapLayoutId == 0x1A3)
+ if (gMapHeader.mapLayoutId == LAYOUT_TRAINER_HILL_ROOF)
ret = TRUE;
else
ret = FALSE;
@@ -873,7 +877,7 @@ const struct WarpEvent* sub_81D6134(u8 warpEventId)
u16 LocalIdToHillTrainerId(u8 localId)
{
- return gSaveBlock2Ptr->frontier.field_CB4[localId - 1];
+ return gSaveBlock2Ptr->frontier.trainerIds[localId - 1];
}
bool8 GetHillTrainerFlag(u8 eventObjectId)
@@ -891,7 +895,7 @@ void SetHillTrainerFlag(void)
for (i = 0; i < 2; i++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[i] == gTrainerBattleOpponent_A)
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == gTrainerBattleOpponent_A)
{
gSaveBlock2Ptr->frontier.field_EE0 |= gBitTable[floorId + i];
break;
@@ -902,7 +906,7 @@ void SetHillTrainerFlag(void)
{
for (i = 0; i < 2; i++)
{
- if (gSaveBlock2Ptr->frontier.field_CB4[i] == gTrainerBattleOpponent_B)
+ if (gSaveBlock2Ptr->frontier.trainerIds[i] == gTrainerBattleOpponent_B)
{
gSaveBlock2Ptr->frontier.field_EE0 |= gBitTable[floorId + i];
break;
@@ -1047,16 +1051,16 @@ bool32 sub_81D6534(void)
static void sub_81D6568(void)
{
- if (gSaveBlock1Ptr->trainerHill.field_3D6E_0d)
+ if (gSaveBlock1Ptr->trainerHill.hasLost)
gSpecialVar_Result = 0;
else
gSpecialVar_Result = 1;
}
-static void sub_81D65A0(void)
+static void TrainerHillSetTag(void)
{
gSaveBlock1Ptr->trainerHill.tag = gSpecialVar_0x8005;
- gSaveBlock1Ptr->trainerHill.field_3D68 = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005];
+ gSaveBlock1Ptr->trainerHill.bestTime = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005];
}
static u8 sub_81D65E8(u8 arg0)
@@ -1102,7 +1106,7 @@ static u16 sub_81D6640(void)
i = (i + 1) % 10;
ptr = gUnknown_0862A5CC[var2][i];
- minutes = (signed)(gSaveBlock1Ptr->trainerHill.field_3D64) / (60 * 60);
+ minutes = (signed)(gSaveBlock1Ptr->trainerHill.timer) / (60 * 60);
if (minutes < 12)
id = 0;
else if (minutes < 13)
diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c
index d57685423..8172f09e6 100644
--- a/src/trainer_pokemon_sprites.c
+++ b/src/trainer_pokemon_sprites.c
@@ -43,13 +43,18 @@ static EWRAM_DATA struct PicData sSpritePics[PICS_COUNT] = {};
// .rodata
static const struct PicData sDummyPicData = {};
+
static const struct OamData gUnknown_0860B064 =
{
- .size = 3
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64)
};
+
static const struct OamData gUnknown_0860B06C =
{
- .affineMode = 1, .size = 3
+ .affineMode = 1,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64)
};
// .text
diff --git a/src/trainer_see.c b/src/trainer_see.c
index bc5d9cbc3..9925aa6bc 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -17,8 +17,6 @@
#include "constants/event_object_movement_constants.h"
#include "constants/field_effects.h"
-extern void sub_809BE48(u16 npcId);
-
// this file's functions
static u8 CheckTrainer(u8 eventObjectId);
static u8 GetTrainerApproachDistance(struct EventObject *trainerObj);
@@ -102,10 +100,10 @@ static const struct OamData sOamData_Icons =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -114,13 +112,22 @@ static const struct OamData sOamData_Icons =
static const struct SpriteFrameImage sSpriteImageTable_ExclamationQuestionMark[] =
{
- {sEmotion_ExclamationMarkGfx, 0x80},
- {sEmotion_QuestionMarkGfx, 0x80}
+ {
+ .data = sEmotion_ExclamationMarkGfx,
+ .size = 0x80
+ },
+ {
+ .data = sEmotion_QuestionMarkGfx,
+ .size = 0x80
+ }
};
static const struct SpriteFrameImage sSpriteImageTable_HeartIcon[] =
{
- {sEmotion_HeartGfx, 0x80}
+ {
+ .data = sEmotion_HeartGfx,
+ .size = 0x80
+ }
};
static const union AnimCmd sSpriteAnim_Icons1[] =
diff --git a/src/tv.c b/src/tv.c
index 5b640836f..17243a456 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -38,6 +38,8 @@
#include "secret_base.h"
#include "tv.h"
#include "data2.h"
+#include "constants/layouts.h"
+#include "constants/metatile_behaviors.h"
// Static type declarations
@@ -61,7 +63,7 @@ IWRAM_DATA s8 sTVShowMixingCurSlot;
EWRAM_DATA u16 sPokemonAnglerSpecies = 0;
EWRAM_DATA u16 sPokemonAnglerAttemptCounters = 0;
EWRAM_DATA u16 sFindThatGamerCoinsSpent = 0;
-EWRAM_DATA bool8 sFindThatGamerWhichGame = FALSE;
+EWRAM_DATA u8 sFindThatGamerWhichGame = SLOT_MACHINE;
EWRAM_DATA ALIGNED(4) u8 sRecordMixingPartnersWithoutShowsToShare = 0;
EWRAM_DATA ALIGNED(4) u8 sTVShowState = 0;
EWRAM_DATA u8 sTVSecretBaseSecretsRandomValues[3] = {};
@@ -852,9 +854,9 @@ void SetTVMetatilesOnMap(int width, int height, u16 tileId)
{
for (x = 0; x < width; x ++)
{
- if (MapGridGetMetatileBehaviorAt(x, y) == 0x86) // is this tile a TV?
+ if (MapGridGetMetatileBehaviorAt(x, y) == MB_TELEVISION)
{
- MapGridSetMetatileIdAt(x, y, tileId | 0xc00);
+ MapGridSetMetatileIdAt(x, y, tileId | METATILE_COLLISION_MASK);
}
}
}
@@ -972,7 +974,7 @@ void GabbyAndTyBeforeInterview(void)
TakeTVShowInSearchOfTrainersOffTheAir();
if (gSaveBlock1Ptr->gabbyAndTyData.lastMove == MOVE_NONE)
{
- FlagSet(0x0001);
+ FlagSet(FLAG_TEMP_1);
}
}
@@ -2018,7 +2020,7 @@ void sub_80EDCE8(void)
}
}
-void sub_80EDD78(u16 nCoinsPaidOut)
+void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut)
{
TVShow *show;
bool8 flag;
@@ -2030,7 +2032,7 @@ void sub_80EDD78(u16 nCoinsPaidOut)
flag = FALSE;
switch (sFindThatGamerWhichGame)
{
- case FALSE:
+ case SLOT_MACHINE:
if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 200)
{
flag = TRUE;
@@ -2043,7 +2045,7 @@ void sub_80EDD78(u16 nCoinsPaidOut)
break;
}
return;
- case TRUE:
+ case ROULETTE:
if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 50)
{
flag = TRUE;
@@ -2071,15 +2073,15 @@ void sub_80EDD78(u16 nCoinsPaidOut)
}
}
-void sub_80EDE70(u16 nCoinsSpent)
+void AlertTVThatPlayerPlayedSlotMachine(u16 nCoinsSpent)
{
- sFindThatGamerWhichGame = FALSE;
+ sFindThatGamerWhichGame = SLOT_MACHINE;
sFindThatGamerCoinsSpent = nCoinsSpent;
}
-void sub_80EDE84(u16 nCoinsSpent)
+void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent)
{
- sFindThatGamerWhichGame = TRUE;
+ sFindThatGamerWhichGame = ROULETTE;
sFindThatGamerCoinsSpent = nCoinsSpent;
}
@@ -2447,8 +2449,8 @@ void sub_80EE72C(void)
show->trainerFanClub.kind = TVSHOW_TRAINER_FAN_CLUB;
show->trainerFanClub.active = FALSE;
StringCopy(show->trainerFanClub.playerName, gSaveBlock2Ptr->playerName);
- show->trainerFanClub.words[0] = gSaveBlock1Ptr->unk2BB0[0];
- show->trainerFanClub.words[1] = gSaveBlock1Ptr->unk2BB0[1];
+ show->trainerFanClub.words[0] = gSaveBlock1Ptr->easyChatProfile[0];
+ show->trainerFanClub.words[1] = gSaveBlock1Ptr->easyChatProfile[1];
tv_store_id_3x(show);
show->trainerFanClub.language = gGameLanguage;
}
@@ -2564,13 +2566,13 @@ void sub_80EEA70(void)
show->secretBaseSecrets.kind = TVSHOW_SECRET_BASE_SECRETS;
show->secretBaseSecrets.active = FALSE;
StringCopy(show->secretBaseSecrets.playerName, gSaveBlock2Ptr->playerName);
- show->secretBaseSecrets.stepsInBase = VarGet(0x40ec);
+ show->secretBaseSecrets.stepsInBase = VarGet(VAR_SECRET_BASE_STEP_COUNTER);
sub_80E980C();
StringCopy(strbuf, gStringVar1);
StripExtCtrlCodes(strbuf);
StringCopy(show->secretBaseSecrets.baseOwnersName, strbuf);
- show->secretBaseSecrets.item = VarGet(0x40ed);
- show->secretBaseSecrets.flags = VarGet(0x40ee) + (VarGet(0x40ef) << 16);
+ show->secretBaseSecrets.item = VarGet(VAR_SECRET_BASE_LAST_ITEM_USED);
+ show->secretBaseSecrets.flags = VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) + (VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) << 16);
tv_store_id_3x(show);
show->secretBaseSecrets.language = gGameLanguage;
if (show->secretBaseSecrets.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].language == LANGUAGE_JAPANESE)
@@ -3602,9 +3604,9 @@ void GetMomOrDadStringForTVMessage(void)
void sub_80F01B8(void)
{
- VarSet(VAR_0x40BC, 0);
+ VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0);
RemoveEventObjectByLocalIdAndMap(5, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
- FlagSet(0x396);
+ FlagSet(FLAG_HIDE_BATTLE_TOWER_REPORTER);
}
void ReceiveTvShowsData(void *src, u32 size, u8 masterIdx)
@@ -6264,7 +6266,9 @@ static void DoTVShowTodaysRivalTrainer(void)
case MAPSEC_DYNAMIC:
switch (show->rivalTrainer.mapLayoutId)
{
- case 0x115 ... 0x117:
+ case LAYOUT_SS_TIDAL_CORRIDOR:
+ case LAYOUT_SS_TIDAL_LOWER_DECK:
+ case LAYOUT_SS_TIDAL_ROOMS:
sTVShowState = 10;
break;
default:
@@ -6463,7 +6467,9 @@ static void DoTVShowHoennTreasureInvestigators(void)
{
switch (show->treasureInvestigators.mapLayoutId)
{
- case 0x115 ... 0x117:
+ case LAYOUT_SS_TIDAL_CORRIDOR:
+ case LAYOUT_SS_TIDAL_LOWER_DECK:
+ case LAYOUT_SS_TIDAL_ROOMS:
sTVShowState = 2;
break;
default:
@@ -7345,7 +7351,7 @@ static void DoTVShowWhatsNo1InHoennToday(void)
ShowFieldMessage(sTVWhatsNo1InHoennTodayTextGroup[state]);
}
-u8 sub_80F5180(TVShow *show)
+u8 TVShowGetFlagCount(TVShow *show)
{
u8 i;
u8 tot;
@@ -7360,7 +7366,7 @@ u8 sub_80F5180(TVShow *show)
return tot;
}
-u8 sub_80F51AC(TVShow *show, u8 a1)
+u8 TVShowGetStateForFlagNumber(TVShow *show, u8 a1)
{
u8 i;
u8 tot;
@@ -7394,7 +7400,7 @@ static void DoTVShowSecretBaseSecrets(void)
case 0:
TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- bitCount = sub_80F5180(show);
+ bitCount = TVShowGetFlagCount(show);
if (bitCount == 0)
{
sTVShowState = 8;
@@ -7403,12 +7409,12 @@ static void DoTVShowSecretBaseSecrets(void)
{
show->secretBaseSecrets.savedState = 1;
sTVSecretBaseSecretsRandomValues[0] = Random() % bitCount;
- sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[0]);
+ sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[0]);
}
break;
case 1:
TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- bitCount = sub_80F5180(show);
+ bitCount = TVShowGetFlagCount(show);
switch (bitCount)
{
case 1:
@@ -7418,11 +7424,11 @@ static void DoTVShowSecretBaseSecrets(void)
show->secretBaseSecrets.savedState = 2;
if (sTVSecretBaseSecretsRandomValues[0] == 0)
{
- sTVShowState = sub_80F51AC(show, 1);
+ sTVShowState = TVShowGetStateForFlagNumber(show, 1);
}
else
{
- sTVShowState = sub_80F51AC(show, 0);
+ sTVShowState = TVShowGetStateForFlagNumber(show, 0);
}
break;
default:
@@ -7435,13 +7441,13 @@ static void DoTVShowSecretBaseSecrets(void)
}
}
show->secretBaseSecrets.savedState = 2;
- sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[1]);
+ sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[1]);
break;
}
break;
case 2:
TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- bitCount = sub_80F5180(show);
+ bitCount = TVShowGetFlagCount(show);
if (bitCount == 2)
{
sTVShowState = 9;
@@ -7457,7 +7463,7 @@ static void DoTVShowSecretBaseSecrets(void)
}
}
show->secretBaseSecrets.savedState = 3;
- sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[2]);
+ sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[2]);
}
break;
case 3:
diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c
index bbc256915..02648bf93 100644
--- a/src/unk_text_util_2.c
+++ b/src/unk_text_util_2.c
@@ -114,7 +114,7 @@ u16 Font6Func(struct TextPrinter *textPrinter)
textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y + *textPrinter->printerTemplate.currentChar++;
return 2;
case 15:
- FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4));
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
return 2;
}
break;
@@ -146,7 +146,7 @@ u16 Font6Func(struct TextPrinter *textPrinter)
case 2:
if (TextPrinterWaitWithDownArrow(textPrinter))
{
- FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4));
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y;
textPrinter->state = 0;
@@ -166,12 +166,12 @@ u16 Font6Func(struct TextPrinter *textPrinter)
{
if (textPrinter->scrollDistance < sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed])
{
- ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4));
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->scrollDistance = 0;
}
else
{
- ScrollWindow(textPrinter->printerTemplate.windowId, 0, sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed], textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4));
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->scrollDistance -= sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed];
}
CopyWindowToVram(textPrinter->printerTemplate.windowId, 2);
@@ -214,7 +214,7 @@ static void DecompressGlyphFont6(u16 glyph)
gUnknown_03002F90.unk81 = 0x10;
}
-u8 GetGlyphWidthFont6(void)
+u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese)
{
return 0x10;
}
diff --git a/src/unk_transition.c b/src/unk_transition.c
index d56998b5b..99479c866 100644
--- a/src/unk_transition.c
+++ b/src/unk_transition.c
@@ -40,7 +40,7 @@ static const u32 gUnknown_0862AF30[] = INCBIN_U32("graphics/battle_transitions/f
static const u32 gUnknown_0862B0DC[] = INCBIN_U32("graphics/battle_transitions/frontier_transition_circles.4bpp.lz");
static const u16 gUnknown_0862B53C[] = INCBIN_U16("graphics/battle_transitions/frontier_transition.gbapal");
-// Unused Empty data. Feel free to delete.
+// Unused Empty data.
static const u8 sFiller[0x1C0] = {0};
static const struct OamData sOamData_862B71C =
@@ -50,10 +50,10 @@ static const struct OamData sOamData_862B71C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -62,12 +62,15 @@ static const struct OamData sOamData_862B71C =
static const struct CompressedSpriteSheet sUnknown_0862B724 =
{
- gUnknown_0862B0DC, 0x1800, 11920
+ .data = gUnknown_0862B0DC,
+ .size = 0x1800,
+ .tag = 11920
};
static const struct SpritePalette sUnknown_0862B72C =
{
- gUnknown_0862B53C, 11920
+ .data = gUnknown_0862B53C,
+ .tag = 11920
};
static const union AnimCmd sSpriteAnim_862B734[] =
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index baf86eb17..7569b2052 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -4,6 +4,7 @@
#include "alloc.h"
#include "palette.h"
#include "pokenav.h"
+#include "menu_specialized.h"
#include "scanline_effect.h"
#include "text.h"
#include "bg.h"
@@ -21,46 +22,36 @@
struct UsePokeblockSubStruct
{
- void (*field_0)(void);
- void (*callback)(void);
- struct Pokeblock *pokeblock;
- struct Pokemon *pokemon;
- u8 stringBuffer[0x40];
- u8 field_50;
- u8 field_51;
- u8 field_52;
- u8 field_53;
- u8 field_54;
- u8 field_55;
- u8 field_56;
- u8 field_57[5];
- u8 field_5c[5];
- u8 field_61[5];
- s16 field_66[5];
- u8 field_76;
- u8 field_77;
- u8 field_78;
- u8 field_79;
- u8 (*funcPtr8044) (void);
- u8 field_8048;
+ /*0x00*/ void (*field_0)(void);
+ /*0x04*/ void (*callback)(void);
+ /*0x08*/ struct Pokeblock *pokeblock;
+ /*0x0C*/ struct Pokemon *pokemon;
+ /*0x10*/ u8 stringBuffer[0x40];
+ /*0x50*/ u8 field_50;
+ /*0x51*/ u8 field_51;
+ /*0x52*/ u8 field_52;
+ /*0x53*/ u8 field_53;
+ /*0x54*/ u8 field_54;
+ /*0x55*/ u8 field_55;
+ /*0x56*/ u8 field_56;
+ /*0x57*/ u8 field_57[5];
+ /*0x5C*/ u8 field_5c[5];
+ /*0x61*/ u8 field_61[5];
+ /*0x66*/ s16 field_66[5];
+ /*0x70*/ u8 field_70;
+ /*0x71*/ u8 field_71;
+ /*0x74*/ u8 (*unk74)(void);
+ /*0x78*/ u8 unk78;
};
struct UsePokeblockStruct
{
- u8 field_0[0x7B0E];
- u16 field_7B0E;
- u8 field_7B10[0x148];
- u8 field_7C58[0x35B];
- u8 field_7FB3;
- u8 field_7FB4;
- u8 field_7FB5;
- u8 field_7FB6;
- u8 field_7FB7;
- u8 field_7FB8;
- u8 field_7FB9;
- u16 field_7FBA;
- u8 field_7FBC[0x14];
- struct UsePokeblockSubStruct info;
+ /*0x0000*/ u8 field_0[0x7B0E];
+ /*0x7B0E*/ u16 field_7B0E;
+ /*0x7B10*/ u8 field_7B10[0x148];
+ /*0x7C58*/ struct UnknownStruct_81D1ED4 field_7C58;
+ /*0x7FB0*/ u8 unk7FB0[0x20];
+ /*0x7FD0*/ struct UsePokeblockSubStruct info;
};
extern u16 gKeyRepeatStartDelay;
@@ -206,7 +197,7 @@ void sub_8166340(void)
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- sub_81D2108(gUnknown_0203BCAC->field_7C58);
+ sub_81D2108(&gUnknown_0203BCAC->field_7C58);
ScanlineEffect_InitHBlankDmaTransfer();
}
@@ -222,7 +213,7 @@ void sub_8166380(void)
{
case 0:
gUnknown_0203BCAC->field_0[0x7B10] = 0xFF;
- sub_81D1ED4(gUnknown_0203BCAC->field_7C58);
+ sub_81D1ED4(&gUnknown_0203BCAC->field_7C58);
gUnknown_0203BC90->field_50++;
break;
case 1:
@@ -278,19 +269,19 @@ void sub_8166380(void)
gUnknown_0203BC90->field_50++;
break;
case 11:
- sub_81D2754(gUnknown_0203BCAC->field_7C58, &gUnknown_0203BCAC->field_0[0x7C6C]);
- sub_81D20AC(gUnknown_0203BCAC->field_7C58);
+ sub_81D2754(&gUnknown_0203BCAC->field_7C58, gUnknown_0203BCAC->field_7C58.unk14[0]);
+ sub_81D20AC(&gUnknown_0203BCAC->field_7C58);
gUnknown_0203BC90->field_50++;
break;
case 12:
- if (!sub_81D20BC(gUnknown_0203BCAC->field_7C58))
+ if (!sub_81D20BC(&gUnknown_0203BCAC->field_7C58))
{
- sub_81D1F84(gUnknown_0203BCAC->field_7C58, &gUnknown_0203BCAC->field_7C58[0x14], &gUnknown_0203BCAC->field_7C58[0x14]);
+ sub_81D1F84(&gUnknown_0203BCAC->field_7C58, gUnknown_0203BCAC->field_7C58.unk14, gUnknown_0203BCAC->field_7C58.unk14);
gUnknown_0203BC90->field_50++;
}
break;
case 13:
- sub_81D2230(gUnknown_0203BCAC->field_7C58);
+ sub_81D2230(&gUnknown_0203BCAC->field_7C58);
gUnknown_0203BC90->field_50++;
break;
case 14:
@@ -452,7 +443,7 @@ void sub_8166634(void)
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- if (gUnknown_0203BCAC->info.field_77 == gUnknown_0203BCAC->info.field_76 - 1)
+ if (gUnknown_0203BCAC->info.field_71 == gUnknown_0203BCAC->info.field_70 - 1)
{
gUnknown_0203BC90->field_50 = 3;
}
@@ -464,7 +455,7 @@ void sub_8166634(void)
break;
case 1:
- var = gUnknown_0203BCAC->info.funcPtr8044();
+ var = gUnknown_0203BCAC->info.unk74();
if(!var)
gUnknown_0203BC90->field_50 = var;
break;
@@ -514,7 +505,7 @@ void sub_816681C(void)
switch (gUnknown_0203BC90->field_50)
{
case 0:
- gPokeblockMonId = sub_81672A4(gUnknown_0203BCAC->info.field_77);
+ gPokeblockMonId = sub_81672A4(gUnknown_0203BCAC->info.field_71);
gUnknown_0203BC94 = gUnknown_0203BC90->callback;
gUnknown_0203BC98 = gUnknown_0203BC90->pokeblock;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
@@ -546,7 +537,7 @@ void sub_81668F8(void)
{
u16 var;
case 0:
- if (gUnknown_0203BCAC->info.field_77 != gPokeblockMonId)
+ if (gUnknown_0203BCAC->info.field_71 != gPokeblockMonId)
{
sub_8167CA0(gUnknown_0203BC90->field_56);
gUnknown_0203BC90->field_50++;
@@ -557,7 +548,7 @@ void sub_81668F8(void)
}
break;
case 1:
- var = gUnknown_0203BCAC->info.funcPtr8044();
+ var = gUnknown_0203BCAC->info.unk74();
if (!var)
{
gUnknown_0203BC90->field_50 = var;
@@ -600,7 +591,7 @@ void sub_8166A34(void)
u8 var;
case 0:
gUnknown_0203BC90->field_5c[0] = (u8) &gPlayerParty;
- gUnknown_0203BCAC->info.field_77 = (u32) &gUnknown_0203BCAC->field_0[gUnknown_0203BCAC->info.field_77];
+ gUnknown_0203BCAC->info.field_71 = (u32) &gUnknown_0203BCAC->field_0[gUnknown_0203BCAC->info.field_71];
gUnknown_0203BC90->field_5c[0] = &gPlayerParty
sub_81D3520(&gUnknown_0203BCAC->field_0[0x7B1C]);
/*gUnknown_0203BCAC->pokemon = &gPlayerParty[gUnknown_083DFEC4->unk893c[gUnknown_0203BCAC->field_0[0x7B1C]].partyIdx];
@@ -623,10 +614,10 @@ void sub_8166A34(void)
sub_81D2074();
if (!var)
{
- sub_81681F4(sub_81672A4(gUnknown_0203BCAC->info.field_77));
+ sub_81681F4(sub_81672A4(gUnknown_0203BCAC->info.field_71));
/*sub_80F3D00();
gUnknown_0203BCAC->unk52 = 0;*/
- if(gUnknown_0203BCAC->info.field_77 == gUnknown_0203BCAC->info.field_76 - 1)
+ if(gUnknown_0203BCAC->info.field_71 == gUnknown_0203BCAC->info.field_70 - 1)
{
gUnknown_0203BC90->field_52 = var;
}
@@ -1051,7 +1042,7 @@ _08166D18:\n\
void sub_8166D44(void)
{
u8 stringBuffer[0x40];
- GetMonData(&gPlayerParty[sub_81672A4(gUnknown_0203BCAC->info.field_77)], MON_DATA_NICKNAME, stringBuffer);
+ GetMonData(&gPlayerParty[sub_81672A4(gUnknown_0203BCAC->info.field_71)], MON_DATA_NICKNAME, stringBuffer);
StringGetEnd10(stringBuffer);
StringAppend(stringBuffer, gText_GetsAPokeBlockQuestion);
StringCopy(gStringVar4, stringBuffer);
@@ -1252,7 +1243,7 @@ void sub_8167104(void)
{
u16 i;
struct Pokemon *pokemon = gPlayerParty;
- pokemon += gUnknown_0203BCAC->field_7C58[gUnknown_0203BCAC->info.field_77 * 4 + 865];
+ pokemon += gUnknown_0203BCAC->unk7FB0[gUnknown_0203BCAC->info.field_71 * 4 + 9];
Pokeblock_GetMonContestStats(pokemon, gUnknown_0203BC90->field_57);
sub_8167054(gUnknown_0203BC90->pokeblock, pokemon);
Pokeblock_GetMonContestStats(pokemon, gUnknown_0203BC90->field_5c);
@@ -1297,7 +1288,7 @@ void sub_8167184(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
bool8 sub_8167268(void)
{
u8 *mon;
- mon = (u8 *) &gUnknown_0203BCAC->field_0[gUnknown_0203BCAC->info.field_77 * 4];
+ mon = (u8 *) &gUnknown_0203BCAC->field_0[gUnknown_0203BCAC->info.field_71 * 4];
if (sub_81D2C68(*(mon + 864 + 0x7C58), *(mon + 865 + 0x7C58), MON_DATA_SHEEN, 0) == 255)
return TRUE;
return FALSE;
@@ -1390,8 +1381,8 @@ void sub_8167420(void)
ct++;
}
}
- gUnknown_0203BCAC->info.field_77 = 0;
- gUnknown_0203BCAC->info.field_76 = ct + 1;
+ gUnknown_0203BCAC->info.field_71 = 0;
+ gUnknown_0203BCAC->info.field_70 = ct + 1;
sub_81674BC();
}
#else
@@ -1471,14 +1462,14 @@ void sub_81674BC(void)
s16 var;
s16 var2;
- sub_816753C(gUnknown_0203BCAC->info.field_77, 0);
+ sub_816753C(gUnknown_0203BCAC->info.field_71, 0);
gUnknown_0203BCAC->field_7FB3 = 0;
gUnknown_0203BCAC->field_7FB4 = 1;
gUnknown_0203BCAC->field_7FB5 = 2;
- var = gUnknown_0203BCAC->info.field_77 + 1;
+ var = gUnknown_0203BCAC->info.field_71 + 1;
- if(var >= gUnknown_0203BCAC->info.field_76)
+ if(var >= gUnknown_0203BCAC->info.field_70)
{
var = 0;
@@ -1488,7 +1479,7 @@ void sub_81674BC(void)
if(var2 < 0)
{
- var2 = gUnknown_0203BCAC->info.field_76 - 1;
+ var2 = gUnknown_0203BCAC->info.field_70 - 1;
}
sub_816753C(var, 1);
@@ -1568,10 +1559,10 @@ void sub_816753C(s16 a1, u8 a2)
v5 = *(0x7FB8 + v3);
v6 = *(0x7FB9 + v3);
- sub_81D2ED4(gUnknown_0203BCAC->field_0[0x7B4D + 24 * a2], gUnknown_0203BCAC->field_0[0x7B95 + 64 * a2], v5, v6, a1, gUnknown_0203BCAC->info.field_76, 0);
- sub_81D2F78(gUnknown_0203BCAC->field_7C58[0], gUnknown_0203BCAC->field_0[0x7FB0], v5, v6, a1, a2, gUnknown_0203BCAC->info.field_76, 0);
- sub_81D3094(gUnknown_0203BCAC->field_0[(a2 << 13) + 0x304], gUnknown_0203BCAC->field_0[(a2 << 7) + 4], v5, v6, a1, gUnknown_0203BCAC->info.field_76, 0);
- //gUnknown_0203BCAC->field_0[0x7B4D + a1 * 40], gUnknown_0203BCAC->field_7FB8, gUnknown_0203BCAC->field_7FB9, gUnknown_203BCAC->field_0[0], gUnknown_203BCAC->info.field_76, 0)
+ sub_81D2ED4(gUnknown_0203BCAC->field_0[0x7B4D + 24 * a2], gUnknown_0203BCAC->field_0[0x7B95 + 64 * a2], v5, v6, a1, gUnknown_0203BCAC->info.field_70, 0);
+ sub_81D2F78(gUnknown_0203BCAC->field_7C58[0], gUnknown_0203BCAC->field_0[0x7FB0], v5, v6, a1, a2, gUnknown_0203BCAC->info.field_70, 0);
+ sub_81D3094(gUnknown_0203BCAC->field_0[(a2 << 13) + 0x304], gUnknown_0203BCAC->field_0[(a2 << 7) + 4], v5, v6, a1, gUnknown_0203BCAC->info.field_70, 0);
+ //gUnknown_0203BCAC->field_0[0x7B4D + a1 * 40], gUnknown_0203BCAC->field_7FB8, gUnknown_0203BCAC->field_7FB9, gUnknown_203BCAC->field_0[0], gUnknown_203BCAC->info.field_70, 0)
}
#else
NAKED
@@ -1882,7 +1873,7 @@ void sub_8167760(void)
sub_81D321C(v6, v7, v9);
LoadSpriteSheets(v6);
LoadSpritePalettes(v9);
- for(i = 0; i < gUnknown_0203BCAC->info.field_76 - 1; i++)
+ for(i = 0; i < gUnknown_0203BCAC->info.field_70 - 1; i++)
{
v1 = CreateSprite(v7, 226, (0x140000 * i + 0x80000) >> 16, 0);
if(v1 == 64)
@@ -2144,7 +2135,7 @@ _08167902:\n\
bool8 sub_8167930(void)
{
bool8 retvalue;
- switch(gUnknown_0203BCAC->info.field_8048)
+ switch(gUnknown_0203BCAC->info.unk78)
{
case 0:
ChangeBgX(0, 0, 0);
@@ -2202,11 +2193,11 @@ bool8 sub_8167930(void)
sub_81D21DC(2);
break;
default:
- gUnknown_0203BCAC->info.field_8048 = 0;
+ gUnknown_0203BCAC->info.unk78 = 0;
retvalue = 0;
return retvalue;
}
- gUnknown_0203BCAC->info.field_8048++;
+ gUnknown_0203BCAC->info.unk78++;
retvalue = 1;
return retvalue;
}
diff --git a/src/walda_phrase.c b/src/walda_phrase.c
index 83004777f..e8c1e4aed 100644
--- a/src/walda_phrase.c
+++ b/src/walda_phrase.c
@@ -70,7 +70,7 @@ static void CB2_HandleGivenWaldaPhrase(void)
}
StringCopy(gStringVar1, GetWaldaPhrasePtr());
- gFieldCallback = sub_80AF168;
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
SetMainCallback2(CB2_ReturnToField);
}
diff --git a/src/wallclock.c b/src/wallclock.c
index 546750ba6..810abb1d1 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -93,6 +93,7 @@ static const struct WindowTemplate gUnknown_085B21DC[] =
},
DUMMY_WIN_TEMPLATE
};
+
static const struct WindowTemplate gUnknown_085B21F4 =
{
.bg = 0,
@@ -103,7 +104,9 @@ static const struct WindowTemplate gUnknown_085B21F4 =
.paletteNum = 14,
.baseBlock = 572
};
-static const struct BgTemplate gUnknown_085B21FC[] = {
+
+static const struct BgTemplate gUnknown_085B21FC[] =
+{
{
.bg = 0,
.charBaseIndex = 2,
@@ -123,34 +126,57 @@ static const struct BgTemplate gUnknown_085B21FC[] = {
.priority = 2
}
};
-static const struct CompressedSpriteSheet gUnknown_085B2208 = {
+
+static const struct CompressedSpriteSheet gUnknown_085B2208 =
+{
sUnknown_085B1F58, 0x2000, TAG_GFX_WALL_CLOCK_HAND
};
-static const u32 filler_85B2210[2] = {};
-static const struct SpritePalette gUnknown_085B2218[] = {
- { gWallclockMale_Pal, TAG_PAL_WALL_CLOCK_HAND },
- { gWallclockFemale_Pal, 0x1001 },
+
+static const u8 filler_85B2210[8] = {0};
+
+static const struct SpritePalette gUnknown_085B2218[] =
+{
+ {
+ .data = gWallclockMale_Pal,
+ .tag = TAG_PAL_WALL_CLOCK_HAND
+ },
+ {
+ .data = gWallclockFemale_Pal,
+ .tag = 0x1001
+ },
{}
};
-static const struct OamData Unknown_085B2230 = {
+
+static const struct OamData Unknown_085B2230 =
+{
.y = 160,
- .size = 3,
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64),
.priority = 1,
};
-static const union AnimCmd Unknown_085B2238[] = {
+
+static const union AnimCmd Unknown_085B2238[] =
+{
ANIMCMD_FRAME(0, 30),
ANIMCMD_END,
};
-static const union AnimCmd Unknown_085B2240[] = {
+
+static const union AnimCmd Unknown_085B2240[] =
+{
ANIMCMD_FRAME(64, 30),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085B2248[] = {
+
+static const union AnimCmd *const gUnknown_085B2248[] =
+{
Unknown_085B2238
};
-static const union AnimCmd *const gUnknown_085B224C[] = {
+
+static const union AnimCmd *const gUnknown_085B224C[] =
+{
Unknown_085B2240
};
+
static const struct SpriteTemplate gUnknown_085B2250 =
{
.tileTag = TAG_GFX_WALL_CLOCK_HAND,
@@ -161,6 +187,7 @@ static const struct SpriteTemplate gUnknown_085B2250 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_MinuteHand,
};
+
static const struct SpriteTemplate gUnknown_085B2268 =
{
.tileTag = TAG_GFX_WALL_CLOCK_HAND,
@@ -171,25 +198,37 @@ static const struct SpriteTemplate gUnknown_085B2268 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_HourHand,
};
-static const struct OamData Unknown_085B2280 = {
+
+static const struct OamData Unknown_085B2280 =
+{
.y = 160,
- .size = 1,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
.priority = 3,
};
-static const union AnimCmd Unknown_085B2288[] = {
+
+static const union AnimCmd Unknown_085B2288[] =
+{
ANIMCMD_FRAME(132, 30),
ANIMCMD_END,
};
-static const union AnimCmd Unknown_085B2290[] = {
+
+static const union AnimCmd Unknown_085B2290[] =
+{
ANIMCMD_FRAME(128, 30),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085B2298[] = {
+
+static const union AnimCmd *const gUnknown_085B2298[] =
+{
Unknown_085B2288
};
-static const union AnimCmd *const gUnknown_085B229C[] = {
+
+static const union AnimCmd *const gUnknown_085B229C[] =
+{
Unknown_085B2290
};
+
static const struct SpriteTemplate gUnknown_085B22A0 =
{
.tileTag = TAG_GFX_WALL_CLOCK_HAND,
@@ -200,6 +239,7 @@ static const struct SpriteTemplate gUnknown_085B22A0 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_AMIndicator
};
+
static const struct SpriteTemplate gUnknown_085B22B8 =
{
.tileTag = TAG_GFX_WALL_CLOCK_HAND,
@@ -210,7 +250,9 @@ static const struct SpriteTemplate gUnknown_085B22B8 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_PMIndicator
};
-static const s8 sClockHandCoords[][2] = {
+
+static const s8 sClockHandCoords[][2] =
+{
{ 0x00, -0x18},
{ 0x01, -0x19},
{ 0x01, -0x19},
@@ -793,7 +835,7 @@ static void Task_SetClock2(u8 taskId)
static void Task_SetClock3(u8 taskId)
{
- SetWindowBorderStyle(0, FALSE, 0x250, 0x0d);
+ DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x250, 0x0d);
AddTextPrinterParameterized(0, 1, gText_IsThisTheCorrectTime, 0, 1, 0, NULL);
PutWindowTilemap(0);
schedule_bg_copy_tilemap_to_vram(0);
@@ -812,7 +854,7 @@ static void Task_SetClock4(u8 taskId)
case 1: //B button
case -1: //NO
PlaySE(SE_SELECT);
- sub_8198070(0, FALSE);
+ ClearStdWindowAndFrameToTransparent(0, FALSE);
ClearWindowTilemap(0);
gTasks[taskId].func = Task_SetClock2;
break;
diff --git a/src/water.c b/src/water.c
index 42ab1d67f..20bf2542d 100644
--- a/src/water.c
+++ b/src/water.c
@@ -13,35 +13,33 @@
#include "constants/battle.h"
#include "constants/rgb.h"
-extern void sub_810721C(struct Sprite *);
-extern void sub_8107228(struct Sprite *);
-extern void sub_8107260(struct Sprite *);
-extern void sub_8107380(struct Sprite *);
-extern void sub_8107408(struct Sprite *);
-extern void sub_8107430(struct Sprite *);
-extern void sub_810744C(struct Sprite *);
-extern void sub_81074E4(struct Sprite *);
-extern void sub_81075EC(struct Sprite *);
-extern void sub_8107674(struct Sprite *);
-extern void sub_8107730(struct Sprite *);
-extern void sub_81077A4(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_810790C(struct Sprite *);
-extern void sub_8108034(struct Sprite *);
-extern void sub_8108098(struct Sprite *);
-extern void sub_810851C(struct Sprite *);
-extern void sub_81087C0(struct Sprite *);
-extern void sub_810886C(struct Sprite *);
-extern void sub_8108B2C(struct Sprite *);
-extern void sub_8108B94(struct Sprite *);
-extern void sub_8108BE0(struct Sprite *);
-extern void sub_8108C08(struct Sprite *);
-extern void sub_8108C54(struct Sprite *);
-extern void sub_8108CDC(struct Sprite *);
-extern void sub_80A8EE4(struct Sprite *);
+void sub_810721C(struct Sprite *);
+void sub_8107228(struct Sprite *);
+void sub_8107260(struct Sprite *);
+void sub_8107380(struct Sprite *);
+void sub_8107408(struct Sprite *);
+void sub_8107430(struct Sprite *);
+void sub_810744C(struct Sprite *);
+void sub_81074E4(struct Sprite *);
+void sub_81075EC(struct Sprite *);
+void sub_8107674(struct Sprite *);
+void sub_8107730(struct Sprite *);
+void sub_81077A4(struct Sprite *);
+void sub_81077C0(struct Sprite *);
+void sub_8107894(struct Sprite *);
+void sub_81078D0(struct Sprite *);
+void sub_810790C(struct Sprite *);
+void sub_8108034(struct Sprite *);
+void sub_8108098(struct Sprite *);
+void sub_810851C(struct Sprite *);
+void sub_81087C0(struct Sprite *);
+void sub_810886C(struct Sprite *);
+void sub_8108B2C(struct Sprite *);
+void sub_8108B94(struct Sprite *);
+void sub_8108BE0(struct Sprite *);
+void sub_8108C08(struct Sprite *);
+void sub_8108C54(struct Sprite *);
+void sub_8108CDC(struct Sprite *);
void sub_810756C(u8);
void sub_81076F4(u8);
void sub_8107B84(u8);
@@ -876,31 +874,31 @@ void sub_810790C(struct Sprite *sprite)
#ifdef NONMATCHING
void AnimTask_CreateSurfWave(u8 taskId)
{
- struct UnknownAnimStruct2 unk;
+ struct BattleAnimBgData animBg;
u8 taskId2;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1);
- sub_80A6B30(&unk);
+ sub_80A6B30(&animBg);
if (!IsContest())
{
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
- sub_80A6D48(unk.bgId, gUnknown_08D95E00);
+ AnimLoadCompressedBgTilemap(animBg.bgId, gUnknown_08D95E00);
else
- sub_80A6D48(unk.bgId, gUnknown_08D960D0);
+ AnimLoadCompressedBgTilemap(animBg.bgId, gUnknown_08D960D0);
}
else
{
- sub_80A6D60(&unk, gUnknown_08D963A4, 1);
+ sub_80A6D60(&animBg, gUnknown_08D963A4, 1);
}
- sub_80A6CC0(unk.bgId, gBattleAnimBackgroundImage_Surf, unk.tilesOffset);
+ AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBackgroundImage_Surf, animBg.tilesOffset);
if (gBattleAnimArgs[0] == 0)
- LoadCompressedPalette(gBattleAnimBackgroundPalette_Surf, unk.unk8 * 16, 32);
+ LoadCompressedPalette(gBattleAnimBackgroundPalette_Surf, animBg.paletteId * 16, 32);
else
- LoadCompressedPalette(gBattleAnimBackgroundImageMuddyWater_Pal, unk.unk8 * 16, 32);
+ LoadCompressedPalette(gBattleAnimBackgroundImageMuddyWater_Pal, animBg.paletteId * 16, 32);
taskId2 = CreateTask(sub_8107D58, gTasks[taskId].priority + 1);
gTasks[taskId].data[15] = taskId2;
gTasks[taskId2].data[0] = 0;
@@ -993,14 +991,14 @@ void AnimTask_CreateSurfWave(u8 taskId)
mov r0, sp\n\
ldrb r0, [r0, 0x9]\n\
ldr r1, =gUnknown_08D95E00\n\
- bl sub_80A6D48\n\
+ bl AnimLoadCompressedBgTilemap\n\
b _081079EA\n\
.pool\n\
_081079D0:\n\
mov r0, sp\n\
ldrb r0, [r0, 0x9]\n\
ldr r1, =gUnknown_08D960D0\n\
- bl sub_80A6D48\n\
+ bl AnimLoadCompressedBgTilemap\n\
b _081079EA\n\
.pool\n\
_081079E0:\n\
@@ -1014,7 +1012,7 @@ _081079EA:\n\
ldr r1, =gBattleAnimBackgroundImage_Surf\n\
mov r2, sp\n\
ldrh r2, [r2, 0xA]\n\
- bl sub_80A6CC0\n\
+ bl AnimLoadCompressedBgGfx\n\
ldr r0, =gBattleAnimArgs\n\
movs r1, 0\n\
ldrsh r0, [r0, r1]\n\
@@ -1176,7 +1174,7 @@ _08107B58:\n\
#ifdef NONMATCHING
void sub_8107B84(u8 taskId)
{
- struct UnknownAnimStruct2 unk;
+ struct BattleAnimBgData animBg;
u8 i;
u16 rgbBuffer;
u16 *BGptrX = &gBattle_BG1_X;
@@ -1187,18 +1185,18 @@ void sub_8107B84(u8 taskId)
*BGptrX += gTasks[taskId].data[0];
*BGptrY += gTasks[taskId].data[1];
- sub_80A6B30(&unk);
+ sub_80A6B30(&animBg);
gTasks[taskId].data[2] += gTasks[taskId].data[1];
if (++gTasks[taskId].data[5] == 4)
{
- rgbBuffer = gPlttBufferFaded[unk.unk8 * 16 + 7];
+ rgbBuffer = gPlttBufferFaded[animBg.paletteId * 16 + 7];
for (i = 6; i != 0; i--)
{
- palNum = unk.unk8 * 16;
+ palNum = animBg.paletteId * 16;
palOffset = 1 + i;
gPlttBufferFaded[palNum + palOffset] = gPlttBufferFaded[palNum + palOffset - 1];
}
- gPlttBufferFaded[unk.unk8 * 16 + 1] = rgbBuffer;
+ gPlttBufferFaded[animBg.paletteId * 16 + 1] = rgbBuffer;
gTasks[taskId].data[5] = 0;
}
if (++gTasks[taskId].data[6] > 1)
@@ -2320,7 +2318,7 @@ void sub_8108AC0(struct Task *task)
void sub_8108B2C(struct Sprite *sprite)
{
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
@@ -2337,7 +2335,7 @@ void sub_8108B94(struct Sprite *sprite)
{
u16 i;
- if (TranslateAnimArc(sprite))
+ if (TranslateAnimHorizontalArc(sprite))
{
for (i = 0; i < NUM_TASKS; i++)
{
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 2e6f1642a..e42bf8a23 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -1,27 +1,27 @@
#include "global.h"
#include "wild_encounter.h"
#include "pokemon.h"
-#include "constants/species.h"
#include "metatile_behavior.h"
#include "fieldmap.h"
#include "random.h"
-#include "constants/maps.h"
#include "field_player_avatar.h"
-#include "constants/abilities.h"
#include "event_data.h"
#include "safari_zone.h"
#include "overworld.h"
#include "pokeblock.h"
#include "battle_setup.h"
#include "roamer.h"
-#include "constants/game_stat.h"
#include "tv.h"
#include "link.h"
#include "script.h"
#include "battle_pike.h"
#include "battle_pyramid.h"
+#include "constants/abilities.h"
+#include "constants/game_stat.h"
#include "constants/items.h"
+#include "constants/layouts.h"
#include "constants/maps.h"
+#include "constants/species.h"
extern const u8 EventScript_RepelWoreOff[];
@@ -413,7 +413,7 @@ static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 ar
level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]);
if (flags & WILD_CHECK_REPEL && !IsWildLevelAllowedByRepel(level))
return FALSE;
- if (gMapHeader.mapLayoutId != 0x166 && flags & WILD_CHECK_KEEN_EYE && !IsAbilityAllowingEncounter(level))
+ if (gMapHeader.mapLayoutId != LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3 && flags & WILD_CHECK_KEEN_EYE && !IsAbilityAllowingEncounter(level))
return FALSE;
CreateWildMon(wildMonInfo->wildPokemon[wildMonIndex].species, level);
@@ -474,7 +474,7 @@ static bool8 DoWildEncounterRateTest(u32 encounterRate, bool8 ignoreAbility)
{
u32 ability = GetMonAbility(&gPlayerParty[0]);
- if (ability == ABILITY_STENCH && gMapHeader.mapLayoutId == 0x169)
+ if (ability == ABILITY_STENCH && gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
encounterRate = encounterRate * 3 / 4;
else if (ability == ABILITY_STENCH)
encounterRate /= 2;
@@ -522,7 +522,7 @@ bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavi
headerId = GetCurrentMapWildMonHeaderId();
if (headerId == 0xFFFF)
{
- if (gMapHeader.mapLayoutId == 0x166)
+ if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3)
{
headerId = GetBattlePikeWildMonHeaderId();
if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll())
@@ -537,7 +537,7 @@ bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavi
BattleSetup_StartBattlePikeWildBattle();
return TRUE;
}
- if (gMapHeader.mapLayoutId == 0x169)
+ if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
{
headerId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
if (previousMetaTileBehavior != currMetaTileBehavior && !DoGlobalWildEncounterDiceRoll())
@@ -665,7 +665,7 @@ bool8 SweetScentWildEncounter(void)
headerId = GetCurrentMapWildMonHeaderId();
if (headerId == 0xFFFF)
{
- if (gMapHeader.mapLayoutId == 0x166)
+ if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3)
{
headerId = GetBattlePikeWildMonHeaderId();
if (TryGenerateWildMon(gBattlePikeWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0) != TRUE)
@@ -675,7 +675,7 @@ bool8 SweetScentWildEncounter(void)
BattleSetup_StartBattlePikeWildBattle();
return TRUE;
}
- if (gMapHeader.mapLayoutId == 0x169)
+ if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
{
headerId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
if (TryGenerateWildMon(gBattlePyramidWildMonHeaders[headerId].landMonsInfo, WILD_AREA_LAND, 0) != TRUE)
diff --git a/src/window.c b/src/window.c
index 3da529178..fbce57743 100644
--- a/src/window.c
+++ b/src/window.c
@@ -6,7 +6,8 @@
u32 filler_03002F58;
u32 filler_03002F5C;
-u8 gUnknown_03002F60;
+// This global is set to 0 and never changed.
+u8 gTransparentTileNumber;
u32 filler_03002F64;
void *gUnknown_03002F70[4];
extern u32 gUnneededFireRedVariable;
@@ -106,7 +107,7 @@ bool16 InitWindows(const struct WindowTemplate *templates)
}
}
- gUnknown_03002F60 = 0;
+ gTransparentTileNumber = 0;
return TRUE;
}
@@ -359,13 +360,14 @@ void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 h
}
}
+// Fills a window with transparent tiles.
void ClearWindowTilemap(u8 windowId)
{
struct Window windowLocal = gWindows[windowId];
FillBgTilemapBufferRect(
windowLocal.window.bg,
- gUnknown_03002F60,
+ gTransparentTileNumber,
windowLocal.window.tilemapLeft,
windowLocal.window.tilemapTop,
windowLocal.window.width,
@@ -451,6 +453,7 @@ void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOff
LZ77UnCompWram(src, gWindows[windowId].tileData + (0x20 * tileOffset));
}
+// Sets all pixels within the window to the fillValue color.
void FillWindowPixelBuffer(u8 windowId, u8 fillValue)
{
int fillSize = gWindows[windowId].window.width * gWindows[windowId].window.height;