summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhlosioneer <mattmdrr2@gmail.com>2019-03-31 20:43:42 -0400
committerPhlosioneer <mattmdrr2@gmail.com>2019-03-31 20:43:42 -0400
commitcd069446e06c277222be0aaa05fb43b090259234 (patch)
treea740e2042ff6af3465cfdaa15fc29c35269cfa70 /src
parent3181c64c64afa47b3adc04f325ad3798c8c324ec (diff)
parent93c4e35d844046d12c7d8bcc64e8fc3e03e85e0d (diff)
Merge branch 'master' into pokedex-area-const-array
Diffstat (limited to 'src')
-rw-r--r--src/anim_mon_front_pics.c832
-rw-r--r--src/battle_ai_script_commands.c1
-rw-r--r--src/battle_ai_switch_items.c1
-rw-r--r--src/battle_anim.c288
-rw-r--r--src/battle_anim_mon_movement.c (renamed from src/battle_anim_80D51AC.c)0
-rw-r--r--src/battle_anim_mons.c (renamed from src/battle_anim_80A5C6C.c)0
-rwxr-xr-xsrc/battle_anim_special.c (renamed from src/battle_anim_8170478.c)0
-rw-r--r--src/battle_anim_status_effects.c (renamed from src/battle_anim_80A9C70.c)0
-rw-r--r--src/battle_arena.c4
-rw-r--r--src/battle_bg.c8
-rw-r--r--src/battle_dome.c16
-rw-r--r--src/battle_factory_screen.c16
-rw-r--r--src/battle_interface.c16
-rw-r--r--src/battle_main.c9
-rw-r--r--src/battle_message.c1
-rw-r--r--src/battle_pyramid_bag.c16
-rw-r--r--src/battle_script_commands.c41
-rw-r--r--src/battle_transition.c4
-rw-r--r--src/battle_tv.c1
-rw-r--r--src/battle_util.c1
-rw-r--r--src/battle_util2.c1
-rw-r--r--src/berry_blender.c20
-rwxr-xr-xsrc/berry_crush.c775
-rwxr-xr-xsrc/berry_powder.c128
-rwxr-xr-xsrc/cable_car.c9
-rw-r--r--src/cable_club.c3
-rw-r--r--src/contest_painting.c4
-rw-r--r--src/contest_painting_effects.c701
-rw-r--r--src/credits.c4
-rwxr-xr-xsrc/data/field_event_obj/base_oam.h32
-rw-r--r--src/data/graphics/pokemon.h5578
-rw-r--r--src/decoration.c6
-rw-r--r--src/easy_chat.c30
-rw-r--r--src/egg_hatch.c12
-rwxr-xr-xsrc/ereader_helpers.c553
-rwxr-xr-xsrc/ereader_screen.c464
-rw-r--r--src/event_object_movement.c2
-rw-r--r--src/evolution_graphics.c4
-rwxr-xr-xsrc/faraway_island.c445
-rw-r--r--src/field_control_avatar.c8
-rw-r--r--src/field_effect.c144
-rwxr-xr-xsrc/field_effect_helpers.c2
-rw-r--r--src/field_screen_effect.c26
-rw-r--r--src/field_specials.c10
-rw-r--r--src/field_weather_effect.c28
-rw-r--r--src/fldeff_cut.c7
-rw-r--r--src/fldeff_misc.c8
-rw-r--r--src/graphics.c14
-rw-r--r--src/hall_of_fame.c4
-rw-r--r--src/intro.c60
-rw-r--r--src/intro_credits_graphics.c625
-rw-r--r--src/item_icon.c6
-rwxr-xr-xsrc/item_menu.c8
-rw-r--r--src/item_menu_icons.c20
-rwxr-xr-xsrc/item_use.c5
-rw-r--r--src/learn_move.c833
-rw-r--r--src/link_rfu.c29
-rw-r--r--src/list_menu.c46
-rw-r--r--src/load_save.c3
-rw-r--r--src/main_menu.c6
-rw-r--r--src/menu_helpers.c4
-rw-r--r--src/menu_specialized.c1641
-rwxr-xr-xsrc/mevent2.c626
-rw-r--r--src/mevent_801BAAC.c826
-rw-r--r--src/mevent_news.c147
-rw-r--r--src/mirage_tower.c12
-rw-r--r--src/mon_markings.c12
-rw-r--r--src/money.c4
-rw-r--r--src/move_relearner.c976
-rw-r--r--src/mystery_gift.c1692
-rw-r--r--src/naming_screen.c12
-rw-r--r--src/new_game.c7
-rw-r--r--src/overworld.c2
-rwxr-xr-xsrc/party_menu.c27
-rw-r--r--src/player_pc.c8
-rw-r--r--src/pokeball.c4
-rw-r--r--src/pokeblock.c14
-rw-r--r--src/pokeblock_feed.c4
-rw-r--r--src/pokedex.c24
-rwxr-xr-xsrc/pokedex_area_screen.c43
-rwxr-xr-xsrc/pokedex_cry_screen.c27
-rw-r--r--src/pokemon.c5
-rw-r--r--src/pokemon_icon.c4
-rw-r--r--src/pokemon_storage_system.c35
-rw-r--r--src/pokemon_summary_screen.c12
-rw-r--r--src/rayquaza_scene.c32
-rw-r--r--src/recorded_battle.c1
-rw-r--r--src/region_map.c228
-rw-r--r--src/reset_rtc_screen.c4
-rw-r--r--src/rotating_gate.c8
-rw-r--r--src/roulette.c292
-rw-r--r--src/save_failed_screen.c26
-rw-r--r--src/script.c3
-rw-r--r--src/secret_base.c4
-rwxr-xr-xsrc/shop.c2
-rw-r--r--src/sound.c4
-rw-r--r--src/sprite.c30
-rw-r--r--src/start_menu.c1
-rw-r--r--src/starter_choose.c40
-rw-r--r--src/strings.c30
-rw-r--r--src/text.c4
-rw-r--r--src/title_screen.c96
-rw-r--r--src/trade.c341
-rw-r--r--src/trainer_hill.c3
-rw-r--r--src/trainer_pokemon_sprites.c9
-rw-r--r--src/trainer_see.c19
-rw-r--r--src/union_room.c (renamed from src/rom_8011DC0.c)2471
-rwxr-xr-xsrc/union_room_chat.c2630
-rw-r--r--src/unk_transition.c13
-rw-r--r--src/use_pokeblock.c1386
-rw-r--r--src/walda_phrase.c2
-rw-r--r--src/wallclock.c80
112 files changed, 20216 insertions, 5629 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/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 6098e2d3a..61876e0de 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "battle_anim.h"
#include "battle_ai_script_commands.h"
#include "battle_factory.h"
#include "battle_setup.h"
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index a5958ebc6..2d67fda99 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "battle_anim.h"
#include "battle_controllers.h"
#include "pokemon.h"
#include "random.h"
diff --git a/src/battle_anim.c b/src/battle_anim.c
index f1cff1de2..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,
};
diff --git a/src/battle_anim_80D51AC.c b/src/battle_anim_mon_movement.c
index 250a0459f..250a0459f 100644
--- a/src/battle_anim_80D51AC.c
+++ b/src/battle_anim_mon_movement.c
diff --git a/src/battle_anim_80A5C6C.c b/src/battle_anim_mons.c
index 372377a0c..372377a0c 100644
--- a/src/battle_anim_80A5C6C.c
+++ b/src/battle_anim_mons.c
diff --git a/src/battle_anim_8170478.c b/src/battle_anim_special.c
index 92874fe09..92874fe09 100755
--- a/src/battle_anim_8170478.c
+++ b/src/battle_anim_special.c
diff --git a/src/battle_anim_80A9C70.c b/src/battle_anim_status_effects.c
index 1271680e0..1271680e0 100644
--- a/src/battle_anim_80A9C70.c
+++ b/src/battle_anim_status_effects.c
diff --git a/src/battle_arena.c b/src/battle_arena.c
index 8146f5b38..f785fa7c3 100644
--- a/src/battle_arena.c
+++ b/src/battle_arena.c
@@ -406,10 +406,10 @@ static const struct OamData sJudgementIconOamData =
.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,
diff --git a/src/battle_bg.c b/src/battle_bg.c
index 9ca0f8b84..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,
diff --git a/src/battle_dome.c b/src/battle_dome.c
index f86faeffb..1b7953180 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -872,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,
@@ -889,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,
@@ -906,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,
@@ -923,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,
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index 85c0b2808..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,
diff --git a/src/battle_interface.c b/src/battle_interface.c
index f2916012e..a8651f6cf 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -207,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,
@@ -279,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,
@@ -446,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,
@@ -463,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,
diff --git a/src/battle_main.c b/src/battle_main.c
index 2b0c5980e..19fd01e3c 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "battle_anim.h"
#include "battle_ai_script_commands.h"
#include "battle_arena.h"
#include "battle_controllers.h"
@@ -296,10 +297,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,
@@ -313,10 +314,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,
diff --git a/src/battle_message.c b/src/battle_message.c
index 6762cd416..f93765b89 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "battle_anim.h"
#include "battle_controllers.h"
#include "battle_message.h"
#include "battle_setup.h"
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index 2e13ea08b..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,
@@ -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]);
}
@@ -859,7 +859,7 @@ static void Task_HandlePyramidBagInput(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
gSpecialVar_ItemId = 0;
sub_81C5B14(taskId);
@@ -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);
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index ac9fb3073..0a0c34ad2 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -49,14 +49,12 @@
#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
-
#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
// this file's functions
@@ -733,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,
@@ -4482,28 +4480,6 @@ static void atk48_playstatchangeanimation(void)
}
}
-enum
-{
- ATK49_RAGE,
- ATK49_DEFROST,
- ATK49_SYNCHRONIZE_TARGET,
- ATK49_MOVE_END_ABILITIES,
- ATK49_STATUS_IMMUNITY_ABILITIES,
- ATK49_SYNCHRONIZE_ATTACKER,
- ATK49_CHOICE_MOVE,
- ATK49_CHANGED_ITEMS,
- ATK49_ATTACKER_INVISIBLE,
- ATK49_ATTACKER_VISIBLE,
- ATK49_TARGET_VISIBLE,
- ATK49_ITEM_EFFECTS_ALL,
- ATK49_KINGSROCK_SHELLBELL,
- ATK49_SUBSTITUTE,
- ATK49_UPDATE_LAST_MOVES,
- ATK49_MIRROR_MOVE,
- ATK49_NEXT_TARGET,
- ATK49_COUNT,
-};
-
static void atk49_moveend(void)
{
s32 i;
@@ -6319,16 +6295,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)
@@ -7212,6 +7188,9 @@ static void atk88_negativedamage(void)
gBattlescriptCurrInstr++;
}
+#define STAT_CHANGE_WORKED 0
+#define STAT_CHANGE_DIDNT_WORK 1
+
static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
{
bool8 certain = FALSE;
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_tv.c b/src/battle_tv.c
index d3ca9b61f..26df08786 100644
--- a/src/battle_tv.c
+++ b/src/battle_tv.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "pokemon.h"
#include "battle.h"
+#include "battle_anim.h"
#include "battle_tv.h"
#include "constants/battle_string_ids.h"
#include "constants/battle_anim.h"
diff --git a/src/battle_util.c b/src/battle_util.c
index aa88cf952..a7962b7f7 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "battle_anim.h"
#include "constants/battle_script_commands.h"
#include "constants/abilities.h"
#include "constants/moves.h"
diff --git a/src/battle_util2.c b/src/battle_util2.c
index 9c0d55a57..5ef969fd5 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "battle_anim.h"
#include "battle_controllers.h"
#include "alloc.h"
#include "pokemon.h"
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 450bcae42..c792b9b40 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -404,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,
@@ -547,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,
@@ -616,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,
@@ -703,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,
@@ -761,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,
diff --git a/src/berry_crush.c b/src/berry_crush.c
new file mode 100755
index 000000000..dc4c546b0
--- /dev/null
+++ b/src/berry_crush.c
@@ -0,0 +1,775 @@
+#include "global.h"
+#include "alloc.h"
+#include "berry_powder.h"
+#include "bg.h"
+#include "event_data.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "item_icon.h"
+#include "item_menu.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "main.h"
+#include "math_util.h"
+#include "menu.h"
+#include "overworld.h"
+#include "palette.h"
+#include "rom_8034C54.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "trig.h"
+#include "window.h"
+#include "constants/items.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+
+struct BerryCrushGame_Player
+{
+ u16 unk0;
+ u8 filler2[0x12];
+ u8 unk14[0xC];
+};
+
+struct BerryCrushGame_PlayersSeparate
+{
+ struct BerryCrushGame_Player player;
+ struct BerryCrushGame_Player others[4];
+};
+
+typedef union BerryCrushGame_Players
+{
+ struct BerryCrushGame_Player players[5];
+ struct BerryCrushGame_PlayersSeparate separate;
+} BerryCrushGame_Players;
+
+struct BerryCrushGame_138_C
+{
+ u8 filler0[0x8];
+ s16 unk8;
+ u16 unkA;
+};
+
+struct BerryCrushGame_138
+{
+ u8 filler0[0xC];
+ struct BerryCrushGame_138_C *unkC[5];
+ u8 filler1C[0x4];
+ struct Sprite *unk24[5];
+ struct Sprite *unk38[5];
+ struct Sprite *unk4C[5];
+ struct Sprite *unk60[5];
+ struct Sprite *unk74[5];
+};
+
+struct BerryCrushGame_4E
+{
+ u8 filler0[0x4];
+ u8 unk4;
+ u8 filler5[0x5];
+ u16 unkA;
+ u16 unkC;
+};
+
+struct __attribute__((packed)) BerryCrushGame_40
+{
+ u8 filler0[0xE];
+ struct BerryCrushGame_4E unkE;
+};
+
+struct BerryCrushGame
+{
+ MainCallback unk0;
+ void (* unk4)(struct BerryCrushGame *, u8 *);
+ u8 unk8;
+ u8 unk9;
+ u8 unkA;
+ u8 unkB;
+ u8 unkC;
+ u8 fillerD[0x1];
+ u8 unkE;
+ u8 unkF;
+ u8 filler10[0x2];
+ u16 unk12;
+ u8 filler14[0x2];
+ u16 unk16;
+ u8 filler18[0x4];
+ int unk1C;
+ u8 filler20[0x5];
+ u8 unk25_0:1;
+ u8 unk25_1:1;
+ u8 unk25_2:1;
+ u8 filler26[0x2];
+ u16 unk28;
+ u16 unk2A;
+ u16 unk2C;
+ u8 filler2E[0x8];
+ u8 unk36[0xA];
+ struct BerryCrushGame_40 unk40;
+ u8 filler60[0x8];
+ int unk68;
+ u16 unk6C;
+ u8 filler6E[0x4];
+ u16 unk72;
+ u8 filler74[0x10];
+ BerryCrushGame_Players unk84;
+ u8 filler124[0x14];
+ struct BerryCrushGame_138 unk138;
+ u8 unk1C0[0x1000];
+ u8 unk11C0[0x1000];
+ u8 unk21C0[0x1000];
+ u8 unk31C0[0x1000];
+};
+
+static void sub_8020F74(void);
+static void sub_8020F88(void);
+static void sub_8020FA0(u8);
+void sub_8020FC4(struct BerryCrushGame *);
+void sub_8022BEC(u16, u8, u8 *);
+void sub_8024604(u8 *, u8, s8, u8, u8, u8, u8);
+static int sub_8021450(struct BerryCrushGame *);
+void sub_8022588(struct BerryCrushGame *);
+void sub_8022600(struct BerryCrushGame *);
+void sub_80226D0(struct BerryCrushGame *);
+void sub_8022730(struct BerryCrushGame *);
+void sub_8022960(struct BerryCrushGame *);
+void sub_8022524(struct BerryCrushGame_138 *, u16);
+void sub_8022B28(struct Sprite *);
+
+extern struct BerryCrushGame *gUnknown_02022C90;
+
+extern const struct BgTemplate gUnknown_082F32C8[4];
+extern const u8 gBerryCrushGrinderTopTilemap[];
+extern const u8 gBerryCrushContainerCapTilemap[];
+extern const u8 gBerryCrushBackgroundTilemap[];
+extern const struct SpriteTemplate gUnknown_082F436C;
+extern const u16 gUnknown_082F41E8[];
+extern const s8 gUnknown_082F41CC[][2];
+extern const s8 gUnknown_082F41D2[][2];
+
+struct BerryCrushGame *sub_8020C00(void)
+{
+ return gUnknown_02022C90;
+}
+
+int sub_8020C0C(MainCallback callback)
+{
+ if (!gUnknown_02022C90)
+ return 2;
+
+ if (!callback)
+ callback = gUnknown_02022C90->unk0;
+
+ DestroyTask(gUnknown_02022C90->unkA);
+ FREE_AND_SET_NULL(gUnknown_02022C90);
+ SetMainCallback2(callback);
+ if (callback == CB2_ReturnToField)
+ {
+ gTextFlags.autoScroll = 1;
+ PlayNewMapMusic(MUS_POKECEN);
+ SetMainCallback1(CB1_Overworld);
+ }
+
+ return 0;
+}
+
+void sub_8020C70(MainCallback callback)
+{
+ u8 playerCount = 0;
+ u8 multiplayerId;
+
+ if (!gReceivedRemoteLinkPlayers || gWirelessCommType == 0)
+ {
+ SetMainCallback2(callback);
+ gUnknown_03005000.unk_10 = 0;
+ gUnknown_03005000.unk_12 = 0;
+ gUnknown_03005000.unk_ee = 1;
+ return;
+ }
+
+ playerCount = GetLinkPlayerCount();
+ multiplayerId = GetMultiplayerId();
+ if (playerCount < 2 || multiplayerId >= playerCount)
+ {
+ SetMainCallback2(callback);
+ gUnknown_03005000.unk_10 = 0;
+ gUnknown_03005000.unk_12 = 0;
+ gUnknown_03005000.unk_ee = 1;
+ return;
+ }
+
+ gUnknown_02022C90 = AllocZeroed(sizeof(*gUnknown_02022C90));
+ if (!gUnknown_02022C90)
+ {
+ SetMainCallback2(callback);
+ gUnknown_03005000.unk_10 = 0;
+ gUnknown_03005000.unk_12 = 0;
+ gUnknown_03005000.unk_ee = 1;
+ return;
+ }
+
+ gUnknown_02022C90->unk0 = callback;
+ gUnknown_02022C90->unk8 = multiplayerId;
+ gUnknown_02022C90->unk9 = playerCount;
+ sub_8020FC4(gUnknown_02022C90);
+ gUnknown_02022C90->unk12 = 1;
+ gUnknown_02022C90->unkE = 1;
+ gUnknown_02022C90->unkF = 6;
+ sub_8024604(gUnknown_02022C90->unk36, 1, -1, 0, 16, 0, 0);
+ sub_8022BEC(4, 1, gUnknown_02022C90->unk36);
+ SetMainCallback2(sub_8020F88);
+ gUnknown_02022C90->unkA = CreateTask(sub_8020FA0, 8);
+ gTextFlags.autoScroll = 0;
+}
+
+static void sub_8020D8C(void)
+{
+ if (gSpecialVar_ItemId < FIRST_BERRY_INDEX || gSpecialVar_ItemId > LAST_BERRY_INDEX + 1)
+ gSpecialVar_ItemId = ITEM_CHERI_BERRY;
+ else
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+
+ gUnknown_02022C90->unk84.separate.others[gUnknown_02022C90->unk8].unk0 = gSpecialVar_ItemId - FIRST_BERRY_INDEX;
+ gUnknown_02022C90->unkE = 1;
+ gUnknown_02022C90->unkF = 9;
+ sub_8024604(gUnknown_02022C90->unk36, 0, -1, 0, 16, 0, 0);
+ sub_8022BEC(4, 1, gUnknown_02022C90->unk36);
+ gUnknown_02022C90->unkA = CreateTask(sub_8020FA0, 8);
+ SetMainCallback2(sub_8020F88);
+}
+
+void sub_8020E1C(void)
+{
+ DestroyTask(gUnknown_02022C90->unkA);
+ sub_81AABF0(sub_8020D8C);
+}
+
+static void sub_8020E3C(void)
+{
+ SetVBlankCallback(sub_8020F74);
+}
+
+void sub_8020E4C(void)
+{
+ SetVBlankCallback(NULL);
+}
+
+void sub_8020E58(void)
+{
+ u32 var0, var1;
+
+ var0 = gUnknown_02022C90->unk6C;
+ var0 <<= 8;
+ var0 = sub_81515FC(var0, 60 << 8);
+ var1 = gUnknown_02022C90->unk72;
+ var1 <<= 8;
+ var1 = sub_81515FC(var1, var0) & 0xFFFF;
+ gUnknown_02022C90->unk16 = var1;
+ switch (gUnknown_02022C90->unk9)
+ {
+ case 2:
+ if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[0])
+ {
+ gUnknown_02022C90->unk25_1 = 1;
+ gSaveBlock2Ptr->berryCrush.berryCrushResults[0] = gUnknown_02022C90->unk16;
+ }
+ break;
+ case 3:
+ if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[1])
+ {
+ gUnknown_02022C90->unk25_1 = 1;
+ gSaveBlock2Ptr->berryCrush.berryCrushResults[1] = gUnknown_02022C90->unk16;
+ }
+ break;
+ case 4:
+ if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[2])
+ {
+ gUnknown_02022C90->unk25_1 = 1;
+ gSaveBlock2Ptr->berryCrush.berryCrushResults[2] = gUnknown_02022C90->unk16;
+ }
+ break;
+ case 5:
+ if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[3])
+ {
+ gUnknown_02022C90->unk25_1 = 1;
+ gSaveBlock2Ptr->berryCrush.berryCrushResults[3] = gUnknown_02022C90->unk16;
+ }
+ break;
+ }
+
+ gUnknown_02022C90->unk1C = gUnknown_02022C90->unk68;
+ if (GiveBerryPowder(gUnknown_02022C90->unk1C))
+ return;
+
+ gUnknown_02022C90->unk25_0 = 1;
+}
+
+static void sub_8020F74(void)
+{
+ TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+}
+
+static void sub_8020F88(void)
+{
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+static void sub_8020FA0(u8 taskId)
+{
+ if (gUnknown_02022C90->unk4)
+ gUnknown_02022C90->unk4(gUnknown_02022C90, gUnknown_02022C90->unk36);
+
+ sub_8021450(gUnknown_02022C90);
+}
+
+#ifdef NONMATCHING
+void sub_8020FC4(struct BerryCrushGame *arg0)
+{
+ u8 i;
+
+ for (i = 0; i < arg0->unk9; i++)
+ StringCopy(arg0->unk84.players[i].unk14, gLinkPlayers[i].name);
+
+ for (; i < 5; i++)
+ {
+ memset(arg0->unk84.players[i].unk14, 1, PLAYER_NAME_LENGTH);
+ arg0->unk84.players[i].unk14[PLAYER_NAME_LENGTH] = EOS;
+ }
+
+ switch (gSaveBlock2Ptr->optionsTextSpeed)
+ {
+ case OPTIONS_TEXT_SPEED_SLOW:
+ arg0->unkB = 8;
+ break;
+ case OPTIONS_TEXT_SPEED_MID:
+ arg0->unkB = 4;
+ break;
+ case OPTIONS_TEXT_SPEED_FAST:
+ arg0->unkB = 1;
+ break;
+ }
+}
+#else
+NAKED
+void sub_8020FC4(struct BerryCrushGame *arg0)
+{
+ asm_unified("\n\
+ push {r4-r6,lr}\n\
+ adds r6, r0, 0\n\
+ movs r5, 0\n\
+ b _08020FE6\n\
+LOOP_1:\n\
+ lsls r0, r5, 5\n\
+ adds r0, 0x98\n\
+ adds r0, r6, r0\n\
+ lsls r1, r5, 3\n\
+ subs r1, r5\n\
+ lsls r1, 2\n\
+ ldr r2, =gLinkPlayers + 8\n\
+ adds r1, r2\n\
+ bl StringCopy\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+_08020FE6:\n\
+ ldrb r0, [r6, 0x9]\n\
+ cmp r5, r0\n\
+ bcc LOOP_1\n\
+ cmp r5, 0x4\n\
+ bhi _08021012\n\
+_08020FF0:\n\
+ lsls r4, r5, 5\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x98\n\
+ adds r0, r6, r0\n\
+ movs r1, 0x1\n\
+ movs r2, 0x7\n\
+ bl memset\n\
+ adds r4, r6, r4\n\
+ adds r4, 0x9F\n\
+ movs r0, 0xFF\n\
+ strb r0, [r4]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x4\n\
+ bls _08020FF0\n\
+_08021012:\n\
+ ldr r0, =gSaveBlock2Ptr\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x14]\n\
+ lsls r0, 29\n\
+ lsrs r0, 29\n\
+ cmp r0, 0x1\n\
+ beq _0802103E\n\
+ cmp r0, 0x1\n\
+ bgt _08021034\n\
+ cmp r0, 0\n\
+ beq _0802103A\n\
+ b _08021046\n\
+ .pool\n\
+_08021034:\n\
+ cmp r0, 0x2\n\
+ beq _08021042\n\
+ b _08021046\n\
+_0802103A:\n\
+ movs r0, 0x8\n\
+ b _08021044\n\
+_0802103E:\n\
+ movs r0, 0x4\n\
+ b _08021044\n\
+_08021042:\n\
+ movs r0, 0x1\n\
+_08021044:\n\
+ strb r0, [r6, 0xB]\n\
+_08021046:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0");
+}
+#endif // NONMATCHING
+
+int sub_802104C(void)
+{
+ struct BerryCrushGame *var0 = sub_8020C00();
+ if (!var0)
+ return -1;
+
+ switch (var0->unkC)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ScanlineEffect_Stop();
+ reset_temp_tile_data_buffers();
+ break;
+ case 1:
+ CpuFill16(0, (void *)OAM, OAM_SIZE);
+ gReservedSpritePaletteCount = 0;
+ sub_8034C54(3);
+ break;
+ case 2:
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ break;
+ case 3:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_082F32C8, ARRAY_COUNT(gUnknown_082F32C8));
+ SetBgTilemapBuffer(1, var0->unk1C0);
+ SetBgTilemapBuffer(2, var0->unk21C0);
+ SetBgTilemapBuffer(3, var0->unk31C0);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ break;
+ case 4:
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 64);
+ FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 32, 32);
+ FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 32, 32);
+ break;
+ case 5:
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(3);
+ decompress_and_copy_tile_data_to_vram(1, gUnknown_08DE34B8, 0, 0, 0);
+ break;
+ case 6:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 0;
+
+ InitStandardTextBoxWindows();
+ sub_8197200();
+ sub_8022588(var0);
+ sub_8022600(var0);
+ gPaletteFade.bufferTransferDisabled = 1;
+ break;
+ case 7:
+ LoadPalette(gUnknown_08DE3398, 0, 0x180);
+ CopyToBgTilemapBuffer(1, gBerryCrushGrinderTopTilemap, 0, 0);
+ CopyToBgTilemapBuffer(2, gBerryCrushContainerCapTilemap, 0, 0);
+ CopyToBgTilemapBuffer(3, gBerryCrushBackgroundTilemap, 0, 0);
+ sub_80226D0(var0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 8:
+ sub_800E0E8();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ sub_8022730(var0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, -gSpriteCoordOffsetY);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ break;
+ case 9:
+ gPaletteFade.bufferTransferDisabled = 0;
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ sub_8020E3C();
+ var0->unkC = 0;
+ return 1;
+ }
+
+ var0->unkC++;
+ return 0;
+}
+
+int sub_802130C(void)
+{
+ struct BerryCrushGame *var0 = sub_8020C00();
+ if (!var0)
+ return -1;
+
+ switch (var0->unkC)
+ {
+ case 0:
+ sub_8010434();
+ break;
+ case 1:
+ if (!IsLinkTaskFinished())
+ return 0;
+ // fall through. The original author forgot to use "break" here
+ // because this will call BeginNormalPaletteFade() twice.
+ case 2:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ UpdatePaletteFade();
+ break;
+ case 3:
+ if (UpdatePaletteFade())
+ return 0;
+ break;
+ case 4:
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 32);
+ FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 32, 32);
+ FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 32, 32);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 5:
+ FreeAllWindowBuffers();
+ HideBg(0);
+ UnsetBgTilemapBuffer(0);
+ HideBg(1);
+ UnsetBgTilemapBuffer(1);
+ HideBg(2);
+ UnsetBgTilemapBuffer(2);
+ HideBg(3);
+ UnsetBgTilemapBuffer(3);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ break;
+ case 6:
+ sub_800E084();
+ sub_8022960(var0);
+ sub_8034CC8();
+ break;
+ case 7:
+ var0->unkC = 0;
+ return 1;
+ }
+
+ var0->unkC++;
+ return 0;
+}
+
+static int sub_8021450(struct BerryCrushGame *arg0)
+{
+ gSpriteCoordOffsetY = arg0->unk2A + arg0->unk2C;
+ SetGpuReg(REG_OFFSET_BG1VOFS, -gSpriteCoordOffsetY);
+ if (arg0->unk12 == 7)
+ {
+ sub_8022524(&arg0->unk138, arg0->unk28);
+ }
+
+ return 0;
+}
+
+void sub_8021488(struct BerryCrushGame *arg0)
+{
+ arg0->unk2A = -104;
+ arg0->unk2C = 0;
+ gSpriteCoordOffsetX = 0;
+ gSpriteCoordOffsetY = -104;
+}
+
+void sub_80214A8(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1)
+{
+ u8 i;
+ u8 spriteId;
+ s16 var0, var1;
+ s16 *data;
+ int var3;
+ s16 var5;
+ u32 var6;
+
+ for (i = 0; i < arg0->unk9; i++)
+ {
+ spriteId = AddCustomItemIconSprite(
+ &gUnknown_082F436C,
+ gUnknown_082F41E8[i],
+ gUnknown_082F41E8[i],
+ arg0->unk84.separate.others[i].unk0 + 133);
+ arg1->unk38[i] = &gSprites[spriteId];
+ arg1->unk38[i]->oam.priority = 3;
+ arg1->unk38[i]->affineAnimPaused = 1;
+ arg1->unk38[i]->pos1.x = arg1->unkC[i]->unk8 + 120;
+ arg1->unk38[i]->pos1.y = -16;
+ data = arg1->unk38[i]->data;
+ var5 = 512;
+ data[1] = var5;
+ data[2] = 32;
+ data[7] = 112;
+ var0 = arg1->unkC[i]->unkA - arg1->unkC[i]->unk8;
+ var3 = var0;
+ if (var0 < 0)
+ var3 += 3;
+
+ data[6] = var3 >> 2;
+ var0 *= 128;
+ var6 = var5 + 32;
+ var6 = var6 / 2;
+ var1 = sub_81515D4(7, 0x3F80, var6);
+ data[0] = (u16)arg1->unk38[i]->pos1.x * 128;
+ data[3] = sub_81515D4(7, var0, var1);
+ var1 = sub_8151550(7, var1, 85);
+ data[4] = 0;
+ data[5] = sub_81515D4(7, 0x3F80, var1);
+ data[7] |= 0x8000;
+ if (arg1->unkC[i]->unk8 < 0)
+ StartSpriteAffineAnim(arg1->unk38[i], 1);
+ }
+}
+
+void sub_8021608(struct Sprite *sprite)
+{
+ s16 *data = sprite->data;
+
+ data[1] += data[2];
+ sprite->pos2.y += data[1] >> 8;
+ if (data[7] & 0x8000)
+ {
+ sprite->data[0] += data[3];
+ data[4] += data[5];
+ sprite->pos2.x = Sin(data[4] >> 7, data[6]);
+ if ((data[7] & 0x8000) && (data[4] >> 7) > 126)
+ {
+ sprite->pos2.x = 0;
+ data[7] &= 0x7FFF;
+ }
+ }
+
+ sprite->pos1.x = data[0] >> 7;
+ if (sprite->pos1.y + sprite->pos2.y >= (data[7] & 0x7FFF))
+ {
+ sprite->callback = SpriteCallbackDummy;
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+}
+
+void sub_80216A8(struct BerryCrushGame *arg0)
+{
+ u8 i;
+ for (i = 0; i < arg0->unk9; i++)
+ {
+ FreeSpritePaletteByTag(gUnknown_082F41E8[i]);
+ FreeSpriteTilesByTag(gUnknown_082F41E8[i]);
+ }
+}
+
+// void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1)
+// {
+// u8 sp4;
+// struct BerryCrushGame_4E *var4E;
+// u8 i;
+// u16 var0;
+
+// sp4 = 0;
+// var4E = &arg0->unk40.unkE;
+// for (i = 0; i < arg0->unk9; i++)
+// {
+// var0 = var4E->unkA >> (i * 3);
+// var0 &= 7;
+// if (var0)
+// {
+// int offset;
+// sp4++;
+// if (var0 & 0x4)
+// StartSpriteAnim(arg1->unk24[i], 1);
+// else
+// StartSpriteAnim(arg1->unk24[i], 0);
+
+// arg1->unk24[i]->invisible = 0;
+// arg1->unk24[i]->animPaused = 0;
+// offset = (var0 % 4) - 1;
+// arg1->unk24[i]->pos2.x = gUnknown_082F41CC[offset][0];
+// arg1->unk24[i]->pos2.y = gUnknown_082F41CC[offset][1];
+// }
+// }
+
+// if (sp4 == 0)
+// {
+// arg0->unk25_2 = 0;
+// }
+// else
+// {
+// u8 var3 = arg0->unk28 % 3;
+// u16 var2 = var3;
+// for (i = 0; i < var4E->unkC * 2 + 3; i++)
+// {
+// if (arg1->unk4C[i]->invisible)
+// {
+// arg1->unk4C[i]->callback = sub_8022B28;
+// arg1->unk4C[i]->pos1.x = gUnknown_082F41D2[i][0] + 120;
+// arg1->unk4C[i]->pos1.y = gUnknown_082F41D2[i][1] + (136 - var2 * 4);
+// arg1->unk4C[i]->pos2.x = gUnknown_082F41D2[i][0] / (var3 * 4);
+// arg1->unk4C[i]->pos2.y = gUnknown_082F41D2[i][1];
+// if (var4E->unk4 & 0x2)
+// StartSpriteAnim(arg1->unk4C[i], 1);
+// else
+// StartSpriteAnim(arg1->unk4C[i], 0);
+
+// var2++;
+// if (var2 > 3)
+// var2 = 0;
+// }
+// }
+
+// if (arg0->unk25_2)
+// {
+// arg0->unk25_2 = 0;
+// }
+// else
+// {
+// if (sp4 == 1)
+// PlaySE(SE_TOY_DANGO);
+// else
+// PlaySE(SE_TOY_KABE);
+
+// arg0->unk25_2 = 1;
+// }
+// }
+// }
diff --git a/src/berry_powder.c b/src/berry_powder.c
new file mode 100755
index 000000000..91f9d0d4e
--- /dev/null
+++ b/src/berry_powder.c
@@ -0,0 +1,128 @@
+#include "global.h"
+#include "berry_powder.h"
+#include "bg.h"
+#include "event_data.h"
+#include "load_save.h"
+#include "menu.h"
+#include "string_util.h"
+#include "strings.h"
+#include "text.h"
+#include "text_window.h"
+#include "window.h"
+
+#define MAX_BERRY_POWDER 99999
+
+static EWRAM_DATA u8 sBerryPowderVendorWindowId = 0;
+
+static u32 DecryptBerryPowder(u32 *powder)
+{
+ return *powder ^ gSaveBlock2Ptr->encryptionKey;
+}
+
+void SetBerryPowder(u32 *powder, u32 amount)
+{
+ *powder = amount ^ gSaveBlock2Ptr->encryptionKey;
+}
+
+void ApplyNewEncryptionKeyToBerryPowder(u32 encryptionKey)
+{
+ u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ ApplyNewEncryptionKeyToWord(powder, encryptionKey);
+}
+
+static bool8 HasEnoughBerryPowder_(u32 cost)
+{
+ u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ if (DecryptBerryPowder(powder) < cost)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+bool8 HasEnoughBerryPowder(void)
+{
+ u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ if (DecryptBerryPowder(powder) < gSpecialVar_0x8004)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+bool8 GiveBerryPowder(u32 amountToAdd)
+{
+ u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ u32 amount = DecryptBerryPowder(powder) + amountToAdd;
+ if (amount > MAX_BERRY_POWDER)
+ {
+ SetBerryPowder(powder, MAX_BERRY_POWDER);
+ return FALSE;
+ }
+ else
+ {
+ SetBerryPowder(powder, amount);
+ return TRUE;
+ }
+}
+
+static bool8 TakeBerryPowder_(u32 cost)
+{
+ u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ if (!HasEnoughBerryPowder_(cost))
+ return FALSE;
+
+ SetBerryPowder(powder, DecryptBerryPowder(powder) - cost);
+ return TRUE;
+}
+
+bool8 TakeBerryPowder(void)
+{
+ u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ if (!HasEnoughBerryPowder_(gSpecialVar_0x8004))
+ return FALSE;
+
+ SetBerryPowder(powder, DecryptBerryPowder(powder) - gSpecialVar_0x8004);
+ return TRUE;
+}
+
+u32 GetBerryPowder(void)
+{
+ u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ return DecryptBerryPowder(powder);
+}
+
+static void PrintBerryPowderAmount(u8 windowId, int amount, u8 x, u8 y, u8 speed)
+{
+ ConvertIntToDecimalStringN(gStringVar1, amount, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ AddTextPrinterParameterized(windowId, 1, gStringVar1, x, y, speed, NULL);
+}
+
+static void DrawPlayerPowderAmount(u8 windowId, u16 baseTileOffset, u8 paletteNum, u32 amount)
+{
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, baseTileOffset, paletteNum);
+ AddTextPrinterParameterized(windowId, 1, gText_Powder, 0, 1, TEXT_SPEED_FF, NULL);
+ PrintBerryPowderAmount(windowId, amount, 26, 17, 0);
+}
+
+void PrintPlayerBerryPowderAmount(void)
+{
+ u32 amount = GetBerryPowder();
+ PrintBerryPowderAmount(sBerryPowderVendorWindowId, amount, 26, 17, 0);
+}
+
+void DisplayBerryPowderVendorMenu(void)
+{
+ struct WindowTemplate template;
+ SetWindowTemplateFields(&template, 0, 1, 1, 7, 4, 15, 0x1C);
+ sBerryPowderVendorWindowId = AddWindow(&template);
+ FillWindowPixelBuffer(sBerryPowderVendorWindowId, PIXEL_FILL(0));
+ PutWindowTilemap(sBerryPowderVendorWindowId);
+ LoadUserWindowBorderGfx_(sBerryPowderVendorWindowId, 0x21D, 0xD0);
+ DrawPlayerPowderAmount(sBerryPowderVendorWindowId, 0x21D, 13, GetBerryPowder());
+}
+
+void RemoveBerryPowderVendorMenu(void)
+{
+ ClearWindowTilemap(sBerryPowderVendorWindowId);
+ ClearStdWindowAndFrameToTransparent(sBerryPowderVendorWindowId, TRUE);
+ RemoveWindow(sBerryPowderVendorWindowId);
+}
diff --git a/src/cable_car.c b/src/cable_car.c
index 420bdd30f..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
};
diff --git a/src/cable_club.c b/src/cable_club.c
index b80e76e99..fab187b07 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -17,7 +17,8 @@
#include "menu.h"
#include "overworld.h"
#include "palette.h"
-#include "rom_8011DC0.h"
+#include "union_room.h"
+#include "mevent2.h"
#include "script.h"
#include "script_pokemon_util_80F87D8.h"
#include "sound.h"
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 931deb01b..29f3c871d 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -154,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,
diff --git a/src/contest_painting_effects.c b/src/contest_painting_effects.c
index 142ad7bc9..a791df65c 100644
--- a/src/contest_painting_effects.c
+++ b/src/contest_painting_effects.c
@@ -3,6 +3,13 @@
#include "contest_painting.h"
#include "constants/rgb.h"
+struct Unk8125954
+{
+ u8 unk0;
+ u8 unk1;
+ u16 unk2;
+};
+
// IWRAM common
u8 gUnknown_03006164;
u16 (*gUnknown_03006168)[][32];
@@ -12,32 +19,46 @@ u8 gUnknown_03006174;
u8 gUnknown_03006178;
u8 gUnknown_0300617C;
u8 gUnknown_03006180;
-u16 gUnknown_03006184;
+u16 *gUnknown_03006184;
u16 gUnknown_03006188;
-// 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);
+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)
{
@@ -104,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;
@@ -127,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;
@@ -149,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;
@@ -174,7 +195,7 @@ void sub_8125250(void)
}
}
-void sub_81252E8(void)
+static void sub_81252E8(void)
{
u8 i, j;
@@ -200,7 +221,7 @@ void sub_81252E8(void)
}
}
-void sub_81253A4(u8 arg0)
+static void sub_81253A4(u8 arg0)
{
u8 i, j;
@@ -218,7 +239,7 @@ void sub_81253A4(u8 arg0)
}
}
-void sub_8125448(void)
+static void sub_8125448(void)
{
u8 i, j;
@@ -236,7 +257,7 @@ void sub_8125448(void)
}
}
-void sub_81254E0(void)
+static void sub_81254E0(void)
{
u8 i, j;
u16 *palette;
@@ -270,7 +291,7 @@ void sub_81254E0(void)
}
}
-void sub_8125630(void)
+static void sub_8125630(void)
{
u8 i, j;
@@ -288,7 +309,7 @@ void sub_8125630(void)
}
}
-void sub_81256C8(void)
+static void sub_81256C8(void)
{
u8 i, j;
u16 *palette;
@@ -349,7 +370,7 @@ void sub_81256C8(void)
}
}
-void sub_81257F8(void)
+static void sub_81257F8(void)
{
u8 i, j;
@@ -369,7 +390,7 @@ void sub_81257F8(void)
}
}
-void sub_81258A0(void)
+static void sub_81258A0(void)
{
u8 i, j;
@@ -389,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;
@@ -487,7 +499,7 @@ void sub_8125954(u16 arg0)
}
}
-u16 ConvertColorToGrayscale(u16 *color)
+static u16 ConvertColorToGrayscale(u16 *color)
{
s32 clr = *color;
s32 r = clr & 0x1F;
@@ -499,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;
@@ -513,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;
@@ -564,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;
@@ -576,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)
{
@@ -591,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;
@@ -604,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];
@@ -660,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;
@@ -704,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;
@@ -772,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 4483e3160..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,
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/decoration.c b/src/decoration.c
index 0712b5d32..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[] = {
@@ -939,7 +941,7 @@ void sub_812764C(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
SecretBasePC_SelectedDecorActions[data[11]][1](taskId);
break;
diff --git a/src/easy_chat.c b/src/easy_chat.c
index b03058eb9..2e384de6e 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -14,8 +14,8 @@
#include "gpu_regs.h"
#include "graphics.h"
#include "international_string_util.h"
-#include "link.h"
#include "main.h"
+#include "mevent.h"
#include "menu.h"
#include "overworld.h"
#include "palette.h"
@@ -772,10 +772,10 @@ static const struct OamData sOamData_8597D10 = {
.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 = 3,
.paletteNum = 0,
@@ -798,10 +798,10 @@ static const struct OamData sUnknown_08597D30 = {
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
.bpp = ST_OAM_4BPP,
- .shape = ST_OAM_H_RECTANGLE,
+ .shape = SPRITE_SHAPE(64x32),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -851,10 +851,10 @@ static const struct OamData sUnknown_08597D80 = {
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
.bpp = ST_OAM_4BPP,
- .shape = ST_OAM_H_RECTANGLE,
+ .shape = SPRITE_SHAPE(64x32),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -913,10 +913,10 @@ static const struct OamData sUnknown_08597DE8 = {
.objMode = ST_OAM_OBJ_NORMAL,
.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 = 3,
.paletteNum = 0,
@@ -939,10 +939,10 @@ static const struct OamData sUnknown_08597E08 = {
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
.bpp = ST_OAM_4BPP,
- .shape = ST_OAM_H_RECTANGLE,
+ .shape = SPRITE_SHAPE(32x8),
.x = 0,
.matrixNum = 0,
- .size = 1,
+ .size = SPRITE_SIZE(32x8),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
@@ -955,10 +955,10 @@ static const struct OamData gUnknown_08597E10 = {
.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 = 1,
.paletteNum = 0,
@@ -1318,7 +1318,7 @@ void ShowEasyChatScreen(void)
words = gSaveBlock2Ptr->apprentices[0].easyChatWords;
break;
case EASY_CHAT_TYPE_QUESTIONNAIRE:
- words = GetSaveBlock1Field3564();
+ words = sub_801B058();
break;
default:
return;
@@ -5531,7 +5531,7 @@ void InitializeEasyChatWordArray(u16 *words, u16 length)
void sub_811F8BC(void)
{
int i;
- u16 *words = GetSaveBlock1Field3564();
+ u16 *words = sub_801B058();
for (i = 0; i < 4; i++)
words[i] = 0xFFFF;
}
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index a9b6001ec..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);
}
}
diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c
new file mode 100755
index 000000000..cdb829ac8
--- /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 "union_room.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..10a23e251
--- /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 "union_room.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_object_movement.c b/src/event_object_movement.c
index ba62db10d..30dffd8d7 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -6,6 +6,7 @@
#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"
@@ -15,7 +16,6 @@
#include "metatile_behavior.h"
#include "overworld.h"
#include "palette.h"
-#include "pokenav.h"
#include "random.h"
#include "sprite.h"
#include "task.h"
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/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 680191bb3..5b685173e 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"
@@ -390,11 +390,11 @@ static const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 me
if (MetatileBehavior_IsBookShelf(metatileBehavior) == TRUE)
return EventScript_BookShelf;
if (MetatileBehavior_IsPokeCenterBookShelf(metatileBehavior) == TRUE)
- return EventScript_PokemonCenterBookshelf;
+ return EventScript_PokemonCenterBookShelf;
if (MetatileBehavior_IsVase(metatileBehavior) == TRUE)
return EventScript_Vase;
if (MetatileBehavior_IsTrashCan(metatileBehavior) == TRUE)
- return EventScript_TrashCan;
+ return EventScript_EmptyTrashCan;
if (MetatileBehavior_IsShopShelf(metatileBehavior) == TRUE)
return EventScript_ShopShelf;
if (MetatileBehavior_IsBlueprint(metatileBehavior) == TRUE)
@@ -541,7 +541,7 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
IncrementRematchStepCounter();
UpdateHappinessStepCounter();
- sub_81D4998();
+ UpdateFarawayIslandStepCounter();
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_6) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior))
{
diff --git a/src/field_effect.c b/src/field_effect.c
index ee9dcb987..825efc380 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -270,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,
@@ -281,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,
@@ -309,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},
@@ -342,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},
@@ -351,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),
@@ -368,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,
@@ -387,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,
@@ -397,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,
@@ -407,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,
@@ -417,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,
@@ -442,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},
@@ -455,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,
@@ -465,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,
@@ -474,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,
@@ -484,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,
@@ -492,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,
@@ -507,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,
@@ -522,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,
};
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 651b2baca..3f75fbb84 100755
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -1508,7 +1508,7 @@ void sub_8155F80(struct Sprite *sprite)
}
}
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
- FieldEffectStop(sprite, FLDEFF_64);
+ FieldEffectStop(sprite, FLDEFF_RAYQUAZA);
break;
}
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index b6dcf212c..5769f44af 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -44,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);
@@ -119,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);
}
@@ -133,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();
@@ -173,7 +173,7 @@ static void task_mpl_807DD60(u8 taskId)
}
break;
case 2:
- if (sub_80AF71C() == TRUE)
+ if (WaitForWeatherFadeIn() == TRUE)
{
ScriptContext2_Disable();
DestroyTask(taskId);
@@ -213,7 +213,7 @@ static void sub_80AF234(u8 taskId)
}
break;
case 2:
- if (sub_80AF71C() == TRUE)
+ if (WaitForWeatherFadeIn() == TRUE)
{
sub_8009F18();
ScriptContext2_Disable();
@@ -333,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);
@@ -381,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);
@@ -414,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();
@@ -426,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);
@@ -448,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);
@@ -476,7 +476,7 @@ static bool32 PaletteFadeActive(void)
return gPaletteFade.active;
}
-static bool32 sub_80AF71C(void)
+static bool32 WaitForWeatherFadeIn(void)
{
if (IsWeatherNotFadingIn() == TRUE)
return TRUE;
@@ -1007,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_specials.c b/src/field_specials.c
index 436b06f53..20c2e6173 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "alloc.h"
#include "battle.h"
#include "battle_tower.h"
#include "cable_club.h"
@@ -20,7 +21,7 @@
#include "link.h"
#include "list_menu.h"
#include "main.h"
-#include "alloc.h"
+#include "mevent.h"
#include "match_call.h"
#include "menu.h"
#include "overworld.h"
@@ -31,7 +32,6 @@
#include "random.h"
#include "rayquaza_scene.h"
#include "region_map.h"
-#include "rom_8011DC0.h"
#include "rtc.h"
#include "script.h"
#include "script_menu.h"
@@ -2610,7 +2610,7 @@ static void sub_813A4EC(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
gSpecialVar_Result = 0x7F;
PlaySE(SE_SELECT);
sub_813A570(taskId);
@@ -2690,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,
diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c
index be8fdc6cb..6ec83f1a0 100644
--- a/src/field_weather_effect.c
+++ b/src/field_weather_effect.c
@@ -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,
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index a715608c5..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,8 +21,6 @@
#include "constants/field_effects.h"
#include "constants/songs.h"
-extern bool8 IsMewPlayingHideAndSeek(void);
-
extern struct MapPosition gPlayerFacingPosition;
extern const u8 Route103_EventScript_290705[];
@@ -132,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_misc.c b/src/fldeff_misc.c
index d4d6075f3..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,
};
diff --git a/src/graphics.c b/src/graphics.c
index a3b9eb913..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");
@@ -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");
@@ -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");
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 2c31dba01..8eba90d96 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -178,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,
diff --git a/src/intro.c b/src/intro.c
index 23457f370..e97fbedb0 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -145,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,
@@ -214,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,
@@ -251,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,
@@ -307,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,
@@ -356,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,
@@ -441,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,
@@ -481,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,
@@ -572,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,
@@ -588,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,
@@ -604,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,
@@ -804,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,
@@ -857,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,
@@ -2427,7 +2427,7 @@ static void Task_IntroWaterDrops_1(u8 taskId)
| BLDCNT_TGT2_BG3
| BLDCNT_TGT2_OBJ
| BLDCNT_TGT2_BD);
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropData[31]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[31]);
SetGpuReg(REG_OFFSET_BLDY, 0);
gTasks[taskId].data[1] = 0x40;
gTasks[taskId].data[0]++;
@@ -2439,11 +2439,11 @@ static void Task_IntroWaterDrops_1(u8 taskId)
gTasks[taskId].data[1]--;
tmp = gTasks[taskId].data[1] / 2;
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropData[tmp]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[tmp]);
}
else
{
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropData[0]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[0]);
gTasks[taskId].data[1] = 0x10;
gTasks[taskId].data[0]++;
}
@@ -2470,7 +2470,7 @@ static void Task_IntroWaterDrops_2(u8 taskId)
| BLDCNT_TGT2_BG3
| BLDCNT_TGT2_OBJ
| BLDCNT_TGT2_BD);
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropData[0]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[0]);
SetGpuReg(REG_OFFSET_BLDY, 0);
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[0]++;
@@ -2482,11 +2482,11 @@ static void Task_IntroWaterDrops_2(u8 taskId)
gTasks[taskId].data[1]++;
tmp = gTasks[taskId].data[1] / 2;
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropData[tmp]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[tmp]);
}
else
{
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropData[31]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[31]);
gTasks[taskId].data[1] = 0x10;
gTasks[taskId].data[0]++;
}
diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c
index b98708324..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 gIntroBikeAndFlygonPalette[] = {
- { 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;
diff --git a/src/item_icon.c b/src/item_icon.c
index e9379dbba..91c32951a 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,
@@ -122,7 +122,7 @@ u8 AddItemIconSprite(u16 tilesTag, u16 paletteTag, u16 itemId)
}
}
-u8 AddCustomItemIconSprite(struct SpriteTemplate *customSpriteTemplate, u16 tilesTag, u16 paletteTag, u16 itemId)
+u8 AddCustomItemIconSprite(const struct SpriteTemplate *customSpriteTemplate, u16 tilesTag, u16 paletteTag, u16 itemId)
{
if (!AllocItemIconTemporaryBuffers())
{
diff --git a/src/item_menu.c b/src/item_menu.c
index 5738757bd..8edf6f279 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -447,7 +447,7 @@ static EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0;
extern u8 *const gPocketNamesStringsTable[];
extern u8* gReturnToXStringsTable[];
-extern const u8 EventScript_2736B3[];
+extern const u8 EventScript_SelectWithoutRegisteredItem[];
extern const u16 gUnknown_0860F074[];
void ResetBagScrollPositions(void)
@@ -1107,7 +1107,7 @@ void Task_BagMenu(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
if (gUnknown_0203CE58.location == 5)
{
PlaySE(SE_HAZURE);
@@ -1323,7 +1323,7 @@ void sub_81AC3C0(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
if (gMain.newKeys & A_BUTTON)
sub_81AC498(taskId);
@@ -1900,7 +1900,7 @@ bool8 UseRegisteredKeyItemOnField(void)
else
gSaveBlock1Ptr->registeredItem = ITEM_NONE;
}
- ScriptContext1_SetupScript(EventScript_2736B3);
+ ScriptContext1_SetupScript(EventScript_SelectWithoutRegisteredItem);
return TRUE;
}
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 e646a18ee..7947964ca 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -4,6 +4,7 @@
#include "battle_pyramid.h"
#include "battle_pyramid_bag.h"
#include "berry.h"
+#include "berry_powder.h"
#include "bike.h"
#include "coins.h"
#include "data2.h"
@@ -45,8 +46,6 @@ extern u8 Route102_EventScript_274482[];
extern u8 Route102_EventScript_2744C0[];
extern u8 BattleFrontier_OutsideEast_EventScript_242CFC[];
-extern s32 sub_80247BC(void);
-
void SetUpItemUseCallback(u8 taskId);
void MapPostLoadHook_UseItem(void);
void sub_80AF6D4(void);
@@ -638,7 +637,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
void ItemUseOutOfBattle_PowderJar(u8 taskId)
{
- ConvertIntToDecimalStringN(gStringVar1, sub_80247BC(), 0, 5);
+ ConvertIntToDecimalStringN(gStringVar1, GetBerryPowder(), 0, 5);
StringExpandPlaceholders(gStringVar4, gText_PowderQty);
if (!gTasks[taskId].data[3])
diff --git a/src/learn_move.c b/src/learn_move.c
deleted file mode 100644
index 879acff6d..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, PIXEL_FILL(1));
- 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, PIXEL_FILL(1));
- AddTextPrinterParameterized(3, 1, gStringVar4, 0, 1, 0, NULL);
- }
-}
-
-static void HandleInput(bool8 showContest)
-{
- s32 itemId = ListMenu_ProcessInput(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, PIXEL_FILL(1));
- 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/link_rfu.c b/src/link_rfu.c
index d80ff2ae9..43d19be03 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -11,13 +11,13 @@
#include "overworld.h"
#include "random.h"
#include "palette.h"
-#include "rom_8011DC0.h"
+#include "union_room.h"
#include "string_util.h"
#include "task.h"
#include "text.h"
#include "constants/species.h"
#include "save.h"
-#include "rom_8011DC0.h"
+#include "mystery_gift.h"
extern u16 gHeldKeyCodeToSend;
@@ -155,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
@@ -309,10 +310,22 @@ const char gUnknown_082ED7EC[] = "PokemonSioInfo";
const char gUnknown_082ED7FC[] = "LINK LOSS DISCONNECT!";
const char gUnknown_082ED814[] = "LINK LOSS RECOVERY NOW";
-extern const char gUnknown_082ED82C[];
-extern const char gUnknown_082ED84B[];
-extern const char gUnknown_082ED85B[];
-extern const char gUnknown_082ED868[];
+ALIGNED(4) const char gUnknown_082ED82C[31] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',0x00};
+const char gUnknown_082ED84B[16] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',0x00};
+const char gUnknown_082ED85B[9] = {' ',' ',' ',' ',' ',' ',' ',' ',0x00};
+ALIGNED(4) const char gUnknown_082ED864[2] = {' ',0x00};
+const char gUnknown_082ED866[2] = {'*',0x00};
+const char gUnknown_082ED868[8] = "NOWSLOT";
+const char gUnknown_082ED870[12] = " ";
+const char gUnknown_082ED87C[12] = "CLOCK DRIFT";
+const char gUnknown_082ED888[12] = "BUSY SEND ";
+const char gUnknown_082ED894[12] = "CMD REJECT ";
+const char gUnknown_082ED8A0[12] = "CLOCK SLAVE";
+const char gUnknown_082ED8A8[3][8] = {
+ "CHILD ",
+ "PARENT",
+ "SEARCH"
+};
// .text
@@ -4728,7 +4741,7 @@ bool32 sub_8011A80(void)
return FALSE;
}
-u8 sub_8011A9C(void)
+bool32 sub_8011A9C(void)
{
return gUnknown_03005000.unk_ce8;
}
diff --git a/src/list_menu.c b/src/list_menu.c
index 51d7dcb15..3bcd3073d 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,
@@ -312,7 +312,7 @@ static void ListMenuDummyTask(u8 taskId)
}
-s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum)
+s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum)
{
switch (sMysteryGiftLinkMenu.state)
{
@@ -341,7 +341,7 @@ s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenu
}
if (gMain.newKeys & B_BUTTON)
{
- sMysteryGiftLinkMenu.currItemId = LIST_B_PRESSED;
+ sMysteryGiftLinkMenu.currItemId = LIST_CANCEL;
sMysteryGiftLinkMenu.state = 2;
}
if (sMysteryGiftLinkMenu.state == 2)
@@ -416,7 +416,7 @@ s32 ListMenu_ProcessInput(u8 listTaskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- return LIST_B_PRESSED;
+ return LIST_CANCEL;
}
else if (gMain.newAndRepeatedKeys & DPAD_UP)
{
diff --git a/src/load_save.c b/src/load_save.c
index d6785254f..150c557c6 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "alloc.h"
+#include "berry_powder.h"
#include "item.h"
#include "load_save.h"
#include "main.h"
@@ -15,8 +16,6 @@
static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
-extern void ApplyNewEncryptionKeyToBerryPowder(u32 key);
-
#define SAVEBLOCK_MOVE_RANGE 128
struct LoadedSaveData
diff --git a/src/main_menu.c b/src/main_menu.c
index e6e29d942..cbd257cb1 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -525,7 +525,7 @@ enum
ACTION_OPTION,
ACTION_MYSTERY_GIFT,
ACTION_MYSTERY_EVENTS,
- ACTION_UNKNOWN, // TODO: change when rom_8011DC0 decompiled
+ ACTION_EREADER,
ACTION_INVALID
};
@@ -1033,7 +1033,7 @@ static void Task_HandleMainMenuAPressed(u8 taskId)
}
else
{
- action = ACTION_UNKNOWN;
+ action = ACTION_EREADER;
}
break;
case 3:
@@ -1082,7 +1082,7 @@ static void Task_HandleMainMenuAPressed(u8 taskId)
SetMainCallback2(CB2_InitMysteryEventMenu);
DestroyTask(taskId);
break;
- case ACTION_UNKNOWN:
+ case ACTION_EREADER:
SetMainCallback2(sub_801867C);
DestroyTask(taskId);
break;
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 3fb5ca40d..b5745d812 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -37,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,
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
new file mode 100644
index 000000000..f21f4e51a
--- /dev/null
+++ b/src/menu_specialized.c
@@ -0,0 +1,1641 @@
+#include "global.h"
+#include "alloc.h"
+#include "battle_main.h"
+#include "contest_effect.h"
+#include "data2.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "graphics.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 "pokemon_storage_system.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "strings.h"
+#include "string_util.h"
+#include "text.h"
+#include "text_window.h"
+#include "trig.h"
+#include "window.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "gba/io_reg.h"
+
+extern const struct CompressedSpriteSheet gMonFrontPicTable[];
+
+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 void sub_81D3408(struct Sprite *sprite);
+/*static*/ void sub_81D3564(struct Sprite *sprite);
+static void sub_81D35E8(struct Sprite *sprite);
+
+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,
+};
+
+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)
+{
+ u8 i;
+
+ sUnknown_0203CF4C = Alloc(count * sizeof(*sUnknown_0203CF4C) + sizeof(*sUnknown_0203CF4C));
+ if (sUnknown_0203CF4C == NULL)
+ return FALSE;
+
+ for (i = 0; i < ARRAY_COUNT(sUnknown_0203CF48); i++)
+ sUnknown_0203CF48[i] = 0xFF;
+
+ return TRUE;
+}
+
+u8 sub_81D1C84(u8 a0)
+{
+ if (sUnknown_0203CF48[a0] == 0xFF)
+ {
+ if (a0 == 2)
+ {
+ struct WindowTemplate template = sUnknown_086253E8[2];
+ template.width = GetMaxWidthInMenuTable(&gMailboxMailOptions[0], 4);
+ 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 i, j;
+
+ 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;
+}
+
+void sub_81D1F84(struct UnknownStruct_81D1ED4 *arg0, struct UnknownSubStruct_81D1ED4 *arg1, struct UnknownSubStruct_81D1ED4 *arg2)
+{
+ u16 i, j;
+ s32 r5, r6;
+
+ for (i = 0; i < 5; i++)
+ {
+ r5 = arg1[i].unk0 << 8;
+ r6 = ((arg2[i].unk0 - arg1[i].unk0) << 8) / 10;
+ for (j = 0; j < 9; j++)
+ {
+ arg0->unk64[j][i].unk0 = (r5 >> 8) + ((r5 >> 7) & 1);
+ r5 += r6;
+ }
+ arg0->unk64[j][i].unk0 = arg2[i].unk0;
+
+ r5 = arg1[i].unk2 << 8;
+ r6 = ((arg2[i].unk2 - arg1[i].unk2) << 8) / 10;
+ for (j = 0; j < 9; j++)
+ {
+ arg0->unk64[j][i].unk2 = (r5 >> 8) + ((r5 >> 7) & 1);
+ r5 += r6;
+ }
+ arg0->unk64[j][i].unk2 = arg2[i].unk2;
+ }
+
+ arg0->unk352 = 0;
+}
+
+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;
+ }
+}
+
+void sub_81D2108(struct UnknownStruct_81D1ED4 *arg0)
+{
+ u16 i;
+
+ if (arg0->unk354 == 0)
+ return;
+
+ sub_81D24A4(arg0);
+ sub_81D2634(arg0);
+
+ for (i = 0; i < 66; i++)
+ {
+ gScanlineEffectRegBuffers[1][(i + 55) * 2] = gScanlineEffectRegBuffers[0][(i + 55) * 2] = (arg0->unk140[i][0] << 8) | (arg0->unk140[i][1]);
+ gScanlineEffectRegBuffers[1][(i + 55) * 2 + 1] = gScanlineEffectRegBuffers[0][(i + 55) * 2 + 1] = (arg0->unk248[i][0] << 8) | (arg0->unk248[i][1]);
+ }
+
+ arg0->unk354 = 0;
+}
+
+void sub_81D21DC(u8 bg)
+{
+ u32 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;
+}
+
+/* TODO
+static void sub_81D2278(struct UnknownStruct_81D1ED4 *arg0, u16 arg1[66][2], struct UnknownSubStruct_81D1ED4 *arg2, struct UnknownSubStruct_81D1ED4 *arg3, u8 arg4, u16 arg5[66][2])
+{
+ s32 var_2C = 0;
+ u16 r8;
+ s32 r10, r4, r2, r0, r1, var_30;
+
+ if (arg2->unk2 < arg3->unk2)
+ {
+ r2 = arg2->unk2;
+ r10 = arg2->unk2;
+ r0 = arg3->unk2;
+ r1 = arg2->unk0;
+ r4 = r1 << 10;
+ var_30 = arg3->unk0;
+ }
+ else
+ {
+ r0 = arg2->unk0;
+ r10 = arg3->unk2;
+ r1 = arg3->unk0;
+ r4 = r1 << 10;
+ var_30 = arg2->unk0;
+ r2 = arg3->unk2;
+ }
+ r8 = r0 - r2;
+ if (r8 != 0)
+ var_2C = ((var_30 - r1) << 10) / r8;
+
+ r8++;
+ if (arg5 == NULL)
+ {
+
+ }
+}
+*/
+NAKED
+static void sub_81D2278(struct UnknownStruct_81D1ED4 *arg0, u16 arg1[66][2], struct UnknownSubStruct_81D1ED4 *arg2, struct UnknownSubStruct_81D1ED4 *arg3, u8 arg4, u16 arg5[66][2])
+{
+ 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, 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\
+ ");
+}
+
+static void sub_81D24A4(struct UnknownStruct_81D1ED4 *arg0)
+{
+ u16 i, r6, varMax;
+
+ if (arg0->unk12C[0].unk2 < arg0->unk12C[1].unk2)
+ {
+ r6 = arg0->unk12C[0].unk2;
+ sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[0], &arg0->unk12C[1], 1, NULL);
+ }
+ else
+ {
+ r6 = arg0->unk12C[1].unk2;
+ sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[1], &arg0->unk12C[0], 0, NULL);
+ }
+
+ sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[1], &arg0->unk12C[2], 1, NULL);
+
+ i = (arg0->unk12C[2].unk2 <= arg0->unk12C[3].unk2);
+ sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[2], &arg0->unk12C[3], i, arg0->unk248);
+ for (i = 56; i < r6; i++)
+ {
+ arg0->unk140[i - 56][0] = 0;
+ arg0->unk140[i - 56][1] = 0;
+ }
+
+ for (i = arg0->unk12C[0].unk2; i <= arg0->unk350; i++)
+ arg0->unk140[i - 56][0] = 155;
+
+ varMax = max(arg0->unk350, arg0->unk12C[2].unk2);
+ for (i = varMax + 1; i < 122; i++)
+ {
+ arg0->unk140[i - 56][0] = 0;
+ arg0->unk140[i - 56][1] = 0;
+ }
+
+ for (i = 56; i < 122; i++)
+ {
+ if (arg0->unk140[i - 56][0] == 0 && arg0->unk140[i - 56][1] != 0)
+ arg0->unk140[i - 56][0] = 155;
+ }
+}
+
+static void sub_81D2634(struct UnknownStruct_81D1ED4 *arg0)
+{
+ s32 i, r6, varMax;
+
+ if (arg0->unk12C[0].unk2 < arg0->unk12C[4].unk2)
+ {
+ r6 = arg0->unk12C[0].unk2;
+ sub_81D2278(arg0, arg0->unk248, &arg0->unk12C[0], &arg0->unk12C[4], 0, NULL);
+ }
+ else
+ {
+ r6 = arg0->unk12C[4].unk2;
+ sub_81D2278(arg0, arg0->unk248, &arg0->unk12C[4], &arg0->unk12C[0], 1, NULL);
+ }
+
+ sub_81D2278(arg0, arg0->unk248, &arg0->unk12C[4], &arg0->unk12C[3], 0, NULL);
+
+ for (i = 56; i < r6; i++)
+ {
+ arg0->unk140[i + 10][0] = 0;
+ arg0->unk140[i + 10][1] = 0;
+ }
+
+ for (i = arg0->unk12C[0].unk2; i <= arg0->unk350; i++)
+ arg0->unk140[i + 10][1] = 155;
+
+ varMax = max(arg0->unk350, arg0->unk12C[3].unk2 + 1);
+ for (i = varMax; i < 122; i++)
+ {
+ arg0->unk140[i + 10][0] = 0;
+ arg0->unk140[i + 10][1] = 0;
+ }
+
+ for (i = 0; i < 66; i++)
+ {
+ if (arg0->unk248[i][0] >= arg0->unk248[i][1])
+ {
+ arg0->unk248[i][1] = 0;
+ arg0->unk248[i][0] = 0;
+ }
+ }
+}
+
+void sub_81D2754(u8 *arg0, struct UnknownSubStruct_81D1ED4 *arg1)
+{
+ u8 r2, r7;
+ s8 r12;
+ u16 i;
+
+ r2 = sUnknown_08625410[*(arg0++)];
+ arg1->unk0 = 155;
+ arg1->unk2 = 91 - r2;
+
+ r7 = 64;
+ r12 = 0;
+ for (i = 1; i < 5; i++)
+ {
+ r7 += 51;
+ if (--r12 < 0)
+ r12 = 4;
+
+ if (r12 == 2)
+ r7++;
+
+ r2 = sUnknown_08625410[*(arg0++)];
+ arg1[r12].unk0 = 155 + ((r2 * gSineTable[64 + r7]) >> 8);
+ arg1[r12].unk2 = 91 - ((r2 * gSineTable[r7]) >> 8);
+
+ if (r12 < 3 && (r2 != 32 || r12 != 2))
+ arg1[r12].unk0 = 156 + ((r2 * gSineTable[64 + r7]) >> 8);
+ }
+}
+
+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;
+}
+
+static void MoveRelearnerLoadBattleMoveDescription(u32 chosenMove)
+{
+ s32 x;
+ const struct BattleMove *move;
+ u8 buffer[0x20];
+ const u8 *str;
+
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
+ str = gText_MoveRelearnerBattleMoves;
+ x = GetStringCenterAlignXOffset(1, str, 0x80);
+ AddTextPrinterParameterized(0, 1, str, x, 1, TEXT_SPEED_FF, NULL);
+
+ str = gText_MoveRelearnerPP;
+ AddTextPrinterParameterized(0, 1, str, 4, 0x29, TEXT_SPEED_FF, NULL);
+
+ str = gText_MoveRelearnerPower;
+ x = GetStringRightAlignXOffset(1, str, 0x6A);
+ AddTextPrinterParameterized(0, 1, str, x, 0x19, TEXT_SPEED_FF, NULL);
+
+ str = gText_MoveRelearnerAccuracy;
+ x = GetStringRightAlignXOffset(1, str, 0x6A);
+ AddTextPrinterParameterized(0, 1, str, x, 0x29, TEXT_SPEED_FF, NULL);
+ if (chosenMove == LIST_CANCEL)
+ {
+ CopyWindowToVram(0, 2);
+ return;
+ }
+ move = &gBattleMoves[chosenMove];
+ str = gTypeNames[move->type];
+ AddTextPrinterParameterized(0, 1, str, 4, 0x19, TEXT_SPEED_FF, NULL);
+
+ x = 4 + GetStringWidth(1, gText_MoveRelearnerPP, 0);
+ ConvertIntToDecimalStringN(buffer, move->pp, 0, 2);
+ AddTextPrinterParameterized(0, 1, buffer, x, 0x29, TEXT_SPEED_FF, NULL);
+
+ if (move->power < 2)
+ {
+ str = gText_ThreeDashes;
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(buffer, move->power, 0, 3);
+ str = buffer;
+ }
+ AddTextPrinterParameterized(0, 1, str, 0x6A, 0x19, TEXT_SPEED_FF, NULL);
+
+ if (move->accuracy == 0)
+ {
+ str = gText_ThreeDashes;
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(buffer, move->accuracy, 0, 3);
+ str = buffer;
+ }
+ AddTextPrinterParameterized(0, 1, str, 0x6A, 0x29, TEXT_SPEED_FF, NULL);
+
+ str = gMoveDescriptionPointers[chosenMove - 1];
+ AddTextPrinterParameterized(0, 7, str, 0, 0x41, 0, NULL);
+}
+
+static void MoveRelearnerMenuLoadContestMoveDescription(u32 chosenMove)
+{
+ s32 x;
+ const u8 *str;
+ const struct ContestMove *move;
+
+ MoveRelearnerShowHideHearts(chosenMove);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
+ str = gText_MoveRelearnerContestMovesTitle;
+ x = GetStringCenterAlignXOffset(1, str, 0x80);
+ AddTextPrinterParameterized(1, 1, str, x, 1, TEXT_SPEED_FF, NULL);
+
+ str = gText_MoveRelearnerAppeal;
+ x = GetStringRightAlignXOffset(1, str, 0x5C);
+ AddTextPrinterParameterized(1, 1, str, x, 0x19, TEXT_SPEED_FF, NULL);
+
+ str = gText_MoveRelearnerJam;
+ x = GetStringRightAlignXOffset(1, str, 0x5C);
+ AddTextPrinterParameterized(1, 1, str, x, 0x29, TEXT_SPEED_FF, NULL);
+
+ if (chosenMove == MENU_NOTHING_CHOSEN)
+ {
+ CopyWindowToVram(1, 2);
+ return;
+ }
+
+ move = &gContestMoves[chosenMove];
+ str = gContestMoveTypeTextPointers[move->contestCategory];
+ AddTextPrinterParameterized(1, 1, str, 4, 0x19, TEXT_SPEED_FF, NULL);
+
+ str = gContestEffectDescriptionPointers[move->effect];
+ AddTextPrinterParameterized(1, 7, str, 0, 0x41, TEXT_SPEED_FF, NULL);
+
+ CopyWindowToVram(1, 2);
+}
+
+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);
+}
+
+s32 GetBoxOrPartyMonData(u16 boxId, u16 monId, s32 request, u8 *dst)
+{
+ s32 ret;
+
+ if (boxId == TOTAL_BOXES_COUNT) // Party mon.
+ {
+ if (request == MON_DATA_NICKNAME || request == MON_DATA_OT_NAME)
+ ret = GetMonData(&gPlayerParty[monId], request, dst);
+ else
+ ret = GetMonData(&gPlayerParty[monId], request);
+ }
+ else
+ {
+ if (request == MON_DATA_NICKNAME || request == MON_DATA_OT_NAME)
+ ret = GetAndCopyBoxMonDataAt(boxId, monId, request, dst);
+ else
+ ret = GetBoxMonDataAt(boxId, monId, request);
+ }
+
+ return ret;
+}
+
+static u8 *sub_81D2CD0(u8 *dst, u16 boxId, u16 monId)
+{
+ u16 species, level, gender;
+ struct BoxPokemon *boxMon;
+ u8 *str;
+
+ *(dst++) = EXT_CTRL_CODE_BEGIN;
+ *(dst++) = 4;
+ *(dst++) = 8;
+ *(dst++) = 0;
+ *(dst++) = 9;
+ if (GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_EGG, NULL))
+ {
+ return StringCopyPadded(dst, gText_EggNickname, 0, 12);
+ }
+ else
+ {
+ GetBoxOrPartyMonData(boxId, monId, MON_DATA_NICKNAME, dst);
+ StringGetEnd10(dst);
+ species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL);
+ if (boxId == TOTAL_BOXES_COUNT) // Party mon.
+ {
+ level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
+ gender = GetMonGender(&gPlayerParty[monId]);
+ }
+ else
+ {
+ // Needed to match, feel free to remove.
+ boxId++;boxId--;
+ monId++;monId--;
+
+ boxMon = GetBoxedMonPtr(boxId, monId);
+ gender = GetBoxMonGender(boxMon);
+ level = GetLevelFromBoxMonExp(boxMon);
+ }
+
+ if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && !StringCompare(dst, gSpeciesNames[species]))
+ gender = MON_GENDERLESS;
+
+ for (str = dst; *str != EOS; str++)
+ ;
+
+ *(str++) = EXT_CTRL_CODE_BEGIN;
+ *(str++) = 0x12;
+ *(str++) = 0x3C;
+
+ switch (gender)
+ {
+ default:
+ *(str++) = CHAR_SPACE;
+ break;
+ case MON_MALE:
+ *(str++) = EXT_CTRL_CODE_BEGIN;
+ *(str++) = EXT_CTRL_CODE_COLOR;
+ *(str++) = 4;
+ *(str++) = EXT_CTRL_CODE_BEGIN;
+ *(str++) = 3;
+ *(str++) = 5;
+ *(str++) = CHAR_MALE;
+ break;
+ case MON_FEMALE:
+ *(str++) = EXT_CTRL_CODE_BEGIN;
+ *(str++) = EXT_CTRL_CODE_COLOR;
+ *(str++) = 6;
+ *(str++) = EXT_CTRL_CODE_BEGIN;
+ *(str++) = 3;
+ *(str++) = 7;
+ *(str++) = CHAR_FEMALE;
+ break;
+ }
+
+ *(str++) = EXT_CTRL_CODE_BEGIN;
+ *(str++) = 4;
+ *(str++) = 8;
+ *(str++) = 0;
+ *(str++) = 9;
+ *(str++) = CHAR_SLASH;
+ *(str++) = CHAR_SPECIAL_F9;
+ *(str++) = 5;
+ str = ConvertIntToDecimalStringN(str, level, STR_CONV_MODE_LEFT_ALIGN, 3);
+ *(str++) = CHAR_SPACE;
+ *str = EOS;
+
+ return str;
+ }
+}
+
+static u8 *sub_81D2E7C(u8 *dst, const u8 *src, s16 n)
+{
+ while (*src != EOS)
+ {
+ *(dst++) = *(src++);
+ n--;
+ }
+ while (n-- > 0)
+ *(dst++) = CHAR_SPACE;
+
+ *dst = EOS;
+ return dst;
+}
+
+void sub_81D2ED4(u8 *dst, u8 *nameDst, u16 boxId, u16 monId, u16 arg5, u16 arg6, bool8 arg7)
+{
+ u16 i;
+
+ if (!arg7)
+ arg6--;
+
+ if (arg5 != arg6)
+ {
+ sub_81D2CD0(nameDst, boxId, monId);
+ dst[0] = EXT_CTRL_CODE_BEGIN;
+ dst[1] = 4;
+ dst[2] = 8;
+ dst[3] = 0;
+ dst[4] = 9;
+ if (boxId == TOTAL_BOXES_COUNT) // Party mon.
+ {
+ sub_81D2E7C(dst + 5, gText_InParty, 8);
+ }
+ else
+ {
+ boxId++;boxId--; // Again...Someone fix this maybe?
+ sub_81D2E7C(dst + 5, GetBoxNamePtr(boxId), 8);
+ }
+ }
+ else
+ {
+ for (i = 0; i < 12; i++)
+ nameDst[i] = CHAR_SPACE;
+ nameDst[i] = EOS;
+ for (i = 0; i < 8; i++)
+ dst[i] = CHAR_SPACE;
+ dst[i] = EOS;
+ }
+}
+
+void sub_81D2F78(struct UnknownStruct_81D1ED4 *arg0, u8 *sheen, u16 boxId, u16 monId, u16 arg5, u16 id, u16 arg7, bool8 arg8)
+{
+ u16 i;
+
+ if (!arg8)
+ arg7--;
+
+ if (arg5 != arg7)
+ {
+ arg0->unk0[id][0] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_COOL, NULL);
+ arg0->unk0[id][1] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_TOUGH, NULL);
+ arg0->unk0[id][2] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SMART, NULL);
+ arg0->unk0[id][3] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_CUTE, NULL);
+ arg0->unk0[id][4] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_BEAUTY, NULL);
+
+ sheen[id] = (GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) != 0xFF)
+ ? GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) / 29u
+ : 9;
+
+ sub_81D2754(arg0->unk0[id], arg0->unk14[id]);
+ }
+ else
+ {
+ for (i = 0; i < 5; i++)
+ {
+ arg0->unk0[id][i] = 0;
+ arg0->unk14[id][i].unk0 = 155;
+ arg0->unk14[id][i].unk2 = 91;
+ }
+ }
+}
+
+void sub_81D3094(void *tilesDst, void *palDst, u16 boxId, u16 monId, u16 arg5, u16 arg6, bool8 arg7)
+{
+ if (!arg7)
+ arg6--;
+
+ if (arg5 != arg6)
+ {
+ u16 species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES2, NULL);
+ u32 trainerId = GetBoxOrPartyMonData(boxId, monId, MON_DATA_OT_ID, NULL);
+ u32 personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL);
+
+ LoadSpecialPokePic(&gMonFrontPicTable[species], tilesDst, species, personality, TRUE);
+ LZ77UnCompWram(GetFrontSpritePalFromSpeciesAndPersonality(species, trainerId, personality), palDst);
+ }
+}
+
+bool8 sub_81D312C(s16 *var)
+{
+ *var += 24;
+ if (*var > 0)
+ *var = 0;
+
+ return (*var != 0);
+}
+
+bool8 sub_81D3150(s16 *var)
+{
+ *var -= 24;
+ if (*var < -80)
+ *var = -80;
+
+ return (*var != -80);
+}
+
+bool8 sub_81D3178(struct UnknownStruct_81D1ED4 *arg0, s16 *arg1)
+{
+ bool8 var1 = sub_81D2074(arg0);
+ bool8 var2 = sub_81D312C(arg1);
+
+ return ((var1 != 0) || (var2 != 0));
+}
+
+bool8 sub_81D31A4(struct UnknownStruct_81D1ED4 *arg0, s16 *arg1)
+{
+ bool8 var1 = sub_81D2074(arg0);
+ bool8 var2 = sub_81D3150(arg1);
+
+ return ((var1 != 0) || (var2 != 0));
+}
+
+static const u32 gUnknown_08625560[] = INCBIN_U32("graphics/pokenav/pokeball.4bpp");
+static const u32 gUnknown_08625660[] = INCBIN_U32("graphics/pokenav/pokeball_placeholder.4bpp");
+static const u16 gUnknown_08625680[] = INCBIN_U16("graphics/pokenav/sparkle.gbapal");
+static const u32 gUnknown_086256A0[] = INCBIN_U32("graphics/pokenav/sparkle.4bpp");
+
+static const struct OamData sOamData_8625A20 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData sOamData_8625A28 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_8625A30[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8625A38[] =
+{
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_8625A40[] =
+{
+ sSpriteAnim_8625A30,
+ sSpriteAnim_8625A38
+};
+
+void sub_81D31D0(struct SpriteSheet *sheet, struct SpriteTemplate *template, struct SpritePalette *pal)
+{
+ struct SpriteSheet dataSheet = {NULL, 0x800, 100};
+
+ struct SpriteTemplate dataTemplate =
+ {
+ .tileTag = 100,
+ .paletteTag = 100,
+ .oam = &sOamData_8625A20,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ struct SpritePalette dataPal = {NULL, 100};
+
+ *sheet = dataSheet;
+ *template = dataTemplate;
+ *pal = dataPal;
+}
+
+void sub_81D321C(struct SpriteSheet *sheets, struct SpriteTemplate * template, struct SpritePalette *pals)
+{
+ u8 i;
+
+ struct SpriteSheet dataSheets[] =
+ {
+ {gUnknown_08625560, 0x100, 101},
+ {gUnknown_08625660, 0x20, 103},
+ {gPokenavConditionCancel_Gfx, 0x100, 102},
+ {},
+ };
+
+ struct SpritePalette dataPals[] =
+ {
+ {gPokenavConditionCancel_Pal, 101},
+ {gPokenavConditionCancel_Pal + 16, 102},
+ {},
+ };
+
+ struct SpriteTemplate dataTemplate =
+ {
+ .tileTag = 101,
+ .paletteTag = 101,
+ .oam = &sOamData_8625A28,
+ .anims = sSpriteAnimTable_8625A40,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ for (i = 0; i < ARRAY_COUNT(dataSheets); i++)
+ *(sheets++) = dataSheets[i];
+
+ *template = dataTemplate;
+
+ for (i = 0; i < ARRAY_COUNT(dataPals); i++)
+ *(pals++) = dataPals[i];
+}
+
+void sub_81D32B0(struct SpriteSheet *sheet, struct SpritePalette *pal)
+{
+ struct SpriteSheet dataSheet = {gUnknown_086256A0, 0x380, 104};
+ struct SpritePalette dataPal = {gUnknown_08625680, 104};
+
+ *sheet = dataSheet;
+ *pal = dataPal;
+}
+
+static void sub_81D32D4(struct Sprite *sprite)
+{
+ if (++sprite->data[1] > 60)
+ {
+ sprite->data[1] = 0;
+ sub_81D3408(sprite);
+ }
+}
+
+static void sub_81D32F4(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ sprite->data[1] = 0;
+ sprite->callback = sub_81D32D4;
+ }
+}
+
+// Todo: Move these variables to C.
+extern const s16 gUnknown_08625B2C[][2];
+extern const struct SpriteTemplate gUnknown_08625B14;
+
+void sub_81D3314(struct Sprite *sprite)
+{
+ struct Sprite *sprite2 = &gSprites[sprite->data[4]];
+
+ if (sprite2 != NULL)
+ {
+ sprite->pos1.x = sprite2->pos1.x + sprite2->pos2.x + gUnknown_08625B2C[sprite->data[0]][0];
+ sprite->pos1.y = sprite2->pos1.y + sprite2->pos2.y + gUnknown_08625B2C[sprite->data[0]][1];
+ }
+ else
+ {
+ sprite->pos1.x = gUnknown_08625B2C[sprite->data[0]][0] + 40;
+ sprite->pos1.y = gUnknown_08625B2C[sprite->data[0]][1] + 104;
+ }
+}
+
+void sub_81D338C(u8 arg0, u8 arg1, struct Sprite **sprites)
+{
+ u16 i;
+
+ for (i = 0; i < 10; i++)
+ {
+ if (sprites[i] != NULL)
+ {
+ sprites[i]->data[0] = i;
+ sprites[i]->data[1] = (i * 16) + 1;
+ sprites[i]->data[2] = arg0;
+ sprites[i]->data[3] = i;
+ if (arg1 == 0 || arg0 != 9)
+ {
+ sprites[i]->callback = sub_81D3564;
+ }
+ else
+ {
+ sub_81D3314(sprites[i]);
+ sub_81D35E8(sprites[i]);
+ sprites[i]->callback = sub_81D32F4;
+ sprites[i]->invisible = FALSE;
+ }
+ }
+ }
+}
+
+static void sub_81D3408(struct Sprite *sprite)
+{
+ u16 i;
+ u8 id = sprite->data[5];
+
+ for (i = 0; i < sprite->data[2] + 1; i++)
+ {
+ gSprites[id].data[1] = (gSprites[id].data[0] * 16) + 1;
+ gSprites[id].callback = sub_81D3564;
+ id = gSprites[id].data[5];
+ }
+}
+
+void sub_81D3464(struct Sprite **sprites)
+{
+ u8 i;
+
+ for (i = 0; i < 10; i++)
+ sprites[i] = NULL;
+}
+
+void sub_81D3480(struct Sprite **sprites, u8 arg1, u8 arg2)
+{
+ u16 i, spriteId, firstSpriteId = 0;
+ u8 count = arg2;
+
+ for (i = 0; i < count + 1; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_08625B14, 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprites[i] = &gSprites[spriteId];
+ sprites[i]->invisible = TRUE;
+ sprites[i]->data[4] = arg1;
+ if (i != 0)
+ sprites[i - 1]->data[5] = spriteId;
+ else
+ firstSpriteId = spriteId;
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ sprites[count]->data[5] = firstSpriteId;
+ sub_81D338C(count, 1, sprites);
+}
+
+void sub_81D3520(struct Sprite **sprites)
+{
+ u16 i;
+
+ for (i = 0; i < 10; i++)
+ {
+ if (sprites[i] != NULL)
+ {
+ DestroySprite(sprites[i]);
+ sprites[i] = NULL;
+ }
+ else
+ {
+ break;
+ }
+ }
+}
+
+void sub_81D354C(struct Sprite **sprites)
+{
+ sub_81D3520(sprites);
+ FreeSpriteTilesByTag(104);
+ FreeSpritePaletteByTag(104);
+}
+
+/*static*/ void sub_81D3564(struct Sprite *sprite)
+{
+ if (sprite->data[1] != 0)
+ {
+ if (--sprite->data[1] != 0)
+ return;
+
+ SeekSpriteAnim(sprite, 0);
+ sprite->invisible = FALSE;
+ }
+
+ sub_81D3314(sprite);
+ if (sprite->animEnded)
+ {
+ sprite->invisible = TRUE;
+ if (sprite->data[3] == sprite->data[2])
+ {
+ if (sprite->data[3] == 9)
+ {
+ sub_81D35E8(sprite);
+ sprite->callback = sub_81D32F4;
+ }
+ else
+ {
+ sprite->callback = sub_81D32D4;
+ }
+ }
+ else
+ {
+ sprite->callback = SpriteCallbackDummy;
+ }
+ }
+}
+
+static void sub_81D35E8(struct Sprite *sprite)
+{
+ u8 i, id = sprite->data[5];
+
+ for (i = 0; i < sprite->data[2] + 1; i++)
+ {
+ SeekSpriteAnim(&gSprites[id], 0);
+ gSprites[id].invisible = FALSE;
+ id = gSprites[id].data[5];
+ }
+}
diff --git a/src/mevent2.c b/src/mevent2.c
new file mode 100755
index 000000000..8a6bd9faa
--- /dev/null
+++ b/src/mevent2.c
@@ -0,0 +1,626 @@
+#include "global.h"
+#include "util.h"
+#include "main.h"
+#include "event_data.h"
+#include "easy_chat.h"
+#include "script.h"
+#include "battle_tower.h"
+#include "mevent_news.h"
+#include "string_util.h"
+#include "new_game.h"
+#include "mevent.h"
+#include "constants/species.h"
+
+static EWRAM_DATA bool32 gUnknown_02022C70 = FALSE;
+
+static void sub_801B180(void);
+static void sub_801B14C(void);
+static bool32 sub_801B114(const struct MEventBuffer_3120_Sub *data);
+static bool32 sub_801B2CC(const struct MEventBuffer_32E0_Sub *data);
+static void sub_801B330(void);
+static void sub_801B368(void);
+static void sub_801B9F8(void);
+static void sub_801BA8C(u32 a0, u32 a1, u32 *a2, int a3);
+
+void sub_801AFD8(void)
+{
+ CpuFill32(0, &gSaveBlock1Ptr->unk_322C, sizeof(gSaveBlock1Ptr->unk_322C));
+ sub_801B180();
+ sub_811F8BC();
+}
+
+struct MEventBuffer_3120_Sub *sub_801B00C(void)
+{
+ return &gSaveBlock1Ptr->unk_322C.buffer_000.data;
+}
+
+struct MEventBuffer_32E0_Sub *sav1_get_mevent_buffer_1(void)
+{
+ return &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+}
+
+struct MEventBuffer_3430_Sub *sav1_get_mevent_buffer_2(void)
+{
+ return &gSaveBlock1Ptr->unk_322C.buffer_310.data;
+}
+
+struct MysteryEventStruct *sub_801B044(void)
+{
+ return &gSaveBlock1Ptr->unk_322C.unk_340;
+}
+
+u16 *sub_801B058(void)
+{
+ return gSaveBlock1Ptr->unk_322C.unk_338;
+}
+
+void sub_801B06C(void)
+{
+ sub_801B14C();
+}
+
+bool32 sub_801B078(const struct MEventBuffer_3120_Sub *src)
+{
+ if (!sub_801B114(src))
+ return FALSE;
+
+ sub_801B14C();
+ gSaveBlock1Ptr->unk_322C.buffer_000.data = *src;
+ gSaveBlock1Ptr->unk_322C.buffer_000.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub));
+ return TRUE;
+}
+
+bool32 sub_801B0CC(void)
+{
+ if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub)) != gSaveBlock1Ptr->unk_322C.buffer_000.crc)
+ return FALSE;
+ if (!sub_801B114(&gSaveBlock1Ptr->unk_322C.buffer_000.data))
+ return FALSE;
+
+ return TRUE;
+}
+
+static bool32 sub_801B114(const struct MEventBuffer_3120_Sub *data)
+{
+ if (data->unk_00 == 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+bool32 sub_801B128(void)
+{
+ const struct MEventBuffer_3120_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_000.data;
+ if (data->unk_02 == 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+static void sub_801B14C(void)
+{
+ CpuFill32(0, sub_801B00C(), sizeof(gSaveBlock1Ptr->unk_322C.buffer_000.data));
+ gSaveBlock1Ptr->unk_322C.buffer_000.crc = 0;
+}
+
+static void sub_801B180(void)
+{
+ CpuFill32(0, sub_801B044(), sizeof(struct MysteryEventStruct));
+ sub_801DBC0();
+}
+
+bool32 sub_801B1A4(const u8 *src)
+{
+ const u8 *r5 = (const u8 *)&gSaveBlock1Ptr->unk_322C.buffer_000.data;
+ u32 i;
+ if (!sub_801B0CC())
+ return FALSE;
+
+ for (i = 0; i < sizeof(struct MEventBuffer_3120_Sub); i++)
+ {
+ if (r5[i] != src[i])
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void sub_801B1E8(void)
+{
+ sub_801B330();
+ sub_801B368();
+ sub_801B9F8();
+ ClearRamScript();
+ sub_809D4D8();
+ sub_809D570();
+ ClearEReaderTrainer(&gSaveBlock2Ptr->frontier.ereaderTrainer);
+}
+
+bool32 sub_801B21C(const struct MEventBuffer_32E0_Sub *data)
+{
+ struct MEventBuffer_3430_Sub *r2;
+ struct MEventBuffer_32E0_Sub *r1;
+ if (!sub_801B2CC(data))
+ return FALSE;
+
+ sub_801B1E8();
+ memcpy(&gSaveBlock1Ptr->unk_322C.buffer_1c0.data, data, sizeof(struct MEventBuffer_32E0_Sub));
+ gSaveBlock1Ptr->unk_322C.buffer_1c0.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub));
+ r2 = &gSaveBlock1Ptr->unk_322C.buffer_310.data;
+ r1 = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ r2->unk_06 = r1->unk_02;
+ return TRUE;
+}
+
+bool32 sub_801B27C(void)
+{
+ if (gSaveBlock1Ptr->unk_322C.buffer_1c0.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)))
+ return FALSE;
+ if (!sub_801B2CC(&gSaveBlock1Ptr->unk_322C.buffer_1c0.data))
+ return FALSE;
+ if (!sub_80991F8())
+ return FALSE;
+
+ return TRUE;
+}
+
+static bool32 sub_801B2CC(const struct MEventBuffer_32E0_Sub *data)
+{
+ if (data->unk_00 == 0)
+ return FALSE;
+ if (data->unk_08_0 > 2)
+ return FALSE;
+ if (!(data->unk_08_6 == 0 || data->unk_08_6 == 1 || data->unk_08_6 == 2))
+ return FALSE;
+ if (data->unk_08_2 > 7)
+ return FALSE;
+ if (data->unk_09 > 7)
+ return FALSE;
+
+ return TRUE;
+}
+
+bool32 sub_801B308(void)
+{
+ const struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ if (data->unk_08_6 == 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+static void sub_801B330(void)
+{
+ CpuFill32(0, &gSaveBlock1Ptr->unk_322C.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub));
+ gSaveBlock1Ptr->unk_322C.buffer_1c0.crc = 0;
+}
+
+static void sub_801B368(void)
+{
+ CpuFill32(0, sav1_get_mevent_buffer_2(), 18 *sizeof(u16));
+ gSaveBlock1Ptr->unk_322C.buffer_310.crc = 0;
+}
+
+u16 sub_801B39C(void)
+{
+ if (sub_801B27C())
+ return gSaveBlock1Ptr->unk_322C.buffer_1c0.data.unk_00;
+
+ return 0;
+}
+
+void sub_801B3C0(struct MEventBuffer_32E0_Sub *buffer)
+{
+ if (buffer->unk_08_6 == 1)
+ buffer->unk_08_6 = 0;
+}
+
+static bool32 sub_801B3D8(u16 a0)
+{
+ if (a0 >= 1000 && a0 < 1020)
+ return TRUE;
+
+ return FALSE;
+}
+
+static const u16 sMysteryGiftFlags[] =
+{
+ FLAG_RECEIVED_AURORA_TICKET,
+ FLAG_RECEIVED_MYSTIC_TICKET,
+ FLAG_RECEIVED_OLD_SEA_MAP,
+ FLAG_UNUSED_MYSTERY_GIFT_0x13D,
+ FLAG_UNUSED_MYSTERY_GIFT_0x13E,
+ FLAG_UNUSED_MYSTERY_GIFT_0x13F,
+ FLAG_UNUSED_MYSTERY_GIFT_0x140,
+ FLAG_UNUSED_MYSTERY_GIFT_0x141,
+ FLAG_UNUSED_MYSTERY_GIFT_0x142,
+ FLAG_UNUSED_MYSTERY_GIFT_0x143,
+ FLAG_UNUSED_MYSTERY_GIFT_0x144,
+ FLAG_UNUSED_MYSTERY_GIFT_0x145,
+ FLAG_UNUSED_MYSTERY_GIFT_0x146,
+ FLAG_UNUSED_MYSTERY_GIFT_0x147,
+ FLAG_UNUSED_MYSTERY_GIFT_0x148,
+ FLAG_UNUSED_MYSTERY_GIFT_0x149,
+ FLAG_UNUSED_MYSTERY_GIFT_0x14A,
+ FLAG_UNUSED_MYSTERY_GIFT_0x14B,
+ FLAG_UNUSED_MYSTERY_GIFT_0x14C,
+ FLAG_UNUSED_MYSTERY_GIFT_0x14D,
+};
+
+bool32 sub_801B3F8(void)
+{
+ u16 value = sub_801B39C();
+ if (!sub_801B3D8(value))
+ return FALSE;
+
+ if (FlagGet(sMysteryGiftFlags[value - 1000]) == TRUE)
+ return FALSE;
+
+ return TRUE;
+}
+
+static int sub_801B438(const struct MEventBuffer_3430_Sub *data, int size)
+{
+ int r3 = 0;
+ int i;
+ for (i = 0; i < size; i++)
+ {
+ if (data->unk_08[1][i] && data->unk_08[0][i])
+ r3++;
+ }
+
+ return r3;
+}
+
+static bool32 sub_801B460(const struct MEventBuffer_3430_Sub *data1, const u16 *data2, int size)
+{
+ int i;
+ for (i = 0; i < size; i++)
+ {
+ if (data1->unk_08[1][i] == data2[1])
+ return TRUE;
+ if (data1->unk_08[0][i] == data2[0])
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool32 sub_801B4A4(const u16 *data)
+{
+ if (data[1] == 0)
+ return FALSE;
+ if (data[0] == 0)
+ return FALSE;
+ if (data[0] >= NUM_SPECIES)
+ return FALSE;
+ return TRUE;
+}
+
+static int sub_801B4CC(void)
+{
+ struct MEventBuffer_32E0_Sub *data;
+ if (!sub_801B27C())
+ return 0;
+
+ data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ if (data->unk_08_0 != 1)
+ return 0;
+
+ return sub_801B438(&gSaveBlock1Ptr->unk_322C.buffer_310.data, data->unk_09);
+}
+
+bool32 sub_801B508(const u16 *data)
+{
+ struct MEventBuffer_32E0_Sub *buffer = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ int size = buffer->unk_09;
+ int i;
+ if (!sub_801B4A4(data))
+ return FALSE;
+
+ if (sub_801B460(&gSaveBlock1Ptr->unk_322C.buffer_310.data, data, size))
+ return FALSE;
+
+ for (i = 0; i < size; i++)
+ {
+ if (gSaveBlock1Ptr->unk_322C.buffer_310.data.unk_08[1][i] == 0 && gSaveBlock1Ptr->unk_322C.buffer_310.data.unk_08[0][i] == 0)
+ {
+ gSaveBlock1Ptr->unk_322C.buffer_310.data.unk_08[1][i] = data[1];
+ gSaveBlock1Ptr->unk_322C.buffer_310.data.unk_08[0][i] = data[0];
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+void sub_801B580(struct MEventStruct_Unk1442CC *data, bool32 a1)
+{
+ int i;
+ CpuFill32(0, data, sizeof(struct MEventStruct_Unk1442CC));
+ data->unk_00 = 0x101;
+ data->unk_04 = 1;
+ data->unk_08 = 1;
+
+ if (a1)
+ {
+ data->unk_0C = 5;
+ data->unk_10 = 0x0201;
+ }
+ else
+ {
+ data->unk_0C = 4;
+ data->unk_10 = 0x0200;
+ }
+
+ if (sub_801B27C())
+ {
+ data->unk_14 = sav1_get_mevent_buffer_1()->unk_00;
+ data->unk_20 = *sav1_get_mevent_buffer_2();
+ data->unk_44 = sav1_get_mevent_buffer_1()->unk_09;
+ }
+ else
+ {
+ data->unk_14 = 0;
+ }
+
+ for (i = 0; i < 4; i++)
+ data->unk_16[i] = gSaveBlock1Ptr->unk_322C.unk_338[i];
+
+ CopyTrainerId(data->unk_4C, gSaveBlock2Ptr->playerTrainerId);
+ StringCopy(data->unk_45, gSaveBlock2Ptr->playerName);
+ for (i = 0; i < 6; i++)
+ data->unk_50[i] = gSaveBlock1Ptr->easyChatProfile[i];
+
+ memcpy(data->unk_5C, RomHeaderGameCode, 4);
+ data->unk_60 = RomHeaderSoftwareVersion;
+}
+
+bool32 sub_801B6A0(const struct MEventStruct_Unk1442CC *data, bool32 a1)
+{
+ if (data->unk_00 != 0x101)
+ return FALSE;
+
+ if (!(data->unk_04 & 1))
+ return FALSE;
+
+ if (!(data->unk_08 & 1))
+ return FALSE;
+
+ if (!a1)
+ {
+ if (!(data->unk_0C & 4))
+ return FALSE;
+
+ if (!(data->unk_10 & 0x380))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+u32 sub_801B6EC(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, void *unused)
+{
+ if (a1->unk_14 == 0)
+ return 0;
+
+ if (*a0 == a1->unk_14)
+ return 1;
+
+ return 2;
+}
+
+u32 sub_801B708(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, void *unused)
+{
+ int r4 = a1->unk_44 - sub_801B438(&a1->unk_20, a1->unk_44);
+ if (r4 == 0)
+ return 1;
+ if (sub_801B460(&a1->unk_20, a0, a1->unk_44))
+ return 3;
+ if (r4 == 1)
+ return 4;
+ return 2;
+}
+
+bool32 sub_801B748(const struct MEventStruct_Unk1442CC *a0, const u16 *a1)
+{
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (a0->unk_16[i] != a1[i])
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static int sub_801B770(const struct MEventStruct_Unk1442CC *a0)
+{
+ return sub_801B438(&a0->unk_20, a0->unk_44);
+}
+
+u16 sub_801B784(const struct MEventStruct_Unk1442CC *a0, u32 command)
+{
+ switch (command)
+ {
+ case 0:
+ return a0->unk_20.unk_00;
+ case 1:
+ return a0->unk_20.unk_02;
+ case 2:
+ return a0->unk_20.unk_04;
+ case 3:
+ return sub_801B770(a0);
+ case 4:
+ return a0->unk_44;
+ default:
+ AGB_ASSERT(0);
+ return 0;
+ }
+}
+
+static void sub_801B7D8(u32 command)
+{
+ struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ if (data->unk_08_0 == 2)
+ {
+ u16 *dest = NULL;
+ switch (command)
+ {
+ case 0:
+ dest = &gSaveBlock1Ptr->unk_322C.buffer_310.data.unk_00;
+ break;
+ case 1:
+ dest = &gSaveBlock1Ptr->unk_322C.buffer_310.data.unk_02;
+ break;
+ case 2:
+ dest = &gSaveBlock1Ptr->unk_322C.buffer_310.data.unk_04;
+ break;
+ case 3:
+ break;
+ case 4:
+ break;
+ }
+
+ if (dest == NULL)
+ AGB_ASSERT(0);
+ else if (++(*dest) > 999)
+ *dest = 999;
+ }
+}
+
+u16 mevent_081445C0(u32 command)
+{
+ switch (command)
+ {
+ case 0:
+ {
+ struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ if (data->unk_08_0 == 2)
+ {
+ struct MEventBuffer_3430_Sub *buffer = &gSaveBlock1Ptr->unk_322C.buffer_310.data;
+ return buffer->unk_00;
+ }
+ break;
+ }
+ case 1:
+ {
+ struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ if (data->unk_08_0 == 2)
+ {
+ struct MEventBuffer_3430_Sub *buffer = &gSaveBlock1Ptr->unk_322C.buffer_310.data;
+ return buffer->unk_02;
+ }
+ break;
+ }
+ case 2:
+ {
+ struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ if (data->unk_08_0 == 2)
+ {
+ struct MEventBuffer_3430_Sub *buffer = &gSaveBlock1Ptr->unk_322C.buffer_310.data;
+ return buffer->unk_04;
+ }
+ break;
+ }
+ case 3:
+ {
+ struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ if (data->unk_08_0 == 1)
+ return sub_801B4CC();
+ break;
+ }
+ case 4:
+ {
+ struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
+ if (data->unk_08_0 == 1)
+ return data->unk_09;
+ break;
+ }
+ }
+
+ AGB_ASSERT(0);
+ return 0;
+}
+
+void sub_801B940(void)
+{
+ gUnknown_02022C70 = FALSE;
+}
+
+bool32 sub_801B94C(u16 a0)
+{
+ gUnknown_02022C70 = FALSE;
+ if (a0 == 0)
+ return FALSE;
+
+ if (!sub_801B27C())
+ return FALSE;
+
+ if (gSaveBlock1Ptr->unk_322C.buffer_1c0.data.unk_00 != a0)
+ return FALSE;
+
+ gUnknown_02022C70 = TRUE;
+ return TRUE;
+}
+
+void sub_801B990(u32 a0, u32 a1)
+{
+ if (gUnknown_02022C70)
+ {
+ switch (a0)
+ {
+ case 2:
+ sub_801BA8C(2, a1, gSaveBlock1Ptr->unk_322C.unk_344[1], 5);
+ break;
+ case 0:
+ sub_801BA8C(0, a1, gSaveBlock1Ptr->unk_322C.unk_344[0], 5);
+ break;
+ case 1:
+ sub_801BA8C(1, a1, gSaveBlock1Ptr->unk_322C.unk_344[0], 5);
+ break;
+ default:
+ AGB_ASSERT(0);
+ }
+ }
+}
+
+static void sub_801B9F8(void)
+{
+ CpuFill32(0, gSaveBlock1Ptr->unk_322C.unk_344, sizeof(gSaveBlock1Ptr->unk_322C.unk_344));
+}
+
+static bool32 sub_801BA24(u32 a0, u32 *a1, int size)
+{
+ int i;
+ int j;
+
+ for (i = 0; i < size; i++)
+ {
+ if (a1[i] == a0)
+ break;
+ }
+
+ if (i == size)
+ {
+ for (j = size - 1; j > 0; j--)
+ a1[j] = a1[j - 1];
+
+ a1[0] = a0;
+ return TRUE;
+ }
+ else
+ {
+ for (j = i; j > 0; j--)
+ a1[j] = a1[j - 1];
+
+ a1[0] = a0;
+ return FALSE;
+ }
+}
+
+static void sub_801BA8C(u32 a0, u32 a1, u32 *a2, int a3)
+{
+ if (sub_801BA24(a1, a2, a3))
+ sub_801B7D8(a0);
+}
diff --git a/src/mevent_801BAAC.c b/src/mevent_801BAAC.c
new file mode 100644
index 000000000..b9931a682
--- /dev/null
+++ b/src/mevent_801BAAC.c
@@ -0,0 +1,826 @@
+#include "global.h"
+#include "constants/species.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "decompress.h"
+#include "alloc.h"
+#include "menu.h"
+#include "pokemon_icon.h"
+#include "union_room.h"
+#include "list_menu.h"
+#include "text_window.h"
+#include "string_util.h"
+#include "link_rfu.h"
+#include "mevent.h"
+#include "mystery_gift.h"
+
+struct UnkStruct_8467FB8
+{
+ u8 textPal1:4;
+ u8 textPal2:4;
+ u8 textPal3:4;
+ u8 textPal4:4;
+ const u32 * tiles;
+ const u32 * map;
+ const u16 * pal;
+};
+
+struct UnkStruct_203F3C8_02DC
+{
+ u8 unk_00;
+ u8 unk_01[41];
+ u8 unk_42[4];
+};
+
+struct UnkStruct_203F3C8
+{
+ /*0000*/ struct MEventBuffer_32E0_Sub unk_0000;
+ /*014c*/ struct MEventBuffer_3430_Sub unk_014C;
+ /*0170*/ const struct UnkStruct_8467FB8 * unk_0170;
+ /*0174*/ u8 unk_0174;
+ /*0175*/ u8 unk_0175;
+ /*0176*/ u16 unk_0176[3];
+ /*017C*/ u8 unk_017C;
+ /*017D*/ u8 unk_017D[7][2];
+ /*018B*/ u8 unk_018B[41];
+ /*01B4*/ u8 unk_01B4[41];
+ /*01DD*/ u8 unk_01DD[7];
+ /*01E4*/ u8 unk_01E4[4][41];
+ /*0288*/ u8 unk_0288[41];
+ /*02B1*/ u8 unk_02B1[41];
+ /*02DC*/ struct UnkStruct_203F3C8_02DC unk_02DC[8];
+ /*045C*/ u8 buffer_045C[0x1000];
+};
+
+EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_02022C74 = NULL;
+
+void sub_801BEF8(void);
+void sub_801C178(u8 whichWindow);
+void sub_801C4C0(void);
+void sub_801C61C(void);
+
+extern const struct OamData gUnknown_08524934;
+
+const u8 gUnknown_082F0E10[][3] = {
+ {0, 2, 3},
+ {0, 1, 2}
+};
+const u8 ALIGNED(4) gUnknown_082F0E18[3] = {7, 4, 7};
+const struct WindowTemplate gUnknown_082F0E1C[] = {
+ {
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 25,
+ .height = 4,
+ .paletteNum = 2,
+ .baseBlock = 0x029c
+ }, {
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 6,
+ .width = 28,
+ .height = 8,
+ .paletteNum = 2,
+ .baseBlock = 0x01bc
+ }, {
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 14,
+ .width = 28,
+ .height = 5,
+ .paletteNum = 2,
+ .baseBlock = 0x0130
+ }
+};
+
+const u16 gWonderCardBgPal1[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_1.gbapal");
+const u16 gWonderCardBgPal2[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_2.gbapal");
+const u16 gWonderCardBgPal3[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_3.gbapal");
+const u16 gWonderCardBgPal4[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_4.gbapal");
+const u16 gWonderCardBgPal5[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_5.gbapal");
+const u16 gWonderCardBgPal6[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_6.gbapal");
+const u16 gWonderCardBgPal7[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_7.gbapal");
+const u16 gWonderCardBgPal8[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_8.gbapal");
+const u32 gWonderCardBgGfx1[] = INCBIN_U32("graphics/wonder_transfers/wonder_card_1.4bpp.lz");
+const u32 gWonderCardBgTilemap1[] = INCBIN_U32("graphics/wonder_transfers/wonder_card_1.bin.lz");
+const u32 gWonderCardBgGfx2[] = INCBIN_U32("graphics/wonder_transfers/wonder_card_2.4bpp.lz");
+const u32 gWonderCardBgTilemap2[] = INCBIN_U32("graphics/wonder_transfers/wonder_card_2.bin.lz");
+const u32 gWonderCardBgGfx3[] = INCBIN_U32("graphics/wonder_transfers/wonder_card_3.4bpp.lz");
+const u32 gWonderCardBgTilemap3[] = INCBIN_U32("graphics/wonder_transfers/wonder_card_3.bin.lz");
+const u32 gWonderCardBgGfx7[] = INCBIN_U32("graphics/wonder_transfers/wonder_card_7.4bpp.lz");
+const u32 gWonderCardBgTilemap7[] = INCBIN_U32("graphics/wonder_transfers/wonder_card_7.bin.lz");
+const u32 gWonderCardBgGfx8[] = INCBIN_U32("graphics/wonder_transfers/wonder_card_8.4bpp.lz");
+const u32 gWonderCardBgTilemap8[] = INCBIN_U32("graphics/wonder_transfers/wonder_card_8.bin.lz");
+const u16 gWonderCardShadowPal1[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_shadow_1.gbapal");
+const u16 gWonderCardShadowPal2[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_shadow_2.gbapal");
+const u16 gWonderCardShadowPal3[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_shadow_3.gbapal");
+const u16 gWonderCardShadowPal4[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_shadow_4.gbapal");
+const u16 gWonderCardShadowPal5[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_shadow_5.gbapal");
+const u16 gWonderCardShadowPal6[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_shadow_6.gbapal");
+const u16 gWonderCardShadowPal7[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_shadow_7.gbapal");
+const u16 gWonderCardShadowPal8[] = INCBIN_U16("graphics/wonder_transfers/wonder_card_shadow_8.gbapal");
+const u32 gWonderCardShadowGfx[] = INCBIN_U32("graphics/wonder_transfers/wonder_card_shadow.4bpp.lz");
+
+const struct CompressedSpriteSheet gUnknown_082F1D00 = {
+ gWonderCardShadowGfx, 0x100, 0x8000
+};
+const struct SpritePalette gUnknown_082F1D08[] = {
+ {gWonderCardShadowPal1, 0x8000},
+ {gWonderCardShadowPal2, 0x8000},
+ {gWonderCardShadowPal3, 0x8000},
+ {gWonderCardShadowPal4, 0x8000},
+ {gWonderCardShadowPal5, 0x8000},
+ {gWonderCardShadowPal6, 0x8000},
+ {gWonderCardShadowPal7, 0x8000},
+ {gWonderCardShadowPal8, 0x8000}
+};
+const struct SpriteTemplate gUnknown_082F1D48 = {
+ 0x8000, 0x8000, &gUnknown_08524934, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+const struct UnkStruct_8467FB8 gUnknown_082F1D60[8] = {
+ {1, 0, 0, 0, gWonderCardBgGfx1, gWonderCardBgTilemap1, gWonderCardBgPal1},
+ {1, 0, 0, 1, gWonderCardBgGfx2, gWonderCardBgTilemap2, gWonderCardBgPal2},
+ {1, 0, 0, 2, gWonderCardBgGfx3, gWonderCardBgTilemap3, gWonderCardBgPal3},
+ {1, 0, 0, 3, gWonderCardBgGfx3, gWonderCardBgTilemap3, gWonderCardBgPal4},
+ {1, 0, 0, 4, gWonderCardBgGfx3, gWonderCardBgTilemap3, gWonderCardBgPal5},
+ {1, 0, 0, 5, gWonderCardBgGfx3, gWonderCardBgTilemap3, gWonderCardBgPal6},
+ {1, 0, 0, 6, gWonderCardBgGfx7, gWonderCardBgTilemap7, gWonderCardBgPal7},
+ {1, 0, 0, 7, gWonderCardBgGfx8, gWonderCardBgTilemap8, gWonderCardBgPal8}
+};
+
+bool32 sub_801BAAC(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6)
+{
+ if (r5 == NULL || r6 == NULL)
+ return FALSE;
+ gUnknown_02022C74 = AllocZeroed(sizeof(struct UnkStruct_203F3C8));
+ if (gUnknown_02022C74 == NULL)
+ return FALSE;
+ gUnknown_02022C74->unk_0000 = *r5;
+ gUnknown_02022C74->unk_014C = *r6;
+ if (gUnknown_02022C74->unk_0000.unk_08_2 >= ARRAY_COUNT(gUnknown_082F1D60))
+ gUnknown_02022C74->unk_0000.unk_08_2 = 0;
+ if (gUnknown_02022C74->unk_0000.unk_08_0 >= ARRAY_COUNT(gUnknown_082F0E18))
+ gUnknown_02022C74->unk_0000.unk_08_0 = 0;
+ if (gUnknown_02022C74->unk_0000.unk_09 > ARRAY_COUNT(gUnknown_02022C74->unk_017D))
+ gUnknown_02022C74->unk_0000.unk_09 = 0;
+ gUnknown_02022C74->unk_0170 = &gUnknown_082F1D60[gUnknown_02022C74->unk_0000.unk_08_2];
+ return TRUE;
+}
+
+void sub_801BB48(void)
+{
+ if (gUnknown_02022C74 != NULL)
+ {
+ *gUnknown_02022C74 = (struct UnkStruct_203F3C8){};
+ Free(gUnknown_02022C74);
+ gUnknown_02022C74 = NULL;
+ }
+}
+
+s32 sub_801BB74(void)
+{
+ if (gUnknown_02022C74 == NULL)
+ return -1;
+ switch(gUnknown_02022C74->unk_0174)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return 0;
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ decompress_and_copy_tile_data_to_vram(2, gUnknown_02022C74->unk_0170->tiles, 0, 0x008, 0);
+ gUnknown_02022C74->unk_0176[0] = AddWindow(&gUnknown_082F0E1C[0]);
+ gUnknown_02022C74->unk_0176[1] = AddWindow(&gUnknown_082F0E1C[1]);
+ gUnknown_02022C74->unk_0176[2] = AddWindow(&gUnknown_082F0E1C[2]);
+ break;
+ case 3:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 0;
+ LoadPalette(stdpal_get(1), 0x20, 0x20);
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ LoadPalette(gUnknown_02022C74->unk_0170->pal, 0x10, 0x20);
+ LZ77UnCompWram(gUnknown_02022C74->unk_0170->map, gUnknown_02022C74->buffer_045C);
+ CopyRectToBgTilemapBufferRect(2, gUnknown_02022C74->buffer_045C, 0, 0, 30, 20, 0, 0, 30, 20, 1, 0x008, 0);
+ CopyBgTilemapBufferToVram(2);
+ break;
+ case 4:
+ sub_801BEF8();
+ break;
+ case 5:
+ sub_801C178(0);
+ sub_801C178(1);
+ sub_801C178(2);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 6:
+ LoadMonIconPalettes();
+ break;
+ case 7:
+ ShowBg(1);
+ ShowBg(2);
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ sub_801C4C0();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ UpdatePaletteFade();
+ break;
+ default:
+ if (UpdatePaletteFade())
+ return 0;
+ gUnknown_02022C74->unk_0174 = 0;
+ return 1;
+ }
+ ++gUnknown_02022C74->unk_0174;
+ return 0;
+}
+
+s32 sub_801BDA4(bool32 flag)
+{
+ if (gUnknown_02022C74 == NULL)
+ return -1;
+ switch (gUnknown_02022C74->unk_0174)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return 0;
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ break;
+ case 3:
+ HideBg(1);
+ HideBg(2);
+ RemoveWindow(gUnknown_02022C74->unk_0176[2]);
+ RemoveWindow(gUnknown_02022C74->unk_0176[1]);
+ RemoveWindow(gUnknown_02022C74->unk_0176[0]);
+ break;
+ case 4:
+ sub_801C61C();
+ FreeMonIconPalettes();
+ break;
+ case 5:
+ sub_80186EC(gUnknown_02022C60, flag);
+ CopyBgTilemapBufferToVram(0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ break;
+ default:
+ if (UpdatePaletteFade())
+ return 0;
+ gUnknown_02022C74->unk_0174 = 0;
+ return 1;
+ }
+ ++gUnknown_02022C74->unk_0174;
+ return 0;
+}
+
+void sub_801BEF8(void)
+{
+ u16 i = 0;
+ u16 r6;
+ u16 sp0[3] = {0, 0, 0};
+
+ memcpy(gUnknown_02022C74->unk_018B, gUnknown_02022C74->unk_0000.unk_0A, 40);
+ gUnknown_02022C74->unk_018B[40] = EOS;
+ memcpy(gUnknown_02022C74->unk_01B4, gUnknown_02022C74->unk_0000.unk_32, 40);
+ gUnknown_02022C74->unk_01B4[40] = EOS;
+ if (gUnknown_02022C74->unk_0000.unk_04 > 999999)
+ gUnknown_02022C74->unk_0000.unk_04 = 999999;
+ ConvertIntToDecimalStringN(gUnknown_02022C74->unk_01DD, gUnknown_02022C74->unk_0000.unk_04, STR_CONV_MODE_LEFT_ALIGN, 6);
+ for (i = 0; i < 4; i++)
+ {
+ memcpy(gUnknown_02022C74->unk_01E4[i], gUnknown_02022C74->unk_0000.unk_5A[i], 40);
+ gUnknown_02022C74->unk_01E4[i][40] = EOS;
+ }
+ memcpy(gUnknown_02022C74->unk_0288, gUnknown_02022C74->unk_0000.unk_FA, 40);
+ gUnknown_02022C74->unk_0288[40] = EOS;
+ switch (gUnknown_02022C74->unk_0000.unk_08_0)
+ {
+ case 0:
+ memcpy(gUnknown_02022C74->unk_02B1, gUnknown_02022C74->unk_0000.unk_122, 40);
+ gUnknown_02022C74->unk_02B1[40] = EOS;
+ break;
+ case 1:
+ gUnknown_02022C74->unk_02B1[00] = EOS;
+ break;
+ case 2:
+ gUnknown_02022C74->unk_02B1[00] = EOS;
+ sp0[0] = gUnknown_02022C74->unk_014C.unk_00 < 999 ? gUnknown_02022C74->unk_014C.unk_00 : 999;
+ sp0[1] = gUnknown_02022C74->unk_014C.unk_02 < 999 ? gUnknown_02022C74->unk_014C.unk_02 : 999;
+ sp0[2] = gUnknown_02022C74->unk_014C.unk_04 < 999 ? gUnknown_02022C74->unk_014C.unk_04 : 999;
+ for (i = 0; i < 8; i++)
+ {
+ memset(gUnknown_02022C74->unk_02DC[i].unk_42, EOS, 4);
+ memset(gUnknown_02022C74->unk_02DC[i].unk_01, EOS, 41);
+ }
+ for (i = 0, r6 = 0; i < 40; i++)
+ {
+ if (gUnknown_02022C74->unk_0000.unk_122[i] != 0xF7)
+ {
+ gUnknown_02022C74->unk_02DC[gUnknown_02022C74->unk_0175].unk_01[r6] = gUnknown_02022C74->unk_0000.unk_122[i];
+ r6++;
+ }
+ else
+ {
+ u8 r3 = gUnknown_02022C74->unk_0000.unk_122[i + 1];
+ if (r3 > 2)
+ {
+ i += 2;
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(gUnknown_02022C74->unk_02DC[gUnknown_02022C74->unk_0175].unk_42, sp0[r3], STR_CONV_MODE_LEADING_ZEROS, 3);
+ gUnknown_02022C74->unk_02DC[gUnknown_02022C74->unk_0175].unk_00 = gUnknown_02022C74->unk_0000.unk_122[i + 2];
+ gUnknown_02022C74->unk_0175++;
+ if (gUnknown_02022C74->unk_0175 > 7)
+ break;
+ r6 = 0;
+ i += 2;
+ }
+ }
+ }
+ }
+}
+
+void sub_801C178(u8 whichWindow)
+{
+ s8 sp0C = 0;
+ s32 windowId = gUnknown_02022C74->unk_0176[whichWindow];
+ PutWindowTilemap(windowId);
+ FillWindowPixelBuffer(windowId, 0);
+ switch (whichWindow)
+ {
+ case 0:
+ {
+ s32 x;
+ AddTextPrinterParameterized3(windowId, 3, 0, 1, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal1], 0, gUnknown_02022C74->unk_018B);
+ x = 160 - GetStringWidth(3, gUnknown_02022C74->unk_01B4, GetFontAttribute(3, 2));
+ if (x < 0)
+ x = 0;
+ AddTextPrinterParameterized3(windowId, 3, x, 17, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal1], 0, gUnknown_02022C74->unk_01B4);
+ if (gUnknown_02022C74->unk_0000.unk_04 != 0)
+ {
+ AddTextPrinterParameterized3(windowId, 1, 166, 17, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal1], 0, gUnknown_02022C74->unk_01DD);
+ }
+ break;
+ }
+ case 1:
+ for (; sp0C < 4; sp0C++)
+ {
+ AddTextPrinterParameterized3(windowId, 3, 0, 16 * sp0C + 2, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal2], 0, gUnknown_02022C74->unk_01E4[sp0C]);
+ }
+ break;
+ case 2:
+ AddTextPrinterParameterized3(windowId, 3, 0, gUnknown_082F0E18[gUnknown_02022C74->unk_0000.unk_08_0], gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal3], 0, gUnknown_02022C74->unk_0288);
+ if (gUnknown_02022C74->unk_0000.unk_08_0 != 2)
+ {
+ AddTextPrinterParameterized3(windowId, 3, 0, 16 + gUnknown_082F0E18[gUnknown_02022C74->unk_0000.unk_08_0], gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal3], 0, gUnknown_02022C74->unk_02B1);
+ }
+ else
+ {
+ s32 x = 0;
+ s32 y = gUnknown_082F0E18[gUnknown_02022C74->unk_0000.unk_08_0] + 16;
+ s32 spacing = GetFontAttribute(3, 2);
+ for (; sp0C < gUnknown_02022C74->unk_0175; sp0C++)
+ {
+ AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal3], 0, gUnknown_02022C74->unk_02DC[sp0C].unk_01);
+ if (gUnknown_02022C74->unk_02DC[sp0C].unk_42[0] != EOS)
+ {
+ x += GetStringWidth(3, gUnknown_02022C74->unk_02DC[sp0C].unk_01, spacing);
+ AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal3], 0, gUnknown_02022C74->unk_02DC[sp0C].unk_42);
+ x += GetStringWidth(3, gUnknown_02022C74->unk_02DC[sp0C].unk_42, spacing) + gUnknown_02022C74->unk_02DC[sp0C].unk_00;
+ }
+ }
+ }
+ break;
+ }
+ CopyWindowToVram(windowId, 3);
+}
+
+void sub_801C4C0(void)
+{
+ u8 r7 = 0;
+ gUnknown_02022C74->unk_017C = 0xFF;
+ if (gUnknown_02022C74->unk_014C.unk_06 != SPECIES_NONE)
+ {
+ gUnknown_02022C74->unk_017C = sub_80D2D78(sub_80D2E84(gUnknown_02022C74->unk_014C.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE);
+ gSprites[gUnknown_02022C74->unk_017C].oam.priority = 2;
+ }
+ if (gUnknown_02022C74->unk_0000.unk_09 != 0 && gUnknown_02022C74->unk_0000.unk_08_0 == 1)
+ {
+ LoadCompressedSpriteSheetUsingHeap(&gUnknown_082F1D00);
+ LoadSpritePalette(&gUnknown_082F1D08[gUnknown_02022C74->unk_0170->textPal4]);
+ for (; r7 < gUnknown_02022C74->unk_0000.unk_09; r7++)
+ {
+ gUnknown_02022C74->unk_017D[r7][0] = 0xFF;
+ gUnknown_02022C74->unk_017D[r7][1] = 0xFF;
+ gUnknown_02022C74->unk_017D[r7][0] = CreateSprite(&gUnknown_082F1D48, 0xd8 - 32 * r7, 0x90, 8);
+ if (gUnknown_02022C74->unk_014C.unk_08[0][r7] != 0)
+ {
+ gUnknown_02022C74->unk_017D[r7][1] = sub_80D2D78(sub_80D2E84(gUnknown_02022C74->unk_014C.unk_08[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0);
+ }
+ }
+ }
+}
+
+void sub_801C61C(void)
+{
+ u8 r6 = 0;
+ if (gUnknown_02022C74->unk_017C != 0xFF)
+ sub_80D2EF8(&gSprites[gUnknown_02022C74->unk_017C]);
+ if (gUnknown_02022C74->unk_0000.unk_09 != 0 && gUnknown_02022C74->unk_0000.unk_08_0 == 1)
+ {
+ for (; r6 < gUnknown_02022C74->unk_0000.unk_09; r6++)
+ {
+ if (gUnknown_02022C74->unk_017D[r6][0] != 0xFF)
+ {
+ DestroySprite(&gSprites[gUnknown_02022C74->unk_017D[r6][0]]);
+ }
+ if (gUnknown_02022C74->unk_017D[r6][1] != 0xFF)
+ {
+ sub_80D2EF8(&gSprites[gUnknown_02022C74->unk_017D[r6][1]]);
+ }
+ }
+ FreeSpriteTilesByTag(0x8000);
+ FreeSpritePaletteByTag(0x8000);
+ }
+}
+
+struct UnkStruct_203F3CC
+{
+ /*0000*/ struct MEventBuffer_3120_Sub unk_0000;
+ /*01bc*/ const struct UnkStruct_8467FB8 * unk_01BC;
+ /*01c0*/ u8 unk_01C0_0:1;
+ u8 unk_01C0_1:7;
+ /*01c1*/ u8 unk_01C1;
+ /*01c2*/ u8 unk_01C2_0:1;
+ u8 unk_01C2_1:7;
+ /*01c3*/ u8 unk_01C3_0:1;
+ u8 unk_01C3_1:7;
+ /*01c4*/ u16 unk_01C4;
+ /*01c6*/ u16 unk_01C6;
+ /*01c8*/ u16 unk_01C8[2];
+ /*01cc*/ u8 filler_01CC[2];
+ /*01ce*/ u8 unk_01CE[41];
+ /*01f7*/ u8 unk_01F7[10][41];
+ /*0394*/ struct ScrollArrowsTemplate unk_0394;
+ /*03a4*/ u8 buffer_03A4[0x1000];
+};
+
+EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_02022C78 = NULL;
+
+void sub_801CDCC(void);
+void sub_801CE7C(void);
+void sub_801CFA4(void);
+
+const u8 gUnknown_082F1DE0[][3] = {
+ {0, 2, 3},
+ {0, 1, 2}
+};
+const struct WindowTemplate gUnknown_082F1DE8[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 0,
+ .width = 28,
+ .height = 3,
+ .paletteNum = 2,
+ .baseBlock = 0x2AC
+ }, {
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 3,
+ .width = 28,
+ .height = 20,
+ .paletteNum = 2,
+ .baseBlock = 0x07C
+ }
+};
+const struct ScrollArrowsTemplate gUnknown_082F1DF8 = {
+ 0x02, 0xe8, 0x18, 0x03, 0xe8, 0x98,
+ 0x0000, 0x0002, 0x1000, 0x1000, 0x0
+};
+const u16 gWonderNewsPal1[] = INCBIN_U16("graphics/wonder_transfers/wonder_news_1.gbapal");
+const u16 gWonderNewsPal7[] = INCBIN_U16("graphics/wonder_transfers/wonder_news_7.gbapal");
+const u16 gWonderNewsPal8[] = INCBIN_U16("graphics/wonder_transfers/wonder_news_8.gbapal");
+const u32 gWonderNewsGfx1[] = INCBIN_U32("graphics/wonder_transfers/wonder_news_1.4bpp.lz");
+const u32 gWonderNewsTilemap1[] = INCBIN_U32("graphics/wonder_transfers/wonder_news_1.bin.lz");
+const u32 gWonderNewsGfx2[] = INCBIN_U32("graphics/wonder_transfers/wonder_news_2.4bpp.lz");
+const u32 gWonderNewsTilemap2[] = INCBIN_U32("graphics/wonder_transfers/wonder_news_2.bin.lz");
+const u32 gWonderNewsGfx3[] = INCBIN_U32("graphics/wonder_transfers/wonder_news_3.4bpp.lz");
+const u32 gWonderNewsTilemap3[] = INCBIN_U32("graphics/wonder_transfers/wonder_news_3.bin.lz");
+const u32 gWonderNewsGfx7[] = INCBIN_U32("graphics/wonder_transfers/wonder_news_7.4bpp.lz");
+const u32 gWonderNewsTilemap7[] = INCBIN_U32("graphics/wonder_transfers/wonder_news_7.bin.lz");
+const u32 gWonderNewsGfx8[] = INCBIN_U32("graphics/wonder_transfers/wonder_news_8.4bpp.lz");
+const u32 gWonderNewsTilemap8[] = INCBIN_U32("graphics/wonder_transfers/wonder_news_8.bin.lz");
+
+const struct UnkStruct_8467FB8 gUnknown_082F24C8[] = {
+ {1, 0, 0, 0, gWonderNewsGfx1, gWonderNewsTilemap1, gWonderNewsPal1},
+ {1, 0, 0, 0, gWonderNewsGfx2, gWonderNewsTilemap2, gWonderCardBgPal2},
+ {1, 0, 0, 0, gWonderNewsGfx3, gWonderNewsTilemap3, gWonderCardBgPal3},
+ {1, 0, 0, 0, gWonderNewsGfx3, gWonderNewsTilemap3, gWonderCardBgPal4},
+ {1, 0, 0, 0, gWonderNewsGfx3, gWonderNewsTilemap3, gWonderCardBgPal5},
+ {1, 0, 0, 0, gWonderNewsGfx3, gWonderNewsTilemap3, gWonderCardBgPal6},
+ {1, 0, 0, 0, gWonderNewsGfx7, gWonderNewsTilemap7, gWonderNewsPal7},
+ {1, 0, 0, 0, gWonderNewsGfx8, gWonderNewsTilemap8, gWonderNewsPal8}
+};
+
+bool32 sub_801C6C8(const struct MEventBuffer_3120_Sub * a0)
+{
+ if (a0 == NULL)
+ return FALSE;
+ gUnknown_02022C78 = AllocZeroed(sizeof(struct UnkStruct_203F3CC));
+ if (gUnknown_02022C78 == NULL)
+ return FALSE;
+ gUnknown_02022C78->unk_0000 = *a0;
+ if (gUnknown_02022C78->unk_0000.unk_03 >= ARRAY_COUNT(gUnknown_082F24C8))
+ gUnknown_02022C78->unk_0000.unk_03 = 0;
+ gUnknown_02022C78->unk_01BC = &gUnknown_082F24C8[gUnknown_02022C78->unk_0000.unk_03];
+ gUnknown_02022C78->unk_01C1 = 0xFF;
+ return TRUE;
+}
+
+void sub_801C72C(void)
+{
+ if (gUnknown_02022C78 != NULL)
+ {
+ *gUnknown_02022C78 = (struct UnkStruct_203F3CC){};
+ Free(gUnknown_02022C78);
+ gUnknown_02022C78 = NULL;
+ }
+}
+
+s32 sub_801C758(void)
+{
+ if (gUnknown_02022C78 == NULL)
+ return -1;
+
+ switch (gUnknown_02022C78->unk_01C0_1)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return 0;
+ ChangeBgY(0, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgY(3, 0, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0x1A98);
+ SetGpuReg(REG_OFFSET_WININ, 0x1F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x1B);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(3);
+ decompress_and_copy_tile_data_to_vram(3, gUnknown_02022C78->unk_01BC->tiles, 0, 8, 0);
+ gUnknown_02022C78->unk_01C8[0] = AddWindow(&gUnknown_082F1DE8[0]);
+ gUnknown_02022C78->unk_01C8[1] = AddWindow(&gUnknown_082F1DE8[1]);
+ break;
+ case 3:
+ if (free_temp_tile_data_buffers_if_possible())
+ return 0;
+ LoadPalette(stdpal_get(1), 0x20, 0x20);
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ LoadPalette(gUnknown_02022C78->unk_01BC->pal, 0x10, 0x20);
+ LZ77UnCompWram(gUnknown_02022C78->unk_01BC->map, gUnknown_02022C78->buffer_03A4);
+ CopyRectToBgTilemapBufferRect(1, gUnknown_02022C78->buffer_03A4, 0, 0, 30, 3, 0, 0, 30, 3, 1, 8, 0);
+ CopyRectToBgTilemapBufferRect(3, gUnknown_02022C78->buffer_03A4, 0, 3, 30, 23, 0, 3, 30, 23, 1, 8, 0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 4:
+ sub_801CDCC();
+ break;
+ case 5:
+ sub_801CE7C();
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(2);
+ break;
+ case 6:
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ gUnknown_02022C78->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_02022C78->unk_0394, &gUnknown_02022C78->unk_01C6);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ UpdatePaletteFade();
+ break;
+ default:
+ if (UpdatePaletteFade())
+ return 0;
+ gUnknown_02022C78->unk_01C0_1 = 0;
+ return 1;
+ }
+
+ ++gUnknown_02022C78->unk_01C0_1;
+ return 0;
+}
+
+s32 sub_801CA50(bool32 flag)
+{
+ if (gUnknown_02022C78 == NULL)
+ return -1;
+ switch (gUnknown_02022C78->unk_01C0_1)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return 0;
+ ChangeBgY(2, 0, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 24);
+ FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 24);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 3:
+ HideBg(1);
+ HideBg(2);
+ RemoveWindow(gUnknown_02022C78->unk_01C8[1]);
+ RemoveWindow(gUnknown_02022C78->unk_01C8[0]);
+ break;
+ case 4:
+ ChangeBgY(2, 0, 0);
+ ChangeBgY(3, 0, 0);
+ if (gUnknown_02022C78->unk_01C1 != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(gUnknown_02022C78->unk_01C1);
+ gUnknown_02022C78->unk_01C1 = 0xFF;
+ }
+ break;
+ case 5:
+ sub_80186EC(gUnknown_02022C60, flag);
+ sub_8018798(3);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(3);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ break;
+ default:
+ if (UpdatePaletteFade())
+ return 0;
+ gUnknown_02022C78->unk_01C0_1 = 0;
+ return 1;
+ }
+ ++gUnknown_02022C78->unk_01C0_1;
+ return 0;
+}
+
+void sub_801CC38(void)
+{
+ if (!gUnknown_02022C78->unk_01C0_0 && gUnknown_02022C78->unk_01C1 != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(gUnknown_02022C78->unk_01C1);
+ gUnknown_02022C78->unk_01C1 = 0xFF;
+ gUnknown_02022C78->unk_01C0_0 = TRUE;
+ }
+}
+
+
+void sub_801CC80(void)
+{
+ if (gUnknown_02022C78->unk_01C0_0)
+ {
+ gUnknown_02022C78->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_02022C78->unk_0394, &gUnknown_02022C78->unk_01C6);
+ gUnknown_02022C78->unk_01C0_0 = FALSE;
+ }
+}
+
+u32 sub_801CCD0(u16 input)
+{
+ if (gUnknown_02022C78->unk_01C2_0)
+ {
+ sub_801CFA4();
+ return 0xFF;
+ }
+ switch (input)
+ {
+ case A_BUTTON:
+ return 0;
+ case B_BUTTON:
+ return 1;
+ case DPAD_UP:
+ if (gUnknown_02022C78->unk_01C6 == 0)
+ return 0xFF;
+ if (gUnknown_02022C78->unk_01C0_0)
+ return 0xFF;
+ gUnknown_02022C78->unk_01C3_0 = FALSE;
+ break;
+ case DPAD_DOWN:
+ if (gUnknown_02022C78->unk_01C6 == gUnknown_02022C78->unk_01C4)
+ return 0xFF;
+ if (gUnknown_02022C78->unk_01C0_0)
+ return 0xFF;
+ gUnknown_02022C78->unk_01C3_0 = TRUE;
+ break;
+ default:
+ return 0xFF;
+ }
+ gUnknown_02022C78->unk_01C2_0 = TRUE;
+ gUnknown_02022C78->unk_01C2_1 = 2;
+ gUnknown_02022C78->unk_01C3_1 = 0;
+ if (gUnknown_02022C78->unk_01C3_0 == FALSE)
+ return 2;
+ else
+ return 3;
+}
+
+void sub_801CDCC(void)
+{
+ u8 i = 0;
+ memcpy(gUnknown_02022C78->unk_01CE, gUnknown_02022C78->unk_0000.unk_04, 40);
+ gUnknown_02022C78->unk_01CE[40] = EOS;
+ for (; i < 10; ++i)
+ {
+ memcpy(gUnknown_02022C78->unk_01F7[i], gUnknown_02022C78->unk_0000.unk_2C[i], 40);
+ gUnknown_02022C78->unk_01F7[i][40] = EOS;
+ if (i > 7 && gUnknown_02022C78->unk_01F7[i][0] != EOS)
+ ++gUnknown_02022C78->unk_01C4;
+ }
+ gUnknown_02022C78->unk_0394 = gUnknown_082F1DF8;
+ gUnknown_02022C78->unk_0394.fullyDownThreshold = gUnknown_02022C78->unk_01C4;
+}
+
+void sub_801CE7C(void)
+{
+ u8 i = 0;
+ s32 x;
+ PutWindowTilemap(gUnknown_02022C78->unk_01C8[0]);
+ PutWindowTilemap(gUnknown_02022C78->unk_01C8[1]);
+ FillWindowPixelBuffer(gUnknown_02022C78->unk_01C8[0], 0);
+ FillWindowPixelBuffer(gUnknown_02022C78->unk_01C8[1], 0);
+ x = (0xe0 - GetStringWidth(3, gUnknown_02022C78->unk_01CE, GetFontAttribute(3, 2))) / 2;
+ if (x < 0)
+ x = 0;
+ AddTextPrinterParameterized3(gUnknown_02022C78->unk_01C8[0], 3, x, 6, gUnknown_082F1DE0[gUnknown_02022C78->unk_01BC->textPal1], 0, gUnknown_02022C78->unk_01CE);
+ for (; i < 10; ++i)
+ {
+ AddTextPrinterParameterized3(gUnknown_02022C78->unk_01C8[1], 3, 0, 16 * i + 2, gUnknown_082F1DE0[gUnknown_02022C78->unk_01BC->textPal2], 0, gUnknown_02022C78->unk_01F7[i]);
+ }
+ CopyWindowToVram(gUnknown_02022C78->unk_01C8[0], 3);
+ CopyWindowToVram(gUnknown_02022C78->unk_01C8[1], 3);
+}
+
+void sub_801CFA4(void)
+{
+ u16 r4 = gUnknown_02022C78->unk_01C2_1;
+ r4 <<= 8;
+ if (gUnknown_02022C78->unk_01C3_0)
+ {
+ ChangeBgY(2, r4, 1);
+ ChangeBgY(3, r4, 1);
+ }
+ else
+ {
+ ChangeBgY(2, r4, 2);
+ ChangeBgY(3, r4, 2);
+ }
+ gUnknown_02022C78->unk_01C3_1 += gUnknown_02022C78->unk_01C2_1;
+ if (gUnknown_02022C78->unk_01C3_1 > 15)
+ {
+ if (gUnknown_02022C78->unk_01C3_0)
+ ++gUnknown_02022C78->unk_01C6;
+ else
+ --gUnknown_02022C78->unk_01C6;
+ gUnknown_02022C78->unk_01C2_0 = FALSE;
+ gUnknown_02022C78->unk_01C3_1 = 0;
+ }
+}
diff --git a/src/mevent_news.c b/src/mevent_news.c
new file mode 100644
index 000000000..f5a061c84
--- /dev/null
+++ b/src/mevent_news.c
@@ -0,0 +1,147 @@
+#include "global.h"
+#include "mevent.h"
+#include "random.h"
+#include "event_data.h"
+#include "mevent_news.h"
+
+static u32 sub_801DCAC(struct MysteryEventStruct *);
+static void sub_801DD10(struct MysteryEventStruct *);
+static u32 sub_801DD44(struct MysteryEventStruct *);
+static void sub_801DCD8(struct MysteryEventStruct *);
+static void sub_801DCCC(struct MysteryEventStruct *);
+
+void sub_801DB68(u32 a0)
+{
+ struct MysteryEventStruct *r5 = sub_801B044();
+
+ r5->unk_0_0 = a0;
+ switch (a0)
+ {
+ case 0:
+ break;
+ case 1:
+ case 2:
+ r5->unk_1 = (Random() % 15) + 16;
+ break;
+ case 3:
+ r5->unk_1 = (Random() % 15) + 1;
+ break;
+ }
+}
+
+void sub_801DBC0(void)
+{
+ struct MysteryEventStruct *r5 = sub_801B044();
+
+ r5->unk_0_0 = 0;
+ r5->unk_0_2 = 0;
+ r5->unk_0_5 = 0;
+ r5->unk_1 = 0;
+ VarSet(VAR_0x402E, 0);
+}
+
+void sub_801DBDC(void)
+{
+ u16 *r4 = GetVarPointer(VAR_0x402E);
+ struct MysteryEventStruct *r2 = sub_801B044();
+ struct MysteryEventStruct r0 = *r2;
+
+ if ((u8)r0.unk_0_5 > 4 && ++(*r4) > 0x1f3)
+ {
+ r2->unk_0_5 = 0;
+ *r4 = 0;
+ }
+}
+
+u16 sub_801DC20(void)
+{
+ u16 *r6 = &gSpecialVar_Result;
+ struct MysteryEventStruct *r4 = sub_801B044();
+ u16 r5;
+
+ if (!IsMysteryEventEnabled() || !sub_801B0CC())
+ return 0;
+
+ r5 = sub_801DD44(r4);
+
+ switch (r5)
+ {
+ case 0:
+ break;
+ case 1:
+ *r6 = sub_801DCAC(r4);
+ break;
+ case 2:
+ *r6 = sub_801DCAC(r4);
+ break;
+ case 3:
+ break;
+ case 4:
+ *r6 = sub_801DCAC(r4);
+ sub_801DCD8(r4);
+ break;
+ case 5:
+ *r6 = sub_801DCAC(r4);
+ sub_801DCCC(r4);
+ break;
+ case 6:
+ break;
+ }
+
+ return r5;
+}
+
+static u32 sub_801DCAC(struct MysteryEventStruct *a0)
+{
+ u32 r4;
+
+ a0->unk_0_0 = 0;
+ r4 = a0->unk_1 + 0x84;
+ a0->unk_1 = 0;
+ sub_801DD10(a0);
+ return r4;
+}
+
+static void sub_801DCCC(struct MysteryEventStruct *a0)
+{
+ a0->unk_0_2 = 0;
+}
+
+static void sub_801DCD8(struct MysteryEventStruct *a0)
+{
+ a0->unk_0_2++;
+ if ((u8)a0->unk_0_2 > 4)
+ a0->unk_0_2 = 4;
+}
+
+static void sub_801DD10(struct MysteryEventStruct *a0)
+{
+ a0->unk_0_5++;
+ if ((u8)a0->unk_0_5 > 5)
+ a0->unk_0_5 = 5;
+}
+
+static u32 sub_801DD44(struct MysteryEventStruct *a0)
+{
+ struct MysteryEventStruct r0;
+ if ((u8)a0->unk_0_5 == 5)
+ return 6;
+
+ r0 = *a0;
+ switch (r0.unk_0_0)
+ {
+ case 0:
+ return 3;
+ case 1:
+ return 1;
+ case 2:
+ return 2;
+ case 3:
+ if ((u8)r0.unk_0_2 < 3)
+ return 4;
+ return 5;
+ default:
+ AGB_ASSERT(0);
+ return 0;
+ }
+}
diff --git a/src/mirage_tower.c b/src/mirage_tower.c
index 4f5834db1..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,
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 4ff8086ea..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,
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_gift.c b/src/mystery_gift.c
new file mode 100644
index 000000000..5e000a249
--- /dev/null
+++ b/src/mystery_gift.c
@@ -0,0 +1,1692 @@
+#include "global.h"
+#include "main.h"
+#include "text.h"
+#include "task.h"
+#include "alloc.h"
+#include "gpu_regs.h"
+#include "scanline_effect.h"
+#include "text_window.h"
+#include "bg.h"
+#include "window.h"
+#include "strings.h"
+#include "text_window.h"
+#include "menu.h"
+#include "palette.h"
+#include "constants/songs.h"
+#include "sound.h"
+#include "mystery_gift.h"
+#include "union_room.h"
+#include "title_screen.h"
+#include "ereader_screen.h"
+#include "international_string_util.h"
+#include "list_menu.h"
+#include "string_util.h"
+#include "mevent.h"
+#include "mevent_801BAAC.h"
+#include "save.h"
+#include "link.h"
+#include "mevent_server_ish.h"
+#include "event_data.h"
+#include "link_rfu.h"
+#include "mevent_news.h"
+#include "mevent_server.h"
+
+void bgid_upload_textbox_1(u8 bgId);
+void task_add_00_mystery_gift(void);
+void task00_mystery_gift(u8 taskId);
+
+EWRAM_DATA u8 gUnknown_02022C58[2] = {};
+
+const u16 gUnkTextboxBorderPal[] = INCBIN_U16("graphics/interface/unk_textbox_border.gbapal");
+const u32 gUnkTextboxBorderGfx[] = INCBIN_U32("graphics/interface/unk_textbox_border.4bpp.lz");
+
+struct MysteryGiftTaskData
+{
+ u16 unk0;
+ u16 unk2;
+ u16 unk4;
+ u16 unk6;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA;
+ u8 unkB;
+ u8 unkC;
+ u8 unkD;
+ u8 unkE;
+ u8 * unk10;
+};
+
+const struct BgTemplate gUnknown_082F0598[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 15,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 14,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 13,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 12,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x000
+ }
+};
+
+const struct WindowTemplate gUnknown_082F05A8[] = {
+ {
+ .bg = 0x00,
+ .tilemapLeft = 0x00,
+ .tilemapTop = 0x00,
+ .width = 0x1e,
+ .height = 0x02,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x0013
+ }, {
+ .bg = 0x00,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x0f,
+ .width = 0x1c,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x004f
+ }, {
+ .bg = 0x00,
+ .tilemapLeft = 0x00,
+ .tilemapTop = 0x0f,
+ .width = 0x1e,
+ .height = 0x05,
+ .paletteNum = 0x0d,
+ .baseBlock = 0x004f
+ }, {
+ 0xFF
+ }
+};
+
+const struct WindowTemplate gUnknown_082F05C8 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x0f,
+ .width = 0x1c,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x00e5
+};
+
+const struct WindowTemplate gUnknown_082F05D0 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x0f,
+ .width = 0x14,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x00e5
+};
+
+const struct WindowTemplate gUnknown_082F05D8 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x0f,
+ .width = 0x13,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x00e5
+};
+
+const struct WindowTemplate gUnknown_082F05E0 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x08,
+ .tilemapTop = 0x06,
+ .width = 0x0e,
+ .height = 0x06,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x0155
+};
+
+const struct WindowTemplate gUnknown_082F05E8 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x17,
+ .tilemapTop = 0x0f,
+ .width = 0x06,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x0155
+};
+
+const struct WindowTemplate gUnknown_082F05F0 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x16,
+ .tilemapTop = 0x0b,
+ .width = 0x07,
+ .height = 0x08,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x0155
+};
+
+const struct WindowTemplate gUnknown_082F05F8 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x16,
+ .tilemapTop = 0x0d,
+ .width = 0x07,
+ .height = 0x06,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x0155
+};
+
+const struct WindowTemplate gUnknown_082F0600 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x16,
+ .tilemapTop = 0x0f,
+ .width = 0x07,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x0155
+};
+
+const struct ListMenuItem gUnknown_082F0608[] = {
+ { gText_WonderCards, 0 },
+ { gText_WonderNews, 1 },
+ { gText_Exit3, -2 }
+};
+
+const struct ListMenuItem gUnknown_082F0620[] = {
+ { gText_WirelessCommunication, 0 },
+ { gText_Friend2, 1 },
+ { gText_Cancel2, -2 }
+};
+
+const struct ListMenuTemplate gUnknown_082F0638 = {
+ .items = NULL,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = 3,
+ .maxShowed = 3,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 0,
+ .fontId = 1,
+ .cursorKind = 0
+};
+
+const struct ListMenuItem gUnknown_082F0650[] = {
+ { gText_Receive, 0 },
+ { gText_Send, 1 },
+ { gText_Toss, 2 },
+ { gText_Cancel2, -2 }
+};
+
+const struct ListMenuItem gUnknown_082F0670[] = {
+ { gText_Receive, 0 },
+ { gText_Toss, 2 },
+ { gText_Cancel2, -2 }
+};
+
+const struct ListMenuItem gUnknown_082F0688[] = {
+ { gText_Receive, 0 },
+ { gText_Send, 1 },
+ { gText_Cancel2, -2 }
+};
+
+const struct ListMenuItem gUnknown_082F06A0[] = {
+ { gText_Receive, 0 },
+ { gText_Cancel2, -2 }
+};
+
+const struct ListMenuTemplate gUnknown_082F06B0 = {
+ .items = gUnknown_082F0650,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = 4,
+ .maxShowed = 4,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 0,
+ .fontId = 1,
+ .cursorKind = 0
+};
+
+const struct ListMenuTemplate gUnknown_082F06C8 = {
+ .items = gUnknown_082F0670,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = 3,
+ .maxShowed = 3,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 0,
+ .fontId = 1,
+ .cursorKind = 0
+};
+
+const struct ListMenuTemplate gUnknown_082F06E0 = {
+ .items = gUnknown_082F0688,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = 3,
+ .maxShowed = 3,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 0,
+ .fontId = 1,
+ .cursorKind = 0
+};
+
+const struct ListMenuTemplate gUnknown_082F06F8 = {
+ .items = gUnknown_082F06A0,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = 2,
+ .maxShowed = 2,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 0,
+ .fontId = 1,
+ .cursorKind = 0
+};
+
+const u8 *const Unref_082F0710[] = {
+ gText_VarietyOfEventsImportedWireless,
+ gText_WonderCardsInPossession,
+ gText_ReadNewsThatArrived,
+ gText_ReturnToTitle
+};
+
+ALIGNED(2) const u8 gUnknown_082F0720[] = { 0, 1, 2 };
+ALIGNED(2) const u8 gUnknown_082F0724[] = { 0, 1, 2 };
+ALIGNED(2) const u8 gUnknown_082F0728[] = { 1, 2, 3 };
+
+void sub_8018424(void)
+{
+ ProcessSpriteCopyRequests();
+ LoadOam();
+ TransferPlttBuffer();
+}
+
+void sub_8018438(void)
+{
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+bool32 sub_8018450(s32 arg)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ ScanlineEffect_Stop();
+ ResetBgsAndClearDma3BusyFlags(0);
+
+ InitBgsFromTemplates(0, gUnknown_082F0598, ARRAY_COUNT(gUnknown_082F0598));
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+
+ SetBgTilemapBuffer(3, Alloc(0x800));
+ SetBgTilemapBuffer(2, Alloc(0x800));
+ SetBgTilemapBuffer(1, Alloc(0x800));
+ SetBgTilemapBuffer(0, Alloc(0x800));
+
+ bgid_upload_textbox_1(3);
+ InitWindows(gUnknown_082F05A8);
+ DeactivateAllTextPrinters();
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ gMain.state++;
+ break;
+ case 1:
+ LoadPalette(gUnkTextboxBorderPal, 0, 0x20);
+ LoadPalette(stdpal_get(2), 0xd0, 0x20);
+ sub_81978B0(0xC0);
+ LoadUserWindowBorderGfx(0, 0xA, 0xE0);
+ LoadUserWindowBorderGfx_(0, 0x1, 0xF0);
+ FillBgTilemapBufferRect(0, 0x000, 0, 0, 32, 32, 0x11);
+ FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11);
+ FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11);
+ sub_8018798(3);
+ sub_80186EC(arg, 0);
+ gMain.state++;
+ break;
+ case 2:
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(0);
+ gMain.state++;
+ break;
+ case 3:
+ ShowBg(0);
+ ShowBg(3);
+ PlayBGM(MUS_RG_OKURIMONO);
+ SetVBlankCallback(sub_8018424);
+ EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_VCOUNT | INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void c2_mystery_gift(void)
+{
+ if (sub_8018450(0))
+ {
+ SetMainCallback2(sub_8018438);
+ gUnknown_02022C60 = FALSE;
+ task_add_00_mystery_gift();
+ }
+ RunTasks();
+}
+
+void sub_801867C(void)
+{
+ if (sub_8018450(1))
+ {
+ SetMainCallback2(sub_8018438);
+ gUnknown_02022C60 = TRUE;
+ sub_81D5014();
+ }
+}
+
+void sub_80186A4(void)
+{
+ gUnknown_02022C60 = FALSE;
+ FreeAllWindowBuffers();
+ Free(GetBgTilemapBuffer(0));
+ Free(GetBgTilemapBuffer(1));
+ Free(GetBgTilemapBuffer(2));
+ Free(GetBgTilemapBuffer(3));
+ SetMainCallback2(CB2_InitTitleScreen);
+}
+
+void sub_80186EC(bool8 isJapanese, bool32 usePickOkCancel)
+{
+ const u8 * header;
+ const u8 * options;
+ FillWindowPixelBuffer(0, 0);
+ if (!isJapanese)
+ {
+ header = gText_MysteryGift;
+ options = !usePickOkCancel ? gText_PickOKExit : gText_PickOKCancel;
+ }
+ else
+ {
+ header = gJPText_MysteryGift;
+ options = gJPText_DecideStop;
+ }
+
+ AddTextPrinterParameterized4(0, 1, 4, 1, 0, 0, gUnknown_082F0720, -1, header);
+ AddTextPrinterParameterized4(0, 0, GetStringRightAlignXOffset(0, options, 0xDE), 1, 0, 0, gUnknown_082F0720, -1, options);
+ CopyWindowToVram(0, 2);
+ PutWindowTilemap(0);
+}
+
+void sub_8018784(u8 windowId)
+{
+ sub_8098858(windowId, 0x01, 0xF);
+}
+
+void sub_8018798(u32 bg)
+{
+ s32 i = 0, j;
+
+ FillBgTilemapBufferRect(bg, 0x003, 0, 0, 32, 2, 0x11);
+
+ for (i = 0; i < 18; i++)
+ {
+ for (j = 0; j < 32; j++)
+ {
+ if ((i & 1) != (j & 1))
+ {
+ FillBgTilemapBufferRect(bg, 1, j, i + 2, 1, 1, 0x11);
+ }
+ else
+ {
+ FillBgTilemapBufferRect(bg, 2, j, i + 2, 1, 1, 0x11);
+ }
+ }
+ }
+}
+
+void sub_8018838(bool32 arg)
+{
+ switch (arg)
+ {
+ case 0:
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0x11);
+ break;
+ case 1:
+ FillBgTilemapBufferRect(0, 0, 0, 2, 32, 30, 0x11);
+ break;
+ }
+ CopyBgTilemapBufferToVram(0);
+}
+
+void sub_8018884(const u8 *str)
+{
+ StringExpandPlaceholders(gStringVar4, str);
+ FillWindowPixelBuffer(1, 0x11);
+ AddTextPrinterParameterized4(1, 1, 0, 1, 0, 0, gUnknown_082F0728, 0, gStringVar4);
+ sub_8098858(1, 0x001, 0xF);
+ PutWindowTilemap(1);
+ CopyWindowToVram(1, 3);
+}
+
+void sub_80188DC(void)
+{
+ rbox_fill_rectangle(1);
+ ClearWindowTilemap(1);
+ CopyWindowToVram(1, 1);
+}
+
+bool32 mevent_0814257C(u8 *textState, const u8 *str)
+{
+ switch (*textState)
+ {
+ case 0:
+ sub_8018884(str);
+ goto inc;
+ case 1:
+ DrawDownArrow(1, 0xD0, 0x14, 1, FALSE, &gUnknown_02022C58[0], &gUnknown_02022C58[1]);
+ if (({gMain.newKeys & (A_BUTTON | B_BUTTON);}))
+ {
+ inc:
+ (*textState)++;
+ }
+ break;
+ case 2:
+ DrawDownArrow(1, 0xD0, 0x14, 1, TRUE, &gUnknown_02022C58[0], &gUnknown_02022C58[1]);
+ *textState = 0;
+ sub_80188DC();
+ return TRUE;
+ case 0xFF:
+ *textState = 2;
+ break;
+ }
+ return FALSE;
+}
+
+void sub_801898C(void)
+{
+ DrawDownArrow(1, 0xD0, 0x14, 1, FALSE, &gUnknown_02022C58[0], &gUnknown_02022C58[1]);
+}
+
+void sub_80189B4(void)
+{
+ DrawDownArrow(1, 0xD0, 0x14, 1, TRUE, &gUnknown_02022C58[0], &gUnknown_02022C58[1]);
+}
+
+bool32 sub_80189DC(u8 * textState)
+{
+ switch (*textState)
+ {
+ case 0:
+ sub_801898C();
+ if (({gMain.newKeys & (A_BUTTON | B_BUTTON);}))
+ {
+ (*textState)++;
+ }
+ break;
+ case 1:
+ sub_80189B4();
+ *textState = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_8018A1C(u8 * counter, const u8 * str)
+{
+ if (*counter == 0)
+ {
+ sub_8018884(str);
+ }
+ if (++(*counter) > 120)
+ {
+ *counter = 0;
+ sub_80188DC();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+u32 sub_8018A50(u8 * unused0, u16 * unused1, bool8 r2)
+{
+ struct ListMenuTemplate listMenuTemplate = gUnknown_082F0638;
+ struct WindowTemplate windowTemplate = gUnknown_082F05E0;
+ s32 r3;
+ s32 r4;
+
+ if (r2 == FALSE)
+ {
+ listMenuTemplate.items = gUnknown_082F0608;
+ }
+ else
+ {
+ listMenuTemplate.items = gUnknown_082F0620;
+ }
+ r3 = sub_81DB41C(&listMenuTemplate);
+ if (r3 & 1)
+ {
+ r3++;
+ }
+ windowTemplate.width = r3;
+ if (r3 < 30)
+ {
+ windowTemplate.tilemapLeft = (30 - r3) / 2;
+ }
+ else
+ {
+ windowTemplate.tilemapLeft = 0;
+ }
+ r4 = DoMysteryGiftListMenu(&windowTemplate, &listMenuTemplate, 1, 0x00A, 0xE0);
+ if (r4 != -1)
+ {
+ ClearWindowTilemap(2);
+ CopyWindowToVram(2, 1);
+ }
+ return r4;
+}
+
+s8 sub_8018B08(u8 * textState, u16 * windowId, bool8 r6, const u8 * str)
+{
+ struct WindowTemplate windowTemplate;
+ s8 input;
+
+ switch (*textState)
+ {
+ case 0:
+ StringExpandPlaceholders(gStringVar4, str);
+ if (r6 == 0)
+ {
+ *windowId = AddWindow(&gUnknown_082F05C8);
+ }
+ else
+ {
+ *windowId = AddWindow(&gUnknown_082F05D0);
+ }
+ FillWindowPixelBuffer(*windowId, 0x11);
+ AddTextPrinterParameterized4(*windowId, 1, 0, 1, 0, 0, gUnknown_082F0728, 0, gStringVar4);
+ sub_8098858(*windowId, 0x001, 0x0F);
+ CopyWindowToVram(*windowId, 2);
+ PutWindowTilemap(*windowId);
+ (*textState)++;
+ break;
+ case 1:
+ windowTemplate = gUnknown_082F05E8;
+ if (r6 == 0)
+ {
+ windowTemplate.tilemapTop = 9;
+ }
+ else
+ {
+ windowTemplate.tilemapTop = 15;
+ }
+ CreateYesNoMenu(&windowTemplate, 10, 14, 0);
+ (*textState)++;
+ break;
+ case 2:
+ input = Menu_ProcessInputNoWrapClearOnChoose();
+ if (input == -1 || input == 0 || input == 1)
+ {
+ *textState = 0;
+ rbox_fill_rectangle(*windowId);
+ ClearWindowTilemap(*windowId);
+ CopyWindowToVram(*windowId, 1);
+ RemoveWindow(*windowId);
+ return input;
+ }
+ break;
+ case 0xFF:
+ *textState = 0;
+ rbox_fill_rectangle(*windowId);
+ ClearWindowTilemap(*windowId);
+ CopyWindowToVram(*windowId, 1);
+ RemoveWindow(*windowId);
+ return -1;
+ }
+
+ return -2;
+}
+
+s32 sub_8018C4C(u8 * textState, u16 * windowId, bool32 r2, bool32 r3)
+{
+ struct WindowTemplate windowTemplate;
+ s32 input;
+
+ switch (*textState)
+ {
+ case 0:
+ if (r2 == 0)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_WhatToDoWithCards);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gText_WhatToDoWithNews);
+ }
+ *windowId = AddWindow(&gUnknown_082F05D8);
+ FillWindowPixelBuffer(*windowId, 0x11);
+ AddTextPrinterParameterized4(*windowId, 1, 0, 1, 0, 0, gUnknown_082F0728, 0, gStringVar4);
+ sub_8098858(*windowId, 0x001, 0x0F);
+ CopyWindowToVram(*windowId, 2);
+ PutWindowTilemap(*windowId);
+ (*textState)++;
+ break;
+ case 1:
+ windowTemplate = gUnknown_082F05E8;
+ if (r3)
+ {
+ if (r2 == 0)
+ {
+ input = DoMysteryGiftListMenu(&gUnknown_082F05F8, &gUnknown_082F06C8, 1, 0x00A, 0xE0);
+ }
+ else
+ {
+ input = DoMysteryGiftListMenu(&gUnknown_082F0600, &gUnknown_082F06F8, 1, 0x00A, 0xE0);
+ }
+ }
+ else
+ {
+ if (r2 == 0)
+ {
+ input = DoMysteryGiftListMenu(&gUnknown_082F05F0, &gUnknown_082F06B0, 1, 0x00A, 0xE0);
+ }
+ else
+ {
+ input = DoMysteryGiftListMenu(&gUnknown_082F05F8, &gUnknown_082F06E0, 1, 0x00A, 0xE0);
+ }
+ }
+ if (input != -1)
+ {
+ *textState = 0;
+ rbox_fill_rectangle(*windowId);
+ ClearWindowTilemap(*windowId);
+ CopyWindowToVram(*windowId, 1);
+ RemoveWindow(*windowId);
+ return input;
+ }
+ break;
+ case 0xFF:
+ *textState = 0;
+ rbox_fill_rectangle(*windowId);
+ ClearWindowTilemap(*windowId);
+ CopyWindowToVram(*windowId, 1);
+ RemoveWindow(*windowId);
+ return -2;
+ }
+
+ return -1;
+}
+
+s32 sub_8018D98(bool32 a0)
+{
+ if (a0 == 0)
+ {
+ return sub_801B27C();
+ }
+ else
+ {
+ return sub_801B0CC();
+ }
+}
+
+bool32 sub_8018DAC(u8 * state, bool32 arg1)
+{
+ s32 v0;
+
+ switch (*state)
+ {
+ case 0:
+ if (arg1 == 0)
+ {
+ sub_801BAAC(sav1_get_mevent_buffer_1(), sav1_get_mevent_buffer_2());
+ }
+ else
+ {
+ sub_801C6C8(sub_801B00C());
+ }
+ (*state)++;
+ break;
+ case 1:
+ if (arg1 == 0)
+ {
+ v0 = sub_801BB74();
+ check:
+ if (v0 != 0)
+ {
+ goto done;
+ }
+ break;
+ }
+ else
+ {
+ v0 = sub_801C758();
+ goto check;
+ }
+ done:
+ *state = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool32 sub_8018E08(bool32 arg0)
+{
+ if (arg0 == 0)
+ {
+ sub_801B1E8();
+ }
+ else
+ {
+ sub_801B06C();
+ }
+ return TRUE;
+}
+
+bool32 sub_8018E20(bool32 arg0, bool32 arg1)
+{
+ if (arg0 == 0)
+ {
+ if (sub_801BDA4(arg1) != 0)
+ {
+ sub_801BB48();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+ else
+ {
+ if (sub_801CA50(arg1) != 0)
+ {
+ sub_801C72C();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+}
+
+s32 sub_8018E50(u8 * textState, u16 * windowId, bool32 r2)
+{
+ if (r2 == 0)
+ {
+ return sub_8018B08(textState, windowId, TRUE, gText_IfThrowAwayCardEventWontHappen);
+ }
+ else
+ {
+ return sub_8018B08(textState, windowId, TRUE, gText_OkayToDiscardNews);
+ }
+}
+
+bool32 mevent_message_was_thrown_away(u8 * textState, bool32 r1)
+{
+ if (r1 == 0)
+ {
+ return mevent_0814257C(textState, gText_WonderCardThrownAway);
+ }
+ else
+ {
+ return mevent_0814257C(textState, gText_WonderNewsThrownAway);
+ }
+}
+
+bool32 mevent_save_game(u8 * state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_8018884(gText_DataWillBeSaved);
+ (*state)++;
+ break;
+ case 1:
+ TrySavingData(0);
+ (*state)++;
+ break;
+ case 2:
+ sub_8018884(gText_SaveCompletedPressA);
+ (*state)++;
+ break;
+ case 3:
+ if (({gMain.newKeys & (A_BUTTON | B_BUTTON);}))
+ {
+ (*state)++;
+ }
+ break;
+ case 4:
+ *state = 0;
+ sub_80188DC();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+const u8 * mevent_message(u32 * a0, u8 a1, u8 a2, u32 a3)
+{
+ const u8 * msg = NULL;
+ *a0 = 0;
+
+ switch (a3)
+ {
+ case 0:
+ *a0 = 0;
+ msg = gText_NothingSentOver;
+ break;
+ case 1:
+ *a0 = 0;
+ msg = gText_RecordUploadedViaWireless;
+ break;
+ case 2:
+ *a0 = 1;
+ msg = a2 == 0 ? gText_WonderCardReceived : gText_WonderCardReceivedFrom;
+ break;
+ case 3:
+ *a0 = 1;
+ msg = a2 == 0 ? gText_WonderNewsReceived : gText_WonderNewsReceivedFrom;
+ break;
+ case 4:
+ *a0 = 1;
+ msg = gText_NewStampReceived;
+ break;
+ case 5:
+ *a0 = 0;
+ msg = gText_AlreadyHadCard;
+ break;
+ case 6:
+ *a0 = 0;
+ msg = gText_AlreadyHadStamp;
+ break;
+ case 7:
+ *a0 = 0;
+ msg = gText_AlreadyHadNews;
+ break;
+ case 8:
+ *a0 = 0;
+ msg = gText_NoMoreRoomForStamps;
+ break;
+ case 9:
+ *a0 = 0;
+ msg = gText_CommunicationCanceled;
+ break;
+ case 10:
+ *a0 = 0;
+ msg = a1 == 0 ? gText_CantAcceptCardFromTrainer : gText_CantAcceptNewsFromTrainer;
+ break;
+ case 11:
+ *a0 = 0;
+ msg = gText_CommunicationError;
+ break;
+ case 12:
+ *a0 = 1;
+ msg = gText_NewTrainerReceived;
+ break;
+ case 13:
+ *a0 = 1;
+ break;
+ case 14:
+ *a0 = 0;
+ break;
+ }
+
+ return msg;
+}
+
+bool32 mevent_08142CE8(u8 * state, const u8 * arg1, u16 * arg2)
+{
+ switch (*state)
+ {
+ case 0:
+ if (arg1 != NULL)
+ {
+ sub_8018884(arg1);
+ }
+ PlayFanfare(MUS_FANFA4);
+ *arg2 = 0;
+ (*state)++;
+ break;
+ case 1:
+ if (++(*arg2) > 0xF0)
+ {
+ (*state)++;
+ }
+ break;
+ case 2:
+ if (IsFanfareTaskInactive())
+ {
+ *state = 0;
+ sub_80188DC();
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+const u8 * mevent_message_stamp_card_etc_send_status(u32 * a0, u8 unused, u32 state)
+{
+ const u8 * result = gText_CommunicationError;
+ *a0 = 0;
+ switch (state)
+ {
+ case 0:
+ result = gText_NothingSentOver;
+ break;
+ case 1:
+ result = gText_RecordUploadedViaWireless;
+ break;
+ case 2:
+ result = gText_WonderCardSentTo;
+ *a0 = 1;
+ break;
+ case 3:
+ result = gText_WonderNewsSentTo;
+ *a0 = 1;
+ break;
+ case 4:
+ result = gText_StampSentTo;
+ break;
+ case 5:
+ result = gText_OtherTrainerHasCard;
+ break;
+ case 6:
+ result = gText_OtherTrainerHasStamp;
+ break;
+ case 7:
+ result = gText_OtherTrainerHasNews;
+ break;
+ case 8:
+ result = gText_NoMoreRoomForStamps;
+ break;
+ case 9:
+ result = gText_OtherTrainerCanceled;
+ break;
+ case 10:
+ result = gText_CantSendGiftToTrainer;
+ break;
+ case 11:
+ result = gText_CommunicationError;
+ break;
+ case 12:
+ result = gText_GiftSentTo;
+ break;
+ case 13:
+ result = gText_GiftSentTo;
+ break;
+ case 14:
+ result = gText_CantSendGiftToTrainer;
+ break;
+ }
+ return result;
+}
+
+bool32 sub_8019174(u8 * state_p, u16 * arg1, u8 arg2, u32 state)
+{
+ u32 flag;
+ const u8 * str = mevent_message_stamp_card_etc_send_status(&flag, arg2, state);
+ if (flag)
+ {
+ return mevent_08142CE8(state_p, str, arg1);
+ }
+ else
+ {
+ return mevent_0814257C(state_p, str);
+ }
+}
+
+void task_add_00_mystery_gift(void)
+{
+ u8 taskId = CreateTask(task00_mystery_gift, 0);
+ struct MysteryGiftTaskData * data = (void *)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);
+}
+
+void task00_mystery_gift(u8 taskId)
+{
+ struct MysteryGiftTaskData * data = (void *)gTasks[taskId].data;
+ u32 sp0;
+ const u8 * r1;
+
+ switch (data->unk8)
+ {
+ case 0:
+ data->unk8 = 1;
+ break;
+ case 1:
+ switch (sub_8018A50(&data->unk9, &data->unk0, FALSE))
+ {
+ case 0:
+ data->unkC = 0;
+ if (sub_801B27C() == TRUE)
+ {
+ data->unk8 = 18;
+ }
+ else
+ {
+ data->unk8 = 2;
+ }
+ break;
+ case 1:
+ data->unkC = 1;
+ if (sub_801B0CC() == TRUE)
+ {
+ data->unk8 = 18;
+ }
+ else
+ {
+ data->unk8 = 2;
+ }
+ break;
+ case -2u:
+ data->unk8 = 37;
+ break;
+ }
+ break;
+ case 2:
+ {
+ if (data->unkC == 0)
+ {
+ if (mevent_0814257C(&data->unk9, gText_DontHaveCardNewOneInput))
+ {
+ data->unk8 = 3;
+ sub_80186EC(0, 1);
+ }
+ }
+ else
+ {
+ if (mevent_0814257C(&data->unk9, gText_DontHaveNewsNewOneInput))
+ {
+ data->unk8 = 3;
+ sub_80186EC(0, 1);
+ }
+ }
+ break;
+ }
+ case 3:
+ if (data->unkC == 0)
+ {
+ sub_8018884(gText_WhereShouldCardBeAccessed);
+ }
+ else
+ {
+ sub_8018884(gText_WhereShouldNewsBeAccessed);
+ }
+ data->unk8 = 4;
+ break;
+ case 4:
+ switch (sub_8018A50(&data->unk9, &data->unk0, TRUE))
+ {
+ case 0:
+ sub_80188DC();
+ data->unk8 = 5;
+ data->unkD = 0;
+ break;
+ case 1:
+ sub_80188DC();
+ data->unk8 = 5;
+ data->unkD = 1;
+ break;
+ case -2u:
+ sub_80188DC();
+ if (sub_8018D98(data->unkC))
+ {
+ data->unk8 = 18;
+ }
+ else
+ {
+ data->unk8 = 0;
+ sub_80186EC(0, 0);
+ }
+ break;
+ }
+ break;
+ case 5:
+ {
+ register u8 eos asm("r1");
+ gStringVar1[0] = (eos = EOS);
+ gStringVar2[0] = eos;
+ gStringVar3[0] = eos;
+ }
+ switch (data->unkC)
+ {
+ case 0:
+ if (data->unkD == 1)
+ {
+ sub_8014EFC(0x15);
+ }
+ else if (data->unkD == 0)
+ {
+ sub_80152A8(0x15);
+ }
+ break;
+ case 1:
+ if (data->unkD == 1)
+ {
+ sub_8014EFC(0x16);
+ }
+ else if (data->unkD == 0)
+ {
+ sub_80152A8(0x16);
+ }
+ break;
+ }
+ data->unk8 = 6;
+ break;
+ case 6:
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ sub_8018838(TRUE);
+ data->unk8 = 7;
+ sub_801D484(data->unkC);
+ }
+ else if (gSpecialVar_Result == 5)
+ {
+ sub_8018838(TRUE);
+ data->unk8 = 3;
+ }
+ break;
+ case 7:
+ sub_8018884(gText_Communicating);
+ data->unk8 = 8;
+ break;
+ case 8:
+ switch (sub_801D4A8(&data->unk0))
+ {
+ case 6:
+ task_add_05_task_del_08FA224_when_no_RfuFunc();
+ data->unkE = data->unk0;
+ data->unk8 = 13;
+ break;
+ case 5:
+ memcpy(data->unk10, sub_801D4F4(), 0x40);
+ sub_801D4E4();
+ break;
+ case 3:
+ data->unk8 = 10;
+ break;
+ case 2:
+ data->unk8 = 9;
+ break;
+ case 4:
+ data->unk8 = 11;
+ StringCopy(gStringVar1, gLinkPlayers[0].name);
+ break;
+ }
+ break;
+ case 9:
+ switch ((u32)sub_8018B08(&data->unk9, &data->unk0, FALSE, sub_801D4F4()))
+ {
+ case 0:
+ sub_801D500(0);
+ sub_801D4E4();
+ data->unk8 = 7;
+ break;
+ case 1:
+ sub_801D500(1);
+ sub_801D4E4();
+ data->unk8 = 7;
+ break;
+ case -1u:
+ sub_801D500(1);
+ sub_801D4E4();
+ data->unk8 = 7;
+ break;
+ }
+ break;
+ case 10:
+ if (mevent_0814257C(&data->unk9, sub_801D4F4()))
+ {
+ sub_801D4E4();
+ data->unk8 = 7;
+ }
+ break;
+ case 11:
+ switch ((u32)sub_8018B08(&data->unk9, &data->unk0, FALSE, gText_ThrowAwayWonderCard))
+ {
+ case 0:
+ if (sub_801B3F8() == TRUE)
+ {
+ data->unk8 = 12;
+ }
+ else
+ {
+ sub_801D500(0);
+ sub_801D4E4();
+ data->unk8 = 7;
+ }
+ break;
+ case 1:
+ sub_801D500(1);
+ sub_801D4E4();
+ data->unk8 = 7;
+ break;
+ case -1u:
+ sub_801D500(1);
+ sub_801D4E4();
+ data->unk8 = 7;
+ break;
+ }
+ break;
+ case 12:
+ switch ((u32)sub_8018B08(&data->unk9, &data->unk0, FALSE, gText_HaventReceivedCardsGift))
+ {
+ case 0:
+ sub_801D500(0);
+ sub_801D4E4();
+ data->unk8 = 7;
+ break;
+ case 1:
+ sub_801D500(1);
+ sub_801D4E4();
+ data->unk8 = 7;
+ break;
+ case -1u:
+ sub_801D500(1);
+ sub_801D4E4();
+ data->unk8 = 7;
+ break;
+ }
+ break;
+ case 13:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ sub_800E084();
+ data->unk8 = 14;
+ }
+ break;
+ case 14:
+ if (sub_8018A1C(&data->unk9, gText_CommunicationCompleted))
+ {
+ if (data->unkD == 1)
+ {
+ StringCopy(gStringVar1, gLinkPlayers[0].name);
+ }
+ data->unk8 = 15;
+ }
+ break;
+ case 15:
+ {
+ register bool32 flag asm("r1");
+ r1 = mevent_message(&sp0, data->unkC, data->unkD, data->unkE);
+ if (r1 == NULL)
+ {
+ r1 = data->unk10;
+ }
+ if (sp0)
+ {
+ flag = mevent_08142CE8(&data->unk9, r1, &data->unk0);
+ }
+ else
+ {
+ flag = mevent_0814257C(&data->unk9, r1);
+ }
+ if (flag)
+ {
+ if (data->unkE == 3)
+ {
+ if (data->unkD == 1)
+ {
+ sub_801DB68(1);
+ }
+ else
+ {
+ sub_801DB68(2);
+ }
+ }
+ if (sp0 == 0)
+ {
+ data->unk8 = 0;
+ sub_80186EC(0, 0);
+ }
+ else
+ {
+ data->unk8 = 17;
+ }
+ }
+ break;
+ }
+ case 16:
+ if (mevent_0814257C(&data->unk9, gText_CommunicationError))
+ {
+ data->unk8 = 0;
+ sub_80186EC(0, 0);
+ }
+ break;
+ case 17:
+ if (mevent_save_game(&data->unk9))
+ {
+ data->unk8 = 18;
+ }
+ break;
+ case 18:
+ if (sub_8018DAC(&data->unk9, data->unkC))
+ {
+ data->unk8 = 20;
+ }
+ break;
+ case 20:
+ if (data->unkC == 0)
+ {
+ if (({gMain.newKeys & A_BUTTON;}))
+ {
+ data->unk8 = 21;
+ }
+ if (({gMain.newKeys & B_BUTTON;}))
+ {
+ data->unk8 = 27;
+ }
+ }
+ else
+ {
+ switch (sub_801CCD0(gMain.newKeys))
+ {
+ case 0:
+ sub_801CC38();
+ data->unk8 = 21;
+ break;
+ case 1:
+ data->unk8 = 27;
+ break;
+ }
+ }
+ break;
+ case 21:
+ {
+ u32 result;
+ if (data->unkC == 0)
+ {
+ if (sub_801B308())
+ {
+ result = sub_8018C4C(&data->unk9, &data->unk0, data->unkC, FALSE);
+ }
+ else
+ {
+ result = sub_8018C4C(&data->unk9, &data->unk0, data->unkC, TRUE);
+ }
+ }
+ else
+ {
+ if (sub_801B128())
+ {
+ result = sub_8018C4C(&data->unk9, &data->unk0, data->unkC, FALSE);
+ }
+ else
+ {
+ result = sub_8018C4C(&data->unk9, &data->unk0, data->unkC, TRUE);
+ }
+ }
+ switch (result)
+ {
+ case 0:
+ data->unk8 = 28;
+ break;
+ case 1:
+ data->unk8 = 29;
+ break;
+ case 2:
+ data->unk8 = 22;
+ break;
+ case -2u:
+ if (data->unkC == 1)
+ {
+ sub_801CC80();
+ }
+ data->unk8 = 20;
+ break;
+ }
+ break;
+ }
+ case 22:
+ switch (sub_8018E50(&data->unk9, &data->unk0, data->unkC))
+ {
+ case 0:
+ if (data->unkC == 0 && sub_801B3F8() == TRUE)
+ {
+ data->unk8 = 23;
+ }
+ else
+ {
+ data->unk8 = 24;
+ }
+ break;
+ case 1:
+ data->unk8 = 21;
+ break;
+ case -1:
+ data->unk8 = 21;
+ break;
+ }
+ break;
+ case 23:
+ switch ((u32)sub_8018B08(&data->unk9, &data->unk0, TRUE, gText_HaventReceivedGiftOkayToDiscard))
+ {
+ case 0:
+ data->unk8 = 24;
+ break;
+ case 1:
+ data->unk8 = 21;
+ break;
+ case -1u:
+ data->unk8 = 21;
+ break;
+ }
+ break;
+ case 24:
+ if (sub_8018E20(data->unkC, 1))
+ {
+ sub_8018E08(data->unkC);
+ data->unk8 = 25;
+ }
+ break;
+ case 25:
+ if (mevent_save_game(&data->unk9))
+ {
+ data->unk8 = 26;
+ }
+ break;
+ case 26:
+ if (mevent_message_was_thrown_away(&data->unk9, data->unkC))
+ {
+ data->unk8 = 0;
+ sub_80186EC(0, 0);
+ }
+ break;
+ case 27:
+ if (sub_8018E20(data->unkC, 0))
+ {
+ data->unk8 = 0;
+ }
+ break;
+ case 28:
+ if (sub_8018E20(data->unkC, 1))
+ {
+ data->unk8 = 3;
+ }
+ break;
+ case 29:
+ if (sub_8018E20(data->unkC, 1))
+ {
+ switch (data->unkC)
+ {
+ case 0:
+ sub_8014A00(21);
+ break;
+ case 1:
+ sub_8014A00(22);
+ break;
+ }
+ data->unkD = 1;
+ data->unk8 = 30;
+ }
+ break;
+ case 30:
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ sub_8018838(1);
+ data->unk8 = 31;
+ }
+ else if (gSpecialVar_Result == 5)
+ {
+ sub_8018838(1);
+ data->unk8 = 18;
+ }
+ break;
+ case 31:
+ {
+ register u8 eos asm("r1");
+ gStringVar1[0] = (eos = EOS);
+ gStringVar2[0] = eos;
+ gStringVar3[0] = eos;
+ }
+ if (data->unkC == 0)
+ {
+ sub_8018884(gText_SendingWonderCard);
+ mevent_srv_new_wcard();
+ }
+ else
+ {
+ sub_8018884(gText_SendingWonderNews);
+ mevent_srv_init_wnews();
+ }
+ data->unk8 = 32;
+ break;
+ case 32:
+ if (sub_801D0C4(&data->unk0) == 3)
+ {
+ data->unkE = data->unk0;
+ data->unk8 = 33;
+ }
+ break;
+ case 33:
+ task_add_05_task_del_08FA224_when_no_RfuFunc();
+ StringCopy(gStringVar1, gLinkPlayers[1].name);
+ data->unk8 = 34;
+ break;
+ case 34:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ sub_800E084();
+ data->unk8 = 35;
+ }
+ break;
+ case 35:
+ if (sub_8019174(&data->unk9, &data->unk0, data->unkD, data->unkE))
+ {
+ if (data->unkD == 1 && data->unkE == 3)
+ {
+ sub_801DB68(3);
+ data->unk8 = 17;
+ }
+ else
+ {
+ data->unk8 = 0;
+ sub_80186EC(0, 0);
+ }
+ }
+ break;
+ case 36:
+ if (mevent_0814257C(&data->unk9, gText_CommunicationError))
+ {
+ data->unk8 = 0;
+ sub_80186EC(0, 0);
+ }
+ break;
+ case 37:
+ CloseLink();
+ Free(data->unk10);
+ DestroyTask(taskId);
+ SetMainCallback2(sub_80186A4);
+ break;
+ }
+}
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 22bbb84d7..75b7c8566 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -1910,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,
@@ -1927,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,
@@ -1944,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 2e8930f7c..19f3461b4 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -41,12 +41,11 @@
#include "secret_base.h"
#include "player_pc.h"
#include "field_specials.h"
+#include "berry_powder.h"
+#include "mevent.h"
+#include "union_room_chat.h"
-
-extern void copy_strings_to_sav1(void);
-extern void sub_801AFD8(void);
extern void ResetPokeJumpResults(void);
-extern void SetBerryPowder(u32* powder, u32 newValue);
extern const u8 EventScript_ResetAllMapFlags[];
diff --git a/src/overworld.c b/src/overworld.c
index 0ff8d5b7f..ce1e21ab1 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -1688,7 +1688,7 @@ void CB2_ReturnToFieldContinueScript(void)
void CB2_ReturnToFieldContinueScriptPlayMapMusic(void)
{
FieldClearVBlankHBlankCallbacks();
- gFieldCallback = sub_80AF168;
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
CB2_ReturnToField();
}
diff --git a/src/party_menu.c b/src/party_menu.c
index ec35fc068..6233558ff 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -37,18 +37,19 @@
#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"
+#include "union_room.h"
#include "scanline_effect.h"
#include "script.h"
#include "sound.h"
@@ -1175,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,
@@ -1231,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,
@@ -1287,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,
@@ -1366,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,
@@ -6006,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);
}
@@ -6015,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);
}
@@ -7288,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)
diff --git a/src/player_pc.c b/src/player_pc.c
index 6e78533e7..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
@@ -645,7 +645,7 @@ static void Mailbox_ProcessInput(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
RemoveScrollIndicatorArrowPair(playerPCItemPageInfo.scrollIndicatorId);
Mailbox_ReturnToPlayerPC(taskId);
@@ -1151,7 +1151,7 @@ static void ItemStorage_ProcessInput(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
ItemStorage_GoBackToPlayerPCMenu(taskId);
break;
@@ -1226,7 +1226,7 @@ static void sub_816C4FC(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
if (gMain.newKeys & A_BUTTON)
{
ItemStorage_DoItemSwap(taskId, FALSE);
diff --git a/src/pokeball.c b/src/pokeball.c
index d4605ccd8..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,
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 2682754aa..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,
@@ -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;
@@ -751,7 +751,7 @@ static void sub_8135FCC(s32 pkblId)
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();
@@ -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;
@@ -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);
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index da803f454..59ba1b4dc 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -463,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,
diff --git a/src/pokedex.c b/src/pokedex.c
index 4bf8dff6d..cceb50ba1 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -248,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,
@@ -265,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,
@@ -282,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,
@@ -299,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,
@@ -316,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,
@@ -333,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,
diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c
index 7404e9d5a..1eb8c0953 100755
--- a/src/pokedex_area_screen.c
+++ b/src/pokedex_area_screen.c
@@ -96,14 +96,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},
@@ -223,7 +230,8 @@ static const u8 sAreaGlowTilemapMapping[] = {
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,
@@ -231,21 +239,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,
@@ -258,16 +271,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 c385141d5..8ca0c8d6e 100755
--- a/src/pokedex_cry_screen.c
+++ b/src/pokedex_cry_screen.c
@@ -54,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,
@@ -142,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
@@ -152,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,
@@ -178,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 a984abbb9..7c26b4c22 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -2,6 +2,7 @@
#include "alloc.h"
#include "apprentice.h"
#include "battle.h"
+#include "battle_anim.h"
#include "battle_controllers.h"
#include "battle_message.h"
#include "battle_pike.h"
@@ -2462,10 +2463,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,
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_storage_system.c b/src/pokemon_storage_system.c
index c5d40877b..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,
@@ -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
};
@@ -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++)
@@ -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,
};
@@ -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,
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 3bbc832a0..3a5b06d45 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -710,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,
@@ -886,10 +886,10 @@ 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,
@@ -975,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,
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/recorded_battle.c b/src/recorded_battle.c
index c11dc55e7..acd4c2ce6 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "battle_anim.h"
#include "recorded_battle.h"
#include "main.h"
#include "pokemon.h"
diff --git a/src/region_map.c b/src/region_map.c
index 8dadc78a7..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
@@ -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)
{
diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c
index ce9f5b98b..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,
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 05d5006f0..39db5630b 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -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
};
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index 08f193890..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] =
diff --git a/src/script.c b/src/script.c
index c95a1141f..91690dd33 100644
--- a/src/script.c
+++ b/src/script.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "script.h"
#include "event_data.h"
+#include "mevent.h"
#include "util.h"
#include "constants/map_scripts.h"
@@ -8,8 +9,6 @@
extern const u8* gUnknown_020375C0;
-extern bool32 sub_801B27C(void);
-
// ewram bss
IWRAM_DATA static u8 sScriptContext1Status;
IWRAM_DATA static u32 sUnusedVariable1;
diff --git a/src/secret_base.c b/src/secret_base.c
index 4b270e424..e19aecba3 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -389,7 +389,7 @@ void sub_80E8FD0(u8 taskId)
}
sub_80E8F9C();
WarpIntoMap();
- gFieldCallback = sub_80AF168;
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
SetMainCallback2(CB2_LoadMap);
DestroyTask(taskId);
break;
@@ -957,7 +957,7 @@ void sub_80E9E90(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
DestroyListMenuTask(data[5], NULL, NULL);
RemoveScrollIndicatorArrowPair(data[8]);
diff --git a/src/shop.c b/src/shop.c
index e03e2ab0c..32caafb64 100755
--- a/src/shop.c
+++ b/src/shop.c
@@ -918,7 +918,7 @@ static void Task_BuyMenu(u8 taskId)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_B_PRESSED:
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
ExitBuyMenu(taskId);
break;
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 4822c12e6..f573f9bdf 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -44,6 +44,7 @@
#include "window.h"
#include "constants/songs.h"
#include "rom_8011DC0.h"
+#include "union_room.h"
// Menu actions
enum
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 4ed53539f..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 =
diff --git a/src/strings.c b/src/strings.c
index f81a19083..577d26f5c 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -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/text.c b/src/text.c
index be4bf2697..43834eab4 100644
--- a/src/text.c
+++ b/src/text.c
@@ -1601,7 +1601,7 @@ u16 RenderText(struct TextPrinter *textPrinter)
textPrinter->printerTemplate.currentX = *textPrinter->printerTemplate.currentChar + textPrinter->printerTemplate.x;
textPrinter->printerTemplate.currentChar++;
return 2;
- case 19:
+ case EXT_CTRL_CODE_CLEAR_TO:
{
widthHelper = *textPrinter->printerTemplate.currentChar;
widthHelper += textPrinter->printerTemplate.x;
@@ -1615,7 +1615,7 @@ u16 RenderText(struct TextPrinter *textPrinter)
}
}
return 2;
- case 20:
+ case EXT_CTRL_CODE_MIN_LETTER_SPACING:
textPrinter->minLetterSpacing = *textPrinter->printerTemplate.currentChar++;
return 2;
case EXT_CTRL_CODE_JPN:
diff --git a/src/title_screen.c b/src/title_screen.c
index ca34f90f8..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 gIntroWaterDropData[] =
-{
- 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, gIntroWaterDropData[sprite->data[0]]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[sprite->data[0]]);
}
}
diff --git a/src/trade.c b/src/trade.c
index 9a9828f34..34f49060f 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -19,6 +19,8 @@
#include "load_save.h"
#include "mail.h"
#include "main.h"
+#include "mevent2.h"
+#include "mystery_gift.h"
#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
@@ -39,6 +41,7 @@
#include "text_window.h"
#include "trainer_card.h"
#include "trade.h"
+#include "union_room.h"
#include "util.h"
#include "window.h"
#include "constants/easy_chat.h"
@@ -256,72 +259,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 +375,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 +388,6 @@ static const struct SpritePalette gSpritePalette_TradeScreenText =
// 2 3 8 9
// 4 5 10 11
// 12
-
static const u8 gTradeNextSelectedMonTable[][4][6] =
{
{
@@ -471,7 +491,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 +513,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 +535,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 +567,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 +841,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 +867,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 +886,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 +1104,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 +1117,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 +1212,8 @@ static const struct InGameTrade gIngameTrades[] = {
}
};
-static const u16 gIngameTradeMail[][10] = {
+static const u16 gIngameTradeMail[][10] =
+{
{
EC_WORD_BE,
EC_WORD_NICE,
@@ -1233,7 +1315,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,
@@ -6061,7 +6144,7 @@ static void sub_807F110(u8 taskId)
if (!gPaletteFade.active)
{
SetMainCallback2(sub_807B270);
- gFieldCallback = sub_80AF168;
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
DestroyTask(taskId);
}
}
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index 43b29e26e..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"
@@ -32,8 +33,6 @@
#include "constants/easy_chat.h"
#include "constants/trainer_hill.h"
-extern bool32 sub_81D3B34(void);
-
#define HILL_TAG_NORMAL 0
#define HILL_TAG_VARIETY 1
#define HILL_TAG_UNIQUE 2
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 16ea88a45..9925aa6bc 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -100,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,
@@ -112,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/rom_8011DC0.c b/src/union_room.c
index 3d9eab8d7..df0137379 100644
--- a/src/rom_8011DC0.c
+++ b/src/union_room.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "window.h"
#include "bg.h"
+#include "random.h"
#include "string_util.h"
#include "task.h"
#include "event_data.h"
@@ -34,160 +35,26 @@
#include "data2.h"
#include "field_screen_effect.h"
#include "script_pokemon_util_80F87D8.h"
-
-struct UnkStruct_Shared
-{
- struct UnkLinkRfuStruct_02022B14 field_0;
- u8 needingPadding[2];
- u8 playerName[PLAYER_NAME_LENGTH + 1];
-};
-
-struct UnkStruct_x1C
-{
- struct UnkStruct_Shared unk0;
- u8 unk18;
-};
-
-struct UnkStruct_x20
-{
- struct UnkStruct_Shared unk;
- u16 field_18;
- u8 field_1A_0:2;
- u8 field_1A_1:1;
- u8 field_1B;
- u8 field_1D;
- u8 field_1E;
- u8 field_1F;
-};
-
-struct UnkStruct_Main0
-{
- struct UnkStruct_x20 arr[8];
-};
-
-struct UnkStruct_Main4
-{
- struct UnkStruct_x1C arr[5];
-};
-
-struct UnkStruct_Main8
-{
- struct UnkStruct_x20 arr[5];
-};
-
-struct UnkStruct_Leader
-{
- struct UnkStruct_Main0 *field_0;
- struct UnkStruct_Main4 *field_4;
- struct UnkStruct_Main8 *field_8;
- u8 state;
- u8 textState;
- u8 field_E;
- u8 listWindowId;
- u8 field_10;
- u8 field_11;
- u8 listTaskId;
- u8 field_13;
- u8 field_14;
- u8 field_15;
- u8 field_16;
- u8 field_17;
- u8 field_18;
- u8 field_19;
- u16 field_1A;
-};
-
-struct UnkStruct_Group
-{
- struct UnkStruct_Main0 *field_0;
- struct UnkStruct_Main4 *field_4;
- u8 state;
- u8 textState;
- u8 field_A;
- u8 listWindowId;
- u8 field_C;
- u8 field_D;
- u8 listTaskId;
- u8 field_F;
- u8 field_10;
- u8 field_11;
- u8 field_12;
- u8 field_13;
- u8 field_14;
- u8 field_15;
-};
-
-struct UnkStruct_8019BA8
-{
- u8 field_0;
- u8 field_1;
- u8 field_2;
- u8 field_3;
-};
-
-struct UnkStruct_URoom
-{
- struct UnkStruct_Main0 *field_0;
- struct UnkStruct_Main4 *field_4;
- struct UnkStruct_Main0 *field_8;
- struct UnkStruct_Main4 *field_C;
- u16 field_10;
- u16 field_12;
- u8 state;
- u8 stateAfterPrint;
- u8 textState;
- u8 field_17;
- u8 field_18;
- u8 field_19;
- u8 field_1A;
- u8 field_1B;
- u8 field_1C;
- u8 field_1D;
- u8 field_1E;
- u8 field_1F;
- u8 field_20;
- u8 spriteIds[40];
- u8 field_49;
- u8 field_4A;
- u16 field_4C[6];
- u8 field_58[0x98 - 0x58];
- u16 field_98;
- u16 field_9A[3];
- struct UnkStruct_8019BA8 field_A0[8];
-};
-
-union UnkUnion_Main
-{
- struct UnkStruct_Leader *leader;
- struct UnkStruct_Group *group;
- struct UnkStruct_URoom *uRoom;
-};
-
-struct TradeUnkStruct
-{
- u16 field_0;
- u16 field_2;
- u32 field_4;
- u8 field_8;
- u8 field_9;
- u16 field_A;
- u16 field_C;
- u16 species;
- u16 level;
- u16 field_12;
- u32 personality;
-};
-
-extern struct TradeUnkStruct gUnknown_02022C40;
-extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38;
-extern union UnkUnion_Main gUnknown_02022C30;
-extern u8 gUnknown_02022C2C;
-extern u8 gUnknown_02022C2D;
-extern u8 gUnknown_02022C3E;
-extern u16 gUnknown_02022C3C;
-extern u8 gUnknown_02022C20[];
-extern u8 gFieldLinkPlayerCount;
-extern u8 gLocalLinkPlayerId;
+#include "international_string_util.h"
+#include "field_player_avatar.h"
+#include "strings.h"
+#include "mevent.h"
+#include "dynamic_placeholder_text_util.h"
+#include "union_room.h"
+#include "easy_chat.h"
+#include "event_obj_lock.h"
+#include "union_room_chat.h"
+#include "berry_crush.h"
+
+EWRAM_DATA u8 gUnknown_02022C20[12] = {};
+EWRAM_DATA u8 gUnknown_02022C2C = 0;
+EWRAM_DATA u8 gUnknown_02022C2D = 0;
+EWRAM_DATA union UnkUnion_Main gUnknown_02022C30 = {};
+EWRAM_DATA u32 gFiller_02022C34 = 0;
+EWRAM_DATA struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38 = {};
+EWRAM_DATA u16 gUnknown_02022C3C = 0;
+EWRAM_DATA u8 gUnknown_02022C3E = 0;
+EWRAM_DATA struct TradeUnkStruct gUnknown_02022C40 = {};
// IWRAM vars
IWRAM_DATA struct UnkStruct_Leader *gUnknown_03000DA0;
@@ -220,35 +87,28 @@ void sub_80149C4(void);
u8 sub_80132D4(struct UnkStruct_Main0 *arg0);
void sub_80178A0(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id);
u32 sub_80176E4(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1);
-u8 sub_8017734(struct UnkStruct_x20 *arg0, struct UnkStruct_Shared *arg1, u8 arg2);
+u8 sub_8017734(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1, u8 arg2);
u8 sub_8013E44(void);
u32 sub_8013B8C(struct UnkStruct_Group *arg0, s32 id);
void sub_8013BD8(struct UnkStruct_Group *arg0, s32 id);
void sub_80173D4(void);
void sub_80177B8(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id);
-bool32 sub_8017678(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1);
+bool32 sub_8017678(struct UnkStruct_Shared *arg0, struct UnkStruct_Shared *arg1);
u32 sub_8018120(struct TradeUnkStruct *arg0, u8 multiplayerId);
void sub_801807C(struct TradeUnkStruct *arg0);
-void sub_801B940(void);
-void sub_801B94C(u16);
-u16 sub_801B39C(void);
void sub_801AC54(void);
-void sub_801DD98(void);
void sub_802A9A8(u8 monId, MainCallback callback);
void sub_802493C(u8 monId, MainCallback callback);
-void sub_8020C70(MainCallback callback);
void sub_80149D8(void);
u16 sub_8019930(void);
void sub_8018784(u8 windowId);
-void sub_8018884(const u8 *src);
-bool32 mevent_0814257C(u8 *textState, const u8 *str);
s8 sub_8018B08(u8 *textState, u8 *arg1, u8 arg2, const u8 *str);
-bool32 sub_8016F1C(struct UnkStruct_x20 *arg0, s16 arg1);
+bool32 sub_8016F1C(struct UnkLinkRfuStruct_02022B14 *arg0, s16 arg1);
u8 sub_8016DF0(struct UnkStruct_Main4 *arg0, struct UnkStruct_Main4 *arg1, u32 arg2);
void sub_8019F2C(void);
void sub_8019E70(u8 *arg0, s32 arg1);
-bool32 sub_80180A0(u8 monId, struct TradeUnkStruct *arg1);
-void sub_80180E8(u8 monId, struct TradeUnkStruct *arg1);
+bool32 sub_80180A0(u32 monId, struct TradeUnkStruct *arg1);
+void sub_80180E8(u32 monId, struct TradeUnkStruct *arg1);
bool32 sub_801A2A8(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3);
void sub_80181CC(void);
bool32 sub_8017940(void);
@@ -266,120 +126,1069 @@ void sub_801818C(bool32 arg0);
void sub_801A3D0(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2);
s32 sub_8017178(u8 *arg0, u8 *arg1, u8 *arg2, const struct WindowTemplate *winTemplate, const struct ListMenuTemplate *menuTemplate);
s32 sub_80172A0(u8 *arg0, u8 *arg1, u8 *arg2, u8 *arg3, const struct WindowTemplate *winTemplate, const struct ListMenuTemplate *menuTemplate, struct UnkStruct_Main0 *arg6);
+s32 sub_8017CB0(struct UnkStruct_x20 * arg, s32 arg1);
bool32 sub_8018024(void);
-u32 sub_8017984(u32 arg0);
+u32 sub_8017984(s32 arg0);
void sub_8018220(u8 *unused, struct UnkStruct_URoom *arg1, bool8 arg2);
-void sub_8017D9C(u8 *dst, u32 arg1, u32 playerGender);
+void sub_8017D9C(u8 *dst, s32 arg1, u32 playerGender);
u32 sub_80179AC(struct UnkStruct_x20 *arg0);
void sub_8017E00(u8 *dst, u8 arg1);
void sub_8019F04(u8 *spriteIds);
void sub_8019E3C(void);
void sub_80173B0(void);
s32 sub_8017D04(u32 type, u32 species);
-void sub_8017020(const u8 *src);
+bool32 sub_8017020(const u8 *src);
void sub_8019BA8(void *);
s32 sub_8017EA0(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom *arg3);
void sub_801697C(u8 taskId);
bool8 sub_8017630(struct UnkStruct_Shared* arg0, const struct UnkStruct_Shared* arg1);
+void sub_8013278(u8 windowId, s32 itemId, u8 y);
+void sub_8013DF4(u8 windowId, s32 itemId, u8 y);
+void sub_8017BE8(u8 windowId, s32 itemId, u8 y);
+void nullsub_14(u8 windowId, s32 itemId, u8 y);
// const rom data
-extern const u8 *const gUnknown_082EDB60[][5];
-
-extern const u8 gText_UnkCtrlCodeF907[];
-extern const u8 gUnknown_082EDBC4[];
-extern const u8 gText_AwaitingCommunication[];
-extern const u8 gText_AwaitingLink[];
-extern const u8 gUnknown_082EDC5C[];
-extern const u8 gUnknown_082EDC9C[];
-extern const u8 gUnknown_082EDC78[];
-extern const u8 gUnknown_082EDD58[];
-extern const u8 gUnknown_082EDBE8[];
-extern const u8 gUnknown_082EDC0C[];
-extern const u8 gUnknown_082EDC34[];
-extern const u8 gUnknown_082EE560[];
-extern const u8 gUnknown_082EE57C[];
-extern const u8 gUnknown_082EFC54[];
-extern const u8 gUnknown_082EFC3C[];
-extern const u8 gUnknown_082EDE0C[];
-extern const u8 gUnknown_082EDDF4[];
-extern const u8 gUnknown_082EF7DC[];
-extern const u8 gUnknown_082EDE48[];
-extern const u8 gUnknown_082EDE64[];
-extern const u8 gUnknown_082EDF40[];
-extern const u8 gText_PleaseStartOver[];
-extern const u8 gUnknown_082EF7F8[];
-extern const u8 gUnknown_082EFBC8[];
-extern const u8 gUnknown_082EFC90[];
-extern const u8 gUnknown_082EDEC4[];
-extern const u8 gUnknown_082EDF04[];
-extern const u8 gText_WirelessSearchCanceled[];
-extern const u8 gUnknown_082EF4FC[];
-extern const u8 gUnknown_082EF520[];
-extern const u8 gUnknown_082EF5B8[];
-extern const u8 gUnknown_082EF1EC[];
-extern const u8 gUnknown_082EF544[];
-extern const u8 gUnknown_082EF47C[];
-extern const u8 gUnknown_082EE6C8[];
-extern const u8 gUnknown_082EE004[];
-extern const u8 gUnknown_082EEBD0[];
-extern const u8 gUnknown_082EEB88[];
-extern const u8 gUnknown_082EE598[];
-extern const u8 gUnknown_082EEC14[];
-extern const u8 gUnknown_082EF590[];
-extern const u8 gUnknown_082EF20C[];
-extern const u8 gUnknown_082EF564[];
-extern const u8 gUnknown_082EF4C4[];
-extern const u8 gUnknown_082EF298[];
-extern const u8 gUnknown_082EF65C[];
-extern const u8 gUnknown_082EF6E4[];
-extern const u8 gUnknown_082EF718[];
-
-extern const u32 gUnknown_082F00C4[];
-
-extern const u8 gUnknown_082F0530[];
-
-extern const struct WindowTemplate gUnknown_082F00BC;
-extern const struct WindowTemplate gUnknown_082F0124;
-extern const struct WindowTemplate gUnknown_082F012C;
-extern const struct WindowTemplate gUnknown_082F011C;
-extern const struct WindowTemplate gUnknown_082F0174;
-extern const struct WindowTemplate gUnknown_082F017C;
-extern const struct WindowTemplate gUnknown_082F021C;
-extern const struct WindowTemplate gUnknown_082F025C;
-extern const struct WindowTemplate gUnknown_082F0294;
-extern const struct WindowTemplate gUnknown_082F034C;
-
-extern const struct ListMenuTemplate gUnknown_082F015C;
-extern const struct ListMenuTemplate gUnknown_082F0204;
-extern const struct ListMenuTemplate gUnknown_082F0244;
-extern const struct ListMenuTemplate gUnknown_082F027C;
-extern const struct ListMenuTemplate gUnknown_082F032C;
-extern const struct ListMenuTemplate gUnknown_082F03A4;
-
-extern const u8 *const gUnknown_082F0048[];
-extern const u8 *const gUnknown_082EDDC4[];
-extern const u8 *const gUnknown_082EFB70[];
-extern const u8 *const gUnknown_082EDD50[];
-extern const u8 *const gUnknown_082EDE9C[];
-extern const u8 *const gUnknown_082EDF80[];
-extern const u8 *const gUnknown_082EFD58[];
-extern const u8 *const gUnknown_082EEB80[];
-extern const u8 *const gUnknown_082EE378[];
-extern const u8 *const gUnknown_082EEC9C[];
-extern const u8 *const gUnknown_082EED3C[];
-extern const u8 *const gUnknown_082EE324[];
-extern const u8 *const gUnknown_082EE17C[];
-
-extern const u8 *const gUnknown_082EE82C[][4];
-
-extern const u8 *const gUnknown_082EE24C[][2];
-
-extern const struct UnkStruct_Shared gUnknown_082F045C;
-
-extern const u8 *const gUnknown_082F04D8[22];
+
+ALIGNED(4) const u8 gText_EmptyString[] = _("");
+ALIGNED(4) const u8 gText_Colon[] = _(":");
+ALIGNED(4) const u8 gText_UnkCtrlCodeF907[] = _("{ID}");
+ALIGNED(4) const u8 gText_PleaseStartOver[] = _("Please start over from the beginning.");
+ALIGNED(4) const u8 gText_WirelessSearchCanceled[] = _("The WIRELESS COMMUNICATION\nSYSTEM search has been canceled.");
+ALIGNED(4) const u8 unref_text_union_room_0[] = _("Awaiting communication\nfrom another player.");
+ALIGNED(4) const u8 gText_AwaitingCommunication[] = _("{STR_VAR_1}! Awaiting\ncommunication from another player.");
+ALIGNED(4) const u8 gText_AwaitingLink[] = _("{STR_VAR_1}! Awaiting link!\nPress START when everyone's ready.");
+ALIGNED(4) const u8 gJPText_SingleBattle[] = _("シングルバトルを かいさいする");
+ALIGNED(4) const u8 gJPText_DoubleBattle[] = _("ダブルバトルを かいさいする");
+ALIGNED(4) const u8 gJPText_MultiBattle[] = _("マルチバトルを かいさいする");
+ALIGNED(4) const u8 gJPText_TradePokemon[] = _("ポケモンこうかんを かいさいする");
+ALIGNED(4) const u8 gJPText_Chat[] = _("チャットを かいさいする");
+ALIGNED(4) const u8 gJPText_DistWonderCard[] = _("ふしぎなカードをくばる");
+ALIGNED(4) const u8 gJPText_DistWonderNews[] = _("ふしぎなニュースをくばる");
+ALIGNED(4) const u8 unref_text_union_room_1[] = _("ふしぎなできごとを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldPokemonJump[] = _("なわとびを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldBerryCrush[] = _("きのみマッシャーを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldBerryPicking[] = _("きのみどりを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldSpinTrade[] = _("ぐるぐるこうかんを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldSpinShop[] = _("ぐるぐるショップを かいさいする");
+
+const u8 *const unref_text_ptrs_union_room_0[] = {
+ gJPText_SingleBattle,
+ gJPText_DoubleBattle,
+ gJPText_MultiBattle,
+ gJPText_TradePokemon,
+ gJPText_Chat,
+ gJPText_DistWonderCard,
+ gJPText_DistWonderNews,
+ gJPText_DistWonderCard,
+ gJPText_HoldPokemonJump,
+ gJPText_HoldBerryCrush,
+ gJPText_HoldBerryPicking,
+ gJPText_HoldBerryPicking,
+ gJPText_HoldSpinTrade,
+ gJPText_HoldSpinShop
+};
+
+const u8 gText_1PlayerNeeded[] = _("1 player\nneeded.");
+const u8 gText_2PlayersNeeded[] = _("2 players\nneeded.");
+const u8 gText_3PlayersNeeded[] = _("3 players\nneeded.");
+const u8 gText_4PlayersNeeded[] = _("4 players\nneeded.");
+const u8 gText_2PlayerMode[] = _("2-PLAYER\nMODE");
+const u8 gText_3PlayerMode[] = _("3-PLAYER\nMODE");
+const u8 gText_4PlayerMode[] = _("4-PLAYER\nMODE");
+const u8 gText_5PlayerMode[] = _("5-PLAYER\nMODE");
+
+const u8 *const gUnknown_082EDB60[][5] = {
+ {
+ gText_1PlayerNeeded,
+ gText_2PlayerMode,
+ NULL,
+ NULL,
+ NULL
+ }, {
+ gText_3PlayersNeeded,
+ gText_2PlayersNeeded,
+ gText_1PlayerNeeded,
+ gText_4PlayerMode,
+ NULL
+ }, {
+ gText_1PlayerNeeded,
+ gText_2PlayerMode,
+ gText_3PlayerMode,
+ gText_4PlayerMode,
+ gText_5PlayerMode
+ }, {
+ gText_2PlayersNeeded,
+ gText_1PlayerNeeded,
+ gText_3PlayerMode,
+ gText_4PlayerMode,
+ gText_5PlayerMode
+ }, {
+ gText_1PlayerNeeded,
+ gText_2PlayerMode,
+ gText_3PlayerMode,
+ gText_4PlayerMode,
+ NULL
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_082EDBC4[] = _("{B_BUTTON}CANCEL");
+ALIGNED(4) const u8 unref_text_union_room_2[] = _("ため\nさんかしゃ ぼしゅうちゅう です!");
+ALIGNED(4) const u8 gUnknown_082EDBE8[] = _("{STR_VAR_2} contacted you for\n{STR_VAR_1}. Accept?");
+ALIGNED(4) const u8 gUnknown_082EDC0C[] = _("{STR_VAR_2} contacted you.\nWill you share {STR_VAR_1}?");
+ALIGNED(4) const u8 gUnknown_082EDC34[] = _("{STR_VAR_2} contacted you.\nAdd to the members?");
+ALIGNED(4) const u8 gUnknown_082EDC5C[] = _("{STR_VAR_1}!\nAre these members OK?");
+ALIGNED(4) const u8 gUnknown_082EDC78[] = _("Cancel {STR_VAR_1} MODE\nwith these members?");
+ALIGNED(4) const u8 gUnknown_082EDC9C[] = _("An “OK” was sent\nto {STR_VAR_1}.");
+ALIGNED(4) const u8 gUnknown_082EDCB4[] = _("The other TRAINER doesn't appear\nto be available now…\p");
+ALIGNED(4) const u8 gUnknown_082EDCEC[] = _("You can't transmit with a TRAINER\nwho is too far away.\p");
+ALIGNED(4) const u8 gUnknown_082EDD24[] = _("The other TRAINER(S) is/are not\nready yet.\p");
+
+const u8 *const gUnknown_082EDD50[] = {
+ gUnknown_082EDCEC,
+ gUnknown_082EDD24
+};
+
+ALIGNED(4) const u8 gUnknown_082EDD58[] = _("The {STR_VAR_1} MODE with\nthese members will be canceled.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_082EDD8C[] = _("There is a member who can no\nlonger remain available.\p");
+
+const u8 *const gUnknown_082EDDC4[] = {
+ gUnknown_082EDCB4,
+ gUnknown_082EDD8C
+};
+
+ALIGNED(4) const u8 gUnknown_082EDDCC[] = _("The other TRAINER appears\nunavailable…\p");
+ALIGNED(4) const u8 gUnknown_082EDDF4[] = _("{STR_VAR_1} sent back an “OK”!");
+ALIGNED(4) const u8 gUnknown_082EDE0C[] = _("{STR_VAR_1} OK'd your registration as\na member.");
+ALIGNED(4) const u8 gUnknown_082EDE34[] = _("{STR_VAR_1} replied, “No…”\p");
+ALIGNED(4) const u8 gUnknown_082EDE48[] = _("{STR_VAR_1}!\nAwaiting other members!");
+ALIGNED(4) const u8 gUnknown_082EDE64[] = _("Quit being a member?");
+ALIGNED(4) const u8 gUnknown_082EDE7C[] = _("You stopped being a member.\p");
+
+const u8 *const gUnknown_082EDE9C[] = {
+ NULL,
+ gUnknown_082EDD8C,
+ gUnknown_082EDDCC,
+ NULL,
+ NULL,
+ NULL,
+ gUnknown_082EDE34,
+ NULL,
+ NULL,
+ gUnknown_082EDE7C
+};
+
+ALIGNED(4) const u8 gUnknown_082EDEC4[] = _("The WIRELESS COMMUNICATION\nSYSTEM link has been established.");
+ALIGNED(4) const u8 gUnknown_082EDF04[] = _("The WIRELESS COMMUNICATION\nSYSTEM link has been dropped…");
+ALIGNED(4) const u8 gUnknown_082EDF40[] = _("The link with your friend has been\ndropped…");
+ALIGNED(4) const u8 gUnknown_082EDF6C[] = _("{STR_VAR_1} replied, “No…”");
+
+const u8 *const gUnknown_082EDF80[] = {
+ NULL,
+ gUnknown_082EDF40,
+ gUnknown_082EDF40,
+ NULL,
+ NULL,
+ NULL,
+ gUnknown_082EDF6C,
+ NULL,
+ NULL,
+ NULL
+};
+
+ALIGNED(4) const u8 gUnknown_082EDFA8[] = _("Do you want the {STR_VAR_2}\nMODE?");
+ALIGNED(4) const u8 gUnknown_082EDFC4[] = _("Do you want the {STR_VAR_2}\nMODE?");
+
+const u8 *const unref_text_ptrs_union_room_1[] = {
+ gUnknown_082EDFA8,
+ gUnknown_082EDFC4
+};
+
+ALIGNED(4) const u8 unref_text_union_room_3[] = _("Communicating…\nPlease wait.");
+ALIGNED(4) const u8 gUnknown_082EE004[] = _("Awaiting {STR_VAR_1}'s response about\nthe trade…");
+ALIGNED(4) const u8 gUnknown_082EE02C[] = _("Communicating{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
+ALIGNED(4) const u8 gUnknown_082EE098[] = _("Communicating with {STR_VAR_1}{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
+ALIGNED(4) const u8 gUnknown_082EE104[] = _("Please wait a while{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
+
+const u8 *const gUnknown_082EE17C[] = {
+ gUnknown_082EE02C,
+ gUnknown_082EE098,
+ gUnknown_082EE104
+};
+
+ALIGNED(4) const u8 gUnknown_082EE188[] = _("Hiya! Is there something that you\nwanted to do?");
+ALIGNED(4) const u8 gUnknown_082EE1B8[] = _("Hello!\nWould you like to do something?");
+ALIGNED(4) const u8 gUnknown_082EE1E0[] = _("{STR_VAR_1}: Hiya, we meet again!\nWhat are you up for this time?");
+ALIGNED(4) const u8 gUnknown_082EE218[] = _("{STR_VAR_1}: Oh! {PLAYER}, hello!\nWould you like to do something?");
+
+const u8 *const gUnknown_082EE24C[][2] = {
+ {
+ gUnknown_082EE188,
+ gUnknown_082EE1B8
+ }, {
+ gUnknown_082EE1E0,
+ gUnknown_082EE218
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_082EE25C[] = _("Want to do something?");
+ALIGNED(4) const u8 gUnknown_082EE274[] = _("Would you like to do something?");
+ALIGNED(4) const u8 gUnknown_082EE294[] = _("{STR_VAR_1}: What would you like to\ndo now?");
+ALIGNED(4) const u8 unref_text_union_room_4[] = _("{STR_VAR_1}: Want to do anything else?");
+
+const u8 *const unref_text_ptrs_union_room_2[][2] = {
+ {
+ gUnknown_082EE25C,
+ gUnknown_082EE274
+ }, {
+ gUnknown_082EE294,
+ gUnknown_082EE294
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_082EE2E8[] = _("Somebody has contacted you.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_082EE308[] = _("{STR_VAR_1} has contacted you.{PAUSE 60}");
+
+const u8 *const gUnknown_082EE324[] = {
+ gUnknown_082EE2E8,
+ gUnknown_082EE308
+};
+
+ALIGNED(4) const u8 gUnknown_082EE32C[] = _("Awaiting a response from\nthe other TRAINER…");
+ALIGNED(4) const u8 gUnknown_082EE358[] = _("Awaiting a response from\n{STR_VAR_1}…");
+
+const u8 *const gUnknown_082EE378[] = {
+ gUnknown_082EE32C,
+ gUnknown_082EE358
+};
+
+ALIGNED(4) const u8 gUnknown_082EE380[] = _("The other TRAINER showed\nyou their TRAINER CARD.\pWould you like to show your\nTRAINER CARD?");
+ALIGNED(4) const u8 gUnknown_082EE3DC[] = _("The other TRAINER challenges you\nto battle.\pWill you accept the battle\nchallenge?");
+ALIGNED(4) const u8 gUnknown_082EE430[] = _("The other TRAINER invites you\nto chat.\pWill you accept the chat\ninvitation?");
+ALIGNED(4) const u8 gUnknown_082EE47C[] = _("There is an offer to trade your\nregistered Lv. {SPECIAL_F7 0x00} {SPECIAL_F7 0x01}\pin exchange for a\nLv. {SPECIAL_F7 0x02} {SPECIAL_F7 0x03}.\pWill you accept this trade\noffer?");
+ALIGNED(4) const u8 gUnknown_082EE4F0[] = _("There is an offer to trade your\nregistered EGG.\lWill you accept this trade offer?");
+ALIGNED(4) const u8 gUnknown_082EE544[] = _("The chat has been dropped.\p");
+ALIGNED(4) const u8 gUnknown_082EE560[] = _("You declined the offer.\p");
+ALIGNED(4) const u8 gUnknown_082EE57C[] = _("You declined the offer.\p");
+ALIGNED(4) const u8 gUnknown_082EE598[] = _("The chat was ended.\p");
+
+const u8 *const unref_text_ptrs_union_room_3[] = {
+ gUnknown_082EE380,
+ gUnknown_082EE3DC,
+ gUnknown_082EE430,
+ gUnknown_082EE47C
+};
+
+ALIGNED(4) const u8 gUnknown_082EE5C0[] = _("Oh, hey! We're in a chat right now.\nWant to join us?");
+ALIGNED(4) const u8 gUnknown_082EE5F8[] = _("{STR_VAR_1}: Hey, {PLAYER}!\nWe're having a chat right now.\lWant to join us?");
+ALIGNED(4) const u8 gUnknown_082EE638[] = _("Oh, hi! We're having a chat now.\nWould you like to join us?");
+ALIGNED(4) const u8 gUnknown_082EE674[] = _("{STR_VAR_1}: Oh, hi, {PLAYER}!\nWe're having a chat now.\lWould you like to join us?");
+
+const u8 *const gUnknown_082EE6B8[][2] = {
+ {
+ gUnknown_082EE5C0,
+ gUnknown_082EE638
+ }, {
+ gUnknown_082EE5F8,
+ gUnknown_082EE674
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_082EE6C8[] = _("……\nThe TRAINER appears to be busy…\p");
+ALIGNED(4) const u8 gUnknown_082EE6EC[] = _("A battle, huh?\nAll right, just give me some time.");
+ALIGNED(4) const u8 gUnknown_082EE720[] = _("You want to chat, huh?\nSure, just wait a little.");
+ALIGNED(4) const u8 gUnknown_082EE754[] = _("Sure thing! As my “Greetings,”\nhere's my TRAINER CARD.");
+ALIGNED(4) const u8 gUnknown_082EE78C[] = _("A battle? Of course, but I need\ntime to get ready.");
+ALIGNED(4) const u8 gUnknown_082EE7C0[] = _("Did you want to chat?\nOkay, but please wait a moment.");
+ALIGNED(4) const u8 gUnknown_082EE7F8[] = _("As my introduction, I'll show you\nmy TRAINER CARD.");
+
+const u8 *const gUnknown_082EE82C[][4] = {
+ {
+ gUnknown_082EE6EC,
+ gUnknown_082EE720,
+ NULL,
+ gUnknown_082EE754
+ }, {
+ gUnknown_082EE78C,
+ gUnknown_082EE7C0,
+ NULL,
+ gUnknown_082EE7F8
+ }
+};
+
+ALIGNED(4) const u8 unref_text_union_room_5[] = _("You want to chat, huh?\nSure, just wait a little.");
+ALIGNED(4) const u8 gUnknown_082EE880[] = _("Thanks for waiting!\nLet's get our battle started!{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_082EE8B8[] = _("All right!\nLet's chat!{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_082EE8D4[] = _("Sorry I made you wait!\nLet's get started!{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_082EE904[] = _("Sorry I made you wait!\nLet's chat.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_082EE92C[] = _("The trade will be started.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_082EE94C[] = _("The battle will be started.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_082EE96C[] = _("Entering the chat…{PAUSE 60}");
+
+const u8 *const gUnknown_082EE984[][2][3] = {
+ {
+ {
+ gUnknown_082EE94C,
+ gUnknown_082EE96C,
+ gUnknown_082EE92C
+ }, {
+ gUnknown_082EE94C,
+ gUnknown_082EE96C,
+ gUnknown_082EE92C
+ }
+ }, {
+ {
+ gUnknown_082EE880,
+ gUnknown_082EE8B8,
+ gUnknown_082EE92C
+ }, {
+ gUnknown_082EE8D4,
+ gUnknown_082EE904,
+ gUnknown_082EE92C
+ }
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_082EE9B4[] = _("Sorry! My POKéMON don't seem to\nbe feeling too well right now.\lLet me battle you another time.\p");
+ALIGNED(4) const u8 gUnknown_082EEA14[] = _("I'm terribly sorry, but my POKéMON\naren't feeling well…\pLet's battle another time.\p");
+
+const u8 *const gUnknown_082EEA68[] = {
+ gUnknown_082EE9B4,
+ gUnknown_082EEA14
+};
+
+ALIGNED(4) const u8 gUnknown_082EEA70[] = _("Huh? My TRAINER CARD…\nWhere'd it go now?\lSorry! I'll show you another time!\p");
+ALIGNED(4) const u8 gUnknown_082EEAC0[] = _("Oh? Now where did I put my\nTRAINER CARD?…\lSorry! I'll show you later!\p");
+
+const u8 *const gUnknown_082EEB08[] = {
+ gUnknown_082EEA70,
+ gUnknown_082EEAC0
+};
+
+ALIGNED(4) const u8 gUnknown_082EEB10[] = _("If you want to do something with\nme, just give me a shout!\p");
+ALIGNED(4) const u8 gUnknown_082EEB4C[] = _("If you want to do something with\nme, don't be shy.\p");
+
+const u8 *const gUnknown_082EEB80[] = {
+ gUnknown_082EEB10,
+ gUnknown_082EEB4C
+};
+
+ALIGNED(4) const u8 gUnknown_082EEB88[] = _("Whoops! Sorry, but I have to do\nsomething else.\lAnother time, okay?\p");
+ALIGNED(4) const u8 gUnknown_082EEBD0[] = _("If you want to battle, you need\ntwo POKéMON that are below\lLv. 30.\p");
+ALIGNED(4) const u8 gUnknown_082EEC14[] = _("For a battle, you need two\nPOKéMON that are below Lv. 30.\p");
+ALIGNED(4) const u8 gUnknown_082EEC50[] = _("Oh, all right.\nCome see me anytime, okay?\p");
+ALIGNED(4) const u8 gUnknown_082EEC7C[] = _("Oh…\nPlease come by anytime.\p");
+
+const u8 *const gUnknown_082EEC9C[] = {
+ gUnknown_082EEC50,
+ gUnknown_082EEC7C
+};
+
+ALIGNED(4) const u8 gUnknown_082EECA4[] = _("Oh, sorry!\nI just can't right this instant.\lLet's chat another time.\p");
+ALIGNED(4) const u8 gUnknown_082EECEC[] = _("Oh, I'm sorry.\nI have too much to do right now.\lLet's chat some other time.\p");
+
+const u8 *const gUnknown_082EED3C[] = {
+ gUnknown_082EECA4,
+ gUnknown_082EECEC
+};
+
+ALIGNED(4) const u8 gUnknown_082EED44[] = _("Whoa!\nI can tell you're pretty tough!\p");
+ALIGNED(4) const u8 gUnknown_082EED6C[] = _("You used that move?\nThat's good strategy!\p");
+ALIGNED(4) const u8 gUnknown_082EED98[] = _("Way to go!\nThat was an eye-opener!\p");
+ALIGNED(4) const u8 gUnknown_082EEDBC[] = _("Oh! How could you use that\nPOKéMON in that situation?\p");
+ALIGNED(4) const u8 gUnknown_082EEDF4[] = _("That POKéMON…\nIt's been raised really well!\p");
+ALIGNED(4) const u8 gUnknown_082EEE24[] = _("That's it!\nThis is the right move now!\p");
+ALIGNED(4) const u8 gUnknown_082EEE4C[] = _("That's awesome!\nYou can battle that way?\p");
+ALIGNED(4) const u8 gUnknown_082EEE78[] = _("You have exquisite timing for\nswitching POKéMON!\p");
+
+const u8 *const gUnknown_082EEEAC[][4] = {
+ {
+ gUnknown_082EED44,
+ gUnknown_082EED6C,
+ gUnknown_082EED98,
+ gUnknown_082EEDBC
+ }, {
+ gUnknown_082EEDF4,
+ gUnknown_082EEE24,
+ gUnknown_082EEE4C,
+ gUnknown_082EEE78
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_082EEECC[] = _("Oh, I see!\nThis is educational!\p");
+ALIGNED(4) const u8 gUnknown_082EEEF0[] = _("Don't say anything funny anymore!\nI'm sore from laughing!\p");
+ALIGNED(4) const u8 gUnknown_082EEF2C[] = _("Oh?\nSomething like that happened.\p");
+ALIGNED(4) const u8 gUnknown_082EEF50[] = _("Hmhm… What?\nSo is this what you're saying?\p");
+ALIGNED(4) const u8 gUnknown_082EEF7C[] = _("Is that right?\nI didn't know that.\p");
+ALIGNED(4) const u8 gUnknown_082EEFA0[] = _("Ahaha!\nWhat is that about?\p");
+ALIGNED(4) const u8 gUnknown_082EEFBC[] = _("Yes, that's exactly it!\nThat's what I meant.\p");
+ALIGNED(4) const u8 gUnknown_082EEFEC[] = _("In other words…\nYes! That's right!\p");
+
+const u8 *const gUnknown_082EF010[][4] = {
+ {
+ gUnknown_082EEECC,
+ gUnknown_082EEEF0,
+ gUnknown_082EEF2C,
+ gUnknown_082EEF50
+ }, {
+ gUnknown_082EEF7C,
+ gUnknown_082EEFA0,
+ gUnknown_082EEFBC,
+ gUnknown_082EEFEC
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_082EF030[] = _("I'm just showing my TRAINER CARD\nas my way of greeting.\p");
+ALIGNED(4) const u8 gUnknown_082EF06C[] = _("I hope I get to know you better!\p");
+ALIGNED(4) const u8 gUnknown_082EF090[] = _("We're showing each other our\nTRAINER CARDS to get acquainted.\p");
+ALIGNED(4) const u8 gUnknown_082EF0D0[] = _("Glad to meet you.\nPlease don't be a stranger!\p");
+
+const u8 *const gUnknown_082EF100[][2] = {
+ {
+ gUnknown_082EF030,
+ gUnknown_082EF06C
+ }, {
+ gUnknown_082EF090,
+ gUnknown_082EF0D0
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_082EF110[] = _("Yeahah!\nI really wanted this POKéMON!\p");
+ALIGNED(4) const u8 gUnknown_082EF138[] = _("Finally, a trade got me that\nPOKéMON I'd wanted a long time.\p");
+ALIGNED(4) const u8 gUnknown_082EF178[] = _("I'm trading POKéMON right now.\p");
+ALIGNED(4) const u8 gUnknown_082EF198[] = _("I finally got that POKéMON I\nwanted in a trade!\p");
+
+const u8 *const gUnknown_082EF1CC[][4] = {
+ {
+ gUnknown_082EF110,
+ gUnknown_082EF138,
+ NULL,
+ NULL
+ }, {
+ gUnknown_082EF178,
+ gUnknown_082EF198,
+ NULL,
+ NULL
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_082EF1EC[] = _("{STR_VAR_1} checked the\nTRADING BOARD.\p");
+ALIGNED(4) const u8 gUnknown_082EF20C[] = _("Welcome to the TRADING BOARD.\pYou may register your POKéMON\nand offer it up for a trade.\pWould you like to register one of\nyour POKéMON?");
+ALIGNED(4) const u8 gUnknown_082EF298[] = _("This TRADING BOARD is used for\noffering a POKéMON for a trade.\pAll you need to do is register a\nPOKéMON for a trade.\pAnother TRAINER may offer a party\nPOKéMON in return for the trade.\pWe hope you will register POKéMON\nand trade them with many, many\lother TRAINERS.\pWould you like to register one of\nyour POKéMON?");
+ALIGNED(4) const u8 unref_text_union_room_6[] = _("We have registered your POKéMON for\ntrade on the TRADING BOARD.\pThank you for using this service!\p");
+ALIGNED(4) const u8 unref_text_union_room_7[] = _("Nobody has registered any POKéMON\nfor trade on the TRADING BOARD.\p\n");
+ALIGNED(4) const u8 gUnknown_082EF47C[] = _("Please choose the type of POKéMON\nthat you would like in the trade.\n");
+ALIGNED(4) const u8 gUnknown_082EF4C4[] = _("Which of your party POKéMON will\nyou offer in trade?\p");
+ALIGNED(4) const u8 gUnknown_082EF4FC[] = _("Registration has been canceled.\p");
+ALIGNED(4) const u8 gUnknown_082EF520[] = _("Registration has been completed.\p");
+ALIGNED(4) const u8 gUnknown_082EF544[] = _("The trade has been canceled.\p");
+ALIGNED(4) const u8 gUnknown_082EF564[] = _("Cancel the registration of your\nLv. {STR_VAR_2} {STR_VAR_1}?");
+ALIGNED(4) const u8 gUnknown_082EF590[] = _("Cancel the registration of your\nEGG?");
+ALIGNED(4) const u8 gUnknown_082EF5B8[] = _("The registration has been canceled.\p");
+ALIGNED(4) const u8 unref_text_union_room_8[] = _("TRAINERS wishing to make a trade\nwill be listed.");
+ALIGNED(4) const u8 unref_text_union_room_9[] = _("Please choose the TRAINER with whom\nyou would like to trade POKéMON.");
+ALIGNED(4) const u8 gUnknown_082EF65C[] = _("Would you like to ask {STR_VAR_1} to\nmake a trade?");
+ALIGNED(4) const u8 unref_text_union_room_10[] = _("Awaiting a response from\nthe other TRAINER…");
+ALIGNED(4) const u8 unref_text_union_room_11[] = _("You have not registered a POKéMON\nfor trading.\p");
+ALIGNED(4) const u8 gUnknown_082EF6E4[] = _("You don't have a {STR_VAR_2}-type\nPOKéMON that {STR_VAR_1} wants.\p");
+ALIGNED(4) const u8 gUnknown_082EF718[] = _("You don't have an EGG that\n{STR_VAR_1} wants.\p");
+ALIGNED(4) const u8 gUnknown_082EF740[] = _("{STR_VAR_1} can't make a trade for\nyour POKéMON right now.\p");
+ALIGNED(4) const u8 gUnknown_082EF774[] = _("You can't make a trade for\n{STR_VAR_1}'s POKéMON right now.\p");
+
+const u8 *const unref_text_ptrs_union_room_4[] = {
+ gUnknown_082EF740,
+ gUnknown_082EF774
+};
+
+ALIGNED(4) const u8 gUnknown_082EF7B0[] = _("Your trade offer was rejected.\p");
+ALIGNED(4) const u8 gUnknown_082EF7D0[] = _("EGG TRADE");
+ALIGNED(4) const u8 gUnknown_082EF7DC[] = _("{DPAD_UPDOWN}CHOOSE {A_BUTTON}JOIN {B_BUTTON}CANCEL");
+ALIGNED(4) const u8 gUnknown_082EF7F8[] = _("Please choose a TRAINER.");
+ALIGNED(4) const u8 gUnknown_082EF814[] = _("Please choose a TRAINER for\na SINGLE BATTLE.");
+ALIGNED(4) const u8 gUnknown_082EF844[] = _("Please choose a TRAINER for\na DOUBLE BATTLE.");
+ALIGNED(4) const u8 gUnknown_082EF874[] = _("Please choose the LEADER\nfor a MULTI BATTLE.");
+ALIGNED(4) const u8 gUnknown_082EF8A4[] = _("Please choose the TRAINER to\ntrade with.");
+ALIGNED(4) const u8 gUnknown_082EF8D0[] = _("Please choose the TRAINER who is\nsharing WONDER CARDS.");
+ALIGNED(4) const u8 gUnknown_082EF908[] = _("Please choose the TRAINER who is\nsharing WONDER NEWS.");
+ALIGNED(4) const u8 gUnknown_082EF940[] = _("Jump with mini POKéMON!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_082EF974[] = _("BERRY CRUSH!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_082EF99C[] = _("DODRIO BERRY-PICKING!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_082EF9CC[] = _("BERRY BLENDER!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_082EF9F8[] = _("RECORD CORNER!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_082EFA24[] = _("COOLNESS CONTEST!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_082EFA50[] = _("BEAUTY CONTEST!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_082EFA7C[] = _("CUTENESS CONTEST!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_082EFAA8[] = _("SMARTNESS CONTEST!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_082EFAD8[] = _("TOUGHNESS CONTEST!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_082EFB08[] = _("BATTLE TOWER LEVEL 50!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_082EFB3C[] = _("BATTLE TOWER OPEN LEVEL!\nPlease choose the LEADER.");
+
+const u8 *const gUnknown_082EFB70[] = {
+ gUnknown_082EF814,
+ gUnknown_082EF844,
+ gUnknown_082EF874,
+ gUnknown_082EF8A4,
+ gUnknown_082EF940,
+ gUnknown_082EF974,
+ gUnknown_082EF99C,
+ gUnknown_082EF8D0,
+ gUnknown_082EF908,
+ NULL,
+ NULL,
+ NULL,
+ gUnknown_082EF9F8,
+ gUnknown_082EF9CC,
+ NULL,
+ gUnknown_082EFA24,
+ gUnknown_082EFA50,
+ gUnknown_082EFA7C,
+ gUnknown_082EFAA8,
+ gUnknown_082EFAD8,
+ gUnknown_082EFB08,
+ gUnknown_082EFB3C
+};
+
+ALIGNED(4) const u8 gUnknown_082EFBC8[] = _("Searching for a WIRELESS\nCOMMUNICATION SYSTEM. Wait...");
+ALIGNED(4) const u8 unref_text_union_room_12[] = _("For a DOUBLE BATTLE, you must have\nat least two POKéMON.\p");
+ALIGNED(4) const u8 gUnknown_082EFC3C[] = _("Awaiting {STR_VAR_1}'s response…");
+ALIGNED(4) const u8 gUnknown_082EFC54[] = _("{STR_VAR_1} has been asked to register\nyou as a member. Please wait.");
+ALIGNED(4) const u8 gUnknown_082EFC90[] = _("Awaiting a response from the\nWIRELESS COMMUNICATION SYSTEM.");
+ALIGNED(4) const u8 unref_text_union_room_13[] = _("Please wait for other TRAINERS to\ngather and get ready.");
+ALIGNED(4) const u8 gUnknown_082EFD04[] = _("No CARDS appear to be shared \nright now.");
+ALIGNED(4) const u8 gUnknown_082EFD30[] = _("No NEWS appears to be shared\nright now.");
+
+const u8 *const gUnknown_082EFD58[] = {
+ gUnknown_082EFD04,
+ gUnknown_082EFD30
+};
+
+ALIGNED(4) const u8 gUnknown_082EFD60[] = _("BATTLE");
+ALIGNED(4) const u8 gUnknown_082EFD68[] = _("CHAT");
+ALIGNED(4) const u8 gUnknown_082EFD70[] = _("GREETINGS");
+ALIGNED(4) const u8 gUnknown_082EFD7C[] = _("EXIT");
+ALIGNED(4) const u8 gUnknown_082EFD84[] = _("EXIT");
+ALIGNED(4) const u8 gUnknown_082EFD8C[] = _("INFO");
+ALIGNED(4) const u8 gUnknown_082EFD94[] = _("NAME{CLEAR_TO 0x3C}WANTED{CLEAR_TO 0x6E}OFFER{CLEAR_TO 0xC6}LV.");
+ALIGNED(4) const u8 gUnknown_082EFDB0[] = _("SINGLE BATTLE");
+ALIGNED(4) const u8 gUnknown_082EFDC0[] = _("DOUBLE BATTLE");
+ALIGNED(4) const u8 gUnknown_082EFDD0[] = _("MULTI BATTLE");
+ALIGNED(4) const u8 gUnknown_082EFDE0[] = _("POKéMON TRADES");
+ALIGNED(4) const u8 gUnknown_082EFDF0[] = _("CHAT");
+ALIGNED(4) const u8 gUnknown_082EFDF8[] = _("CARDS");
+ALIGNED(4) const u8 gUnknown_082EFE00[] = _("WONDER CARDS");
+ALIGNED(4) const u8 gUnknown_082EFE10[] = _("WONDER NEWS");
+ALIGNED(4) const u8 gUnknown_082EFE1C[] = _("POKéMON JUMP");
+ALIGNED(4) const u8 gUnknown_082EFE2C[] = _("BERRY CRUSH");
+ALIGNED(4) const u8 gUnknown_082EFE38[] = _("BERRY-PICKING");
+ALIGNED(4) const u8 gUnknown_082EFE48[] = _("SEARCH");
+ALIGNED(4) const u8 gUnknown_082EFE50[] = _("BERRY BLENDER");
+ALIGNED(4) const u8 gUnknown_082EFE60[] = _("RECORD CORNER");
+ALIGNED(4) const u8 gUnknown_082EFE70[] = _("COOL CONTEST");
+ALIGNED(4) const u8 gUnknown_082EFE80[] = _("BEAUTY CONTEST");
+ALIGNED(4) const u8 gUnknown_082EFE90[] = _("CUTE CONTEST");
+ALIGNED(4) const u8 gUnknown_082EFEA0[] = _("SMART CONTEST");
+ALIGNED(4) const u8 gUnknown_082EFEB0[] = _("TOUGH CONTEST");
+ALIGNED(4) const u8 gUnknown_082EFEC0[] = _("BATTLE TOWER LV. 50");
+ALIGNED(4) const u8 gUnknown_082EFED4[] = _("BATTLE TOWER OPEN LEVEL");
+ALIGNED(4) const u8 gUnknown_082EFEEC[] = _("It's a NORMAL CARD.");
+ALIGNED(4) const u8 gUnknown_082EFF00[] = _("It's a BRONZE CARD!");
+ALIGNED(4) const u8 gUnknown_082EFF14[] = _("It's a COPPER CARD!");
+ALIGNED(4) const u8 gUnknown_082EFF28[] = _("It's a SILVER CARD!");
+ALIGNED(4) const u8 gUnknown_082EFF3C[] = _("It's a GOLD CARD!");
+
+const u8 *const gUnknown_082EFF50[] = {
+ gUnknown_082EFEEC,
+ gUnknown_082EFF00,
+ gUnknown_082EFF14,
+ gUnknown_082EFF28,
+ gUnknown_082EFF3C
+};
+
+ALIGNED(4) const u8 gUnknown_082EFF64[] = _("This is {SPECIAL_F7 0x00} {SPECIAL_F7 0x01}'s\nTRAINER CARD…\l{SPECIAL_F7 0x02}\pPOKéDEX: {SPECIAL_F7 0x03}\nTIME: {SPECIAL_F7 0x04}:{SPECIAL_F7 0x05}\p");
+ALIGNED(4) const u8 gUnknown_082EFFA4[] = _("BATTLES: WINS: {SPECIAL_F7 0x00} LOSSES: {SPECIAL_F7 0x02}\nTRADES: {SPECIAL_F7 0x03}\p“{SPECIAL_F7 0x04} {SPECIAL_F7 0x05}\n{SPECIAL_F7 0x06} {SPECIAL_F7 0x07}”\p");
+ALIGNED(4) const u8 gUnknown_082EFFDC[] = _("{SPECIAL_F7 0x01}: Glad to have met you!{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_082EFFFC[] = _("{SPECIAL_F7 0x01}: Glad to meet you!{PAUSE 60}");
+
+const u8 *const gUnknown_082F0018[] = {
+ gUnknown_082EFFDC,
+ gUnknown_082EFFFC
+};
+
+ALIGNED(4) const u8 gUnknown_082F0020[] = _("Finished checking {SPECIAL_F7 0x01}'s\nTRAINER CARD.{PAUSE 60}");
+
+const u8 *const gUnknown_082F0048[] = {
+ gText_EmptyString,
+ gUnknown_082EFDB0,
+ gUnknown_082EFDC0,
+ gUnknown_082EFDD0,
+ gUnknown_082EFDE0,
+ gUnknown_082EFDF0,
+ gUnknown_082EFE00,
+ gUnknown_082EFE10,
+ gUnknown_082EFDF8,
+ gUnknown_082EFE1C,
+ gUnknown_082EFE2C,
+ gUnknown_082EFE38,
+ gUnknown_082EFE48,
+ gText_EmptyString,
+ gUnknown_082EFED4,
+ gUnknown_082EFE60,
+ gUnknown_082EFE50,
+ gText_EmptyString,
+ gText_EmptyString,
+ gText_EmptyString,
+ gText_EmptyString,
+ gUnknown_082EFE00,
+ gUnknown_082EFE10,
+ gUnknown_082EFE70,
+ gUnknown_082EFE80,
+ gUnknown_082EFE90,
+ gUnknown_082EFEA0,
+ gUnknown_082EFEB0,
+ gUnknown_082EFEC0
+};
+
+const struct WindowTemplate gUnknown_082F00BC = {
+ .bg = 0x00,
+ .tilemapLeft = 0x00,
+ .tilemapTop = 0x00,
+ .width = 0x1E,
+ .height = 0x02,
+ .paletteNum = 0x0F,
+ .baseBlock = 0x0008
+};
+
+const u32 gUnknown_082F00C4[] = {
+ 0x0201,
+ 0x0202,
+ 0x0403,
+ 0x0204,
+ 0x2509,
+ 0x250a,
+ 0x350b,
+ 0x0000,
+ 0x0000,
+ 0x0000,
+ 0x0000,
+ 0x0000,
+ 0x240f,
+ 0x2410,
+ 0x0000,
+ 0x2417,
+ 0x2418,
+ 0x2419,
+ 0x241a,
+ 0x241b,
+ 0x021c,
+ 0x020e
+};
+
+const struct WindowTemplate gUnknown_082F011C = {
+ .bg = 0x00,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x03,
+ .width = 0x0d,
+ .height = 0x08,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0044
+};
+
+const struct WindowTemplate gUnknown_082F0124 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x03,
+ .width = 0x0d,
+ .height = 0x0a,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0044
+};
+
+const struct WindowTemplate gUnknown_082F012C = {
+ .bg = 0x00,
+ .tilemapLeft = 0x10,
+ .tilemapTop = 0x03,
+ .width = 0x07,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x00c6
+};
+
+const struct ListMenuItem gUnknown_082F0134[] = {
+ { gText_EmptyString, 0 },
+ { gText_EmptyString, 1 },
+ { gText_EmptyString, 2 },
+ { gText_EmptyString, 3 },
+ { gText_EmptyString, 4 }
+};
+
+const struct ListMenuTemplate gUnknown_082F015C = {
+ .items = gUnknown_082F0134,
+ .moveCursorFunc = NULL,
+ .itemPrintFunc = sub_8013278,
+ .totalItems = 5,
+ .maxShowed = 5,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 0,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 0,
+ .fontId = 1,
+ .cursorKind = 1
+};
+
+const struct WindowTemplate gUnknown_082F0174 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x03,
+ .width = 0x11,
+ .height = 0x0a,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0044
+};
+
+const struct WindowTemplate gUnknown_082F017C = {
+ .bg = 0x00,
+ .tilemapLeft = 0x14,
+ .tilemapTop = 0x03,
+ .width = 0x07,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x00ee
+};
+
+const struct ListMenuItem gUnknown_082F0184[] = {
+ { gText_EmptyString, 0 },
+ { gText_EmptyString, 1 },
+ { gText_EmptyString, 2 },
+ { gText_EmptyString, 3 },
+ { gText_EmptyString, 4 },
+ { gText_EmptyString, 5 },
+ { gText_EmptyString, 6 },
+ { gText_EmptyString, 7 },
+ { gText_EmptyString, 8 },
+ { gText_EmptyString, 9 },
+ { gText_EmptyString, 10 },
+ { gText_EmptyString, 11 },
+ { gText_EmptyString, 12 },
+ { gText_EmptyString, 13 },
+ { gText_EmptyString, 14 },
+ { gText_EmptyString, 15 }
+};
+
+const struct ListMenuTemplate gUnknown_082F0204 = {
+ .items = gUnknown_082F0184,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = sub_8013DF4,
+ .totalItems = 16,
+ .maxShowed = 5,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 1,
+ .fontId = 1,
+ .cursorKind = 0
+};
+
+const struct WindowTemplate gUnknown_082F021C = {
+ .bg = 0x00,
+ .tilemapLeft = 0x14,
+ .tilemapTop = 0x05,
+ .width = 0x10,
+ .height = 0x08,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0001
+};
+
+const struct ListMenuItem gUnknown_082F0224[] = {
+ { gUnknown_082EFD70, 0x208 },
+ { gUnknown_082EFD60, 0x241 },
+ { gUnknown_082EFD68, 0x245 },
+ { gUnknown_082EFD7C, 0x040 }
+};
+
+const struct ListMenuTemplate gUnknown_082F0244 = {
+ .items = gUnknown_082F0224,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = 4,
+ .maxShowed = 4,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 0,
+ .fontId = 1,
+ .cursorKind = 0
+};
+
+const struct WindowTemplate gUnknown_082F025C = {
+ .bg = 0x00,
+ .tilemapLeft = 0x12,
+ .tilemapTop = 0x07,
+ .width = 0x10,
+ .height = 0x06,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0001
+};
+
+const struct ListMenuItem gUnknown_082F0264[] = {
+ { gText_Register, 1 },
+ { gUnknown_082EFD8C, 2 },
+ { gUnknown_082EFD7C, 3 }
+};
+
+const struct ListMenuTemplate gUnknown_082F027C = {
+ .items = gUnknown_082F0264,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = 3,
+ .maxShowed = 3,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 0,
+ .fontId = 1,
+ .cursorKind = 0
+};
+
+const struct WindowTemplate gUnknown_082F0294 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x14,
+ .tilemapTop = 0x01,
+ .width = 0x10,
+ .height = 0x0c,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0001
+};
+
+const struct ListMenuItem gUnknown_082F029C[] = {
+ { gTypeNames[TYPE_NORMAL], TYPE_NORMAL },
+ { gTypeNames[TYPE_FIRE], TYPE_FIRE },
+ { gTypeNames[TYPE_WATER], TYPE_WATER },
+ { gTypeNames[TYPE_ELECTRIC], TYPE_ELECTRIC },
+ { gTypeNames[TYPE_GRASS], TYPE_GRASS },
+ { gTypeNames[TYPE_ICE], TYPE_ICE },
+ { gTypeNames[TYPE_GROUND], TYPE_GROUND },
+ { gTypeNames[TYPE_ROCK], TYPE_ROCK },
+ { gTypeNames[TYPE_FLYING], TYPE_FLYING },
+ { gTypeNames[TYPE_PSYCHIC], TYPE_PSYCHIC },
+ { gTypeNames[TYPE_FIGHTING], TYPE_FIGHTING },
+ { gTypeNames[TYPE_POISON], TYPE_POISON },
+ { gTypeNames[TYPE_BUG], TYPE_BUG },
+ { gTypeNames[TYPE_GHOST], TYPE_GHOST },
+ { gTypeNames[TYPE_DRAGON], TYPE_DRAGON },
+ { gTypeNames[TYPE_STEEL], TYPE_STEEL },
+ { gTypeNames[TYPE_DARK], TYPE_DARK },
+ { gUnknown_082EFD7C, NUMBER_OF_MON_TYPES }
+};
+
+const struct ListMenuTemplate gUnknown_082F032C = {
+ .items = gUnknown_082F029C,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = NUMBER_OF_MON_TYPES,
+ .maxShowed = 6,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 0,
+ .fontId = 1,
+ .cursorKind = 0
+};
+
+const struct WindowTemplate gUnknown_082F0344 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x01,
+ .width = 0x1c,
+ .height = 0x02,
+ .paletteNum = 0x0d,
+ .baseBlock = 0x0001
+};
+
+const struct WindowTemplate gUnknown_082F034C = {
+ .bg = 0x00,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x05,
+ .width = 0x1c,
+ .height = 0x0c,
+ .paletteNum = 0x0d,
+ .baseBlock = 0x0039
+};
+
+const struct ListMenuItem gUnknown_082F0354[] = {
+ { gText_EmptyString, -3 },
+ { gText_EmptyString, 0 },
+ { gText_EmptyString, 1 },
+ { gText_EmptyString, 2 },
+ { gText_EmptyString, 3 },
+ { gText_EmptyString, 4 },
+ { gText_EmptyString, 5 },
+ { gText_EmptyString, 6 },
+ { gText_EmptyString, 7 },
+ { gUnknown_082EFD84, 8 }
+};
+
+const struct ListMenuTemplate gUnknown_082F03A4 = {
+ .items = gUnknown_082F0354,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = sub_8017BE8,
+ .totalItems = 10,
+ .maxShowed = 6,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 14,
+ .fillValue = 15,
+ .cursorShadowPal = 13,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 0,
+ .fontId = 1,
+ .cursorKind = 0
+};
+
+const struct WindowTemplate UnrefWindowTemplate_082F03B4 = {
+ .bg = 0x00,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x05,
+ .width = 0x1c,
+ .height = 0x0c,
+ .paletteNum = 0x0d,
+ .baseBlock = 0x0039
+};
+
+const struct ListMenuItem gUnknown_082F03C4[] = {
+ { gText_EmptyString, 0 },
+ { gText_EmptyString, 1 },
+ { gText_EmptyString, 2 },
+ { gText_EmptyString, 3 },
+ { gText_EmptyString, 4 },
+ { gText_EmptyString, 5 },
+ { gText_EmptyString, 6 },
+ { gText_EmptyString, 7 },
+ { gText_EmptyString, 8 },
+ { gText_EmptyString, 9 },
+ { gText_EmptyString, 10 },
+ { gText_EmptyString, 11 },
+ { gText_EmptyString, 12 },
+ { gText_EmptyString, 13 },
+ { gText_EmptyString, 14 },
+ { gText_EmptyString, 15 }
+};
+
+const struct ListMenuTemplate UnrefListMenuTemplate_082F0444 = {
+ .items = gUnknown_082F03C4,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = nullsub_14,
+ .totalItems = 16,
+ .maxShowed = 4,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 1,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = 1,
+ .fontId = 1,
+ .cursorKind = 0
+};
+
+const struct UnkStruct_Shared gUnknown_082F045C = {0};
+
+ALIGNED(4) const u8 gUnknown_082F0474[] = {0x01, 0xff};
+ALIGNED(4) const u8 gUnknown_082F0478[] = {0x02, 0xff};
+ALIGNED(4) const u8 gUnknown_082F047C[] = {0x03, 0xff};
+ALIGNED(4) const u8 gUnknown_082F0480[] = {0x04, 0xff};
+ALIGNED(4) const u8 gUnknown_082F0484[] = {0x09, 0xff};
+ALIGNED(4) const u8 gUnknown_082F0488[] = {0x0a, 0xff};
+ALIGNED(4) const u8 gUnknown_082F048C[] = {0x0b, 0xff};
+ALIGNED(4) const u8 gUnknown_082F0490[] = {0x15, 0xff};
+ALIGNED(4) const u8 gUnknown_082F0494[] = {0x16, 0xff};
+ALIGNED(4) const u8 gUnknown_082F0498[] = {0x40, 0x41, 0x44, 0x45, 0x48, 0x51, 0x52, 0x53, 0x54, 0xff};
+ALIGNED(4) const u8 gUnknown_082F04A4[] = {0x0c, 0xff};
+ALIGNED(4) const u8 gUnknown_082F04A8[] = {0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x15, 0x16, 0x0d, 0xff};
+ALIGNED(4) const u8 gUnknown_082F04B4[] = {0x0f, 0xff};
+ALIGNED(4) const u8 gUnknown_082F04B8[] = {0x10, 0xff};
+ALIGNED(4) const u8 gUnknown_082F04BC[] = {0x17, 0xff};
+ALIGNED(4) const u8 gUnknown_082F04C0[] = {0x18, 0xff};
+ALIGNED(4) const u8 gUnknown_082F04C4[] = {0x19, 0xff};
+ALIGNED(4) const u8 gUnknown_082F04C8[] = {0x1a, 0xff};
+ALIGNED(4) const u8 gUnknown_082F04CC[] = {0x1b, 0xff};
+ALIGNED(4) const u8 gUnknown_082F04D0[] = {0x1c, 0xff};
+ALIGNED(4) const u8 gUnknown_082F04D4[] = {0x0e, 0xff};
+
+const u8 *const gUnknown_082F04D8[] = {
+ gUnknown_082F0474,
+ gUnknown_082F0478,
+ gUnknown_082F047C,
+ gUnknown_082F0480,
+ gUnknown_082F0484,
+ gUnknown_082F0488,
+ gUnknown_082F048C,
+ gUnknown_082F0490,
+ gUnknown_082F0494,
+ gUnknown_082F0498,
+ gUnknown_082F04A4,
+ gUnknown_082F04A8,
+ gUnknown_082F04B4,
+ gUnknown_082F04B8,
+ NULL,
+ gUnknown_082F04BC,
+ gUnknown_082F04C0,
+ gUnknown_082F04C4,
+ gUnknown_082F04C8,
+ gUnknown_082F04CC,
+ gUnknown_082F04D0,
+ gUnknown_082F04D4
+};
+
+const u8 gUnknown_082F0530[] = {
+ 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x15,
+ 0x16, 0x00, 0x00, 0x00, 0x0f, 0x10, 0x00, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x0e, 0x00, 0x00
+};
// code
-void nullsub_89(void)
+void nullsub_89(u8 taskId)
{
}
@@ -925,7 +1734,7 @@ bool8 sub_801320C(struct UnkStruct_Leader *data, u32 arg1, u32 arg2)
return FALSE;
}
-void sub_8013278(u8 arg0, u32 id, u8 arg2)
+void sub_8013278(u8 arg0, s32 id, u8 arg2)
{
struct UnkStruct_Leader *data = gUnknown_02022C30.leader;
u8 var = 0;
@@ -971,7 +1780,7 @@ u8 sub_80132D4(struct UnkStruct_Main0 *arg0)
}
for (id = 0; id < 4; id++)
- sub_8017734(data->field_0->arr, &data->field_4->arr[id].unk0, 5);
+ sub_8017734(data->field_0->arr, &data->field_4->arr[id], 5);
if (ret != 2)
{
@@ -1430,7 +2239,7 @@ u8 sub_8013DBC(struct UnkStruct_Group *data, u32 id)
return 0;
}
-void sub_8013DF4(u8 arg0, u32 id, u8 arg2)
+void sub_8013DF4(u8 arg0, s32 id, u8 arg2)
{
struct UnkStruct_Group *data = gUnknown_02022C30.group;
u8 var = sub_8013DBC(data, id);
@@ -1454,7 +2263,7 @@ u8 sub_8013E44(void)
{
if (data->field_0->arr[i].field_1A_0 == 1)
{
- if (sub_8017678(&data->field_0->arr[i], &data->field_4->arr[id]))
+ if (sub_8017678(&data->field_0->arr[i].unk, &data->field_4->arr[id].unk0))
{
data->field_0->arr[i].unk = data->field_4->arr[id].unk0;
data->field_0->arr[i].field_1B = 0x40;
@@ -1496,7 +2305,7 @@ u8 sub_8013E44(void)
for (id = 0; id < 4; id++)
{
- if (sub_8017734(data->field_0->arr, &data->field_4->arr[id].unk0, 16) != 0xFF)
+ if (sub_8017734(data->field_0->arr, &data->field_4->arr[id], 16) != 0xFF)
ret = 1;
}
@@ -2342,7 +3151,7 @@ void sub_80152F4(u8 taskId)
{
if (data->field_0->arr[0].field_1A_0 == 1 && !data->field_0->arr[0].unk.field_0.unk_0a_7)
{
- if (sub_8016F1C(&data->field_0->arr[0], data->field_12 + 7))
+ if (sub_8016F1C(&data->field_0->arr[0].unk.field_0, data->field_12 + 7))
{
data->field_F = 0;
data->field_14 = 0;
@@ -2456,7 +3265,7 @@ void UnionRoomSpecial(void)
// dumb line needed to match
gUnknown_02022C30.uRoom = gUnknown_02022C30.uRoom;
- dataPtr = AllocZeroed(0x26C);
+ dataPtr = AllocZeroed(sizeof(*gUnknown_02022C30.uRoom));
gUnknown_02022C30.uRoom = dataPtr;
gUnknown_03000DA8 = dataPtr;
@@ -2474,12 +3283,12 @@ u16 ReadAsU16(const u8 *ptr)
return (ptr[1] << 8) | (ptr[0]);
}
-void sub_8015664(u32 arg0, const u8 *src)
+void sub_8015664(u32 nextState, const u8 *src)
{
struct UnkStruct_URoom *data = gUnknown_02022C30.uRoom;
data->state = 8;
- data->stateAfterPrint = arg0;
+ data->stateAfterPrint = nextState;
if (src != gStringVar4)
StringExpandPlaceholders(gStringVar4, src);
}
@@ -2532,7 +3341,7 @@ void sub_80156E0(u8 taskId)
break;
case 2:
sub_8010F84(0x40, 0, 0);
- sub_8010FCC(gUnknown_02022C40.field_2, gUnknown_02022C40.field_A, gUnknown_02022C40.field_C);
+ sub_8010FCC(gUnknown_02022C40.type, gUnknown_02022C40.playerSpecies, gUnknown_02022C40.playerLevel);
sub_800B488();
OpenLink();
sub_8011C84();
@@ -3023,7 +3832,7 @@ void sub_80156E0(u8 taskId)
break;
case 13:
sub_8017E00(gStringVar4, gUnknown_02022C2C | 0x40);
- sub_8015664(0xE, gStringVar4);
+ sub_8015664(14, gStringVar4);
break;
case 14:
sub_800ADF8();
@@ -3127,14 +3936,14 @@ void sub_80156E0(u8 taskId)
sub_801568C(gUnknown_082EF4FC);
break;
default:
- gUnknown_02022C40.field_2 = var5;
+ gUnknown_02022C40.type = var5;
data->state = 55;
break;
}
}
break;
case 55:
- sub_8010FCC(gUnknown_02022C40.field_2, gUnknown_02022C40.field_A, gUnknown_02022C40.field_C);
+ sub_8010FCC(gUnknown_02022C40.type, gUnknown_02022C40.playerSpecies, gUnknown_02022C40.playerLevel);
sub_801568C(gUnknown_082EF520);
break;
case 44:
@@ -3421,7 +4230,7 @@ u8 sub_8016B00(void)
{
if (structPtr->field_0->arr[j].field_1A_0 == 1)
{
- if (sub_8017678(&structPtr->field_0->arr[j], &structPtr->field_4->arr[i]))
+ if (sub_8017678(&structPtr->field_0->arr[j].unk, &structPtr->field_4->arr[i].unk0))
{
structPtr->field_0->arr[j].unk = structPtr->field_4->arr[i].unk0;
structPtr->field_0->arr[j].field_1B = 0x40;
@@ -3463,40 +4272,1118 @@ u8 sub_8016B00(void)
}
for (i = 0; i < 4; i++)
{
- if (sub_8017734(&structPtr->field_0->arr[0], &structPtr->field_4->arr[i].unk0, 8) != 0xFF)
+ if (sub_8017734(&structPtr->field_0->arr[0], &structPtr->field_4->arr[i], 8) != 0xFF)
r7 = 1;
}
return r7;
}
-/*
void sub_8016CA0(u8 taskId)
{
s32 i, j;
- struct UnkLinkRfuStruct_02022B14 sp0;
- u8 text[10];
- struct UnkStruct_Main4 *ptr = (void*) gTasks[taskId].data;
+ struct UnkStruct_Shared sp0;
+ struct UnkStruct_Main4 **ptr = (void*) gTasks[taskId].data;
+ bool8 r4;
for (i = 0; i < 4; i++)
{
- j = sub_800DE7C(&sp0, text, i);
- if (!sub_8013D88(sp0.unk_0a_0, gTasks[taskId].data[4]))
- sp0 = gUnknown_082F045C.field_0;
- if (sp0.unk_00.unk_00_0 == 1)
- sp0 = gUnknown_082F045C.field_0;
-
- if (!j)
+ r4 = sub_800DE7C(&sp0.field_0, sp0.playerName, i);
+ if (!sub_8013D88(sp0.field_0.unk_0a_0, gTasks[taskId].data[4]))
+ {
+ sp0 = gUnknown_082F045C;
+ }
+ if (sp0.field_0.unk_00.unk_00_0 == 1)
+ {
+ sp0 = gUnknown_082F045C;
+ }
+ if (!r4)
{
for (j = 0; j < i; j++)
{
- if (sub_8017630())
+ if (!sub_8017630(&ptr[1]->arr[j].unk0, &sp0))
+ {
+ sp0 = gUnknown_082F045C;
+ }
}
+ ptr[1]->arr[i].unk0 = sp0;
+ ptr[1]->arr[i].unk18 = sub_8017630(&ptr[1]->arr[i].unk0, &gUnknown_082F045C);
}
else
{
+ ptr[0]->arr[i].unk0 = sp0;
+ ptr[0]->arr[i].unk18 = sub_8017630(&ptr[0]->arr[i].unk0, &gUnknown_082F045C);
+ }
+ }
+}
+
+u8 sub_8016DF0(struct UnkStruct_Main4 * a0, struct UnkStruct_Main4 * a1, u32 a2)
+{
+ u8 taskId = CreateTask(sub_8016CA0, 0);
+ struct UnkStruct_Main4 ** data = (void *)gTasks[taskId].data;
+ data[0] = a0;
+ data[1] = a1;
+ gTasks[taskId].data[4] = a2;
+ return taskId;
+}
+
+void sub_8016E24(u8 taskId)
+{
+ s32 i, j;
+ struct UnkStruct_Main4 **ptr = (void*) gTasks[taskId].data;
+
+ for (i = 0; i < 4; i++)
+ {
+ sub_800DE7C(&ptr[0]->arr[i].unk0.field_0, ptr[0]->arr[i].unk0.playerName, i);
+ if (!sub_8013D88(ptr[0]->arr[i].unk0.field_0.unk_0a_0, gTasks[taskId].data[2]))
+ {
+ ptr[0]->arr[i].unk0 = gUnknown_082F045C;
+ }
+ for (j = 0; j < i; j++)
+ {
+ if (!sub_8017630(&ptr[0]->arr[j].unk0, &ptr[0]->arr[i].unk0))
+ {
+ ptr[0]->arr[i].unk0 = gUnknown_082F045C;
+ }
+ }
+ ptr[0]->arr[i].unk18 = sub_8017630(&ptr[0]->arr[i].unk0, &gUnknown_082F045C);
+ }
+}
+
+bool32 sub_8016F1C(struct UnkLinkRfuStruct_02022B14 *arg0, s16 arg1)
+{
+ if (arg1 == 7)
+ {
+ if (!arg0->unk_00.unk_00_5)
+ {
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ else if (arg1 == 8)
+ {
+ if (!arg0->unk_00.unk_00_4)
+ {
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+void sub_8016F44(u8 taskId)
+{
+ s32 i;
+ struct UnkStruct_Main4 **ptr = (void*) gTasks[taskId].data;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sub_800DF34(&ptr[0]->arr[i].unk0.field_0, ptr[0]->arr[i].unk0.playerName, i))
+ {
+ sub_8016F1C(&ptr[0]->arr[i].unk0.field_0, gTasks[taskId].data[2]);
+ }
+ ptr[0]->arr[i].unk18 = sub_8017630(&ptr[0]->arr[i].unk0, &gUnknown_082F045C);
+ }
+}
+
+u8 sub_8016FC0(struct UnkStruct_Main4 * a0, u32 a1)
+{
+ u8 taskId = CreateTask(sub_8016E24, 0);
+ struct UnkStruct_Main4 **ptr = (void*) gTasks[taskId].data;
+ ptr[0] = a0;
+ gTasks[taskId].data[2] = a1;
+ return taskId;
+}
+
+u8 sub_8016FF0(struct UnkStruct_Main4 * a0, u32 a1)
+{
+ u8 taskId = CreateTask(sub_8016F44, 0);
+ struct UnkStruct_Main4 **ptr = (void*) gTasks[taskId].data;
+ ptr[0] = a0;
+ gTasks[taskId].data[2] = a1;
+ return taskId;
+}
+
+bool32 sub_8017020(const u8 *src)
+{
+ sub_81973A4();
+ DrawDialogueFrame(0, 1);
+ StringExpandPlaceholders(gStringVar4, src);
+ AddTextPrinterWithCustomSpeedForMessage(FALSE, 1);
+ return FALSE;
+}
+
+bool32 sub_801704C(void)
+{
+ if (!RunTextPrintersAndIsPrinter0Active())
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool8 PrintOnTextbox(u8 *textState, const u8 *str)
+{
+ switch (*textState)
+ {
+ case 0:
+ sub_81973A4();
+ DrawDialogueFrame(0, 1);
+ StringExpandPlaceholders(gStringVar4, str);
+ AddTextPrinterForMessage_2(TRUE);
+ (*textState)++;
+ break;
+ case 1:
+ if (!RunTextPrintersAndIsPrinter0Active())
+ {
+ *textState = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+s8 sub_80170B8(u8 *arg0, bool32 arg1)
+{
+ s8 r1;
+ switch (*arg0)
+ {
+ case 0:
+ if (arg1)
+ {
+ return -3;
}
+ DisplayYesNoMenuDefaultYes();
+ (*arg0)++;
+ break;
+ case 1:
+ if (arg1)
+ {
+ sub_8198C78();
+ *arg0 = 0;
+ return -3;
+ }
+ r1 = Menu_ProcessInputNoWrapClearOnChoose();
+ if (r1 == -1 || r1 == 0 || r1 == 1)
+ {
+ *arg0 = 0;
+ return r1;
+ }
+ break;
+ }
+ return -2;
+}
+
+u8 sub_8017118(const struct WindowTemplate * template)
+{
+ u8 windowId = AddWindow(template);
+ DrawStdWindowFrame(windowId, FALSE);
+ FillWindowPixelBuffer(windowId, 0xFF);
+ sub_80173E0(windowId, 1, gUnknown_082EFD94, 8, 1, 6);
+ CopyWindowToVram(windowId, 2);
+ PutWindowTilemap(windowId);
+ return windowId;
+}
+
+void sub_8017168(u8 windowId)
+{
+ RemoveWindow(windowId);
+}
+
+s32 sub_8017178(u8 *arg0, u8 *arg1, u8 *arg2, const struct WindowTemplate *winTemplate, const struct ListMenuTemplate *menuTemplate)
+{
+ s32 r1, r8;
+ struct WindowTemplate winTemplateCopy;
+
+ switch (*arg0)
+ {
+ case 0:
+ winTemplateCopy = *winTemplate;
+ r1 = sub_81DB41C(menuTemplate);
+ if (winTemplateCopy.width > r1)
+ {
+ winTemplateCopy.width = r1;
+ }
+ if (winTemplateCopy.tilemapLeft + winTemplateCopy.width > 29)
+ {
+ winTemplateCopy.tilemapLeft = max(29 - winTemplateCopy.width, 0);
+ }
+ *arg1 = AddWindow(&winTemplateCopy);
+ DrawStdWindowFrame(*arg1, FALSE);
+ gMultiuseListMenuTemplate = *menuTemplate;
+ gMultiuseListMenuTemplate.windowId = *arg1;
+ *arg2 = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+ CopyWindowToVram(*arg1, TRUE);
+ (*arg0)++;
+ break;
+ case 1:
+ r8 = ListMenu_ProcessInput(*arg2);
+ if (({gMain.newKeys & A_BUTTON;}))
+ {
+ DestroyListMenuTask(*arg2, NULL, NULL);
+ ClearStdWindowAndFrame(*arg1, TRUE);
+ RemoveWindow(*arg1);
+ *arg0 = 0;
+ return r8;
+ }
+ else if (({gMain.newKeys & B_BUTTON;}))
+ {
+ DestroyListMenuTask(*arg2, NULL, NULL);
+ ClearStdWindowAndFrame(*arg1, TRUE);
+ RemoveWindow(*arg1);
+ *arg0 = 0;
+ return -2;
+ }
+ break;
+ }
+
+ return -1;
+}
+
+s32 sub_80172A0(u8 *arg0, u8 *arg1, u8 *arg2, u8 *arg3, const struct WindowTemplate *winTemplate, const struct ListMenuTemplate *menuTemplate, struct UnkStruct_Main0 *arg6)
+{
+ s32 input;
+ s32 r4;
+
+ switch (*arg0)
+ {
+ case 0:
+ *arg3 = sub_8017118(&gUnknown_082F0344);
+ *arg1 = AddWindow(winTemplate);
+ DrawStdWindowFrame(*arg1, FALSE);
+ gMultiuseListMenuTemplate = *menuTemplate;
+ gMultiuseListMenuTemplate.windowId = *arg1;
+ *arg2 = ListMenuInit(&gMultiuseListMenuTemplate, 0, 1);
+ (*arg0)++;
+ break;
+ case 1:
+ CopyWindowToVram(*arg1, TRUE);
+ (*arg0)++;
+ break;
+ case 2:
+ // Register swap r1 <---> r2
+ input = ListMenu_ProcessInput(*arg2);
+ if (({gMain.newKeys & (A_BUTTON | B_BUTTON);}))
+ {
+ if (input == 8 || ({gMain.newKeys & B_BUTTON;}))
+ {
+ DestroyListMenuTask(*arg2, NULL, NULL);
+ RemoveWindow(*arg1);
+ sub_8017168(*arg3);
+ *arg0 = 0;
+ return -2;
+ }
+ else
+ {
+ r4 = sub_8017CB0(arg6->arr, input);
+ if (r4 >= 0)
+ {
+ DestroyListMenuTask(*arg2, NULL, NULL);
+ RemoveWindow(*arg1);
+ sub_8017168(*arg3);
+ *arg0 = 0;
+ return r4;
+ }
+ else
+ {
+ PlaySE(SE_WALL_HIT);
+ }
+ }
+ }
+ break;
+ }
+
+ return -1;
+}
+void sub_80173B0(void)
+{
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0);
+ CopyBgTilemapBufferToVram(0);
+}
+
+void sub_80173D4(void)
+{
+ EnableBothScriptContexts();
+}
+
+void sub_80173E0(u8 windowId, u8 arg1, const u8 *str, u8 arg3, u8 arg4, u8 arg5)
+{
+ struct TextPrinterTemplate sp0;
+
+ sp0.currentChar = str;
+ sp0.windowId = windowId;
+ sp0.fontId = arg1;
+ sp0.x = arg3;
+ sp0.y = arg4;
+ sp0.currentX = arg3;
+ sp0.currentY = arg4;
+ sp0.unk = 0;
+
+ gTextFlags.useAlternateDownArrow = FALSE;
+ switch (arg5)
+ {
+ case 0:
+ sp0.letterSpacing = 0;
+ sp0.lineSpacing = 0;
+ sp0.fgColor = 2;
+ sp0.bgColor = 1;
+ sp0.shadowColor = 3;
+ break;
+ case 1:
+ sp0.letterSpacing = 0;
+ sp0.lineSpacing = 0;
+ sp0.fgColor = 4;
+ sp0.bgColor = 1;
+ sp0.shadowColor = 5;
+ break;
+ case 2:
+ sp0.letterSpacing = 0;
+ sp0.lineSpacing = 0;
+ sp0.fgColor = 6;
+ sp0.bgColor = 1;
+ sp0.shadowColor = 7;
+ break;
+ case 3:
+ sp0.letterSpacing = 0;
+ sp0.lineSpacing = 0;
+ sp0.fgColor = 1;
+ sp0.bgColor = 1;
+ sp0.shadowColor = 3;
+ break;
+ case 4:
+ sp0.letterSpacing = 0;
+ sp0.lineSpacing = 0;
+ sp0.fgColor = 1;
+ sp0.bgColor = 2;
+ sp0.shadowColor = 3;
+ break;
+ case 5:
+ sp0.letterSpacing = 0;
+ sp0.lineSpacing = 0;
+ sp0.fgColor = 7;
+ sp0.bgColor = 15;
+ sp0.shadowColor = 9;
+ break;
+ case 6:
+ sp0.letterSpacing = 0;
+ sp0.lineSpacing = 0;
+ sp0.fgColor = 14;
+ sp0.bgColor = 15;
+ sp0.shadowColor = 9;
+ break;
}
+
+ AddTextPrinter(&sp0, 0xFF, NULL);
+}
+
+void sub_8017580(struct UnkStruct_x20 *arg0, u8 count)
+{
+ s32 i;
+
+ for (i = 0; i < count; i++)
+ {
+ arg0[i].unk = gUnknown_082F045C;
+ arg0[i].field_18 = 0xFF;
+ arg0[i].field_1A_0 = 0;
+ arg0[i].field_1A_1 = 0;
+ arg0[i].field_1B = 0;
+ }
+}
+
+void sub_80175EC(struct UnkStruct_Main4 *arg0, u8 count)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ arg0->arr[i].unk0 = gUnknown_082F045C;
+ arg0->arr[i].unk18 = 0;
+ }
+}
+
+bool8 sub_8017630(struct UnkStruct_Shared* arg0, const struct UnkStruct_Shared* arg1)
+{
+ s32 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ if (arg0->field_0.unk_00.playerTrainerId[i] != arg1->field_0.unk_00.playerTrainerId[i])
+ {
+ return TRUE;
+ }
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ if (arg0->playerName[i] != arg1->playerName[i])
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+bool32 sub_8017678(struct UnkStruct_Shared *arg0, struct UnkStruct_Shared *arg1)
+{
+ s32 i;
+
+ if (arg0->field_0.unk_0a_0 != arg1->field_0.unk_0a_0)
+ {
+ return TRUE;
+ }
+
+ if (arg0->field_0.unk_0a_7 != arg1->field_0.unk_0a_7)
+ {
+ return TRUE;
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (arg0->field_0.unk_04[i] != arg1->field_0.unk_04[i])
+ {
+ return TRUE;
+ }
+ }
+
+ if (arg0->field_0.species != arg1->field_0.species)
+ {
+ return TRUE;
+ }
+
+ if (arg0->field_0.type != arg1->field_0.type)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+u32 sub_80176E4(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1)
+{
+ u8 result = 0xFF;
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (arg1[i].unk18 && !sub_8017630(&arg0->unk, &arg1[i].unk0))
+ {
+ result = i;
+ arg1[i].unk18 = FALSE;
+ }
+ }
+
+ return result;
+}
+
+u8 sub_8017734(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1, u8 arg2)
+{
+ s32 i;
+
+ if (arg1->unk18)
+ {
+ for (i = 0; i < arg2; i++)
+ {
+ if (arg0[i].field_1A_0 == 0)
+ {
+ arg0[i].unk = arg1->unk0;
+ arg0[i].field_18 = 0;
+ arg0[i].field_1A_0 = 1;
+ arg0[i].field_1B = 64;
+ arg1->unk18 = FALSE;
+ return i;
+ }
+ }
+ }
+
+ return 0xFF;
+}
+
+void sub_80177B8(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id)
+{
+ u8 r2;
+ u8 sp0[6];
+
+ ConvertIntToDecimalStringN(gStringVar4, id + 1, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(gStringVar4, gText_Colon);
+ sub_80173E0(arg0, 1, gStringVar4, arg1, arg2, 0);
+ arg1 += 18;
+ r2 = arg3->unk.field_0.unk_0a_0;
+ if (arg3->field_1A_0 == 1 && !(r2 & 0x40))
+ {
+ sub_8018404(gStringVar4, arg3);
+ sub_80173E0(arg0, 1, gStringVar4, arg1, arg2, arg4);
+ ConvertIntToDecimalStringN(sp0, arg3->unk.field_0.unk_00.playerTrainerId[0] | (arg3->unk.field_0.unk_00.playerTrainerId[1] << 8), STR_CONV_MODE_LEADING_ZEROS, 5);
+ StringCopy(gStringVar4, gText_UnkCtrlCodeF907);
+ StringAppend(gStringVar4, sp0);
+ sub_80173E0(arg0, 1, gStringVar4, GetStringRightAlignXOffset(1, gStringVar4, 0x88), arg2, arg4);
+ }
+}
+
+void sub_80178A0(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id)
+{
+ u8 sp0[6];
+
+ if (arg3->field_1A_0 == 1)
+ {
+ sub_8018404(gStringVar4, arg3);
+ sub_80173E0(arg0, 1, gStringVar4, arg1, arg2, arg4);
+ ConvertIntToDecimalStringN(sp0, arg3->unk.field_0.unk_00.playerTrainerId[0] | (arg3->unk.field_0.unk_00.playerTrainerId[1] << 8), STR_CONV_MODE_LEADING_ZEROS, 5);
+ StringCopy(gStringVar4, gText_UnkCtrlCodeF907);
+ StringAppend(gStringVar4, sp0);
+ sub_80173E0(arg0, 1, gStringVar4, GetStringRightAlignXOffset(1, gStringVar4, 0x68), arg2, arg4);
+ }
+}
+
+bool32 sub_8017940(void)
+{
+ s16 x, y;
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ if (x != 9)
+ {
+ return FALSE;
+ }
+ if (y != 8)
+ {
+ return FALSE;
+ }
+ if (gPlayerAvatar.tileTransitionState == 2 || gPlayerAvatar.tileTransitionState == 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+u32 sub_8017984(s32 arg0)
+{
+ switch (arg0)
+ {
+ case 5:
+ return 1;
+ case 4:
+ return 2;
+ case 8:
+ return 3;
+ case 3:
+ default:
+ return 0;
+ }
+}
+
+u32 sub_80179AC(struct UnkStruct_x20 *arg0)
+{
+ u8 sp0[30];
+ sub_8018404(sp0, arg0);
+ return sub_800E540(ReadAsU16(arg0->unk.field_0.unk_00.playerTrainerId), sp0);
+}
+
+s32 sub_80179D4(struct UnkStruct_Main0 *arg0, u8 arg1, u8 arg2, u32 playerGender)
+{
+ bool32 r2;
+
+ struct UnkStruct_x20 * r5 = &arg0->arr[arg2];
+
+ if (!r5->unk.field_0.unk_0a_7 && arg1 == 0)
+ {
+ sub_8018404(gStringVar1, r5);
+ r2 = sub_800E540(ReadAsU16(r5->unk.field_0.unk_00.playerTrainerId), gStringVar1);
+ if (r5->unk.field_0.unk_0a_0 == 0x45)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_082EE6B8[r2][playerGender]);
+ return 2;
+ }
+ else
+ {
+ sub_8017020(gUnknown_082EE17C[r2]);
+ return 1;
+ }
+ }
+ else
+ {
+ sub_8018404(gStringVar1, r5);
+ if (arg1 != 0)
+ {
+ playerGender = (r5->unk.field_0.unk_00.playerTrainerId[arg1 + 1] >> 3) & 1;
+ }
+ switch (r5->unk.field_0.unk_0a_0 & 0x3F)
+ {
+ case 1:
+ StringExpandPlaceholders(gStringVar4, gUnknown_082EEEAC[playerGender][Random() % 4]);
+ break;
+ case 4:
+ StringExpandPlaceholders(gStringVar4, gUnknown_082EF1CC[playerGender][Random() % 2]);
+ break;
+ case 5:
+ StringExpandPlaceholders(gStringVar4, gUnknown_082EF010[playerGender][Random() % 4]);
+ break;
+ case 8:
+ StringExpandPlaceholders(gStringVar4, gUnknown_082EF100[playerGender][Random() % 2]);
+ break;
+ default:
+ StringExpandPlaceholders(gStringVar4, gUnknown_082EE6C8);
+ break;
+ }
+ return 0;
+ }
+}
+
+void nullsub_14(u8 windowId, s32 itemId, u8 y)
+{
+
+}
+
+void sub_8017B3C(u8 arg0, u8 arg1, struct UnkLinkRfuStruct_02022B14 * arg2, const u8 * str, u8 arg4)
+{
+ u8 sp8[4];
+ u16 r8 = arg2->species;
+ u8 r7 = arg2->type;
+ u8 r9 = arg2->unk_0b_1;
+
+ sub_80173E0(arg0, 1, str, 8, arg1, arg4);
+ if (r8 == SPECIES_EGG)
+ {
+ sub_80173E0(arg0, 1, gUnknown_082EF7D0, 0x44, arg1, arg4);
+ }
+ else
+ {
+ blit_move_info_icon(arg0, r7 + 1, 0x44, arg1);
+ sub_80173E0(arg0, 1, gSpeciesNames[r8], 0x76, arg1, arg4);
+ ConvertIntToDecimalStringN(sp8, r9, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ sub_80173E0(arg0, 1, sp8, 0xC6, arg1, arg4);
+ }
+}
+
+void sub_8017BE8(u8 windowId, s32 itemId, u8 y)
+{
+ struct UnkStruct_Leader *leader = gUnknown_02022C30.leader;
+ struct UnkLinkRfuStruct_02022B14 *rfu;
+ s32 i, j;
+ u8 sp4[11];
+
+ if (itemId == -3 && y == gUnknown_082F03A4.upText_Y)
+ {
+ rfu = sub_800F7DC();
+ if (rfu->species != SPECIES_NONE)
+ {
+ sub_8017B3C(windowId, y, rfu, gSaveBlock2Ptr->playerName, 5);
+ }
+ }
+ else
+ {
+ j = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (leader->field_0->arr[i].field_1A_0 == 1 && leader->field_0->arr[i].unk.field_0.species != SPECIES_NONE)
+ {
+ j++;
+ }
+ if (j == itemId + 1)
+ {
+ sub_8018404(sp4, &leader->field_0->arr[i]);
+ sub_8017B3C(windowId, y, &leader->field_0->arr[i].unk.field_0, sp4, 6);
+ break;
+ }
+ }
+ }
+}
+
+s32 sub_8017CB0(struct UnkStruct_x20 * arg, s32 arg1)
+{
+ s32 i;
+ s32 j = 0;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (arg[i].field_1A_0 == 1 && arg[i].unk.field_0.species != SPECIES_NONE)
+ {
+ j++;
+ }
+ if (j == arg1 + 1)
+ {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+s32 sub_8017CF8(s32 arg1, struct UnkStruct_Main0 *arg0)
+{
+ return arg0->arr[arg1].unk.field_0.playerGender;
+}
+
+s32 sub_8017D04(u32 type, u32 species)
+{
+ s32 i;
+
+ if (species == SPECIES_EGG)
+ {
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (species == SPECIES_EGG)
+ {
+ return 0;
+ }
+ }
+ return 2;
+ }
+ else
+ {
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (gBaseStats[species].type1 == type || gBaseStats[species].type2 == type)
+ {
+ return 0;
+ }
+ }
+ return 1;
+ }
+}
+
+void sub_8017D9C(u8 *dst, s32 arg1, u32 playerGender)
+{
+ switch (arg1)
+ {
+ case 0x41:
+ StringExpandPlaceholders(dst, gUnknown_082EEA68[playerGender]);
+ break;
+ case 0x45:
+ StringExpandPlaceholders(dst, gUnknown_082EED3C[playerGender]);
+ break;
+ case 0x44:
+ StringExpandPlaceholders(dst, gUnknown_082EF7B0);
+ break;
+ case 0x48:
+ StringExpandPlaceholders(dst, gUnknown_082EEB08[playerGender]);
+ break;
+ }
+}
+
+void sub_8017E00(u8 *dst, u8 arg1)
+{
+ u8 mpId = GetMultiplayerId();
+ u8 gender = gLinkPlayers[mpId ^ 1].gender;
+
+ switch (arg1)
+ {
+ case 0x41:
+ StringCopy(dst, gUnknown_082EE984[mpId][gender][0]);
+ break;
+ case 0x44:
+ StringCopy(dst, gUnknown_082EE984[mpId][gender][2]);
+ break;
+ case 0x45:
+ StringCopy(dst, gUnknown_082EE984[mpId][gender][1]);
+ break;
+ }
+}
+
+s32 sub_8017EA0(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom *arg3)
+{
+ s32 result = 0;
+ u16 species = SPECIES_NONE;
+ s32 i;
+
+ switch (arg2[0])
+ {
+ case 0x41:
+ StringExpandPlaceholders(dst, gUnknown_082EE3DC);
+ result = 1;
+ break;
+ case 0x45:
+ StringExpandPlaceholders(dst, gUnknown_082EE430);
+ result = 1;
+ break;
+ case 0x44:
+ ConvertIntToDecimalStringN(arg3->field_58 + 0x00, gUnknown_02022C40.playerLevel, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringCopy(arg3->field_58 + 0x10, gSpeciesNames[gUnknown_02022C40.playerSpecies]);
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_03007890->unk_14[i].unk_04 == 2)
+ {
+ ConvertIntToDecimalStringN(arg3->field_58 + 0x20, arg2[2], STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringCopy(arg3->field_58 + 0x30, gSpeciesNames[arg2[1]]);
+ species = arg2[1];
+ break;
+ }
+ }
+ if (species == SPECIES_EGG)
+ {
+ StringCopy(dst, gUnknown_082EE4F0);
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ {
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(i, arg3->field_58 + 0x10 * i);
+ }
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(dst, gUnknown_082EE47C);
+ }
+ result = 1;
+ break;
+ case 0x48:
+ StringExpandPlaceholders(dst, gUnknown_082EE380);
+ result = 1;
+ break;
+ case 0x40:
+ StringExpandPlaceholders(dst, gUnknown_082EE544);
+ result = 2;
+ break;
+ }
+
+ return result;
+}
+
+bool32 sub_8017FD8(struct UnkStruct_URoom *arg0)
+{
+ if (gRecvCmds[0][1] != 0)
+ {
+ if (gRecvCmds[0][1] == 0x51)
+ {
+ arg0->field_98 = 0x51;
+ return TRUE;
+ }
+ else if (gRecvCmds[0][1] == 0x52)
+ {
+ arg0->field_98 = 0x52;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool32 InUnionRoom(void)
+{
+ return gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNION_ROOM)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(UNION_ROOM)
+ ? TRUE : FALSE;
+}
+
+bool32 sub_8018024(void)
+{
+ s32 i;
+ s32 count = 0;
+
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ if ( GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) <= 30
+ && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_EGG)
+ {
+ count++;
+ }
+ }
+
+ if (count > 1)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+void sub_801807C(struct TradeUnkStruct *arg0)
+{
+ arg0->field_0 = 0;
+ arg0->type = 0;
+ arg0->playerPersonality = 0;
+ arg0->playerSpecies = 0;
+ arg0->playerLevel = 0;
+ arg0->species = 0;
+ arg0->level = 0;
+ arg0->personality = 0;
+}
+
+void sub_8018090(void)
+{
+ sub_801807C(&gUnknown_02022C40);
+}
+
+bool32 sub_80180A0(u32 monId, struct TradeUnkStruct *arg1)
+{
+ arg1->playerSpecies = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES2);
+ arg1->playerLevel = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
+ arg1->playerPersonality = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY);
+ if (arg1->playerSpecies == SPECIES_EGG)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+void sub_80180E8(u32 monId, struct TradeUnkStruct *arg1)
+{
+ arg1->species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES2);
+ arg1->level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
+ arg1->personality = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY);
+}
+
+u32 sub_8018120(struct TradeUnkStruct *arg0, u8 multiplayerId)
+{
+ u16 response = 0;
+ u16 species;
+ u32 personality;
+ u32 cur_personality;
+ u16 cur_species;
+ s32 i;
+
+ if (multiplayerId == 0)
+ {
+ species = arg0->playerSpecies;
+ personality = arg0->playerPersonality;
+ }
+ else
+ {
+ species = arg0->species;
+ personality = arg0->personality;
+ }
+
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ cur_personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
+ if (cur_personality != personality)
+ {
+ continue;
+ }
+ cur_species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (cur_species != species)
+ {
+ continue;
+ }
+ response = i;
+ break;
+ }
+
+ return response;
+}
+
+void sub_801818C(bool32 arg0)
+{
+ sub_80173B0();
+ ScriptContext2_Disable();
+ sub_8098524();
+ gUnknown_02022C2C = 0;
+ if (arg0)
+ {
+ sub_8010FCC(gUnknown_02022C40.type, gUnknown_02022C40.playerSpecies, gUnknown_02022C40.playerLevel);
+ sub_8011090(0x40, 0, 0);
+ }
+}
+
+void sub_80181CC(void)
+{
+ ScriptContext2_Enable();
+ ScriptFreezeEventObjects();
+}
+
+u8 sub_80181DC(struct UnkStruct_URoom *arg0)
+{
+ u8 retVal = 0x80;
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (arg0->field_C->arr[i].unk18)
+ {
+ retVal |= arg0->field_C->arr[i].unk0.field_0.playerGender << 3;
+ retVal |= arg0->field_C->arr[i].unk0.field_0.unk_00.playerTrainerId[0] & 7;
+ break;
+ }
+ }
+
+ return retVal;
+}
+
+void sub_8018220(u8 *unused, struct UnkStruct_URoom *arg1, bool8 arg2)
+{
+ struct TrainerCard *trainerCard = &gTrainerCards[GetMultiplayerId() ^ 1];
+ s32 i;
+ s32 n;
+
+ DynamicPlaceholderTextUtil_Reset();
+
+ StringCopy(arg1->field_C0[0], gTrainerClassNames[sub_8068BB0()]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, arg1->field_C0[0]);
+
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, trainerCard->playerName);
+
+ StringCopy(arg1->field_174, gUnknown_082EFF50[trainerCard->stars]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, arg1->field_174);
+
+ ConvertIntToDecimalStringN(arg1->field_C0[2], trainerCard->caughtMonsCount, STR_CONV_MODE_LEFT_ALIGN, 3);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, arg1->field_C0[2]);
+
+ ConvertIntToDecimalStringN(arg1->field_C0[3], trainerCard->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(arg1->field_C0[4], trainerCard->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, arg1->field_C0[3]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, arg1->field_C0[4]);
+
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_082EFF64);
+ StringCopy(gStringVar4, arg1->field_1A4);
+
+ n = trainerCard->linkBattleWins;
+ if (n > 9999)
+ {
+ n = 9999;
+ }
+ ConvertIntToDecimalStringN(arg1->field_C0[0], n, STR_CONV_MODE_LEFT_ALIGN, 4);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, arg1->field_C0[0]);
+
+ n = trainerCard->linkBattleLosses;
+ if (n > 9999)
+ {
+ n = 9999;
+ }
+ ConvertIntToDecimalStringN(arg1->field_C0[1], n, STR_CONV_MODE_LEFT_ALIGN, 4);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, arg1->field_C0[1]);
+
+ ConvertIntToDecimalStringN(arg1->field_C0[2], trainerCard->pokemonTrades, STR_CONV_MODE_LEFT_ALIGN, 5);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, arg1->field_C0[2]);
+
+ for (i = 0; i < 4; i++)
+ {
+ CopyEasyChatWord(arg1->field_C0[i + 3], trainerCard->var_28[i]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(i + 4, arg1->field_C0[i + 3]);
+ }
+
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_082EFFA4);
+ StringAppend(gStringVar4, arg1->field_1A4);
+
+ if (arg2 == TRUE)
+ {
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_082F0020);
+ StringAppend(gStringVar4, arg1->field_1A4);
+ }
+ else if (arg2 == FALSE)
+ {
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_082F0018[trainerCard->gender]);
+ StringAppend(gStringVar4, arg1->field_1A4);
+ }
+}
+
+void sub_8018404(u8 *dest, struct UnkStruct_x20 *arg1)
+{
+ StringCopy7(dest, arg1->unk.playerName);
+ ConvertInternationalString(dest, arg1->unk.field_0.unk_00.unk_00_0);
}
-*/
diff --git a/src/union_room_chat.c b/src/union_room_chat.c
new file mode 100755
index 000000000..85cfa6e2e
--- /dev/null
+++ b/src/union_room_chat.c
@@ -0,0 +1,2630 @@
+#include "global.h"
+#include "alloc.h"
+#include "bg.h"
+#include "decompress.h"
+#include "dma3.h"
+#include "dynamic_placeholder_text_util.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "load_save.h"
+#include "main.h"
+#include "menu.h"
+#include "overworld.h"
+#include "palette.h"
+#include "save.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"
+#include "window.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+
+struct UnionRoomChat
+{
+ u8 filler0[0x4];
+ u16 unk4;
+ u16 unk6;
+ u8 filler8[0x2];
+ u16 unkA;
+ u8 fillerC[0x1];
+ u8 unkD;
+ u8 unkE;
+ u8 unkF;
+ u8 unk10;
+ u8 unk11;
+ u8 unk12;
+ u8 unk13;
+ u8 unk14;
+ u8 unk15;
+ u8 unk16;
+ u8 unk17;
+ u8 unk18;
+ u8 unk19;
+ u8 unk1A[0x1F];
+ u8 unk39[0x40];
+ u8 unk79[0x40];
+ u8 unkB9[10][21];
+ u8 filler18B[0x5];
+ u8 unk190[0x28];
+ u16 unk1B8;
+};
+
+struct UnionRoomChat2_Unk0
+{
+ bool32 (* unk0)(u8 *);
+ u8 unk4;
+ u8 unk5;
+};
+
+struct UnionRoomChat2
+{
+ struct UnionRoomChat2_Unk0 unk0[3];
+ u16 unk18;
+ u16 unk1A;
+ u16 unk1C;
+ u16 unk1E;
+ s16 unk20;
+ u8 unk22[0x106];
+ u8 unk128[BG_SCREEN_SIZE];
+ u8 unk928[BG_SCREEN_SIZE];
+ u8 unk1128[BG_SCREEN_SIZE];
+ u8 unk1928[BG_SCREEN_SIZE];
+ u8 unk2128[0x20];
+ u8 unk2148[0x20];
+};
+
+struct UnionRoomChat3
+{
+ struct Sprite *unk0;
+ struct Sprite *unk4;
+ struct Sprite *unk8;
+ struct Sprite *unkC;
+ struct Sprite *unk10;
+ u16 unk14;
+};
+
+struct Unk82F2C98
+{
+ u16 unk0;
+ bool32 (* unk4)(u8 *);
+};
+
+struct Unk82F2D40
+{
+ const u8 *unk0;
+ u8 unk4;
+ u8 unk5;
+ u8 unk6;
+ u8 unk7;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA;
+};
+
+static void sub_801DDD0(struct UnionRoomChat *);
+static void c2_081284E0(void);
+static void sub_801DF20(void);
+static void sub_801DF38(void);
+static void sub_801DF54(u8 taskId);
+static void sub_801DFAC(void);
+static void sub_801E030(void);
+static void sub_801E120(void);
+static void sub_801E240(void);
+static void sub_801E460(void);
+static void sub_801E5C4(void);
+static void sub_801E668(void);
+static void sub_801E764(void);
+static void sub_801E838(void);
+static void sub_801E978(void);
+static void sub_801EBD4(u16);
+static bool32 sub_801EBE4(void);
+static void sub_801EC94(void);
+static void sub_801ED68(void);
+static void sub_801ED94(void);
+static bool32 sub_801EDC4(void);
+static void sub_801EDE0(void);
+static void sub_801EE10(void);
+static void sub_801EE2C(void);
+static u8 *sub_801EE84(void);
+static u8 *sub_801EEA8(void);
+static void sub_801EF1C(u8 *);
+static void sub_801EF24(u8 *);
+static void sub_801EF4C(u8 *);
+static void sub_801EF7C(u8 *);
+static void sub_801EFA8(u8 *);
+static void sub_801EFD0(u8 *);
+static u8 *sub_801F114(void);
+static void sub_801F2B4(u8 taskId);
+static bool8 sub_801F4D0(void);
+static bool32 sub_801F534(void);
+static void sub_801F544(void);
+static void sub_801F5B8(void);
+static void sub_801F5EC(u16, u8);
+static bool8 sub_801F644(u8);
+static s8 sub_801FF08(void);
+static bool32 sub_8020890(void);
+static void sub_8020770(void);
+static void sub_801F574(struct UnionRoomChat2 *);
+static void sub_801F580(void);
+static void sub_80208D0(void);
+static bool32 sub_801FDD8(u8 *);
+static void sub_8020480(void);
+static void sub_8020538(void);
+static void sub_8020584(void);
+static void sub_80205B4(void);
+static void sub_8020604(void);
+static void sub_8020680(void);
+static void sub_80206A4(void);
+static void sub_80206D0(void);
+static void sub_8020740(void);
+static void sub_80206E8(void);
+static void sub_80208E8(void);
+static void sub_8020A68(void);
+static void sub_8020B20(void);
+static void sub_80203B0(void);
+static void sub_802040C(void);
+static void sub_802091C(bool32);
+static bool32 sub_8020320(void);
+static void sub_80201A4(void);
+static bool32 sub_8020368(void);
+static void sub_802093C(void);
+static void sub_8020B80(void);
+static void sub_801FF18(int, u16);
+static void sub_801FDDC(u8, u8, u8);
+static void sub_8020094(void);
+static void sub_801FEBC(void);
+static void sub_80200C8(void);
+static void sub_801FEE4(void);
+static void sub_80200EC(u16, u16, u8);
+static void sub_8020118(u16, u8 *, u8, u8, u8);
+static void sub_80209AC(int);
+static void sub_8020420(u16, u8 *, u8);
+static void sub_80209E0(void);
+static bool32 sub_8020A1C(void);
+static void sub_80207C0(s16);
+static void sub_8020818(s16);
+
+extern struct UnionRoomChat *gUnknown_02022C84;
+extern struct UnionRoomChat2 *gUnknown_02022C88;
+extern struct UnionRoomChat3 *gUnknown_02022C8C;
+
+extern const u8 *const gUnknown_082F2BA8[][10];
+extern const u8 gUnknown_082F2AA8[];
+extern const struct BgTemplate gUnknown_082F2C60[4];
+extern const struct WindowTemplate gUnknown_082F2C70[];
+extern const struct Unk82F2C98 gUnknown_082F2C98[];
+extern const struct Unk82F2D40 gUnknown_082F2D40[];
+extern const u8 gText_Ellipsis[];
+extern const struct MenuAction gUnknown_082F2DC8[];
+extern const u16 gUnknown_082F2C20[];
+extern const u16 gUnknown_082F2C40[];
+extern const struct CompressedSpriteSheet gUnknown_082F3134[];
+extern const struct SpritePalette gUnknown_082F315C;
+extern const struct SpriteTemplate gUnknown_082F319C;
+extern const u16 gUnknown_082F2DF0[];
+extern const struct SpriteTemplate gUnknown_082F31BC;
+extern const struct SpriteTemplate gUnknown_082F31D4;
+extern const struct SpriteTemplate gUnknown_082F322C;
+extern const struct SpriteTemplate gUnknown_082F3244;
+
+
+void sub_801DD98(void)
+{
+ gUnknown_02022C84 = Alloc(sizeof(*gUnknown_02022C84));
+ sub_801DDD0(gUnknown_02022C84);
+ gKeyRepeatStartDelay = 20;
+ SetVBlankCallback(NULL);
+ SetMainCallback2(c2_081284E0);
+}
+
+static void sub_801DDD0(struct UnionRoomChat *unionRoomChat)
+{
+ int i;
+
+ unionRoomChat->unk4 = 0;
+ unionRoomChat->unk6 = 0;
+ unionRoomChat->unk10 = 0;
+ unionRoomChat->unk11 = 0;
+ unionRoomChat->unk12 = 0;
+ unionRoomChat->unk14 = 0;
+ unionRoomChat->unk15 = 0;
+ unionRoomChat->unk16 = 0;
+ unionRoomChat->unk1A[0] = EOS;
+ unionRoomChat->unkD = GetLinkPlayerCount();
+ unionRoomChat->unk13 = GetMultiplayerId();
+ unionRoomChat->unk17 = 0;
+ unionRoomChat->unk18 = 0;
+ sub_801EF1C(unionRoomChat->unk190);
+ for (i = 0; i < 10; i++)
+ StringCopy(unionRoomChat->unkB9[i], gSaveBlock1Ptr->unk3C88[i]);
+}
+
+void sub_801DE30(void)
+{
+ DestroyTask(gUnknown_02022C84->unkE);
+ DestroyTask(gUnknown_02022C84->unkF);
+ Free(gUnknown_02022C84);
+}
+
+static void c2_081284E0(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ sub_801F4D0();
+ gMain.state++;
+ break;
+ case 1:
+ sub_801F5B8();
+ if (!sub_801F534())
+ {
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
+ SetVBlankCallback(sub_801DF20);
+ gMain.state++;
+ }
+ break;
+ case 2:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sub_801DF38);
+ gUnknown_02022C84->unkE = CreateTask(sub_801DF54, 8);
+ gUnknown_02022C84->unkF = CreateTask(sub_801F2B4, 7);
+ sub_800E0E8();
+ CreateWirelessStatusIndicatorSprite(232, 150);
+ }
+ break;
+ }
+}
+
+static void sub_801DF20(void)
+{
+ TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ ScanlineEffect_InitHBlankDmaTransfer();
+}
+
+static void sub_801DF38(void)
+{
+ RunTasks();
+ sub_801F5B8();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void (*const gUnknown_082F2A7C[])(void) =
+{
+ sub_801DFAC,
+ sub_801E030,
+ sub_801E120,
+ sub_801E240,
+ sub_801E764,
+ sub_801E838,
+ sub_801E460,
+ sub_801E5C4,
+ sub_801E668,
+ sub_801E978,
+};
+
+static void sub_801DF54(u8 taskId)
+{
+ switch (gUnknown_02022C84->unk17)
+ {
+ case 1:
+ sub_801EBD4(6);
+ gUnknown_02022C84->unk17 = 0;
+ break;
+ case 2:
+ sub_801EBD4(7);
+ gUnknown_02022C84->unk17 = 0;
+ break;
+ case 3:
+ sub_801EBD4(8);
+ gUnknown_02022C84->unk17 = 0;
+ break;
+ }
+
+ gUnknown_082F2A7C[gUnknown_02022C84->unk4]();
+}
+
+static void sub_801DFAC(void)
+{
+ switch (gUnknown_02022C84->unk6)
+ {
+ case 0:
+ sub_801EF24(gUnknown_02022C84->unk190);
+ gUnknown_02022C84->unk6++;
+ // fall through
+ case 1:
+ if (IsLinkTaskFinished() && !sub_8011A9C())
+ {
+ if (SendBlock(0, gUnknown_02022C84->unk190, sizeof(gUnknown_02022C84->unk190)))
+ gUnknown_02022C84->unk6++;
+ }
+ break;
+ case 2:
+ if (IsLinkTaskFinished())
+ sub_801EBD4(1);
+ break;
+ }
+}
+
+static void sub_801E030(void)
+{
+ bool8 var0, var1;
+
+ switch (gUnknown_02022C84->unk6)
+ {
+ case 0:
+ if (gMain.newKeys & START_BUTTON)
+ {
+ if (gUnknown_02022C84->unk15)
+ sub_801EBD4(4);
+ }
+ else if (gMain.newKeys & SELECT_BUTTON)
+ {
+ sub_801EBD4(2);
+ }
+ else if (gMain.newAndRepeatedKeys & B_BUTTON)
+ {
+ if (gUnknown_02022C84->unk15)
+ {
+ sub_801ED68();
+ sub_801F5EC(8, 0);
+ gUnknown_02022C84->unk6 = 1;
+ }
+ else
+ {
+ sub_801EBD4(3);
+ }
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ sub_801EC94();
+ sub_801F5EC(8, 0);
+ sub_801F5EC(2, 1);
+ gUnknown_02022C84->unk6 = 1;
+ }
+ else if (gMain.newKeys & R_BUTTON)
+ {
+ if (gUnknown_02022C84->unk10 != 3)
+ {
+ sub_801ED94();
+ sub_801F5EC(8, 0);
+ gUnknown_02022C84->unk6 = 1;
+ }
+ else
+ {
+ sub_801EBD4(5);
+ }
+ }
+ else if (sub_801EBE4())
+ {
+ sub_801F5EC(1, 0);
+ gUnknown_02022C84->unk6 = 1;
+ }
+ break;
+ case 1:
+ var0 = sub_801F644(0);
+ var1 = sub_801F644(1);
+ if (!var0 && !var1)
+ gUnknown_02022C84->unk6 = 0;
+ break;
+ }
+}
+
+static void sub_801E120(void)
+{
+ s16 input;
+ int var0;
+
+ switch (gUnknown_02022C84->unk6)
+ {
+ case 0:
+ sub_801F5EC(3, 0);
+ gUnknown_02022C84->unk6++;
+ break;
+ case 1:
+ if (!sub_801F644(0))
+ gUnknown_02022C84->unk6++;
+ break;
+ case 2:
+ input = Menu_ProcessInput();
+ switch (input)
+ {
+ default:
+ sub_801F5EC(4, 0);
+ var0 = 1;
+ if (gUnknown_02022C84->unk10 == input || input > 3)
+ var0 = 0;
+ break;
+ case MENU_NOTHING_CHOSEN:
+ if (gMain.newKeys & SELECT_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(1);
+ }
+ return;
+ case MENU_B_PRESSED:
+ sub_801F5EC(4, 0);
+ gUnknown_02022C84->unk6 = 3;
+ return;
+ }
+
+ if (!var0)
+ {
+ gUnknown_02022C84->unk6 = 3;
+ return;
+ }
+
+ gUnknown_02022C84->unk11 = 0;
+ gUnknown_02022C84->unk12 = 0;
+ sub_801F5EC(5, 1);
+ gUnknown_02022C84->unk10 = input;
+ gUnknown_02022C84->unk6 = 4;
+ break;
+ case 3:
+ if (!sub_801F644(0))
+ sub_801EBD4(1);
+ break;
+ case 4:
+ if (!sub_801F644(0) && !sub_801F644(1))
+ sub_801EBD4(1);
+ break;
+ }
+}
+
+static void sub_801E240(void)
+{
+ s8 input;
+
+ switch (gUnknown_02022C84->unk6)
+ {
+ case 0:
+ sub_801F5EC(6, 0);
+ gUnknown_02022C84->unk6 = 1;
+ break;
+ case 1:
+ if (!sub_801F644(0))
+ gUnknown_02022C84->unk6 = 2;
+ break;
+ case 2:
+ input = sub_801FF08();
+ switch (input)
+ {
+ case -1:
+ case 1:
+ sub_801F5EC(7, 0);
+ gUnknown_02022C84->unk6 = 3;
+ break;
+ case 0:
+ if (gUnknown_02022C84->unk13 == 0)
+ {
+ sub_801EFD0(gUnknown_02022C84->unk190);
+ sub_801F5EC(7, 0);
+ gUnknown_02022C84->unk6 = 9;
+ }
+ else
+ {
+ sub_801EF7C(gUnknown_02022C84->unk190);
+ gUnknown_02022C84->unk6 = 4;
+ }
+ break;
+ }
+ break;
+ case 3:
+ if (!sub_801F644(0))
+ sub_801EBD4(1);
+ break;
+ case 9:
+ if (!sub_801F644(0))
+ {
+ sub_801F5EC(20, 0);
+ gUnknown_02022C84->unk6 = 10;
+ }
+ break;
+ case 10:
+ if (!sub_801F644(0))
+ gUnknown_02022C84->unk6 = 8;
+ break;
+ case 8:
+ input = sub_801FF08();
+ switch (input)
+ {
+ case -1:
+ case 1:
+ sub_801F5EC(7, 0);
+ gUnknown_02022C84->unk6 = 3;
+ break;
+ case 0:
+ sub_80104B0();
+ sub_801EFD0(gUnknown_02022C84->unk190);
+ gUnknown_02022C84->unk6 = 4;
+ gUnknown_02022C84->unk1B8 = 0;
+ break;
+ }
+ break;
+ case 4:
+ if (IsLinkTaskFinished() && !sub_8011A9C() && SendBlock(0, gUnknown_02022C84->unk190, sizeof(gUnknown_02022C84->unk190)))
+ {
+ if (!gUnknown_02022C84->unk13)
+ gUnknown_02022C84->unk6 = 6;
+ else
+ gUnknown_02022C84->unk6 = 5;
+ }
+
+ if (!gReceivedRemoteLinkPlayers)
+ sub_801EBD4(9);
+ break;
+ case 5:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ sub_801EBD4(9);
+ }
+ else if (++gUnknown_02022C84->unk1B8 > 300)
+ {
+ gUnknown_02022C84->unk1B8 = 0;
+ gUnknown_02022C84->unk6 = 4;
+ }
+ break;
+ }
+}
+
+static void sub_801E460(void)
+{
+ switch (gUnknown_02022C84->unk6)
+ {
+ case 0:
+ if (!FuncIsActiveTask(sub_801F2B4))
+ {
+ sub_801F5EC(7, 0);
+ gUnknown_02022C84->unk6++;
+ }
+ break;
+ case 1:
+ if (!sub_801F644(0))
+ {
+ sub_801F5EC(18, 0);
+ gUnknown_02022C84->unk6++;
+ }
+ break;
+ case 2:
+ if (!sub_801F644(0))
+ {
+ sub_801EFA8(gUnknown_02022C84->unk190);
+ gUnknown_02022C84->unk6++;
+ }
+ break;
+ case 3:
+ if (IsLinkTaskFinished() && !sub_8011A9C() && SendBlock(0, gUnknown_02022C84->unk190, sizeof(gUnknown_02022C84->unk190)))
+ gUnknown_02022C84->unk6++;
+ break;
+ case 4:
+ if ((GetBlockReceivedStatus() & 1) && !sub_8011A9C())
+ gUnknown_02022C84->unk6++;
+ break;
+ case 5:
+ if (IsLinkTaskFinished() && !sub_8011A9C())
+ {
+ sub_800AC34();
+ gUnknown_02022C84->unkA = 0;
+ gUnknown_02022C84->unk6++;
+ }
+ break;
+ case 6:
+ if (gUnknown_02022C84->unkA < 150)
+ gUnknown_02022C84->unkA++;
+
+ if (!gReceivedRemoteLinkPlayers)
+ gUnknown_02022C84->unk6++;
+ break;
+ case 7:
+ if (gUnknown_02022C84->unkA >= 150)
+ sub_801EBD4(9);
+ else
+ gUnknown_02022C84->unkA++;
+ break;
+ }
+}
+
+static void sub_801E5C4(void)
+{
+ switch (gUnknown_02022C84->unk6)
+ {
+ case 0:
+ if (!FuncIsActiveTask(sub_801F2B4))
+ {
+ sub_801F5EC(7, 0);
+ gUnknown_02022C84->unk6++;
+ }
+ break;
+ case 1:
+ if (!sub_801F644(0) && IsLinkTaskFinished() && !sub_8011A9C())
+ {
+ sub_800AC34();
+ gUnknown_02022C84->unkA = 0;
+ gUnknown_02022C84->unk6++;
+ }
+ break;
+ case 2:
+ if (gUnknown_02022C84->unkA < 150)
+ gUnknown_02022C84->unkA++;
+
+ if (!gReceivedRemoteLinkPlayers)
+ gUnknown_02022C84->unk6++;
+ break;
+ case 3:
+ if (gUnknown_02022C84->unkA >= 150)
+ sub_801EBD4(9);
+ else
+ gUnknown_02022C84->unkA++;
+ break;
+ }
+}
+
+static void sub_801E668(void)
+{
+ switch (gUnknown_02022C84->unk6)
+ {
+ case 0:
+ if (!FuncIsActiveTask(sub_801F2B4))
+ {
+ if (gUnknown_02022C84->unk13)
+ sub_801F5EC(7, 0);
+
+ gUnknown_02022C84->unk6++;
+ }
+ break;
+ case 1:
+ if (!sub_801F644(0))
+ {
+ if (gUnknown_02022C84->unk13)
+ sub_801F5EC(19, 0);
+
+ gUnknown_02022C84->unk6++;
+ }
+ break;
+ case 2:
+ if (sub_801F644(0) != TRUE && IsLinkTaskFinished() && !sub_8011A9C())
+ {
+ sub_800AC34();
+ gUnknown_02022C84->unkA = 0;
+ gUnknown_02022C84->unk6++;
+ }
+ break;
+ case 3:
+ if (gUnknown_02022C84->unkA < 150)
+ gUnknown_02022C84->unkA++;
+
+ if (!gReceivedRemoteLinkPlayers)
+ gUnknown_02022C84->unk6++;
+ break;
+ case 4:
+ if (gUnknown_02022C84->unkA >= 150)
+ sub_801EBD4(9);
+ else
+ gUnknown_02022C84->unkA++;
+ break;
+ }
+}
+
+static void sub_801E764(void)
+{
+ switch (gUnknown_02022C84->unk6)
+ {
+ case 0:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ sub_801EBD4(1);
+ break;
+ }
+
+ sub_801EF4C(gUnknown_02022C84->unk190);
+ gUnknown_02022C84->unk6++;
+ // fall through
+ case 1:
+ if (IsLinkTaskFinished() == TRUE && !sub_8011A9C() && SendBlock(0, gUnknown_02022C84->unk190, sizeof(gUnknown_02022C84->unk190)))
+ gUnknown_02022C84->unk6++;
+ break;
+ case 2:
+ sub_801EE10();
+ sub_801F5EC(8, 0);
+ gUnknown_02022C84->unk6++;
+ break;
+ case 3:
+ if (!sub_801F644(0))
+ gUnknown_02022C84->unk6++;
+ break;
+ case 4:
+ if (IsLinkTaskFinished())
+ sub_801EBD4(1);
+ break;
+ }
+}
+
+static void sub_801E838(void)
+{
+ switch (gUnknown_02022C84->unk6)
+ {
+ case 0:
+ if (sub_801EDC4())
+ {
+ sub_801F5EC(9, 0);
+ gUnknown_02022C84->unk6 = 2;
+ }
+ else
+ {
+ sub_801F5EC(13, 0);
+ gUnknown_02022C84->unk6 = 5;
+ }
+ break;
+ case 1:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ sub_801EDE0();
+ sub_801F5EC(11, 0);
+ gUnknown_02022C84->unk6 = 3;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ sub_801F5EC(10, 0);
+ gUnknown_02022C84->unk6 = 4;
+ }
+ else if (sub_801EBE4())
+ {
+ sub_801F5EC(1, 0);
+ gUnknown_02022C84->unk6 = 2;
+ }
+ break;
+ case 2:
+ if (!sub_801F644(0))
+ gUnknown_02022C84->unk6 = 1;
+ break;
+ case 3:
+ if (!sub_801F644(0))
+ {
+ sub_801F5EC(10, 0);
+ gUnknown_02022C84->unk6 = 4;
+ }
+ break;
+ case 4:
+ if (!sub_801F644(0))
+ sub_801EBD4(1);
+ break;
+ case 5:
+ if (!sub_801F644(0))
+ gUnknown_02022C84->unk6 = 6;
+ break;
+ case 6:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub_801F5EC(7, 0);
+ gUnknown_02022C84->unk6 = 4;
+ }
+ break;
+ }
+}
+
+static void sub_801E978(void)
+{
+ s8 input;
+
+ switch (gUnknown_02022C84->unk6)
+ {
+ case 0:
+ if (!gUnknown_02022C84->unk18)
+ {
+ gUnknown_02022C84->unk6 = 12;
+ }
+ else
+ {
+ sub_801F5EC(7, 0);
+ gUnknown_02022C84->unk6 = 1;
+ }
+ break;
+ case 1:
+ if (!sub_801F644(0))
+ {
+ sub_801F5EC(14, 0);
+ gUnknown_02022C84->unk6 = 2;
+ }
+ break;
+ case 2:
+ input = sub_801FF08();
+ switch (input)
+ {
+ case -1:
+ case 1:
+ gUnknown_02022C84->unk6 = 12;
+ break;
+ case 0:
+ sub_801F5EC(7, 0);
+ gUnknown_02022C84->unk6 = 3;
+ break;
+ }
+ break;
+ case 3:
+ if (!sub_801F644(0))
+ {
+ sub_801F5EC(15, 0);
+ gUnknown_02022C84->unk6 = 4;
+ }
+ break;
+ case 4:
+ if (!sub_801F644(0))
+ gUnknown_02022C84->unk6 = 5;
+ break;
+ case 5:
+ input = sub_801FF08();
+ switch (input)
+ {
+ case -1:
+ case 1:
+ gUnknown_02022C84->unk6 = 12;
+ break;
+ case 0:
+ sub_801F5EC(7, 0);
+ gUnknown_02022C84->unk6 = 6;
+ break;
+ }
+ break;
+ case 6:
+ if (!sub_801F644(0))
+ {
+ sub_801F5EC(16, 0);
+ sub_801EE2C();
+ gUnknown_02022C84->unk6 = 7;
+ }
+ break;
+ case 7:
+ if (!sub_801F644(0))
+ {
+ SetContinueGameWarpStatusToDynamicWarp();
+ TrySavingData(SAVE_NORMAL);
+ gUnknown_02022C84->unk6 = 8;
+ }
+ break;
+ case 8:
+ sub_801F5EC(17, 0);
+ gUnknown_02022C84->unk6 = 9;
+ break;
+ case 9:
+ if (!sub_801F644(0))
+ {
+ PlaySE(SE_SAVE);
+ ClearContinueGameWarpStatus2();
+ gUnknown_02022C84->unk6 = 10;
+ }
+ break;
+ case 10:
+ gUnknown_02022C84->unk19 = 0;
+ gUnknown_02022C84->unk6 = 11;
+ break;
+ case 11:
+ gUnknown_02022C84->unk19++;
+ if (gUnknown_02022C84->unk19 > 120)
+ gUnknown_02022C84->unk6 = 12;
+ break;
+ case 12:
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
+ gUnknown_02022C84->unk6 = 13;
+ break;
+ case 13:
+ if (!gPaletteFade.active)
+ {
+ sub_801F544();
+ sub_801DE30();
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ break;
+ }
+}
+
+static void sub_801EBD4(u16 arg0)
+{
+ gUnknown_02022C84->unk4 = arg0;
+ gUnknown_02022C84->unk6 = 0;
+}
+
+static const u8 sUnknown_082F2AA4[] = {9, 9, 9, 9};
+
+static bool32 sub_801EBE4(void)
+{
+ if (!(gMain.newAndRepeatedKeys & DPAD_UP))
+ {
+ if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ if (gUnknown_02022C84->unk12 < sUnknown_082F2AA4[gUnknown_02022C84->unk10])
+ gUnknown_02022C84->unk12++;
+ else
+ gUnknown_02022C84->unk12 = 0;
+
+ return TRUE;
+ }
+
+ if (gUnknown_02022C84->unk10 != 3)
+ {
+ if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ if (gUnknown_02022C84->unk11)
+ gUnknown_02022C84->unk11--;
+ else
+ gUnknown_02022C84->unk11 = 4;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ if (gUnknown_02022C84->unk11 > 3)
+ gUnknown_02022C84->unk11 = 0;
+ else
+ gUnknown_02022C84->unk11++;
+ }
+ else
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+ }
+
+ return FALSE;
+ }
+ else
+ {
+ if (gUnknown_02022C84->unk12)
+ gUnknown_02022C84->unk12--;
+ else
+ gUnknown_02022C84->unk12 = sUnknown_082F2AA4[gUnknown_02022C84->unk10];
+
+ return TRUE;
+ }
+}
+
+static void sub_801EC94(void)
+{
+ int i;
+ const u8 *charsStr;
+ int strLength;
+ u8 *str;
+ u8 buffer[21];
+
+ if (gUnknown_02022C84->unk10 != 3)
+ {
+ charsStr = gUnknown_082F2BA8[gUnknown_02022C84->unk10][gUnknown_02022C84->unk12];
+ for (i = 0; i < gUnknown_02022C84->unk11; i++)
+ {
+ if (*charsStr == CHAR_SPECIAL_F9)
+ charsStr++;
+ charsStr++;
+ }
+
+ strLength = 1;
+ }
+ else
+ {
+ u8 *tempStr = StringCopy(buffer, gUnknown_02022C84->unkB9[gUnknown_02022C84->unk12]);
+ tempStr[0] = CHAR_SPACE;
+ tempStr[1] = EOS;
+ charsStr = buffer;
+ strLength = StringLength_Multibyte(buffer);
+ }
+
+ gUnknown_02022C84->unk14 = gUnknown_02022C84->unk15;
+ if (!charsStr)
+ return;
+
+ str = sub_801EE84();
+ while (--strLength != -1 && gUnknown_02022C84->unk15 < 15)
+ {
+ if (*charsStr == CHAR_SPECIAL_F9)
+ {
+ *str = *charsStr;
+ charsStr++;
+ str++;
+ }
+
+ *str = *charsStr;
+ charsStr++;
+ str++;
+
+ gUnknown_02022C84->unk15++;
+ }
+
+ *str = EOS;
+}
+
+static void sub_801ED68(void)
+{
+ gUnknown_02022C84->unk14 = gUnknown_02022C84->unk15;
+ if (gUnknown_02022C84->unk15)
+ {
+ u8 *str = sub_801EEA8();
+ *str = EOS;
+ gUnknown_02022C84->unk15--;
+ }
+}
+
+static void sub_801ED94(void)
+{
+ u8 *str;
+ u8 character;
+
+ gUnknown_02022C84->unk14 = gUnknown_02022C84->unk15 - 1;
+ str = sub_801EEA8();
+ if (*str != CHAR_SPECIAL_F9)
+ {
+ character = gUnknown_082F2AA8[*str];
+ if (character)
+ *str = character;
+ }
+}
+
+static bool32 sub_801EDC4(void)
+{
+ if (gUnknown_02022C84->unk15)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void sub_801EDE0(void)
+{
+ u8 *src = sub_801F114();
+ StringCopy(gUnknown_02022C84->unkB9[gUnknown_02022C84->unk12], src);
+ gUnknown_02022C84->unk18 = 1;
+}
+
+static void sub_801EE10(void)
+{
+ gUnknown_02022C84->unk1A[0] = EOS;
+ gUnknown_02022C84->unk14 = 15;
+ gUnknown_02022C84->unk15 = 0;
+}
+
+static void sub_801EE2C(void)
+{
+ int i;
+ for (i = 0; i < 10; i++)
+ StringCopy(gSaveBlock1Ptr->unk3C88[i], gUnknown_02022C84->unkB9[i]);
+}
+
+static u8 *sub_801EE6C(int arg0)
+{
+ return gUnknown_02022C84->unkB9[arg0];
+}
+
+static u8 *sub_801EE84(void)
+{
+ u8 *str = gUnknown_02022C84->unk1A;
+ while (*str != EOS)
+ str++;
+
+ return str;
+}
+
+static u8 *sub_801EEA8(void)
+{
+ u8 *str = gUnknown_02022C84->unk1A;
+ u8 *str2 = str;
+ while (*str != EOS)
+ {
+ str2 = str;
+ if (*str == CHAR_SPECIAL_F9)
+ str++;
+ str++;
+ }
+
+ return str2;
+}
+
+static u16 sub_801EED8(void)
+{
+ u8 *str;
+ u32 i, numChars, strLength;
+
+ strLength = StringLength_Multibyte(gUnknown_02022C84->unk1A);
+ str = gUnknown_02022C84->unk1A;
+ numChars = 0;
+ if (strLength > 10)
+ {
+ strLength -= 10;
+ for (i = 0; i < strLength; i++)
+ {
+ if (*str == CHAR_SPECIAL_F9)
+ str++;
+
+ str++;
+ numChars++;
+ }
+ }
+
+ return numChars;
+}
+
+static void sub_801EF1C(u8 *arg0)
+{
+ arg0[0] = CHAR_SPACE;
+}
+
+static void sub_801EF24(u8 *arg0)
+{
+ arg0[0] = 2;
+ StringCopy(&arg0[1], gSaveBlock2Ptr->playerName);
+ arg0[1 + (PLAYER_NAME_LENGTH + 1)] = gUnknown_02022C84->unk13;
+}
+
+static void sub_801EF4C(u8 *arg0)
+{
+ arg0[0] = 1;
+ StringCopy(&arg0[1], gSaveBlock2Ptr->playerName);
+ StringCopy(&arg0[1 + (PLAYER_NAME_LENGTH + 1)], gUnknown_02022C84->unk1A);
+}
+
+static void sub_801EF7C(u8 *arg0)
+{
+ arg0[0] = 3;
+ StringCopy(&arg0[1], gSaveBlock2Ptr->playerName);
+ arg0[1 + (PLAYER_NAME_LENGTH + 1)] = gUnknown_02022C84->unk13;
+ sub_8011A50();
+}
+
+static void sub_801EFA8(u8 *arg0)
+{
+ arg0[0] = 4;
+ StringCopy(&arg0[1], gSaveBlock2Ptr->playerName);
+ arg0[1 + (PLAYER_NAME_LENGTH + 1)] = gUnknown_02022C84->unk13;
+}
+
+static void sub_801EFD0(u8 *arg0)
+{
+ arg0[0] = 5;
+ StringCopy(&arg0[1], gSaveBlock2Ptr->playerName);
+ arg0[1 + (PLAYER_NAME_LENGTH + 1)] = gUnknown_02022C84->unk13;
+}
+
+static bool32 sub_801EFF8(u8 *arg0, u8 *arg1)
+{
+ u8 *tempStr;
+ u8 var0 = *arg1;
+ u8 *str = arg1 + 1;
+ arg1 = str;
+ arg1 += 8;
+
+ switch (var0)
+ {
+ case 2:
+ if (gUnknown_02022C84->unk13 != str[8])
+ {
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, str);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg0, gText_F700JoinedChat);
+ return TRUE;
+ }
+ break;
+ case 1:
+ tempStr = StringCopy(arg0, str);
+ *(tempStr++) = EXT_CTRL_CODE_BEGIN;
+ *(tempStr++) = EXT_CTRL_CODE_CLEAR_TO;
+ *(tempStr++) = 42;
+ *(tempStr++) = CHAR_COLON;
+ StringCopy(tempStr, arg1);
+ return TRUE;
+ case 5:
+ StringCopy(gUnknown_02022C84->unk79, str);
+ // fall through
+ case 3:
+ if (gUnknown_02022C84->unk13 != *arg1)
+ {
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, str);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg0, gText_F700LeftChat);
+ return TRUE;
+ }
+ break;
+ }
+
+ return FALSE;
+}
+
+static u8 sub_801F0B0(void)
+{
+ return gUnknown_02022C84->unk10;
+}
+
+static void sub_801F0BC(u8 *arg0, u8 *arg1)
+{
+ *arg0 = gUnknown_02022C84->unk11;
+ *arg1 = gUnknown_02022C84->unk12;
+}
+
+static u8 *sub_801F0D0(void)
+{
+ return gUnknown_02022C84->unk1A;
+}
+
+static int sub_801F0DC(void)
+{
+ u8 *str = sub_801F0D0();
+ return StringLength_Multibyte(str);
+}
+
+static void sub_801F0EC(u32 *arg0, u32 *arg1)
+{
+ int diff = gUnknown_02022C84->unk15 - gUnknown_02022C84->unk14;
+ if (diff < 0)
+ {
+ diff *= -1;
+ *arg0 = gUnknown_02022C84->unk15;
+ }
+ else
+ {
+ *arg0 = gUnknown_02022C84->unk14;
+ }
+
+ *arg1 = diff;
+}
+
+static u8 *sub_801F114(void)
+{
+ int i;
+ u16 numChars = sub_801EED8();
+ u8 *str = gUnknown_02022C84->unk1A;
+ for (i = 0; i < numChars; i++)
+ {
+ if (*str == CHAR_SPECIAL_F9)
+ *str++;
+
+ str++;
+ }
+
+ return str;
+}
+
+static u16 sub_801F144(void)
+{
+ u16 count;
+ u32 i;
+ u16 numChars = sub_801EED8();
+ u8 *str = gUnknown_02022C84->unk1A;
+ for (count = 0, i = 0; i < numChars; count++, i++)
+ {
+ if (*str == CHAR_SPECIAL_F9)
+ str++;
+
+ str++;
+ }
+
+ return count;
+}
+
+static u8 *sub_801F180(void)
+{
+ return gUnknown_02022C84->unk39;
+}
+
+static u8 sub_801F18C(void)
+{
+ return gUnknown_02022C84->unk16;
+}
+
+static int sub_801F198(void)
+{
+ return gUnknown_02022C84->unk15;
+}
+
+static int sub_801F1A4(void)
+{
+ u8 *str = sub_801EEA8();
+ u32 character = *str;
+ if (character > 0xFF || gUnknown_082F2AA8[character] == character || gUnknown_082F2AA8[character] == 0)
+ return 3;
+ else
+ return 0;
+}
+
+static u8 *sub_801F1D0(void)
+{
+ return gUnknown_02022C84->unk79;
+}
+
+void copy_strings_to_sav1(void)
+{
+ StringCopy(gSaveBlock1Ptr->unk3C88[0], gText_Hello);
+ StringCopy(gSaveBlock1Ptr->unk3C88[1], gText_Pokemon2);
+ StringCopy(gSaveBlock1Ptr->unk3C88[2], gText_Trade);
+ StringCopy(gSaveBlock1Ptr->unk3C88[3], gText_Battle);
+ StringCopy(gSaveBlock1Ptr->unk3C88[4], gText_Lets);
+ StringCopy(gSaveBlock1Ptr->unk3C88[5], gText_Ok);
+ StringCopy(gSaveBlock1Ptr->unk3C88[6], gText_Sorry);
+ StringCopy(gSaveBlock1Ptr->unk3C88[7], gText_YayUnkF9F9);
+ StringCopy(gSaveBlock1Ptr->unk3C88[8], gText_ThankYou);
+ StringCopy(gSaveBlock1Ptr->unk3C88[9], gText_ByeBye);
+}
+
+static void sub_801F2B4(u8 taskId)
+{
+ u8 *buffer;
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ DestroyTask(taskId);
+ return;
+ }
+
+ data[0] = 1;
+ // fall through
+ case 1:
+ data[4] = GetLinkPlayerCount();
+ if (gUnknown_02022C84->unkD != data[4])
+ {
+ data[0] = 2;
+ gUnknown_02022C84->unkD = data[4];
+ return;
+ }
+
+ data[3] = GetBlockReceivedStatus();
+ if (!data[3] && sub_8011A9C())
+ return;
+
+ data[1] = 0;
+ data[0] = 3;
+ // fall through
+ case 3:
+ for (; data[1] < 5 && ((data[3] >> data[1]) & 1) == 0; data[1]++)
+ ;
+
+ if (data[1] == 5)
+ {
+ data[0] = 1;
+ return;
+ }
+
+ data[2] = data[1];
+ ResetBlockReceivedFlag(data[2]);
+ buffer = (u8 *)gBlockRecvBuffer[data[1]];
+ switch (buffer[0])
+ {
+ default:
+ case 1: data[5] = 3; break;
+ case 2: data[5] = 3; break;
+ case 3: data[5] = 4; break;
+ case 4: data[5] = 5; break;
+ case 5: data[5] = 6; break;
+ }
+
+ if (sub_801EFF8(gUnknown_02022C84->unk39, (u8 *)gBlockRecvBuffer[data[1]]))
+ {
+ gUnknown_02022C84->unk16 = data[1];
+ sub_801F5EC(12, 2);
+ data[0] = 7;
+ }
+ else
+ {
+ data[0] = data[5];
+ }
+
+ data[1]++;
+ break;
+ case 7:
+ if (!sub_801F644(2))
+ data[0] = data[5];
+ break;
+ case 4:
+ if (!gUnknown_02022C84->unk13 && data[2])
+ {
+ if (GetLinkPlayerCount() == 2)
+ {
+ sub_80104B0();
+ gUnknown_02022C84->unk17 = 1;
+ DestroyTask(taskId);
+ return;
+ }
+
+ sub_8011DE0(data[2]);
+ }
+
+ data[0] = 3;
+ break;
+ case 5:
+ if (gUnknown_02022C84->unk13)
+ gUnknown_02022C84->unk17 = 2;
+
+ DestroyTask(taskId);
+ break;
+ case 6:
+ gUnknown_02022C84->unk17 = 3;
+ DestroyTask(taskId);
+ break;
+ case 2:
+ if (!sub_8011A9C())
+ {
+ if (!gUnknown_02022C84->unk13)
+ sub_80110B8(gUnknown_02022C84->unkD);
+
+ data[0] = 1;
+ }
+ break;
+ }
+}
+
+static bool8 sub_801F4D0(void)
+{
+ gUnknown_02022C88 = Alloc(sizeof(*gUnknown_02022C88));
+ if (gUnknown_02022C88 && sub_8020890())
+ {
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_082F2C60, ARRAY_COUNT(gUnknown_082F2C60));
+ InitWindows(gUnknown_082F2C70);
+ reset_temp_tile_data_buffers();
+ sub_8020770();
+ sub_801F574(gUnknown_02022C88);
+ sub_801F580();
+ sub_801F5EC(0, 0);
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static bool32 sub_801F534(void)
+{
+ return sub_801F644(0);
+}
+
+static void sub_801F544(void)
+{
+ sub_80208D0();
+ if (gUnknown_02022C88)
+ FREE_AND_SET_NULL(gUnknown_02022C88);
+
+ FreeAllWindowBuffers();
+ gScanlineEffect.state = 3;
+}
+
+static void sub_801F574(struct UnionRoomChat2 *arg0)
+{
+ arg0->unk18 = 0xFF;
+ arg0->unk1E = 0xFF;
+ arg0->unk1A = 0;
+}
+
+static void sub_801F580(void)
+{
+ int i;
+
+ if (!gUnknown_02022C88)
+ return;
+
+ for (i = 0; i < 3; i++)
+ {
+ gUnknown_02022C88->unk0[i].unk0 = sub_801FDD8;
+ gUnknown_02022C88->unk0[i].unk4 = 0;
+ gUnknown_02022C88->unk0[i].unk5 = 0;
+ }
+}
+
+static void sub_801F5B8(void)
+{
+ int i;
+
+ if (!gUnknown_02022C88)
+ return;
+
+ for (i = 0; i < 3; i++)
+ {
+ gUnknown_02022C88->unk0[i].unk4 =
+ gUnknown_02022C88->unk0[i].unk0(&gUnknown_02022C88->unk0[i].unk5);
+ }
+}
+
+static void sub_801F5EC(u16 arg0, u8 arg1)
+{
+ u32 i;
+
+ gUnknown_02022C88->unk0[arg1].unk0 = sub_801FDD8;
+ for (i = 0; i < 21; i++)
+ {
+ if (gUnknown_082F2C98[i].unk0 == arg0)
+ {
+ gUnknown_02022C88->unk0[arg1].unk0 = gUnknown_082F2C98[i].unk4;
+ gUnknown_02022C88->unk0[arg1].unk4 = 1;
+ gUnknown_02022C88->unk0[arg1].unk5 = 0;
+ break;
+ }
+ }
+}
+
+static bool8 sub_801F644(u8 arg0)
+{
+ return gUnknown_02022C88->unk0[arg0].unk4;
+}
+
+bool32 sub_801F658(u8 *state)
+{
+ if (free_temp_tile_data_buffers_if_possible() == TRUE)
+ return TRUE;
+
+ switch (*state)
+ {
+ case 0:
+ sub_8020480();
+ sub_8020538();
+ break;
+ case 1:
+ sub_8020584();
+ break;
+ case 2:
+ sub_80205B4();
+ break;
+ case 3:
+ sub_8020604();
+ break;
+ case 4:
+ sub_8020680();
+ break;
+ case 5:
+ sub_80206A4();
+ sub_80206D0();
+ sub_8020740();
+ sub_80206E8();
+ break;
+ case 6:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_80208E8();
+ sub_8020A68();
+ sub_8020B20();
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_801F6F8(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_80203B0();
+ CopyWindowToVram(3, 3);
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_801F730(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_802040C();
+ CopyWindowToVram(3, 3);
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_801F768(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_802091C(TRUE);
+ if (sub_8020320())
+ return TRUE;
+
+ sub_80201A4();
+ CopyWindowToVram(2, 2);
+ break;
+ case 1:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return TRUE;
+ break;
+ case 2:
+ if (sub_8020368())
+ return TRUE;
+
+ sub_802093C();
+ sub_802091C(FALSE);
+ sub_8020B80();
+ return FALSE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_801F7D4(u8 *state)
+{
+ sub_802093C();
+ return FALSE;
+}
+
+bool32 sub_801F7E0(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_801FF18(0, 0);
+ sub_801FDDC(23, 11, 1);
+ CopyWindowToVram(gUnknown_02022C88->unk1E, 3);
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_801F82C(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_8020094();
+ sub_801FEBC();
+ CopyBgTilemapBufferToVram(0);
+ break;
+ case 1:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return TRUE;
+
+ sub_80200C8();
+ sub_801FEE4();
+ return FALSE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_801F870(u8 *state)
+{
+ u32 var0, var1;
+ u8 *str;
+
+ switch (*state)
+ {
+ case 0:
+ sub_801F0EC(&var0, &var1);
+ sub_80200EC(var0, var1, 0);
+ str = sub_801F0D0();
+ sub_8020118(0, str, 3, 1, 2);
+ CopyWindowToVram(1, 2);
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_8020B80();
+ return FALSE;
+ }
+ return TRUE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_801F8DC(u8 *state)
+{
+ u16 var0;
+ u8 *str;
+ u16 length;
+
+ switch (*state)
+ {
+ case 0:
+ var0 = sub_801F144();
+ str = sub_801F114();
+ length = StringLength_Multibyte(str);
+ sub_80200EC(var0, length, PIXEL_FILL(6));
+ sub_8020118(var0, str, 0, 4, 5);
+ CopyWindowToVram(1, 2);
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_801FF18(1, 16);
+ CopyWindowToVram(gUnknown_02022C88->unk1E, 3);
+ }
+ else
+ {
+ return TRUE;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ sub_80209AC(1);
+ else
+ return TRUE;
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_801F984(u8 *state)
+{
+ u16 var0;
+ u8 *str;
+ u16 length;
+
+ switch (*state)
+ {
+ case 0:
+ var0 = sub_801F144();
+ str = sub_801F114();
+ length = StringLength_Multibyte(str);
+ sub_80200EC(var0, length, PIXEL_FILL(0));
+ sub_8020118(var0, str, 3, 1, 2);
+ CopyWindowToVram(1, 2);
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_8020094();
+ CopyWindowToVram(gUnknown_02022C88->unk1E, 3);
+ }
+ else
+ {
+ return TRUE;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_80209AC(0);
+ sub_80200C8();
+ }
+ else
+ {
+ return TRUE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_801FA2C(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_80201A4();
+ CopyWindowToVram(2, 2);
+ (*state)++;
+ break;
+ case 1:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return TRUE;
+ else
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+bool32 sub_801FA68(u8 *state)
+{
+ u16 var0;
+ u8 *str;
+ u8 var1;
+
+ switch (*state)
+ {
+ case 0:
+ var0 = gUnknown_02022C88->unk1A;
+ str = sub_801F180();
+ var1 = sub_801F18C();
+ sub_8020420(var0, str, var1);
+ CopyWindowToVram(0, 2);
+ break;
+ case 1:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return TRUE;
+
+ if (gUnknown_02022C88->unk1A < 9)
+ {
+ gUnknown_02022C88->unk1A++;
+ *state = 4;
+ return FALSE;
+ }
+ else
+ {
+ gUnknown_02022C88->unk1C = 0;
+ (*state)++;
+ }
+ // fall through
+ case 2:
+ ScrollWindow(0, 0, 5, PIXEL_FILL(1));
+ CopyWindowToVram(0, 2);
+ gUnknown_02022C88->unk1C++;
+ (*state)++;
+ // fall through
+ case 3:
+ if (IsDma3ManagerBusyWithBgCopy())
+ return TRUE;
+
+ if (gUnknown_02022C88->unk1C < 3)
+ {
+ (*state)--;
+ return TRUE;
+ }
+ break;
+ case 4:
+ return FALSE;
+ default:
+ return TRUE;
+ }
+
+ (*state)++;
+ return TRUE;
+}
+
+bool32 sub_801FB44(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_80209E0();
+ (*state)++;
+ break;
+ case 1:
+ return sub_8020A1C();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_801FB70(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_801FF18(3, 16);
+ CopyWindowToVram(gUnknown_02022C88->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_801FBB4(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_801FF18(4, 0);
+ CopyWindowToVram(gUnknown_02022C88->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_801FBF8(u8 *state)
+{
+ u8 *str;
+
+ switch (*state)
+ {
+ case 0:
+ DynamicPlaceholderTextUtil_Reset();
+ str = sub_801F1D0();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, str);
+ sub_801FF18(5, 0);
+ CopyWindowToVram(gUnknown_02022C88->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_801FC4C(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_801FF18(6, 0);
+ sub_801FDDC(23, 10, 1);
+ CopyWindowToVram(gUnknown_02022C88->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_801FC9C(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_801FF18(7, 0);
+ sub_801FDDC(23, 10, 1);
+ CopyWindowToVram(gUnknown_02022C88->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_801FCEC(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_801FF18(8, 0);
+ CopyWindowToVram(gUnknown_02022C88->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_801FD30(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
+ sub_801FF18(9, 0);
+ CopyWindowToVram(gUnknown_02022C88->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+bool32 sub_801FD88(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_801FF18(10, 0);
+ sub_801FDDC(23, 10, 1);
+ CopyWindowToVram(gUnknown_02022C88->unk1E, 3);
+ (*state)++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool32 sub_801FDD8(u8 *arg0)
+{
+ return FALSE;
+}
+
+static void sub_801FDDC(u8 left, u8 top, u8 initialCursorPos)
+{
+ struct WindowTemplate template;
+ template.bg = 0;
+ template.tilemapLeft = left;
+ template.tilemapTop = top;
+ template.width = 6;
+ template.height = 4;
+ template.paletteNum = 14;
+ template.baseBlock = 0x52;
+ gUnknown_02022C88->unk18 = AddWindow(&template);
+ if (gUnknown_02022C88->unk18 != 0xFF)
+ {
+ FillWindowPixelBuffer(gUnknown_02022C88->unk18, PIXEL_FILL(1));
+ PutWindowTilemap(gUnknown_02022C88->unk18);
+ AddTextPrinterParameterized(gUnknown_02022C88->unk18, 1, gText_Yes, 8, 1, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(gUnknown_02022C88->unk18, 1, gText_No, 8, 17, TEXT_SPEED_FF, NULL);
+ sub_8098858(gUnknown_02022C88->unk18, 1, 13);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(gUnknown_02022C88->unk18, 2, initialCursorPos);
+ }
+}
+
+static void sub_801FEBC(void)
+{
+ if (gUnknown_02022C88->unk18 != 0xFF)
+ {
+ ClearStdWindowAndFrameToTransparent(gUnknown_02022C88->unk18, FALSE);
+ ClearWindowTilemap(gUnknown_02022C88->unk18);
+ }
+}
+
+static void sub_801FEE4(void)
+{
+ if (gUnknown_02022C88->unk18 != 0xFF)
+ {
+ RemoveWindow(gUnknown_02022C88->unk18);
+ gUnknown_02022C88->unk18 = 0xFF;
+ }
+}
+
+static s8 sub_801FF08(void)
+{
+ return Menu_ProcessInput();
+}
+
+static void sub_801FF18(int arg0, u16 arg1)
+{
+ const u8 *str;
+ int windowId;
+ struct WindowTemplate template;
+ template.bg = 0;
+ template.tilemapLeft = 8;
+ template.tilemapTop = 16;
+ template.width = 21;
+ template.height = 4;
+ template.paletteNum = 14;
+ template.baseBlock = 0x6A;
+ if (gUnknown_082F2D40[arg0].unkA)
+ {
+ template.tilemapLeft -= 7;
+ template.width += 7;
+ }
+
+ gUnknown_02022C88->unk1E = AddWindow(&template);
+ windowId = gUnknown_02022C88->unk1E;
+ if (gUnknown_02022C88->unk1E == 0xFF)
+ return;
+
+ if (gUnknown_082F2D40[arg0].unk9)
+ {
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_02022C88->unk22, gUnknown_082F2D40[arg0].unk0);
+ str = gUnknown_02022C88->unk22;
+ }
+ else
+ {
+ str = gUnknown_082F2D40[arg0].unk0;
+ }
+
+ ChangeBgY(0, arg1 * 256, 0);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (gUnknown_082F2D40[arg0].unk4 == 1)
+ {
+ sub_80989E0(windowId, 0xA, 2);
+ AddTextPrinterParameterized5(
+ windowId,
+ 1,
+ str,
+ gUnknown_082F2D40[arg0].unk5 + 8,
+ gUnknown_082F2D40[arg0].unk6 + 8,
+ TEXT_SPEED_FF,
+ NULL,
+ gUnknown_082F2D40[arg0].unk7,
+ gUnknown_082F2D40[arg0].unk8);
+ }
+ else
+ {
+ sub_8098858(windowId, 0xA, 2);
+ AddTextPrinterParameterized5(
+ windowId,
+ 1,
+ str,
+ gUnknown_082F2D40[arg0].unk5,
+ gUnknown_082F2D40[arg0].unk6,
+ TEXT_SPEED_FF,
+ NULL,
+ gUnknown_082F2D40[arg0].unk7,
+ gUnknown_082F2D40[arg0].unk8);
+ }
+
+ gUnknown_02022C88->unk1E = windowId;
+}
+
+static void sub_8020094(void)
+{
+ if (gUnknown_02022C88->unk1E != 0xFF)
+ {
+ ClearStdWindowAndFrameToTransparent(gUnknown_02022C88->unk1E, FALSE);
+ ClearWindowTilemap(gUnknown_02022C88->unk1E);
+ }
+
+ ChangeBgY(0, 0, 0);
+}
+
+static void sub_80200C8(void)
+{
+ if (gUnknown_02022C88->unk1E != 0xFF)
+ {
+ RemoveWindow(gUnknown_02022C88->unk1E);
+ gUnknown_02022C88->unk1E = 0xFF;
+ }
+}
+
+static void sub_80200EC(u16 x, u16 width, u8 fillValue)
+{
+ FillWindowPixelRect(1, fillValue, x * 8, 1, width * 8, 14);
+}
+
+static void sub_8020118(u16 x, u8 *str, u8 fillValue, u8 arg3, u8 arg4)
+{
+ u8 *str2;
+ u8 sp[38];
+ if (fillValue)
+ sub_80200EC(x, sub_801F198() - x, fillValue);
+
+ sp[0] = fillValue;
+ sp[1] = arg3;
+ sp[2] = arg4;
+ str2 = &sp[4];
+ str2[0] = EXT_CTRL_CODE_BEGIN;
+ str2[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING;
+ str2[2] = 8;
+ StringCopy(&str2[3], str);
+ AddTextPrinterParameterized3(1, 2, x * 8, 1, sp, TEXT_SPEED_FF, str2);
+}
+
+static void sub_80201A4(void)
+{
+ u8 var0;
+ int i;
+ int var1;
+ u16 left;
+ u16 top;
+ u8 sp[52];
+ u8 *str;
+ u8 *str2;
+
+ FillWindowPixelBuffer(2, PIXEL_FILL(15));
+ var0 = sub_801F0B0();
+ sp[0] = 0;
+ sp[1] = 14;
+ sp[2] = 13;
+ if (var0 != 3)
+ {
+ str = &sp[4];
+ str[0] = EXT_CTRL_CODE_BEGIN;
+ str[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING;
+ var1 = 8;
+ str[2] = var1;
+ left = var1;
+ if (var0 == 2)
+ left = 6;
+
+ for (i = 0, top = 0; i < 10; i++, top += 12)
+ {
+ if (!gUnknown_082F2BA8[var0][i])
+ return;
+
+ StringCopy(&sp[7], gUnknown_082F2BA8[var0][i]);
+ AddTextPrinterParameterized3(2, 0, left, top, sp, TEXT_SPEED_FF, &sp[4]);
+ }
+ }
+ else
+ {
+ left = 4;
+ for (i = 0, top = 0; i < 10; i++, top += 12)
+ {
+ str2 = sub_801EE6C(i);
+ if (GetStringWidth(0, str2, 0) <= 40)
+ {
+ AddTextPrinterParameterized3(2, 0, left, top, sp, TEXT_SPEED_FF, str2);
+ }
+ else
+ {
+ int length = StringLength_Multibyte(str2);
+ do
+ {
+ length--;
+ StringCopyN_Multibyte(&sp[4], str2, length);
+ } while (GetStringWidth(0, &sp[4], 0) > 35);
+
+ AddTextPrinterParameterized3(2, 0, left, top, sp, TEXT_SPEED_FF, &sp[4]);
+ AddTextPrinterParameterized3(2, 0, left + 35, top, sp, TEXT_SPEED_FF, gText_Ellipsis);
+ }
+ }
+ }
+}
+
+static bool32 sub_8020320(void)
+{
+ if (gUnknown_02022C88->unk20 < 56)
+ {
+ gUnknown_02022C88->unk20 += 12;
+ if (gUnknown_02022C88->unk20 >= 56)
+ gUnknown_02022C88->unk20 = 56;
+
+ if (gUnknown_02022C88->unk20 < 56)
+ {
+ sub_80207C0(gUnknown_02022C88->unk20);
+ return TRUE;
+ }
+ }
+
+ sub_8020818(gUnknown_02022C88->unk20);
+ return FALSE;
+}
+
+static bool32 sub_8020368(void)
+{
+ if (gUnknown_02022C88->unk20 > 0)
+ {
+ gUnknown_02022C88->unk20 -= 12;
+ if (gUnknown_02022C88->unk20 <= 0)
+ gUnknown_02022C88->unk20 = 0;
+
+ if (gUnknown_02022C88->unk20 > 0)
+ {
+ sub_80207C0(gUnknown_02022C88->unk20);
+ return TRUE;
+ }
+ }
+
+ sub_8020818(gUnknown_02022C88->unk20);
+ return FALSE;
+}
+
+static void sub_80203B0(void)
+{
+ FillWindowPixelBuffer(3, PIXEL_FILL(1));
+ sub_8098858(3, 1, 13);
+ PrintTextArray(3, 2, 8, 1, 14, 5, gUnknown_082F2DC8);
+ sub_81983AC(3, 2, 0, 1, 14, 5, sub_801F0B0());
+ PutWindowTilemap(3);
+}
+
+static void sub_802040C(void)
+{
+ ClearStdWindowAndFrameToTransparent(3, FALSE);
+ ClearWindowTilemap(3);
+}
+
+static void sub_8020420(u16 row, u8 *str, u8 arg2)
+{
+ u8 color[3];
+ color[0] = 1;
+ color[1] = arg2 * 2 + 2;
+ color[2] = arg2 * 2 + 3;
+ FillWindowPixelRect(0, PIXEL_FILL(1), 0, row * 15, 168, 15);
+ AddTextPrinterParameterized3(0, 2, 0, row * 15 + 1, color, TEXT_SPEED_FF, str);
+}
+
+static void sub_8020480(void)
+{
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(64, 240));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 144));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_BG2 | WININ_WIN0_BG3
+ | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
+}
+
+static void sub_8020538(void)
+{
+ SetBgTilemapBuffer(0, gUnknown_02022C88->unk128);
+ SetBgTilemapBuffer(1, gUnknown_02022C88->unk928);
+ SetBgTilemapBuffer(3, gUnknown_02022C88->unk1128);
+ SetBgTilemapBuffer(2, gUnknown_02022C88->unk1928);
+}
+
+static void sub_8020584(void)
+{
+ RequestDma3Fill(0, (void *)BG_CHAR_ADDR(0), 0x20, 1);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32);
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void sub_80205B4(void)
+{
+ LoadPalette(gUnknown_08DD4BD0, 0x70, 0x20);
+ LoadPalette(gUnknown_08DD4BB0, 0xC0, 0x20);
+ decompress_and_copy_tile_data_to_vram(1, gUnknown_08DD4BF0, 0, 0, 0);
+ CopyToBgTilemapBuffer(1, gUnknown_08DD4C4C, 0, 0);
+ CopyBgTilemapBufferToVram(1);
+}
+
+static void sub_8020604(void)
+{
+ u8 *ptr;
+
+ LoadPalette(gLinkMiscMenu_Pal, 0, 0x20);
+ ptr = decompress_and_copy_tile_data_to_vram(2, gLinkMiscMenu_Gfx, 0, 0, 0);
+ if (ptr)
+ {
+ CpuFastCopy(&ptr[0x220], gUnknown_02022C88->unk2128, 0x20);
+ CpuFastCopy(&ptr[0x420], gUnknown_02022C88->unk2148, 0x20);
+ }
+
+ CopyToBgTilemapBuffer(2, gLinkMiscMenu_Tilemap, 0, 0);
+ CopyBgTilemapBufferToVram(2);
+}
+
+static void sub_8020680(void)
+{
+ LoadPalette(gUnknown_082F2C20, 0x80, 0x20);
+ RequestDma3Fill(0, (void *)BG_CHAR_ADDR(1) + 0x20, 0x20, 1);
+}
+
+static void sub_80206A4(void)
+{
+ LoadPalette(gUnknown_082F2C40, 0xF0, 0x20);
+ PutWindowTilemap(0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
+ CopyWindowToVram(0, 3);
+}
+
+static void sub_80206D0(void)
+{
+ PutWindowTilemap(2);
+ sub_80201A4();
+ CopyWindowToVram(2, 3);
+}
+
+static void sub_80206E8(void)
+{
+ int i;
+ u8 var0[2];
+ var0[0] = 0;
+ var0[1] = 0xFF;
+
+ for (i = 0; i < 15; i++)
+ BlitBitmapToWindow(1, gUnknown_02022C88->unk2128, i * 8, 0, 8, 16);
+
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ PutWindowTilemap(1);
+ CopyWindowToVram(1, 3);
+}
+
+static void sub_8020740(void)
+{
+ FillWindowPixelBuffer(3, PIXEL_FILL(1));
+ LoadUserWindowBorderGfx(3, 1, 0xD0);
+ LoadUserWindowBorderGfx_(3, 0xA, 0x20);
+ LoadPalette(gUnknown_0860F074, 0xE0, 0x20);
+}
+
+static void sub_8020770(void)
+{
+ struct ScanlineEffectParams params;
+ params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ params.dmaDest = &REG_BG1HOFS;
+ params.initState = 1;
+ params.unused9 = 0;
+ gUnknown_02022C88->unk20 = 0;
+ CpuFastFill(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers));
+ ScanlineEffect_SetParams(params);
+}
+
+static void sub_80207C0(s16 arg0)
+{
+ CpuFill16(arg0, gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], 0x120);
+ CpuFill16(0, gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer] + 0x90, 0x20);
+}
+
+static void sub_8020818(s16 arg0)
+{
+ CpuFill16(arg0, gScanlineEffectRegBuffers[0], 0x120);
+ CpuFill16(0, gScanlineEffectRegBuffers[0] + 0x90, 0x20);
+ CpuFill16(arg0, gScanlineEffectRegBuffers[0] + 0x3C0, 0x120);
+ CpuFill16(0, gScanlineEffectRegBuffers[0] + 0x450, 0x20);
+}
+
+static bool32 sub_8020890(void)
+{
+ u32 i;
+ for (i = 0; i < 5; i++)
+ LoadCompressedSpriteSheet(&gUnknown_082F3134[i]);
+
+ LoadSpritePalette(&gUnknown_082F315C);
+ gUnknown_02022C8C = Alloc(0x18);
+ if (!gUnknown_02022C8C)
+ return FALSE;
+
+ return TRUE;
+}
+
+static void sub_80208D0(void)
+{
+ if (gUnknown_02022C8C)
+ Free(gUnknown_02022C8C);
+}
+
+static void sub_80208E8(void)
+{
+ u8 spriteId = CreateSprite(&gUnknown_082F319C, 10, 24, 0);
+ gUnknown_02022C8C->unk0 = &gSprites[spriteId];
+}
+
+static void sub_802091C(bool32 invisible)
+{
+ gUnknown_02022C8C->unk0->invisible = invisible;
+}
+
+static void sub_802093C(void)
+{
+ u8 x, y;
+ u8 var2 = sub_801F0B0();
+ sub_801F0BC(&x, &y);
+ if (var2 != 3)
+ {
+ StartSpriteAnim(gUnknown_02022C8C->unk0, 0);
+ gUnknown_02022C8C->unk0->pos1.x = x * 8 + 10;
+ gUnknown_02022C8C->unk0->pos1.y = y * 12 + 24;
+ }
+ else
+ {
+ StartSpriteAnim(gUnknown_02022C8C->unk0, 2);
+ gUnknown_02022C8C->unk0->pos1.x = 24;
+ gUnknown_02022C8C->unk0->pos1.y = y * 12 + 24;
+ }
+}
+
+static void sub_80209AC(int arg0)
+{
+ const u16 *palette = &gUnknown_082F2DF0[arg0 * 2 + 1];
+ u8 index = IndexOfSpritePaletteTag(0);
+ LoadPalette(palette, index * 16 + 0x101, 4);
+}
+
+static void sub_80209E0(void)
+{
+ if (sub_801F0B0() != 3)
+ StartSpriteAnim(gUnknown_02022C8C->unk0, 1);
+ else
+ StartSpriteAnim(gUnknown_02022C8C->unk0, 3);
+
+ gUnknown_02022C8C->unk14 = 0;
+}
+
+static bool32 sub_8020A1C(void)
+{
+ if (gUnknown_02022C8C->unk14 > 3)
+ return FALSE;
+
+ if (++gUnknown_02022C8C->unk14 > 3)
+ {
+ if (sub_801F0B0() != 3)
+ StartSpriteAnim(gUnknown_02022C8C->unk0, 0);
+ else
+ StartSpriteAnim(gUnknown_02022C8C->unk0, 2);
+
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_8020A68(void)
+{
+ u8 spriteId = CreateSprite(&gUnknown_082F31BC, 76, 152, 2);
+ gUnknown_02022C8C->unk8 = &gSprites[spriteId];
+ spriteId = CreateSprite(&gUnknown_082F31D4, 64, 152, 1);
+ gUnknown_02022C8C->unk4 = &gSprites[spriteId];
+}
+
+void sub_8020ABC(struct Sprite *sprite)
+{
+ int var0 = sub_801F198();
+ if (var0 == 15)
+ {
+ sprite->invisible = 1;
+ }
+ else
+ {
+ sprite->invisible = 0;
+ sprite->pos1.x = var0 * 8 + 76;
+ }
+}
+
+void sub_8020AF4(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 4)
+ {
+ sprite->data[0] = 0;
+ if (++sprite->pos2.x > 4)
+ sprite->pos2.x = 0;
+ }
+}
+
+static void sub_8020B20(void)
+{
+ u8 spriteId = CreateSprite(&gUnknown_082F322C, 8, 152, 3);
+ gUnknown_02022C8C->unkC = &gSprites[spriteId];
+ spriteId = CreateSprite(&gUnknown_082F3244, 32, 152, 4);
+ gUnknown_02022C8C->unk10 = &gSprites[spriteId];
+ gUnknown_02022C8C->unk10->invisible = 1;
+}
+
+static void sub_8020B80(void)
+{
+ if (sub_801F0B0() == 3)
+ {
+ if (sub_801F0DC() != 0)
+ {
+ gUnknown_02022C8C->unk10->invisible = 0;
+ StartSpriteAnim(gUnknown_02022C8C->unk10, 3);
+ }
+ else
+ {
+ gUnknown_02022C8C->unk10->invisible = 1;
+ }
+ }
+ else
+ {
+ int anim = sub_801F1A4();
+ if (anim == 3)
+ {
+ gUnknown_02022C8C->unk10->invisible = 1;
+ }
+ else
+ {
+ gUnknown_02022C8C->unk10->invisible = 0;
+ StartSpriteAnim(gUnknown_02022C8C->unk10, anim);
+ }
+ }
+
+}
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 762019ecd..6df826214 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -2,43 +2,91 @@
#include "main.h"
#include "pokeblock.h"
#include "alloc.h"
+#include "decompress.h"
+#include "graphics.h"
#include "palette.h"
#include "pokenav.h"
+#include "menu_specialized.h"
#include "scanline_effect.h"
#include "text.h"
#include "bg.h"
#include "window.h"
#include "text_window.h"
+#include "constants/rgb.h"
+#include "sound.h"
+#include "constants/songs.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "strings.h"
+#include "menu.h"
+#include "gpu_regs.h"
+#include "graphics.h"
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];
+ /*0x00*/ void (*field_0)(void);
+ /*0x04*/ void (*callback)(void);
+ /*0x08*/ struct Pokeblock *pokeblock;
+ /*0x0C*/ struct Pokemon *mon;
+ /*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;
+ /*0x79*/ u8 filler79[0x1];
+ /*0x7A*/ u8 field_7A[0x22];
+};
+
+struct Unk7FB8
+{
+ u8 unk0;
+ u8 unk1;
+ u16 unk2;
};
struct UsePokeblockStruct
{
- u8 field_0[0x7C58];
- u8 field_7C58[0x378];
- struct UsePokeblockSubStruct info;
+ /*0x0000*/ u8 filler0[4];
+ /*0x0000*/ u16 field_4[6][0x40];
+ /*0x0304*/ u8 field_304[3][0x2000];
+ /*0x6304*/ u8 filler_6304[0x1000];
+ /*0x7304*/ u8 tilemapBuffer[BG_SCREEN_SIZE + 2];
+ /*0x7B06*/ u8 field_7B06[7];
+ /*0x7B0E*/ s16 field_7B0E;
+ /*0x7B10*/ u8 field_7B10;
+ /*0x7B12*/ u16 field_7B12;
+ /*0x7B12*/ u16 field_7B14;
+ /*0x7B12*/ u8 *field_7B18;
+ /*0x7B1C*/ struct Sprite *field_7B1C[10];
+ /*0x7B44*/ struct Sprite *field_7B44[2];
+ /*0x7B4C*/ u8 field_7B4C;
+ /*0x7B4D*/ u8 field_7B4D[3][24];
+ /*0x7B95*/ u8 field_7B95[3][64];
+ /*0x7C58*/ struct UnknownStruct_81D1ED4 field_7C58;
+ /*0x7FB0*/ u8 unk7FB0[3];
+ /*0x7FB3*/ s8 field_7FB3;
+ /*0x7FB4*/ s8 field_7FB4;
+ /*0x7FB5*/ s8 field_7FB5;
+ /*0x7FB6*/ s8 field_7FB6;
+ /*0x7FB8*/ struct Unk7FB8 field_7FB8[6];
+ /*0x7FD0*/ struct UsePokeblockSubStruct info;
};
extern u16 gKeyRepeatStartDelay;
+extern void sub_81D21DC(u8);
+
// this file's functions
void sub_816636C(void (*func)(void));
void sub_8166380(void);
@@ -50,13 +98,61 @@ void sub_81668F8(void);
void sub_8167420(void);
void sub_8167760(void);
u8 sub_81672E4(u8 arg0);
-bool8 sub_8168328(void);
+static bool8 sub_8168328(void);
bool8 sub_8167930(void);
void sub_8167608(u8 arg0);
void sub_8167BA0(u16 arg0, u8 copyToVramMode);
+void sub_8166634(void);
+static void sub_8167CA0(bool8);
+void sub_8166BEC(void);
+void sub_8166D44(void);
+s8 sub_8166DE4(void);
+bool8 IsSheenMaxed(void);
+void sub_8166F50(void);
+void sub_816681C(void);
+void sub_8166F94(void);
+u8 sub_81672A4(u8 a0);
+void sub_8166A34(void);
+void sub_8167104(void);
+void sub_8167338(void);
+void sub_81681F4(u8);
+void sub_8166E24(void);
+bool8 sub_8166EDC(void);
+void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statId, s16 a2);
+void Pokeblock_MenuWindowTextPrint(const u8 *message);
+void sub_8167184(struct Pokeblock *, struct Pokemon *);
+void sub_81673DC(struct Sprite *sprite);
+void sub_81674BC(void);
+void sub_816753C(s16, u8);
+static u8 sub_8167EA4(void);
+static u8 sub_8167FA4(void);
+static u8 sub_8168048(void);
+void sub_8168180(struct Sprite *sprite);
+void sub_81681B4(struct Sprite *sprite);
+void sub_8168168(struct Sprite *sprite);
extern const struct BgTemplate gUnknown_085DFCCC[4];
extern const struct WindowTemplate gUnknown_085DFCDC[];
+extern u16 gSpecialVar_ItemId;
+extern const struct WindowTemplate sUsePokeblockYesNoWinTemplate[];
+extern const u8* sContestStatNames[];
+extern const u32 gUnknown_085DFCB0[];
+extern const u8 gUnknown_085DFCC4[];
+extern const struct SpriteSheet gSpriteSheet_ConditionUpDown;
+extern const struct SpritePalette gSpritePalette_ConditionUpDown;
+extern const struct SpriteTemplate gSpriteTemplate_085DFD5C;
+extern const s16 gUnknown_085DFD28[][2];
+extern const u32 gUnknown_085DFB60[];
+extern const u32 gUnknown_085DFA80[];
+extern const u32 gUnknown_085DFA60[];
+extern const u32 gUnknown_085DFC0C[];
+extern const u16 gUnknown_086231E8[];
+extern const u16 gUnknown_08623208[];
+extern const u8 gUnknown_085DFCC9[];
+extern const struct SpritePalette gUnknown_085DFDB8;
+extern const struct SpriteTemplate gUnknown_085DFDA0;
+
+extern const u8 *const gNatureNamePointers[];
// ram variables
EWRAM_DATA struct UsePokeblockSubStruct *gUnknown_0203BC90 = NULL;
@@ -64,9 +160,9 @@ EWRAM_DATA void (*gUnknown_0203BC94)(void) = NULL;
EWRAM_DATA struct Pokeblock *gUnknown_0203BC98 = NULL;
EWRAM_DATA u8 gPokeblockMonId = 0;
EWRAM_DATA s16 gPokeblockGain = 0;
-EWRAM_DATA void *gUnknown_0203BCA0 = NULL;
-EWRAM_DATA void *gUnknown_0203BCA4 = NULL;
-EWRAM_DATA void *gUnknown_0203BCA8 = NULL;
+EWRAM_DATA u8 *gUnknown_0203BCA0 = NULL;
+EWRAM_DATA u8 *gUnknown_0203BCA4 = NULL;
+EWRAM_DATA u8 *gUnknown_0203BCA8 = NULL;
EWRAM_DATA struct UsePokeblockStruct *gUnknown_0203BCAC = NULL;
// const rom data
@@ -75,7 +171,7 @@ EWRAM_DATA struct UsePokeblockStruct *gUnknown_0203BCAC = NULL;
// code
void ChooseMonToGivePokeblock(struct Pokeblock *pokeblock, void (*callback)(void))
{
- gUnknown_0203BCAC = AllocZeroed(0x806C);
+ gUnknown_0203BCAC = AllocZeroed(sizeof(*gUnknown_0203BCAC));
gUnknown_0203BC90 = &gUnknown_0203BCAC->info;
gUnknown_0203BC90->pokeblock = pokeblock;
gUnknown_0203BC90->callback = callback;
@@ -85,7 +181,7 @@ void ChooseMonToGivePokeblock(struct Pokeblock *pokeblock, void (*callback)(void
void CB2_ReturnAndChooseMonToGivePokeblock(void)
{
- gUnknown_0203BCAC = AllocZeroed(0x806C);
+ gUnknown_0203BCAC = AllocZeroed(sizeof(*gUnknown_0203BCAC));
gUnknown_0203BC90 = &gUnknown_0203BCAC->info;
gUnknown_0203BC90->pokeblock = gUnknown_0203BC98;
gUnknown_0203BC90->callback = gUnknown_0203BC94;
@@ -130,7 +226,7 @@ void sub_8166340(void)
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- sub_81D2108(gUnknown_0203BCAC->field_7C58);
+ sub_81D2108(&gUnknown_0203BCAC->field_7C58);
ScanlineEffect_InitHBlankDmaTransfer();
}
@@ -144,87 +240,1199 @@ void sub_8166380(void)
{
switch (gUnknown_0203BC90->field_50)
{
- case 0:
- gUnknown_0203BCAC->field_0[0x7B10] = 0xFF;
- sub_81D1ED4(gUnknown_0203BCAC->field_7C58);
- gUnknown_0203BC90->field_50++;
- break;
- case 1:
- ResetSpriteData();
- FreeAllSpritePalettes();
+ case 0:
+ gUnknown_0203BCAC->field_7B10 = 0xFF;
+ sub_81D1ED4(&gUnknown_0203BCAC->field_7C58);
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 1:
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 2:
+ SetVBlankCallback(NULL);
+ CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 3:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_085DFCCC, ARRAY_COUNT(gUnknown_085DFCCC));
+ InitWindows(gUnknown_085DFCDC);
+ DeactivateAllTextPrinters();
+ LoadUserWindowBorderGfx(0, 0x97, 0xE0);
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 4:
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 5:
+ if (!sub_8168328())
gUnknown_0203BC90->field_50++;
- break;
- case 2:
- SetVBlankCallback(NULL);
- CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
+ break;
+ case 6:
+ gKeyRepeatStartDelay = 20;
+ sub_8167420();
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 7:
+ if (!sub_8167930())
gUnknown_0203BC90->field_50++;
- break;
- case 3:
- ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_085DFCCC, ARRAY_COUNT(gUnknown_085DFCCC));
- InitWindows(gUnknown_085DFCDC);
- DeactivateAllTextPrinters();
- LoadUserWindowBorderGfx(0, 0x97, 0xE0);
+ break;
+ case 8:
+ sub_8167608(0);
+ sub_8167760();
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 9:
+ if (!sub_81D312C(&gUnknown_0203BCAC->field_7B0E))
gUnknown_0203BC90->field_50++;
- break;
- case 4:
+ break;
+ case 10:
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 11:
+ sub_81D2754(gUnknown_0203BCAC->field_7C58.unk0[0], 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))
+ {
+ sub_81D1F84(&gUnknown_0203BCAC->field_7C58, gUnknown_0203BCAC->field_7C58.unk14[0], gUnknown_0203BCAC->field_7C58.unk14[0]);
gUnknown_0203BC90->field_50++;
- break;
- case 5:
- if (!sub_8168328())
+ }
+ break;
+ case 13:
+ sub_81D2230(&gUnknown_0203BCAC->field_7C58);
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 14:
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ sub_8167BA0(0, 1);
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 15:
+ sub_816636C(sub_8166564);
+ break;
+ }
+}
+
+void sub_8166564(void)
+{
+ switch (gUnknown_0203BC90->field_50)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ SetVBlankCallback(sub_8166340);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(3);
+ ShowBg(2);
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ sub_81D3464(gUnknown_0203BCAC->field_7B1C);
+ if (gUnknown_0203BCAC->info.field_71 != gUnknown_0203BCAC->info.field_70 - 1)
{
- gUnknown_0203BC90->field_50++;
+ u8 var0 = gUnknown_0203BCAC->unk7FB0[gUnknown_0203BCAC->field_7FB3];
+ sub_81D3480(gUnknown_0203BCAC->field_7B1C, gUnknown_0203BCAC->field_7B10, var0);
}
+
+ sub_816636C(sub_8166634);
+ }
+ break;
+ }
+}
+
+void sub_8166634(void)
+{
+ u8 var;
+
+ switch (gUnknown_0203BC90->field_50)
+ {
+ case 0:
+ if (gMain.heldKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ sub_8167CA0(TRUE);
+ sub_81D3520(gUnknown_0203BCAC->field_7B1C);
+ gUnknown_0203BC90->field_50 = 1;
+ }
+ else if (gMain.heldKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ sub_8167CA0(FALSE);
+ sub_81D3520(gUnknown_0203BCAC->field_7B1C);
+ gUnknown_0203BC90->field_50 = 1;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_0203BC90->field_50 = 3;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gUnknown_0203BCAC->info.field_71 == gUnknown_0203BCAC->info.field_70 - 1)
+ gUnknown_0203BC90->field_50 = 3;
+ else
+ gUnknown_0203BC90->field_50 = 5;
+ }
+ break;
+ case 1:
+ var = gUnknown_0203BCAC->info.unk74();
+ if (!var)
+ gUnknown_0203BC90->field_50 = var;
+ break;
+ case 2:
+ break;
+ case 3:
+ sub_816636C(sub_8166BEC);
+ break;
+ case 4:
+ break;
+ case 5:
+ sub_8166D44();
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 6:
+ switch (sub_8166DE4())
+ {
+ case 1:
+ case -1:
+ gUnknown_0203BC90->field_50 = 0;
break;
- case 6:
- gKeyRepeatStartDelay = 20;
- sub_8167420();
- gUnknown_0203BC90->field_50++;
- break;
- case 7:
- if (!sub_8167930())
+ case 0:
+ if (IsSheenMaxed())
{
- gUnknown_0203BC90->field_50++;
+ sub_8166F50();
+ gUnknown_0203BC90->field_50 = 7;
}
- break;
- case 8:
- sub_8167608(0);
- sub_8167760();
- gUnknown_0203BC90->field_50++;
- break;
- case 9:
- if (!sub_81D312C(&gUnknown_0203BCAC->field_0[0x7B0E]))
+ else
{
- gUnknown_0203BC90->field_50++;
+ sub_816636C(sub_816681C);
}
break;
- case 10:
+ }
+ break;
+ case 7:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub_8166F94();
+ gUnknown_0203BC90->field_50 = 0;
+ }
+ break;
+ }
+}
+
+void sub_816681C(void)
+{
+ switch (gUnknown_0203BC90->field_50)
+ {
+ case 0:
+ gPokeblockMonId = sub_81672A4(gUnknown_0203BCAC->info.field_71);
+ gUnknown_0203BC94 = gUnknown_0203BC90->callback;
+ gUnknown_0203BC98 = gUnknown_0203BC90->pokeblock;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ SetVBlankCallback(NULL);
+ FREE_AND_SET_NULL(gUnknown_0203BCA0);
+ FREE_AND_SET_NULL(gUnknown_0203BCA4);
+ FREE_AND_SET_NULL(gUnknown_0203BCA8);
+ FREE_AND_SET_NULL(gUnknown_0203BCAC);
+ FreeAllWindowBuffers();
+ gMain.savedCallback = CB2_ReturnAndChooseMonToGivePokeblock;
+ CB2_PreparePokeblockFeedScene();
+ }
+ break;
+ }
+}
+
+void sub_81668F8(void)
+{
+ u16 var;
+
+ switch (gUnknown_0203BC90->field_50)
+ {
+ case 0:
+ if (gUnknown_0203BCAC->info.field_71 != gPokeblockMonId)
+ {
+ sub_8167CA0(gUnknown_0203BC90->field_56);
gUnknown_0203BC90->field_50++;
- break;
- case 11:
- sub_81D2754(gUnknown_0203BCAC->field_7C58, &gUnknown_0203BCAC->field_0[0x7C6C]);
- sub_81D20AC(gUnknown_0203BCAC->field_7C58);
+ }
+ else
+ {
+ gUnknown_0203BC90->field_50 = 3;
+ }
+ break;
+ case 1:
+ var = gUnknown_0203BCAC->info.unk74();
+ if (!var)
+ gUnknown_0203BC90->field_50 = var;
+ break;
+ case 2:
+ break;
+ case 3:
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 4:
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(3);
+ ShowBg(2);
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 5:
+ SetVBlankCallback(sub_8166340);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 6:
+ if (!gPaletteFade.active)
+ {
+ sub_81D3464(gUnknown_0203BCAC->field_7B1C);
+ sub_816636C(sub_8166A34);
+ SetMainCallback2(sub_816631C);
+ }
+ break;
+ }
+}
+
+void sub_8166A34(void)
+{
+ u8 var;
+
+ switch (gUnknown_0203BC90->field_50)
+ {
+ case 0:
+ gUnknown_0203BC90->mon = gPlayerParty;
+ gUnknown_0203BC90->mon += gUnknown_0203BCAC->field_7FB8[gUnknown_0203BCAC->info.field_71].unk1;
+ sub_81D3520(gUnknown_0203BCAC->field_7B1C);
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 1:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
gUnknown_0203BC90->field_50++;
- break;
- case 12:
- if (!sub_81D20BC(gUnknown_0203BCAC->field_7C58))
+ break;
+ case 2:
+ sub_8167104();
+ sub_81D2754(gUnknown_0203BC90->field_5c, gUnknown_0203BCAC->field_7C58.unk14[3]);
+ sub_81D1F84(&gUnknown_0203BCAC->field_7C58, gUnknown_0203BCAC->field_7C58.unk14[gUnknown_0203BCAC->field_7FB3], gUnknown_0203BCAC->field_7C58.unk14[3]);
+ sub_8167338();
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 3:
+ var = sub_81D2074(&gUnknown_0203BCAC->field_7C58);
+ if (!var)
+ {
+ sub_81681F4(sub_81672A4(gUnknown_0203BCAC->info.field_71));
+ if (gUnknown_0203BCAC->info.field_71 != gUnknown_0203BCAC->info.field_70 - 1)
{
- sub_81D1F84(gUnknown_0203BCAC->field_7C58, &gUnknown_0203BCAC->field_7C58[0x14], &gUnknown_0203BCAC->field_7C58[0x14]);
- gUnknown_0203BC90->field_50++;
+ u8 var0 = gUnknown_0203BCAC->unk7FB0[gUnknown_0203BCAC->field_7FB3];
+ sub_81D3480(gUnknown_0203BCAC->field_7B1C, gUnknown_0203BCAC->field_7B10, var0);
}
- break;
- case 13:
- sub_81D2230(gUnknown_0203BCAC->field_7C58);
+
+ gUnknown_0203BC90->field_52 = 0;
gUnknown_0203BC90->field_50++;
- break;
- case 14:
- PutWindowTilemap(0);
- PutWindowTilemap(1);
- sub_8167BA0(0, 1);
+ }
+ break;
+ case 4:
+ if (++gUnknown_0203BC90->field_52 > 16)
+ {
+ sub_8166E24();
gUnknown_0203BC90->field_50++;
+ }
+ break;
+ case 5:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON) && !sub_8166EDC())
+ {
+ TryClearPokeblock((u8)gSpecialVar_ItemId);
+ sub_816636C(sub_8166BEC);
+ }
+ break;
+ }
+}
+
+void sub_8166BEC(void)
+{
+ u8 i, var;
+
+ switch (gUnknown_0203BC90->field_50)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ gUnknown_0203BC90->field_50 = 2;
+ break;
+ case 2:
+ gScanlineEffect.state = 3;
+ ScanlineEffect_InitHBlankDmaTransfer();
+ gUnknown_0203BC90->field_50++;
+ break;
+ case 3:
+ SetMainCallback2(gUnknown_0203BC90->callback);
+ sub_81D354C(gUnknown_0203BCAC->field_7B1C);
+ for (i = 0; i < 7; i++)
+ DestroySprite(&gSprites[gUnknown_0203BCAC->field_7B06[i]]);
+
+ FreeSpriteTilesByTag(0);
+ FreeSpriteTilesByTag(1);
+ FreeSpritePaletteByTag(0);
+ FreeSpritePaletteByTag(1);
+
+ for (i = 0; i < 2; i++)
+ DestroySprite(gUnknown_0203BCAC->field_7B44[i]);
+
+ if (gUnknown_0203BCAC->field_7B10 != 0xFF)
+ DestroySprite(&gSprites[gUnknown_0203BCAC->field_7B10]);
+
+ SetVBlankCallback(NULL);
+ FREE_AND_SET_NULL(gUnknown_0203BCA0);
+ FREE_AND_SET_NULL(gUnknown_0203BCA4);
+ FREE_AND_SET_NULL(gUnknown_0203BCA8);
+ FREE_AND_SET_NULL(gUnknown_0203BCAC);
+ FreeAllWindowBuffers();
+ break;
+ }
+}
+
+void sub_8166D44(void)
+{
+ u8 stringBuffer[0x40];
+
+ GetMonData(&gPlayerParty[sub_81672A4(gUnknown_0203BCAC->info.field_71)], MON_DATA_NICKNAME, stringBuffer);
+ StringGetEnd10(stringBuffer);
+ StringAppend(stringBuffer, gText_GetsAPokeBlockQuestion);
+ StringCopy(gStringVar4, stringBuffer);
+ FillWindowPixelBuffer(2, 17);
+ sub_8098858(2, 151, 14);
+ AddTextPrinterParameterized(2, 1, gStringVar4, 0, 1, 0, NULL);
+ PutWindowTilemap(2);
+ CopyWindowToVram(2, 3);
+ CreateYesNoMenu(sUsePokeblockYesNoWinTemplate, 151, 14, 0);
+}
+
+s8 sub_8166DE4(void)
+{
+ s8 menuItem = Menu_ProcessInputNoWrapClearOnChoose();
+
+ switch (menuItem)
+ {
+ case 0:
+ break;
+ case MENU_B_PRESSED:
+ case 1:
+ PlaySE(SE_SELECT);
+ rbox_fill_rectangle(2);
+ ClearWindowTilemap(2);
+ break;
+ }
+
+ return menuItem;
+}
+
+void sub_8166E24(void)
+{
+ sub_8098858(2, 151, 14);
+ FillWindowPixelBuffer(2, 17);
+
+ for (gUnknown_0203BC90->field_53 = 0; gUnknown_0203BC90->field_53 < 5; gUnknown_0203BC90->field_53++)
+ {
+ if (gUnknown_0203BC90->field_61[gUnknown_0203BC90->field_53] != 0)
break;
- case 15:
- sub_816636C(sub_8166564);
- break;
+ }
+
+ if (gUnknown_0203BC90->field_53 < 5)
+ Pokeblock_BufferEnhancedStatText(gStringVar4, gUnknown_0203BC90->field_53, gUnknown_0203BC90->field_61[gUnknown_0203BC90->field_53]);
+ else
+ Pokeblock_BufferEnhancedStatText(gStringVar4, gUnknown_0203BC90->field_53, 0);
+
+ Pokeblock_MenuWindowTextPrint(gStringVar4);
+ PutWindowTilemap(2);
+ CopyWindowToVram(2, 3);
+}
+
+bool8 sub_8166EDC(void)
+{
+ FillWindowPixelBuffer(2, 17);
+
+ while (1)
+ {
+ gUnknown_0203BC90->field_53++;
+ if (gUnknown_0203BC90->field_53 < 5)
+ {
+ if (gUnknown_0203BC90->field_61[gUnknown_0203BC90->field_53] != 0)
+ break;
+ }
+ else
+ {
+ gUnknown_0203BC90->field_53 = 5;
+ return FALSE;
+ }
+ }
+
+ Pokeblock_BufferEnhancedStatText(gStringVar4, gUnknown_0203BC90->field_53, gUnknown_0203BC90->field_61[gUnknown_0203BC90->field_53]);
+ Pokeblock_MenuWindowTextPrint(gStringVar4);
+ CopyWindowToVram(2, 2);
+
+ return TRUE;
+}
+
+void sub_8166F50(void)
+{
+ FillWindowPixelBuffer(2, 17);
+ sub_8098858(2, 151, 14);
+ AddTextPrinterParameterized(2, 1, gText_WontEatAnymore, 0, 1, 0, NULL);
+ PutWindowTilemap(2);
+ CopyWindowToVram(2, 3);
+}
+
+void sub_8166F94(void)
+{
+ rbox_fill_rectangle(2);
+ ClearWindowTilemap(2);
+ CopyWindowToVram(2, 3);
+}
+
+void Pokeblock_MenuWindowTextPrint(const u8 *message)
+{
+ AddTextPrinterParameterized(2, 1, gStringVar4, 0, 1, 0, NULL);
+}
+
+// This function is a joke.
+#ifdef NONMATCHING
+void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statId, s16 a2)
+{
+ if (a2 != 0)
+ {
+ StringCopy(dest, sContestStatNames[statId]);
+ StringAppend(dest, gText_WasEnhanced);
+ }
+ else
+ {
+ StringCopy(dest, gText_NothingChanged);
+ }
+}
+#else
+NAKED
+void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statId, s16 a2)
+{
+ asm(".syntax unified\n\
+push {r4,lr}\n\
+ adds r4, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r3, r1, 24\n\
+ lsls r2, 16\n\
+ lsrs r0, r2, 16\n\
+ asrs r2, 16\n\
+ cmp r2, 0\n\
+ beq _08167010\n\
+ cmp r2, 0\n\
+ ble _08166FEC\n\
+ movs r0, 0\n\
+_08166FEC:\n\
+ lsls r0, 16\n\
+ ldr r1, =sContestStatNames\n\
+ lsls r0, r3, 2\n\
+ adds r0, r1\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ bl StringCopy\n\
+ ldr r1, =gText_WasEnhanced\n\
+ adds r0, r4, 0\n\
+ bl StringAppend\n\
+ b _08167018\n\
+ .pool\n\
+_08167010:\n\
+ ldr r1, =gText_NothingChanged\n\
+ adds r0, r4, 0\n\
+ bl StringCopy\n\
+_08167018:\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided\n");
+}
+#endif
+
+void Pokeblock_GetMonContestStats(struct Pokemon *mon, u8 *data)
+{
+ u16 i;
+
+ for (i = 0; i < 5; i++)
+ data[i] = GetMonData(mon, gUnknown_085DFCB0[i]);
+}
+
+void sub_8167054(struct Pokeblock *pokeblock, struct Pokemon *mon)
+{
+ u16 i;
+ s16 cstat;
+ u8 data;
+
+ if (GetMonData(mon, MON_DATA_SHEEN) != 255)
+ {
+ sub_8167184(pokeblock, mon);
+ for (i = 0; i < 5; i++)
+ {
+ data = GetMonData(mon, gUnknown_085DFCB0[i]);
+ cstat = data + gUnknown_0203BC90->field_66[i];
+ if (cstat < 0)
+ cstat = 0;
+ if (cstat > 255)
+ cstat = 255;
+ data = cstat;
+ SetMonData(mon, gUnknown_085DFCB0[i], &data);
+ }
+
+ cstat = (u8)(GetMonData(mon, MON_DATA_SHEEN)) + pokeblock->feel;
+ if (cstat > 255)
+ cstat = 255;
+
+ data = cstat;
+ SetMonData(mon, MON_DATA_SHEEN, &data);
+ }
+}
+
+void sub_8167104(void)
+{
+ u16 i;
+ struct Pokemon *mon = gPlayerParty;
+ mon += gUnknown_0203BCAC->unk7FB0[gUnknown_0203BCAC->info.field_71 * 4 + 9];
+
+ Pokeblock_GetMonContestStats(mon, gUnknown_0203BC90->field_57);
+ sub_8167054(gUnknown_0203BC90->pokeblock, mon);
+ Pokeblock_GetMonContestStats(mon, gUnknown_0203BC90->field_5c);
+ for (i = 0; i < 5; i++)
+ gUnknown_0203BC90->field_61[i] = gUnknown_0203BC90->field_5c[i] - gUnknown_0203BC90->field_57[i];
+}
+
+void sub_8167184(struct Pokeblock *pokeblock, struct Pokemon *mon)
+{
+ s8 i, direction, taste;
+
+ gUnknown_0203BC90->field_66[0] = pokeblock->spicy;
+ gUnknown_0203BC90->field_66[1] = pokeblock->sour;
+ gUnknown_0203BC90->field_66[2] = pokeblock->bitter;
+ gUnknown_0203BC90->field_66[3] = pokeblock->sweet;
+ gUnknown_0203BC90->field_66[4] = pokeblock->dry;
+
+ if (gPokeblockGain > 0)
+ direction = 1;
+ else if (gPokeblockGain < 0)
+ direction = -1;
+ else
+ return;
+
+ for (i = 0; i < 5; i++)
+ {
+ s16 amount = gUnknown_0203BC90->field_66[i];
+ s8 boost = amount / 10;
+
+ if (amount % 10 >= 5) // round to the nearest
+ boost++;
+
+ taste = GetMonFlavorRelation(mon, gUnknown_085DFCC4[i]);
+ if (taste == direction)
+ gUnknown_0203BC90->field_66[i] += boost * taste;
+ }
+}
+
+bool8 IsSheenMaxed(void)
+{
+ if (GetBoxOrPartyMonData(gUnknown_0203BCAC->field_7FB8[gUnknown_0203BCAC->info.field_71].unk0,
+ gUnknown_0203BCAC->field_7FB8[gUnknown_0203BCAC->info.field_71].unk1,
+ MON_DATA_SHEEN,
+ NULL) == 255)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u8 sub_81672A4(u8 a0)
+{
+ u8 i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ if (a0 == 0)
+ return i;
+ a0--;
+ }
+ }
+
+ return 0;
+}
+
+u8 sub_81672E4(u8 partyCount)
+{
+ u8 i, numEggs;
+
+ for (i = 0, numEggs = 0; i < partyCount; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ numEggs++;
+ }
+
+ return partyCount - numEggs;
+}
+
+u8 sub_8167324(u8 a0)
+{
+ return sub_81672A4(a0);
+}
+
+void sub_8167338(void)
+{
+ u16 i, spriteId;
+
+ LoadSpriteSheet(&gSpriteSheet_ConditionUpDown);
+ LoadSpritePalette(&gSpritePalette_ConditionUpDown);
+ gUnknown_0203BC90->field_54 = 0;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (gUnknown_0203BC90->field_61[i] != 0)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_085DFD5C, gUnknown_085DFD28[i][0], gUnknown_085DFD28[i][1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ if (gUnknown_0203BC90->field_61[i] != 0)
+ gSprites[spriteId].callback = sub_81673DC;
+
+ gUnknown_0203BC90->field_54++;
+ }
+ }
+ }
+}
+
+void sub_81673DC(struct Sprite *sprite)
+{
+ if (sprite->data[0] < 6)
+ sprite->pos2.y -= 2;
+ else if (sprite->data[0] < 12)
+ sprite->pos2.y += 2;
+
+ if (++sprite->data[0] > 60)
+ {
+ DestroySprite(sprite);
+ gUnknown_0203BC90->field_54--;
+ }
+}
+
+void sub_8167420(void)
+{
+ u16 i;
+ u16 numMons;
+
+ for (i = 0, numMons = 0; i < CalculatePlayerPartyCount(); i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ gUnknown_0203BCAC->field_7FB8[numMons].unk0 = 14;
+ gUnknown_0203BCAC->field_7FB8[numMons].unk1 = i;
+ gUnknown_0203BCAC->field_7FB8[numMons].unk2 = 0;
+ numMons++;
+ }
+ }
+
+ gUnknown_0203BCAC->info.field_71 = 0;
+ gUnknown_0203BCAC->info.field_70 = numMons + 1;
+ sub_81674BC();
+}
+
+void sub_81674BC(void)
+{
+ s16 var, var2;
+
+ 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_71 + 1;
+ if (var >= gUnknown_0203BCAC->info.field_70)
+ var = 0;
+
+ var2 = gUnknown_0203BCAC->info.field_71 - 1;
+ if (var2 < 0)
+ var2 = gUnknown_0203BCAC->info.field_70 - 1;
+
+ sub_816753C(var, 1);
+ sub_816753C(var2, 2);
+}
+
+void sub_816753C(s16 id1, u8 id2)
+{
+ u8 boxId = gUnknown_0203BCAC->field_7FB8[id1].unk0;
+ u8 monId = gUnknown_0203BCAC->field_7FB8[id1].unk1;
+ u8 r6 = gUnknown_0203BCAC->info.field_70;
+ bool8 r8 = FALSE;
+
+ sub_81D2ED4(gUnknown_0203BCAC->field_7B4D[id2], gUnknown_0203BCAC->field_7B95[id2], boxId, monId, id1, r6, r8);
+ sub_81D2F78(&gUnknown_0203BCAC->field_7C58, gUnknown_0203BCAC->unk7FB0, boxId, monId, id1, id2, r6, r8);
+ sub_81D3094(gUnknown_0203BCAC->field_304[id2], gUnknown_0203BCAC->field_4[id2], boxId, monId, id1, r6, r8);
+}
+
+void sub_8167608(u8 arg0)
+{
+ u8 spriteId;
+ struct SpriteTemplate spriteTemplate;
+ struct SpriteSheet spriteSheet;
+ struct SpritePalette spritePal;
+
+ if (gUnknown_0203BCAC->field_7B10 == 0xFF)
+ {
+ sub_81D31D0(&spriteSheet, &spriteTemplate, &spritePal);
+ spriteSheet.data = gUnknown_0203BCAC->field_304[arg0];
+ spritePal.data = gUnknown_0203BCAC->field_4[arg0];
+ gUnknown_0203BCAC->field_7B12 = LoadSpritePalette(&spritePal);
+ gUnknown_0203BCAC->field_7B14 = LoadSpriteSheet(&spriteSheet);
+ spriteId = CreateSprite(&spriteTemplate, 38, 104, 0);
+ gUnknown_0203BCAC->field_7B10 = spriteId;
+ if (spriteId == MAX_SPRITES)
+ {
+ FreeSpriteTilesByTag(100);
+ FreeSpritePaletteByTag(100);
+ gUnknown_0203BCAC->field_7B10 = 0xFF;
+ }
+ else
+ {
+ gUnknown_0203BCAC->field_7B10 = spriteId;
+ gSprites[gUnknown_0203BCAC->field_7B10].callback = sub_8168168;
+ gSprites[gUnknown_0203BCAC->field_7B10].pos2.y -= 34;
+ gUnknown_0203BCAC->field_7B18 = (void*)(OBJ_VRAM0 + (gUnknown_0203BCAC->field_7B14 * 32));
+ gUnknown_0203BCAC->field_7B12 = (gUnknown_0203BCAC->field_7B12 * 16) + 0x100;
+ }
+ }
+ else
+ {
+ do {} while(0); // Surprised to see something like this? It's a very neat trick for generating the same assembly. It has no practical purpose, feel free to remove it.
+ DmaCopy16Defvars(3, gUnknown_0203BCAC->field_304[arg0], gUnknown_0203BCAC->field_7B18, 0x800);
+ LoadPalette(gUnknown_0203BCAC->field_4[arg0], gUnknown_0203BCAC->field_7B12, 32);
+ }
+}
+
+void sub_8167760(void)
+{
+ u16 i, spriteId;
+ struct SpriteSheet spriteSheets[4];
+ struct SpriteTemplate spriteTemplate;
+ struct SpritePalette spritePals[3];
+ struct SpriteSheet spriteSheet2;
+ struct SpritePalette spritePal2;
+
+ sub_81D321C(spriteSheets, &spriteTemplate, spritePals);
+ LoadSpriteSheets(spriteSheets);
+ LoadSpritePalettes(spritePals);
+
+ for (i = 0; i < gUnknown_0203BCAC->info.field_70 - 1; i++)
+ {
+ spriteId = CreateSprite(&spriteTemplate, 226, (i * 20) + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_0203BCAC->field_7B06[i] = spriteId;
+ gSprites[spriteId].data[0] = i;
+ gSprites[spriteId].callback = sub_8168180;
+ }
+ else
+ {
+ gUnknown_0203BCAC->field_7B06[i] = -1;
+ }
+ }
+
+ spriteTemplate.tileTag = 103;
+ for (; i < 6; i++)
+ {
+ spriteId = CreateSprite(&spriteTemplate, 230, (i * 20) + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_0203BCAC->field_7B06[i] = spriteId;
+ gSprites[spriteId].oam.size = 0;
+ }
+ else
+ {
+ gUnknown_0203BCAC->field_7B06[i] = -1;
+ }
+ }
+
+ spriteTemplate.tileTag = 102;
+ spriteTemplate.callback = sub_81681B4;
+ spriteId = CreateSprite(&spriteTemplate, 222, (i * 20) + 8, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_0203BCAC->field_7B06[i] = spriteId;
+ gSprites[spriteId].oam.shape = 1;
+ gSprites[spriteId].oam.size = 2;
+ }
+ else
+ {
+ gUnknown_0203BCAC->field_7B06[i] = -1;
+ }
+
+ sub_81D32B0(&spriteSheet2, &spritePal2);
+ LoadSpriteSheet(&spriteSheet2);
+ LoadSpritePalette(&spritePal2);
+}
+
+bool8 sub_8167930(void)
+{
+ switch (gUnknown_0203BCAC->info.unk78)
+ {
+ case 0:
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 136 << 6, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, 28736);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2|BLDCNT_EFFECT_BLEND|BLDCNT_TGT2_BG1);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
+ break;
+ case 1:
+ gUnknown_0203BCA4 = Alloc(6656);
+ gUnknown_0203BCA0 = Alloc(1280);
+ gUnknown_0203BCA8 = Alloc(1280);
+ break;
+ case 2:
+ LZ77UnCompVram(gUnknown_085DFB60, gUnknown_0203BCA8);
+ break;
+ case 3:
+ LoadBgTiles(3, gUnknown_085DFA80, 224, 0);
+ break;
+ case 4:
+ LoadBgTilemap(3, gUnknown_0203BCA8, 1280, 0);
+ break;
+ case 5:
+ LoadPalette(gUnknown_085DFA60, 208, 32);
+ gUnknown_0203BCAC->field_7B0E = 0xFFB0;
+ break;
+ case 6:
+ LZ77UnCompVram(gUsePokeblockGraph_Gfx, gUnknown_0203BCA4);
+ break;
+ case 7:
+ LZ77UnCompVram(gUsePokeblockGraph_Tilemap, gUnknown_0203BCA0);
+ LoadPalette(gUsePokeblockGraph_Pal, 32, 32);
+ break;
+ case 8:
+ LoadBgTiles(1, gUnknown_0203BCA4, 6656, 160 << 2);
+ break;
+ case 9:
+ SetBgTilemapBuffer(1, gUnknown_0203BCA0);
+ CopyToBgTilemapBufferRect(1, gUsePokeblockNatureWin_Pal, 0, 13, 12, 4);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 10:
+ LZ77UnCompVram(gUnknown_085DFC0C, gUnknown_0203BCAC->tilemapBuffer);
+ break;
+ case 11:
+ LoadBgTilemap(2, gUnknown_0203BCAC->tilemapBuffer, 1280, 0);
+ LoadPalette(gUnknown_086231E8, 48, 32);
+ LoadPalette(gUnknown_08623208, 240, 32);
+ sub_81D21DC(2);
+ break;
+ default:
+ gUnknown_0203BCAC->info.unk78 = 0;
+ return FALSE;
+ }
+
+ gUnknown_0203BCAC->info.unk78++;
+ return TRUE;
+}
+
+void sub_8167BA0(u16 arg0, u8 copyToVramMode)
+{
+ u8 partyIndex;
+ u8 nature;
+ u8 *str;
+
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ if (gUnknown_0203BCAC->info.field_71 != gUnknown_0203BCAC->info.field_70 - 1)
+ {
+ AddTextPrinterParameterized(0, 1, gUnknown_0203BCAC->field_7B95[arg0], 0, 1, 0, NULL);
+ partyIndex = sub_81672A4(gUnknown_0203BCAC->info.field_71);
+ nature = GetNature(&gPlayerParty[partyIndex]);
+ str = StringCopy(gUnknown_0203BCAC->info.field_7A, gText_NatureSlash);
+ str = StringCopy(str, gNatureNamePointers[nature]);
+ AddTextPrinterParameterized3(1, 1, 2, 1, gUnknown_085DFCC9, 0, gUnknown_0203BCAC->info.field_7A);
+ }
+
+ if (copyToVramMode)
+ {
+ CopyWindowToVram(0, 3);
+ CopyWindowToVram(1, 3);
+ }
+ else
+ {
+ CopyWindowToVram(0, 2);
+ CopyWindowToVram(1, 2);
+ }
+}
+
+static void sub_8167CA0(bool8 arg0)
+{
+ u16 var0;
+ bool32 r8, r4;
+
+ if (arg0)
+ var0 = gUnknown_0203BCAC->field_7FB5;
+ else
+ var0 = gUnknown_0203BCAC->field_7FB4;
+
+ sub_81D1F84(
+ &gUnknown_0203BCAC->field_7C58,
+ gUnknown_0203BCAC->field_7C58.unk14[gUnknown_0203BCAC->field_7FB3],
+ gUnknown_0203BCAC->field_7C58.unk14[var0]);
+
+ r8 = (gUnknown_0203BCAC->info.field_71 ^ (gUnknown_0203BCAC->info.field_70 - 1)) ? 1 : 0;
+ if (arg0)
+ {
+ gUnknown_0203BCAC->field_7FB5 = gUnknown_0203BCAC->field_7FB4;
+ gUnknown_0203BCAC->field_7FB4 = gUnknown_0203BCAC->field_7FB3;
+ gUnknown_0203BCAC->field_7FB3 = var0;
+ gUnknown_0203BCAC->field_7FB6 = gUnknown_0203BCAC->field_7FB5;
+
+ gUnknown_0203BCAC->info.field_71 = (gUnknown_0203BCAC->info.field_71 == 0)
+ ? gUnknown_0203BCAC->info.field_70 - 1
+ : gUnknown_0203BCAC->info.field_71 - 1;
+
+ gUnknown_0203BCAC->field_7B4C = (gUnknown_0203BCAC->info.field_71 == 0)
+ ? gUnknown_0203BCAC->info.field_70 - 1
+ : gUnknown_0203BCAC->info.field_71 - 1;
+ }
+ else
+ {
+ gUnknown_0203BCAC->field_7FB4 = gUnknown_0203BCAC->field_7FB5;
+ gUnknown_0203BCAC->field_7FB5 = gUnknown_0203BCAC->field_7FB3;
+ gUnknown_0203BCAC->field_7FB3 = var0;
+ gUnknown_0203BCAC->field_7FB6 = gUnknown_0203BCAC->field_7FB4;
+
+ gUnknown_0203BCAC->info.field_71 = (gUnknown_0203BCAC->info.field_71 < gUnknown_0203BCAC->info.field_70 - 1)
+ ? gUnknown_0203BCAC->info.field_71 + 1
+ : 0;
+
+ gUnknown_0203BCAC->field_7B4C = (gUnknown_0203BCAC->info.field_71 < gUnknown_0203BCAC->info.field_70 - 1)
+ ? gUnknown_0203BCAC->info.field_71 + 1
+ : 0;
+ }
+
+ r4 = (gUnknown_0203BCAC->info.field_71 ^ (gUnknown_0203BCAC->info.field_70 - 1)) ? 1 : 0;
+ sub_81D3520(gUnknown_0203BCAC->field_7B1C);
+
+ if (!r8)
+ gUnknown_0203BCAC->info.unk74 = sub_8167EA4;
+ else if (!r4)
+ gUnknown_0203BCAC->info.unk74 = sub_8167FA4;
+ else
+ gUnknown_0203BCAC->info.unk74 = sub_8168048;
+}
+
+static u8 sub_8167EA4(void)
+{
+ switch (gUnknown_0203BCAC->info.unk78)
+ {
+ case 0:
+ sub_8167608(gUnknown_0203BCAC->field_7FB3);
+ gUnknown_0203BCAC->info.unk78++;
+ break;
+ case 1:
+ sub_8167BA0(gUnknown_0203BCAC->field_7FB3, 0);
+ gUnknown_0203BCAC->info.unk78++;
+ break;
+ case 2:
+ if (!sub_81D3178(&gUnknown_0203BCAC->field_7C58, &gUnknown_0203BCAC->field_7B0E))
+ {
+ sub_816753C(gUnknown_0203BCAC->field_7B4C, gUnknown_0203BCAC->field_7FB6);
+ gUnknown_0203BCAC->info.unk78++;
+ }
+ break;
+ case 3:
+ sub_81D3464(gUnknown_0203BCAC->field_7B1C);
+ if (gUnknown_0203BCAC->info.field_71 != gUnknown_0203BCAC->info.field_70 - 1)
+ {
+ u8 var0 = gUnknown_0203BCAC->unk7FB0[gUnknown_0203BCAC->field_7FB3];
+ sub_81D3480(gUnknown_0203BCAC->field_7B1C, gUnknown_0203BCAC->field_7B10, var0);
+ }
+
+ gUnknown_0203BCAC->info.unk78 = 0;
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static u8 sub_8167FA4(void)
+{
+ switch (gUnknown_0203BCAC->info.unk78)
+ {
+ case 0:
+ if (!sub_81D31A4(&gUnknown_0203BCAC->field_7C58, &gUnknown_0203BCAC->field_7B0E))
+ gUnknown_0203BCAC->info.unk78++;
+ break;
+ case 1:
+ sub_8167BA0(gUnknown_0203BCAC->field_7FB3, 0);
+ gUnknown_0203BCAC->info.unk78++;
+ break;
+ case 2:
+ sub_816753C(gUnknown_0203BCAC->field_7B4C, gUnknown_0203BCAC->field_7FB6);
+ gUnknown_0203BCAC->info.unk78++;
+ break;
+ case 3:
+ gUnknown_0203BCAC->info.unk78 = 0;
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static u8 sub_8168048(void)
+{
+ switch (gUnknown_0203BCAC->info.unk78)
+ {
+ case 0:
+ sub_81D2074(&gUnknown_0203BCAC->field_7C58);
+ if (!sub_81D3150(&gUnknown_0203BCAC->field_7B0E))
+ {
+ sub_8167608(gUnknown_0203BCAC->field_7FB3);
+ gUnknown_0203BCAC->info.unk78++;
+ }
+ break;
+ case 1:
+ sub_8167BA0(gUnknown_0203BCAC->field_7FB3, 0);
+ gUnknown_0203BCAC->info.unk78++;
+ break;
+ case 2:
+ if (!sub_81D3178(&gUnknown_0203BCAC->field_7C58, &gUnknown_0203BCAC->field_7B0E))
+ {
+ sub_816753C(gUnknown_0203BCAC->field_7B4C, gUnknown_0203BCAC->field_7FB6);
+ gUnknown_0203BCAC->info.unk78++;
+ }
+ break;
+ case 3:
+ sub_81D3464(gUnknown_0203BCAC->field_7B1C);
+ if (gUnknown_0203BCAC->info.field_71 != gUnknown_0203BCAC->info.field_70 - 1)
+ {
+ u8 var0 = gUnknown_0203BCAC->unk7FB0[gUnknown_0203BCAC->field_7FB3];
+ sub_81D3480(gUnknown_0203BCAC->field_7B1C, gUnknown_0203BCAC->field_7B10, var0);
+ }
+
+ gUnknown_0203BCAC->info.unk78 = 0;
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void sub_8168168(struct Sprite *sprite)
+{
+ sprite->pos1.x = gUnknown_0203BCAC->field_7B0E + 38;
+}
+
+void sub_8168180(struct Sprite *sprite)
+{
+ if (sprite->data[0] == gUnknown_0203BCAC->info.field_71)
+ StartSpriteAnim(sprite, 0);
+ else
+ StartSpriteAnim(sprite, 1);
+}
+
+void sub_81681B4(struct Sprite *sprite)
+{
+ if (gUnknown_0203BCAC->info.field_71 == gUnknown_0203BCAC->info.field_70 - 1)
+ sprite->oam.paletteNum = IndexOfSpritePaletteTag(101);
+ else
+ sprite->oam.paletteNum = IndexOfSpritePaletteTag(102);
+}
+
+void sub_81681F4(u8 monIndex)
+{
+ u8 sheen = GetMonData(&gPlayerParty[monIndex], MON_DATA_SHEEN);
+
+ gUnknown_0203BCAC->unk7FB0[gUnknown_0203BCAC->field_7FB3] = (sheen != 255)
+ ? sheen / 29
+ : 9;
+}
+
+static void sub_8168248(void)
+{
+ struct CompressedSpriteSheet spriteSheet;
+ struct SpritePalette spritePalette;
+
+ spritePalette = gUnknown_085DFDB8;
+ spriteSheet.data = gUsePokeblockCondition_Gfx;
+ spriteSheet.size = 0x800;
+ spriteSheet.tag = 1;
+ LoadCompressedSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+}
+
+static void sub_8168294(void)
+{
+ u16 i;
+ s16 xDiff, xStart;
+ int yStart = 17;
+ int var = 8;
+ struct Sprite **sprites = gUnknown_0203BCAC->field_7B44;
+ const struct SpriteTemplate *template = &gUnknown_085DFDA0;
+
+ for (i = 0, xDiff = 64, xStart = -96; i < 2; i++)
+ {
+ u8 spriteId = CreateSprite(template, i * xDiff + xStart, yStart, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[0] = var;
+ gSprites[spriteId].data[1] = (i * xDiff) | 0x20;
+ gSprites[spriteId].data[2] = i;
+ StartSpriteAnim(&gSprites[spriteId], i);
+ sprites[i] = &gSprites[spriteId];
+ }
+ }
+}
+
+static bool8 sub_8168328(void)
+{
+ switch (gUnknown_0203BCAC->info.unk78)
+ {
+ case 0:
+ sub_8168248();
+ gUnknown_0203BCAC->info.unk78++;
+ return TRUE;
+ case 1:
+ sub_8168294();
+ gUnknown_0203BCAC->info.unk78 = 0;
+ return FALSE;
+ }
+
+ return FALSE;
+}
+
+void sub_8168374(struct Sprite *sprite)
+{
+ s16 prevX = sprite->pos1.x;
+
+ sprite->pos1.x += sprite->data[0];
+ if ((prevX <= sprite->data[1] && sprite->pos1.x >= sprite->data[1])
+ || (prevX >= sprite->data[1] && sprite->pos1.x <= sprite->data[1]))
+ {
+ sprite->pos1.x = sprite->data[1];
+ sprite->callback = SpriteCallbackDummy;
}
}
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 d3bbcf7a2..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},